前職内定者時代にやった勉強会の資料

あれやこれやしていたら、懐かしいものが出てきました。いわゆる文系プログラマにしては入社までに割と良く勉強したなあとか、内容は意外とよくできてるような気もするなあということで、貼っておきます。なんかいろいろ勉強しようぜ、ということで同期を誘…

cassandraにscala REPLからアクセスする

セブンイレブンにいって買い物したらAKB48キャンペーンでコーヒーとお茶がもらえたので、今日が私のcassandra記念日。 ということで、cassandraにscala REPLからアクセスしてみます。 とりあえずインストールから。一応結構前に触ってたのですが、会社のPCで…

clojureでのref実装について(今後の課題編)

と、ensureを忘れてたので積み残しとして読んでいきます。core.clj読む感じだと多分こいつが重要ぽい奴らの中では最後のやつのはず。あと、今後の課題を整理します。では、ensureから。 (defn ensure "Must be called in a transaction. Protects the ref fr…

clojureでのref実装について(後編)

では、STMのコードを読んでいきます。ほとんどjavaですね。機能別に読んでいくとして、下記の箇所を読んでいくことになります。ちなみに、コメントはほとんどついていなかったので、僕の解説は推測と気合いです。1. refにオブジェクトをラップする 2. ラップ…

clojureでのref実装について(メモ編)

さて、今日もtokyocljな訳ですが、とりあえずあれからちょろちょろ調べてたあれやこれやを整理してみます。STM実装はMVCCをベースとして実装されており、履歴管理はsnapshot isolationを使用しています。 The Clojure STM uses multiversion concurrency con…

クラウド時代のTXと屋形船

「トランザクションについて語り合う楽しい屋形船」ということで、屋形船にのります。 参加希望者の方は、個別に調整するので、@marblejenkaまでご一報ください(屋形船という会場柄ATNDでは募集しません。キャンセルなどがちょっと怖いので。)。多少の増員…

clojureでのref実装について(中編)

全後半で分けようかと思ったのですが、想像していたより複雑な内容なので、tokyoclj3では整理しきれませんでした。ということで、refの内部構造とトランザクションのアボートを考慮しないref-setでのrefのオブジェクトツリーの状態遷移を整理してみます。次…

clojureでのrefの実装について(前半)

今日はtokyoclj#3なので、前回に引き続きclojureでの平行性実装についてみています。 前回もjavaの実装はチラ見していたのですが、clojure側の実装をみていなかったので、機能の復習もかねて整理しておきます。clojureはjavaでSTMを実装しています。java.uti…

four-heavenly-kings

四天王を英語で言うとこうなるらしいですね。http://twitter.com/marblejenka/four-heavenly-kingshttp://twitter.com/ashigeru/status/17007109347 http://twitter.com/marblejenka/status/17007139923 http://twitter.com/ryu_kobayashi/status/1700730690…

appengine ja hack-a-thon #5と#6をやります

このところ梅雨めいていますが、きっと7月は晴れるだろうということでハッカソンをやります。いずれも、参加条件は特になし/当日やることは各自で決める形式です。 appengineのコード書きに限らず、関連のある技術分野に興味のある方はぜひともご参加くださ…

#ahack4のときに書いた非同期datastoreのサンプル

10回前後のtransactional putで、commitまで100msとかで動きます。 便利かもしれないですが、datastoreに対する操作を確定させて例外を捕捉する仕組みがないとだめっぽいですね。googleもそのうち実装すると思いますが、そこの設計は結局そろわなさそうなの…

#ahack1のときに教えてもらったクラスロードのコード

airをgetしたので、windowsをどうにかしようと思っていたらまえにあらかわ先生に教えてもらったやつのコードを発見しました。 そういえばトランザクションの件もどうにかしないと。ついでにgistの埋め込みテスト。

githubにpushしようとしたらreturn code 22とか言われた

特になにもがんばらず、 git clone url してもろもろ変更、 git commit -a git push したら、pushのところでこんなエラーが出ちゃいました。 marblejenka-2:langstudy marblejenka$ git push error: Cannot access URL http://github.com/marblejenka/langst…

iAnnotate pdfとAji PDF Serviceでナイスなpdfライフ

適当にググっても出てこなかったので、あらかわ先生に対するiPadのプロモーションもかねてメモっておきます。 iAnnotate pdfはpdfリーダーです。 webブラウズしたファイルをダウンロードして保存したり、注釈をつけることができたり、複数のpdfを開いておく…

非同期なDatastoreService的なものとかつくってみた

うーん。結構悩ましいのですが、ノリと勢いでつくってみました。最近ブログさぼりがちだったので、ネタが欲しかったともいうかも。#appnegineでは、api呼び出しをRPCで実装していて、すべてのサービス呼び出しはApiProxy.makeSyncCallを通って他ノードと通信…

金利がなんで許されるのかについてのメモ

いつもとだいぶ関係ないネタだけど、なんかたびたび忘れてしまうのでメモっておこうかと思います。そんなにがんばって調べていないので、間違いがあったら有識者の方はやんわりコメントで教えてくれたりしてもらえるとうれしいです。 ・何を忘れてしまうのか…

appengine ja hack-a-thon #3でやること・やりたいこと

さて、今週末にappengine ja hack-a-thon #3を予定しています。当日何やるかメモっておこうと思います。当日は、bamlysundaycandy-scalaのエンハンスをしようとしてます。いくつかgoogle code にissueは挙げていますが、土曜日は長らく続いているhttpリクエ…

slim3-mavenを試してみたよ

@shin1ogawaさんがmavenでslim3を使えるようにしてくれたようなので、ちょっとためしてみました。http://twitter.com/shin1ogawa/status/11996294086 @bufferings maven2をインスコして、 http://goo.gl/oiv1 をチェックアウトして、そのフォルダで mvn ecli…

内蔵(笑)

shin1ogawa ja nightでは、このgoogle モデレーターでappengineに関する質問を受け付けています。ちょっとのぞいてみたらこんなことが書いてありました。 "俗に「内蔵見える系」として知られるbalmysundaycandyが何をしているのか、イマイチ理解できません。…

balmysundaycandy-scala betaをリリースしました!

なんやかんやあって時間がかかってしまいましたが、ajn6で発表したツールが僕以外にも使ってもらえそうな仕組みにできたので、ひとまず公開します。 ただし、productionでのトランザクションはやっぱりサポートできていません。この辺りの実装具合は後で触れ…

#ajn6に参加しました!

ということで、参加してきました。shin1さんによるtwitterのまとめ 1. あらかわ先生のグローバルトランザクションのはなしappengine ja night #6 図解Global TransactionView more presentations from Suguru ARAKAWA.成功が保証される個々の処理を組み合わ…

#ahack2 の幹事をしたよ

#ahack として実績のあったハッカソン第二弾ですね。@ashigeru氏、@y_koh氏なんかと、ちょっとITSの会議室どうかな?、というような話になり、僕もscala hack-a-thonなんかで発火村たのしいっすね、という感覚があって、やってみることにしました。最初は人…

scalaからappengineのapiをたたくシェルがようやくできたっぽい

普通にスクリプトからたたくのは発火村のときにいけてたのですがね。 やっぱり対話的なのがいいでしょうと(元の目論みではそうじゃないと意味ない)。なんとなくInterpreterLoopかなぁ、と思ったのが正解っぽかった。こちらのエントリを参考にさせてもらい…

Scala Hack-a-thon #2 に行ってきました

昔からscalaに割と興味はあったので、せっかくの機会なので行ってきました。午前中は主催の@yuroyoroさんから1時間ほどレクチャーをしていただきました(資料はこちら)。かなりわかりやすかったです。家に帰ってscala本を読んでいて、ポイントが押さえられ…

appengine/pythonのappstatsのページを訳してみるよ

まぁ、おこられるということはない前提で。原文について完全に忠実に訳してはいませんがそんなには外れてないと思います。また、僕の注記は注記とわかるように記述していますが、文中に書いています。http://code.google.com/appengine/docs/python/tools/ap…

balmysundaycandy-marble-brokerをリリースしてはいませんが使えることは使える状態にしました!

さて、ajn5が終わりブログに感想も書かず何をしていたかというと、松尾さんのプレゼンで見たappstatsをパクっていました。結構前からやはり松尾さんのつぶやきで存在は知っていたのですが、いろんな事情で手が付けられない感じでした。とはいえ、@bufferings…

1.3.1 SDK Prerelease!! lower level apiの動向

この時間でも、お家が会社に近いんで間に合うんですよ。いいでしょ。ということで、1.3.1 SDK Prereleaseです。lower level apiの変更について簡単に調べたので、下記に掲載します。動作確認はまだなので、あくまで変更されているという事実だけですね。ご参…

appengineのjunitテストを実行環境によって動かしたり動かさなかったりしたい

うーん。いろいろ悩ましいのですがとりあえず書いておこうと思います。 production環境でのテストには、@bufferings氏のkotoriが使えるので、便利です。便利ですが、僕の作っているbalmysundaycandyというものでは、low level apiが隠蔽しているappengineの…

その他今後の課題

low level apiでのkeyの書き換えが可能かためす。単に別エンティティになりそうな気がする。 async urlfetchでappengineの別インスタンスを呼ぶとどうなるか検証してみる。デッドロックはしなさそうだけど、appidが違うのでデータアクセスはできず、urlfetch…

GAE+Pythonでサービスを作りました @shin1x1 さん、@gozasoro さん

こんなサービスを華麗にpythonで作ったぜ!、というお話。あとは、御座候!御座候!ほかに言うことはない!@urekat さんの話と雰囲気でも思ったけど、LL系の人のサービスを作るスピード感はやっぱりすごいっす。二年くらい前から一年ほど、rubyistの人と一緒…

GAE/JRuby @urekatさん

rubyはいいぜ!というお話。個人的には、rubyでのmakeSyncCallのところがつぼでした。ちょっとだけですが、jrubyからのmakeSyncCallは試していてうまく行かなかったこともあり、華麗にローカルからdatastoreを書き換えていたところは感動しました。appengine…

懇親会

@materia_x64 さん、@kenzonag さんと新しい出会い。なんかこういうのもいいっすね。

App Engine Transaction Puzzler @ashigeru さん

トランザクション制御のパターンを整理したお話。さすがしげるさんっす。twitterでお話聞いたりしてますが、僕のイメージ通りの人でしたwappengineではentity groupの単位でしかトランザクションが保証されないうえに、一度作成したentity groupは変更できず…

DSL駆動開発×AppEngine @asami224 先生

クラウドなアーキテクチャでのモデリングは可能か?という観点から実用的なツールを作るに至る背景のお話。simplemodelerですね。・アーキタイプによる実装がどこまでうまく行くのかは正直わからないところ。使うのが簡単な開発サポートツールはたくさんある…

appengine ja night #4 感想など

会社が停電なのをいいことに、ちょっと行ってきました。 発表テーマについても興味があったので。内容を整理するというよりは個人的に感じたところをメモしています。

jrubyでmakeSyncCallができると聞いて

http://twitter.com/urekat/status/7785353904そんな噂がつぶやかれていたので、これは試してみなければならないと思いちょっとやってみました。rubyはほとんどやったことがないので、環境設定から。 jrubyのインストール macなら、 sudo port install jruby…

2009年をふりかえってみると

今年は仕事でも仕事以外の活動でもいろいろあった。いろいろなかったのは主に女の子とのおつきあいの方で、それはそれでかなり問題ではあるものの自分のやりたいことができた一年だったと思う。 クラウドが気になり始めたのも今年くらいだったと思う。google…

balmysundaycandy-morelowlevel-logger-beta-r68.jar をリリースしました

appengineから離れて二週間、なにか充実感のない生活を送っていました。仕事が忙しいとか、そういう事情はありますが、それでもなお平静を保つためにappengineを触ろうと思いました。ということで、OKAMOTO氏の記事に触発されてつくりたいつくりたいと思って…

ルートが存在しないentity groupのトランザクション処理に関するmore low levelからの考察

ルートエンティティが存在しなくてもエンティティグループに対するトランザクション処理が正常に行われる。つまり、トランザクション管理で使用されるエンティティグループのタイムスタンプは、Datastoreのエンティティとは関係が無いところで管理されている…

#ajn3に参加しました!

発表者・参加者の皆さん、おつかれさまでした。 個人的にメモった部分だけですが、まとめておこうと思います。発言者が入り乱れているところがあれですが、セッションごとのまとめとしてみてもらえればと思います。 キムティ♪さんによるtwitterのまとめ http…

DatastoreOperations.EXPLAINの謎

#ajn3のぼくのライトニングwトーク、で話題になった"EXPLAIN"についてもう少し情報を出します。基本的に調査中のものと思ってもらった方がよいのですが、開発サーバーでも本番でもこのサービス呼び出しは動作します。行きはcom.google.apphosting.api.Datast…

#ajn3おつかれさまでした!そしてmakeAsyncCallはどうなのか!?

#ajn3おつかれさまでした!!個人的には言いたいことが言えたので満足ですwappengineを扱うときのmore low levelの位置づけは、 ・どのapiが何を実現しているか最小粒度で理解しないと、アーキテクチャとか言う前に、抜け・漏れがあるかもしれないし、本当に…

makeAsyncCallを試してみたよ

appengine sdk1.2.8がprereleaseされました。 ApiProxyにmakeAsyncCallが追加されたというのはその筋では周知の事実だと思います。これを簡単に試してみました。slim3を使わせてもらっています。 ApiConfig apiConfig = new ApiConfig(); apiConfig.setDeadl…

appengine sdk1.2.8のmakeAsyncCall対応

appengine sdk1.2.8がprereleaseされたようです。お仕事中についついtwitterを見てしまったために仕事中はだいぶむらむらしていました。 非同期呼び出し、ということで、これまで"makeSyncCall"でサービス呼び出しを行っていたものについて、"makeAsyncCall"…

「週末はちょっとおしゃれな外苑前でスキルアップ」してきた

http://blogs.oracle.com/thitomi/2009/11/_22_-_-.htmlこちらのoracle主催の勉強会に行ってきました。開発者がoracle master持ってても、持っているだけでは意味がないと思いますが、個人的にはoracleのアーキテクチャを通して永続化層の理解を深めるのは重…

balmysundaycandy-morelowlevel-beta-r28をリリースしました

http://code.google.com/p/balmysundaycandy/downloads/listの、r28が初回リリースバージョンです。現在のリリースバージョンでは、 ・appengineにおけるmakeSyncCall呼び出し可能なメソッドの全量を整理(漏れてる可能性はありますが、設計ポリシーから推察…

protocol bufferでmakeSyncCallする getIndices編

あれからしばらくたっていろいろ試してみたのですが、やっぱり成果はありません。なんか、中の構造が見れて楽しげであることと、ちょっとだけ悪いことをしているような背徳感があるのがいい感じ、ということで、この辺は趣味の領域なのでしょう。今日はイン…

hadoop一人読書会ログ①

だいぶまえだけど、hadoop本を読んだときのつぶやきを書いときます。自分が忘れてることに愕然としつつ、ログのこしといてよかった感があるので。Pro Hadoop http://is.gd/3yjGo を読み始める。初っ端、ドキュメントなくてたいへんでした、みたいな話題 xxv …

protocol bufferでmakeSyncCallする get編

あの伝説のMakeSyncCallServletでは、apiproxyを経由して、ローカル環境からgae/jのいろいろなapiをたたくことができます。MakeSyncCallServletについてはこちら↓ http://shin1o.blogspot.com/2009/10/appengine-makesynccallservlet.html makesynccallは呼…

GetSchemaしてみる

ProtocolMessage request = new GetSchemaRequest(); byte responseBytes[] = ApiProxy.makeSyncCall("datastore_v3", "GetSchema", request.toByteArray());Schema schema = new Schema(); schema.mergeFrom(responseBytes); ローカルではこれでとれたschem…