I ♥ WordPress

[時間割:C言語]『はじめてのC言語完全入門』その2
2008/09/01 00:25 posted by kunkichi

今日は復習ということで、火曜日にアップできていない『C言語』の復習とまとめをアップ。

はじめてのC言語 完全入門 (標準プログラマーズライブラリ)
塚越 一雄
技術評論社
売り上げランキング: 420963


5〜7章まで進みました。

  • 単に外部ファイルを読み込むだけでなく、標準関数のエラーなども出力してくれるのでデバッグがしやすくなる。
  • 関数には、型と引数の定義が必要。
  • 引数を指定しない場合は、(void)。()内に何も指定しない場合は引数のチェックをスキップするという意味でちょっと異なる。
  • ただし、mailに限っては、通常3つの引数を取るので、引数を使わない場合は()を指定する。
  • 関数が返すデータ型を指定するのが型。値を返さない場合はvoidを指定する。
  • 型を省略するとintになる。
  • mainはintを返す。これがリターンコードになる。
  • エスケープシーケンスは二つ。
    • 文字列エスケープシーケンス
      • エスケープ文字列は\。文字列の中で解釈される。タブとか改行とか
    • 端末エスケープシーケンス
      • ANSIエスケープシーケンス。対応している端末ならOK。
      • エスケープ文字列はESC。よって、指定する場合はこれを16進で指定するので、”\x1b”となる。
      • 文字を修飾する場合は、”\x1b[パラメータm”。複数のパラメータを指定する場合は;で区切って”\x1b[パラメータ;パラメータ:パラメータm”とする。
      • 例えばputsで黄色で出力するなら
        puts(”\x1b[33m黄色です。”);
      • 一旦変更するとずっとそのままになってしまうので戻す場合は、
        puts(”\x1b[0m”);
      • 輝度とかも指定できる。1で高輝度。デフォは低輝度。

やっぱりCの場合、関数の定義の仕方というか、型とか引数の指定とか、その辺がきっちりしてる印象。

[時間割:Python]『みんなのPython』その3
2008/08/29 01:36 posted by kunkichi

木曜日は「Python」。

ちょうど WEB+DB PRESS vol.46で『[速習]Python』の特集があったので、まずはそれをさらっと読んでみました。

WEB+DB PRESS Vol.46
WEB+DB PRESS Vol.46
posted with amazlet at 08.08.28
技術評論社
売り上げランキング: 103


内容は、Javaとか経験のある開発者向けのPython紹介記事という感じで、Pythonの記法で他言語と違うところとか、あといきなりO/Rマッパー、テンプレートエンジン、フレームワークをさらっと紹介してあったり、とちょっと初心者には難し目の内容。

でもデータベースへ接続して一通りの作業をやってみたり、MVCな即席アプリ開発とか、初心者向けの本だとカバーできないような実践的なところまでざっくりまとめてあるので、なんとなく雰囲気がわかるのはいいね。

Pythonをある程度使えるようになった頃の自分が想像できたところで、続き。

みんなのPython
みんなのPython
posted with amazlet at 08.08.28
柴田 淳
ソフトバンククリエイティブ
売り上げランキング: 26951


条件分岐・比較演算子・論理演算子

  • 中カッコとかではなくて、
    • インデントでブロック定義。これぞPython
    • 条件にカッコはいらない
    • 分岐の記述の最後は:
  • switchないのか。Perlとおなじ。でも elsif じゃなくて elif
  • インタラクティブシェルの場合は、ブロックの最後は空行。でもネストされたifブロックの最後は空行いらないみたいだから、多分インタラクティブシェルだけのような気がする。あとで調べる。
  • &&とか||とかは使えない。and と or を使う。
  • 組み込み型(リストとか文字列とか)の比較もできる。リストの場合は要素も完全一致する場合のみTrue。
  • &&とか||とかは使えない。and と or を使う。
  • 文字列検索にはfind()メソッド。
    ex) if a.find(”STRINGS”) != -1:
  • 上の例にあるように、ifで指定する条件は「式」である必要がある
  • &&とか||とかは使えない。and と or を使う。
  • find()メソッド以外にもinとか使える。こっちのほうが良さげ
    ex) if “STRINGS” in a:
  • 文字列の”2″と数値の2は比較してもイコールにはならない。型キャストする。PHPerだとちょっと嵌りそう、これ。

ループ

  • インデントとか:はif文と同じ。
  • $i++とかない。Perlのforeachとかシェルスクリプトのforとかっぽい。
  • カウンタを指定するような場合はrange()関数。

インデントってやっぱり新鮮だなー。ちょっと長めのスクリプト書けるようになったら見やすさを味わってみたい。

[時間割:Python]『みんなのPython』その2
2008/08/21 23:02 posted by kunkichi

まだChapter1の途中です。数値、文字列ときて、そろそろプログラミングらしいデータの持ち方である、リストから。

みんなのPython
みんなのPython
posted with amazlet at 08.08.21
柴田 淳
ソフトバンククリエイティブ
売り上げランキング: 50252


リスト

  • いわゆる配列
  • 文字列も数値も一緒にリストに入れれる
  • スライス重要
  • 角カッコで定義。ex) a=[1,2,”aaa”,”bbb”]
  • インデックスにマイナスを使うと後ろから。
  • スライスは開始位置と終了位置+1で指定。ex) a[1:3] で [1,2]が返る。
  • スライスで返るのはリストなので注意
  • リスト同士を足すと連結。あと、リストに数値/文字列は足せない。足す時はリストで足す。append()メソッドで要素を追加、extendメソッドでリストを連結
  • リスト同士をかけると繰り返し。
  • リストは文字列と同じシーケンス型だけど、要素の置き換えは代入で可能。
  • del文で要素を削除
  • max()関数で最大、min()関数で最小の要素を取る。
  • sort()メソッドで照準ソート、reverse()メソッドで降順ソート。このメソッドはリストの並び自体を書き換える
  • 多次元配列は普通にOK

