shimada-kの日記

ソフトウェア・エンジニアのブログです

DIYのすゝめ

11月頃からクリスマス用に子供のおもちゃを作ろうと決意し準備を進めておりました。ものとしてはAdafruit Touch Hatを使用したおもちゃを製作しました(この関連で別postで組み込み系の記事を公開しました)。 Adafruit Touch Hatは12個の静電容量式センサが…

Raspberry Piでドラムボードを試す

この記事は「LIFULL Advent Calendar 2017」12日目の記事として書かれました。 qiita.com 年の瀬ですね。年末です。もう今年もアドベントカレンダーの季節です。 ついこの間元旦だったような気さえしますよ。本当に時間の経過は早いものです。 はじめに 仕事…

IBM Blockchainでソリッドステートを作る

この記事は「ネクスト(Lifull) Advent Calendar 2016」21日目の記事として書かれました。 qiita.com 前回の投稿からかなり時間が空いてしまいました。今年も年の瀬ですね。 なぜ年の「瀬」というかというと、「瀬」には「流れの速い」という意味があるそうで…

GCDの実行ポリシーとキューの種類まとめ

今更ながらGCDを勉強しました。Grand Central Dispatchです。わからなければ自分で使ってみることです。そうしたらいざという時に役に立ちます。 調査 GCDには主に2種類のキューのタイプと2種類のディスパッチポリシーがあります。組み合わせで合計4種類の使…

UIScrollViewにおけるcontentOffsetの注意点

UINavigationControllerを使用している場合で、UIScrollViewをpagingで使用している時にコードからUILabelを置こうとした時に想定通りの座標で配置できなかったことがあったので解決手段をメモしておきます。 既知のトピックではありますが、ちゃんとまとま…

東京メトロのアプリコンテストに応募しました

iOSアプリを作成しアプリコンテストに応募しました。作成から応募までのログを宣伝を兼ねて書いておきます。 東京メトロ オープンデータ活用コンテスト 東京メトロのAPIを使用したアプリを作るという趣旨です。サマって書くと個人・団体問わず参加OK、一人何…

Synthでejsを使う

Synthでテンプレートエンジンにejsを使用する時のメモ。Synthのバージョンは0.5.2です。 back/node_modules/synth/synth.jsに追記 back/package.jsonにejsの項目を追記してsynth install -bを実行します。その後、back/node_modules/synth/synth.jsにejsを使…

UnityでS.S.デッドリー・ボンバーを作ってみる

人造人間13号*1が放つS.S.デッドリーボンバーをUnityで再現してみました。人造人間13号はドクター・ゲロが使っていたマシンが悟空抹殺のために自動で作りだした人造人間です。 構造は、まず真ん中のコアのような球体と、その外側に赤い帯が表示されている球…

Synthを試してみる

先日東京Node学園14時限目に参加してきました。そこで@pchwさんから紹介があったSynthを試してみました。試してみた分かったことを書いておきます。 SynthはSPA作成を念頭において設計されたWebフレームワークです。 Angular.jsでサイトを作成した場合、HTML…

Firefoxの新機能Loopを試す

WebRTC Meetup Tokyo #3に参加してきました。@chikoskiさんから紹介があったFirefoxの新機能のLoopを試してみました。 LoopはWebRTCを使用して実装されたビデオチャットサービスで、Firefoxのアルファ版のAuroraで試すことができます。 基本的な使い方はGoog…

UnityでLeap Motionが認識した手を動かす

UnityでLeap Motionのビジュアライザーのように認識した手を動かしてみました。手は以下のオブジェクトで表現しました。 手首:Cube 手のひら:Sphere 間接:Sphere 骨:Line Renderer Leap MotionのSDKのバージョンはもちろんv2 Betaです。Unity側スクリプ…

httperfでnginxにおける非同期処理の限界を知る

nginxに負荷をかけて遊んでみました。webによくあがっているnginxのベンチマークは適当な静的ファイルを1つ用意してそこに対してアクセスを行うといったものです。 ただそれだとメインメモリのファイルキャッシュにのっているものを返すだけで、オンメモリで…

テックヒルズ×iBeacon ハッカソンに参加してきました

iOS7からCoreLocationに追加された機能でメジャー番号とマイナー番号とUUIDを使って通信します。beacon製品は2013年11月から国内で販売されました。 作成したのはWebsocketとiBeaconを連携させたアプリで主にサバイバルゲームでの使用を提案させて頂きました…

Leap Motion SDK V2 Betaで遊んでみる

Leap Motionの新しいSDKのpublic Beta版が5月28日に公開されました。試してみて分かったことを書いておきます。 まずはビジュアライザーを起動してみます。 グーも認識してくれます。 X方向に手を重ねるのはこれくらいが限度。これ以上近づけると片方が認識…

nginxは新規リクエストをどう受け付けるのか

nginxで新規のリクエストが発生した場合の処理をソース上で追いかけてみました。 nginxはワーカープロセスを指定した数だけ起動させてそのプロセス内で非同期にリクエストをさばいていますが複数のワーカープロセスが存在した場合、新規リクエストはどう振り…

