なかぐろに引き続いてショートカットシリーズ。 矢印を超早く打つ方法は衝撃的!

私、ずーと「やじるし」を変換してましたが「みぎ」を変換で「→」が出ます!(ということを今知りました)

超ショック。12年パソコン使ってきてショートカットの類はマスターしていると思っていたのにorz。2文字も少ない入力方法があったとは!

知ってました奥さん?

posted by Face ysakaki on Mon 10 Nov 2008 at 18:53

私は「・」(なかぐろ)大好きなんですよ。メモの箇条書きでよく使います。 で、つい最近マカーになったんですがキーボードの配列をUSにしてしまったものだから「・」(なかぐろ)なんてない訳です。

ではどうするか?まず「なかぐろ」と打って変換する手が思いつきます。面倒。

結論。「option+/」または「/の後スペース2回」でなかぐろが出せます。やったー!!

posted by Face ysakaki on Mon 10 Nov 2008 at 18:18

[追記:12月9日]
開始は13時に決定しました。
内容はLTとiPhoneアプリ開発のよもやま話になりそうです。

また、ATNDにて今回の勉強会ページを作成しました。今後はATNDを更新していきます。
詳細&参加は下記からどうぞ!
http://atnd.org/events/232

[追記] 日付を13日(土)に決定しました


iPhone勉強会やってみたい!と思ったら、スプーキーズ @kusakariさんが場所提供をOKしてくれました、thanks!

10人程度の規模を予定しています。内容は決まっていませんが、@takiuchiさんも参加予定です。日時についてもまだ未定。参加したい方は satoko at s21g dot comまでメールくださいますようよろしくお願いします。

日時:12月13日(土) 13時〜
場所:スプーキーズさん(京都)
地図:http://www.spookies.co.jp/about.html(ページ一番下)

posted by Png satoko on Mon 10 Nov 2008 at 15:25

前回の中規模ネットワーク構築メモ(パッチパネル作成編)の続きです。

記事全体の目次は中規模ネットワーク構築メモを参照してください。

前回はパッチパネルを作成したので、今回はパッチパネルとハブを繋げていきます。

これで快適インターネットライフを満喫できます!

必要なもの

パッチパネル・ハブ接続では、このようなものが必要になってきます。

装置など

  • (前回設置した)パッチパネル
  • UTPケーブル
  • RJ45コネクタ
  • スイッチングハブ

工具

  • かしめ工具
  • ニッパ
  • ケーブルテスタ(あれば)

ではでは、さっそく作業に移っていきましょう。

ハブの購入

「CiscoのCatalystが欲しい!」とおねだりしたところ、「お金ない!ダメ!」と即答で却下されたので、しぶしぶ別のメーカのものを買うことに。

今回の購入のポイントは、

  • 安い
  • ある程度高機能

でした。

そこで先生にお勧めされたのが、以下の2点

そして、結局上に示したものを買うことになりました・・・。 Cisco触りたかったなぁ・・・。

好みの長さのLANケーブルを作成する。

パッチパネルとハブを接続するためのケーブルを作成していきます。

ケーブルの作り方は、LANケーブル作成(ストレートケーブル編)を参照のこと。

今回は、50cmのケーブルを作ってみました。

ゾーンボックスが6個、ポートが6個ずつということもあり、6色のケーブルを6本ずつ作製してみました。

特に深い意味はなくて、「『この色のケーブルは、○番のボックスに繋がってるんやったなぁ』ってのを直感的にわかるようになるかな?」程度です。

こんな感じ。

IMG_1456_R.jpg

この工程ではひたすらケーブルを作ります。

今回は、36本ということもあり、地味にしんどい作業でした。

ハブの設置&パッチパネルとハブを接続

ハブをラックに設置します。 場所は、パッチパネルの上くらいで。

NETGEARのGS724TSは、付属のHDMIケーブルで機器同士を接続することで、最大6台までスタックでき、ポートを増やすことができます。

