#flex

本気でFlex3を勉強しようと決めました。

「何か勉強したなら資格の形で残したい」の方針で

関連の資格をネットで調べました。

その情報をいったん整理します。

基本情報

  • 試験番号 : 9A0-082
  • 受験言語 : 日本語、英語
  • 合格点 : 67%以上
  • 問題数 : 50
  • 試験時間 : 85分
  • 受験費用 : 18,900円
  • 申し込み :ピアソンVUE
  • ガイド資料 : 認定試験準備ガイド

試験に向けて

参考サイト

#iphone

前回の記事:「iPhoneのPDF Viewer:GoodReader」ではざっと紹介しましたが、

GoodReaderは横スクロールを固定できる、

しかしダブルクリックではスクリーンが拡大され、

その時スクロールの固定は解除されてしまいます。

せっかく調整したスクロールが誤操作で崩れるのは厄介ですね。

そこで今回の記事でちょっと詳しくGoodReaderの設定について

説明したいと思います。

General Settings

  • Reopen last file
    • Onに設定すると常に前回開いたファイルを開く
    • 同じ設定がiPhone全体の設定にも変更できる
    • 無限クラッシュがあるらしいのでOFFに設定
  • Screen orientation
    • Allow autororations ONに設定すると自動に横、縦向き変更に対応。
    • Restore orientation on startup これは上記自動向き変更をOFFに設定する時のみ有効になる。ONにすると起動時に向き縦向きに回復

  • Disable device auto-lock 自動ロックを停止。ONにするのをおすすめ。突然ロックされ暗くなるのは嫌よね。
  • Ask for link action ONにすると閲覧中にリンクをタップするとどうするか毎回聞くので、OFFにするのをおすすめ。本を読む時はやはり集中するのが一番。

PDF Settings

次に「View PDF files」からPDF閲覧を設定しましょう。

  • PDF Link has priority これは上記と同じようにOFFにするのをおすすめ。
  • Double-tap for zooming これが今回記事のポイント!OFFに設定するのをおすすめ!PDFの資料を読む時は大体の場合はやはり自分でスクロールを調整し固定しますね。ダブルクリックによる拡大はスクロールも崩れるし、また拡大倍数が適切ではないの感じです。

Good Reader購入はこちら

#jquery

マインドマップでまとめました。ごらんください。

基本的な使い方はほかのサイトでもいっぱい書いてるため、

省略します。

大まかな仕組みだけをメモとして書きたいと思います。


最初に理解してほしいのはルールと検証メソッドです。

これはペアとして使います。

まずルールでは検証したい項目のname属性と適用するルール名を書きます。


例えばこんな感じです。

rules: {
  comment: {
    required: true,
    minlength: 5
  }
}

これはname属性がcommentの要素に対してrequiredとminlengthのルールを適用する意味です。

ルールの詳細はつまり検証メソッドに実装されています。

required,minlengthなどはプラグインのbuilt-inルールです。

ここでrequired(必須)は実際どう実装されたかをちらっと見てみましょう。

(私も実は初めてです。。。)

以下抜粋したコードです。

