2012-01-01から1年間の記事一覧

BumblbeeなArch Linuxでpaeカーネル用の現時点での最新nvidiaドライバー(310.19)を使う

自分はDELL XPS15をメイン機に使っています。 こいつはNVIDIA GT540Mを積んでいるのですが、面倒なことにGPU切り替え技術「Optimus Technology」が採用されています。普通にはNVIDIAの公式ドライバーは使えず、Bumblebeeというオープンソースプロジェクトを…

How to extend Boost.Asio

この記事はC++ Advent Calendar 2012 12日目の記事です。Boost.Asio、みなさんもお使いのことと存じますが、あれこのソケットなかったっけ? とかこれもAsioで使いたいなぁと思ったことはありませんか? そんな時のためにこの記事ではBoost.AsioのProtocol, so…

Ubuntu上でのgccビルドの問題

結構前の話でUbuntuでgccのビルドをしようとした時multiarchの関係でldが「crti.oが無い」って死んでしまう自体が発生。 それで解決したんですが今また同じ事に嵌ったのでメモ。たぶんこれと同じ http://gcc.gnu.org/ml/gcc/2012-02/msg00210.html export CP…

printk(KERN_* ...) より pr_*()を使う

Linuxでデバイスドライバを作るとき標準出力が無いので代わりにカーネルバッファに情報やエラーを出力します。 普段はprintk()を使っているのですが、思いたちでLinuxのメーリングリストに投げるパッチの体裁をチェックするscripts/checkpatch.plに書けてみ…

回答求ム!

Linux bridge of my own making: arp request never succeeds - stackoverflow http://stackoverflow.com/questions/13082706/linux-bridge-of-my-own-making-arp-request-never-succeeds

前の記事でイーサネットフレームを非同期に受信するプログラムについて書きましたが、 あれを起動している最中、イーサネットフレームのtypeが0x26なものが出てきました。 この値はarex::ether_typeのどの値にも該当しません。 ちょっと気になったので調べて…

libarex: パケットレシーバー

pfpacket / libarex https://github.com/pfpacket/libarex引き続いて、libarexにethernetのサポートとその他変更を加えたので、 これを使って簡単に何か作ってみようと思ったのでパケットレシーバーを作ってみました。イーサネットフレームを受信してその中…

前からやろう、やろうで先延ばしにしていたBoost.Asioでのpacket socket対応をしてみました。pfpacket / libarex https://github.com/pfpacket/libarexpacket socketの説明は`man 7 packet`か http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/packet…

コンソールでの日本語環境

自分のラップトップにArch Linuxをインストールして1ヶ月以上たちました。 自分がプログラミング用に使うサブ機なんですが、性能が低いのでXなんか重くてストレスがたまるだけなので、 いつもXなしのコンソールで作業します。しかし、調べものやメールを見る…

wpa_supplicant

最近Arch Linuxがお気に入りで、ずっと使ってるんですが無線LANの調子が悪い。 無線LAN子機としてUSBWLAN(WLI-UC-GN)を使っていて、何もせずすんなりと認識してくれたのは良いんですが、 wicd使ってるとなぜかDHCPでアドレスがもらえない。ということでwicd…

(実装) クワインマクラスキー法を用いた論理関数の簡単化

一ヶ月ぶりの投稿です。 自由課題でクワインマクラスキー法を実装すれば点数がもらえるという事で早々に実装。 pfpacket / Quine-McCluskey https://github.com/pfpacket/Quine-McCluskey ・クワインマクラスキー法とは 実際のところwikipedia http://ja.wik…

Welsh-Powellで彩色数にならない例

昨日、[グラフ理論 Welsh-Powellの頂点彩色アルゴリズムを実装してみた] http://d.hatena.ne.jp/devm33/20120616/1339811432 という記事を書いたが、教科書に載ってあった例はどれも彩色数になるものばかりだったのでいい問題がないか ぐぐってみたがなかな…

グラフ理論 Welsh-Powellの頂点彩色アルゴリズムを実装してみた

そこら辺にあった離散数学の教科書をペラペラめくってるとグラフ理論の話があったので 「これBoost.Graphつかえば...」 と急に思い立ってBoost.Graphをいじり始めて、 Welsh-Powellのアルゴリズムという手頃な問題を見つけたので実装してみた。(頂点)彩色と…

SYN floodのコードをgithubで公開