この機能があれば、将来ネットワークに接続するマシン数が増えても、フレキシブルに対応できますね。

設置が終われば、ケーブルをパチパチと差していきます。

IMG_1457_R.jpg

カラフルすぎる(笑)

最後に

以上で、基本的な中規模ネットワーク構築の終了です。

これで、快適インターネットライフを満喫できるようになりました。

ここから、ルータを置いたり、サーバ置いたり、VLAN構築したり・・・と数えればキリがない作業があるはず・・・

今回の作業を通してわかったことは、頭より「体力勝負」ですね。

ネットワーク構築をしたいみなさんは、筋トレ・ジョギングなど体力づくりに励みましょう。

posted by Png y_tsuda on Mon 10 Nov 2008 at 13:11

UNIX系のOSに付属しているlookコマンドを使うと、/usr/share/dict/wordsのうち引数で受け取った文字列で始まっている行を出力してくれます。

こんな感じ。

   1  $ look look
   2  look
   3  lookahead
   4  look-alike
   5  
   6    (中略)
   7  
   8  lookup
   9  lookups
  10  looky

これを使ってスペルチェックっぽいものをRubyで。

   1  def spellcheck(word)
   2    return `look #{word}`.split("\n").include?(word)
   3  end
   4  
   5  spellcheck("look")
   6  #=> true
   7  spellcheck("loook")
   8  #=> false

ただlookコマンドを呼びだしただけですが・・・。

はたして、使うことはあるのだろうか・・・

posted by Png y_tsuda on Mon 10 Nov 2008 at 01:06

Objective-Cのコードを書いていると、メモリリークを していないかという所が気になりますが、 scan-buildコマンドを使うと、非常に簡単に静的にプログラムを解析して メモリリークを検出することができます。

   1  % scan-build xcodebuild

プロジェクトのディレクトリに移動して、上記コマンドを実行するだけです。 標準出力と/tmp(あるいはオプションで指定したディレクトリに)レポートが出力されます。

メモリリークはInstrumentsでも検出出来ますが、 これもなかなか便利ですね。

See Also

posted by Png genki on Sun 9 Nov 2008 at 16:47

Objective-CでCSSでよく使うようなABCDEFFFのようなHex encodeされた形式の文字列からUIColorを生成する方法の紹介です。

   1  @interface UIColor (HexEncoding)
   2  + (UIColor*)colorFromString:(NSString*)string;
   3  - (NSString*)encodeToString;
   4  @end
   5  
   6  @implementation UIColor (HexEncoding)
   7  
   8  + (UIColor*)
   9  colorFromString:(NSString*)string
  10  {
  11    NSScanner *scanner = [NSScanner scannerWithString:string];
  12    NSUInteger value;
  13    [scanner scanHexInt:&value];
  14    CGFloat red   = ((value & 0xFF000000) >> 24) / 255.0f;
  15    CGFloat green = ((value & 0x00FF0000) >> 16) / 255.0f;
  16    CGFloat blue  = ((value & 0x0000FF00) >>  8) / 255.0f;
  17    CGFloat alpha = ((value & 0x000000FF) >>  0) / 255.0f;
  18    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
  19  }
  20  
  21  - (NSString*)encodeToString
  22  {
  23    const CGFloat *components = CGColorGetComponents(self.CGColor);
  24    return [NSString stringWithFormat:@"%02x%02x%02x%02x",
  25            (int)(components[0]*255 + 0.5f),
  26            (int)(components[1]*255 + 0.5f),
  27            (int)(components[2]*255 + 0.5f),
  28            (int)(components[3]*255 + 0.5f)];
  29  }
  30  
  31  @end

わかりやすいように、UIColorにメソッドカテゴリを追加しています。 encodeToStringのほうでは、0.5を足してroundをかけていますが、 状況に応じてfloorにしたりceilにしたりしてください。

