脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

2015-07-01から1ヶ月間の記事一覧

Gitで間違ったブランチで開発をしてしまった場合の対処(masterブランチで開発を始めてしまった場合など)

Git

Gitで間違ったブランチで結構開発してしまって、その差分を他のブランチに移したいときの手順です。 commit前の開発を他のブランチへ移す git stash # 一時退避 git checkout ${実際に開発したいブランチ} git stash pop #<====直前のgit stash で退避した内…

vi/vimのtips 35選

よく使う & 便利なvi/vimの機能をtipsとして残します。 ちょこちょこ追加とか削除とかするかもしれません。 移動系 行数を指定して移動 指定した行数へ飛びます :行数 単語単位で移動 w # 単語単位で右へ移動 b # 単語単位で左へ移動 行頭・行末へ移動 0 # …

TravisCIの使い方(入門・導入編)

Travis CIとは何か Travis CIのCIとはContinuous Integration(継続的インテグレーション)の略である 継続的インテグレーション - Wikipedia 数あるCIツールの中でもTravisCIはGitとの連携を売りにしており、ソースをGitで管理している場合は非常に簡単にテス…

TravisCIのrakeとかbundle installが自動で実行されない

TravisCIは、build時に自動でbundle installして、 bundle install --jobs=3 --retry=3 # <= これ build後に自動でrakeファイルを実行してくれると下の公式リンクに書いてあった。 Building a Ruby Project - Travis CI だけどbundle installもrakeも実行さ…

Rubyで文字列で帰ってきた"true"や"false"をBooleanに変換するto_boolメソッドを実装

前提 rubyの条件文ではnilとfalse以外はすべてtrueとして扱われてしまう condition = 'false' puts "TRUE" if condition # => TRUE condition = 0 puts "TRUE" if condition # => TRUE condition = 'nil' puts "TRUE" if condition # => TRUE # ちなみにnull…

RubyのIO.select を使って、TCP socketで返信がなくなったら自動でコネクションをきる方法

問題 TCP socketで送ったコマンドのレスポンスが複数行にわたる時とかに、データを全部取得したいんだけどgetsだと1行ずつしかとれないし、ループを回しても次の入力待ちになって帰ってこない。 今までは、、 問い合わせ先で終了文字を設定して送り返すよう…

SwiftによるiPhoneアプリ開発入門(超初歩)その10 -データの保存(ユーザデフォルト)-

今回はデータの保存ができるアプリを開発します。 iOSではアプリのインストール時に、アプリ毎のサンドボックスが用意されます。各アプリは通常、サンドボックス内のファイルへのみアクセスが可能です。そのため、アプリ内の情報を他のアプリから盗まれたり…

メタプログラミングRuby 第4章 まとめ (クラス定義)

個人的第四章のキーワード class_eval() クラスインスタンス変数 特異メソッド 特異クラス Extend アラウンドエイリアス カレントクラス クラス定義の中ではselfは定義されたクラスである defで定義されたメソッドはすべて、カレントクラスのインスタンスメ…

SwiftによるiPhoneアプリ開発入門(超初歩)その9 -リストからの遷移と、編集と削除-

今回は前回作成したセクションに分けたリストに、以下の機能を付け加えます 詳細画面への遷移 セルの編集(並び替え)機能 セルの削除機能 前回のリスト構造 SwiftによるiPhoneアプリ開発入門(超初歩)その8 -複数セクション(グループ分け)したリスト- - 脳汁po…

SwiftによるiPhoneアプリ開発入門(超初歩)その8 -複数セクション(グループ分け)したリスト-

前回はセクションを分けない(グループ分けしない)でリストを一括表示しましたが、今回はリストをセクションに分けてみます。 1、リスト上に表示させる画像をSupporting Filesディレクトリへ配置2、ストーリーボードから既存のシーンを削除し、Table View …

シンボリックリンクの作成の仕方と、リンク先へcdで移動する際に直接本体へ行く方法

