あれ?
2008/09/17 01:22 posted by kunkichi
今気づいた、今日は火曜日だからほんとは『C言語』の時間だった、、、
明日やります〜
今気づいた、今日は火曜日だからほんとは『C言語』の時間だった、、、
明日やります〜
先週までの『読書』の時間に、この2冊を読み終えたので、ちょっとまとめておきます。
前回読んでいた『チーム力を作る3ステップ』がとても良かったので、チームとかコーチング系の本をもう一冊読んでより理解を深めようということでこれをチョイス。
『チーム力を作る3ステップ』が仮想のシチュエーションを用いて、チーム作りのコツというかポイントをすぐに実践できそうな感じで説明していたのに対して、こちらはちょっと読み物というか、チームマネジメントの理論を実例を交えてきちんと証明している感じ。でもそれほど分厚いわけでもなく、こちらはこちらで非常に良くまとめられてると思います。
同じテーマの本を2冊読むと、ポイントはだいたい同じところになるので、より理解が深まっていいね。
こうやってみるとほんと大事なことは同じなんだなと再実感。
時間割にそって勉強を始めてから、より時間に対する意識が上がってきたこともあって、もっと時間を有効に使えるにはどうすれば?ということで、睡眠時間の質を「濃く」することで「短く」すればもっと時間ができるんじゃないか?と思って選んだのだけど、、、
ごめんなさい、これはちょっと僕には合わなかった。言ってることはわかるんだけど、なんか文体とが好きになれないというか、もっというと例証が万人に納得できるレベルで書いてあるとは思えなかった。もう少しhowtoな内容を期待していたのに、くどくどと精神論を言われた感じでそれだけでもうええわ、となってしまって、一応読み切ってはいるのだけど、得るものは全くなかったなぁ。(個人差はあるのかもだけどね)。
ただまあ「睡眠時間」をもっと有効活用したいというのはまだあきらめてないので別の本をまた探してみるつもりです。
月曜日は「Perl」です。今日はこれまで出てきた起動オプションをプログラムのタイプ別にまとめるところから。そのまま写しちゃうのはアレなので多少いじってみました。
| 一次オプションクラスタ | 用途 | 例 |
|---|---|---|
| -wl | 出力 | -wで警告表示はお決まりな感じ。-lで行末処理。# perl -wl -e 'print "Hello, World."' |
| -wnl | 入出力 | -nで入力処理のフィルタ。# echo "Hello,World." | ¥ |
| -wnla | フィールド処理(セパレータは空白文字) | -aで空白をセパレータとしたフィールド処理を指定。# echo "1 2 3" | ¥個々のフィールドは@Fに入る |
| -wnlaF’セパレータ文字列‘ | フィールド処理(セパレータは任意文字) | -aでフィールド処理を指定、そして-Fでセパレータ文字列を指定。awkっぽい。# echo "1,2,3" | ¥ |
| レコード定義クラスタ | 用途 | 例 |
| -00 | 段落モード | 段落ごとに番号をつけてみる。# cat sample.txtslapcatしたデータとかこれで処理すればよさげ。 |
| -0777 | ファイルモード | ファイルごとに番号をつけてみる。# cat sample2.txt |
| スイッチクラスタ | 用途 | 例 |
| -s | スイッチで引数による変数処理を追加 | 例えば-flagで変数$flagを有効化してみる# cat sample.pl実行すると以下。# ./sample.pl |
| モジュールクラスタ | 用途 | 例 |
| -M’モジュール名‘ | モジュールを有効化する。 | モジュールがインストールされているかの確認に使える。# Perl -M'Net::SMTP' -e ''何も出力されなければモジュールはインストールされている。エラーが出力されたら印すt−ルされていない。 |
| プログラムクラスタ | 用途 | 例 |
| -e ‘実行するPerlのコード‘ | コマンドラインから実行したいコードを書く。 | 略 |
上書き編集クラスタってのもあるのだけど、これはまだ出てきていないのでスルー。
でこれらをあらかじめエイリアスとして指定しておけばちょっと便利かも。
# cat .bashrc
alias perl_o=' perl -wl ' # 出力
alias perl_io=' perl -wnl ' # 入出力フィルタ
alias perl_iop=' perl -wpl ' # 入出力フィルタでprintを使う
alias perl_f=' perl -wnla ' # フィールド処理
alias perl_fp=' perl -wpla ' # フィールド処理でprintを使う
alias Perl_o=' perl -00 -wl ' # 段落モードで出力
alias Perl_io=' perl -00 -wnl ' # 段落モードで入出力フィルタ
alias Perl_iop=' perl -00 -wpl ' # 段落モードで入出力フィルタでprintを使う
alias Perl_f=' perl -00 -wnla ' # 段落モードでフィールド処理
alias Perl_fp=' perl -00 -wpla ' # 段落モードでフィールド処理でprintを使う
でもスクリプトではこうは行かないのである程度は覚えないと行けない、ということで順序。
ワンライナーの場合
# perl [スイッチクラスタ] [レコード定義クラスタ] [一次オプションクラスタ] [プログラムクラスタ]
スクリプトの場合
#!/usr/bin/perl [スイッチクラスタ] [レコード定義クラスタ] [一次オプションクラスタ]
〜以下コード〜
基本は一次オプションクラスタがあって、それにいろいろ追加した上で、コード部分を書くって言う流れになると。
こういうオプションを駆使した使い方はあんまりやったことなかったのだけど、僕の日常の作業だとオプションを指定せずに(-wTぐらいはつけます)ベタなスクリプトを書くよりも、こっちのほうが活躍する機会は多いかも。そのうちちょっと試してみよう。
木曜日の『Python』の勉強結果をアップしてなかったので。ファイル処理から。
ファイル処理
f = open("aaa","r")
for i in f.readlines():
if = open("aaa","r")
for i in f:
if = open("aaa","r")
f2 = open("bbb","w")
for i in f.readlines():
f2.write(i)
f.close()
f2.close()
スクリプトファイル
if __name__ == '__main__':
〜コード〜#/usr/bin/env python
import sys
print sys.argv# ./aaa.py aaa bbb
['./aaa.py', 'aaa', 'bbb']ちょっとしたツールとして使うために必要な情報が揃ってきた感じです。
水曜日は『サーバ』の時間。ということで、カーネルの勉強をしようということで選んだ「Linuxカーネル徹底解析」を読み終わりました。
とりあえず、一通り読んでみて、なんとなくOSの全体的な処理のイメージみたいなものが見えてきた感じです。個人的に特に面白かったのは以下あたり。
まずは概要がつかむっていうのが当初の目的だったので、それについてはある程度果たせた気がするし、最初の書籍としてはとてもよかった気がします。それに現時点で「C言語の知識が絶対的に足りない」ってこともわかったので、今やっている「C言語」の勉強の正当性が証明されて、モチベーションが多いにあがりました。
さて、次はどうしようかな。Linuxカーネルについてさらに進めてもいいんだけど、そのためにはCをもう少し勉強したほうがいいかなという気もするので、もう少しマクロな視点、というかハードウェアな部分も含めてコンピュータそのものの理解を深めてみるということで、これを選んでみました。
トピック的にはマクロかもしれないけど、パラパラっと見た感じアセンブリやらマシン語やらかなり細かいところまで出てきて、既に若干くじけそうですが(爆)なんとかがんばりたいと思います
火曜日は『C言語』です。張り切っていってみよう!
今日は11章「変数と定数」から。
列挙型ってちょっと使いどころがピンとこなかったのだけど、いろいろ調べてみたところ、以下のサイトでなんとなく雰囲気はつかめた感じ。
ポイントをまとめると、
簡単なスクリプトを試しに作ってみた。
#include <stdio.h>
enum weekday { MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY } w;
main()
{
w = WEDNESDAY;
switch(w){
case MONDAY:
printf("月曜日です。\n");
break;
case TUESDAY:
printf("火曜日です。\n");
break;
case WEDNESDAY:
printf("水曜日です。\n");
break;
case THURSDAY:
printf("木曜日です。\n");
break;
case FRIDAY:
printf("金曜日です。\n");
break;
case SATURDAY:
printf("土曜日です。\n");
break;
case SUNDAY:
printf("日曜日です。\n");
break;
}
return 0;
}
内部的には整数だけど確かにこれだと値は意識しなくていいね。
月曜日は「Perl」です。今日はdieとwarnについて。
やっぱりPerlは特殊変数多いなぁ、こんなの使ったことないや。この辺はチートシート作っておくと便利かも。
次は、ここまで出てきた起動オプションをいろいろなプログラムのタイプ向けにパターン化・標準化したオプションクラスタの予定。
一時期はたくさんあったLinux関連雑誌だけど、今では冠にLinuxとあるのは『日経Linux』だけになってしまったなー。で唯一残ってる『日経Linux』なんだけど、あの大きさと値段がどうしても気に入らなくて、ほとんど買うことなかったんだよね。
ただし、今月からは別。
<<特別連載>> 図解 触って学ぶLinuxカーネル
各種のツールを駆使してカーネルの中を実際にのぞいて見ます。それにより,カーネルの仕組みを体で学びます。第1回は準備編として,メモリー管理とマルチタスクの仕組みを解説します。
第1回●メモリーとプロセスの管理
「触って学ぶ」っていうところは実際に体験することでより理解が深まりやすいと思うしなかなかよさげな感じ。ただし、やっぱり「ソース読んで」っていう部分とセットだからこそ、知識と体験が組合わさると思うので、ソースへの理解も深めていかないと。しばらくは買ってみようかなと思います、でもCD-ROM要らないからもちょっと安くなってほしいなぁというのは強い願い、、、
で、僕に取ってはそんな微妙な『日経Linux』だけど、ムックは悪くないのもありました。まあ初心者向けはちょっとおいといて、今読んでる『カーネル徹底解析』含めて↓の辺は、浅くもなく深くもなく、全体像をつかむにはなかなかよい内容だったので紹介しておきます。
木曜日は『Python』です。ループの続きから。
ループの続き
関数
まあこの辺はどの言語もだいたい一緒かな。
次回はいよいよファイル操作。
コツコツと続けている時間割だけど、ちょっと見直しました。
ってことでまあとりあえずは「20%の法則」の8時間は達成できるかなと。なんせアウトプットが結構時間かかるんだよね、まあこれももっとうまくやれるようになればもうちょっと効率良くなるかなと期待。
OFFが多いなー(笑)でもまあ気分が乗ると2時間ぐらいで一気に本読めちゃったりする時もあるので、最低限ここまではやろうというノルマ的な目標です。達成率もちゃんと管理するので、またこれでがんばります。
新しい時間割↓

2012/02/07/ 18:03
2012/01/04/ 07:43
2011/10/06/ 10:13
2011/10/06/ 07:03
2011/10/06/ 06:46