いちSEのつぶやき

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

ワークショップ参加

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でもいい

勉強会

今日久しぶりの勉強会でした。
前回から半年くらい(?)空いてしまいましたね。

今回から書籍が変わりました。

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

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

CHAPTER-1〜CHAPTER-4までは基本的なことなので、
スルーしました。
CHAPTER-5からスタート。
ポイントとなったところ、考察したところを残します。


■doubleClickイベントを拾う場合
 doubleClickイベントを拾う場合は、以下の属性指定が必要

<mx:Image id="aaa" doubleClickEnabled="true" doubleClick="handler()"/>

「doubleClickEnabled="true"」をつけないと拾えない。


■FunctionをつくるFunction

private function moveNext(next_txt:TextInput):Function{
 return function(e:KeyboardEvent){
	 if(e.keyCode!=Keyboard.ENTER) return;
		next_txt.setFocus();	
	};
}

こんな感じでfunction定義をするとnext_txtの値が
埋め込まれたfunctionがコンパイル時に複数できあがる。


■Applicationの上位オブジェクト
Applicationの上位にはstageという変数でアクセスできる
上位オブジェクトがある。
この変数が作られるタイミングはapplicationComplete後。
ちなみにinitialize⇒creationComplete⇒applicationCompleteという
順番でCallされる。


■動画や画像ファイルの静的ロード

[Embed(source='turtle.swf')]//ファイル指定
private var TurtleClass:Class;//それがbinaryでクラス定義
private var turtle_spl:Sprite = new TurtleClass();//instance生成

こんな感じで定義をするとコンパイル時に取り込まれる。
その分サイズも大きくなる


大枠はこんな感じですかね。
あとはクロスドメインポリシーファイルに関する仕様変更と
SharedObjectの使いどころですね。


【次回以降】
この本は後2・3回で終わってしまいそうですね。
なんで、次の書籍の候補を次回までに探しましょうか。

アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き

アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き

アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き

書評かいてみました。

アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き Esther Derby Diana Larsen著 – 読書による経験価値