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

ぼっちリーディング(1)

カーネル読んでみたいなーと思ったので読んでみる。対象は手元に転がっていたFreeBSD。 $uname -a FreeBSD foo.localdomain 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21 15:48:17 UTC 2009 root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC …

組み込みOS自作入門勉強会(4)

この日は3章を読んだ。メインはROMとRAMの違いとメモリ上の領域の話かな。 ROMとRAM ROMは読み込み専用でプログラム側からは書き込みできないけど、電源OFFしても内容が残る。RAMはプログラム側から値を読み書きできるが、電源OFFすると値は消える。ROMは種…

組み込みOS自作入門勉強会(3)

今日は2章を読んだ。制御を行うICチップをコントローラと呼ぶ。コントローラの制御はレジスタ経由で行う。たとえば、シリアルコントローラならばコントローラの持つ特定のレジスタに1byte書き込むと、コントローラ側でその1byteをシリアル通信してくれるなど…

組み込みOS自作入門勉強会(2)

一章の続き。はじめてリンカスクリプトを書くなどした。書き込むときは、ディップスイッチをON,ON,OFF,ONにする。端末エミュレーターはminicomを使用した。人に聞くとscreenでも接続できるらしい。今度やってみよう。んで、ようやくhello worldが出せた!写…

組み込みOS自作入門勉強会(1)

Sakai Hiroaki's Home Pageを読み始めた。読書メモを残していく。まずは1stステップ。このステップのメインはクロスコンパイラ環境の構築である。当初、MacOSXでやろうとしたもののgccのコンパイルがうまくいかずに断念。そのため環境は Ubuntu10.04 on VMwa…

SRM 471 EllyPlaylists

class EllysPlaylists { public: int countPlaylists(vector <string> songs, int K) { int ret = 0; vector<string>::iterator it = songs.begin(); while( it != songs.end() ){ ret += seq( *it, K, 1, songs ); it++; } return ret; } int seq(string song, int K, int n</string></string>…

SRM 471 PrimeContainers

#include <set> #include <iostream> #include <string> #include <vector> #include <sstream> using namespace std; class PrimeContainers { public: int containerSize(int N) { int ret = 0; int i = 1; set<int> s; while(i){ if(i > N) break; s.insert( ( N / i ) ); i = i << 1; } set<int>::iterator </int></int></sstream></vector></string></iostream></set>…

SRM470 LinearTravellingSalesman

class LinearTravellingSalesman { public: int findMinimumDistance(vector <int> x, vector <int> y) { int ret = 0; vector< pair<int, int> > pos; for(int i = 0; i < x.size(); i++) pos.push_back( make_pair( x[i], y[i] ) ); sort( pos.begin(), pos.end() ); for(int i</int,></int></int>…

第4回kernel/vm勉強会に参加してみた

面白そうだったので参加してみた.発表者のPlan9率の高さにあの会場にいるとPlan9がメジャーなOSに見える.あとはBSDとUbuntuくらいだったかな.会場でYUREXが大人気だった.500円だったし,一つくらい買ってもよかったかも.発表は全体的に興味深くて面白か…

SRM469 TheMoviesLevelOneDivTwo

連続した2席があるかを見ていくだけ. #include <iostream> #include <vector> using namespace std; class TheMoviesLevelOneDivTwo { public: int find(int n, int m, vector <int> row, vector <int> seat) { int ret = 0; int s[n][m]; for(int i = 0; i < n; i++) for(int j = 0; j </int></int></vector></iostream>…

boostをインストールした

# cd /usr/ports/devel/boost-all # make install cleanこれで導入は完了./usr/local/include/boost にヘッダファイル,/usr/local/lib にライブラリファイルができるはず.boostの中にはヘッダファイルのみでコンパイルできるものと,ライブラリをリンクさ…

boost::asioを使ってtwitter api にbasic認証する.

basic認証して,home_timelineを取得する例を示す.今回はjson形式を取得した.picojsonはjsonをデコードするために使用した.XML形式や,RSS形式でやる場合はpicojsonは必要ない.twitter apiが扱う文字コードはUTF-8であることに注意.またtwitter apiはba…

SRM468 RoadOrFlightEasy

はじめて臨んだTopCoder.以下のような強引なやり方は思いついたもののC++での書き方がわからず時間内にsubmitできず.行っているのは,差分のvectorをつくって,差分を降順ソート.roadTimeの合計-(差分の先頭からK個分の和).ただし,差分の値が0以下ならr…

参考

23.5. Updating FreeBSD from Source http://www.xdelta.net/wiki/FreeBSD/makeworld.html 8.0 RELEASE インストール - 気の向くままに ~備忘録@wiki~ - アットウィキ mergemasterは-sivaでなく-UPiで。 - 春木屋

7.0から8.0へ

面倒くさがって上げてなかったFreeBSD7.0をFreeBSD8.0へあげた.そのときの作業メモを残す.csupを使ってソースを入手するのだけれど,なるべく早いサーバーを調べたい.そのためには,fastest_cvsupを使う. # cd /usr/ports/sysutils/fastest_cvsup && mak…

Software Design総集編を買った

付属のindex.htmlから閲覧用のflashを呼び出して使う形なんだけど,このflashが使いにくい.なので,libs/backnumber.xmlを利用してHTMLを生成するRubyスクリプトを書いた.Ruby初めて使ったのでRubyっぽくないコードだと思う,たぶん.HTML生成部分とロジッ…