shimada-kの日記

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

プログラミング

Djangoで例外処理の共通モジュールを考えてみる

この記事は「Django Advent Calendar 2019」の9日目の記事として書かれました。 qiita.com 仕事で絶賛Djangoを使っていますので、今回記事を担当させていただきます。 ところでDjangoで共通のエラー処理ってどう対応していますでしょうか? HTTPのステータス…

pytestのfixtureについて

この記事は「LIFULL Advent Calendar 2018」5日目の記事として書かれました。 qiita.com 今年もアドベントカレンダーの季節になりました。年々ブログを書くという行為から遠ざかっている気がします。勤務先の会社がLIFULLグループではなくなる予定なので「LI…

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、一人何…

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

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

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

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

Leap Motion SDK V2 Betaで遊んでみる

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

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 入力した文字列の文字数によって適切にフォントのサイズと縦横のマージンを計算し、さらに一行におさまる長さで改…

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直書きのファイルシステ…

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

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

clistのカーネル版を作りました

前回このブログに書いた循環リストのライブラリのカーネル版の実装を作りました。本体はここ(github)にあるので、ヘッダファイルをさらしておきます。clist.h #include <linux/spinlock_types.h> /* spinlock_t */ #define CLIST_STATE_COLD 0 #define CLIST_STATE_HOT 1 #define C</linux/spinlock_types.h>…

循環リストのライブラリを作成しました

循環リストのライブラリを作成しました。いずれはカーネル空間で捕捉されたイベントをユーザ空間のアプリケーションに通知させる際に使用するつもりです。似たようなデータ構造でリングバッファがあるのですが、カーネルでもdmesgや、oprofileなどで使われて…

マイナー番号で複数のデバイスファイルを管理するコードのメモ

今までデバイスドライバを書く時はマイナー番号は0にしていました。なので「マイナー番号はメジャー番号の1つ下の階層の番号」ぐらいの理解でした。 #複数のデバイスファイルを扱う要件がなかったのでしかし、1つのドライバコードで複数のデバイスファイル…

container_ofでsysfsのコールバック関数を一元化

私が普段使っているシステムではカーネルのパラメータを出力するのにsysfsを使っています(このことは以前このブログに書きました)。しかし、出力するファイルが多くなると同じような処理をするルーチンが多数存在することになり、無駄にソースの行数が多く…

MSRを扱うためのライブラリを作ってみました

IntelのCPUではハードウェアイベントを計測できるPMC(Performance Monitoring Counter)という仕組みがあります。PMCを使用して、イベントを計測するためには最低3つの手順でMSR(モデル固有レジスタ)に対してデータを読み書きしなければなりません。 IA32…

ImageMagickとマルチスレッドは混ぜるなキケン!?

画像処理をする要件が出たので手軽に扱えるライブラリは無いものかと探した結果、ImageMagickに行き着きました。ライブラリを利用して、油彩化とシャープネスを組み合わせた加工を施すプログラムです。この処理をスレッドに割り当て、マルチスレッドで画像処…

仮想FSはsysfsを使おう

カーネルhackで使っていたシステムをprocfsからsysfsに切り替えました。仮想ファイルはget_seconds()関数を使ってepoch時間を表示させるものを用意しました。それを行うのが以下のカーネルモジュールです。epoch_sysfs.c #include <linux/kobject.h> #include <linux/string.h> #include <linux/sysfs.h> #inc</linux/sysfs.h></linux/string.h></linux/kobject.h>…

pthread_cancel(3)を使ってみた

マルチスレッドのプログラミングをしていく時にあからさまなポーリングをしない方法についてです。後々同じ内容で悩まないためのメモです。あからさまなポーリングとは int death_flag; /* 省略 */ void *thread_main(void *arg) { /* 省略 */ while(1){ /* …