2013年12月15日日曜日

コードを自動整形できるPlugin、XAlignをXcode5.xにインストールする

XalignというXcodeのPluginをXcode5.xにインストール方法を紹介します。
XalignはXcodeのエディタ上で範囲選択したコードを整形してくれるPluginです。
※この方法はXcodeのバージョンアップに伴いアンインストールされる場合があります。

[手順概要]

  1. Pluginをダウンロード
  2. インストール
  3. Xcodeを再起動


1.Pluginをダウンロード
 1.1.Plugin配布元からXAlign.tar.gzをダウンロードします。

2.インストール
 2.1.ダウンロードしたXAlign.tar.gzを解凍するとXAlign.xcpluginが出来上がります。
 2.2.~/Library/Application Support/Developer/Shared/Xcode/Plug-insへXAlign.xcpluginをコピーします。フォルダーが存在しない場合は作成する必要が有ります。


3.Xcodeを再起動
 3.1.Xcodeを再起動したらEditメニューにXAlignが追加されていることを確認します。



このエントリーをはてなブックマークに追加

2013年12月9日月曜日

Windows上にGitのベアリポジトリを作成してMACからpushするまでの俺メモ

Windows上のリモートリポジトリにMACからアクセスする為にはWindows側でGitDaemonを起動しておくことがミソのようです。(gitプロトコルで接続する場合)


[手順概要:Windows側]

  1. Gitをインストールする
  2. TortoiseGitをインストールする(任意)
  3. スタートアップにGitDaemonを起動させるバッチファイルを配置する
  4. 再起動してバッチファイルからGitDaemonを起動させる
  5. ベアリポジトリを作成する
[手順概要:Mac側]
[手順詳細:Windows側]

1.Gitをインストールする

 1.1.Gitの本家サイトからインストーラーをダウンロードしてインストールします。

2.TortoiseGitをインストールする(任意)

2.1.TortoiseGitのインストールは必須ではありませんが非常に使い勝手が良いのでインストールしておきましょう。
 2.2.TortoiseGitの本家サイトからインストーラーをダウンロードしてインストールします。
 2.3.必要であれば日本語言語化ファイル配布サイトから日本語化ファイルをダウンロードしてインストールします。

3.スタートアップにGitDaemonを起動させるバッチファイルを配置する

3.1.このバッチファイルのテンプレート内容をコピペ後修正したRunGitDaemon.batを作成する
 例)
@echo off

rem -------------------------------------------------
rem Run Git Daemon bat for msysGit Ver1.0
rem -------------------------------------------------
rem Git Daemon using port 9418
rem -------------------------------------------------

set gitCommandDrive=C:
set gitCommandPath=%gitCommandDrive%\"Program Files (x86)"\Git\bin

set gitBaseDrive=D:
set gitBasePath=%gitBaseDrive%\manabe\public\Git\repo

rem Run Git Daemon
%gitCommandPath%\git daemon --verbose --export-all --enable=receive-pack --base-path=%gitBasePath%

exit

 3.2.スタートアップフォルダにバッチファイルを配置する
 スタートアップの場所の例)
C:\Users\Manabe\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

 スタートメニューから開くことも可能



4.再起動してバッチファイルからGitDaemonを起動させる

4.1.Windowsを再起動させる
 再起動後に下記の画面がでていたらOK


5.ベアリポジトリを作成する

5.1.コマンドラインを使って作成する場合
  5.1.1.Git Bashを起動する
  5.1.2.ベアリポジトリを作成するフォルダーへ移動する
  5.1.3.ベアリポジトリ用のフォルダーを作成し初期化する
  例)
    $mkdir hoge.git
    $cd hoge.git
    $git --bare init --share

 5.2.TortoiseGitを使って作成する場合
  5.2.1.エクスプローラーを使用して共有フォルダ配下にベアリポジトリ用のフォルダーを作成する

  5.2.2.作成したフォルダ内でマウスの右クリックメニューから[Git Create repository here]を選択する

  5.2.3.Make it Bareにチェックを入れてOKをクリック

[手順詳細:Mac側]

1.ベアリポジトリへ接続可能か確認する

1.1.ターミナルからコマンドを実行して確認する。エラーが表示されなければOK
  $git ls-remote git://192.168.12.10/hoge.git

