nvmでNode.jsの管理をしてみたよ。nvmを選択して理由はNode.jsをインストールするとnpmも一緒にインストールされるから便利かなと思って。
■環境
CentOS 6.3
続きを読む nvmでNodejsの管理をしてみたよ
「Tech」カテゴリーアーカイブ
Nodejsでポート80で動かす
nodejsで作ったWebアプリを80番ポートで動作させたいけど、Apacheが使っているし、Apacheを止めてルートで80番ポートを割り当てるのもセキュリティ的にいやなんでApacheを使ってポート8080を80にリバースプロキシさせてみました。
Apacheの設定はこんな感じ。
続きを読む Nodejsでポート80で動かす
32ビット or 64ビットマシンを確認する方法
使用してるマシンが32ビットマシン or 64ビットマシンなのか確認する方法を書いときます。
聞かれたり、自分でもあれっどこで確認するんだっけ?なることがあるので。
続きを読む 32ビット or 64ビットマシンを確認する方法
UITextViewとUIToolbar
UITextViewを使うとUITextFieldと違って完了ボタンが改行ボタンになっている。完了ボタンに変更もできるけど、改行もしたいからUIToolbarを使用して、そこに完了ボタンを配置してみる。
-(void) init { toolBar = [[[UIToolbar alloc] init]]; // ツールバーを配置する場所 [toolBar setFrame:CGRectMake(0, 220, rootViewController.view.bounds.size.width, 44)]; [hogeViewController.view addSubview:toolBar]; // スペーサの生成 UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; // 完了ボタンの生成 UIBarButtonItem *doneButton = [[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(onDoneButton)]autorelease]; // スペーサを入れて左端に完了ボタンを配置する [toolBar setItems:[NSArray arrayWithObjects:spacer, spacer, doneButton, nil]]; } // 完了ボタンがおされたとき -(void)onDoneButton { // キーボードを隠すなどの完了時の処理 }
キーボートが日本語とかになっていると、予測変換?のバーが出てきてせっかく作ったツールバーが隠れてしまう。。
ツールバーをキーボードのサイズで動的に変更することで解決しました。
方法は、ここに書かれているTextfiledを動的に変更する方法をツールバーに適応させればOK!!
UITextViewだと自分でいろいろカスタマイズ出来るけど、優しさが必要だな。
UITextViewあれこれ
UITextViewの実装でいろいろ試してみたのでのでメモ
キーボード表示
遷移時にbecomeFirstResponder/textViewShouldEndEditing を使用すればキーボード編集開始/終了でデリゲートが呼ばれるはずなのに呼ばれない。。。
いろいろ試してみたら、addSubviewした後にbecomeFirstResponderすることでキーボードが表示された。
こんな感じ。
CGRect rect = CGRectMake(0, 0, 250, 50); UITextView* textView UITextViewalloc] initWithFrame:rect]; textView.delegate = self; [hogeViewController.view addSubview:textView]; [textView becomeFirstResponder]; // キーボードを表示
続いてデリゲートメソッドはこんな感じ。戻り値をNOにすると呼ばれなくなるので注意。
- (BOOL) textViewShouldBeginEditing: (UITextView*) textView { // 編集開始時の処理 return YES; } -(BOOL)textViewShouldEndEditing:(UITextView *)text { // 編集終了時の処理 return YES; }
テキストエリアを枠線&角丸にする
デフォルトのテキストエリアだとかなり悲しい感じなので枠線を付けて角丸にしてみます。
// 枠線 textView.layer.borderWidth = 1; textView.layer.borderColor = [[UIColorblackColor] CGColor]; // 角丸 textView.layer.cornerRadius = 5;
layerを使用するために、QuartzCore.h のimportを忘れずに。
UITextViewってなんか扱いにくいなぁ。
objective-Cでの型変換
あんまり用途がないかなって思っていたけど、使う機会が何回かあったのでいくつかメモしておきます。
NSString* から char*への変換
NSString* str = "hoge"; char* ch = [str UTF8String];
char* から NSString*への変換
char* ch = "hoge"; NSString* str = [NSString stringWithCString:ch encoding:NSUTF8StringEncoding];
NSString から int への変換
int value = [ @"123" intValue ];
※floatやdoubleに関しても同様にできるよ。
int から NSString* への変換
NSString* value_str; value_str = [ NSString stringWithFormat : @"%d", 123 ];
Xcode4.5でopenFrameworksをビルド
Xcode4.5にあげて、oFをビルドしたら今までの作ったのものビルドが通らなくなった。。
設定を変更するだけで、問題なくビルド出来たのでメモとして残しておきます。
【環境】
Xcode4.5
openFrameworks007(古くてごめんなさい)
Target iOS6
①プロジェクトを開いて、「TARGETS」を選択し、「Build Setting」タブをクリック
②「Architectures」と「Valid Architectures」を「armv7, armv7s」から「armv7」に変更する
これで後はCleanしてBuildで問題なくビルドが通りました。
Xcodeのバージョンがあがるたびにドキドキする。
Firefox OSを試してみたよ。
Firefox OSがWin/Mac/Linuxに入れるみたいだから入れてみたよ。
【環境】
OS : Ubuntu 12.04
インストールは簡単でここからタウンロードする。
タウンロードしたら適当なフォルダに格納して解凍する。
$ tar Icvf b2g-18.0a1.en-US.linux-i686.tar.bz2
解凍先のb2gディレクトリ移動して、gitからGaiaをチェックアウトする。
$ cd ~/b2g
$ git clone git://github.com/mozilla-b2g/gaia
$ make -C gaia profile
プロファイルを指定してb2gを起動する。これでGaia UIが起動する。$ ./b2g -profile gaia/profile
メモ(chkconfigのランレベル)
いつもchkconfigのランレベルを忘れちゃうのでメモを。
ランレベル モード
0 システムの停止モード
1 シングルユーザモード
2 マルチユーザモード(ネットワークなし)
3 マルチユーザモード(テキストログイン)
4 カスタムモード(未使用)
5 マルチユーザモード(グラフィカルログイン)
6 システムの再起動モード
ちなみにサービスを個別に指定する場合は以下のとおり。
$ chkconfig –level 3 サービス名 on
確認
$ chkconfig –list サービス名
サービス名 0:off 1:off 2:on 3:on 4:on 5:on 6:off
$
iptablesの設定
apacheの設定に続いて、iptablesの設定も書いときます。
まずはファイルが無いので作成する
$ sudo vi /etc/sysconfig/iptables
開いたら以下を書いて閉じる。
※可読性をよくするためにスペースを入れるけど、実際に書く時はスペースなしで。
*filter #このホストに対して入ってくるパケットを通過させるか遮断させるかを設定 #すべてのパケットを許可([0:0] : 「パケットカウンタ:バイトカウンタ」) :INPUT ACCEPT [0:0] #このホストを経由するパケットに対しての設定 :FORWARD ACCEPT [0:0] #このホストから送られるパケットに対する設定 :OUTPUT ACCEPT [0:0] # ユーザ定義チェーン :RH-Firewall-1-INPUT - [0:0] #「-j」オプション:あるチェインを別チェインにジャンプさせる. # ここではINPUTチェインを、ユーザー定義チェインにジャンプさせることで、INPUTとFORWARDチェインで入ってくるパケットをユーザー定義チェインでチェックさせる。 -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT # ループバック(lo)は通信を許可する。 -A RH-Firewall-1-INPUT -i lo -j ACCEPT # pingで疎通確認したいからICMPも通信を許可する。 -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT #「-p」に続けて番号を入力することで、プロトコルを指定 # 50(ESP)と51(AH)を許可 -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT #「5353」:マルチキャストDNS # これは専用のアドレス「224.0.0.251」にパケットを投げて応答をもらうことで、 # わざわざIPアドレスとホスト名の変換を行わなくてもマシンを認識できる仕組み。 -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT # ポート「631」は印刷データの送受信のためのプロトコルで、これも「ACCEPT」で許可。 -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT # この「state」はパケットの状態を指定するためのモジュール。 # 今回は「ESTABLISHED(過去に接続されたことがある)」または「RELATED(既存の接続に関係している)」と # 見なされた場合に、接続を許可する。 -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #「-m tcp」でtcpモジュールを有効にした後に、「-p tcp」でプロトコルがtcpの場合に限定する。 # SSH, HTTP, FTP1, FTP2, MYSQL -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT # 接続許可のルールに一致しなかったパケット。 # それらのパケットはすべて「REJECT(エラーパケット送信)」します。 #「–reject–with」はエラーパケットの種類を指定するためのもので、 # 今回は「icmp-host-prohibited(ホストによって禁止されました)」というメッセージを送るように指定しています。 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
設定が完了したらiptablesを再起動させます。
$ sudo /etc/rc.d/init.d/iptables restart