タグ

erlangに関するkoko1000banのブックマーク (17)

  • なぜErlangなのか - YAMAGUCHI::weblog

    はじめに In-A-Gist — Why Erlang? 最近はErlang関連のWeb書籍の翻訳をしてまして*1、Erlang関連のニュースなどを収集して読んでいます。そこでたまたま見つけた面白そうなエントリがあって、翻訳しようかなと思っていたら@voluntasの兄貴ご推薦ということなので、日常生活を取り戻すべく翻訳してみました。 このエントリはinagistというサービスの公式ブログで、ErlangでWebサービスを作ることの利点を説明したエントリです。多少補足や外部リンクが必要な部分は僕がリンクを貼ったりしているので、わからない場合はご参照ください。あと翻訳が怪しいところがあるのでツッコミ歓迎。 なぜErlangなのか よく私がinagistはErlangで書かれていると言うとおかしな目で見られることがあります。なので、ここでErlangが適している重要な点をいくつかあげようと思い

    なぜErlangなのか - YAMAGUCHI::weblog
  • Erlang RunTime System の闇(闇というほどのものでもないけど) - kuenishi's blog

    みなさんご存知かもしれませんが、*nixではひとりのユーザーが同時にオープンできるファイルディスクリプタの数の上限がきまっていたりします。もっと有り体にいうと、ひとつの*nixプロセスで動作するファイルディスクリプタの上限が制限されてしまうというのが一番の問題。いくらC10Kに耐えられるようなスーパープログラムを書いたところで、こいつの初期値は1024とか256だったりするので「あり?おかしいな?」とかいうのは誰もが通る道だと思います*1。 で、まあやっぱりErlangのはなしになります。ErlangでC10KなTCPサーバー書いたところでこの問題は避けて通れません。そいでsudo ulimit -n 1000000とかやっちゃいますよね。当然です。 とはいえ、そうしたらなぜかしらん、erlコマンド叩いてerts起動しただけでメモリを500MBをう[要検証]との報告があったので、一体なん

    Erlang RunTime System の闇(闇というほどのものでもないけど) - kuenishi's blog
  • Erlang で echo server - みかログ

    gen_tcp の練習で echo server 書いてみたより 誰か添削してくれないかなぁ… ということなので,わたしならこう書く,というものを以下に. 添削というほどのことは無理ですが,自分の練習を兼ねて…(^^; -module(echoserver2). -export([start/0, handle_connection/1, recv_loop/1]). start() -> {ok, ListenSocket} = gen_tcp:listen(8080, [{active, false}, binary, {packet, line}, {reuseaddr, true}]), accept(ListenSocket). accept(ListenSocket) -> {ok, Socket} = gen_tcp:accept(ListenSocket), spawn(?

    Erlang で echo server - みかログ
  • Erlangの世界ではmemcachedとか要らない - みかログ

    Erlangを始めてから感じたことは,今までPerlでやっていた時に比べて,いろいろなやり方が出来るようになる,ということ. Webアプリに限らず,いろいろなアプリケーションで,より柔軟な設計が出来るようになると思う. Perl(や同種のスクリプト言語では)基的に1プロセス1スレッドの範囲内に縛られていて,コストを考えるとコードの一部の処理だけ並列処理することは出来なかったし,複数のプロセスでデータを共有しようと思うと基的にはDBに入れるしかなかった. たとえば,Perlで作られている大規模なサイトでは,DBの負荷を軽減するためにmemcachedが使われていることが多い. もしErlangでサイトを作っていれば,memcachedなどをわざわざ使うまでもなく,同様のことが簡単に書けてしまう. 単にmemcachedと同じ事をするだけであれば大きなメリットは無いけれども,自前で書いた場

    Erlangの世界ではmemcachedとか要らない - みかログ
  • 美人時計からその日の画像をダウンロードしてくるスクリプト - kuenishi's blog

    Python版が古くなっていたので、Ruby版を参考にして美人時計の新仕様に対応したものを作ってみた。connection reset by peerが帰ってきたら間を置いてリトライさせたいんだけどなぁ。適当なやり方が思いつかない。Erlangだったら末尾再帰で奇麗にかけるかな。最後のsleepの引数は10前後のお好きな素数をお入れください。 import sys,os,urllib2,time opener = urllib2.build_opener() for h in range(24): for m in range(60): url = 'http://www.bijint.com/jp/img/clk/%02d%02d.jpg' % (h, m) request = urllib2.Request( url ) request.add_header( 'Referer', "

    美人時計からその日の画像をダウンロードしてくるスクリプト - kuenishi's blog
  • Erlangのhttpドーピング - みかログ

    Erlangで書かれたWebサーバのyawsはかなり速い. Apache並の性能が出る. それはErlangが速いからだと思っていた. でも,ソースを読んでみたら,ドーピングされていることがわかった. 同様のアプリで,mochiwebというErlangで書かれたWebサーバのフレームワークもあるけれど,これも同じでその方法を使っていた. Erlangでは,TCP通信のドライバにいろいろなモードがあって,行単位で応答を返したり,FCGIやCORBAのパケットをあつかったりすることができる. Erlangのマニュアルには書かれていないけれど,このモードにhttpというものがあって,それを使うと,httpヘッダの解析などをC言語で書かれたドライバ内で行うことができる模様. undocumentedだけども,どちらのフレームワークも使用しているということは,その辺よく研究しているということなのかな

    Erlangのhttpドーピング - みかログ
  • Erlang Performance - KLablabWiki

    概要 並列処理に適したプログラミング言語 Erlang は、マルチプロセッサの環境で 効率よくパフォーマンスが向上すると言われています。そこで実際のマルチプ ロセッサ環境で様々な Erlang プログラムを走らせる検証を行ってみました。 行った検証の内容は以下の通りです 並列ソート N-Queen 問題 検証環境 ハードウェア Sun Fire T1000 CPU UltraSPARC T1 メモリ 16G OS  Solaris 10 8/07 Erlang 実行環境 OTP 12B-0(hipe 有効) 今回使用した UltraSPARC T1 プロセッサ は 8つのコア×4スレッド(CoolThreads)という構成 で合計 32個の並列処理が可能となっています。なお、検証に使用した Sun Fire T1000 はサン・マイクロシステムズ(株)様よりごお貸し頂きました。 ソース

  • Erlangは関数型だけど難しくない - みかログ

    Erlangで簡単なアプリまで書けるくらいになったので,感想を. 関数型言語というと,Lisp,Haskellなどがあって,どれも難しいイメージ. Erlangもはじめは結構覚えるの大変かなぁという印象があった. Lispは括弧だらけでまず見た目から拒否反応が起こる. HaskellはふつうのHaskellとか読んでみたけど,遅延評価やモナドがやはり難しいイメージ. 今までのように,書いた順番に実行されるという点が違ったり,デバッグするときに好きなときにprint入れたり出来ないのは,やっぱりかなり影響が大きい. ※追記:unsafePerformIOって関数で無理矢理printさせたりできるらしい.危険らしいけど(^^; その点,Erlangはそういう難しさが全くなかった. 書いた順番に普通に実行されるし,副作用がどうとか気にする必要も無し. エラー時は(見にくいけど)スタックトレースが

    Erlangは関数型だけど難しくない - みかログ
  • Erlangのthrift_clientを使ってCassandraと戯れる - スコトプリゴニエフスク通信

    もう何度目か分からない空前のErlangブームを迎えているわけですが、ErlangでCassandra/Thriftを使う方法がちょっと分からなかったので、メモ。まず、Thriftの配布物に含まれているlib/erlをMakeして、Erlang用のThriftライブラリをインストールしておくことが必要。さらに、Cassandraの配布物に含まれているcassandra.thriftから、 $ thrift --gen erl cassandra.thrift $ cd gen-erl $ erlc *.erl のようにしてCassandraクライアントライブラリを生成して、コンパイルしておくことも必要。その上で、 {ok, C} = thrift_client:start_link("127.0.0.1", 9160, cassandra_thrift). で接続。 thrift_clie

  • Code Pocket: Setup Erjang

    2010年7月6日火曜日 Setup Erjang 並列処理が特徴である言語は、Google GOScala、Erlangなどがありますが、その中で僕は、未来永劫続くであろうErjangというJavaVM上で動作するErlangをチョイスしました。.beamファイルを.classファイルに変換することで実現しています。 インストールはこれらを参考にしながらも、かなりハマりました。 ・Home - erjang - GitHub ・Erjang | Google Groups ・Java to the Limit Erlang InstallErjangするにもErlangが必要なので、Erlangからインストールします。 環境はMacOSXなので、家サイトから最新のソースコードをコンパイルします。 まずはOSXはwgetがプリインストールされていないので、curlをつかい

  • https://www.freia.jp/taka/blog/725

    https://www.freia.jp/taka/blog/725
  • 佐藤先生がErlang、Scala、Javaなどの並行処理を斬る! - スティルハウスの書庫の書庫

    ここ数日の佐藤先生のエントリが熱い! Erlang、ScalaGoJavaなどの現代の言語(Erlangは古いか)における並行処理の扱い方について、それぞれの歴史的背景や意義、得手不得手などがわかりやすく紹介されてます。80年代から並行処理やオブジェクト指向を研究されてきた佐藤先生ならではの視点ですね。ちょっと長くなりますが特に私が興味深かった部分を引用します(強調は私): 佐藤一郎: Web日記 (2010年) 最近、興味深いのはオブジェクト指向言語のScalaやErlangが話題を集めていることでしょうか。どちらもActor Modelをベースにしているそうですが、オブジェクト指向言語の歴史でいうと、Actor Modelなどの並行処理用オブジェクト指向言語の研究が盛んになったのは1985年からの6,7年ぐらいだと思います(Actor Model自身はもっと古いですが)。そして19

    佐藤先生がErlang、Scala、Javaなどの並行処理を斬る! - スティルハウスの書庫の書庫
  • Flymake for Erlang - すけ

    Emacs での開発の際には、Flymake を使うと超便利だヨ! リアルタイム (on the fly) で Syntax Check してくれるヨ! と素敵なお話を伺ったので、設定してみました。 文法ミスをするとこんな感じで教えてくれます。 薄い灰色が警告、濃い灰色がエラーです。(ちょっと分かりにくいかしら。。。) あら、素敵! 設定の手順をまとめてみました。 環境 GNU Emacs 22.2.1 Emacs 22 以降はデフォルトで flymake は入っています。 ver 2.X の Meadow では flymake が入っていません。 ver 3.X に移行するか、flymake.pl を落としましょう。 スクリプト 下記のスクリプト (escript) を作成し、適当なディレクトリに置いて下さい。 実行権限の付与をお忘れなく。 #!/usr/bin/env escript

    Flymake for Erlang - すけ
  • Erlang 付属プロファイラ fprof の出力結果の見方 - higepon blog

    参照 Erlang の公式マニュアル。fprof 手短なコツ プロファイラ結果を上から見ていき、ACC が大きいものをたどっていく。 % がついたマーク付きの関数に注目して、calling, called 関数の ACC を見比べていき、時間を消費している関数を特定する。 Emacs なら M-C s で 関数名.*% あたりで追っていくと良い。 詳細 マニュアルの超訳(ねつ造、改悪、省略)。 以下のコードのプロファイリングを見ている場合。 -module(foo). -export([create_file_slow/2]). create_file_slow(Name, N) when integer(N), N >= 0 -> {ok, FD} = file:open(Name, [raw, write, delayed_write, binary]), if N > 256 ->

    Erlang 付属プロファイラ fprof の出力結果の見方 - higepon blog
  • NameBright.com - Next Generation Domain Registration planeterlang.org is coming soon

  • Erlang実験室:JSONデータのErlang表現 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    誰が考えても似たようなことになると思いますが、次の2つを比較してみます。 YAWS付属のjson.erl (http://yaws.hyber.org/) LShft社提供のrfc4627.erl (http://hg.opensource.lshift.net/erlang-rfc4627/) YAWS版 JSON Erlang true, false, null true, false, null(アトム) number number() string string()(文字リスト) array {array, element_list()} object {struct, proplist()} 補足の型定義: number()= integer() | float() element_list() = [value()] proplist() = [{key(), value()}

    Erlang実験室:JSONデータのErlang表現 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Erlang によるウェブプログラミング - elm200 の日記(旧はてなダイアリー)

    Erlang は「コンピュータにおいて汎用的な用途に使うことができる並列処理指向のプログラミング言語および実行環境である」(Wikipedia) 言語としては関数型言語で、軽量プロセスを扱うのが得意と聞いている。 ベトナム語のウェブサイト cntt.tv より Lập trình web với Erlang(Erlang によるウェブプログラミング) を翻訳する。 ==翻訳開始 Erlang によるウェブプログラミング Python, Ruby, PHP そして Java のように、よく使用される言語では、強力な ウェブフレームワークがたくさんあります。Erlang は世に出て20年になります。ネットワークプログラミングに対してはよいサポートがありますが、ウェブ方面はまだ弱いです。複雑なビューやコントローラのあるウェブをErlang で書くのは、いまのところ間違った決定でしょう。しかしな

    Erlang によるウェブプログラミング - elm200 の日記(旧はてなダイアリー)
  • 1