2日前ぐらいからいろいろ頑張ってたのですが、ようやくGAEjの本番環境でMerbアプリを動かせました。 http://jmerbist.appspot.com/ 使っているgemをfreezeする仕組みがあるフレームワークであれば、どれでも以外と簡単に動きそうな感じがします。 いやー、これは色々面白い事が出来そうですね!
恥ずかしいけど。 require 'rinda/tuplespace' require 'erb' require 'webrick/cgi' require 'rbtree' require 'nkf' require 'digest/md5' require 'enumerator' たくさんrequireする。enumeratorはeach_sliceを使いたかったから。 class Page include ERB::Util def initialize @color = create_color end def create_color Hash.new do |h, k| md5 = Digest::MD5.new md5 << k.to_s r = 0b01111111 & md5.digest[0] g = 0b01111111 & md5.digest[1] b = 0
アプリケーションA:keyXをgetする アプリケーションA:getが待たされる アプリケーションB:keyXにvalueXをセットする アプリケーションA:getが帰り、valueXを取得できる このように非同期に通知する機構をmemcachedプロトコルを使って汎用的に利用することができます。 インストール ソースコードはCodeReposにあります:lang/ruby/lkserver $ svn co http://svn.coderepos.org/share/lang/ruby/lkserver $ cd lkserver # memcachedテキストプロトコルのパーサーをコンパイル $ ruby extconf.rb $ make # Rev(イベント駆動IOライブラリ)をインストール $ gem install rev # 11511/tcpで起動 $ ruby lkse
ネットワークプログラミングで面倒なのが、通信相手にバイト列しか送れないためプロトコルをシリアライズ方法から考えないといけないかったり、複数のクライアントに対応しようとするとスレッドやらイベント駆動やらを考えないといけないところで、なかなか本質的なロジックの実装に手を付けられずもどかしくなります。 そのあたりの面倒な部分をまとめて良きに計らってくれるRPCライブラリを作っておくと良さそうです。 とはいえ、RPCレイヤーはネットワークプログラミングの中でも速度と信頼性に大きく影響する部分でもあります。実装を丸々隠蔽されてしまうと、後になってカスタマイズできずに困ったことになるかもしれません。 最初のプロトタイピングとして簡単に使えるが、カスタマイズも効くような柔軟性が欲しいところです。 そこでRubyの高速なイベント駆動IOライブラリであるRevと、バイナリベースのシリアライズ形式であるMes
特にサーバー用途では、CPUがシングルコアに戻ってくることは考えにくい。 マルチコアCPUの性能を活かすにはマルチスレッドに対応したサーバーの実装が必要になるわけですが、マルチスレッドなプログラミングは往々にして「高負荷になると固まる」とか「たまに落ちる」といった悩ましいバグと戦わなければならず、イヤです。 かといってシングルスレッドでは、近い将来 32コアCPU! などが出てきたとき、たぶん性能を発揮できません。 そこで、そこそこデバッグしやすく、それでいて多コアCPUでもスケールするという落としどころを模索しているのですが、ボトルネックはネットワークIO周りにあるだろう*1という前提の元で、ネットワークIO部分だけをマルチスレッドで動かし、それ以外の部分をシングルスレッドで動かすというアーキテクチャを考えています。 ロジックの部分はマルチスレッドで書いても共有リソースにアクセスする度に
15 パズルを quine で作ってみました。 eval((%w[a=0;loop{a=(0..15).sort_by{rand};b=a.reverse;b=a[0,4]+b[8,4]+a [8,4]+b[0,4];n=0;16.times{|i|b[i]>0&&(0..i).map{|j|b[j]>b[i]&&n+=1}};n% 2>0&&break;};eval$s="b=0x#{a.map{|n|"%x"%n}.join}"+%w[;i=(m=0..15).find {|i|1>b&m=15<<4*i};t=m|n=m<<4*o=("AdABrBlBAuA"=~/(.)#{ARGV*''}\1/||04|| 0)-4;( n<1 ||n>1<<64||[255<<12]&[t>>040||0,t>>16, t]!=[])?t=0:i +=o;; ## s ####### ="eva
This entry was posted by Jun Mukai on Thursday, 20 November, 2008 http://q.hatena.ne.jp/1227069551 これについてはhandyな解決策はないだろうと思う(GNU globalでできる、という回答があるけど本当だろうか。globalそんなに真面目に使ったことないからよく知らないけど、ないだろう、という仮定のもとに以下の文章を書く)。ある識別子と同じ字句がコメント内や文字列リテラル内などにないということがあらかじめわかっているなら、ただの文字列置換でもできるのだけど、そうでもないなら少なくともコメントと文字列ぐらいを解釈する程度の簡易なトークナイザは必須で、それぐらい書くのはそれほどしんどいわけでもないだろうが、こういう質問に対して「パーサ書け」という回答をするのはさすがに人を馬鹿にしすぎているとい
☆☆月収30万以上! オファーから入金まで24時間稼ぎ続ける全自動HPをあなたに ! ! Excerpt: ◎◎在宅で稼げる情報 !! 99%成功する米国開発【Giveaway集客戦略】と、 オファーから入金まですべて自動で処理する全自動システムの専用HPで展開できるインターネットビジネスが Weblog: ☆☆月収30万円以上を【全自動HP】で稼ぎ続ける ! スゴイ! Tracked: 08/03/05 ITコーディネータとは Excerpt: 初級システムアドミニストレータは、情報システムを利用者の側からの視点で構築する技術を養うのに対して、この上級システムアドミニストレータは情報システムを業務者の側からの視点 Weblog: IT・パソコン関連系資格とは Tracked: 08/03/04 こんにちは(*・∀・*)鐓? Excerpt: アジアの家具・雑貨・料理、ま
I've reorganized the regular expression content in the new Programming Ruby, and added some cool new advanced examples. This one's fairly straightforward, but I love the fact that I can now start refactoring my more complex patterns, removing duplication. The stuff below is an extract from the unedited update. It'll appear in the next beta. It follows a discussion of named groups, \k and related
久々に優雅な時間を過ごしました。もう少し縮みますけど見た目を優先した面もあり。 http://ja.doukaku.org/comment/7271/ まめさんの偉業を見てから二大チューリング完全言語の共演を見たかったのでした。 Symbolic Polyglot Quine とかもできるだろうけど大変そうだなぁ。 Ruby の syntax highlight $/=' ';%#;$/=~('(?{'.(', =$ )'^'_@|_ @||').'$&`,'.('/-).+`&/-'^'__@@_@@@_').'<>})');"#;(___=->(_,*__){$.=/./=~_ $><<([*?`...$&][$.]&&[*$&...?{][$.]?[*?@..$&][~(/@./=~[*$/..?@]*''+_)]+$':_) __[$.]&&___[*__]})[*[*$<]]#"
Wayang88 : Profil Perusahaan Kasino Online Terkemuka 2024 Selamat datang di Wayang88, sebuah nama yang telah menjadi simbol kepercayaan dan hiburan berkualitas tinggi di dunia kasino online. Berdiri sejak tahun 2019 dan berpusat di Filipina, Wayang88 slot telah mengukir namanya sebagai destinasi utama bagi para penggemar kasino online di Indonesia. Dengan lisensi dan regulasi dari Philippine Amuse
Googleが公開したバイナリエンコード手法であるProtocol Buffersは、クライアントとサーバーの両方でシリアライズ形式を取り決めておき(IDL)、双方がそれに従ってデータをやりとりするようにします。 この方法では高速なデータのやりとりができる反面、IDLを書かなければならない、仕様を変えるたびにIDLを書き直さなければならない(あらかじめしっかりとIDLを設計しておかないとプログラミングを始められない)という面倒さがあります。 ※追記:Protocol BuffersのデシリアライザはIDLに記述されていないデータが来ても無視するので(Updating A Message Type - Protocol Buffers Language Guide)、仕様を拡張していっても問題ないようです。 一方JSONやYAMLなどのシリアライズ形式では、何も考えずにシリアライズしたデータ
Parsing Expression Grammar (PEG)をベースとした構文解析器を生成するパーサジェネレータMetalを作りました。Rubyで書かれており、Rubyのコードを生成します。 Metalの多くはOMeta: an Object-Oriented Language for Pattern MatchingをRubyに移植したものです。 Metalの特徴: Rubyでアクションが書ける オブジェクト指向(継承、Mix-in、委譲、オーバーライド、super) PEGの特徴はそのまま 曖昧さが無い 左再帰が書けない(いまのところ) メモ化する ソースコードはCodeRepos:/lang/ruby/metalにあるので、ガツガツいじれます。 使い方 Ruby gemsでインストールできます。 $ gem install metal 文法定義ファイルを書いて、metalコマンド
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く