リモートLED制御

リモートでブラウザからRaspberry PiのLEDを制御する。 同時にストリームでRaspberry piから動画をストリーミングする。Raspberry pi上のHTTPサーバとして1) node.js 2) MJPG-Streamerを導入。 ポートがぶつからないように それぞれの待ち受けポートを 1…

無線LAN

ELECOMのWDC-150SU2MをRaspberry piにつなぐが認識されず。 ドライバがないものと思われる。ネットをあさって、ドライバのインストールをやってみるが、やはり認識せず。 断念し手元にあったBUFFALOのUSBドングルをつなぐ。こちらは何も苦労せずに…

初期起動スクリプト

/etc/rc.local に実行したい処理を記述すれば、起動時に自動的に実行してくれる。

常駐化

forever のインストール $ npm install -g foreverプログラムの起動 $ forever start server.jsこれで、server.jsが落ちても自動的に再起動され、常駐化される。常駐化の解除 $ forever stop server.js

node.jsインストール

node.jsのRaspberry piへのインストール ダウンロード $ wget http://node-arm.herokuapp.com/node_latest_armhf.debインストール $ sudo dpkg -i node_latest_armhf.deb確認 $ node -v v0.10.31

CTRL - caps lock

RaspberryでCTRLキーとcaps lockを入れ替えるには/etc/default/keyboardにてXKBOPTIONS="ctrl:swapcaps"とする。 既にXKBOPTIONSに他の設定がある場合はカンマ区切りで並べる。 ex. XKBOPTIONS="terminate:ctrl_alt_bksp,ctrl:swapcaps"

SSH login

Raspberry pi にリモートログインするにはPC上のLinux(Virtual Box)からの場合、$ ssh pi@192.168.11.2※192.168.11.2はRaspberry piのIPtelnetはデフォルトでは開いていない模様。

root password

デフォルトではrootのパスワードは設定されていない模様。$ sudo passwd rootで設定。ユーザアカウントは USER : pi PASSWORD : raspberry がデフォルトで設定されている。

keyboard layout

/etc/default/keyboardXKBMODEL="jp106"に変更。 (raspi-configで設定しても、何故か、設定できなかった)

RParsec インストール

ParsecをRubyに移植したおのがRParsecである。Parsecはコンパイラコンビネータであり、lex.yaccなどとは異なり、ライブラリ形式でコンパイラ作成をサポートしてくれる。解析方法は再帰下降型。左再帰が解析できないとのこと。■インストール方法 https://ruby…

再帰的ファイル一覧表示ツール