また、この例ではComponentsのサイズが4である事を期待しています。 そうではない色を扱うときには問題が発生しますので、ご注意ください。

posted by Png genki on Fri 7 Nov 2008 at 12:20

Objective-Cは、Rubyのようにメソッドの定義を書き換えたりする事ができます。

   1  #import <objc/runtime.h>
   2  
   3  id (*foo_without_bar)(id, SEL);
   4  id foo_with_bar(id self, SEL selector)
   5  {
   6    /* do your work here */
   7    return foo_without_bar(self, selector);
   8  }
   9  
  10  // exchange method implementation
  11  SEL fooSelector = @selector(foo);
  12  Method method = class_getInstanceMethod(class, fooSelector);
  13  *(IMP*)&foo_without_bar =
  14    method_getImplementation(method);
  15  method_setImplementation(method, (IMP)foo_with_bar);

この例では、IMPの定義と同じプロトタイプのメソッドを書き換えてるので不要ですが、IMPの定義と異なるプロトタイプのメソッドを書き換える場合は、 IMPにキャストする必要があります。

また、戻り値が浮動小数型であったり、サイズが大きい構造体を返すメソッドの場合は、上記の例とは異なる方法を使う必要があるので、注意が必要です。(NSInvocationを使う必要があります)

See Also

posted by Png genki on Fri 7 Nov 2008 at 12:00 with 2 comments

UIScrollViewのscrollRectToVisible:animated:の挙動についてのメモです。

これは名前の通り、第一引数で指定したCGRectをViewの可視領域に 持って行くためのメソッドなのですが、 可視領域からはみ出すような大きなCGRectを指定した場合は、CGRectの下端が優先的に表示されるような挙動になるようです。 また、CGRectがemptyの場合は何もおこりません。

上端を優先して表示させたい場合は、 可視領域のCGRectを求めて、あらかじめ可視領域に収まるようにしてから呼び出せばOkです。

ところで、このメソッドはcontentInsetを意識してくれないようなので、 contentInsetを使っている場合は、contentInsetの分だけ広げたrectを指定してあげると良い感じになるようです。

posted by Png genki on Fri 7 Nov 2008 at 11:14

ちょっと私用でZIP圧縮をする機会があったので、メモ。

RubyでZIP圧縮するにはいろいろと方法があるようです。

  1. 拡張ライブラリのZlibを使う(GZip形式になる?)
    URL: http://www.ruby-lang.org/ja/man/html/Zlib.html
  2. Gemパッケージのrubyzipを使う
    URL: http://rubyforge.org/projects/rubyzip/
  3. Gemパッケージのziprubyを使う
    URL: http://rubyforge.org/projects/zipruby/

Rubyforgeをみた感じだとziprubyのほうが新しいようだったので、今回はziprubyを使うことにしました。

まず、ziprubyをインストールします。

   1  # gem install zipruby

実際にコードを書くとこのような感じになります。

   1  #/usr/bin/env ruby
   2   
   3  require 'rubygems'
   4  require 'zipruby'
   5  
   6  zipfile = 'test.zip'  # 圧縮されたファイル名
   7  passwd = 'password'   # パスワード
   8  
   9  # 圧縮するファイルたち
  10  # ファイル名を文字列で
  11  files = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
  12  
  13  # filesを圧縮して, test.zipを作成
  14  Zip::Archive.open(zipfile, Zip::CREATE) do |arc|
  15    files.each{|f| arc.add_file(f) }
  16  end
  17  
  18  # パスワードつきのZIPファイルにする
  19  Zip::Archive.encrypt(zipfile, passwd)

今回は圧縮と暗号化でしたが、解凍と復号もできるようです。

それにしても、rubyzipとか、ziprubyとか、Gemパッケージって名前の付け方が煩雑ですね・・・。

posted by Png y_tsuda on Thu 6 Nov 2008 at 15:10