Temasysを使ってSafari@OSXでWebRTC

WebRTC Meetup Tokyo #2に行ってきました。 WebRTCの仕様の策定状況やブラウザ間のサポートの差異をどうしようかみたいな話を聞いてきました。 WebRTCはChrome/FireFox(Opera)は対応してるんですが、Safariやシェアのほとんどを占めているIEなどは対応してな…

Node.jsでPromiseを使う場合

先日、東京Node学園12限目に参加しました。そこで@jovi0608さんから紹介があったNode-v0.12に含まれる予定のPromiseを試してみました。試してみて分かったことを書いておきます。 Node-v0.12の新機能について コールバック地獄の例としてよく挙げられる下記…

imlib2のdraw_textで遊んでみる

Rubyの画像処理ライブラリimlib2で画像に文字を埋め込んで遊んでみました。 環境 OS:Debian Squeeze Ruby:ruby 1.8.7 libimlib2-ruby:0.5.2-2 入力した文字列の文字数によって適切にフォントのサイズと縦横のマージンを計算し、さらに一行におさまる長さで改…

MySQLでインデックスが効いてないとつまりどうなるのか

MySQLでインデックスを使用しないクエリを投げると実際遅いことは分かるんですけど、マジックワード感があるのでなぜ遅くなるのか考えてみました。 すごく大きなテーブルを作ってインデックスを使用したSELECTとそうでないSELECTを投げてperfで調査しました…

twitterの投稿画面風UIの作り方

iPhone版twitterアプリのようなアップロードUIを作ってみました。 こういうやつです。上記はtwitterのtweet入力画面です。 テキストを入力する場所があって、その下にキーボードがある。さらにその間にツールバーのような領域があってボタンを配置できる。と…

Node.jsでサーバ間通信

Node.jsのAPI内で別サーバへ問い合わせてその内容をejsへ渡すということをやってみました。リアルタイム性を持たせたいからNode.js/websocketなんだけども、処理全部をjsで書くのはなーという考えからきてます。 var options = { host : 'localhost', // ポ…

Interface Builderで置いたBarButtonItemにアイコン画像を設定する

UIBarButtonItemのアイコンを独自のものに差し替えたい場合の手段です。若干はまったのでメモ書き。下の画像のように2つのBarButtonItemが配置されているとします。facebookのいいね!の画像をアイコンとして設定することとします。like40x36.png コードから…

CollectionViewとWebViewで画像ビューワを作ってみる

せっかくiOSの開発環境が手元にあるので試しにアプリを作ってみました。 webの画像をCollectionViewで表示する画像ビューワです。Googleのロゴ画像を出しています。WebViewでロゴ画像のURLを指定してCollectionViewで並べてるだけです。まずCollectionViewを…

HYPER ORIGINALITY IIにエンジニアとして参加しました

HYPER ORIGINALITY IIへ技術サイドとして参加しました。作品としてのコンセプトは下記HPをご参照ください HYPER ORIGINALITY II製作物としては、サーバサイドはRubyとNode.js、クライアントサイドはJQueryで構築しました。一言で言うとリアルタイム画像共有…

Titanium Mobileでscanditモジュールを使う

Titanium MobileでQRコードの読み取りをやってみました。環境 Titanium Studio 2.1 Android 4.0scanditにサインインして確認メールのURLからダウンロードページに行きます。 そこからzipファイルをダウンロードできます。Titanium Mobileでモジュールを有効…

FUSEで遊んでみました

これは「カーネル/VM Advent Calendar2012」17日目の記事です。今回はFUSEを使って画像の中にデータを記録していくファイルシステムを作ってみました。基本的にファイルシステムを作るときはシステムコールの実装になります(これはOS直書きのファイルシステ…

apache-passengerで動かすsinatra環境のよさげな設定

自宅サーバでsinatraアプリを動かすことにしたので、既存のslimアプリとバッティングしない設定を試した時のメモです。/var/www/slimにslimアプリがあるとします。slimアプリもsinatraアプリもhttp://www.hoge.jp/slim/ http://www.hoge.jp/sinatra/のような…

clistを使ってカーネル側とユーザ側で通信させてみました

以前の記事で作成したカーネル側の循環リストライブラリ(clist)を使って、実際にカーネル空間とユーザ空間でデータ通信をしてみました。LinuxカーネルではftraceやSystemTapなどのトレーサが使えます。両者とも非常にすばらしいツールなのですが、リングバ…

xconfigとgconfigを使ってみました

GUIベースのカーネル設定ツール(ようは.configに書いてあるカーネルコンポーネントのn/m/yを切り替えるGUIフロントエンド)を使ってみたのでそのことについてのメモです。この記事を9割くらい書き終わった段階でid:meechさんの記事*1を見つけてしまいました。…

ページキャッシュのミスはどこで起きているのか

あけましておめでとうございます。これは「カーネル/VM Advent Calendar2011」35日目の記事です。そして2012年一発目の記事になります。この記事ではページキャッシュミスについて書きます。ページキャッシュとDB(主にtmpfsと絡めたお話)についてはid:naoy…