syslogとrsyslogの違い

  • syslog

syslogとはシステムの動作を監視し、logとして記録したものを、ネットワーク上で転送するための標準規格です。またそのプログラムを言います。
デーモン、アプリケーションなどは、常時動作をしているので情報が流れていきます。これを川の流れと考え、ユーザは網(filter)をかけることによって、欲しい情報を得ることができます。

  • rsyslog

syslogに'r'が付いたものは何者なのか…
この'r'は"reliable"のことで「信頼性」を意味します。なぜかというと、logの転送方式ががTCPになっているからです。
不正アクセス等に対処するために、信頼性の高い方式で正しく(真正)logを取らなければならないのです。

あ、真正とは…
偽りのない、本物という事です。
正しいと言い張っても、改ざんされたものであったりしては困ります。


このあたりの記事などが参考になりました。
syslogdの限界と次世代シスログデーモン (3/3):新世代syslogデーモン徹底活用(1) - @IT

インターネットで使われる標準プロトコル
Part2 TCP編--接続と切断,制御,仲介,確実かつ効率よく届ける | 日経 xTECH(クロステック)

grub色々

とりあえず春休みにはいりましたので、パソコンの整理
今日はbootメニューの整理

とりあえず、ずっとupdateしたままでboot選択画面が大変なことに。
今まではOSごと入れ直していましたがちょっと面倒くさい。
なんで/bootにある使われていないカーネルについては削除。
念のため一つ前のものに関しては残しておきました。

aptitude search linux-image

aptitudeはパッケージ管理のコマンド
これで、パッケージの依存関係などを調べて…
いらないものを一つずつ削除

あとは/etc/default/grubを書き換えて文字色を変えました。
白黒なんて平凡なので少しカラフルに…
では

サーバのアップデート

お久しぶりです。
近況として、現在大学の技術補助員として仕事をさせていただけるようになりました。ダメダメですけれど、知識も深めていきたいですし、技量も上げていきたいと思っています。

さて今回は、サーバのアップデートをしました。
管理者権限で、

$ sudo apt-get update

を行いました。
しかし404エラーにより、更新できず。
ここで、何も分からなかったので

  1. source.listのアクセス先の調査
  2. バージョンのサポート期間
  3. 更新リストが多すぎてうまくいかない
  4. リポジトリの参照場所間違っていない?

を確認することにしました。

まず、update時の接続先ですが、調べたソースどっか行っちゃった…
でもこれでうまくいくことはなかった。

次に、バージョンのサポートですが、最終的に正解はこれです。
なんで気づかなかった…。しかし、これがきっかけで少し何かを確かめる手段を得ました。それは後ほど。

第三に、更新リストが多すぎてうまくいかない。見た限り更新リストは50も無かったはず…でも解決法があるかぎり試す価値はあると思いました。
更新リストが多すぎてapt-get updateが失敗する
こちらのサイトを参考に作業しました。が、予想通り解決しませんでした。

最後に、リポジトリの参照場所を間違っていないか。サポートが終了したものについては "http://old-releases.ubuntu.com" と言う場所にあるらしいです。これがうまくイカなかった理由は…"releases"の最後の"s"をつけ忘れていた…
apt-get updateでエラー(404 Not Found)が出たときの対処法
こちらのサイトを参考にさせて頂きました。


ここで反省。

  1. source.listの情報ですが、情報が古すぎました。もちろん、現在もうまく行っているようですが、新しい情報に複数当たるべきでした。
  2. バージョンのサポートの件に関しては、情報に複数当たっていたら見つかったと思います。普段はHitした順に上から2〜3(情報がバラバラの場合はもう少し当たる)は確かめるようにしていますが、今回は徹底できませんでした。
  3. ミスタイプが多すぎる。焦っちゃ駄目です。

二番目に述べた確かめるための手段ですが、ドコドコに接続できません!!というエラーが出たらそのURLを検索してみることです。無いと言われて無いのは当たり前ですが、その上については存在するかもしれません。サポートが終了しており、参照しようとしていた先は"http://old-releases.ubuntu.com/ubuntu/"にあると思います。(9.10 Karmic Koalaが存在することを確認)

リリース期間、サポート期間はここで確認できます。
Ubuntuとは



9.10から10.04LTSへのアップグレードを行いました。
10.04LTSからその他のバージョンへアップグレードをする際は設定が必要のようです。(じっくり読んでないので詳細はわかりません)
Ubuntu 10.04から11.04へのアップグレード
こちらの方のページを掲載しておきます。


新しいものにすぐ飛びつくのは痛い目にあうかもしれません。
でも極力新しいものにアップグレードをしましょう。
サポートが終了しているということで、このような事象に出会う可能性もあります。

