愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

More Transactional Redis (2) - Lua Scripting in Action

前回の記事: More Transactional Redis (1) - Redis is not a transactional storage - 愛と勇気と缶ビールLua Scriptingでatomicな処理を実現できるぜい!ってとこで前回の記事は終わっていました。今回は、Lua Scriptingを試す際に踏むとよいであろうstep…

More Transactional Redis (1) - Redis is not a transactional storage

オッス!オラ孫悟空!みんな元気にしてっか?突然だけど、オラ、Redisに保存してるデータに以下のような操作をしてみたくなっちまったんだ!これ擬似コードな! 1: score = ZSCORE {key} {member} 2: if ( ! score ) { 3: score = defaultScore 4: } 5: ZADD…

一体いつからRedisがSorted Setの実装にSkip Listしか使ってないと錯覚していた?

デフォルトの設定 (zset-max-ziplist-entries, zset-max-ziplist-value) では 該当するSorted Setのエントリ数が128個以下 該当するSorted Setに含まれるmember (not score) のデータ長が全て64byte以下 という2つの条件が成立している場合、Sorted Setの表…

High Performance Browser Networking

一部(?)に需要があったようなので、再掲。実はまだ全部読んでおらず、物理層やトランスポート層の話を脱してアプリケーション層というかHTTPに来た所。僕が主に興味を惹かれたのはTCP周りの話なので、その辺だけまとめる。読んだ本の要約?というのは、ヘ…

The Google Graveyard

訳するなら「Google墓地」?いや、これくらいだったら訳することに何の意味もないのだけど。http://www.wordstream.com/articles/retired-google-projectsこれをもって「Googleはいつサービスを終了するか分からんから、信用できない。やつらのサービスを使…

3-way handshakeから始まる恋もある

http://shop.oreilly.com/product/0636920028048.do例によってoreilly.comがsaleをやっていたのでホイホイ買ってしまいました。説明だけ見ると「HTTP 2.0とかWebSocketとかWebRTCとか超ナウいっすね!モテモテっすね先輩!」って感じなのですが、今のところT…

なんとなくDBD::mysqlにpull-req送ったらなんとなく取り込まれていた

ちゃんと自分で動作検証してからblogを書こう、書こうと思っていたのですが、めんどくさくなったのでやらずに書いてしまいました。すいません。よい子はマネをしてはいけません。 ちなみに、会社の同僚が検証してくれておりますので、使用自体に問題はないは…

最近のiOS, AndroidのNative AppにおけるJavaScript連携に関して

iOS iOSについては、何となくWWDCのスライドを眺めていたら、「iOSとMac向けの新機能として、JavaScriptCore.frameworkっていうのを作ってObjective-CレイヤからJavaScriptを実行したり、その逆をやったりできる機能を提供するよ」という内容のがあった。WWD…

Rails雑感

最近、いわゆるRailsの古めのバージョンで書かれたプチレガシーな感じのアプリケーションを触っていて思ったこと。ちなみに、この話題は多くの人にとって大分今更感のある内容なので、逆にこれを読んで「今更だなぁ、そんなのとっくに結論出てるでしょ」と思…

Ruby始めました(冷やし中華はじめました)

始めました、というのは厳密にはウソ。なぜなら、大学の時に1.8.7だか1.8.5だかを触っていたので。研究のためのシミュレータをJavaで書くのがダルくなって、Rubyでの実装に逃げた、あの夏。あの夏はどうでもいいのだが、さあプログラミング言語をやりましょ…

人力classリゾルバーの怪

静的型付けの言語がいいか動的型付けの言語がいいか、みたいな議論は聞き飽きたし今更その変種を蒸し返す気はないのだけれど。例えば、合計して数百個以上のclassがあって、いわゆる継承とかも必要十分なレベルで使われているobject-orientedな設計がなされ…

homebrewで古いversionの何かを入れたくなったときの話

アプリケーションやらコマンドラインツールやらをマシンにぶっ込む時って、当たり前ですが一個一個手で入れるよりパッケージマネージャ的なもので一元管理されてると便利ですよね。僕は手元の環境としてはMacを使っているのですが、最近は いわゆるデスクト…

まあBlocksKitは黙って使っとけや、という話

iOS

Objective-Cにはdelegateという面妖な仕組みがあって、いや実は面妖でも何でもなくそれなりに由緒も由縁もある機能なのだが、結局「コールバック関数を必ず何らかのオブジェクトのメソッドとして実装しなければならない」というのは面倒なので、それをいわゆ…

アンサイクロペディア・ブラウザ2というアプリをScalaで作ってGoogle Playに出した

https://play.google.com/store/apps/details?id=com.nilsoft.Unreader2以前にも作っていた、アンサイクロペディア専用ブラウザ的なものです。しばらく前に家のマシンをArch Linux/半自作PC からOS X/Mac miniに移行した際にそれまで作っていたAndroidアプリ…

no title

未知の領域で開発を始める時には、環境を整えすぎてはいけない - 愛と勇気と缶ビール とかなんとか書いたけども、実際は「新しいことは(可能なら)一回に一つまで」の方が適切かもしれない、と思っている今日この頃。要は「新しい言語/環境を使って、今まで…