2.リモートリポジトリを設定してpushする

2.1.pushする.gitがあるフォルダーへ移動
 例)
  $cd /path/to/my/repo/hoge

 2.2.リモートリポジトリを設定
 例)
  $git remote add origin git://192.168.12.10/hoge.git

 2.3.pushする
 例)
  $git push -u origin --all
  $git push -u origin --tags

 2.4.README.mdを追加
 例)
  $echo "# This is my README" >> README.md
  $git add README.md
  $git commit -m "First commit. Adding a README."
  $git push -u origin master

[リモートからcloneする]

$git clone git://192.168.12.10/hoge.git

このエントリーをはてなブックマークに追加

2013年11月11日月曜日

iOS7からhidesBottomBarWhenPushedでタブバーが非表示にならない?

iOS7になって

self.hidesBottomBarWhenPushed = YES;

を記述してもなぜかタブバーが非表示になってくれないので
UITabBarControllerのviewDidLoadにて

self.tabBar.hidden = YES;

を記述してとりあえず対応しました。
画面単位の表示、非表示の切り換えとかどうしよう。。。

このエントリーをはてなブックマークに追加

2013年9月3日火曜日

Facebookの近況等でウェブサイトのURLが入力された際に画像や概要を表示させる方法


FacebookでウェブサイトのURLを入力した際にサイトの概要や画像が表示されるようにする方法を紹介します。
方法といってもheaderに必要なメタタグを記述するだけでokです。


こんな感じでメタタグをいれるだででFacebookでURLを入力するとメタタグの情報が表示されるはずです。

※気をつけること
  1. 画像までのurlが長いと表示されない
  2. 画像が200x200pxじゃないと表示されない


Facebookに対応されたかどうかはFacebookのデベロッパーズサイトで検証することができます。
http://developers.facebook.com/tools/debug


このエントリーをはてなブックマークに追加

2013年8月29日木曜日

Facebook iOS SDKで扱われる日付文字列(created_time、updated_time等)をNSDateに変換する

Facebook iOS SDKを使用して検索等を実施した時の返却情報内の日付情報は文字列なのでそれをNSDateに変換する方法を紹介します。



ポイント
  1. Tの部分はシングルクォーテションで囲む
  2. フォーマットの最後の+0000の部分は「Z」と記述する


このエントリーをはてなブックマークに追加

2013年8月22日木曜日

JavaScriptでクラスを定義したい人は集まれ

JavaScriptにおけるクラスの定義はJavaやC++、C#、Objective-Cでのクラスを定義する方法とはかなり違っているのでここで紹介しておきます。
プライベート変数、プライベートメソッドの実装方法もあるYO。
大まかな手順は以下になります。

  1. コンストラクタを定義する
  2. インスタンスメソッドを定義する
  3. クラスメソッドを定義する

ここではモンスタークラスを実際に定義していくことにします。
モンスタークラス仕様
  1. 名前を取得設定出来る。
  2. ライフを取得設定出来る。
  3. x、y座標を指定して移動できる。
  4. モンスターを継承したボスモンスターが存在する。

1.コンストラクタを定義する

コンストラクタとは言ってもただの関数で関数名がクラス名になります。

2.インスタンスメソッドを定義する

インスタンスメソッドはコンストラクタのprototypeオブジェクトに定義します。prototypeってなに?さ、さぁ。。。

3.クラスメソッドを定義する

クラスメソッドやクラス変数はコンストラクタのプロパティとして定義します。

4.モンスタークラスを継承したボスモンスタークラスを定義する

継承は下記の2つで実現出来ます。

  1. コンストラクタでスーパークラスのコンストラクタを呼び出す。
  2. サブクラスのprototypeにスーパークラスのprototypeを設定する、


5.動的な継承

これは下で紹介しているオライリー本に掲載されていました。詳細はよくわかりませんがこの方法でJavaScriptにおける動的なクラスの継承が実現できました。

6.プライベート変数やプライベートメソッドの定義方法

プライベート変数、プライベートメソッドを定義する為のポイント
  1. ファクトリーメソッド内でインスタンスを生成する
  2. プライベート変数、プライベートメソッドをファクトリーメソッド内に定義する
  3. プライベートメソッドはインスタンスにバインドする。
  4. パブリックメソッドをファクトリーメソッド内に定義する
  5. クロージャーを応用してプライベイート変数、プライベートメソッドを実現している

