いちSEのつぶやき

エンジニアとして、気になることを残していきます。

最近読んでる本

最近、昼休みの時間を使って軽く本を読んでます。
普段はビジネス系の本を読むことが多いのですが、
会社にいるときは、技術系の本を読んでます。



Java開発者のための Ajax実践開発入門

Java開発者のための Ajax実践開発入門

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)



改めて自分の感覚が鈍っていることを実感 orz
AjaxTigerなどは特段新しい技術ではないのですが、
読みこなすのにとても苦労しています。
やっぱりコーディングは続けていかないとダメですね。

ワークショップ参加

PFPワークショップに参加してきました。

詳しい参加報告は、こちらで書いてます。


会場で、EM ZEROというフリーペーパーをもらいました。
オンラインでも内容が公開されています。
こういうものが広く浸透していけばいいな〜って本当に思います。


久々にSE関係のセミナーに参加しました。
SEとしての能力をもっと磨かなきゃな〜とつくづく思います。

勉強会

昨日は勉強会でした。
今回は、Python チュートリアルの↓。

5. データ構造
o 5.1 リスト型についてもう少し
+ 5.1.1 リストをスタックとして使う
+ 5.1.2 リストをキューとして使う
+ 5.1.3 実用的なプログラミングツール
+ 5.1.4 リストの内包表記
o 5.2 del 文
o 5.3 タプルとシーケンス
o 5.4 集合型
o 5.5 辞書
o 5.6 ループのテクニック
o 5.7 条件についてもう少し
o 5.8 シーケンスとその他の型の比較
目次より

■データ構造
 3つのFunction
 1.fileter
 2.map
  例の呼出で配列の個数が違うものだったらどうなる?
  ⇒ダメ。足りないものは"None"という値が入ってくる
 3.reduce

■リストの内包標記
 一瞬見るとコメントだと思う
  ⇒変数宣言が後に来るため、Javaとの評価の仕方が違う

■タプルとシーケンス
 タプル:不変のリスト
 アンパック:関数の戻り値がタプルだったら、複数受取れる

 Set:Javaと似ているけど、演澤部分が違う

■ループテクニック
 reverseは便利。なぜ他の言語にないのか?
 sortは配列をコピーして返してくれるのが便利。



SunもPythonへの取り組みを始めたみたいです。
Pythonに向けたSunの真剣な取り組み

勉強会

今日からPythonです。

教材は、まずは基本からということで、Python チュートリアル
id:c9katayamaさん、提供ありがとうございます。


今日はこの中から以下の内容をやりました。

1. Python への意欲を高める
o 1.1 ここからどこへ
2. Python インタプリタを使う
o 2.1 インタプリタを起動する
+ 2.1.1 引数の受け渡し
+ 2.1.2 対話モード
o 2.2 インタプリタとその環境
+ 2.2.1 エラー処理
+ 2.2.2 実行可能な Python スクリプト
+ 2.2.3 ソースコード文字コード方式 (encoding)
+ 2.2.4 対話モード用の起動時実行ファイル
3. 形式ばらない Python の紹介
o 3.1 Python を電卓として使う
+ 3.1.1 数
+ 3.1.2 文字列
+ 3.1.3 Unicode 文字列
+ 3.1.4 リスト
o 3.2 プログラミングへの第一歩
4. その他の制御フローツール
o 4.1 if 文
o 4.2 for 文
o 4.3 range() 関数
o 4.4 break 文と continue 文と ループの else 節
o 4.5 pass 文
o 4.6 関数を定義する
o 4.7 関数定義についてもう少し
+ 4.7.1 デフォルトの引数値
+ 4.7.2 キーワード引数
+ 4.7.3 任意引数リスト
+ 4.7.4 引数リストのアンパック
+ 4.7.5 ラムダ形式
+ 4.7.6 ドキュメンテーション文字列
目次より

■文字列操作
・raw指定
 文字列全体にエスケープが適用される

  hello =r"This is a rather long string contraining \n"
  print hello ⇒ This is a rather long string contraining \n

