サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
blog.livedoor.jp/chuhei1107
10月23 Javaでスレッドセーフなstatic変数の初期化まとめ 仕事でマルチスレッド周りを面倒見る機会に出くわしたので、これを機にスレッドについて勉強してみた。特に共有変数の初期化方法って定石となるような方法があったので、実際に試してみながらコードと一緒に晒してみるよ。 例題:static変数の初期化例題としてはstatic変数の初期化を取り上げるよ。static変数は同一クラスの間で共有する変数のことで、初期化方法を誤るとマルチスレッドアクセスされたときに動作がおかしくなることがある。 ここでは、合計で6つの初期化方法を取り上げてみるよ。 初期化のパターンは以下の通り。 pattern 1:遅延初期化(スレッドセーフでない) pattern 2:static privateなメソッドでの初期化 pattern 3:static initializerによる初期化 pattern 4
12月9 PythonのマイクロフレームワークのFlaskがよい感じ カテゴリ:My PythonMy Programming Mashup Award6で小飼弾さんの 404 API Not Found賞を授賞しました - iDeaList::Writingをいいなーと思いながら読んで、Pythonフレームワークで「Flask」というのがあるのを知りました。 「A Python Microframework」とある通り、小さなフレームワークです。公式サイト見れば一目瞭然ですが、直感的にやりたいことがすぐに書けるところがいいです。 PythonフレームワークだとDjangoが有名ですが、Djangoは元がニュースサイト用のフレームワークとして作られていることもあって大規模向けです。フルスタックなのはおいしいのだけど、気軽に何か作ろうとしたときには初めの一歩がなかなか踏み出せなくてイライラし
3月10 python-daemonでオレオレデーモンを動かす カテゴリ:My PythonMy Programming Python使うと自前Daemonが簡単に作れてしまう件。 まずはpython-daemonをeasy-installする。 easy_install python-daemon import daemon from mymodule import daemon_process from __future__ import with_statement # Python 2.5の場合 dc = daemon.DaemonContext() with dc: daemon_process() # ここの呼び出し処理がデーモンになる 超絶簡単ですね! ちなみに、デーモンとは「親プロセスを持たないプロセス」のこと。 デーモン (ソフトウェア) 今作ってるサービスでTwitte
4月2 Google謹製Pythonモックモジュール「pymox」 カテゴリ:My PythonMy Programming PyParkでは、Webサービス作ってて初めてテストコードを書きました。 で、「テストといえばモックが必要だ」ということでPythonで使えるモックモジュールを探しました。 結果的に2〜3個見つけたんですが、Google先生お手製の「pymox」というモジュールに決めました。 決めては、 信頼のGoogle製 EasyMockライクな構文 てなところです。 2点目のEasyMockライクな構文ってところは、今の開発案件でEasyMock使っているので馴染み易いと思ったんです。 以下公式ページのドキュメントを超訳してみました。 大まかな流れ モックを作る(記録モード) 期待値を設定する モックを再現モードにする テストを実行する モックが期待通りに動いたか検証する ス
10月26 並列テストツールのConTestを試してみた カテゴリ:My JavaMy Programming 前回のエントリの予告どおり、並列処理のテストツールConTestやります。 Javaでスレッドセーフなstatic変数の初期化まとめ : Everyday FunkiEE!!本当はこのエントリでConTestまで紹介する予定だったけど、1エントリで書くにはボリュームがあるので次回にまわそうと思います。 題材は前回のエントリと同じで、static変数の初期化です。 ConTestのインストールまずはインストールから。 ⇒alphaWorks : ConcurrentTesting - Advanced Testing for Multi-Threaded Applications : Overviewからzipファイルをダウンロードしてください。 解凍した中身のConTest.ja
2月19 PythonでTwitterのUser Streamに繋ぐ with tweepy 1.7.1 カテゴリ:My PythonMy Programming PythonでTwitterのUser Streamに繋ぐ方法をメモ。 tweepyはUser Streamに対応してなかったので、既存のStreaming APIをUser Stream用に拡張してみた。 以下、ソースコード。 #! /usr/bin/env python # -*- coding: utf-8 -*- from tweepy import OAuthHandler, Stream, StreamListener, TweepError, API import logging def get_oauth(): """ ツイッターOAuth情報の取得 """ consumer_key = '適宜埋める' cons
5月30 需要のなさそうなスクレイパーつくった カテゴリ:My PythonMy Programming 川崎市の「ふれあいネット」という公共施設の利用予約サイトがあるんですが、どうにもこうにも使いづらいので思い立ってスクレイピングしてみました。 pythonのmechanize + BeautifulSoupでこんな感じ。 #!/usr/bin/env python # -*- coding=utf-8 -*- import mechanize import re from BeautifulSoup import BeautifulSoup import sys def main(): browser = mechanize.Browser() browser.addheaders = [('User-agent', 'Mozilla/5.0 (Macintosh; Intel Mac
6月11 CGIHTTPServerでハマッた カテゴリ:My PythonMy Programming Pythonには簡易CGIサーバーがデフォルトで付属してるんだけど、今日はコレで小一時間くらいハマッた。 折角だからメモメモ。 まずは、HTMLファイルね。パラメータ受け取るための、別にどうってことないフォームを持ってる。 index.html <html><body> <form action="/cgi-bin/test.py" method="GET"> <input type="text" name="param" /> <input type="submit"/> </form> </body></html> フォームの内容を処理するPythonスクリプト。 /cgi-bin/test.py #!/usr/bin/env python import cgi form = cg
10月16 Google App Engine Oilでヌルヌルしてみた カテゴリ:My PythonMy Programming 最近は更新ペースが落ちてますが、すき間時間を見つけてはちょぼちょぼやってます。 てことで、GAEでまた何か作りたいなーと思って、どうせならGAE向けフレームワークでも試してみようということでGoogle App Engine Oilに手を出しました。 ファーストインプレッションホントは日本製フレームワークのKay-frameworkをやろうと思ったんですが、 ・コマンドラインベースでIDE(eclipseとの相性が悪い) ・Pythonにしては重量級 ・クイックスタートでコけた。。。 などの理由から断念しました。 そんなKay-frameworkに比べると、薄いラッパーフレームワークで好感触です。ちょっとRouterにとまどったけど、慣れれば楽に開発できそう。
12月5 UbuntuでHudsonをパッケージ管理する カテゴリ:My ComputerMy Java ちらっとHudsonのページを見に行ったら、UNIX系OS向けにパッケージ管理できるようになってました。 試しにVMWare上のUbuntuに入れてみました。 以下メモメモ。 まずはコンソールでwget -O - http://hudson-ci.org/debian/hudson-ci.org.key | sudo apt-key add - --10:53:37-- http://hudson-ci.org/debian/hudson-ci.org.key => `-' hudson-ci.org をDNSに問いあわせています... 192.18.49.133 hudson-ci.org|192.18.49.133|:80 に接続しています... 接続しました。 HTTP による接
8月28 Google App Engine でOpenIDログインでけた カテゴリ:My Google App EngineMy Programming 地道に続けてますGoogle App Engineネタなんですが、昨日は大きく前進できました。というのも、アプリの利用時にmixiのOpenIDでログインできるようになったからです(まだアカウント情報をCookieにつめたりはできてないんだけど。。。)。 OpenID対応の経緯そもそも、Google App EngineはデフォルトでGoogleアカウントを簡単に利用できるようになっていまして、それにも関わらずわざわざOpenIDに対応したのは理由があったわけです。 その理由というのがコチラ ・Googleアカウントって持ってる人少ない?(勝手な推測でしかないけど) ・友達でもmixiやってる人は多いので誘いやすい ・一つ対応できれば他
10月23 Google App Engineアプリケーションの削除の方法 カテゴリ:My Google App EngineMy WWW (World Wide Web) いつの間にかGoogle App Engine上のアプリが削除できるようになってますね! 恐らく心待ちにしていたデベロッパは多いと思います。 Administration Console Questions - Google App Engine - Google CodeHow can I delete my app? You can delete your app, but App Engine provides safety measures to prevent inadvertent deletion. そこで、今日は早速アプリの削除の仕方を紹介しちゃいます。 削除の手順まずは削除対象のアプリケーションの管理
8月11 Google App Engineのデータストアで親子関係を使う カテゴリ:My Google App EngineMy Python Google App EngineではGoogleのデータベース「Big Table」がつかわれてるわけなんですが、「RDBと違う」という記述はひたすらに目にしても、どう違うのかが具体的に見えてこなかった。 今日いろいろそのあたりが見えてきたので、分かった範囲でメモメモ。 エンティティ間の親子関係これは、Modelのインスタンスに対してparentというプロパティに親エンティティを設定してやればいい。 child = Child(param1 = hoge, parent = parent_obj) これで、putしてやると、DBから取得する際に以下のように親を指定してエンティティを取得することができる。 q = Child.gql("WHERE
6月7 Google App Engineについて、あなたが(たぶん)知らない10の事 カテゴリ:My Google App EngineMy Programming 久しぶりに、GAEネタで。 Google App Engine Teamのブログでこんなエントリが。 Google App Engine Blog: 10 things you (probably) didn't know about App Engine ということで、ネタに困ったときの翻訳ネタということで超訳してみる。 (実際に全て試してないので、誤訳・誤解があるかもなので勘弁ね) 全訳は無理なので、コメント程度に補足をかいておくー。 Google App Engineについて、あなたが(たぶん)知らない10の事Google App Engine Blog: 10 things you (probably) didn't
5月23 Evernoteで本のウィッシュリスト管理してみる カテゴリ:My iPod touchMy Book つい1ヶ月ほど前から何気に「Evernote」を使い始めてるんだけど、昨日「本のウィッシュリストをEvernoteで管理したら便利じゃね?」と思いついたので書いてみる。 まずはEvernoteねEvernoteは、Webだろうが画像だろうがテキストだろうが、何でもかんでもメモることができて、さらにはそのメモした内容とデスクトップとかiPhoneなんかでも同期させることができるというもの。 本のウィッシュリストってみんなどうやって管理してんのかな僕は割りと本を読むほうで、社会人になってから下手にお金があるのもあってバカバカ買ってたりする。 で社会人になってからは、買いたいと思った本を忘れないようにメモするようになった。初めは、iPod touchのデフォルトのメモ帳にメモしてて、
4月11 Google App Engine で cron やってみた(開発環境) カテゴリ:My Google App EngineMy Programming 昨日のエントリに引き続き、早速Google App Engine(開発環境)でcronを試してみた。 先に参考URLを。 Scheduled Tasks With Cron for Python - Google App Engine - Google Code CronサポートはSDK1.2.0から、らしいのでSDKを先にダウンロードしたほうがよいかも。 1.cron.yamlを作るapp.yamlと同階層に「cron.yaml」という名前でファイルを作ろう。これにcronの設定を記述することになる。ちなみに、GAEのcronは、設定したスケジュールで指定のURLにリクエストを送信するというもの。だから、cron設定ファイル以
3月27 livedoor-blogでSyntaxHighlighterを使う方法 カテゴリ:My ProgrammingMy WWW (World Wide Web) プログラムのソースコードを綺麗に表示したいという願望はHTML+CSSでは限界がある。 ということで巷で噂?のSyntaxHighlighterをlivedoor-blogで使う方法をメモメモ。 何はともあれ結果から Python print "SyntaxHighlighterのテスト" Java public class SyntaxHighlighterSample { public static void main(String[] args) { System.out.println("SyntaxHighlighterのテスト"); } } 続いて設定手順 ?SyntaxHighlighterをダウンロード&解
3月21 Djangoの開発サーバーを外部公開できた カテゴリ:My PythonMy Programming VMWarePlayerで立てたUbuntu上でDjango動かしてみてるんだけど、ホストOSのWindows XPからアクセスできんなー。 普通にDjangoの開発サーバー起動するとこんな感じ。 ここで、よくよく見ると。 running at http://127.0.0.1:8000/とな。 おお、よく見りゃこれループバックアドレスじゃない。 どうりで外部からはアクセスできんわけだわ。 んで、「Django 開発サーバー」でググるとスグ出たwww Djangoの開発サーバー外部公開開発サーバー起動方法を以下に変える。 $ python manage.py runserver 192.168.0.4:8000 赤字部分が「サーバIP:起動ポート」とすればOK。 で、ホストのWi
このページを最初にブックマークしてみませんか?
『blog.livedoor.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く