SYN floodのコードをgithubで公開しました。 gitはやっと「一人」で作業するには問題ない程度になりました。Linux Kernelが送信先からの[SYN,ACK]セグメントに対し[RST]セグメントを送信するのはIP_HDRINCLを設定していない うんぬんかんぬんでは無く、[SYN,…

Boost.Asioの各種socketでsocket optionを有効にする

Boost.Asioでsocketのsocket optionを有効にする方法は2つあるんですが(もっとあるかも)1. socketのnative_handle()を呼び出す。 native_handle() http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/reference/basic_socket/native_handle.html を…

Androidプログラミング

図書室にはAndroid HacksなどのAndroid本がいくつかあったのでサラっと読んでみて ネットで調べながらいろいろいじくりまわすこの頃。ついに今日「作ればわかる! Androidプログラミング」を買ってしまった。Javaなのは微妙だが(慣れてないから)、なんだかと…

スマートフォンを手に入れた

自分の携帯電話(ガラケー)が壊れたので、先週、auショップにてAndroidスマートフォンに機種変更した。 LinuxカーネルということもありAndroidに興味があり、さっと調べた感じでは概ね評価が良かったので、機種はiPhoneではなくXperia Acro HDにした。クラウ…

CASL2 シミュレータ

最近、思い立ったようにCASL2シミュレータつくってます。 CASL2はとっても仕様が簡単なので。x86とかやり出したら死ぬ...勉強のためにコンパイラにバイナリコード吐かして、シミュレータで実行する形になる予定。 ただ、自分の乏しい知識と技術では: 命令コ…

カーネル/VM勉強会@関西 其の参

4/1に行われた「カーネル/VM勉強会@関西 其の参」に参加してきました。 駅から京大とは真逆の京都御所まで行ってしまい、最初の発表を半分くらい聞きのがしてしまいました。 初勉強会だったのでちょっと緊張しました。 - 以下敬称略@mayahu32「マルウェアの…

BOOST_IOSTREAMS_USE_ DEPRECATED

ー追記,結論ー の enum file_descriptor_flags { never_close_handle = 0, close_handle = 3 }; をつかって、 boost::iostreams::stream<boost::iostreams::file_descriptor> iosfd(fd, boost::iostreams::close_handle); という風に使う。 http://www.boost.org/doc/libs/1_49_0/libs/iostreams</boost::iostreams::file_descriptor>…

Boost.Iostreamsがわからない

ファイルディスクリプタをストリームで扱いたいと思い、Boost.Iostreamsを使おうとおもいたったはいいが、 コンパイルがことごとく通らない。ファイルディスクリプタ や FILEポインタ を C++ iostream から使う http://ameblo.jp/topazbc/entry-10095665489.…

-ftemplate-depth

またもやTwitterネタなんですが、 「「1から100までの和を表示するプログラムを作れ」という問題を鼻で笑う諸君、「但し変数は宣言済の int x 以外は使わないこと」 という条件を付けても鼻で笑っていられるかな? 」というツイートが流れてきて、C++erの方々…

MACアドレス変更

TwitterのTLにMACアドレスがなんとかかんとかとあって、ふと思い出したのでメモ。 #include <iostream> #include <string> #include <algorithm> #include <stdexcept> #include <cstring> #include <cerrno> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <net/if.h> #inc…</net/if.h></netinet/in.h></sys/ioctl.h></sys/socket.h></sys/types.h></unistd.h></cerrno></cstring></stdexcept></algorithm></string></iostream>

signal handler with signal_set

前にnon-staticなメンバー関数をシグナルハンドラとして実行する汚いクラスをネタに記事を投稿しました。 すると、アキラさんから本ブログ初の「Boost.Asioのsignal_setを使ってみては」というありがたいコメントを頂いたので遅くなりましたが ちょっと作っ…

TCP Header class

とりあえず前の投稿の内容 + 下記のtcp_header.hpp とで一応SYN flood らしきものが作れました。 ただシステムコールレベルで socket(AF_INET, SOCK_RAW, IPPROTO_TCP) を使用していて、IP_HDRINCL を有効にしていないためか、 カーネルが勝手にRST を送信し…

PSPSDK 無線LANに接続

久しぶりにPSPSDKいじったのでメモPSPでsocket APIでインターネットにアクセスするために、 まずPSP本体をインターネットに接続するためにWireless LANでAccess Point(AP)に接続しなければならない。そこでpspnet_apctl.h で宣言されているAPIを使用する。ま…

*[プログラミング]boost asio raw socket programming 2

ようやく自分の頭の中でboost.asioのローレイヤーネットワークプログラミングが明らかになってきました。まず基本。 asioではraw socket生成にbasic_raw_socketを使います。 これはLinuxの生のシステムコールを使用した場合の raw_socket = socket(AF_INET, …

boost asio raw socket programming

ブログ書くの久しぶりですね。最近、boost.asioでrawソケットいじれたれたらいいなぁと思ってずっとicmp/ping.cpp を見てました。 icmpだけできてもあれなんで、他のプロトコルも追加してみたいなと思い資料を探していたのですが、http://www.boost.org/doc/…

BrainF*ck

この前、hbliatさんからC++でBrainF*ck作ってみろやと挑戦状が届いたので作ってみた。追記: 下記のをC++11のラムダ式でむりやり書いてみた(やっつけコード。眠い...) #include <iostream> #include <fstream> #include <string> #include <vector> #include <map> #include <stdexcept> #include <iterator> #include <functional> clas</functional></iterator></stdexcept></map></vector></string></fstream></iostream>…

シグナルハンドラとしてメンバー関数を実行

CTRL-Cやkillコマンド等でプロセスへシグナルを投げるとそのプロセスのシグナルハンドラが実行されます。ここではシグナルハンドラとしてオブジェクトのメンバー関数を実行してみようと思います。結論を言うと「無理」です。いやstaticなら行けそうだけど。…