このエントリーをはてなブックマークに追加

2013年8月21日水曜日

FuelPHPのOrm\Modelのto_array()をリレーションに対応させる

FuelPHPのOrm\Modelにto_array()というメソッドがありますが、どうやらリレーションには対応していないようなので、リレーションに対応したメソッドを実装してみました。

PHPは文字列でクラスやメソッド、プロパティ等を指定出来るので使い方を間違わなければ便利ですね。


このエントリーをはてなブックマークに追加

2013年8月17日土曜日

FuelPHPのDebug::dumpで日本語が文字化けしてしまった時の対処方

FuelPHPのDebug::dumpで日本語が文字化けしてしまう現象が発生してしまった場合、Debug::dump内で扱っている文字コードとConfigで設定している文字コードが違っている場合があります。
具体的に言うと
fuel/core/classes/debug.php
内の
public static function format($name, $var, $level = 0, $indent_char = '    ', $scope = '')

というメソッド内に htmlentities($var) の記述があるはずです。 このhtmlentitiesの文字コードが指定されていない為にデフォルトの文字コードISO-8859-1が使用されてしまい文字化けしてしまう場合があるのです。 

[対処方法] 対象方法は文字コードを指定するだけです。
このエントリーをはてなブックマークに追加

2013年8月13日火曜日

[NSData dataWithContentsOfURL:]を使って簡単に非同期HTTP通信を実装する

iPhoneアプリでサーバーと非同期通信してデータを取得したいと思ったら
NSMutableURLRequest
NSURLConnection
NSOperationQueue
を使用して自前で実装したりフリーのライブラリを使用して受信データをNSDataに格納する人が多いと思いますが、実はNSDataには指定されたURLからデータを取得する
/*
 *指定されたurlからデータを取得する
 *@param url データを読み込むurl
 *@param readOptionsMask 読み込んだデータをキャッシュしない等のオプション指定
 *@param errorPtr エラーが発生した際のエラー格納先
 *@return 受信データ
 */
+ (id)dataWithContentsOfURL:(NSURL *)url options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr;

というメソッドが用意されているんですね。
使い方はいたって簡単で


こんな感じでかなり簡単に実装できます。
が、このdataWithContentsOfURLには重大な欠点があります。
それは非同期では無いという事です。
つまりデータのダウンロードが完了するまでアプリがフリーズしてしまうんですね。

しかし、ご安心くださいGCD(Grand Central Dispatch)というObjective-Cの機能を使用すれば簡単に非同期にすることができるのです。
GCDの簡単な使い方は

dispatch_queue_t q_global = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_queue_t q_main   = dispatch_get_main_queue();
dispatch_async(q_global, ^{
// ここに非同期(バックグラウンド)で実行したい処理を記述
});

こんな感じです。
GCDを使って先ほどのdataWithContentsOfURLを非同期化すると

こうなります。
ベーシック認証なんかもdataWithContentsOfURLを使用すれば簡単に実装できます。


このエントリーをはてなブックマークに追加

2013年5月31日金曜日

WPFでTextBoxやRichTextBoxにファイルをドラッグ&ドロップするには

WPFのTextBoxってのは非常に優秀で何もしなくてもテキストのドラッグ&ドロップに対応しているんですね。解除用のフラグは見当たりませんでしたけど。。。
おかげでファイルのドラッグ&ドロップを実装する場合、テキストのドラッグ&ドロップイベント処理が邪魔をしてしまうので少しこつが必要です。

[コツ]

  1. DragEventArgs.Handled=false;でテキストのドラッグ&ドロップイベントハンドラーを機能しなくする。

このエントリーをはてなブックマークに追加

2013年5月3日金曜日

ARCを使わないObjective-Cのメモリ管理はこうすればリークも不正落ちも怖くない

Objective-Cはガベージコレクションを搭載していないので、メモリ管理が結構たいへんですがルールを決めてしまえばそんなに大変ではなくなるので楽してメモリ管理する方法をまとめてみました。

[前提条件]

  1. xcode4.5以上を使用する。

