programming in the twenty-first centuryIt's not about technology for its own sake. It's about being able to implement your ideas. The IO List is a handy data type in Erlang, but not one that's often discussed in tutorials. It's any binary. Or any list containing integers between 0 and 255. Or any arbitrarily nested list containing either of those two things. Like this: [10, 20, "hello", <<"hello",
Look Mom, no object I don't remember who sold me object orientation, but he was a great liar. — José Valim In Erlang, there are no objects. It's a purist and functional language. Everything is made of primitives types; three differents kind of lists (list, tuple, binary), no decent string representation. It's one of the weird things when you discover Erlang. Weirdness and integrism are the beauty
すごいErlangゆかいに学ぼう! 作者: Fred Hebert,山口能迪出版社/メーカー: オーム社発売日: 2014/07/26メディア: 単行本(ソフトカバー)この商品を含むブログを見る いままでいろんな観点からErlang/OTPに関する本が出てきたが、この本はそのErlangの技術の集大成といっていい本だ。コレ一冊読んでおけば間違いない。他の本は忘れてもいい。あえていうなら、これを読んだ後にもっと詳しい作者自身の哲学を知りたい場合だけ、戦闘機本を読めばよい。だが他の本は別にいらない。内容が古かったりツールを網羅していなかったりするためだ。 原著は Heroku のエンジニア Fred Hebert のWeb記事をもとにした本だ。 Learn You Some Erlang for Great Good!: A Beginner's Guide 作者: Fred Hebert出版
渋日記@shibu.jp 渋川よしきの日記です。ソフトウェア開発とか、ライフハックを中心に記事を書いていきます。 JavaScriptはもう好き嫌いを超えて、最低限の読み書きはもはや教養レベルといっても言い過ぎではないと思います。ブラウザ限定だったら他の言語もありますが、ブラウザで標準で使える言語はJavaScript以外には選択肢はありません。3DCG系のツールのマクロ言語は未だにPythonがトップシェアだと思いますが、Flash, Photoshop, Illustratorの仕事を効率化するマクロ言語はJavaScriptですよね。先日AppleのOS Xの次期バージョンの自動化ツールが独自言語に加えてJavaScriptをサポートすることを発表しました。サーバサイドで使われるnode.jsは、コンパイル言語を除けばトップクラスの性能です。QtもQMLとしてJavaScriptを中
couch_db_updater:refresh_validate_doc_funs/1 今回はcouch_db_updater:init/1から呼び出している関数の中でまだ見ていないrefresh_validate_doc_funs/1を読んで行きます。 couch_db_updater.erl: 1refresh_validate_doc_funs(Db0) -> 2 Db = Db0#db{user_ctx = #user_ctx{roles=[<<"_admin">>]}}, 3 DesignDocs = couch_db:get_design_docs(Db), 4 ProcessDocFuns = lists:flatmap( 5 fun(DesignDocInfo) -> 6 {ok, DesignDoc} = couch_db:open_doc_int( 7 Db, Des
couch_db_updater:init_db/6の以下の部分を掘り下げてみたいと思います。 couch_db_updater.erl: 1 {ok, IdBtree} = couch_btree:open(Header#db_header.fulldocinfo_by_id_btree_state, Fd, 2 [{split, fun(X) -> btree_by_id_split(X) end}, 3 {join, fun(X,Y) -> btree_by_id_join(X,Y) end}, 4 {reduce, fun(X,Y) -> btree_by_id_reduce(X,Y) end}, 5 {compression, Compression}]), 6 {ok, SeqBtree} = couch_btree:open(Header#db_header.docinfo_
couch_db_updater:init/1 前回はヘッダ部を読み込むコードを読んだので、今回はDBの読み込み準備?のところを読んでみます。couch_db_updater:init/1からinit_db/6を呼び出す手前のところから。 couch_db_updater.erl: 1init({MainPid, DbName, Filepath, Fd, Options}) -> 2(..sinp...) 3 ReaderFd = open_reader_fd(Filepath, Options), 4 Db = init_db(DbName, Filepath, Fd, ReaderFd, Header, Options), 5 Db2 = refresh_validate_doc_funs(Db), 6 {ok, Db2#db{main_pid = MainPid}}. ヘッダ読み込
はじめに Mnesiaは、Erlangという言語をベースとした並列プログラミング用のオープンソース開発環境であるErlang OTPに付属している高機能のデータベース管理システム(DBMS)です。Mnesiaは真の分散DBMSなので、世界中の何千ものノード間でデータを分散し、複製し、断片化することも朝飯前です。ユーザーがしなければならないのは、Mnesiaデータベースの分散先となるさまざまなErlangノードを実行することだけです。 Mnesiaという名前になった経緯は、少々眉唾ではありますが、もともとは「Amnesia(健忘症)」という名前だったものを、エリクソンの重役が「データベースに『物忘れ』を連想させる名前を付けるのはいかがなものか」と発言したことから、エンジニアが「A」の文字を取って「Mnesia」とし、「すべてを記憶するもの」の意味を持たせたと言われています。Mnesiaは、
Why CouchDB? 数年前にCouchDBのデータフォーマットについて解説しているページを読みました。CouchDBの内部ではデータをB+treeで保持しており、且つデータはappend onlyでMVCCである、という部分が面白くて、その時からCouchDBに興味がありました。しかしコードがErlangで書かれており、当時の私にはCouchDBのコードを読むことができませんでした。 1年ほど前からErlangのコードにちょっとずつ触れるようになり、CouchDBのコードも時間をかければ読めるような気がするので、気が向いた時にちょっとずつ読んでいこうと思います。 本当はある程度読んでまとめてからアウトプットしようと思っていたのですが、正直言ってかなり苦戦していて、まとめられる気がしなくなったので、読んだところからダラダラと書いていくことにしました。ですので、続かないかも。 Sourc
新機能 バウチャーによるイベント管理機能をリリースしました。協賛企業の社員や関係者のイベント参加を円滑にすることに活用いただけます。詳しくはヘルプページをご覧ください。 新機能 connpass APIに新しく、所属グループを取得できるAPIやユーザーの参加イベントAPIを追加しました。各APIの詳細な仕様や利用方法につきましては、 APIリファレンス をご確認ください。またAPI利用希望の方は connpassのAPI利用について をご覧ください。 お知らせ 2024年9月1日より、connpassではスクレイピングを禁止し、利用規約に明記しました。以降の情報取得にはconnpass APIをご利用ください。APIご利用についてはヘルプページをご確認ください。
このウェブサイトは販売用です! tkyk.name は、あなたがお探しの情報の全ての最新かつ最適なソースです。一般トピックからここから検索できる内容は、tkyk.nameが全てとなります。あなたがお探しの内容が見つかることを願っています!
reltool.config �� V ��� V {sys, [ {lib_dirs, ["../deps"]}, %% depsを追加 {erts, [{mod_cond, derived}, {app_file, strip}]}, {app_file, strip}, {rel, "hogeapplication", "0.1", [ %% 標準で使うライブラリも全て追加 kernel, stdlib, sasl, compiler, crypto, ssl, public_key, inets, syntax_tools, %% 自分で組み込んだライブラリも、直接依存しないものも含めて全て追加 poolboy, epgsql, postgres_pool, hogeapplication ]}, {rel, "start_clean", "", [ kernel, stdli
[Video] http://vimeo.com/44312354#at=0 [Slide] http://www.erlang-factory.com/upload/presentations/558/efsf2012-whatsapp-scaling.pdf WhatsAppは日本でいうところのLineにあたるサービスでしょうか。このニュースによると、WhatsApp: 月間UU3億、WeChat: 月間UU2.3億、Skype: 月間UU2.8億、Line: 登録2億 (UUは発表しないんですね。。) ということですから、相当でかいですね。 昨年になりますが、Rick Reed (WhatsApp <- Yahoo! <- SGI)が、同サービスを支える、数百万ユーザの同時接続システムについて、SanFranciscoのErlangのカンファレンスで語ってます。 メッセージのトラフィ
プログラムを書く際には、ユニットテストも書くでしょう。まぁどっちを先に書くか、という話は置いといて。テストの自動化は品質面でもコスト面でもプラスになるため、できるだけ網羅的にやりたい。しかし網羅は無理なので適当なところで切り上げます。 そこで、前から名前だけは知ってて気になっていた QuickCheck を調べてみようという気になりました。なんと ja.Wikipedia に項目がない、en でもなんかさっぱり短い説明です。Further Reading と External Links が有用そう。まぁ読んでませんが。 QuickCheck - Wikipedia, the free encyclopedia ざっとまとめるとこんなかんじ。 テストケースを「生成」する。 テスト対象の関数が持つ「論理的性質」を確認する。 Haskell が本家。GHC と HUGS で動く。 その他、いろ
とりあえずモダン○○といっとけばいいかなと思ったが、モダニズムとか言ってた頃からモダンという言葉には「最近の」「ナウい」とかその程度の意味しかないのでそんなにありがたい話ではないことにご注意いただきたい。大正とか昭和初期のオバちゃんが「いや〜モダンやわぁ〜」とか言ってたのと同じだ。今ではもうばあちゃんだな。 エディタ 世間にはエディタを巡って宗教対立が発生し、場合によっては宗教戦争になるそうだがErlang/OTPの世界においてはそれは起き得ない。なぜならEmacsがデフォルトの開発環境として推奨されており、メジャーモードが処理系のディストリビューションに含まれているからだ。さまざまな便利ショートカットが用意されているので M-x tempo- と入れて補完されるものを眺めるとよいだろう。 パスを通して (require 'erlang-start) (require 'erlang-fl
View Source Profiling Never Guess About Performance Bottlenecks Even experienced software developers often guess wrong about where the performance bottlenecks are in their programs. Therefore, profile your program to see where the performance bottlenecks are and concentrate on optimizing them. Erlang/OTP contains several tools to help finding bottlenecks: tprof is a tracing profiler that can measu
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く