メールのURLをクリックしたくないです

なんかこう、メールアドレスを入力させて、メールに書いてあるリンクをクリックしてユーザ登録してね!みたいなサービスがあるじゃないですか。ああいうのを自動化したい時って、もちろんPOP3とかでメールを取りに行ってもいいんだけど、GmailならGoogle App…

拝啓 プログラマー35年定年説について

プログラマー35歳定年説なんてゲーム脳並みに信用できない言説なのは火を見るより明らかなので今更それを否定する気も起こらないのですが、一応。日本のITゼネコン構造とかエンジニアの待遇とか移り変わりの激しい業界だからとか諸説ございますが、僕が思う…

僕が◯◯言語でiOS/Android/Othersアプリが全部書けますよ系のソリューションを真面目にやる気になれないのは

結局そういうやつを使っても、元々のObjC/Javaで提供されているAPIとラッパーAPIの間のマッピングを頭の中に持たなくちゃいけないんじゃないの?って思うからですね。だったら初めから元々のAPIを使って書いた方が楽だろうと。これは、iOS/Android周りの勉強…

僕が最近短いブログエントリを量産しているのは

自分の考えたこととか、思いついたアイデアってうんこみたいなもんだと思うんですよね。これ「僕の思いつくことなんてうんこみたいなもんです、ハハ」という謙遜ではなくて、まじもんのうんこに近い意味です。うんこを出さないと体に悪いので、今年は考えた…

なんとかScriptがあと何個出てこようとあなたがブラウザ上でまともに動くコードを書けるようにならないワケ

JavaScriptよく分からないです><と言っている人はだいたい以下の要素のうち自分が何を理解していないのか分かっていないしそれら個別の要素についてちゃんと勉強する気もないのでJavaScriptにtranslateされる言語が今後いかに増えようともブラウザ上でまと…

「いつまで開発のやり方ばっかり語ってるの?」っていうスライドのタイトルがセンセーショナルな響きをもつこと自体が異常だという話

(省略されました)

XcodeのiOS appでprojectの直下にresourcesっていう名前のreference folderを作ると"The application does not have a valid signature"と言われて爆死する

iOS

http://www.two-tails.com/2010/01/12/the-application-does-not-have-a-valid-signature/どういうことだってばよ!

未知の領域で開発を始める時には、環境を整えすぎてはいけないとはいいつつも

iOS

iOSアプリでthird partyなライブラリを利用する際は、CocoaPods使わないと超絶めんどくさいので可能な限り早く使った方がいい。まる。まだ枯れてないのかなーと思ってたけど今のところ全然問題ない感じ。

未知の領域で開発を始める時には、環境を整えすぎてはいけない

未知の領域って何ぞいな、というとだいたい以下の二つ。 開発経験のないプラットフォーム。場合によっては触ったことのない言語を含む。(e.g. iOS, Android) 今まで触ったことのない言語を用いた開発。 世の中にはエディタ・IDEからCIまで沢山の開発を支援す…

最近の本の買い方

Amazonで買うのが基本だが、レビューだけを信頼して買うと思わぬ地雷を踏むことも多いのでやはりベストは「ネットで探して、書店で中身をざっと見て、よさげだったらAmazonで買う」というメソッドだと思う。 実店舗での立ち読みとは、全てのページが見られる…

MySQLでstatement-based replicationを使っている場合のtrigger, function, procedureの扱い

row-basedなreplicationの場合はreplicationの対象が文字通りrow=dataであるため特にtrigger, function, procedureの動作について懸念点はないと思われます。でも、MySQLで既に多くの人が使っているであろうstatement-basedなreplicationの場合はどうなるの…

2012年度 個人的iOS開発系・Android開発系のお勧め書籍まとめ

今年は、iOS開発/Android開発の両方について曲がりなりにも学んだ年だったので、他の人の参考のために僕が読んで有益だった書籍をまとめます。厳選しているので数は少ないです。 全体として、ある程度のプログラミング経験がある人向けです。各プラットフォ…

Kindle Paperwhiteで電子書籍デビューした

文字通りで、特に他のガジェットとの比較とかは無いです。Kindleと名の付くものを買ったのはこれが初めて。日本語のオライリー本を買うのはやめた - 愛と勇気と缶ビールというちょっと調子乗った感じのエントリーで触れたように、僕は邪悪なOreilly社のセー…

以前から

技術系ネタをメインにしたblogに技術に関係ないこと書いてもいいのかなー、とかあまり深い理由なく悩んでいたのだけど、特定のジャンルの記事を求める人はそれ以外の記事をRSSリーダとかの段階でスルーすればいいだけの話なので、そしてインターネットは基本…

Linux KernelのLinked Listの実装が面白い件

最近、Robert Love先生の本を暇な時にダラーと読んでいたりするわけですが、それの中にLinux Kernel内部で使われているLinked Listの実装が書いてあって面白かったので共有。まず、Linked Listの一個一個のエントリを表すstructを定義します。 struct list_h…