辞書

  • ハッシュと同じ
  • 中カッコで定義。コロンでキーと値を組み合わせる。ex) a = {”key1″:”value1″,”key2″:”value2″ }
  • 取り出す時は角カッコ ex) a[’key1′]
  • 要素の削除とか追加はリストと同じっぽい
  • キー一覧を取得するにはkeys()メソッド。
  • キーの存在確認はhas_key()メソッド。

タプル

  • リストとの違いは書き換え不可ということだけ?
  • 丸カッコで定義
  • 取り出しはリストと同じ。
  • スライスでタプルとして取り出せる
  • タプル同士の足し算は可能。ただし新しいタプルに。
  • タプルの利点は辞書のキーとして使える。リストは無理。

組み込み型まとめ

  • コレクション型・・・複数の要素をまとめるもの。
    • シーケンス型(文字列、リスト、タプル)
    • マップ型(辞書)
  • 変更可否
    • 文字列、タプル → 不可
    • リスト、辞書 → 可能
  • これらの型キャストもできる。

うーん、なんとなく、リストとか辞書とか、あとそれを取り出すときとかの囲み記号がPerlとかと違うのがちょっと覚えにくい。そう考えるとPHPって単純なんだけどパッと見ではわからんってのがなー。

でも個人的にプログラミングのキモの一つは、リストとか辞書みたいな、「配列」「ハッシュ」の使い方だと思ってるので、ここはしっかり覚えないと。

[時間割:C言語]『はじめてのC言語完全入門』
2008/08/19 23:40 posted by kunkichi

火曜日は「C言語」です。

C言語は大学の最初の頃に習ったんだけど、それ以来ほんと触ることなくて、PerlとかPHPとかのインタプリタ言語を触るようになってからはますます疎遠になってました。なので気分的には1からやり直す感じで。カーネルのソースコード読めるようにがんばります!

