‘workshop’ カテゴリーのアーカイブ

講習会「正規表現入門 (3)実習&ツール紹介」を開催しました

「正規表現入門 (3)実習&ツール紹介」というタイトルで、経験2〜3年目の人をターゲットに社内勉強会を開催しました。正規表現に対して苦手意識を持っている人は多いようなので、実習を交えた形のプレゼンを試してみました。実験的な試みでしたが、おおむね好評だったようです。

まとめ

  • 次の機能が使いこなせれば正規表現は怖くない!(たぶん)
    • グルーピング
    • 繰り返し
    • 後方参照
  • 正規表現作成のコツ
    • 構造を日本語で説明できれば、正規表現が書けたも同然
      • 例:「ドットの後に英数字2文字以上」の1回以上繰り返し
    • 「ナントカのN回繰り返し」の組み合わせを作っていく
  • Perlは便利!

(続きを読む…)

講習会「文字集合と文字エンコーディング」を開催しました

「文字集合と文字エンコーディング」というタイトルで、経験2〜3年目の人をターゲットに社内勉強会を開催しました。文字集合という単語を知っている必要はないですけど、少なくともUTF-8とShift_JISとでは扱える文字の種類数が違うことだけは伝えたかったので、その意味では目標が達成できたと思っています。

まとめ

  • 文字集合とは、扱える文字の集合
    • JIS X 0208なら6000文字くらいの日本語の文字
    • UCS-2なら60000文字くらいの世界中の主要な文字
  • 文字エンコーディングとは、文字の集合をバイト列に直す方式
    • Shift_JISはJIS X 0208(など)を1〜2バイトにする
    • UTF-8はUCS-2を1〜3バイトにする
  • 文字エンコーディング関連のツールを使いこなそう
    • nkfやlvを使いこなそう
    • 日本語を探すならlgrep
    • 最終兵器:hexjaで16進ダンプ

(続きを読む…)

Web/JS(あまくち) part.7 – jQuery セレクタクイズ

jQuery と言えばセレクタ、大変に便利で使える機能です。
さーて新卒皆にもセレクタ教えるぞーと意気込んでみたところ、バージョンアップに伴いセレクタがパワーアップしておりまして知らない表現が色々と・・
これではいかんと密かに自分の勉強も兼ねつつ jQuery Selector クイズを作って勉強会に持ち出してみました。

まるっと暗記するのではなく

  • 何となく知っている
  • 解決する手段を身につけている

状態になるため、リファレンスにざっと目を通した後にクイズとリファレンスを交互に見比べながら遊んで貰えると良いと思います。
興味ある方はチャレンジしてみてください。

(続きを読む…)

講習会「サーバセキュリティ」

「サーバセキュリティ」というタイトルで社内勉強会を開催しました。普段の勉強会ではSQLインジェクションやXSSなどWebアプリケーションのセキュリティの話題が多く、サーバのセキュリティについては人によって知識がまちまちなので、簡単にまとめてみました。普段サーバをいじらないポジションの人でも、セキュリティフィックスを当てる際にお客さんに説明することはあるでしょうから、サーバまわりについても概要を知っておいた方が良いと思います。

まとめ

  • remote exploitは要注意
    • セキュリティフィックスが出たらすぐ適用すべき
  • 公開サーバは常時パスワード総当たり攻撃を受ける
    • 簡単なパスワードをつけない
    • 可能ならパスワードログインを禁止すべき
  • トロイの木馬は現実にあり得る脅威
  • うっかりopen proxyを作ったりしないように

(続きを読む…)

講習会「メール」第一回

「メール」をテーマに講習会を開きました。今後、複数回に渡りメール周りの様々な知識を紹介して行ければと考えています。

プログラマとしての担当範囲という視点では、「mb_sendmail()等の関数を用いればメールが送れる」しか知らなくてもギリギリ仕事はできるかもしれませんが、本当にそれだけの知識しか無いとしたら不安です。メールに限らず、ある程度の周辺知識は何事にも必要ですよね。

「メール」第一回目の今回は、送信した後の事がイメージできるようになることを目標に、メールを送信してからどのような過程を経て相手に届くかについて説明しました。

メールの送受信の仕組みには、多くの登場人物(アクター)が絡んでいます。登場人物が多い分、トラブルが起こるポイントも様々です。

今回の講義では、各過程におけるトラブルの原因や、確認方法も合わせて紹介しています。メール送受信の仕組みを知る事で、トラブルの原因発見や解決の一助となるのではないでしょうか。

(続きを読む…)

Web/JS(あまくち) part.5 – イベントハンドラ

エンジニア一年生に贈る Web/JavaScript(あまくち) part.5 です。
今回はイベントハンドラを扱っています。

前回に引き続きまたまたid:cos31

レポート
を取ってくれましたので、good なまとめとしてご利用ください。

(続きを読む…)

講習会「コンピュータと時刻・日付」を開催しました。

「コンピュータと時刻・日付」というタイトルで社内勉強会を開催しました。今回は一つのテーマに関してアラカルト的に細かい話題を集めてみましたが、おおむね好評だったようです。主に初級者向けの内容でしたが、一定の経験がある人もそれなりに得るものがあったようです。

まとめ

  • 日付・時刻の処理には用心しよう
    • 仕様は固まっているか?
      • 身近な割に意外と複雑なので油断禁物
    • 自前実装にバグがないか?
      • 分岐が多くなりがち→テストケースも多い
    • サーバの時刻は合っているか?(NTP)
    • unix timeで扱える範囲内か?(2038年問題)

(続きを読む…)

Web/JS(あまくち) part.4 – DOM

エンジニア一年生に贈る Web/JavaScript(あまくち) part.4 です。
今回は DOM を扱っています。
id:cos31先生の
素晴らしいレポートがあるのでまとめはそちらをご覧下さい。

(続きを読む…)

Web/JS(あまくち) part.3 – オブジェクト

エンジニア一年生に贈る Web/JavaScript(あまくち) part.3 です。
今回はオブジェクトを扱っています。

(続きを読む…)

JavaScript: 変数+無名関数と関数リテラルの違い

Web/JS(あまくち) part.2 – 変数宣言、関数、無名関数
で関数オブジェクトの生成について触れましたが、var name = function(無名関数を変数にバインド)とする方法とリテラルとでは挙動が違うのではないかとの指摘がありました。
JavaScript の var についての考察にあるように、

  function() {
    var foo = 1;
  };

というコードは内部解釈的に見ると(インタプリタの挙動的に解釈すると)

  function() {
    var foo;
    foo = 1;
  };

となります。
という事は関数に付いても同様で、関数リテラルの場合は名前付き関数オブジェクトが先積みされ、var name = function とした場合は変数 name だけ先積みされる(name = null の状態)と考えられます。

試してみましょう。

  console.log(foo == null); // true
  console.log(typeof bar == 'function'); // true
 
  var foo = function() {
  };
 
  function bar () {
  }

ばっちり予想通りとなりました。