26

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

有什么建议么?

编辑:该项目最好突出 Erlang 的优势(并发、分布式)。

4

7 回答 7

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

  2. 构建分布式文件系统。实现分布式 B*Trees 或 B+Trees 作为此文件系统的基础。用二郎做。

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

  4. 在键值存储之上构建分布式网络索引(供分布式网络搜索引擎使用)。

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

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

于 2012-06-01T04:57:57.077 回答
15

对于自己的东西,考虑编写一个简单的服务器;例如,服务日期/时间请求的东西,或者 - 有点花哨 - 一个只提供静态内容的 HTTP 守护程序。

Erlang 最好的部分是它处理并发的方式。锻炼那个。

于 2008-12-20T19:06:35.157 回答
10

欧拉计划,当然。

于 2008-12-20T15:58:13.927 回答
10

我丰富的 ToDo 列表中的一些东西既是很好的学习练习,又对整个 erlang 社区有帮助:

  • 分析所有可用的键/值存储:

    • 编写一个库,用于测试各种 K/V 存储的插入、查找、删除、搜索时间
    • 创建一个人们可以运行的基准套件
    • 让它与 ets、dets、proplists、gb_trees、dict、orddict、redblack 树、bdb、tokyocabinet 一起工作。
    • 制作漂亮的图表
    • 让更新、贡献和在任何人的机器上运行变得容易
  • 编写一个使用命名参数的新 io_lib:format 例程:

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

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

这并不能完全回答您的问题,但是如果您正在寻找一个有趣的、用 Erlang 编写的免费开源项目,那么您绝对应该查看 CouchDB。从网站:

Apache CouchDB 是一个分布式、容错和无模式的面向文档的数据库,可通过 RESTful HTTP/JSON API 访问。除其他功能外,它还提供具有双向冲突检测和解决的强大的增量复制功能,并且可以使用面向表的视图引擎(以 JavaScript 作为默认视图定义语言)进行查询和索引。

CouchDB 是用 Erlang 编写的,但可以从任何提供 HTTP 请求方法的环境轻松访问。有大量的第三方客户端库使这对于各种编程语言和环境变得更加容易。

CouchDB 网站有更多详细信息。快乐编码!

于 2008-12-20T15:31:25.120 回答
4

找到你理解和喜欢的 erlang 没有的东西。我用 etap 做到了https://github.com/ngerakines/etap/现在 nick 已经接管了管理,它在 EA 游戏内部使用。制作很有趣,就像以前的海报一样,它是真实的,所以我学会了解决现实世界的问题。

于 2009-01-03T21:31:15.467 回答
3

文件索引/搜索系统。这将通过介绍项目进行,但我已经切换到其他内容。

一旦你得到它的工作,你可以将索引移动到 mnesia,然后将东西分散到其他节点上,以获得一个完整的网络索引。

于 2008-12-22T17:05:50.373 回答