为了学习目的,在Erlang中要解决哪些有趣的项目?

时间:2008-12-20 15:24:13

标签: erlang distributed concurrency

我最近发现了Erlang,现在我正在通过几个教程。到现在为止,我很期待将某些东西作为一个爱好项目来实现。我对另一个聊天服务器并不感兴趣。我想编写更有趣的东西(是的,我知道这是一个相当模糊的术语),这也是可以管理的,所以我可以在业余时间完成它。

有什么建议吗?

编辑:项目最好突出显示Erlang的强项(并发,分布式)。

7 个答案:

答案 0 :(得分:19)

  1. 构建一个分布式系统,实时搜索Twitter提要,并允许任何人从网络前端执行搜索。

  2. 构建分布式文件系统。实现分布式B *树或B +树作为此文件系统的基础。在erlang中做。

  3. 在步骤2中构建的分布式文件系统之上构建分布式键值存储。

  4. 在密钥值存储库之上构建分布式Web索引(由分布式Web搜索引擎使用)。

  5. 构建分布式链接器。高级构建自动化为distributed builds和/或分布式处理提供远程代理处理。

  6. 构建一个MMORPG后端,它依赖于游戏/玩家状态的分布式存储和用户请求的分布式处理。

答案 1 :(得分:14)

为了自己的东西,考虑编写一个简单的服务器;例如,服务日期/时间请求或者 - 有点发烧友 - 一种仅提供静态内容的HTTP守护进程。

Erlang的最佳部分是它处理并发的方式;实现这一点。

答案 2 :(得分:10)

Project Euler,当然。

答案 3 :(得分:10)

我丰富的待办事项列表中的一些内容既是良好的学习练习,又对整个erlang社区有帮助:

  • 配置所有可用的键/值存储:

    • 编写一个库,用于测试各种K / V商店的插入,查找,删除,搜索时间
    • 创建人们可以运行的基准测试套件
    • 让它适用于ets,dets,proplists,gb_trees,dict,orddict,redblack trees,bdb,tokyocabinet,...
    • 制作漂亮的图表
    • 让您可以轻松更新,贡献并运行任何人的计算机
  • 编写一个使用命名参数的新io_lib:format例程:

    • io_lib:nformat(“你好〜{name} s~n。”,[{name,“Bob”}])。
    • 如果格式字符串的语言发生变化时参数的位置发生变化,这对国际化非常有用。
  • 扩展erl -make(make.erl)

    • 允许添加代码路径(这样您就不需要执行erl -pa LibraryPath -make)
    • 在实现这些行为的模块之前编译/加载行为模块
    • 正确处理分层模块(特别是输出路径)

答案 4 :(得分:7)

这并不完全回答你的问题,但是如果你正在寻找一个用Erlang编写的有趣的免费开源项目,你一定要查看CouchDB。来自网站:

  

Apache CouchDB是一个分布式的,   容错和无架构   面向文档的数据库可访问   通过RESTful HTTP / JSON API。其中   其他功能,它提供强大,   增量复制   双向冲突检测和   分辨率,并且是可查询的   使用面向表的视图可索引   JavaScript充当引擎   默认视图定义语言。

     

CouchDB是用Erlang编写的,但可以   可以从任何地方轻松访问   提供手段的环境   发出HTTP请求。有一个   众多第三方客户   图书馆让这更容易   适用于各种编程语言   和环境。

CouchDB website有更多详情。快乐的编码!

答案 5 :(得分:4)

找到一些你不理解和喜欢的东西。我用etap做到了https://github.com/ngerakines/etap/现在,尼克接管了管理,并在EA游戏内部使用。制作和以前的海报一样真有趣,所以我学会了解决现实世界的问题。

答案 6 :(得分:3)

文件索引/搜索系统。这是由介绍项目,但我已切换到其他东西。

一旦你完成它的工作,你可以将索引移动到mnesia,然后将其从其他节点传播到具有整个网络索引。