ということで、引っ張りだしてきたのは以前に買ってたCの入門書。塚越さんの本は読みやすくて好きなんだよね、Perlの本も良かったし。

はじめてのC言語 完全入門 (標準プログラマーズライブラリ)
塚越 一雄
技術評論社
売り上げランキング: 420963


1〜4章

  • コンパイル時のステージ。全部gccで一発でやってくれるけど一応。
    1. ソース書く(*.c)
    2. プリプロセス(gcc -E *.c > *.i)
      コンパイルの前処理。外部ファイルの読み込みとかマクロの置換とか。
    3. コンパイル(gcc -S *.c か *.i → *.s)
      アセンブラコードへの変換。
    4. アセンブル(gcc -c *.c か *.i か *.s → *.o)
      オブジェクトファイル(バイナリ)へ変換
    5. リンク(gcc *.o)オブジェクトファイルとライブラリをリンク
  • Cは外部宣言(宣言と関数定義)の集合。
  • 関数定義が一つ必要、かつ関数名はmainである必要がある。
  • nmコマンド初めて知った。オブジェクトやライブラリに含まれている関数とかを表示する。
  • リンク後の実行ファイルには作成した関数以外にもスタートアップモジュールが追加される。これがmainを呼び出す。

実はCの文法とかというよりも、こういう点が一番勉強したかったところ。バイナリアンになりたい。

[時間割:Python]『みんなのPython』開始
2008/08/17 22:55 posted by kunkichi

週末は「復習」の予定なのだけど、今週末は多忙&体調不良でダウン、、、木曜日の「Python」の時間のまとめだけもう書いていたのでアップします。

ちなみに、前にも初めてのPython 第2版で勉強したことがあったのだけど、途中で軽く挫折、、、orz。

どうも完璧主義的にやろうというのはよくないね。多少なりともプログラミングやってればある程度わかってることでも、「きちんとまとめないと」という気持ちから実例入れたりしてちゃんとまとめようというのはやっぱり無理。ブログに書くだけでも時間かかって面倒で続かないなー、僕の場合。

ということで、今回は気になったところだけまとめるっていうのを全体的な方針としてやってます。
気分一新、本も買えました。オライリーのが悪いわけではなくて、気分的な問題。初めてのPython 第2版は持ち歩くのも大変だし(笑)

みんなのPython


Chapter1から。

数値

  • 整数同士の計算は整数で返される(例:1/2は0)
  • 整数と浮動小数点数を組み合わせて計算すると精度の高い方、つまり浮動小数点数で返される(例:1.0/2は0.5)
  • ++とか–は使えない。+=とか-=使う。

文字列

  • 複数の文字の配列みたいな感じ。Cっぽい。
  • マルチバイト文字を使う場合はunicode文字列を使う。
  • シングルクォート、ダブルクォート、トリプルクォート。
  • どの場合でも変数展開されない。
  • トリプルクォートがヒアドキュメントみたいな感じ。
  • 連結は+、繰り返しは*。数値演算みたく書ける。
  • int()、float()、str()とかで型キャスト。
  • 関数とメソッド。
  • 配列みたくインデックスで文字を取り出せる。
  • でも配列みたく置き換えれない。文字列は配列じゃないから。replaceメソッド使う。

同じこと勉強するにも本によって流れが違うし、片方だけではわからなかったこととか、両方読んですっきりすることもあるね。「多読」がいいのはこういうことか。

『うちのシステムはなぜ使えない SEとユーザの失敗学』
2008/04/10 23:52 posted by kunkichi

笑えました、いや、笑っちゃいかん、立場上、笑

ウチのシステムはなぜ使えない SEとユーザの失敗学
岡嶋 裕史
光文社
売り上げランキング: 32215


発注側・受注側・エンドユーザの意識のズレをおもしろおかしく書いてあり、なかなか痛いところを突きますね、笑。

