サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
blog.liris.org
僕が一番最近Javaのリフレクションのパフォーマンスを計測したのは、今のアリエルの開発を始めたぐらいで、ライブラリの選定をしている時でした。jdkのバージョンも覚えていません。それより前はいつやったのか覚えていません。 その時の結果の詳細は残っていませんが、リフレクションは通常のアクセスより10倍以上遅い、って印象だけが残っています。印象でものを語るのは良くないし、バージョンが上がるに連れて改善されているのかもしれないので、もう一度計測してみました。 以前は自分でコードを書いていたのですが、今回はサボって http://www.ibm.com/developerworks/jp/java/library/j-dyn0603/ にあるコードで試します。このページには1.4での計測結果ものっていて、いいかも。 ちなみに、今回はLinux上のSunのJDKでコンパイル・ビルド・実行しています。そ
「HTML5モバイルアプリケーションフレームワーク Sencha Touchパーフェクトガイド」(タイトル長!)が今日から発売ですね。今の時点ではまだ、Amazonのページに表紙の画像がありません。悲しいですね。(<= 表紙表示されるようになりました。いいですね)本の中身の紹介は他の人がやってくれているので、「はじめに」のところの正誤をこっそりと…。 「はじめに」は川野さんが書いていますが、記憶は美化されるものです。そして、彼の書いた「Sencha Touchとの出会い」はウソです。これが「本当のSencha Touchとの出会い」です。 まず、自社製品でSencha Touchの採用を決めた背景ですが、当時はモバイルWebアプリを開発するときのフレームワークは、実質、jQuery MobileとjQTouchの後継のSencha Touchしかありませんでした。自分たちでフレームワークを
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など なぜか参加してしまっていた子育てエンジニア advent calendar 2012のエントリです。 とりあえず、スペックとしては長男(中1)、次男(小3)、長女(5歳)とネコ二匹です。アリエルという会社で働いていて、昔からいるのでそこそこ偉そうです。 ここ一年ぐらいと、それ以前では割と子供と接する時間が変わっています。1年以上前は、他の人に比べると帰る時間は早いのかも知れませんが、家に着くと9時とか10時です。普通の子供は寝ていたり、寝かしつけようと努力している時間ですね。そんな時間に帰ってもまともに子供と何かをする時間なんてとれません。まわりの知人達を見ていてもそれが普通だと思っていました。ちなみに、昔からかなり子育てはしている方です
僕の働いている会社はハイテクとローテクが渾然一体となった訳のわからない会社です。開発プロセスでもリポジトリにコミットする前にコードレビューをしたりします。すべてのチケットでコードレビューしているわけじゃなくって、チケットや人に応じてレビューしています。コミット前のプレレビューの方法ですが、隣の人などチームの他のメンバーに「おいおい、ちょっと暇? 暇じゃなくてもコミットしたいのでレビューしてくれませんか? 答えは聞いてないけどね。」と言って強引にその場でレビューしています。 これでもコードレビュー自体はプロセスの一部となって機能しているのですが、僕にとっての不満は、現場でどういうレビューが行われているか、後からチェックできないことです。コミットの内容を見ていてレビューが十分でないと感じても、それを新たなチケットにしたりチケットをオープンしただけ(かなり後になってのレビュー)ではレビューの質が
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 会社のid:kawanoshinobu に「おおたにさん、まだ、Emacsなんか使っているんですか?(遠い目)。ナウでヤングな若者はSublime Text 2を使ってますよ(プッ)」と罵倒されました。と言うことで、Sublime Text 2を入れたメモです。環境はMacです。 1. 何はともあれ、インストール と言うことで、ダウンロードサイト(http://www.sublimetext.com/2)からインストールします。でも、このURL、悲しいですね。 2. パッケージマネージャのインストール 起動して最初にすべきことは、パッケージマネージャSublime Package Controlのインストールらしいです。Sublime
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 前回の「Linux/ApacheでNTLM認証」の続きです。前回はLinuxの話でしたが、今回はWindowsとApacheでのNTLM認証です。WindowsならIISが楽ですが、人間、楽ばかりしていてはいけません。 まず、Apacheを動かすWindowsサーバをADのドメインに参加させます。僕は、ドメインに参加済みのマシンをもらったので、どうやって参加させるか知りません。きっとWindowsなので簡単なんだと信じています。 モジュールのインストール Linuxではmod_auth_ntlm_winbindを使いましたが、Windowsではmod_auth_sspiを使います。これ、Apache2.2用のモジュールでそれ以外のバージョ
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など NTLM認証っていうのはWindowsのドメイン認証情報をつかっていろんなシステムにシングルサインオンする仕組みです。設定によってはWindowsにログインすれば、社内のシステムに個別にログインせずにアクセスできるっていうシロモノですね。ブラウザはIEしか対応していないって思っていたのですが、FirefoxやChromeでも動きました。今回はクライアントはブラウザからアクセスして、Webアプリケーションにシングルサインオンするまでのお話です。 このNTLM認証ですが、WebサーバがWindowsで動いていればIISでやるのが楽です。でも、ここは茨の道なのでWebサーバはApacheで、OSはLinuxです。というかUbuntuです。Win
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など @t2y に「You've been writing only about cat, recently. I feel you are over.」っていわれちゃいました。そんなことではいけないと思い、それから最新のwebsocketに対応してくれ、ってリクエストが来ているwebscoketのpython clientもバージョンアップすべく、RFCになったほうを読んでいます。大きな処理の流れは、昔のwebsocketと大きくは違わないので割愛します。 まず、サーバに接続してリクエストを投げます。クライアントからのリクエストはこんな感じです。今回はecho.websocket.orgに対してリクエストを投げています。 GET / HTTP
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など pypy advent calendarのエントリです。ごめんなさい。ネコを飼うのでそのことに関心が向いて、pypyのこと、すっかり忘れていました。なので、いつにも増して、とってもうすーいエントリをだらだらと書きます。pypy闇の軍団長兼会長様、許してください。 まずは、昔のフィボナッチ数列の計算するコードを持ち出します。 import time def fibonacci(n): value = 0 f1 = 1 f2 = -1 for i in range(n+1): value = f1 + f2 f2 = f1 f1 = value return value if __name__ == "__main__": for x in
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など こんな経緯でPython Advent Calendarに参加させられてしまいました。まずは、言い訳から。僕がPython3を触ったことがあるのは2,3年前で、それも数日だけです。それ以降全く触っていません。はい。Python3初心者です。笑いたければ笑ってください。そんな僕がPython3で何を書こうか、と言うことで、あのみんなが大好きなJavaからぱくったと名高いconcurrentパッケージについて書きます。 まず、まっとうなPythonプログラマならあのレガシーなJavaぐらい分かるよね。Javaが分かるんだったらJavaのjava.util.concurrentパッケージぐらいは知っていて、concurrentて常識だよね、と言
dev (147) diary (105) python (94) 生活 (67) 製品/プロダクト (53) ランチ (48) 学び (41) mac (27) golang (15) linux (14) iphone (13) misc (12) おやつ (11) イベント (11) 仕事術 (11) 分散 (10) スキル (8) html (7) キャリア (7) ワークスタイル (6) 技術動向 (6) 趣味 (6) java (4) websocket (4) アーキテクチャ (4) 就職/転職 (4) グルメ (3) apache (2) js (2) solr (2) ショッピング (2) 料理 (2) IT (1) apple (1) kindle (1) lucene (1) oracle (1) rdbms (1) windows (1) ► 2014 (15) ►
前回からの続きになります。今回はexampleディレクトリのsolr/conf/schema.xmlを見ていきます。schema.xmlについてのマニュアルはこれ。 schema.xmlは名前の通りインデックスファイルのスキーマを定義しています。これは、schema要素の直下にtypes要素とfields要素があります。types要素は、フィールドが取りうる型fieldTypeで定義します。一番最初の要素を見るのが分かりやすいと思います。 <fieldtype class="solr.StrField" name="string" omitnorms="true" sortmissinglast="true"> ここでは、stringと言う型を定義しています。それに対応するclassがsolr.StrFieldになっています。classの値はjavaのクラスファイルです。solrはsolr
pypy1.7がリリースされました。かなり速くなったって噂があります。と言うことで、もう一度試してみました。今回も前回と同じフィボナッチ数列の計算の計算によるベンチマークです。前回の結果はこれです。前回はiMacで計測していますが、今回はMacBook Airです。なので、絶対値の比較は無いです。 ベンチマークで使ったコードは下のモノです。 Python 再帰版 Java 再帰版 Python ループ版 Java ループ版
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 最近、Solrで遊んでいます。Solrと言うのは、Luceneをベースに全文検索機能や分散処理、フェイルオーバーとなどの機能を提供してくれるはずです。Luceneで検索システムを作り込んでいくと、ある規模に達するとSolrが提供してくれているような機能が必要になってきます。それらを自分たちで作り込んでもいいのですが、それは単にSolrの再発明に他なりません。と言うことで、Solrの検討に入りました。 何はともあれ、第一印象としては、「わかんね〜」。Solrのトップページはそれなりすごいことを書いていますが、体系立てたドキュメントがありません。すべてを網羅されているようにも見えません。日本語のドキュメントがないのは別にどうでもいいのですが、
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など Ubuntu 11.04にOracle XE 11gに入れて、Ubuntuを11.10にバージョンアップすると、Oracleは動かなくなります。このフォーラムによると、バイナリエディタでバイナリを書き換えれば大丈夫だよ、って恐ろしいことを書いています。ありえないです。なので、会社の@buzztaikiの指導のもと、動くようにしました。 症状 まず、11.10にアップグレードした状態でsqlplusで接続すると ERROR: ORA-12514: TNS: リスナーは接続記述子でリクエストされたサービスを現在認識していません ユーザー名を入力してください: と表示されます。oracleユーザになって、sqlplus / as sysdbaと
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など とりあえず、何も書かずにどんどん過ぎたってしまうので、Pythonでファイルをアップロードするコード。日本語のファイル名もそこそこちゃんと扱ってくれるはず。 #! /usr/bin/env python import mimetypes import os.path import random import sys import urllib import urllib2 OS_FILESYSTEM_ENCODING = sys.getfilesystemencoding() FORMENCODE_HEADERS = { "Content-Type": "application/x-www-form-urlencoded; charset
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など Oracleは大好きです。ウソです。でもOracle 11g XEをubuntuにインストールしたです。ここには、くどくどと説明があります。カーネルのパラメータとかを調整したりしています。そんなにがんばらなくてもいいので、とりあえず動くようにします。 まずは、依存関係があるものとrpmをいじくるためのパッケージをインストール。 sudo apt-get install alien libaio1 unixodbc 次にoracle-xe-11.2.0-1.0.x86_64.rpm.zipをダウンロードしてきて、展開します。次のコマンドでrpmからdebパッケージに変換します。変換には若干の時間がかかります。 sudo alien --to
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 以前、どこかで書いたかもしれませんが、会社の製品では、WebアプリケーションのJavaScriptのライブラリはGoogle Closureを使っています。もっと前はprototypes.js + なんかというとても素敵な感じでした。それが、一年ほど前にGoogle Closureを使うように変更されました。会社のもう一つのものは、Extを使っています。これは豆知識です。Google Closureを選択するときに検討したモノがjQueryです。ExtはIE6とかあり得ないブラウザでのパフォーマンスなどの問題で選考から落ちました。 JavaScriptのライブラリに求めていることの一つがUI系のウィジェットの充実です。jQuery UIも
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 最初にセットアップしてから、実は最近はあんまり、Homebrewのパッケージのアップデートかはしてません。めんどいので。でも、油断をしてアップデートしたらPythonのバージョンが上がってしまいました。まあ、それはいいのですが、そしたらvirtualenvとか使えなくなってしまいました。ちょっと悲しいです。brew install pipってしてもpipをインストールできません。easy_installを使ってインストールしろって、冷たく突き放されます。easy_installはPythonと一緒にインストールされたらしいので、 ln -sf /usr/local/share/python/easy_install /usr/local/
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 会社のプロダクトではRabbitMQを使い始めています。製品自体はJavaで作られているので、当然、RabbitMQへのアクセスはJavaのライブラリを使っています。幸い、本家でもJavaのライブラリは開発しているようで、ありがたく使わせてていただいています。でも、でもです。最初に製品にRabbitMQを組み込んだのは「いわがが」こと、id:kirisです。彼はまじめそうなそぶりを見せながら・・・。これ以上書くと怒られるので自重します。そして、このJavaのライブラリについてdisりまくります。挙げ句の果てに、「もう、こんなライブラリ、使っていられません!スクラッチから書き直します。nioで非同期処理して、結果はconcurrentのfu
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 「CentOS 5.4にmemcachedとRabbitMQがインストールできません」って泣きつかれたので、数年ぶりにRedHat系のLinuxを触りました。で、CentOS 5.4にmemcachedとうさぎ年なのでRabbitMQをインストールするまでのメモです。 CentOS 5.4はServerとしてインストールしました。理由はGUIはいらんから、というだけです。以下、めんどいのですべてrootでの作業です。 インストール後、何はともあれ、「yum update」します。次にRPMForgeのパッケージを入れられるようにします。 curl -O http://apt.sw.be/redhat/el5/en/x86_64/rpmfo
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 最近はgeventを使ってコードを書いています。当然Webサーバもgeventをそのまま使っていました。今回もそれでもよかったのですが、久しぶりにフロントエンドにApacheをつかって、mod_wsgiを使ってPythonのアプリを動かしました。まあ、規模は極めて小さいですが・・・。ちなみに、今回って言うのは、この廃人養成サービス「Twwweet」のことです。で、mod_wsgiをセットアップしたときのメモです。サーバはubuntuのサポートが長いやつの最新です。 まずは、何はともあれmod_wsgiをインストールせねばなりません。いつもの「apt-get install libapache2-mod-wsgi」の召喚呪文を唱えます。召喚
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など GAE for Goがでたので、試してみました。Golangはとっても好きな言語ではあるんですが、まだ、それでちゃんとしたモノを作る、っていう気にはなれませんでした。僕はわりと言語には保守的なんです。でもGAE for Goがでたので、この用途にはちょうどいいかな?と。Google App Engineの日本語のサイトではGoの情報はまだ、でていません。SDKのリンクすら見当たりません。なので、英語のサイトをみます。 まずは、DownloadのページからGoogle App Engine SDK for GoをCPU/OSにあったものをダウンロードします。僕はMacの64bitです。GolangのWindowsの対応状況はしらないし、興味
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など Google App EngineでもDjango使っている人が多そうな気がしますが、僕はDjangoはよく分かりません。Djangoの本は買ったりしましたが1ページも読んでません。Pythonでは普段は大体Flaskを使っています。これぐらいの規模のフレームワークが僕にはしっくり来ます。それで、GAEでFlaskを使って開発しようとしたときのメモです。 はやりはbuildbotを使って環境を構築するらしいので、それにならいます。「Flask on Google App Engine(buildbot編)」を参考に、というか、そのまんま作業します。コマンドプロンプトで作業プロンプトでプロジェクトのディレクトリに移動して次のコマンドを実行し
ubuntu 11.04がリリースされて、unityがデフォルトになっています。unityはOpenGLで3Dが有効になっていないと使えません。最近のPCであれば気にする必要はないですが、VMWareなどの仮想マシン上で使う場合は、3Dが使えません。つまり、unityが使えません。あれ?VirtualBoxもParallelsも3Dは使えるので、ひょっとしてVMWareだけ?些細なことは気にしません。さて、それで、unity-2dをインストールして使います。でも、unityでもカスタマイズは結構やっかいでCompizの設定をcompizconfig-settings-managerをインストールして、難解な設定を行わないといけません。それでも、できる設定は限られています。unity-2dはCompizの設定からは設定できません。unity-2dを設定するには、gconf-editorを起動
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など MongoDBにはMap Reduceを簡単に使う機能があります。それ以外にコレクション(テーブル)にgroupというメソッドが定義されていて、RDBMSのgroup by相当のことができるとマニュアルには書かれています。ただ、次のような怖い注意書きがあります。 注意: 現在のところ、shardの環境では、group()の代わりにmap/reduceを必ず使ってください。結果はなるべく小さくしてください(10,000キー以内)。大きすぎる場合例外が発生します。Shard環境では問答無用にMap Reduceを使うしかなさそうです。結果はなるべく小さくしろと言うことですが、10000キーあればそこそこ大きいような気がします。最初の制限の「現
生まれ変わった「Days of Liris」。プログラミングのこと、Pythonのこと、気になったソフトウェアのこと、身の回りのこと、いろんなこと。など 会社のUbuntuも11.04にアップグレードされていしまいましたしました。仮想マシン上の家のUbuntuとは違い、直接インストールしています。インストールは2時間ぐらいで終わったと思いますが、もっと時間がかかっているかもしれません。unityは賛否両論があるみたいですが、僕は頑張って使い続けます。と言うか、あんまりこだわりがないだけですが・・・。さて、今まではUbuntuのIMEは何も考えずにAnthyを使っていました。でも、ちょっとオバカさんなのでGoogleのMozcをインストールしました。 ビルドしたものはおこっちていないようなので、このページを見ながら自分でビルドしました。このページには、Ubuntuの9.10と10.04でしか
次のページ
このページを最初にブックマークしてみませんか?
『Emerge Technology』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く