[ポイント概要]

  1. プロパティ記述時の属性(retain assign copy)を使い分ける
  2. alloc時にはautoreleaseを記述する
  3. 自クラス内のインスタンス変数へアクセスする時はプロパティを使用する
  4. retain、copy属性のプロパティはdealloc内でnilを代入する

[ポイント詳細]


ポイント1:プロパティの記述時の属性(retain assign copy)を使い分ける

ヘッダーファイルのクラス宣言内に記述するプロパティの属性を正しく使い分けます。

  1. object型はretainを指定する
  2. NSString型はcopyを指定する
  3. プリミティブ型はassignを指定する
  4. delegateはassignを指定する

※Objective-Cで使用できる主なプリミティブ型
short (signed short)
unsigned short
int (signed int)
unsigned int
float
double
char
BOOL

ポイント2:alloc時にはautoreleaseを記述する

オブジェクトをallocしたら必ずautoreleaseを記述します。


ポイント3:自クラス内のインスタンス変数へアクセスする時はプロパティを使用する

プロパティを使用しない場合、メモリリークや解放済みのオブジェクトへのアクセスが発生する可能性が高くなります。


ポイント4:retain、copy属性のプロパティはdeallocないでnilを代入する

retain、copy属性が指定されたプロパティはdeallocでnilを代入しないとメモリリークが発生してしまいます。


◎autoreleaseを記述しない方がいい場合

例外としてループ(for、while)内でオブジェクトを生成する場合はメモリ節約の観点からautoreleaseを使用しない方が良いでしょう。

このエントリーをはてなブックマークに追加

2013年5月1日水曜日

ラズベリーパイにGitをインストールする方法俺メモ

ラズベリーパイにGitをインストールする方法をメモっとく

[手順概要]

  1. piでログインする(sudoの権限があるユーザー)
  2. gettextをインストールする(Gitインストールにmsgfmtコマンドが必要なので)
  3. Gitをインストールする

[手順詳細]

1.piでログインする

 全ユーザーでGitを使用したいので「/usr/lib/git」へインストールします。
 その為にsudo権限のあるユーザーでログインする必要があります。

2.gettextをインストールする

   2.1.次のコマンドを順次実行すればok
      $cd /tmp/
      $wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.2.tar.gz
      $tar zxvf gettext-0.18.2.tar.gz 
      $./configure --prefix=/usr --disable-csharp
      $make
      $sudo make install
      ※gettext-0.18.2.tar.gzはインストールするバージョンによって変わります

3.Gitをインストールする

   3.1.次のコマンドを順次実行すればok
      $cd /tmp/
      $wget http://git-core.googlecode.com/files/git-1.8.2.1.tar.gz
      $tar xvfz git-1.8.2.1.tar.gz
      $cd git-1.8.2.1/
      $sudo mkdir -p /usr/lib/git
      $sudo ./configure --prefix=/usr/lib/git
      $sudo make all install
      $cd /usr/bin/
      $sudo ln -s /usr/lib/git/bin/git ./git
      ※git-1.8.2.1.tar.gzはインストールするバージョンによって変わります

このエントリーをはてなブックマークに追加

2013年4月26日金曜日

ラズベリーパイにLinux OSをインストールするのは以外と簡単

ラズベリーパイ本体のスクリーンショット

というわけでラズベリーパイを3つ購入したのでさっそく一台にLinuxをインストールしてみました。

[ラズベリーパイとは]

ズベリーパイは一言でいうなら名詞サイズのパソコンです。
ARMというCPUを搭載していて省電力で動作し発熱もほとんどないためCPUファン等は必要ありません。
ARMはスマホ、ニンテンドーDS、iPod等さまざまな携帯電子機器に搭載されています。
OSはLinux、アンドロイド、firefox OS、等いろいろインストール出来るようですが、CPUが非力であるためLinuxをインストールするのが一般的のようです。

[前提条件]

  1. MACを使用します。
  2. Linuxは「Raspbian」を使用します。

[用意するもの]

  1. ラズベリーパイ本体
  2. 電源用のマイクロUSB(ミニUSBじゃないYO)
  3. USBマウス(無くてもなんとかなります)
  4. USBキーボード
  5. HCMIかコンポジットビデオ端子(黄色いやつ)に接続出来るモニタ、テレビ等とケーブル
  6. SDカード(4G以上)
  7. SDカードリーダー

