【问题标题】:What are some interesting projects to solve in Erlang for learning purposes? [closed]出于学习目的,在 Erlang 中有哪些有趣的项目需要解决? [关闭]
【发布时间】:2010-09-27 20:36:24
【问题描述】:

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

有什么建议吗?

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

【问题讨论】:

    标签: erlang distributed concurrency


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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      Erlang 最好的部分是它处理并发的方式;锻炼一下。

      【讨论】:

      • 这就是我正在寻找的项目。突出 Erlang 优势的东西(并发性、分布式)。
      • Joe Armstrong 的“Programming Erlang”包括有关如何对此类服务器进行编程的示例。强烈推荐。pragprog.com/book/jaerlang/programming-erlang
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          我丰富的 ToDo 列表中的一些东西既是很好的学习练习,又对整个 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)
            • 在实现这些行为的模块之前编译/加载行为模块
            • 正确处理分层模块(尤其是输出路径)

          【讨论】:

            【解决方案6】:

            Project Euler,当然。

            【讨论】:

            • 好主意。前段时间我偶然发现了它,想解决其中的一些问题,但后来忘记了。所以,谢谢你提醒我:)
            • 当然,它们是很好的问题,但是你可以用任何语言解决它们,而且大多数会比 Erlang 更适合。对于 Erlang,您想要的是需要/利用分布式解决方案的问题,因为这就是 Erlang 的优势所在。 AFAIK,欧拉计划不是[必然]那样。
            • 是的。仍然很高兴提醒项目已经完成,我应该让大脑慢跑一些。 :)
            • 好吧,实现 Eratosthenes Sieve 的分布式版本应该很有趣。
            • @JasperE:描述如何以有价值的方式分发 Eratosthenes Sieve?
            【解决方案7】:

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

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

            CouchDB 是用 Erlang 编写的,但可以 可以很容易地从任何 提供手段的环境 发出 HTTP 请求。有一个 众多第三方客户端 使这变得更容易的库 适用于多种编程语言 和环境。

            CouchDB website 有更多详细信息。编码愉快!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-09-30
              • 2010-09-13
              • 2012-04-02
              • 2023-03-16
              • 1970-01-01
              • 1970-01-01
              • 2011-01-01
              • 2012-05-20
              相关资源
              最近更新 更多