前回作成したこのディレクトリを利用します $ ls -loR 1st_dir 1st_dir: total 4 drwxrwxr-x 3 roma 4096 Jul 24 09:23 2nd_dir ・ ・ ・ 1st_dir/2nd_dir/3rd_dir/4th_dir/5th_dir: total 0 mkdirで存在しない途中のディレクトリも一緒に作成する方法 - 脳…

mkdirで存在しない途中のディレクトリも一緒に作成する方法

普通に深い階層のディレクトリを作ろうとすると、途中のディレクトリがないといって怒られます。 $ mkdir 1st_dir/2nd_dir/3rd_dir/4th_dir/5th_dir # => mkdir: cannot create directory `1st_dir/2nd_dir/3rd_dir/4th_dir/5th_dir': No such file or direc…

[Ruby] Cookieのvalueにhashを使う(StringをHashに変更する)方法

問題点 Cookieの:valueにHashをいれても、取り出すときにStringになってしまう 先日のブログで書いたとおり、セッション毎に別々のexpire timeを持たせるためにcookieを利用することにした. [Ruby] sinatraでそれぞれのセッションに別々のexpiration timeを…

[iOS] SwiftによるiPhoneアプリ開発入門(超初歩)その7 -リスト構造-

iOS

今回は一覧表示画面の作成方法を説明します イメージ 1、ストーリーボードから既存のシーンを削除して、Table View Controllerを配置し、右の設定画面の「Is Initial View Controller」にチェックをいれます 2、セルのプロパティを編集して、スタイルとide…

[Ruby] sinatraでそれぞれのセッションに別々のexpiration timeを設定して、KVSみたく任意の時間で自動に消えるようにしたい

sinatraでセッションのデータにexpiration dateを持たせて、ある一定時間たったら自動で消えるっていう処理を書きたかった。 Session すごいはまって結構がんばったけど、思い通りの実装は出来なかった。。 sinatraのsessionにも、expiration dateはある get…

[Ruby] なんでRubyにはprependはあるのにappendはないんだろう?

Rubyにはprependはあるがappendはない。 だから後方に追加したかったらconcatとか「+=」を使う。 h = Hash.new puts h.store(:alphabet, "b") # => b # append puts h[:alphabet].concat("c") # => bc # prepend puts h[:alphabet].prepend("a") # => abc 一…

[html/css] httpのフォームでDELETEやPUTのメソッドを送る方法

sinatraでAPIを作っていてはまったのだが、現在のブラウザはGETとPOSTの通信方式にしか対応していないらしい。 失敗例 <form method="delete" action="/"> <input type="text" name="textArea"> <input type="submit" value="delete!!"> </form> ↓ 192.168.33.1 - - [22/Jul/2015:03:08:16 +0000] "GET /?textArea= HTTP/1.1" 200 198 0.0008 こうやってdeleteを指定したにも関わ…

[iOS] SwiftによるiPhoneアプリ開発入門(超初歩)その6 -条件による画面遷移の分岐-

iOS

同じボタンで、条件によって遷移先を変更する方法です1、ストーリーボード上で画面を三つ用意し、 最初の画面にはSegmented Controlと遷移するためのbutton 次の遷移する二つの画面にはimageViewと戻るボタン用のbutton をそれぞれ配置する 2、最初の画面…

[iOS] SwiftによるiPhoneアプリ開発入門(超初歩)その5 -ナビゲーションコントローラー-

今回はナビゲーションコンントローラーによる遷移を説明します1、まずはストーリーボード上にView Controllerを二つ配置します 2、最初の画面を選択し、「Editor」>「Embed In」>「Navigation Controller」を選択します。 ↓ 3、最初の画面上部を選択して…

[Ruby] Sinatra超入門

Sinatraで、入力した値を表示させるだけの超簡単なアプリをつくる方法を手順化して説明します。 1.環境作成 yum install openssl-devel httpd gem install sinatra gem install thin まずはApacheの設定やsinatraのインストールをします。 sinatraはそれだ…

