サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
shimada-k.hateblo.jp
この記事は「ネクスト(Lifull) Advent Calendar 2016」21日目の記事として書かれました。 qiita.com 前回の投稿からかなり時間が空いてしまいました。今年も年の瀬ですね。 なぜ年の「瀬」というかというと、「瀬」には「流れの速い」という意味があるそうです。またツケ払いが多かった江戸時代には年末にツケの清算がなされたことから、めまぐるしい時期ということで年末のことを「年の瀬」ということになったらしいです。 はじめに 私はFinTech系の事業に携わっておりますので、ぜひブロックチェーンについて議論したいと思いました。 昨年にはマウントゴックスの事件などありキナ臭い印象が広がっているかもしれません。しかしマウントゴックスの破綻とブロックチェーンの技術自体には何の因果関係もありません。 2016年には三菱UFJが仮想通貨に参入したり、2017年度の税制改正ではビット
カーネルhackで使っていたシステムをprocfsからsysfsに切り替えました。 仮想ファイルはget_seconds()関数を使ってepoch時間を表示させるものを用意しました。それを行うのが以下のカーネルモジュールです。 epoch_sysfs.c #include <linux/kobject.h> #include <linux/string.h> #include <linux/sysfs.h> #include <linux/module.h> #include <linux/init.h> static struct kobject *epoch_kobj; static ssize_t epoch_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { return sprintf(buf,
UINavigationControllerを使用している場合で、UIScrollViewをpagingで使用している時にコードからUILabelを置こうとした時に想定通りの座標で配置できなかったことがあったので解決手段をメモしておきます。 既知のトピックではありますが、ちゃんとまとまった情報に出会えなくてかなりハマったので書いておきます。 これは2014年iOSアドベントカレンダー5日目の記事として書かれました。 環境 Objective-c Xcode 6.1 iPhone5 シミュレータ Mac OSX Yosemite コード #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @end #defi
nginxに負荷をかけて遊んでみました。webによくあがっているnginxのベンチマークは適当な静的ファイルを1つ用意してそこに対してアクセスを行うといったものです。 ただそれだとメインメモリのファイルキャッシュにのっているものを返すだけで、オンメモリで完結する処理のはずなので非同期処理が売りのnginxのベンチマークとしては微妙じゃないかなと思うわけです。 そこでメインメモリのキャッシュではまかなえない量のデータを用意してかつ複数ファイルに対してアクセスを行うようにして負荷をかけてみました。負荷をかけるツールはhttperfを使用しました。 ネットワークの帯域がボトルネックになっていないことを確認するために、事前にiperfで帯域を調査しておきます。自宅のLANと使用するシステムはすべて1000BASE-Tで接続されているので理論値では1Gbits/sの速度がでるはずです。 ------
先日、東京Node学園12限目に参加しました。そこで@jovi0608さんから紹介があったNode-v0.12に含まれる予定のPromiseを試してみました。試してみて分かったことを書いておきます。 Node-v0.12の新機能について コールバック地獄の例としてよく挙げられる下記のようなコードのようにディレクトリ間でファイル数とファイル名に差分が無いことを確認できればあとはファイルごとのループに書き換えられるような事例ではPromiseの恩恵が受けられます。 引用元:Node.jsにPromiseが再びやって来た! fs.readdir(dir1, function(...) { fs.readFile(file1, function(...) { hash.update(data); fs.readdir(dir2, function(...) { fs.readFile(file2,
MySQLでインデックスを使用しないクエリを投げると実際遅いことは分かるんですけど、マジックワード感があるのでなぜ遅くなるのか考えてみました。 すごく大きなテーブルを作ってインデックスを使用したSELECTとそうでないSELECTを投げてperfで調査しました。 環境 OS:Debian Squeeze (Kernel 2.6.32-5-amd64) H/W:Corei5-3470T, Memory 16GB, SSD 120GB perf:0.0.2.PERF perfをインストールします apt-get install google-perftools linux-tools-2.6.32 これでperfが動く環境になりました。次に実験用のテーブルを作りガツっとデータをINSERTします。今回使用するテーブルは下記のような構造にしました。1ユーザごとに100件のレコードを保持しているこ
自宅サーバでsinatraアプリを動かすことにしたので、既存のslimアプリとバッティングしない設定を試した時のメモです。 /var/www/slimにslimアプリがあるとします。slimアプリもsinatraアプリも http://www.hoge.jp/slim/ http://www.hoge.jp/sinatra/ のようなパスでアプリを起動させるところを目指します。 環境:Linux debian 3.2.0-3-amd64 [debian wheezy] apacheはすでにインストール済みとします。 ・sinatraアプリの開発環境のインストール #apt-get install ruby rubygems #gem install sinatra sinatraをapacheで動かすためにpassengerをインストールします。 #gem install passenge
これは「カーネル/VM Advent Calendar2012」17日目の記事です。 今回はFUSEを使って画像の中にデータを記録していくファイルシステムを作ってみました。 基本的にファイルシステムを作るときはシステムコールの実装になります(これはOS直書きのファイルシステムでもFUSEでも一緒です)。 ただ、FUSEの場合はシステムコールを直接フックするわけではなく、カーネルモジュールとglibcを間に挟んでいます。FUSEのすばらしいところはユーザランドでFSが書けるのところで、豊富なライブラリを遠慮なくリンクできるのです。 しかもRubyやPHP、Pythonなど主要なLLでのバインディングも充実しているのでLLでファイルシステムを書くことができるわけです。RubyやPHPなどのLLを使う場合はさらに言語のエクステンションを間に挟むことになります。 実装はRuby + FUSE +
あけましておめでとうございます。これは「カーネル/VM Advent Calendar2011」35日目の記事です。そして2012年一発目の記事になります。 この記事ではページキャッシュミスについて書きます。ページキャッシュとDB(主にtmpfsと絡めたお話)についてはid:naoyaさんの記事*1が有名かと思います。 ディスクIOは遅いので、メモリ上にデータをキャッシュしている。それがページキャッシュである。読みたいファイルのデータがページキャッシュ上にあればディスクまで読みにいかずページキャッシュから読んで返す、これで高速化できる。 ページキャッシュは基数ツリー(radix tree)というデータ構造で管理されていて、エントリはページ単位(4096バイト)である。 だと言うことは知識として得ています。ただ「ページキャッシュ機構が透過的に働く」という表現が抽象的で書籍やWebの説明ではよ
画像処理をする要件が出たので手軽に扱えるライブラリは無いものかと探した結果、ImageMagickに行き着きました。 ライブラリを利用して、油彩化とシャープネスを組み合わせた加工を施すプログラムです。 この処理をスレッドに割り当て、マルチスレッドで画像処理を行うロジックを実装してみました。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <ImageMagick/wand/MagickWand.h> #define SRC_BASE_PATH "src" /* #apt-get install libmagickwand-dev gcc -o img_process img_process.c `pkg-config Wand --cflags --libs`
新しいマシン(Sandy Bridge)を買ったのでTurboBoostを試してみました。 Win環境だとIntelが作成&公開しているインテル® ターボ・ブースト・テクノロジー・モニターというツールがあります。Linux用だと、turbostatというツールがあります。私はLinuxユーザですのでturbostatを使用します。 まず、OSの設定でTurboBoostを有効にしなければいけません。こちらの情報で/sys/devices/system/cpu/cpuN/cpufreq/scaling_governorが"ondemand"にしないといけないといことが分かっています。ただ、私の環境ではすでに有効になっていました。 こちらからturbostat.cとMakefileをダウンロードしてきます。 コンパイルしてそのまま実行すると「modprobe msrをしなさい」と言われます。な
IntelのCPUではハードウェアイベントを計測できるPMC(Performance Monitoring Counter)という仕組みがあります。 PMCを使用して、イベントを計測するためには最低3つの手順でMSR(モデル固有レジスタ)に対してデータを読み書きしなければなりません。 IA32_PERF_GLOBAL_CTRLを設定 IA32_PERFEVTSELxを設定 IA32_PMCxに対して読み込みをかける IA32_PERF_GLOBAL_CTRLではIA32_PMCxの有効ビットをONにします。IA32_PERFEVTSELxではEventNumやUnitMaskなどを設定します。以上を正しく設定すると、IA32_PMCxからRDMSR命令またはRDPMC命令で設定したイベントのデータを読み取ることができます。 IA32_PERFEVETSELとIA32_PMCは複数存在し、そ
このページを最初にブックマークしてみませんか?
『shimada-k.hateblo.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く