サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
hagino3000.blogspot.com
このエントリはCivic Tech Advent Calendarの23日目の記事です。突然ですが、私が時々コミットしているOpenSpendingについて技術周りの事を書きます。 OpenSpendingとは OpenSpendingは政府や自治体の予算・支出・財務諸表等の情報を集めてマッピングしたり分析したり、配布するプラットフォームです。誰でも登録されているデータセットを利用する事ができ、API経由での取得、ヴィジュアライゼーションの作成ができます。また手元にデータセットがあれば登録する事ができます。現在73カ国、905のデータセットが登録されています。 By understanding how governments spend money in our name can we have a say in how that money will affect our own liv
学習リモコンの選定 まずは学習リモコンの選定。PlutoかIRKitかどちらにしようか悩んだが、LANケーブルを引き回すのが困難なのでIRKitに決定。amazonで7,700JPY也。同時に無線LANを安定化させるために古い機器を引退させて、新たにAtermの無線LANルーターを導入した。 IRKitの設置 設置に必要な物はMicroUSBの電源供給のみ。適当な場所に設置してまずは自宅の家電が操作できるか試す。ここではApp Storeから入手したIRKit シンプルリモコンを使った。IRKitのwifiへの参加もやってくれて便利。 IRKitの赤外線は割と貧弱で、家具の配置や日光の影響を受けてしまう。設置場所は微調整を繰り返した。 % dns-sd -B _irkit._tcp Browsing for _irkit._tcp DATE: ---Sat 25 Oct 2014--- 2
PyCon JP行ってきた。話せるネタはあったものの、事前にトークセッションのプロポーザルを出してなかったのでオープンスペースで細々とやりました。 共用IPython Notebookサーバーの運用 共用のデータ分析環境としてIPython Notebookを運用する場合、適度に再起動をかけたりと、気にしなければならない事が多々ある。現在のv2系にはマルチユーザー機能が無い*1ので、自ずとノーガード戦法となり、ある程度のリスクを許容しつつの運用となるが、その中でもやれる事はやろうという話です。 インタラクティブ環境を意識したメソッドの作り 折角のインタラクティブ環境なので、動作はサクサクしていた方が良い。データロード用のショートカットメソッドなんか特にdocストリングとレスポンスタイムが重要。あと不意の事故防止。 脚注: *1: v3系で追加予定がある
YAPCに行ってきました。Perlのセッションを避けたつもりは無かったのですが、モバイルアプリ開発やデータ分析のセッションに出ていたらほとんどPerlの話はありませんでした、適材適所というか、普段Perlを書かない人間には参加の敷居がどんどん下がっている印象。 Google BigQuery で DWH 構築 BigQueryといえばGoogle Analyticsのプレミアムプランの印象が強くて、100万JPY/month払って使う物と考えていたが。自前DWHのストレージとして使うととても安く、どんなクエリでも高速に帰してくれる奴だと知った。今丁度データ分析プラットフォーム構築業をしているので、休み明けにでも検証したい。 https://speakerdeck.com/naoya/google-bigquery-falsehua-number-yapcasia JSON SQLインジェク
ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Ilya Grigorik,和田 祐一郎,株式会社プログラミングシステム社 オライリージャパン 売り上げランキング : 94924 Amazonで詳しく見る by AZlink O'rreilyのハイパフォーマンスブラウザネットワーキングは日本語版が発売されたのを機に輪講形式で社内勉強会をやっている。先週の時点で8章の「モバイルネットワークの最適化」が終り、丁度折り返し地点である。 なぜ輪講形式にしたか 本の内容は、光ファイバーや無線の規格といった下のレイヤからHTTP2やWeb RTCの上のレイヤまでカバーしている。その範囲からして、アプリケーションエンジニアだけでやるよりも、インフラの人に解説してもらった方が面白いのでは、と思ったから。 例えばTLSの章に出てくる証明書チェーンの最
自分はサーバープロビジョニングといえば、AWS上の本番・ステージング・共有開発機もろもろインフラチームにまかせっきりだった。しかしアプリエンジニアがローカル開発環境を作る用途ならChefやPuppetよりもAnsibleがマッチしていると思った次第。 背景 自分の職場だと、インフラチームはPuppetのマニフェストでサーバーを管理している、例えばサーバーにインストールするパッケージ やApacheの設定である。しかし、そのPuppetマニフェストはアプリエンジニアのローカルの環境を構築する用途としてそのまま使えない。 インフラチーム管理下のサーバーにおいてPuppetマニフェストで管理されている部分はアプリケーションエンジニアは触れないため、変更を加えたい場合は都度依頼を出している。 共有開発サーバーとローカル個人環境 例えばApacheとfluentdとElasticsearchはインフ
前回のエラーハンドリングの話に続いてコネクション管理について。今どきPush通知配信サーバーを自前で用意する事は少ないかもしれないけど、そういう人向けの内容。 コネクションの管理 APNsのドキュメントにこうしろと書いてある。 Best Practices for Managing Connections You may establish multiple connections to the same gateway or to multiple gateway instances. If you need to send a large number of push notifications, spread them out over connections to several different gateways. This improves performance compa
iOSアプリにPush通知をするのに利用するApple Push Notification service(APNs)について。配信数がある程度の規模になると面倒事が増えるのでまとめた。 本稿では疎結合なサービスとして稼動させるPush通知配信サーバーを考える。 Push通知配信サーバーの機能要件 個々のアプリケーションから分離したPush通知配信サーバーを考える場合、要件は大きく分けて次の二つになるだろう。 A. デバイストークンを溜め込んでおき、配信日時を指定して一斉に配信する ゲームのイベントが始まった事を全ユーザーに通知したい ユーザーセグメントを指定してキャンペーンの通知をしたい B. 都度送信対象のデバイスをアプリケーションから受け取って即時配信をする チャットルームで発言がある度に、チャットルームのメンバーに通知をしたい ユーザー間のmentionを通知したい Bの場合は、ア
ソフトウェア開発者採用面接のコーディングテストについて。最低限のコーディング能力があるかどうかを見極めるのに、フィボナッチ数を求める関数が出題される事がある。というか自分も出題した事がある。 ホワイトボードに書く形式だと、どうしても行数の少ない実装になってしまうが。手元の端末で自由に書いて良いとなれば、いろいろな解法が出てきて、想定していないコミュニケーションが生まれるかもしれない。最近は専ら採用する側になってしまったのだが、とりあえず自分ならどう書くかなと列挙してみた。使った環境はIPython Notebookである。
人間は死ぬ 身近な友人が死ぬというのは人生初めての経験だった。送別会は悲しい一方で最高に楽しかったのは事実で、印象的だったのは参加者がくちぐちに「気持ちに区切りがついた」と言っていた事だ。自分は一昨日まで葬儀の存在意義がわからず、葬式など必要無いと考えていたのだが、それは死者のためでは無く、生き残った人々のためにあるというのが理解できた。弔いの儀式は人類が古くに編み出した文化的な行為であると。 Bye Bye Yamashiro. この様なバカ騒ぎをしながら氏を偲ぶのはjava-jaに必要な儀式なのだ。 俺と山城 彼とは職場が一緒になった事は無いが、java-ja.jsというイベントを一緒にやったりしていた。歯に衣を着せぬ物言いをしてくれる貴重な友人でもあった。 最後にちゃんと話をしたのは、同じビルで働いていた時に、職場の近くでランチをした時だ。彼は「Google AnalyticsをGo
Pythonのコーディングスタイルチェックにはflake8を使っていたのだが、インデントルールの次の二つは守れないでいた。 E126 continuation line over-indented for hanging indent E128 continuation line under-indented for visual indent 具体的にはvimのインデント(Visualモードで範囲選択して = )だとpep8のインデントルールになってくれないので、ignore = E128,E126 していた。 そこで、@seizansに教えてもらった vim-python-pep8-indent を入れたらvimのインデントがpep8準拠になり、ほぼノーコストでpep8対応が完了できるようになった。これは良い。 .vimrcの記述は次の通りにした。 " flake8 NeoBundle
瞑想を日々の生活に取りいれる事にした。しかし一度も瞑想をした事が無いため、どのようにして瞑想状態に入るか、また瞑想状態に入ったかどうかを判断する方法がわからない。まずはそこからである。 瞑想のやり方はWebを検索するといくらでも見つかるので、それらを参考にする。そして瞑想の計測方法だが、幸い手元に脳波ヘッドセットのEPOC neuroheadsetと開発者SDKがあるので、これを使う。コードを書くまでもなく欲しい物そのものである Meditation という値が付属ツールで表示できる。 上のスクリーンショットは瞑想に初めて挑戦した時の物、Meditaionの値が平常時と同じ = つまり失敗しているのがわかる。瞑想の修行を積む必要がある様だ。 しかし、瞑想に入ろうとしている際にこの Meditation のグラフに目をやると、同時に Instantaneous Excitement の値が跳
直近のプロジェクトではコードベースを最小にしたかったので、PhoneGapを使わなかったのですが、最新のPhoneGapは必要な機能を切り出してビルドして使えるみたいですね。素晴らしい。あまり自分で実装したくない所なので、既存で使える物をなるべく使いましょう。 なるべくブラウザ(Chrome)でデバッグする理由 iPhoneシミュレーター、実機ではデバッグしづらいからです。 touchendとclickイベント clickイベントが遅延する対策としてtouchendを使っても良いと説明しましたが、touchendイベントとclickイベントは発動条件が異なります。具体的にはタッチした後に別の要素まで指を動かして離すとtouchendはFireするが、clickイベントは飛びません。タップしたけどやっぱ辞めた、という動きはclickイベントを使った方が意図した通りになります。 私はFastC
Pythonの話。wheelを使ってC拡張モジュールをデプロイする仕組みが上手く稼動したのでメモ。 依存パッケージの本番デプロイ アプリケーションが依存しているPythonパッケージをどうやって本番サーバーにデプロイするか。大抵はrequirements.txtにpip freezeで吐いた内容を保存しているだろう。とすると、本番サーバーでpip install -r requirements.txtすれば良いんだが、githubが落ちてたりPyPIが落ちてたりすると、外部要因でデプロイスクリプトが途中でコケる、というダサい事態になる。それを避けるために事前にパッケージを固めて各サーバーに配布する仕組みが必要になる。C拡張モジュールを使いたいけど本番サーバーでCコンパイラが自由に使えない、という時も同様で、事前にコンパイル済みの物を配布する必要がある。 pip bundleを使う場合 (d
Djangoを使っているプロジェクトでMySQLにunicode絵文字を投入したくなったので。 Unicode絵文字 iOSで使える絵文字キーボードに含まれる絵文字はUTF-8で符号化した時に4バイトになる。UTF-8で符号化した時に4バイトになるのは一部も漢字もそうだが具体的にはこのあたり。
boto自体使うのが初めてだったので、おかしい所があるかもしれないが動作はした。APNsのSSL証明書作成等は毎度の事なので省略。Application ARNはAWS Consoleから既に作成してあるとする。 デバイス指定でメッセージ送信する # -*- coding: utf-8 -*- import boto.sns AWS_ACCESS_KEY = 'xxxx' AWS_SECRET_ACCESS_KEY = 'yyyyyyyy' APPLICATION_ARN = \ 'arn:aws:sns:ap-northeast-1:0000:app/APNS_SANDBOX/aaaa' # SNSに接続 sns_connection = boto.sns.connect_to_region('ap-northeast-1', aws_access_key_id=AWS_ACCESS_K
RabbitMQ 3.1の導入と冗長化の検証をしたのでメモ。 検証のための構成はフロントのAPサーバー、RabbitMQが動作するキューサーバー、ワーカーそれぞれ二台づつ。キューサーバーが片方死んでも全体が動作し続けられる事、両方がダウンしたとしてもデータは損失しない事が確認できれば良い。要するに単一障害点にならないようにRabbitMQを使いたい。 サーバーの準備 仮想マシン6台はVagrantを使えば一発で用意できる、メモリ16GB積んでてよかった。ホスト名を後でいじるとrabbitmqctlで停止・再起動がうまくいかなくなった。ホスト名周りはEC2で使う時に面倒な事になりそうだ。 各サーバーの /etc/hosts にrabbit1とrabbit2は追加しておく。 RabbitMQ 3.1 のインストール 起動確認 vagrant@rabbit1:~$ sudo rabbitmq-s
キーボードの設定 まずはMacのキーボードでアラビア語の入力をできるようにした。手順は「システム環境設定」→「言語とテキスト」→「入力ソース」からアラビア語入力ソースにチェックを入れるだけ。しかしここで入力方式が3つあり、どれにするか早速悩む。 ArabicとArabic - PCについてはWikipediaのアラビア語キーボード配列の項目に記載があった。Arabic - QWERTYについてはよくわからなかったので実際に触ってみた。配列は次のとおり。 ا(アリフ)がa、ب(バー)がbといった風に音感が似てるローマ字アルファベットにマッピングされている。配列の歴史的な経緯はどうでも良かったので、すぐに体が覚えられそうなArabic - QWERTYを使う事にした。السلام عليكم(アッサラーム アレイコム)と打ちたい場合は alslam elikm である。直感的に打てて良い。なぜ
iPython Notebookが0.13.2にバージョンアップして、セットアップが自動化できそうな雰囲気がしたので勉強中のChefのcookbookにした。 iPython Notebookのパッケージインストール apt-get install ipython-notebook で入るようになったので、これまでとは比較にならないぐらい簡単になった。レシピは次の通り。ipython-notebook本体と必要なパッケージをインストールする。 # Install packages %w{ python-pandas python-numpy python-scipy python-matplotlib python-nose ipython-notebook }.each do |pkg| package pkg do action :upgrade end end # iPython n
グローバル審査の結果が出たのでエントリにします。 世界規模のハッカソンであるInternational Space Apps Challengeが4月に開催されました。昨年も同じ時期に開催されましたが、今回は開催地が44カ国、83都市。正式にサブミットされたプロジェクトは750を越えたとの事で、圧倒的な規模です。 私が参加したプロジェクトは日本ローカル2位*1となり、グローバル審査ではGalactic Impact部門のHonorable Mention(選外佳作)となりました。ハッカソンから1ヶ月以上経っていますが、今だに作業は続いているので嬉しい限りですね。 主に次の3つの機能を開発しました。 MODIS Cloud Maskの取りこみ、集計 地図上へのマッピング ソーラーパネル発電による収支のシミュレーション サブミットしたプロジェクトページ Cloudless Spots for
asm.jsを触ってみたので所感など。 asm.jsはJavaScriptのサブセットで、限られた型しか使えないが高速に動作する言語との事。とりあえずどの程度速くなるのか、計算量が多くなるfibonacciの実装で試してみた。参考資料はasm.jsの仕様ぐらいしか無かったのでこれを見ながら。 で、実際に書いてみると型がゆるゆるなJavaScriptのイメージは脆くも崩れ去り、厳格な型チェックの世界である事がわかった。コンパイル言語を書いている時の頭に切り換えないと、コンパイルエラーと延々格闘する事になる。まずはasm.jsのコードは次の形式で、module exportする。 function create_my_asm_module(stdlib, foreign, heap) { "use asm"; function hoge() {...} function fuga() {...
先週のPRML復々習レーン#9でPRML下巻の図6.1がいまいち理解できなかったので、Pythonのコードで再現してみた。基底関数と特徴空間への写像の内積で定義されるカーネル関数をxでプロットした図である。 最初Excelのグラフでやってみたが、ありえない事に気づきOctaveに方針変更。それでも、コードと結果を見くらべながら試行錯誤しにくかったので、最終的に@__youki__氏に教えてもらったiPython notebookに落ちついた。 iPython notebookはiPythonのWebクライアント。グラフを試行錯誤しながらガンガンプロットして保存しておける。セットアップは若干面倒だがそのうちfabricのfabファイルとか出てきそう。結果はnbconverterでHTMLに変換できる。コード、結果の共有はもちろん、ブラウザから実行できるので一度サーバーを立ててしまえばどこでも
► 2023 (1) ► 5月 (1) ► 2021 (2) ► 11月 (1) ► 8月 (1) ► 2020 (3) ► 7月 (1) ► 5月 (1) ► 3月 (1) ► 2019 (11) ► 12月 (3) ► 10月 (1) ► 8月 (2) ► 5月 (1) ► 4月 (1) ► 3月 (2) ► 1月 (1) ► 2018 (6) ► 12月 (1) ► 11月 (1) ► 10月 (2) ► 7月 (1) ► 1月 (1) ► 2017 (4) ► 11月 (1) ► 8月 (2) ► 7月 (1) ► 2016 (8) ► 12月 (1) ► 11月 (2) ► 10月 (1) ► 9月 (2) ► 8月 (1) ► 3月 (1) ► 2015 (9) ► 12月 (1) ► 10月 (1) ► 7月 (1) ► 6月 (2) ► 5月 (3) ► 3月 (1) ►
--> tree app app ├── 404.html ├── favicon.ico ├── index.html ├── robots.txt ├── scripts │ ├── main.js │ └── vendor │ ├── jquery.min.js │ └── modernizr.min.js └── styles └── main.css Chrome Developer ToolsのTincrタブでProject Typeを選択、Http Serverの場合はルートディレクトリの設定のみ。 Enable Loggingにチェックを入れておくとConsoleタブにログが出てくる。 Content for url http://localhost:8000/scripts/main.js matches local file /Users/tnishibayashi/d
JavaScriptを使った開発で必要となるconcat, minify, lint, test といったタスクを動かすのに使うツール、最近はgruntをよく見かけるのでオレオレmakefileから移行してみた。 既存のmakefileは以下の通り。makefile + makeターゲットから呼び出される各種タスクに対応した処理を行なうプログラムという構成。make minifyと打てば圧縮版のファイルを生成、make testと打てばテストが実行される寸法だ、圧縮にはuglify.js, lintにはjshint、全てnodeモジュールを使っているのでそのまま移行できるはず。concatにはmuというテンプレートエンジンを使っていた。 makefileからの移行 まず、gruntの制御に必要なgrunt.jsファイルは grunt init:gruntfile して生成する。concat
この記事はVOYAGE GROUP エンジニアブログ : Advent Calendar 2012の20日目である。特にテーマは何でも良いそうなので、Mac OS X Mountain Lionで追加された通知センターについて。 VOYAGE GROUPではグループウェアにサイボウズガルーン3を使っている。このサイボウズガルーン3、不便な事にMac用のリマインダークライアントが提供されていない。そこで、ミーティングをすっぽかさないためにもMacユーザーはリマインダーを各自実装する必要がある。 私はAPIを叩いて結果をGrowl通知させていたが、OSアップデートでこれが動かなくなった。単にGrowlをインストールするのを忘れていただけだが、通知センターがOSに追加されたのでGrowlはもう不要な気がする。 というわけで、通知センターでガルーンのスケジュール通知を受けられるようにしてみよう。私
このページを最初にブックマークしてみませんか?
『hagino3000's blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く