調べたこと、作ったことをメモしています。
こちらに移行中: https://blog.shimazu.me/

regular

"スペース区切りも含んだ"ファイル名をランダムに選んでコマンドに渡すスクリプト

ワンライナー頑張った(ぜったいもっとまともなものがあるはず) line=$(expr $(bash -c 'expr $RANDOM % $(find . | wc -l)') + 1); find . | head -n${line} | tail -n1 | xargs -0 -I% bash -c 'echo "%"' 一見無駄に見える初めの方にあるbash -cだけど、こ…

getcharをnonblockingで行う ( ターミナルからの入力で改行を待たない )

概要 通常、getchar()とやっても改行を入力するまでは待ち、改行を入力するとドバっと複数文字が処理される。バッファリングされているんだろうとfflushやsetbufをしても無理。ということで、ターミナル側でバッファリングされているんだろうということは検…

BigTable

卒論でDBについて調べていくと、KVS (Key-Value Store)の代表例としてBigTableがよく出てくるのですこし調べてみた。 参考1: Googleの巨大分散データストアBigtableとDatastoreを理解する 参考2: 素朴なBigtable、できること できないこと どうもRDB (Relati…

xmonad

つかってみよっかなーとかいう気軽な気持ち 参考1:UbuntuにおけるXmonadのインストールと使い方 参考2:xmonadを試す 参考3:xmonad a guided tour

今日のミーティング

Pizza-Chili Corpus Hokey Stick Curve bltin_clz

2の乗数での剰余使った分岐

結論としてはいい感じに最適化してくれた。 環境はgcc 4.7.3で最適化レベルは3でやった。 while( 1 ) { if ( counter % 2 ) { 8048308: 8b 44 24 08 mov 0x8(%esp),%eax 804830c: a8 01 test $0x1,%al 804830e: 74 0b je 804831b <main+0x2b> flag++; 8048310: 8b 44 24</main+0x2b>…

freadとreadの速度差

tuple(100byte)のデータを1万個用意し、それを読み込む速度を測った。 なお、いつかの調査でgettimeofdayは最大数us程度ずれうるということがわかっている、が、あまり関係なさそう。 結論から言うと、freadでは2000us程度、readでは10000us程度かかってい…

キー入力があるまでタスクをwhile(1)みたいに行う方法

stdinかなんかをnonblockingでやるのではなく、別threadでタスクを実行しておいて、master threadでそいつを適当なタイミングで止めてやるという話。 参考: pthreadのキャンセル pthread_cancelというのがあり、cancel pointをワーカスレッド側に用意( pthre…

自宅内からサーバを見るための名前解決

dnsmasqを利用して、自宅内からマシンの名前解決が正しく出来るようにした。 dnsmasqで始めるプライベートDNSサーバ 第20回 いろいろなキャッシュ:dnsmasq, cache proxy あたりが参考になった。 ココに書いてあることの他に、新しいDNSサーバが外に向くよう…

MPI_Status型について

教科書間違っていた。 MPI_Recvをやろうとしたらstatusがなかなか取れなくて困った。 結局、MPI_Status型は以下。(openmpiのversionは1.4.5) typedef struct ompi_status_public_t MPI_Status; struct ompi_status_public_t { int MPI_SOURCE; int MPI_TAG; …

MPI installation on ubuntu server 12.04

Type a command below $ sudo aptitude install openmpi-bin libopenmpi-dev and after installation, check whether it has correctly done. #include <mpi/mpi.h> int main( int argc, char *argv[] ) { int myid, numprocs; volatile int i; MPI_Init( &argc, &argv </mpi/mpi.h>…

win7 on kvm ( Host OS is Ubuntu 12.04 server )

かなり簡単で驚いた。 参考1: qemu,kvmでブリッジ接続 参考2:Ubuntu 12.04にKVMをインストールし、bridge接続の設定を行う 参考3:Ubuntu 12.04(64bit) + KVMにWindows Server 2008 R2をインストール まず、一応CDからisoを作成。 $ dd if=/dev/cdrom o…

サーバー上で今1000base-txなのか100base-txなのかを調べる

$ sudo ethtool eth0 もしくは $ sudo mii-tool

cpuid on Core2 Duo P9400

#define CPUID( id, a, b, c, d )\ asm volatile (\ "mov %4, %%eax\n\t" \ "cpuid\n\t" \ "mov %%eax, %0\n\t" \ "mov %%ebx, %1\n\t" \ "mov %%ecx, %2\n\t" \ "mov %%edx, %3\n\t" \ : "=m" (a), "=m" (b), "=m" (c), "=m" (d) \ : "m" (id) \ : "eax", "…

rowとcolumnのアクセス速度の差 (キャッシュにヒットするかどうかという話)

Cはrow-majorだからa[i][j]ってやったときはjを小さいほうのループにすべきという話 //! gcc -o array.bin array.c -W -Wall -O3 -std=gnu99 #include <stdio.h> #include <stdint.h> #define RDTSC(X)\ asm volatile ( "rdtsc" : "=A" (X) ) #define ROW 32 #define COLUMN 8 i</stdint.h></stdio.h>…

continuous_tweet.sh

引数をつぶやくrubyスクリプトを用意しておく。 #!/bin/zsh num=100 while getopts "n:" opts do case $opts in n) num=$OPTARG ;; esac done shift $((OPTIND-1)) str=''; for ((i=0;i<$num;i++)); do ruby $HOME/.emacs.d/elisp/emacs_tweet.rb "$1"$str ;…

容量の大きいファイルを探す

du -hでGB単位で表示されるもののみ検索。Downloadディレクトリでやったら結構有効だった。 $ du -h | grep --color -E '^([1-9][0-9]*|0)(\.[0-9]+)?G'

git pushしたときに、サーバーサイドのリポジトリをついでに更新する

webサイトを他の管理者と共に開発するbranchと公開用branchを用意し、公開用branchにマージするとそれが即座に公開用リポジトリに反映したかったので調べてみた。 参考: Git で集中リポジトリーに push したら、自動でワーク・ディレクトリーにも反映させる…

ffmpegでMTSをmp4に変換する

これまで動画のエンコーディングはwindowsのMediaCoderでしかやったことなかったので、コマンドラインでやってみようと思い立ってみた。 mencoderってやつとかffmpegとかあったんだけど、ffmpegをつかってみた。 $ ffmpeg -i from.MTS -b:v 8000k -strict ex…

PCほしい

最近PC壊れたし(X201sが火を吹いた)、光を引くことに決めたのでコレを機にサーバ用マシンを1台用意したいなあと思っている。予算は3万ていど。 で、以前安く買ったDY-UD200っていうチューナがわりとよさそうなので有用に使いたいと思っている。 構成として…

DenyHostsのインストール

サーバー難しくて困る・・・ ubuntu12.10なのでaptで入るから楽ちん。 一応自動起動にしようとしたらもうなっていた。 $ update-rc.d -n denyhosts default System start/stop links for /etc/init.d/denyhosts already exist. $ ls /etc/rc2.d/S20denyhosts…

Nautilus Terminal nautilusの上に端末を表示する。 nautilus内でディレクトリを移ると、上の端末もちゃんとcdしてくれる。逆はしてくれないのは残念。 $ sudo add-apt-repository ppa:flozz/flozz $ sudo apt-get update $ sudo apt-get install nautilus-t…

xpadのデータをdropboxでバックアップ

保存先は~/.config/xpadなので、これをdropboxで共有すればOK.

apache2.2.22とpassengerとrailsのインストール

apache2.4もあったが、持っている本(Apache クックブック)だと2.2だし、ネットに落ちてる資料も2.2は多いし、aptで入るのでとりあえず2.2にした。 $ sudo aptitude install apache2 $ gem install passenger $ passenger-install-apache2-module (書いてある…

apacheのprefork版とworker版ってやつについて

apacheは、リクエストごとにforkするかthreadでわけるかっていう話。 phpがスレッドセーフじゃないらしい。 debianとかなら、aptitude install apache2すればmod_phpをロードしているかどうかで振り分けることができる。 Installing apache2 with apt-get, a…

現在設定してあるiptablesを起動時に読み込む( ubuntu 12.04 )

12.04というかdebian系という話ではあると思うけど $ sudo -i # mkdir ~/iptables # cd ~/iptables # iptables-save > latest.fw # vi iptables.sh ここで以下のファイルを作成 #!/bin/sh ABSPATH="/root/iptables/latest.fw" iptables-restore < $ABSPATH …

サーバへのmulti userでのrvmのインストール

installation guideに従うだけ。 umaskとかあんまりちゃんと考えたことなかったけど、002ならまぁok(よーするにrvmグループで読み書き可ならok)と理解した。 rvmグループに追加するコマンドはusermod -a -G [グループ名] [ユーザー名]。 $ sudo aptitude ins…

localeがubuntuでうまく設定されてなかった

さくらのVPSだったんだけど、始めにlocaleがenだったっぽくてja_JP.UTF-8がおかしい。 どっかで設定したんだろうけど、記憶にはなくて謎。 先輩とかかなあ。 localeを直すには sudo locale-gen ja_JP.UTF-8 sudo dpkg-reconfigure locales すればOK. 参考: …

CentOS5.9でrails3系を動かそうとしたときのjsエンジンなくて面倒な話

面倒。 jsエンジンってそもそもなんだよっていうレベルなので、苦しみました。 注目のサーバサイドJavaScript実行環境「Node.js」 とりあえず、javascriptをサーバ側でも動かしてやろうってことでok? あまり良くわかっていない・・・ 結論からいうと、nodebr…

付箋紙ソフト on linux (というかunity)

xpadっていうのがaptで入るらしい http://moebuntu.blog48.fc2.com/blog-entry-371.html