[Ruby] 多重Hashの宣言の仕方

RubyではPHPのようにデフォルトで多重Hashを利用することが出来ません。 以下のようなエラーになります。 single_h = Hash.new single_h["first"]["second"] = "value" # => hash.rb:13:in `<main>': undefined method `[]=' for nil:NilClass (NoMethodError) こ</main>…

メタプログラミングRuby 第3章 まとめ (ブロック)

第三章でのキーワード ブロック 束縛 クロージャ proc lambda 遅延評価 ブロック ブロックを定義できるのはメソッドを呼び出すときだけ ブロックを受け取ったメソッドはyieldでブロックをコールバック(展開して利用)する ブロックとはメソッドに渡す無名引数…

[Ruby] sinatraがポート4567を指定しても繋がらない

ちょっとはまったのでメモに・・・ Sinatra: README (Japanese) このsinatraの日本語サイト通りに gem install sinatraして、 gem install thinして、 myapp.rbを作って、 # myapp.rb require 'sinatra' get '/' do 'Hello world!' end 起動して、 $ ruby my…

[VM] WindowsのVirtualBoxにVagrantでCentOS6の環境を作る手順

VM

タイトルの通り、Windows環境でVirtualBoxにVagrantでCentOSをいれる方法です。 環境 Windows7(64btit) VirtualBox 4.3.16 CentOS6.4 Vagrant 手順 1. まずはVirtualBoxをダウンロードします(http://www.virtualbox.org/) 2. 次にVagrantをダウンロードしま…

[iOS] SwiftによるiPhoneアプリ開発入門(超初歩)その5 -値の引き継ぎとタプル-

iOS

画面遷移先に値を引き継ぐ方法とタプルというデータ構造について説明します。1. まずはview controllerを二つ用意し、 1ページ目にボタンを二つ 2ページ目にimageViewとLabel, 戻るボタン を配置し、1ページ目のボタンから2ページ目へ方式「present modally…

Gitstatsの使い方(Git visualization)

gitstats 複数人で開発をするプロジェクトなどで、誰がどのようにコミットしたかvisualizationしてくれるツールです 使い方 準備 ### install library yum install gnuplo ### download gitstats cd /usr/local/src git clone https://github.com/hoxu/gitst…

[iOS] SwiftによるiPhoneアプリ開発入門(超初歩)その4 -画面遷移と戻るボタン-

iOS

画面遷移と戻るボタンの実装の方法です。 画面遷移 こちらはすべての作業がStory board上で完結します1. まずは画面を二つ用意し、1ページ目にボタンを配置します 2. 1ページ目のView controllerのボタン[をCtrlを押しながらドラッグすると矢印が出現するの…

[Ruby] Procとlambdaの違い

ブロックをオブジェクト化する代表的な方法としてProcとlambdaがあるが、その違いに関して簡単に説明 returnに対する挙動の違い lambda 普通にlambdaから返る(メソッドのreturnと同じ挙動) def double(lambda_blk) lambda_blk.call * 2 end l = lambda{retur…

[Ruby]オプションの使い方・取得の仕方(OptionParser)

Rubyのoptionを扱うOptionParserの使い方を簡単に書きます。 OptionParser コマンドラインのオプションを取り扱うためのクラスです。 class OptionParser (Ruby 2.1.0) 使い方 公式ドキュメントにも書いてありますが、使い方の流れは以下になります。 1. Opt…

[html/css] html でtableのセル内とかで自動改行(折り返し)禁止にする方法(nowrap, whitespace)

htmlで自動で改行して欲しくいときに、改行(折り返し)禁止にする方法です。 こんな感じ こちらのセルは自動改行禁止にしています。 こちらのセルは自動改行禁止にしていません。 whitespace(CSSとして別で記述) htmlファイル <table border="1" width="500"> <tr> <td class="test">こちらのセルは自動改行<span style="color: #ff0000"><b>禁止</b></span>に</td></tr></table>…