サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
nyaxt.hatenadiary.org
DebianをX環境でつかうのがいやになってきたので、Arch Linuxを試してみる。 debianなれててとても使いやすいんだけど、gnomeなりなんなりを入れたとたん使わないろくに使わないパッケージが大量にはいってげんなり。 Arch Linuxだと最小限パッケージセットで使うのがdebianより徹底できそう。x86/x86_64以外の環境がサポートされてないのがちょっと気にかかるけど... とりあえずbootableに https://wiki.archlinux.org/index.php/Beginners%27_Guide#Select_an_installation_source isoをusbメモリにddするだけなので楽。pppとかwpa_supplicantとかいらなさげなので勝手に選択をはずす。ファイルシステムはxfsにしてみる。 設定 再起動するとすんなり起動する、
今日はささだ研雑談会でした。 ファイルを読み書きするようなアプリケーションの最適化を行う際、実際どのようなIO命令が発行されているか知りたくなる。 小崎さん(@kosaki55tea)によるとblktraceを使うといいらしい! http://linux.die.net/man/8/blktrace 使い方を書こうと思ったけど、解説ページがそれなりにあったのでやめた。 mmap I/Oアプリケーションにおけるdisc sync ファイルを読み書きするようなアプリケーションにおいて、キャッシュの管理をOS任せにしても良いのならば、ファイル全体をmmapしてしまうと非常に楽にI/O処理を書くことができる。 しかし、mmapしてデータを書き込むだけで、即座にディスクにデータが書き込まれるわけではない。 明示的にmsync(MS_SYNC)を発行して同期を取る必要がある。 ここまでは一般的な話。
ちょっとはまった Linuxだと/dev/zeroから適当にmmapしてメモリ確保するけどmac os xでそれやるとこける。 かわりに-1をmmapするとよい。 #ifdef __linux__ int fd = ::open("/dev/zero", O_RDONLY); return mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); #elsif __APPLE__ return mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0); #endif ちなみにfd -1をMAP_PRIVATEは失敗するので、MAP_SHARED | MAP_ANONじゃないとだめぽい。 かってに#defineされる定数群を表示。 echo '
書いておかないとやっぱり忘れるので面倒でもいろいろメモを残すようにしよう。 topぽいUIの監視ツールが作りたかったのでncursesを使ってみたけどUTF-8文字列が文字化けして表示できなかったので解決策をメモ。 ncursesはそもそもマルチバイト文字の表示に対応していないので、その対応版であるncurseswを使う必要がある。 多くのディストリビューションではそもそもこれは別パッケージとして提供されているので注意。 基本的にはncurseswはncursesとソースコードレベル互換ぽいので、ncursesのrubyバインディングであるncurses-rubyを適当にいじってncursesw野バインディングとして利用することにする。 ncurses-rubyをncurseswとコンパイル 最新版を以下のサイトからダウンロード。 http://ncurses-ruby.berlios.d
今はもっと簡単になってる: d:id:nyaxt:20120104 UNetBootInを正しく動作させることが出来なかったため、debianで提供されているboot.img.gzを利用したインストール方法を解説する。 UNetBootInは様々なOSのCDインストール用isoファイルを用いて、BootableなUSBドライブを生成してくれるソフトウェアであるが、USBドライブとの相性問題が発生することが多く、今回試した2本のドライブではBoot Errorメッセージが表示され、インストーラーを起動させることができなかった。 そこで、今回はdebianのインストール用hd-imageを用いたセットアップ方法を紹介する。 基本的には、以下のウェブサイトで紹介されている手順を踏襲させてもらった。 http://blogs.koolwal.net/2009/02/25/installing-li
ここ最近1年半ぐらい開発していたIznaStorとIznaプラットフォームについて、第十六回P2P SIP勉強会にて講演させて頂きました。 そのときの発表資料を公開します。 何か質問等あればお気軽にコメント欄までどうぞ。 またIznaプロジェクトメンバーは随時募集中です。興味がある方は是非ご連絡ください。
そろそろ真面目に更新再開しようと思う。 http://izna.in/stor InterOp Tokyo 2009では多くの方々にご来場頂き、ありがとうございました。 しました gem update --systemを無理矢理するより、apt-pinningを使った方がまだマシだとおもうよ! gem update --systemをかけてしまうと、apt管理されていたファイル構成が変わったりするので正しくremoveできなくなったりとても危険。 kouhei@pubsrv:~$ cat /etc/apt/preferences Package: * Pin: release a=stable Pin-Priority: 700 Package: * Pin: release a=testing Pin-Priority: 650 kouhei@pubsrv:~$ cat /etc/apt
cagra高速化にあたってのノウハウを一部公開してみます。また明日校正/更新します。つっこみ待ちです。 select(2)の代わりにepoll_wait(2), kqueue, /dev/epoll等を使う 他に山ほど解説ページがあるので略 大量のディスクリプタを処理するようなサーバの場合、多少効果があるかもしれません。しかし、クライアント数が少ない場合、劇的な性能の向上は見込めないとおもいます。クライアント数が多い場合は、1セッション1スレッドなモデルではOS側のタスクスイッチングのオーバーヘッドが効いてくることも多いです。クライアント数を増やすには複数のセッションを1スレッドで処理できるようにすると良いです。実装にあたっては、non-blocking ioを活用すると効果的です。 TCP_NODELAYを設定する Nagleアルゴリズムをオフにします。多少応答性が良くなります。 これっ
について書くはずだったんだけど何を書くのかわすれた! とりあえず基礎的なことについてまとめておく。 バイナリはunstrippedなものを使用 できれば-gオプションこみでコンパイルしておく。 coredumpを吐くようにbashを設定 ulimit組み込みコマンドを使用 ulimit -c unlimited 実行&落とす! (core dumped)の文字を確認。core.PIDという名でコアダンプができてるハズ gdbでデバッグ gdb バイナリ コアファイルあとはスタックを解析するなり変数の値を確認するなりお好きにどうぞ! メモ connect() EINPROGRESSを確認 write待ちする→起こされる つながってる! 小さいwrite(2)を大量に呼んでいると、予想以上に細かいパケットがちまちま送信されてしまい、スループットの低下につながることがある。 writev(2)を
cagraの開発が行き詰まるとちまちまやっていた電子工作の写真をのせてみる。 上:DesignWave Magazine 2007年7月号 付属FPGA基板。横に出てる6-pinヘッダはXillinxのParallel JTAG Adapterを直接つなげられるように。 左:ChaNさんのCOMポート接続AVRライター 参考ページ 右:USBasp AVRライター 参考ページ ワンチップマイコン楽しそうだなーとおもいつつ、PICライタがそれなりに高くて手をだせないでいたところ、masa-u氏にAVRを薦められてはまった次第。 AVRは無駄に速く(20Mhzで1 inst/clk)、RAMもそれなりに広いので普通にC言語で書けてしまうのがいいところ。あとは12Mhz水晶を載せればGPIOのみ(外部チップなし)で簡単なUSB機器がつくれます。(cf. AVR USB) とりあえずAVR USB
3度めの正直でやっと設定に成功したのでいろいろメモ。 続きを読む まだ1つ残ってますが事実上終了したのでここ3日間にやったことをログ。 ベイジアンフィルタの勉強に作ってみた。 http://github.com/nyaxt/advtwit/tree/master 今回はカイ2乗分布を利用したベイジアンフィルタを用いたけど、これを仮定しないシンプルなPaul Grahamのモデルの方がうまく行く気がする。 とりあえず1日で飽きたので眠らせておく。 以下README転載: = advtwit.rb A twitter client for freaks. == Description This is a twitter client written in ruby optimized for twitter users having a LOT of friends. == Dependenc
更新してみる。最近は物理の勉強が忙しく、なかなかPCに向かう時間がまとまってとれない。8月にはいったら夏休みなのでもうちょっと時間とれると思うのですが… 出版社の方から献本頂きました。ありがとうございます。レビュー遅くなってごめんなさい。 詳解 画像処理プログラミング 作者: 昌達慶仁出版社/メーカー: SBクリエイティブ発売日: 2008/03/27メディア: 単行本購入: 6人 クリック: 162回この商品を含むブログ (28件) を見る 二次元画像処理における基本的なトピックが良くまとまっています。最初の章に、BMPファイル形式の読み書きの方法も載っていて、始めての方でも躓くことなく読み薦められると思います。図も多用されており、解説は非常にわかりやすいです。また、画像圧縮に関してはかなり踏み込んだ解説をされておりJPEGデコードまで網羅されています。 しかし、サンプルコードの品質は少
概要 分散ストレージエンジンcagraのテクニカルデモ版です。 cagra概要についてはこちら:d:id:nyaxt:20080422 冗長性を持つ分散ハッシュテーブルを扱うことができます。ノードの動的追加/削除にも対応しています。(ただしノード削除後のputは一部未実装により不安定) 現時点の機能的にはmemcached + αな感じです。 ダウンロード http://static.nyaxtstep.com/cagra/nxfs-alpha-release.tar.gz hotfixだしました:d:id:nyaxt:20080427 随時アップデートしてるので最新版は: http://d.hatena.ne.jp/nyaxt/searchdiary?word=%2a%5bcagra%5d%5brelease%5d 動作環境 Mac OS X (Leopard) Linux 2.6 De
やっと開発が一段落したのでお知らせ。frsyuki氏(id:viver)との共同開発作品。 1000speakers:2の3次会で二人でひたすら組んでいたアレです。 Trac: http://nyaxtstep.com/trac/nxfs 概要 cagraは手軽に構築できる分散ストレージシステムです。 memcachedの様な手軽さで、信頼性のある分散ストレージを構築できます。 機能/特徴 zeroconf 設定項目はコマンドラインパラメータに集約 UDP Multicastによる自動ノード検出 Large Data Support memcachedに比べ、大きなデータもきちんと取り扱う事ができます。 データごとのチェックサムを保持します。 数百G〜Terabyteスケールのデータもサポートする予定 可変信頼性 データに求める信頼性(レプリケーション数)をデータごとに設定することができま
テンプレートクラスを継承しても、親クラスのメンバ変数が解決できない問題に突き当たった。 ネタ切れなのでまた#lowhacks@irc.freenode.netのまとめ。 生ログ:http://irc.nyaxtstep.com/lowhacks/2008.04.12.txt thanks to: planetさん、h0shuさん template<typename T> class ClassA { protected: int m_test; }; template<typename T, typename T2> class ClassB : public ClassA<T2> { public: void test_method() { m_test = 3; } }; これをg++でコンパイルしようとすると、m_testが定義されていない旨のエラーが出てしまう。 解決するには: C
記憶から書くので、いろいろ抜けているところがあるかも。 Dom0設定 まず普通にDebian lenny/amd64を導入。 適当にパーティション分け。/dev/sdb ~ /dev/sddは50Gバイトraid用に取って、残りディスクイメージ用LVM。VGはそれぞれのHDDに別に取っておく。 nfs-kernel-serverをRaid0上にセットアップ。共有データストレージとして使う sshdをセットアップ。RSA鍵で認証するようにする。 あとはsmbdとか、開発環境一通り。 いよいよXen lennyのamd64向けxen対応カーネルは現在ない。stableのパッケージも読み込めるように/etc/apt/sources.listに追記、etch版xen kernel導入 apt-get install xen-tools bridgeutils 自前でbridge構築する /etc/
背景 #lowhacks @ irc.freenode.netを作ったが、低レベルプログラミングはインラインアセンブラでちょっとした事を書いた事ぐらいしかないことに気づいた。とりあえず純asmでHello, worldぐらい書けなきゃなーということで、手元の環境で書いてみる事に。 Linuxは山ほど資料があふれているのと、既に大筋の方法を知っていることもあり、某氏が挫折したらしいMac OSX環境でやってみることに… 続きを読む 実際にコードを書いてみる 続きを読む こういうことに興味がある方は是非: #lowhacks (irc.freenode.net:6667 charset=utf8) 迄! 姉妹チャンネルの #renderist もよろしく! どちらにも常駐してます
via. http://www.kmonos.net/wlog/83.html#_1255080321 この件に関してはずっと誤解していたので、調べてみた。 昨日の#lowhacksで騒いでいた件のまとめ。 「C-torで例外を投げてはいけない」というのは、確かに迷信のようだ。 むしろ、Exceptional C++の著者Herb Sutter先生やC++ FAQ Liteでは「C-torの失敗」を伝える方法として積極的に使うよう推奨されている。 「C-torが例外を投げてはいけない」の迷信の根拠として、良く言われているのがC-torが失敗すると、D-torが呼ばれないので、リソースリークが起こる、ということだ。 これは正しくて、C-torが失敗した場合、その生成に失敗したクラスのD-torは呼ばれない。 ためしに以下のようなコードを実行すると、 #include <iostream> v
昨日twitterで騒いでいた件まとめ。問題解決に7時間つぶれた…。 Leopardで有効化されたucontextですが、sizeof(ucontext_t)がAPIとApple側実装とで異なっている為にgetcontext()やswapcontext()を使うとメモリ破壊を引き起こします。 詳細は/usr/include/sys/_structs.hの128行あたりを見てください。ここで_XOPEN_SOURCEが有効/無効でsizeof(ucontext_t)が変わりますが、実装は有効、API利用時は無効で定義されるらしく、ポインタで結果を受け取るようなgetcontext/swapcontextのようなAPIを呼び出すと__mcontext_data分だけ多く書き込まれてしまいます。 回避するにはこの_STRUCT_MCONTEXT __mcontext_data分だけ多めにcont
http://www.ipa.go.jp/about/press/20071023.html テーマ「物理ベースのレンダリングを柔軟性を持って行えるアーキテクチャの開発」竹内PM '06下期未踏ユースのプロジェクトで「スーパークリエータ」に認定されました。 まだ若輩者の私には勿体無い賞だと思いますが、その名に恥じないようにこれからも頑張って技術を磨いていきたいと思います。 未踏期間中たくさんの方々のご支援を頂きました。この場を借りて御礼申し上げます。
git clone git://github.com/RobertCNelson/linux-dev.git; cd linux-dev ./build_kernel.sh vi system.sh # MMC=/dev/sdd ←microSDのブロックデバイス。環境によって適宜かえる dd if=/dev/sdd of=bkup bs=1M # 一応バックアップ ./tools/install_kernel.shあっさり FPGAミキサーのコンパネをどうしようか悩んだ末、このボードを見つけたので試してみることに。またLinuxかよと思ったけど、起動10秒らしいので耐えられるかなっていうのと、おそらく以前書いたソフトウェアのGUI部分がそのまま流用できるんじゃないかなというもくろみ。Raspberry Piを使おうと思ったのだけど、映像出力がコンポーネントかHDMIなので、LCDつなげよ
このページを最初にブックマークしてみませんか?
『nyaxtのPC作業ログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く