[インストール手順概要]

  1. Raspbianをダウンロードする
  2. SDにRspbianをコピーする
  3. ラズベリーパイにSDを差して起動する
  4. 初期設定

[インストール手順詳細]


1.Raspbianをダウンロードする

 1.1.ここからwheezy-raspbian.zipをダウンロードします。
wheezy-raspbian.zipダウンロードサイトのスクリーンショット

 1.2.ダウンロードしたzipファイルを解凍します。
   解凍したらxxxx-xx-xx-wheezy-raspbian.imgみたいなファイルがあるはずです。

2.SDにRspbianをコピーする

2.1.SDカードリーダーにSDを差す
 2.2.ターミナルを起動してxxxx-xx-xx-wheezy-raspbian.imgがあるフォルダへ移動する。
  $cd /Users/tanaka/Downloads 

 2.3.容量からSDカードのidを特定する
  $diskutil list
  コマンドで接続されているデバイスの情報が表示されるので、容量からSDカードを特定する。

 2.4.SDをアンマウント
  $diskutil unmountdisk /dev/disk1

 2.5.OSをSDに書き込む
  $sudo dd if=2013-02-09-wheezy-raspbian.img of=/dev/disk1 bs=1m

 2.6.しばし待たれよ

ラズベリーパイにRspbianをインストールする一連のコマンドを実行したスクリーンショット

3.ラズベリーパイにSDを差して起動する

 3.1.ラズベリーパイの裏面にSDカードスロットがあるのでそこに差します。
 3.2.電源ボタンはありません、マイクロUSBを接続すれば即起動します。
 3.3.初回起動時はconfig画面が起動します。
  configはここを見ながら設定しました。下記は設定した方が良さげです。
  • expand_rootfs
  • configure_keyboard
  • change_timezone
  • ssh
 3.4.再起動
  config画面で「TAB」を押して「FINISH」を選択してエンターキーを押すと再起動するか聞かれるので「YES」を選択してエンターキーを押します。
  再起動が完了したら下記アカウントでログインできます。
  • login:pi
  • password:raspberry



このエントリーをはてなブックマークに追加

2013年4月7日日曜日

XcodeのCommand Line Toolプロジェクトで実行時に引数を渡す方法


[手順]

  1. menuからEdit Schemeを選択する
  2. Runを選択する
  3. Argumentsを選択する
  4. +をクリックして引数を追加する

[手順画像]


引数を渡す手順のスクリーンショット


このエントリーをはてなブックマークに追加

XcodeでのC言語(Command Line Tool)開発時にリソースファイルを追加する方法

XcodeのCommand Line Toolプロジェクトを使ってC言語の勉強をしてみたのですが、iPhone開発とは違ってリソースを追加しても実行ファイルがあるディレクトリに勝手にコピーはしてくれないようです。
今回は、コピーされるようにする方法を紹介します

[手順]

  1. リソースファイル(画像ファイル、csvファイル、など)をプロジェクトに追加する。どこに追加してもかまいません。
  2. ソースツリーからプロジェクト情報(xcodeproj)を選択する。
  3. TARGETSを選択する。
  4. Build Phasesを選択する
  5. Add Build Phaseを選択する
  6. Add Copy Filesを選択する
  7. 追加されたCopy Filesの+ボタンをクリックしてリソースを追加する

[手順画像]


このエントリーをはてなブックマークに追加

2013年3月20日水曜日

fuelPHP環境でファビコンを表示する方法

fuelPHP環境でファビコンを表示する方法を紹介します。



このエントリーをはてなブックマークに追加

2013年2月22日金曜日