再帰的にディレクトリを辿りインデントしつつ、ファイルを表示する。 実行は以下のように入力する。 引数が表示したいパス> dirtree.rb c:\work def print_file_list(fpass, level) Dir.chdir(fpass) Dir.glob('*'){ |f| level.times{ print " " } print f, …

8女王問題 その2

8女王問題の解法その2 1つの列には1つ以上女王を置けず、かつ1つは女王を置かないといけないという事実からのアルゴリズム。 その1よりかなり効率的。 但し、回転や反転対称は重複して解として出力する。 #!/usr/local/bin/ruby # -*- coding: utf-8 -…

8女王問題 その1

8女王問題。 単純な(力技の)実装 セルを順番に試しておければ置いてみて、全て置ければ表示する。 全てのセルを試してみてダメだったら、1つ戻って(1つセルを取り除いて)リトライする。 アルゴリズムはsolveメソッドで実装している。・・・但し重複を検出…

2次元配列のコピー

Rubyのオブジェクトはdupでコピーされるが、参照先のオブジェクトまで辿ってはコピーしてくれない。 一方、Rubyでは配列は1次元配列しかない。多次元配列は配列の配列という形で定義していく必要がある。 これらより2次元配列をコピーするには各行について…

Windows上でのC++ビルド

Windows上でC++のビルドをするためEclipseの Eclipse IDE for C/C++ Developers をhttp://www.eclipse.org/downloads/からダウンロード。 ビルドにはCygwinを使用する。ビルドを実行すると multiple target patterns. Stop. とのエラーが出る。 調べると、ど…

setitimer

setitimerを用いたタイマ使用のサンプル 下記では1秒周期でシグナルが発生する。 // timer.c #include <stdio.h> #include <signal.h> #include <time.h> #include <sys/time.h> void alarm_handler(int signo); int counter = 0; int main(void) { struct itimerval delay; int ret; signal(SIGALRM</sys/time.h></time.h></signal.h></stdio.h>…

Hexダンプ

lib

Hexダンプライブラリ 指定された領域の指定された長さ分のデータを Hexダンプする。合わせASCII表示も行う。 出力先は標準出力 //----------------------------------------- void yydump(char *p, int length) { int address = (int)p; char data[17]; int …

インタフェイス情報取得 - ifconfigもどき

ソケットに対するioctlを用いてネットワークインタフェイスに関する情報を取得する。 参考資料:UNIXネットワークプログラミング16章ifconfigのソースでも同様のことをやっている。表示をなるべくifconfigに近づけた。 但し、こちらはダウンさせたインタフェ…

netfilterフック2

netfilterフックルーチンその2 以下の4箇所のフックポイントでフックしパケットの内容をmessagesに出力する。 ・PRE_ROUTING ・POST_ROUTING ・LOCAL_IN ・LOCAL_OUT あくまで解析/デバッグ用。ログ吐きすぎ。ビルドの方法などは以下参照。 http://d.hatena.…

カーネルビルド2

■ Linux Kernelビルド方法 ■ 【参考】 http://www.nina.jp/server/redhat/kernel/kernel-rebuild-2.6.html 1. カーネルソースを適当なディレクトリに展開する。 カーネルソースはhttp://www.kernel.org/からダウンロードする。2. カーネルビルド環境を初期化…

デュアルブートインストール

基本的な手順①Linuxインストール ②Windowsインストール ③Linuxインストール上記①でLinuxをインストールするのは、パーティションを切るため。 ③で再度Linuxをインストールするのは②でWindowsをインストールすると MBRが上書きされてしまうため。・FDISK /MBR…

etags

カーネルソースのルートで$ find . -name '*.[chsS]' -print | etags -とすると巨大なTAGSファイルが生成される。 (kernel3.6.6で約76MB) 後はemacs上でESC + . で検索したい文字列を入力すると その定義に飛んでくれる。

xfceインストール

インストール $ sudo yum groupinstall XFCE設定はログイン画面でセッションの中からxfceを選択する。

grubデフォルトOS設定

grubで起動するデフォルトのOSを変更するには /boot/grub2/grub.cfgの中の上から10行目付近の set default="0" の数値を変更すればよい。 0オリジンでgrubの表示に現れるOSを指し示す。 上記ファイル(grub.cfg)のmenuentryでOSの一覧の上からの順番に一致す…

netfilterフック

Linuxのnetfilterフック関数の作成ソースファイル(exp_netfilter1.c) /* * exp_netfilter1.c */ #include <linux/types.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/skbuff.h> #include <linux/netfilter.h> #include <linux/netfilter_ipv4.h> #include <linux/ip.h> #include </linux/ip.h></linux/netfilter_ipv4.h></linux/netfilter.h></linux/skbuff.h></linux/init.h></linux/kernel.h></linux/module.h></linux/types.h>

Debianインストール

DebianのサイトからISOイメージをダウンロードdebian-6.0.6-amd64-DVD-1.isoVirtualBoxのVMを新規作成し、上記ISOファイルをストレージに設定。 インストール。GuestAdditionのインストールに失敗している模様。 どうやらDebianを普通にインストールするとgc…

カーネルモジュール

Linuxカーネルモジュールの作成、インストール方法 ※参考「Linuxデバイスドライバ 第3版」カーネルモジュールの作成、インストール方法 Cソース(hello.c) #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_</linux/module.h></linux/init.h>…

カーネルビルド

http://www.kernel.org/ からカーネルソースをダウンロード Latest Stable Kernelとあるもの。 ここでは3.6.6linux-3.6.6.tar.bz2このファイルを適当なところに置く。 → /usr/src/kernel/現在使用しているカーネルビルドのコンフィグファイルをコピーする。 …

仮想マシン

VM

仮想マシン(Virtual Machine) 独自に設計した仮想マシン(VM) 機械語の命令セットを定義し、そのアセンブラを flex, bisonで実装。 また仮想マシン自体はC言語で実装。 VMの状態をリアルタイムで観察できるようにXでの表示を行った。上記のようにベースのV…

基数変換

コマンドラインで10進、16進の変換を行う。 /* * radixtrans.c * * hex -> dewcimal * decimal -> hex * */ #include <stdio.h> /*----------------------------------------------------------*/ main(int argc, char *argv[]) { char str[32]; int number; while(1)</stdio.h>…