所以,本文概括性地谈谈 —— 如同「独孤九剑」的总诀 —— 关于 erlang 的方方面面都提及一些,讲些有意思的内容,但都不会深入到太细节的东西。...从 erlang application 的角度来看,erlang VM 的调度是 preemptive 的,因为每个 erlang process(你的 erlang 或者 elixir 代码)不知道也不用关心自己会在什么时候被调度...从 scheduler 的角度想来,elixir 的某些语法也许略微有些欠考虑 —— 类 ruby 的语法,很容易让人像 ruby 那样,写下长长的函数 —— 比如,plug 的代码中,50 行以上的函数并不少见...elixir 又提供类似 lisp 的 macro 能力,因而可以轻易衍生出更多的 elixir 代码 —— 所有这些,当编译成 erlang 代码后,可能就是一个较大的函数,不那么利于 soft realtime...唯有 erlang,在 VM 层面像工匠般仔细地计量某个 process 的 throughput(reductions),让每个 process 雨露均沾。
没听过,这就对了,这是一个函数式的语言,可以认为是 Erlang 的升级版本,Erlang 多用在交换机设备上的开发语言,这个语言其实还是比较小众的。...RabbitMQ 就是 Erlang 开发的,虽然 Erlang 在整个项目中的比例并不是很高。职位需求这个职位的需求就是使用 Elixir 语言来处理 HTTP 的 API。...在这一个小时中主要聊了下对 HTTP 的请求,API 的调用是不是熟悉。不管用的是什么语言,只要你写过 API,这部分还是比较容易说清楚的。...回家做题对于给出的题目,稍后我在下面的文章中给出。如果你是使用其他的比较高级的语言,这个应该没有什么问题,可以说是非常简单的。...只是希望的是,他们应该可以通过更好的沟通让整个流程更加好,可惜他们没有做到,有点把面试当儿戏的意思。
elixir 是在 erlang VM 上发布的一门语法类似 ruby,能力完全继承 erlang,并支持 metaprogramming 的函数式编程语言。...framework 的整个流程,达到这样一个效率还是相当惊人的。...对 unbrella project 的支持 在 elixir 中,umbrella project 是我的最爱。...而 elixir / erlang 中,logger 是一个 app,db connector 是一个 app,当你要记录日志时,实际上是发一个 message 给 logger app,请它来处理 log...有意思的是,我第一个大规模使用的框架,django,也是在 1.2 到 1.3 的升级中,完成了 function based view 到 class based view 的蜕变。
在旧金山举行的 erlang/elixir 2017 大会上周结束。...,我自己看书或者读 erlang 的文档,获取到的知识也未必比参加培训少,那么,花这样的大价钱参加的意义是什么?...Erlang Solutions 是一个咨询公司,很多著名的开源项目(比如:RabbitMQ,Riak,MongooseIM)来源于他们,他们还是 erlang/elixir 大会的发起人。...而时时刻刻都在提问的,只有我和一个 apple 的工程师(是的,apple 内部有项目在用 elixir 做,yeah,erlang/elixir 程序员可以嗨森一下,然后该干嘛干嘛去了)。...这次培训,同学们的 erlang/elixir 的工作经验都远高于我 —— 我 elixir 三个月,三千行代码经验,erlang 零工作经验。
Elixir / OTP和面向过程的编程 在Elixir / Erlang和OTP中,通信原语是执行语言的虚拟机的一部分。在进程之间和机器之间通信的能力建立在语言系统的中心。...这强调了在这种范式和这些语言系统中沟通的重要性。 虽然Elixir语言主要在语言表达的逻辑方面起作用,但其使用是面向过程的。 以流程为导向意味着什么?...系统的生命周期是什么?哪些习惯需要是偶然的,哪些是不变的?系统中的负载在哪里,预期的速度和体积是多少?只有在这些类型的考虑被理解之后,面向过程的设计才开始定义每个进程的功能或要执行的逻辑。...Elixir或Erlang的任何培训课程必须(通常是)包括OTP,并且应该从一开始就有一个过程方向,而不是“现在你可以在Elixir中编写代码,所以让我们来做并发”类型的方式。...首先从流程设计的角度来规划系统,其次是逻辑编码的观点。 了解基础知识 什么是Elixir和OTP? Elixir是一种基于Erlang VM的功能编程语言。
孔子说三十而立,立的是什么?是立德、立功、立言这三不朽么?还是小家子些的,立身,立家,立业?每个在奔四路上的人都会有自己的体味和解读。但不容置疑的是,三十岁往上,要渐渐形成自己的思想和方法论。...(感谢小山同学贡献的老爷子亲笔阐述) 仔细想想,它简单地可怕,就像物理学的大一统理论一样,试图从纷繁复杂中跳脱出来,回归本源。...我喜爱 Joe,和我喜欢 Rich Hickey 一样,他们在传播知识的同时,传播他们自己对事物独特的理解和思考。 回到我自己对做事的流程和方法的感悟。...目前这套流程还在实验当中,我们线上的服务,OCAP playground 就跑的是生成的代码。...我们自己写了大约 3500 行 elixir,1000 行 yaml;生成出来 1500 行 elixir 代码(Elixir 支持 Macro,所以我们生成出来这些源码只是方便自己排查问题)。
atom,vscode这样的东西,在业界是推崇用vim的,他命令区和编辑区合一的ui方案使之成为通用ide,那么在远程呢,越来越流行的还有很多web IDE,elmlang for webapp的特性使得其天然就与...web ide相生相融,与我的想法颇为迎合的是,elmlang的官方发布了一个ellie:el-li-e,elmlang live editor的意思,它模拟了atom这样的本地编辑器方案,该项目托管在...基本上ellie源码就是混合erlang->elixir,nodejs->elmlang,haskell-elmlang五种语言组建出来的: elixir与nodejs都是语言,分别执行exs与js,其应用以语言库的源码形式发布...elixir又作为erlang的一个库与可执行服务正如elmlang是nodejs的一个库与可执行服务一样,erlang也是源码形式发布的,所以erlang->elixir是语言源码套源码形式发布的。...中独立生成image和不同的entrypoint run中运行,而在prod中前后端整合到了elixir image下,它们最大的区别是,dev环境下的webpack需要附加express 8080持续运行
/ elixir 时宜的部署方案。...我们生产环境的 erlang / elixir 跑在 19.x / 1.4 上。...这是整个 build 的流程。要部署的时候,只要跟部署脚本指明要部署的 release,我们可以从 release assets 中拿到这个 tarball,解压部署即可。...这样的好处是:构建系统在我们自己的 VPC 中,可以从 vault 中获取数据库的 credentials;同时,我们只需要在构建系统里搭载合适的 erlang / elixir 版本,然后通过 include...想想看,你上一次从零到一把一个全新的项目从一个蓝图起,一行行代码垒起来,最终部署到生产环境或者用户手边,是什么时候?如果超过半年,那么,你可能需要停下来好好歇口气,认认真真从头造个轮子。
任务可以是 Elixir 中的一个进程,或者是 Go 中的一个 Goroutine。...,我永远不会忘记当我第一次在 Elixir 的 REPL,iex 中做一个 SQL 查询的那一刻。...不,Elixir 可以避免这种情况,因为它是建立在 Erlang/OTP 之上的,而 Erlang/OTP 具有很好的并发性。 从一开始,并发及支持它的流程就已经成为 OTP 的一部分。...在 Elixir 和 Erlang 中,并发不是在函数层发生,而是在模块层发生。你可以将模块实例化为一个进程,现在它与其他进程并发运行。每个进程都保持自己的状态,并且可以与其他进程来回传递消息。...创造 vs 进化 思考一下 Elixir 的历史:首先是由 Joe Armstrong 和他的团队发明的 Erlang,旨在解决电信行业带来的巨大并发挑战。
那么,Actor 模型又是什么呢? Actor 模型,代表一种异步消息模式的分布式并行计算模型。在 Actor 模型里,每个 Actor 相当于系统中的一个组件,都是基本的计算单元。...Actor工作原理 工作流程 Actor2从MailBox队列中依次取出Actor1和Actor3发送的消息执行相应的操作 消息传递流程 Actor的行为 当一个actor接受到消息后,它可以做如下事情...进一步建议看一下Erlang和Elixir语言, JVM上的 Actor库Akka,基于Actor的框架Vert.x Actor关键特征 优势 Actor 的通信机制与日常的邮件通信非常类似。...可重用性低,业务逻辑的改变会导致整体代码的重写 工程上难以实现 不适用于对消息处理顺序有严格要求的系统 Actor 主要应用 1.Erlang/OTP: Erlang是面向并发的编程语言,OTP是Erlang...Erlang 是一种通用的、面向并发的编程语言,使用 Erlang 编写分布式应用比较简单,而 OTP 就是 Erlang 技术栈中的标准库。
2014 年前后的前端生态还没有今天这么百花齐放 —— 如今一个编程语言没有对应的「编译成 js」的方案,就像没有化妆的女孩儿,都不好意思出门。...)中得到了一个宝贵的经验:如果有静态类型系统,javascript 的性能优化和大项目工程化可以大大提升一个台阶。...dart 的并发模型非常讨喜,至少,对我的胃口。它受 erlang 的影响不小,提供了类似于 erlang process 的 isolate。...dart 还有一个有意思的特性是 snapshot。顾名思义,snapshot 允许 dart 保存并序列化当前 VM 的上下文,下次可以从 snapshot 中恢复运行。...dart 的代码分析服务做得相当出色,无论是类型推导,还是自动补全,还是代码跳转,相对于我比较常用的语言 elixir 和 rust 来说,反应速度都是一流,从不卡顿。
技术选型是无法脱离团队单独完成的,如果让我个人选择一个基础语言和框架,我大概会选择基于 Erlang/OTP,使用 Elixir 开发的 Phoenix,或者,干脆使用 Plug(Phoenix 的基石...因为 Plug / Phoenix 通过组合来构建 pipeline 的方式很符合我的思维,Elixir 对 macro 的支持和 Erlang 语言核心的 pattern matching 让诸如路由这样的子系统高效简洁美观...,而 Erlang / OTP 的高并发下的健壮性又是一个 API 系统苦苦追求的。...swagger 是一种 API 描述语言,可以定义客户端和服务器之间的协议。swagger doc 可以生成 API 的文档和测试UI,比如说: ?...在接下来的文章中,我会详细介绍 swagger。 我们再看 ORM。
以Code Poster为例,其执行流程如下所示: 读取代码文件 读取图片文件 生成Text元素集(这个过程会完成代码字符与颜色的融合) 生成SVG 保存SVG文件 Elixir的管道运算符,会自然地让我们想起...那么,在Code Poster场景下,这个统一接口是什么呢?或者说我们需要抽象的数据究竟是什么呢?分析前面的执行流程,读取一个code文件与读取一个image文件,返回的结果其实完全不同。...那么,如这般不同的数据结构如何才能够像Stream一样通过管道连接起来呢? 在Elixir中,我们通常通过定义一个struct来完成对数据的抽象。...该原则要求一个函数中的所有操作都处于相同的抽象层。只有如此,才不会让函数表达的意思失衡,有的隐藏了细节,有的又暴露了不必要的内容。 我们可以通过对需求的任务逐层拆分来保证这一点。...前面提到的流程是最高抽象层的任务分解,而针对load code file,又可以拆分为如下的子任务: 读取代码文件 去除文件内容中的空格、tab、换行符(表现的业务含义就是拼接这些代码字符) 转换为字符集合
他们有自己的流程和治理系统(在上一代流程遇到一些问题后,他们目前正在进行相当大的改革)。该项目实际上负责所有技术决策,包括语言的内容、工具和流程的工作方式、文档中的内容、更改的功能以及更改时间等。...下面一些回复摘要: “F# 中的这是默认值。...学习资源 Rustproofing Linux: 研究如何将C驱动迁移到Rust上来的最佳实践系列文章[22] 减少 AccessKit(跨平台和编程语言的 UI 可访问性基础设施,Rust 实现) 的内存使用报告...Lunatic[34] 是一种 Erlang 风格的 wasm 运行时,并且提供了一个现代化 Web 框架 submillisecond[35]。...UI 可访问性基础设施,Rust 实现) 的内存使用报告: https://accesskit.dev/dramatically-reducing-accesskits-memory-usage/ [24
过去的三个月里,我畅游在 elixir,ansible,terraform,javascript,少量 python,少量 erlang 组成的一群 repo 中,慢慢领悟到了这种高效工作之道:建立属于自己...当这样的接口统一后,我们可以不管 repo 的目录结构是什么,是哪个语言,语言对应的各种 cli 是什么,一切都可以通过标准的接口处理,非常符合 don’t make me think 的思路。...这一切都归功于我们还算不错的 TTP。目前我们的 elixir 项目的 TTP 在十分钟左右,算可以了。...有些语言,比如 erlang,elixir,天然就模拟自然界的行为,通过自下而上的解耦,让简单承载复杂。...在 erlang 的世界里,一个 process 就像一个个独立的,彼此解耦的个体,它们构建起团队(supervision tree),一个个团队构成公司(application),一家家公司进而组织成一个复杂的社会
像p标签或者h1标签,在标记之间可以添加内容,eg: this is a paragraph.那我们如果想在angular的标签之间添加内容呢,例如在</app-test...10. { {}} 与HTML标签一起使用,eg: { {var}} var 是来自于ts(component)中的值。...Observables 和Promises的区别 Observables 是惰性的,意思是在subsciption之前什么都不会发生。...设置base href 标签的作用?...Dirty check是比较新的数据跟老的数据的差别,如果看到有改变, 就用新的数据更新现有的视图。 31. DOM和BOM的区别是什么? Dom是document object model。
博客地址 http://www.cherylgood.cn 文章目录 前言 从demo到原理 总结 1 前言 RxJava是什么呢?...and event-based programs using observable sequences for the Java 大致意思是:一个可以在JVM上使用的,是由异步的基于事件编写的通过使用可观察序列构成的一个库...本次学习历程所定目标如下: 1.初步了解RxJava2.X的使用流程 2.探索Observable发送数据的流程 3.明白Observer是如何接收数据的 4.解析Observable与Observer...时传入的观察者,到底是不是呢?...RxJava2.0提供的新特性与之息息相关哦,这个我们先给它来个关键标签,后面再详细分析。
02.使用LiveData的优势 2.1 具有很明显的优点 UI和实时数据保持一致 因为LiveData采用的是观察者模式,这样一来就可以在数据发生改变时获得通知,更新UI。...这个方法是控制LiveData中数据发生变化时,采取什么措施 (比如更新界面)。通常是在UI Controller (Activity/Fragment) 中创建这个观察者。...// 更新数据 tv3.setText(newText); } }); liveData.setValue("小杨真的是一个逗比么"); 那么上面这一段代码大概是什么意思呢...如何去更新那个文本中的数据呢?代码如下所示: 想要在UI Controller中改变LiveData中的值呢?(比如点击某个Button设置文本内容的更改)。...那么注册观察者之后的触发流程是怎样的?
同期群分析 从留存率角度进行同期群分析 从人均付款金额角度进行同期群分析 从人均购买次数角度进行同期群分析 每月总体付费情况 将结果导出网页或截图 整体完整代码 同期群分析概念 同期群(Cohort)的字面意思...在《精益数据分析》中的第2章 创业的记分牌 中介绍了三种分析方法(市场细分、同期群分析以及A/B测试),其中关于同期群分析的讨论可以帮助我们快速了解它的应用场景。...,大致可以划分为2个流程:确定同期群分组逻辑和确定同期群分析的关键数据指标。...计算每条购买记录的时间与首单购买时间的月份差,并重置月份差标签: order["标签"] = (order.购买月份-order.首单月份).apply(lambda x:"同期群人数" if x.n=...在本次的分析中,留存率的具体计算方式为:+N月留存率=+N月付款用户数/首月付款用户数 cohort_number.iloc[:, 1:] = cohort_number.iloc[:, 1:].divide
一门十几天搞出来的语言,就不要问 [] == ![] // true 是什么动机了, 不要学这些糟粕。...函数式: 例如 Lisp(例如 Clojure)、Erlang、Haskell......我这里介绍一个方法是建立一个标签云。这个标签云是对这门语言的一些关键描述。例如它的主要特性、优点、吐槽点。...标签云使用 WordClouds[2] 生成 Go 语言: ? Javascript: ? Elixir: ?...可以得到更快的运行速度和启动速度 另外一层意思是,Dart 这门语言和 JavaScript 非常相似。
领取专属 10元无门槛券
手把手带您无忧上云