localhost(http://127.0.0.1)からOAuthを利用してtwitter認証を行うときの注意事項

Firefoxじゃ無いとtwitter認証画面に遷移してくれません。
ちなみに
Chromeは「エラー 324 (net::ERR_EMPTY_RESPONSE): サーバーはデータを送信せずに接続を切断しました。」
のエラーが表示されて
Safariは真っ白い画面
になります。

このエントリーをはてなブックマークに追加

2013年2月2日土曜日

fuelPHPのOrm Modelでfindするときのwhere句の書き方

fuelPHPのOrmではfindする時のoptionsに'where'を配列で指定します。
このエントリーをはてなブックマークに追加

2013年1月30日水曜日

UIWebViewおよびUIImageでDocuments配下の画像を読み込む

UIWebViewやUIImageViewでDocumentsフォルダ配下の画像ファイルを指定するには
次のように実装します。

ちなみに

NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
では取得出来ませんでした。


このエントリーをはてなブックマークに追加

2013年1月27日日曜日

fuelPHPのタスクを実装する際の注意点

fuelPHPのタスクを実装していて「うごかねーっ」てハマった事が一つだけあります。
例えばモデルクラスを使ってDBからセレクトしたいとき


\Model_Hoge::find($id);


なんかPHPのことあんまし詳しくないけど先頭に\をつけたら動いたーっ


このエントリーをはてなブックマークに追加

fuelPHPのタスクをcronから実行する俺メモ

レンタルサーバーにfuelPHPを配置してタスクをcronから起動してみた時のメモ

[前提条件]

  1. cronサービスが起動されていること
  2. fuelPHPのルートフォルダは~/public_html/hogeとする

[手順概要]

  1. cronでhello
  2. fuelPHPのtasksにあるrobotsを起動してみる

[手順詳細]

1.cronでhello

 1.1.cron用のファイルを作成してviで開く
 $cd ~/
 $vi cron.txt
 ※ファイル名は何でもかまいません

 1.2.コマンドを記述して保存終了

 1.3.cron設定
 $crontab cron.txt

 1.4.「1分毎」にlog.txtにhelloが追加されている事を確認する。

2.fuelPHPのtasksにあるrobotsを起動してみる

2.1.cron.txtを編集する
※環境によってはphp-cliでは動かない場合があるようです。(php-cliのかわりにphpと書くなど)

 2.2.cron再設定
 $crontab cron.txt

 2.3.「1分毎」にlog.txtにrobotsが追加されている事を確認する。


このエントリーをはてなブックマークに追加

2013年1月25日金曜日

xcodeのストーリーボード(storyboard)で初期値設定を独自に追加する

ストーリーボードのattributes inspectorに表示されないプロパティやUIViewを継承して追加した独自のプロパティ等をストーリーボードから初期値設定したい場合は
identity inspectorUser Defined Runtime Attributes
に追加することで設定出来ます。
例)UIViewのexclusiveTouchを初期値YESに設定する


このエントリーをはてなブックマークに追加

2013年1月19日土曜日

gitでブランチをマージした時にコンフリクトを起こしてしまったら

バージョン管理システムを使っているといつか出会う中ボス的な存在がコンフリクトです。
gitでマージした時にコンフリクトが起きた場合は次の手順で対処できます。

  1. お・ち・つ・け・!
  2. コンフリクトを手動でマージします。(マージ元、マージ先、どちらかを採用するコマンドもあります。)
  3. 「$git add .」コマンド等でマージしたファイルをステージングします。
  4. 全てのコンフリクトが解決したらgit statusコマンドの表示がAll conflicts fixed but you are still merging.に変わります。
  5. 「$git commit」コマンドでコミットします。
  6. コンフリクトが頻繁に起きてしまう場合、開発運用に問題がある可能性が高いので見直してみましょう


おまけ1

手動マージ中に「やっぱやんぴ、マージを最初からやり直したい!」となった場合は次のコマンドを使います。
[ファイル指定]
$git checkout --merge hoge.txt

[カレントディレクリ配下すべて]
$git checkout --merge .

おまけ2

マージ元、マージ先、の一方を採用するにはマージ中にcheckoutコマンドを使用します。
例)topicというブランチをmasterへマージした場合
1.masterの内容を採用する場合
$git checkout --ours ファイル名

2.topicの内容を採用する場合
$git checkout --theirs ファイル名

おまけ3

$git pullでコンフリクトが起きてしまった場合
例えば
$git pull master origin/master

$git fetch origin/master
$git merge origin/master
をまとめて実行しているだけなのです。
つまり、本記事のブランチマージでコンフリクトが起きた場合の対処と同様の方法で解決できるはずです。

このエントリーをはてなブックマークに追加

2013年1月18日金曜日

git bisectをつかって不具合が発生したリビジョン(コミット)を見つける

