サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
a2c.hatenablog.com
アイデアソンといえば、ホワイトボードとスケッチブックそしてポストイットが定番ですね。 誰か一人が書記をしたてホワイトボードに書きなぐったり、各自手分けしてポストイットを作成しまくったり そんな作業(Map)をして、ネタを決めたらあぁでもないこぉでもないと言いながらまとめ(Reduce)あげて そこから、全体像をまとめて行ったりするわけです。たいていのアイデアソンの場合な話。 MA6のアイデアソンに参加されているとあるチームが、Cacooを使ったモックというかワイヤーフレームを ペコッと成果物として発表していました。既にもう監視しているかのような出来栄え。さらに Map作業もReduce作業も、参加者が同時多発(Wave)的に作業できるわけだから、分業でスケールアウト した後にまとめ役が一人頑張る必要もなく、みんなでよってたかって見た目よくブラッシュアップ出来るわけです。 (全然アイデアソン
約1年前に「大きなMVCと小さなMVC」というエントリーを書いた > http://d.hatena.ne.jp/a2c/20091015 あれから1年の間にブラウザ<>サバ間でのMVCの分離はあまり進展してない気がしている。そろそろ始まりそうな予感がするのでエントリーしてみる。 xhrが99年に実装され各ブラウザに広がりそして一般のサービスに展開されるようになったのは、解釈によるが5-6年かかってるかと思う。今となっては、Ajax使ってないメジャーなサービスの方が少ないくらい当たり前の状況なのは誰も異論はないと思う。ブラウザに実装された機能を使ったサービスが一般化されるのに数年のDelayがある。そして、そのDelayは着実に短くなっている。そんな次にブレークしそうなのがより発展したMVCの分離じゃないかと思っている。 Chrome限定の話になってしまうが、ChromeWebAppsとい
毎回使い方を忘れるのでメモ vimrc " Leader キーを設定 let mapleader = "\\" " changelogの記入設定 let g:changelog_timeformat = "%Y-%m-%d (%a)" nnoremap <Leader><Leader><Leader> :new ~/changelog<cr> 使い方 changelogファイル以外を開いている時にchangelogファイルを開くには "\\\" changeLogに新規エントリーを追加するには "\\o" 差し込みフォーマット .vim/ftplugin/changelog.vim " Format used for new date entries. if !exists('g:changelog_new_date_format') let g:changelog_new_date_fo
GAEにどんどん機能が追加されていく中、なかなか実装されないのが全文検索。品詞がとれるセグメンターだけでも提供してくれたら全然便利だと思うんだけどそんなアナウンスはまだ有りません。 なきゃ作ればいいじゃんという事で、全文検索もどきを実装してみました。ひとつ前のエントリー通りTriGramです。 以前、恵比寿のイケメン イアンさんと一緒に作ったmisopotetoというモジュールをベースにしています。 今回のポイントは、転置インデックスをredisサーバに送っているところ、GAE(とうかDB全般)は、インサートがめちゃくちゃ遅いので、Ngramでgram毎にエントリーIDをappendしていくというのは辛いです。Twitterの検索結果15個x100文字位をTriGramでインデックスを作ろうとすると、1500個くらいをgetしてappendして、putする必要があります。以前は、TaskQ
1日で作ったのでエラーありまくりですが、一通り動いているのでURL公開 http://a2c-fts.appspot.com ngram(TriGram)でプチプチ切って、エントリーのKeyNameを転置IndexのListにAppendしてます。 元ネタは、search.twitter.comから httpが含まれる日本語の検索結果を10分置きにJSONで取りに行ってます。 さすがに、15ツイート分をNgramでぶつ切りにしたものは(1000個以上あるので)、30秒以内に保存出来ないので TaskQueueで徐々にいれていますが、秒間5個までしか動かないので、10分以内でも保存出来てなかったりします。 Ver.1は、フルGAEでやろうとしていたのですが、さすがにTaskQueueが溢れそうになったので現在のバージョン2では redisを使って、転置インデックスを保存しています。 redi
GDD2010に参加しました。GASで動かないところがあったんだけど、パメラ先生が来日されていたのでオフィスアワー時に質問したら速攻解決しました。 Docsのスプレッドシートから任意の範囲をSitesのページに追加します、挙動としては ・ページが存在しない場合は新規ページを作成する ・ページが存在する場合は、既存の内容にスプレッドシートの内容を追加する この様な挙動をするためには、DocsとSitesの固有の場所を指定してあげる必要があります。 docsのスプレッドシートを取得する スクリプト自体は、スプレッドシートに内蔵されているので自分自身のIDを調べます そのIDを元に、SpreadsheetAppクラスからシートを取得し、タブ名を指定することで特定シートのデータが取得できます。 function getSheetID(){ // シートのユニークIDの取得 var doc = Sp
FreeNasはとても素晴らしいNAS OSで、USBメモリーから起動してDISKのすべてをストレージ容量と使えたり、smb、AFP、NFSも使える、さらにzfsで将来にわたっての拡張性も抜群。だけど、FreeNasを諦めてQNAPに乗り換えた。 理由は、大きめのファイル(50GB>)をそこそこ(200ファイル)コピーしていると結構な確立でOSがフリーズする。pingも飛ばない状態になってしまう。メモリー8GBで、4コアCPUつんで、SSDでLOGキャシュ入れてて、intelのNICさしてとてもNASとしては贅沢な環境にしていたのに安定性に問題があったと思う。さらに、前日にBIOSすらBootすらしない状況になってしまい全く手の施しようがなかった。ハードウェアに対する信頼が無くなったということなので、FreeNASが悪いわけではない。解決策としては、高信頼なHWに交換するという方法を選んだ
"プラットフォーム” をウィキペディアで調べてみると プラットフォーム(Platform)とは、コンピュータにおいて、主に、オペレーティングシステム(OS)やハードウェアといった基礎部分を指す。 一般的なコンピュータープログラム(アプリケーションソフトウェア)は、それぞれのOSに依存し、Windows、Mac OS X、Linuxなどの専用のプログラムとして動いている。特定のハードウェアでしか動かないプログラムもある。例えば、PowerPC プロセッサ上の Linux では、PowerPC プロセッサ上のMac OS X 用や Pentium プロセッサ上の Linux 用の Adobe Reader7.0 は動作しない。 非依存とは、それらのOS、ハードウェアに依存せずに動くプログラムのこと。例えば、Javaはプラットフォーム非依存を売りにしており、他のプラットフォームの上にアダプタとし
TrueだったらFalseで、FalseだったらTrueにしたい。 なんかそんなことそこかしこで必要で、その為の便利なものが あるのかなぁと思ったんだけど無いぽい。 あれかな、TrueとかFalseを1とか0とかで表現してる時点で情腹な気もする 初めのやつ x = a = (a - 1) * -1 n氏につっこまれる x = 1 - x (修正) n氏のクラス化 class MyInt(int): def toggle(self): return MyInt(1 - self) x = MyInt(1) x >> 1 x.toggle() >> 0 m氏の提案 import itertools i = itertools.cycle([hoge, fuga]) i.next() 最後の思いつき >>> a = [1,0] >>> b = 0 >>> b = a[b] >>> b 1 >>>
今後のためのメモ。Djangoのデプロイの仕方はなんとなく馴染んだけどFlaskのやり方がいまいち分からなかったので出来るようになってみた。 ついでにアプリごとにサブドメイン切ってみる。パフォーマンスとかは全然考えていない。 条件てきなもの app置き場 /mnt/www/apps/myApp domain myapp.example.com Apache設定 /etc/apache2/sites-available/myapp <VirtualHost *:80> ServerName myapp.example.com ServerAdmin a2c@example.com Alias /static /mnt/www/apps/myApp/static WSGIScriptAlias / /mnt/www/apps/myApp.wsgi </VirtualHost>/mnt/www/
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
Flaskの公式サイトにドキュメントもアップれています。ver.0.51かつ出来てから間もないのにその充実度はかなりのものがあり大変ありがたく読ませてもらっています。さらに、ドキュメントはSphinxで生成されていて、ソースも簡単に入手出来たりします。 日本語ドキュメントが無いかなぁと思っていたのですが、なさそうなのと必要なので日本語化しています。@ymotongpooさんや@Masahito さんも協力してくれてコツコツやっております。ソースは、bitbucketでたまにアップデートしていきます。「Flaskいいよねぇ」「日本語化してぇなぁ」という協力していただける方がいればより早く完成に近づけると思うので、pullリクエストください。 リポジトリ http://bitbucket.org/a2c/a2c.bitbucket.org/ html http://a2c.bitbucket.
Djangoはとてもいい。とてもいいが小さなサービスを作るときにはちょっとメンドクサイ。urls.pyみたいなのは別ファイルに別れていなくていいし、settings.pyも毎回同じこと書いてる気がする。大きなサイトや仕事でやるならいいのかも知れないけど小さな物をサックリ何かを作るときにはちょっと大変だと感じる時がある。 その点Flaskはいい、シンプルだしShellを書いてる気分でwebAppを書ける。テンプレートも使えるし、urlsを別に書かなくてもいい!デコレータで書いていくので脳負荷が少ない。 Flaskのインストール sudo easy_install flask 基本的なやりとり チュートリアルを適当にまとめてみた。今後の自分用にメモ flask_basic.py #!/usr/bin/env python # coding:utf-8 from flask import Fla
Twitterで気になるエントリーを発見した。 iPhone4で手持ちするとみるみるアンテナの棒が減っていって圏外になるムービーだった。 手持ちのiPhone4で同じようにやってみると全く同じに圏外になったので、ムービ作ってみた。 全くもって、圏外になるのはいただけないがテストしたのは室内でそもそもアンテナ全開で受かっているところではない。外でやってみると圏外になることは無かったが、アンテナ2本分くらいは減っていた。電波強度と帯域の関係を知らないが、多分強度強い方が安定して通信出来そうなので、大切なデータをやり取りするときには、テーブルなどにおくもしくわ、手のひらにそっと乗せた方が良いかも知れない。
安定重視で10.04のServerEditionを入れたもののコンソールで日本語表示出来ずに、英弱な自分としては苦しかった。簡単に日本語が使えるようになったので今後の為にメモ fbtermと日本語フォントを入れる apt-get install fbterm unifont一旦起動するが、バッファーが無いといって不正終了する(設定ファイルは作られる) 設定ファイルを修正する vim .fbtermrcフォントを追加する。 font-names=mono,unifont デバイスにグループのPermissionを追加する /dev/fb0がrootしかアクセス出来ないので、ログインしたアカウントでも起動できるようにする。 アカウントをvideoグループに追加して、グループに実行許可を与える addgroup yourID video chmod 660 /dev/fb0以上
ココ数日毎晩OS入れなおしたり、Diskフォーマットし直したりして日々勉強しております。遂に理想のOSが見つかった気がしているWWDCの夜です。 FreeNAS かなーり有名だけど今までしょぼいだろうと食わず嫌いで使ったこと有りませんでした。 公式ページによると FreeNAS is an embedded open source NAS (Network-Attached Storage) distribution based on FreeBSD, supporting the following protocols: CIFS (samba), FTP, NFS, TFTP, AFP, RSYNC, Unison, iSCSI (initiator and target) and UPnP. It supports Software RAID (0,1,5), ZFS, disk e
今までの不調が嘘のように快適にOpenSolarisが使えるようになった。MSIの785GM-P45というマザーで今回は組んだんだけどネットワークチップが全然ダメぽい。さらにデータ用HDD6台をすべてオンボードのSATAコネクターに接続したので、起動用のSSDをSATAの拡張カードを繋いでいたけどこれも曲者。 結局、NICを買い足しSATAカードも買い直した。OpenSolarisやるならIntel系で最初から揃えた方が時間とお金を節約できるよ。 さて、まだ設定中だけどサクっと組んでddした感じのログをはってみる。 atusi@osol:?$ zpool status pool1 pool: pool1 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool1 ONLINE 0 0 0 rai
5万円以下で、8年間使える自宅ファイルサーバを構築しようと思いつて半月 先週末、某友人達とアキバにパーツを買いに行った。現在の構成は、AM3の785マザボにPhenom x4 910eと8GBメモリー、HGSTの2TB HDD x8というパーツ達。この子たちを、容量拡張可能で、冗長化されたDisk構成で運用すべく現在色々調査中。 現在のHDDの接続状況 ZFSでraidz(2)しか無いと思っているのだが、なぜかOSOLが上手に起動しないのでFreeNASやUbuntuで起動して色々試しているところ。 CIFSとNFSとAFPで使いたい、それも100MB/sec以上で使いたいのでそもそもHDDがどれくらいのパフォーマンス出るのかきちんと測ってみた。 きちんとと言っても、Ubuntu上で付属のベンチマークを使っただけなのでどれくらい現実味を帯びているのか分からないが今後、色々な状況に鳴ったとき
GoogleIOで発表になったGoogleStorageを使ってみる。 GoogleStorage http://code.google.com/intl/ja/apis/storage/docs/overview.html に詳しく書いてあるがざっくり説明すると Internetにつながってたらどこからでも使うことが出来て GsUtilコマンドかWebInterFaceから使うことが出来ます。 巨大で大量のバイナリデータを保存することが出来てデータはアメリカ国内の複数の データセンターに分散して保存されます。保存した瞬間に必ずデータが更新されることを 保証されます。ファイル毎にACLを設定出来てSSLでのセキュアなアクセスが可能です。 制限 現在はPreviewなのでいくつかの制限があります。1アカウントあたり100GB、1000Bucketまで無償で使用できます。 料金 現在発表されて
Lingrが熱い。http://lingr.com/ 半年間位には復活してたけど、なかなか利用者が増えるほどにはなっていなかったけどこの数日でDjango-jaもJava-jaも出来た。 id:yoshiori氏が、PythonでLingrを使えるライブラリを作ってくれたのでそれをGAEで使えるように改造してみた。 Lingrのライブラリ達 Ruby版 http://github.com/psychs/lingr-irc Python版 http://github.com/yoshiori/pyLingr GoogleAppEngine版 http://bitbucket.org/a2c/gaelingr 使い方 適当なメソッドを用意する from yourApp.gaeLingr import Lingr def sendLingr(room, say): _lingrID = 'you
AppEngineには、どんな処理も30秒以内に終わらせないとダメって言う通称30秒ルールという神の掟があってこれを破るとプロセスをKillれてしまいます。ほとんどの処理は30秒もかからないので問題ないですが、クロールとか形態素解析とかやりだすと30秒なんて一瞬です。特にネットワーク経由で複数のものを取りに行ったりすると2秒かかるのを10個もやれば、DataStoreのIOとかも含めると余裕で30秒を使いきってしまいます。 そこで、TaskQueueの登場です。適当につんどくと無料Versionだと1秒間あたり5個ずつ処理してくれます。先程の例だと、10個やるのに30秒だったのが1個処理するのに30秒使えるようになります。苦も無く10倍ゆっくりやれるわけです。 TaskQueueは、内部でキューに送れずに特定のURLに対するPOSTで積みます。引数はペイロードに入れてあげればイイらしい。今
昔はUstream+IRCクライアントですんでたけどどうやらSocialStreamと一緒に見た方がUstは楽しめるのでSocialStreamをインプリしてみた。力量不足でUstreamAPIからSocialStreamのエンベデットを抜き取ることが出来ない。今のところマニュアルでSocialStreamのタグを指定している(ダサすぎる・・) http://ustview.appspot.com/multi ボケボケだけど、ようつべに使ってるところを上げてみた。大きさを変えるスライダーもjQueryUI化してみた。 リクエストが有れば @atusi まで教えてください。 日本語のUstのチャンネルを3分間隔でひたすら取得してるんだけどとうやってランキング化して表示させるか考え中 GoogleAppEngine上で、短縮URLを展開する方法 Twitter上のUstreamのアドレスは短縮
Ustreamのサーチには、言語指定がない。どれくらい人気があるかは取れるが英語のチャンネルだらけ。 日本の方が大勢みているチャンネルをMultiUstreamViewer(http://ustview.appspot.com/multi)で利用するためにスクリプトを書いてみた。 GAE上ではたぶん動かないと思う。必要なのは、feedparserモジュール Twitterのサーチを使って、TL上のUst短縮URLをひっかけてAtomをもらってくる。 http://search.twitter.com/search.atom?lang=ja&q=ustre Twitterサーチは言語指定が出来るので日本語を指定しておく。 あとは、feedparserでdescription抽出して本文中のUst短縮URLをゲットする。urllib2でustre.amに問い合せると本家UstreamのFQDN
いつのまにか、ツールに合わせたワークフローっていうのが構築されている時がある。SVNからMercurialに変更しました!といった場合や、メールの添付が5MBから100MBに変わった場合などそれまでやっていた方法とは違うワークフローが“自然と”生まれていたりする。 “自然に”というのが重要。説明難しいが新しいワークフローが自然発生すると言うのは、新ツールの効用や性能の向上や変化が、現ツールから想像の範囲内であるという事だと思う。そう新ツールで、かつそれを利用するチーム全員の理解が同じレベルにあるとあっという間に染み込むように新ワークフローが定着する。逆に自然じゃないのは、PCの使い方すらおぼつかない人々にそれまでの帳簿からERPに移行した場合などは、全く染みない逆に返り討ちに合う危険すらある。ショックを和らげるために帳簿的なインターフェースだったりワークフローを真似るのはそれを利用する人た
リスト内包表記(LC)使った方が圧倒的にコードが読みやすく、短くなる。慣れてないという理由で使われてない気がするので今後の自分のためにも、メモを残す。 LCは基本的に、ListやHashを処理する際に使用される。例えば、規則性のある並びのListが欲しい時などに利用すると良い。 1, 基礎 リストの作成 forの前が処理、forからList名までがひとつのforの段落で前から評価される。 src_list = [1,2,3,4,5] print [x for x in src_list] # [1,2,3,4,5] リストの作成2 for部で取り出された要素が、その後ろif部で評価され真だったものだけが、初めのx*2に渡され処理される(この場合は、2.4だけ) src_list = [1,2,3,4,5] print [x*2 for x in src_list if x % 2 == 0
良くやる事だが、毎回やり方忘れてしまうのでメモ 空っぽの要素に、JSONで渡された情報をもとにひたすら要素を詰め込むやり方 [[1,2,3],['a','b','c'],['x','y','z']]みたいなJSONがあったとして <div id='hoge'> <input type='text' value='1'/> <input type='text' value='2'/> <input type='text' value='3'/> <br> <input type='text' value='a'/> <input type='text' value='b'/> <input type='text' value='3'/> <br> <input type='text' value='x'/> <input type='text' value='y'/> <input type
PCのブラウザで加速度センサーが取得出来る必要性があるのか疑問だが、やってみたら相当面白かったので紹介 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>加速度センサーテスト</title> <script> var count = 0; var v = 50; var h = 50; var win
気づいたらDiskの残量がメチャ減ってるときってありますよね。Nagiosとか監視ツール使って閾値超えたら警告出すとかやってる人も居るかと思います。監視ツールはエラーの発生はログ取りするけど、日々の使用料を記録して見やすくなってないのが大気がします。大きめのファイルサーバ使っていると、今後の容量計画を行う場合は現状把握が大切です。各ドライブごとにどれくらいの容量増加傾向があるのかを知るためには、監視ツールのみだとやや物足りない感じがします。 ログる内容は、dfコマンドで表示出来る分で十分なのでコレを毎日ダンプし続けると良いかもしれないですが、やっぱり結果はグラフで見たいし、いつも最新の状態が見たいですよね。さらにグラフは、画像ファイルとかでサクっとウェブで見えたりしたらさらに便利 ということで、こんなの作ってみました。 dfで見えるようにドライブをマウントしておいて、dfコマンで出る各パラ
ちょっと気になっていた問題が公開されたのでやってみた。問題は以下のページ さて試験問題です。 で、実際に書いたコードは #!/usr/bin/env python # coding:utf-8 maze='''************************** *S* * * * * * * ************* * * * * ************ * * * * ************** *********** * * ** *********************** * * G * * * *********** * * * * ******* * * * * * **************************''' def makeMazeArr(mazeArr): global dircDict return tuple(tuple(mazeArr.sp
次のページ
このページを最初にブックマークしてみませんか?
『When it’s ready.』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く