・"""指定
 HTMLのpreタグっぽい使い方
  ⇒\nはキチンと改行される

・文字連結

 word = "Help"
 print word * 5 ⇒HelpHelpHelpHelpHelpHelp

・文字列中の文字の抽出

 word = "HelpA"
 print word[4] ⇒ A
 print word[0:2] ⇒ He
 print word[2:4] ⇒ lp

・文字列はimmutableで、変更しようとするとエラーとなる
・文字の抽出は文字位置指定だとエラーにあるが、範囲指定だとエラーにならない。

■配列
・配列もかけ算で増やせる

 a =['spam','eggs',100,1234]
 print 3*a[:3] ⇒ ['spam','eggs',100,'spam','eggs',100,'spam','eggs',100]

・配列に別の配列をネストすると参照が入る(ポインタ型)
 ただし、値を入れるとコピーが入る
 ⇒Javaでこれをやると循環参照

■式
 一行で複数代入可能
  a,b = 0,1

■制御系
 ・if文
  "elif"とした気持ちはわかる気がする

 ・for文
  for文を使うためには、一回配列形式にするといい。
   ⇒Iteratorのイメージ

■関数
 ・メソッドのオーバーロードができない
 ・キーワード引数はいままで見た言語の中にはない
  **keywordで受けるやつはやりすぎな感じがする。
   ⇒まぁ、*argsくらいなら使うかもしれないが。

 ・ラムダ形式
  FunctionをNewする感じ


結構入りやすい言語でした。
チュートリアルによるとUnitTestライブラリとかも
あるみたいですし、楽しめそうです。

勉強会

今回は場所を変えての勉強会でした。
ミューザいいっすね。
予約の競争率は高いですが。。。

Adobe Flex 2プロフェッショナルガイド Windows & Macintosh対応

Adobe Flex 2プロフェッショナルガイド Windows & Macintosh対応

CHAPTER-6 Step9〜17まで。

■XMLListへの便利なアクセス方法
menuitemが格納されているXMLListのインスタンスlist内の
idがcopy_itemだったら非活性にするという処理。

list.(@id=="copy_item").@enabled = false;

Javaでもこんな感じでアクセスできればいいのに。
無駄なfor文がなくなるし。


■Drag&Dropの例
DragManagerの使い方は応用編にある。
これが無いとD&Dは正しく動かない。


■Validator
EmailValidatorの例

<mx:TextInput x="10" y="10" id="mail_txt" width="372" height="138"/>
<mx:EmailValidator source="{mail_txt}" property="text"/>
  • Validateが実行されるタイミングを指定するには、triggerEvent属性を変えればよい。
    デフォルトはFlexEvent.VALUE_COMMIT。
  • エラーメッセージはカーソルを合わせないと表示されない
  • property属性は監視対象のオブジェクト属性を指定する

Validatorは自作した方がしっくりくる。


CSS

  • CSSファイルをコマンドからコンパイルできる
  • CssはApplicationレベルで適用される

勉強会

今日は勉強会でした。
最近は参加者とのレベルの差を感じて少し凹んでます。
頑張らねば。。。

Adobe Flex 2プロフェッショナルガイド Windows & Macintosh対応

Adobe Flex 2プロフェッショナルガイド Windows & Macintosh対応



■画像の読み込み
サンプルでは、Loaderを使用しているが、SWFLoaderでOK。
SDWLoaderの内部ではLoaderを使用している。
このサンプルは生コーディングな感じ。
SWFLoaderはextends UIComponentなので、
そのまま表示オブジェクトとして使える。

画像を指定する際のContextPathはSWFの場所。
相対パスはそこから指定する。
プロジェクトの外は指定できない??


■画面のハードコピー
BitmapDataを使用すると画面のHCを簡単に取れる。
サーバーに送る場合は、binaryにして送信する。
BitmapDataのgetPixelを呼ぶとBatesArrayが取れる。
こんな感じ↓

var image:BitmapData = new BitmapData(200,200,true,null);
//中略
var data:ByteArray = image.getPixels(new Rectangle(200,200));



■Buttonオブジェクト
ButtonクラスのbuttonMode=trueにすると人差し指になる
 ⇒これはデフォルトtrueでもいい