required: function (value, element, param) {
    // check if dependency is met
    if (!this.depend(param, element)) return "dependency-mismatch";
    switch (element.nodeName.toLowerCase()) {
    case 'select':
        var options = $("option:selected", element);
        return options.length > 0 && (element.type == "select-multiple" || ($.browser.msie && !(options[0].attributes['value'].specified) ? options[0].text : options[0].value).length > 0);
    case 'input':
        if (this.checkable(element)) return this.getLength(value, element) > 0;
    default:
        return $.trim(value).length > 0;
    }

一番デフォルトな行為はこれですね。

return $.trim(value).length > 0;

単純にその項目のvauleをtrim(スペースを取り除く)して長さを確認してます。

その前に要素がselectの場合や、inputの場合の判断がそれぞれ違います。

最初にdependがあるのですが、これは簡単に言うとこの要素が必須項目となるのはある前提がある意味です。


これが一番基本の仕組みとなってます。

これ以外もメッセージの内容や位置、

どのタイミングで検証するか、

エラーがある場合のコールバックなどを各自でカスタマイズできるようになってます。


参考となったサイト:

#html

目的

見たの通りform前後の余白を消しました。

これはフォームがテーブルなどを跨がる場合に

レイアウトを調整するのに非常に役に立ちます。

方法

formのmarginを0pxに設定します。

<form style="margin: 0px;">

またmargin-topやmargin-bottomでなどで詳しく指定できます。

マイナス値も入力でき、さらに間隔を縮むめることができます。

参考となったサイト:http://www.1uphp.com/con1/form/form1style.html

#diary

私服よりスーツ

最初のうちはまだ本社で私服で出勤する同僚がうらやましかったのです。

私はお客さんに常駐し毎日スーツでした。

ある日、先輩の一言で突然目覚めた感じです。

「私服じゃ仕事する気がなくなっちゃう」ってね。

それに、スーツでもかっこいいスーツがあるし、

ファッションもできますよね。

ブラックコーヒー

これも甘いものが好きだっだのですが、

いつの間にか、気づいたらもう毎日ブラックじゃないとだめになっちゃいました。

仕事する上で、やはりブラックが一押し!

酒(特に生ビール)

がんばった一日の最後に生ビール一杯で、

本当に「うわぁ~~」って感じ

#jquery

jQueryの$.extendはとても便利な機能です。

jQueryのプラグインを作成する場合は以下の二つを利用します。


$.extend(object) //jQueryそのものを拡張する
$.fn.extend(object) //jQueryエレメントに新しいメソッドを追加する。
//(典型的なjQueryプラグインの作成方法)


今回検討するのは第三の使い方です。

$.extend(target,option,...);

これは第一のパラメータのオブジェクトをどんどん拡張する意味です。

実際のプログラミングではこんな使い方が両方あります。

$.extend(target, option);
$.extend({}, target, option);


違いは何でしょうか?


$.extend(target, option);

これはtargetそのものを拡張する意味です。

実行後targetオブジェクトは変更(拡張)されます。


実例として、例えばプロジェクトにトップレベルの空のConstansクラスがあります。

その下で各モジュール要のconstantsが定義されていて、

それをトップのConstantsに拡張します。

$.extend(constants,subConstants1,subConstants2...);

落とし穴:

var defaults = {};
var option = {};
var opts = $.extend(defaults,option);

上記ではdefaultsが変更され、わざわざ変数optsに代入する意味もなくなります。


$.extend({}, target, option);

これは空のオブジェクトを拡張する意味です。

実行後、targetもoptionもかわらりません。

最も多く使われている実例は、jQueryのプラグインの開発です。

あるデフォルトのoptionを定義し、

ユーザが自分のニーズにあったoptionがあればそれを適用する感じです。

ここで大事なのは定義したデフォルトのoptionはかわりたくないのです。

なので、最初に空のオブジェクトを拡張しそれを何かの変数に

リファレンスをアサインします。


var defaults = {};
var option = {};
var opts = $.extend({},defaults,option);

これで変数optsは求めているデフォルトoptionとユーザが定義したoptionをマージ、拡張したものとなります。

#diary

仕事でいろいろとお世話になった先輩がいます。

技術でどのような難題があっても絶対解決できる、ものすごい技術者です。

そんな先輩はなぜか英語がぜんぜん読めないですよ。

たまたま一緒にソースコードを見て「require」の単語が何の意味って聞かれて、

「え?」って思ったら先輩が話したのです、英語がまったくできないって。

何か勉強するのも日本語の本やサイトにしか頼れないって。

私はもったいない気持ちでいっぱいでした。


きっと、英語ができたらさらに高まるって思ったわけですから。

でも考え直したら、本当にそうなのかとの疑問が出ました。

英語ができる技術者とできない技術者の差はどこ、どれくらいでしょうか。


流行ってる技術に対しては日本語のリソースも十分あるし、

何か困ったときはこれだけに頼ってもほとんどは解決できるとも思います。


翻訳による多少のロスや誤りはありえるけど、

その分ネイティブの言葉でよりよく意味がわかるでしょう。


もちろん、最新の技術はほとんど英語の資料からあって、

その後有志の人たちが自分の国の言語に翻訳するから時間的のロスはあります。

が、「最新=ベスト」とは限らないでしょう。

その技術が成熟かつ、エンタープライズ開発に応用できるまでは

すごく時間が必要と思います。

個人的にはもちろん新しい技術に興味があり、

それを仕事上の開発にも使いたいのですが、なかなか実現できないです。

お客様から何を使うかの指示、あるいはそういった影響もあるし、

その技術が彼らがわかった時は既に最新じゃなくなりますと

私は思っています。

単純な仕事でのごく普通の開発ミッションを満たすだけならば、

その差は特にないとの結論になりました。


とはいっても基本的な英語は覚えといて損はないでしょう。

少なくともメソッド名を見て大体の役割が想像できるくらいは。。。