首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏星流全栈

    Erlang 和 Elixir 介绍

    Elixir 是一个基于 Erlang 虚拟机的函数式、面向并行的通用编程语言。 Elixir 以 Erlang 为基础,支持分布式、高容错、实时应用程序的开发,同时亦对其进行扩展使之借助宏实现元编程,并通过协议支持多态。 José Valim 是 Elixir 语言的设计者。 Elixir 是编写高度并行处理,高可靠性应用的极佳选择。 Elixir主要特性 基于 Erlang 虚拟机(BEAM)之上。 一直在使用OTP,包括mix、Elixir编译器,甚至问题跟踪系统都符合OTP约定。 点击「阅读原文」查看知乎专栏文章「elixir:灵丹妙药?or 徒有其名?」

    2.5K30发布于 2018-06-01
  • 来自专栏星流全栈

    Elixir: 编程语言的未来

    这篇文章谈一谈最近火爆的 Elixir,同时说一下对编程语言选择的看法。同时作为 Erlang 发烧友,Elixir 不可不提。即使有了那么多编程语言 Elixir 也值得接触。 现在开始接触 Elixir 对编程语言选择的一点看法 Elixir 的元编程 (meta programming) 和 DSL 很多有用的链接 ? 这里节选文章的第二部分,主要对Elixir的特性和生态进行了介绍。 比如 Java、Node.js、Scala、Elixir 等等。 说了这么多,回到 Elixir。首先 Elixir 执行和 Erlang 没有任何差别。Erlang 的优点 Elixir 完全具备。 另外 Elixir 比 Erlang 多出的好处在于更加友好的语法、工具链、社群。很多之前写 Ruby 的开始写 Elixir,因为他们的语法最接近。

    3.4K40发布于 2018-06-01
  • 来自专栏ShanSan的云原生之路

    (译)Elixir Tip: Case vs. With

    从 1.2 版本开始, with 运算符是需要点时间去理解的 ELixir 特性之一. 它经常在使用 case 的情形下使用, 反之亦然. 回想一下, Elixir 中的条件语句也是函数. 它们可以被插入或链接到其他条件的表达式部分. res} -> do_something_with_res(res) {:error, {:some_error, err}} -> handle_some_error(err) end 相关文章 Elixir

    39930编辑于 2023-10-21
  • 来自专栏ShanSan的云原生之路

    (译) Understanding Elixir Macros, Part 4 - Diving Deeper

    Elixir Macros 系列文章译文 [1] (译) Understanding Elixir Macros, Part 1 Basics [2] (译) Understanding Elixir (译) Understanding Elixir Macros, Part 4 - Diving Deeper [5] (译) Understanding Elixir Macros, Part 5 如果每个人都设计这样的结构, 每个 Elixir 项目都会很快地变成自定义语言的大锅汤. }, {:b, [if_undefined: :apply], Elixir}]}, {:<, [context: Elixir, import: Kernel], [{:a, [if_undefined : :apply], Elixir}, {:b, [if_undefined: :apply], Elixir}]} ]} 所以实际上我们的 guard head 实际上是这样的: {:when, _

    38930编辑于 2023-10-21
  • 来自专栏ShanSan的云原生之路

    Elixir 依赖 (deps) 调试的小技巧

    最近使用 Elixir 有点多, 经常需要观察一些依赖 (Deps) 的实现, 比如想加个日志打印点 IO.inspect 啥的观察下某个变量,才能更好的理解某个 Elixir 的依赖。

    40740编辑于 2023-10-21
  • 来自专栏星流全栈

    Elixir, OTP, Ecto, 和 Phoenix 免费教程!

    作为Kickstarter的一部分,我们创建了免费的内容来向更多的人介绍Elixir。这是我们在这篇文章末尾宣布的内容。我们也在继续在DailyDrip Elixir主题中建立Firestorm论坛。 随着这个项目的发展,将会为任何构建生产Elixir应用程序可能遇到的问题提出真实的解决方案。我们希望这有助于个人和团队拥护Elixir及其社区的所有真棒。 Episodes Week 1: 初级Elixir 在第一周,您将学习Elixir编程语言语法及其工具的基础知识,您将学习如何在进程之间发送消息。 我们用自我指导的练习来构建一个独立的过程。 [001.1] Introduction to Elixir — Introduction to the language, and installation of Erlang and Elixir 它还提供监督树,这是使用Elixir构建容错应用程序的构建块。

    2.3K60发布于 2018-06-01
  • 来自专栏ShanSan的云原生之路

    (译) Understanding Elixir Macros, Part 1 Basics

    Elixir Macros 系列文章译文 [1] (译) Understanding Elixir Macros, Part 1 Basics [2] (译) Understanding Elixir 虽然我确信编写宏不是很难, 但与普通的 Elixir 代码相比, 它确实需要更高视角的关注. 因此, 我认为这了解 Elixir 编译器的一些内部细节是非常有帮助的. 如果你很熟悉 Elixir 和 Erlang, 但对宏还感觉到困惑, 那么这些内容很适合你. 如果你刚开始接触 Elixir 和 Erlang, 那么最好从其它地方开始. 编译器会基于原始 Elixir 代码的 AST 展开为最终版本. 另外, 从这个图中可以得到另一个重要结论, Elixir 在生成了二进制之后, 元编程就停止了. 创建 AST 片段 什么是 Elixir AST? 它是一个 Elixir Term, 一个深度嵌套的层次结构, 用于表述一个语法正确的 Elixir 代码. 为了说得更明白一些, 举个例子.

    65530编辑于 2023-10-21
  • 来自专栏程序人生

    elixir:灵丹妙药?or 徒有其名?

    两年多的时光弹指过去,Elixir在最近终于发布了1.0.x版本,而Jose本人又频频上镜,到处布道Elixir,我才重新关注起这门语言。 所以我就重新拾起Elixir的文档,边啃边写。 借着这股兴奋劲,我来讲讲自己对Elixir的浅显认知。 惊艳的语法 Elixir的语法在向Ruby致敬,同时透着Erlang和Prolog的灵气。 当然,植根于Erlang的Elixir,又有有很多自己的特点。 而Elixir让你的代码和你的思路高度一致。 这个语法特点来源于Prolog,遗憾的是,继承自Prolog的Erlang没有将其捡来,却把它遗给了继承于Erlang的Elixir

    1.8K50发布于 2018-03-28
  • 来自专栏Elixir

    Ruby vs Elixir | 2022 该选哪个?

    Contents Ruby 和 Elixir(以及 Phoenix) 的起源 搞清楚 Ruby 和 Elixir 的优劣势 Elixir 和 Ruby 的最佳实践 最后,到底是选择 Elixir 还是 Elixir 的优势 经得起时间考验的解决方案(指 Elixir 运行在 Erlang VM 上) 上面已经提到,Elixir 是运行在 Erlang 虚拟机上(BEAM),不仅仅是因为 Erlang Erlang 库 Elixir 可以调用 Erlang,Elixir 项目中可以非常方便的集成 Erlang 的库。 相关文档 Elixir 官方网站 上有大量的 Elixir 使用的文档,以及非常活跃的 Elixir 社区,文档也可以从终端中阅读,非常方便。 Elixir 的劣势 Narrow Talent Pool 虽然 Elixir 诞生于 2011 年,但 Elixir 仍然被认为是一种小众语言。导致很多方面的空白。

    2.8K10编辑于 2022-09-28
  • 来自专栏Elixir

    如何在 IntelliJ 上运行 Elixir 和 Phoenix 程序?

    这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情 Elixir 是一门非常强大的 函数式 编程语言,Elixir 社区构建了一个插件,该插件可以在 Jetbrains 的 IDE 上运行 Elixir 程序且是用于所有的 Jetbrains 产品。 在开始之前确定你已经安装了 Elixir,安装 Elixir 同时会安装 Erlang,因为 Elixir 是运行在 Erlang 虚拟机上(BEAM)。 如果你的开发平台是 MAC,可以通过 brew install 安装最新版的 Elixir,并且通过 elixir --version 命令来查看安装的 Elixir 的版本号。 之后会选择项目的 SDK,安装的 Elixir Plugin 可以检测到你安装的 Elixir SDK,并且可以将这个 SDK 设置为默认的 SDK。

    2.1K20编辑于 2022-09-28
  • 来自专栏ShanSan的云原生之路

    通过 vfox 安装管理多版本 Erlang 和 Elixir

    安装好 vfox 之后,我们再安装下插件: # 添加 vfox-erlang 插件 vfox add erlang # 添加 vfox-elixir 插件 vfox add elixir 接下来我们就可以通过上面安装好的两个 vfox 插件 vfox-erlang 和 vfox-elixir 去安装管理多个 Erlang 和 Elixir 的版本了。 通过 vfox-erlang 插件安装 Erlang/OTP 因为 Elixir 依赖于 Erlang,所以在安装 Elixir 之前,我们需要先安装下 Erlang。 接下来开始安装 Elixir 吧 安装 Elixir 因为安装 Elixir 也是从对应版本的源码进行编译安装的,Elixir 的编译需要依赖到 Erlang,我们先让当前使用的 shell 能找到刚才安装好的 /OTP 版本和 Elixir 版本是兼容的,可以查看这个文档去确认兼容性: 《compatibility-and-deprecations.html#between-elixir-and-erlang-otp

    58710编辑于 2024-04-28
  • 来自专栏WindCoder

    Elixir和OTP中面向过程的编程指南

    Elixir / OTP和面向过程的编程 在Elixir / Erlang和OTP中,通信原语是执行语言的虚拟机的一部分。在进程之间和机器之间通信的能力建立在语言系统的中心。 Elixir或Erlang的任何培训课程必须(通常是)包括OTP,并且应该从一开始就有一个过程方向,而不是“现在你可以在Elixir中编写代码,所以让我们来做并发”类型的方式。 了解基础知识 什么是Elixir和OTP? Elixir是一种基于Erlang VM的功能编程语言。OTP是一个面向过程的编程框架,与Erlang和Elixir是一体的。 什么是面向过程的开发? 什么是最好的采用Elixir/OTP和面向过程的开发? 从培训或探索开始,着重于OTP和过程管理,然后是Elixir的语法和功能方面。 为什么选择Elixir / OTP和面向过程的开发?

    1.8K10发布于 2018-09-19
  • 来自专栏ShanSan的云原生之路

    (译) Understanding Elixir Macros, Part 3 - Getting into the AST

    Elixir Macros 系列文章译文 [1] (译) Understanding Elixir Macros, Part 1 Basics [2] (译) Understanding Elixir (译) Understanding Elixir Macros, Part 4 - Diving Deeper [5] (译) Understanding Elixir Macros, Part 5 是时候继续探索 Elixir 的宏了. 上次我介绍了一些关于宏的基本原理, 今天, 我将进入一个较少谈及的领域, 并讨论Elixir AST 的一些细节. , import: Kernel], [ {:my_fun, [context: Elixir], [ {:arg1, [if_undefined: :apply], Elixir (2)> quote do a == b end {:==, [context: Elixir, import: Kernel], [{:a, [if_undefined: :apply], Elixir

    58750编辑于 2023-10-21
  • 来自专栏ShanSan的云原生之路

    (译) Understanding Elixir Macros, Part 2 - Micro Theory

    Elixir Macros 系列文章译文 [1] (译) Understanding Elixir Macros, Part 1 Basics [2] (译) Understanding Elixir (译) Understanding Elixir Macros, Part 4 - Diving Deeper [5] (译) Understanding Elixir Macros, Part 5 这是 Elixir 中的宏系列的第二篇. 上一次我们讨论了编译过程和 Elixir AST, 最后讲了一个基本的宏的例子 trace. 今天, 我们会更详细地讲解宏的机制. 因为宏有两个看似矛盾的性质: 宏也是 Elixir 代码 宏在在最终的字节码生成之前的展开阶段运行 Elixir 代码是如何在被生成之前运行的?它不能. 由于宏也是函数, 而 Elixir 在调用函数时可以省略括号, 所以我们可以这样写: Tracer.trace 1+2 这很可能是 Elixir 之所以不在函数调用时要求括号的最主要原因.

    54540编辑于 2023-10-21
  • 来自专栏ShanSan的云原生之路

    (译) Understanding Elixir Macros, Part 6 - In-place Code Generation

    Elixir Macros 系列文章译文 [1] (译) Understanding Elixir Macros, Part 1 Basics [2] (译) Understanding Elixir (译) Understanding Elixir Macros, Part 4 - Diving Deeper [5] (译) Understanding Elixir Macros, Part 5 在 module 中生成代码 正如我在第 1 章中提到的那样, 宏并不是 Elixir 中唯一的元编程机制. 我们也可以在模块中直接生成代码. () = :running iex(line 13) Elixir.Test.pause(:running) = :paused iex(line 13) Elixir.Test.resume(:paused 回顾 关于 Elixir 宏的系列文章到此结束了. 我希望你觉得这些文章有趣且有学习意义, 并且对宏的工作机制有了更多的了解和使用信心.

    51640编辑于 2023-10-21
  • 来自专栏小徐学爬虫

    Elixir轻量级进程如何成就百万级并发爬虫?

    Elixir凭借其Actor模型与轻量级进程,天然支持高并发。本爬虫利用此优势,结合HTTPoison与Floki,高效实现多任务网页抓取、链接提取与数据解析,是处理大规模数据采集的理想方案。 下面是一个使用 Elixir 实现的高并发爬虫示例。Elixir 的 Actor 模型和轻量级进程使其非常适合构建高并发的网络应用。 defmodule ConcurrentCrawler do @moduledoc """ 高并发网页爬虫实现 使用 Elixir 的并发特性和 HTTPoison 库 """​ use Task ConcurrentCrawler.crawl(urls, 20) # 20是并发数​# 或者作为监督树的一部分启动{:ok, pid} = ConcurrentCrawler.start_link(urls, 20)这个实现利用了 Elixir 总之,该爬虫充分展现了Elixir在并发处理上的强大能力。代码结构清晰,易于扩展,您可根据实际需求添加代理、去重或分布式存储等功能,以构建健壮的爬虫系统。

    25810编辑于 2025-09-04
  • 来自专栏ShanSan的云原生之路

    (译) Understanding Elixir Macros, Part 5 - Reshaping the AST

    Elixir Macros 系列文章译文 [1] (译) Understanding Elixir Macros, Part 1 Basics [2] (译) Understanding Elixir Macros, Part 2 - Micro Theory [3] (译) Understanding Elixir Macros, Part 3 - Getting into the AST [4] (译) Understanding Elixir Macros, Part 4 - Diving Deeper [5] (译) Understanding Elixir Macros, Part 5 - Reshaping the AST [6] (译) Understanding Elixir Macros, Part 6 - In-place Code Generation 原文 GitHub (5,2) = 2.5 iex(4)> Test.div(5, 0) iex(line 5) Elixir.Test.div(5,0) = :error 正如你所看到的那样, 可以进入 AST, 分解它

    36230编辑于 2023-10-21
  • 来自专栏ShanSan的云原生之路

    the-solution-of-elixir-continuous-runtime-system-code-coverage-collection

    initial version of Elixir AST, which is expressed in the form of Elixir Terms; if you are interested in Elixir’s AST, you can follow this Project arjan/ast_ninja; Step 2、In the Elixir AST stage, some AST in the Expanded Elixir AST stage; Step 3、Final Elixir AST will be converted into Erlang standard AST form (Erlang Abstract Format) after being processed by Elixir Compiler; Step 4、Finally, Elixir For details on the compiler, see: elixir_compiler.erl and elixir_erl.erl source code For more details

    35830编辑于 2023-10-21
  • 来自专栏ShanSan的云原生之路

    使用 GitHub Codespaces 加速 Elixir 开发环境工作速度

    前言 使用 Elixir 开发点小玩意的时候,面对经常需要走外网下载依赖 (Elixir 的镜像站 UPYUN 使用有时候也经常抽风) 的时候,为了避免需要不断的进行网络代理配置,有想到之前经常使用 GitHub 通过 https://github.com/codespaces/new 我们能配置 GitHub 使用的环境规格和部署地区: 加速 Elixir 开发环境 Elixir 应用构建拉依赖经常需要走外网, 但 GitHub 默认创建的 Codespaces 环境默认一般都是 js 的开发环境 Dockerfile,并没有 Elixir 环境,需要我们自己单独配置一手,好在提供了 devcontainer /tree/main/.devcontainer { "image": "ghcr.io/yeshan333/erlang_elixir_asdf_ubuntu_container:latest", "customizations": { "vscode": { "extensions": ["jakebecker.elixir-ls"] } }, "postCreateCommand

    47110编辑于 2024-02-20
  • 来自专栏星流全栈

    使用Elixir和CoAP搭建IoT平台 - 01 CoAP介绍

    CoAP采用了二进制报头,而不是文本报头(text header) CoAP降低了头的可用选项的数量 CoAP减少了一些HTTP的方法 CoAP可以支持检测装置 Refs IoT with Elixir

    1.6K60发布于 2018-06-01
领券