git管理下の一括置換

かれこれやっちゃったのもう2回目なのでメモしておこうと思います。。。 ちなみにMacOS Xです

git管理化のディレクトリでfindかけてxargsに渡すと
gitリポジトリが壊れます。

find ./ -type f | xargs sed -i '' 's/hoge/fuga/g'

簡単な戻し方わからないです。よって消すしか無いです。。

↓に正しいやり方

git ls-files -z | xargs -0 sed -i '' -e 's/hoge/fuga/g'

http://qiita.com/wnoguchi/items/1b5d18118728b62e50fb

今日の出来事 nohup コマンド

今日仕事中にオススメされて使ってみたのでメモしておきます。

まーなぜ使ったかというと、ある処理をcronで設定しているスクリプトに追加しようとしてました。
そこに追加した処理は画像生成したり合成したりするスクリプトでした。。多少重いです。。

ただ重要な処理の前後に追加しなければいけないのと、付加が高い時間帯なので
落ちた場合困ったなーをさけるため

スクリプトからシェルを直接実行してプロセスを分けて実行する事にしました。

その際にコマンドの前にnohupをつけると接続が切れたとしても実行されます

nohup command [arg...]

ただ&をつけてもバックグラウンドで動作する事ができるのでログアウト後でも処理を実行できます。

しかし通常ターミナルなどが切断した場合、HUPシグナルがプロセスに送られ、プロセスが終了します。

nohup コマンドはハングアップシグナル(SIGHUP, HUP)を無視して処理を実行します、

あとnohup コマンドは書式でコマンド末尾に&をつけなければらしいです。。

ターミナルから重い処理を走らせてnohupをつけていなかった場合でも

1. ctrl+z で一時停止する  
2. bg でバックグラウンドで実行する  
3. disown -h job番号 (job番号はjobコマンドで確認)

を実行すれば指定のジョブに ハングアップシグナル が送られないようにすることができるみたいです。

Swift オプショナル ! ?

Swiftを初めてみようと思いたったけど忘れそうなのでメモ..

オプショナルは値が無い場合を想定して型の後ろに疑問符をつけて定義する。

随意型変数というらしい

型を自由に選択できるということですね nilで初期化されます

//変数aはString型 nilで初期化される
var a : String?  

//これはいける
a = "hoge"   

//nilにも戻せる
a = nil

わかりやすいのは

var s : Int = nil //エラー
var s : Int? = nil // = nilは無くてもいいがエラーにならない

ifの場合

var d : Int? = 10 //値を10で初期化

//判定はbool値 dに値があれば強制的開封!で値を取り出せる
if d != nil { println(x!) }

オプショナル結合

オプショナル変数に値があったら、
仮の変数と結合してifやwhileの制御に使う

var f : Int?
f = 10
//オプショナル変数fに値があるならtrue
if var g = f {
  println(f) //出力10
  println(g) //出力10
} else {
  println("nil")
}

暗に開封されたオプショナル !

オプショナル変数や定数の値を取り出したいとき、
!マークを変数の後につけて強制的に値を取り出す必要があった

これだといちいちめんどくさいので 暗に開封されたオプショナルとして、

!マーク

を使うと値を取り出すとき強制的開封の!マークを書かなくて済む

var h : Int! = 10
if h { println(x) } //!xとしなくて良い 

C,C++,javaでの未初期化変数の扱われ方

主に文字列の場合
ただfor文やif文を絡めるとまた挙動がかわってきます。
今回はprintでの文字列の出力のみです。

C言語の場合 int型の場合コンパイルエラーにならないがchar型の場合,
コンパイルエラーになる ×

char str[];  
   printf("%s\n",str);  

char str[] = "hoge";
   printf("%s\n",str);

javaの場合 コンパイルエラーにはならず実行してみるとnullが出力される。
ただオブジェクト参照の場合は実行時にNullPointerExceptionが起きる。

public class hello{
     static String name;
     public static void main(String[]args){
       System.out.println(name);
    }
}

C++の場合 コンパイルエラーにはならなかったがstd::endlの改行だけ出力された。

include <iostream>
  using namespace std;
 
  int main() {
     string name;
     std::cout << name << std::endl;
     return 0; 
  }  

結論

とりあえずバグの原因になるから初期化は必ずしよう