文字列の引渡し

文字列の引渡しにはintentメゾットを使った。

Intent intent = new Intent(this, ImageButtonEx.class);
intent.putExtra("skey", "hoge");

thisの部分に引渡しのクラス名、ImageButtonEx.classの部分に引渡しのクラスを指定。
その下の文は引渡し先の"skey"に"hoge"を代入している。


これで文字は引き渡せているけど…
引き渡した先のアクティブ実行どうするんだ…?

aliasコマンドと.bashrcの編集

C言語を使ったプログラミング演習が始まり、その中で"ansi規格"でのプログラミングを心がけるよう話がありました。便利なことにgccには"-ansi"オプションで、ansi仕様にコンパイルをしてくれるオプションがあります。他にもすべて警告を表示させる"-Wall"、やC99準拠でのコンパイル"std=c99"つけるようにとのこと。
オプションをきにしたことがなかったので、意外や意外警告が多くてビックリ(*o*)
人為的なミスは何とも仕方ありませんが、可能な限り正しいプログラムに正すため必要なことだと感じました。


そこで本題です。そのオプションをつけるためにも…毎度打ち込んでいるのはちょっと面倒くさい…楽したいですから!そこでこのコマンドを使います。

$ alias [command name]='[command(optionなど含む)]'

aliasコマンドです。書式は上の通りです。これでコマンドにオプションを含ませることができます。で、私は以下の通りに変更します。

$ alias gcc='gcc -Wall -ansi -std=c99 -lm -o'

"-lm"(math.hを使ったときよく忘れる)と"-o"も加えておきます。
これでできたーOKだーー!

後日…
設定が消えている…だと!?
消えていました。".bashrc"を編集すると解決しそうです。".bashrc"はシェルの設定ファイルのことです。
ここにコメントと先ほどの一文を追加

$ #gcc add option alias
$ alias gcc='gcc -Wall -ansi -std=c99 -lm -o'

ね、簡単でしょ?まぁ調べてやってみましたからw
最後に

$ source ~/.bashrc

を実行して更新完了です。再度ログインされるまで変更内容が反映されないようです。

  • 今回分かったことと補足
    • ファイル名の前に"."をつけると隠しファイルになる
    • aliasコマンドを使ったものの前に"\"をつけると編集前のコマンドが使える
    • bashrc = Bourne again shell run command

androidアプリ開発環境導入

今日はレポートも前日に済み、時間があったので夏に計画しているandroidの勉強のために少し動いてみました。
単純に環境を導入しただけなのですが…
android.com
を参考に。

1.step2の「SDK download page.」でOSにあった物をDL
2.展開してください。カレントディレクトリにtar(tar.zip)展開する場合

  % tar (z)xvf ./file name

3.eclipseを システム > システム管理 > Synaptic package manager
 から入れて、step3の「Installing the ADT Plugin」へ。
 Downloading the DT Plugin」の手順へ。
4.step4
5.以上終わり

多くの方が導入については記事を書いていますので、詰まったらそちらの方を参考にしてみたください。

ポインタ・構造体

2011年6月13日にロボカップ勉強会第二回目が行われました。
今回は主催者をローテーションということで、戦略班の他のメンバーにプレゼン形式での勉強会を開いていただきました。
今回はポインタ・構造体という所で、分からない人も多いところだと思います。
実際私も話を聞いていて、あ、やべっ
なんて思った点が…(ポインタのポインタとか
今日は私なりにまとめてみようと思います。(めちゃくちゃ簡単に!)

まずポインタってどんな物?

	int *p;	//int型ポインタ宣言
	int a;

	a = 10;
	p = &a;
	
	// アドレス
	printf("aのアドレス %p\n", &a);
	printf("pのアドレス %p\n", p);

	// 値
	printf("aの値 %d\n", a);
	printf("pの値 %d\n", *p);

	return 0;

これで簡単に説明していきます。
ポインタを宣言し、ポインタpにaのアドレスを持たせています。

	p = &a;

ということは、pに入る値はaのアドレスに入っている値と同じ!と言う事になります。(アドレスが同じだからですよ!)
ここでポインタを使う上で見極めてほしい点は、

	printf("%p\n", p);  // pはアドレス
        printf("%d\n", *p); // *pはポインタの中身

'*'(アスタリスク)が付けばポインタの中身ということです!
'*'を付ける付け無いは意味が違いすぎますので、注意してほしい点です。
使い方の基本中の基本はこんな感じです。

どういう場面で使うのかというと…
具体例はやめておきます。
が、この日記の一番初めに書いた角度を求めるプログラム。
これにポインタが少し使われていたり…
使う機会も増えると思うので、どんどん使って攻略しちゃいましょう(^^ゞ