バージョン管理システムを導入する理由の一つとして、
動いていたバージョン動かなくなったバージョンの差分を取る事でバグを早期発見早期治療できるから」
というのがあります。
git bisectコマンドを利用する事で、動かなくなったバージョン簡単に特定することができます。

[git bisectコマンド使い方]
1.作業領域がクリーンな状態かチェック
$git status

  1.1.作業領域に何かしらの変更が加えられている場合は退避する
  $git stash

2.bisectを開始する
$git bisect start

3.HEADが動かなくなっているとgitに伝える
$git bisect bad

4.正常に動作しているリビジョンをgitに伝える
$git bisect good 23b95e2

5.実行すると次に動作確認すべきリビジョンが勝手にチェックアウトされます。

6.チェックアウトされたリビジョンの動作確認を行う。

  6.1.正常に動作しなかった場合はgitにその旨を伝える
  $git bisect bad

  6.2.正常に動作した場合はgitにその旨を伝える
  $git bisect good

7.最初に正常に動作しなかったリビジョンが見つかるまで「5.〜6.」を繰り返します。

8.最初に正常に動作しなかったリビジョンが見つかった場合は次のようなメッセージが出力されます。

f30d46efa8f53b7e1ff1e59c3bf854fcd85de40 is the first bad commit

9.bisectを終了する
$git bisect reset

10.作業領域を退避していた場合は復旧させる
$git stash pop




このエントリーをはてなブックマークに追加

2013年1月11日金曜日

Git初心者がGitを導入する為のおすすめリンク集


Git関連のリンク集をメモっとく

このエントリーをはてなブックマークに追加

2013年1月10日木曜日

fuelPHPをレンタルサーバーに配置する時に気をつけること俺メモ


fuelPHPをサーバーへ配置する際に結構はまったのでメモっとく

[前提条件]
  1. サーバーの仕様でindex.html、index.phpを配置するディレクトリは「/public_html/」ということにしておく(いわゆるドキュメントルート)
  2. fuelPHPのプロジェクトルートフォルダ名は「hoge」ということにしておく。

[気をつけること概要]
  1. ローカルbinへoilをインストールする。
  2. fuelPHPの配置場所
  3. ファイルのアクセス権を変更する。
  4. hoge/public/index.phpにアクセスされるように.htaccessを編集する。

[気をつけること詳細]
1.ローカルbinへoilをインストールする。
 1.1.bin/へ移動
  $cd bin

 1.2.oilをダウンロード
    $curl get.fuelphp.com/oil > oil

 1.3.oilを修正
    bashパス変更
      sudo削除
      prefix変更

 1.4.oilに実行権限を付与
  $chmod x oil

 1.5.bin/にbashファイルを作成する
  $touch bash
  $chmod 655 bash

 1.6.oilコマンド実行
  $sh ./oil

 1.7.oilを修正
  bashパス変更


 参考文献:ローカルにoilをインストールする

2.fuelPHPの配置場所
 /public_html/直下にhogeを配置します。
  例1)
  $cd public_html/
  $oil create hoge

  例2)
  $cd public_html/
  $git clone https://hoge@bitbucket.org/hoge/hoge.git

3.ファイルのアクセス権を変更する。
 「/hoge/public/index.php」のようなフォルダ構成の場合、
 hoge、publicは
   $chmod 755 hoge/
   $chmod 755 public/
 とコマンドを実行してアクセス権を変える。
 index.phpは
   $chmod 644 index.php
 とコマンドを実行してアクセス権を変える。

4./public/index.phpが読み込まれるように.htaccessを編集する。
 /public_html/直下に.htaccessという名前のフォルダを作って編集する。
 参考文献:.htaccesの編集内容

※さくらのレンタルサーバーでhoge/public/.htaccessにもRewriteBase /hoge/publicを記述しないと404エラーが発生してしまうという現象がありました。
このエントリーをはてなブックマークに追加

2013年1月6日日曜日

fuelPHPで環境を切り替える


app/config配下に「development」、「production」、「test」等の環境設定フォルダがありますが環境を切り替えるには
app/bootstrap.php
を編集する必要があります。





.htaccessで指定する方法もあります(ApacheのsuEXECが有効になっていたらこの方法は使用できないようです)。 

SetEnv FUEL_ENV production


このエントリーをはてなブックマークに追加