gccコンパイルした場合は-Wshadowオプションをつけたほうがいいみたいです。

-Wshadow ある局所変数が別の局所変数を隠す(shadow)場合に、 常に警告を出力します。

CopyOnSelect @marverics

ターミナルで選択したテキストを自動コピー

まずEasySIMBLのインストールです
EasySIMBLをインストールします

「How to install」からzipファイルをダウンロードしてきて解凍してアプリケーションフォルダに移します。

EasySIMBLを起動して「use SIMBL」にチェックマークを入れます

次にTerminalCopyOnSelectのインストールをします

TerminalCopyOnSelectからzipファイルをダウンロードします

中に入っているTerminalCopyOnSelect.xcodeprojをクリックしてxcodeを立ち上げます
info.plistのmax bundle versionを現在利用しているターミナルのバージョンよりも高くするとか書いてあったんですけど

max bundle version *になっていたのでこのままでいきます

そしてリリースモードにするためにBuild Active Architecture Onlyを NOにします

※補足※
Xcodeから特定の実機で検証したい場合はDebugビルドの"Build Active Architecture Only"はYES それ以外(例えばAdHocやRelease)の場合はNOにする

そんでcommand + bでBuildします buildすると/Library/Application Support/SIMBL/Pluginsにデータが入っています

ターミナルのメニューからCopyOnSelectにチェックを入れてターミナルを再起動すれば使えるようになってます

CLR/H+プログラミング生放送勉強会

今日はgmo yoursで開催されていた勉強会に参加しました。
久々の勉強会でした
ニコ生連動で生放送しながらの勉強会は初めてだったので結構新鮮でした^^

プロ生ってやつらしいです。

会場に着くやそっち系の人がわんさかw
女装してる人もいたのでちょっときまづかったw

・30分位で伝える Office 365 超概要
・オンラインゲームとかバイナリとか
・デザイナー視点かた見る Web サイト構築あれこれ
・ブラウザベースで作るボットネットの実現性

途中でかえってしまったので
このくらいしか聞けませんでした。

最後のちょっとあやしいけど 笑

まず最初から
office365って簡単に説明すると
クラウドサービスでグループウェアですね

提供しているサービスとしては
。メール・予定表管理
。情報共有ポータル・社内SNS
。オンラインストレージ
などなど
たくさんあるみたいです

結論はgoogle appsと何が違うの的な感じになってました。

ただ東大なども最近導入しているみたいだし使ってみないと何ともいえない。。

次は「オンラインゲームとかバイナリとか 」 と題名がかなり抽象的な表現のセミナーでした

アプリへの攻撃方法の説明など

・プラットフォーム別攻撃難易度
低 windowsネイティブ、家庭用ゲーム機
中 ブラウザゲームスマホゲーム
高 ガラケー

あと最近のソシャゲ事情など...
課金の仕組みなど
ユーザー同士の結びつきを押さえた設計になっているなど

アセンブラ短歌の話もありましたね
話がうまいこともあって結構おもしろかった。

「デザイナー視点かた見る Web サイト構築あれこれ」

これは...エンジニアとしてフリーでやるなら最低限の知識はつけてねということかなw デザイナーさんが苦労しているみたいです

最後は 「ブラウザベースで作るボットネットの実現性」

application cacheの解説 MitMで通信を乗っ取る
・任意のhttp通信を乗っ取って毒を仕込むなど あぶない内容w

結論はMitMを食らわないようにしましょうということで
SSID,PASSが共有されている場所は要注意
SSL証明書エラーも注意
・認証なしAPへの自動接続も危険

最後の方はセキュリティはしっかりしましょうな感じでまとめられていた

一度汚染されたらDNSの変更でも回避できないみたいです

あと途中ニコ生のコメントで
この人普段の仕事でもこんなことやってるの?とか
コメントで流れて笑いそうになりました

これにはさすがに反応して趣味でやってますといってました

感想
事前に調べてから望めばよかったんだけど理解がうすいとこがありました

引っ越し

ついに引っ越しました
豊島区にはだいぶお世話になりました
池袋とは高校からの中です

第2の地元だったのに... 家賃保証にはかえられません..w

かなり疲れたけど引っ越し終わって住所変更もおわりました。

新鮮すぎて落ち着きません><

これからは毎日お昼はみんなを家に連れてきて食べようかな 笑