私、今の立場的には発注側の運用エンジニアで、常にユーザの使い勝手を考えている「つもり」なんだけど、現実的にはやっぱり満足いくものをお客様に提供できているか?って聞かれると、モゴモゴしちゃうしなぁ、苦笑。腹抱えて笑いながらも、なんていうか、こう、目を背けたくなるような、爆、いや、でもこういうのを常に念頭に置いてやんないといかんですね。身につまされる思いですわ。

しかし、これ読んでてまた思ったのが、やっぱりSEとかエンジニアって世間一般からすると特殊な人種なんですかね。そいや、会社の女の子に、黒い画面に文字しか映ってないけど何の仕事してるんですか?って聞かれたこと多々あるし、普通の人間には見えないのかもしれない、爆

良書。

O’Reilly Japan News 第118号
2007/11/24 20:01 posted by kunkichi

毎月恒例のオライリー・ジャパン・ニュース。年末だしそろそろかなー(爆)

3. Web直販キャンペーン

■『2008年オライリーカレンダー』プレゼント

2008年オライリーカレンダーをご注文いただいたみなさまにプレゼント!11月22日受注分からご注文書籍(新刊予約分を含)に同梱いたしますので、この機会をご利用ください。なお、Webでのキャンペーン公開は11月27日予定です。

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

では早速品定め(爆)とりあえず12月の新刊で目についたのはこんなところ。

(more…)

[Python勉強日記:005] 文字列 その1
2007/11/12 23:33 posted by kunkichi

わー、いきなり放置状態!(爆)

いやー、ほんと忙しいのですよ、最近。帰ってきてもブログ更新するエネルギーがなくて、土日も基本的には何もせず完全に引きこもり状態(笑)

これではいかん、ということで、がんばって進めます。今日は『文字列』。

(more…)

眠い、、、
2007/11/08 13:40 posted by kunkichi

新しい職場は少し遠めなので朝が早くて夜は早く眠くなります。

しかも障害対応中で忙しくてPython勉強日記がかけません。早く続きを、、、

閑話休題。

PS3 FAN || PS3システムソフトウェア Ver2.00の内容が明らかに

はてなのホッテントリで見たとき、PS3のファンがファームウェアで改善されると普通に思ったのはやっぱりこの業界にいるからですか、そうですか、

ということで、Python勉強日記は週末にまとめてポスト予定。

[Python勉強日記:004] 変数の扱い
2007/11/06 00:08 posted by kunkichi

さて、週末少しお休みしたので続きを。今日は第5章の文字列まで読み終わっただけど、ブログが追いつきません!!!

ということで、とりあえず、前回の数値のお話の続きでちょっと変数のお話。

変数の扱い

まず、以下の例。

>>> a = 3

よくある代入の例だけど、PerlやPHPと同じく、Pythonでは

  • 変数や型をいちいち宣言しなくても良い。こういうのは値からダイナミックに判断されて型がつけられる。ただし、前回の例を踏まえると、整数とか浮動小数点数とかは気をつけないといけないね。
  • つまり、変数は型情報とかを持たない。あくまでも値であるオブジェクト自身がその情報を持っている。

ということ。まあPerlやPHPに慣れてればあんまり気にしなくていいところ。

で、上記例の式の場合に、どのように内部処理が行われるかをスライドで説明してみる。うふふ、SlideShareを使ってみたかったのです(笑)。

ということで、あくまでもリンクされているってところがポイント。これまでは、メモリ上に指定した変数の領域があってその中に値が入っているっていうイメージがあったのだけど、そういうことじゃないみたい。なんかCでいうポインタっぽいのかな。

さらにも一つ例。

ということで、代入するたびにオブジェクトが生成されるというわけ。これを言い換えると、オブジェクトの値自体は変更できないということ。

ただし、一部のものについては、オブジェクトの値を変更することができるらしいのだけど、これはまだ先の話らしいので、とりあえず今の段階ではPythonのオブジェクトの値は変更できない、変数はあくまでもオブジェクトへのリファレンスということで理解しておきます。

明日は文字列です。

このページの先頭へ