FuelPHPのOrm\Modelにto_array()というメソッドがありますが、どうやらリレーションには対応していないようなので、リレーションに対応したメソッドを実装してみました。
PHPは文字列でクラスやメソッド、プロパティ等を指定出来るので使い方を間違わなければ便利ですね。
ツイート
2013年8月21日水曜日
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が使用されてしまい文字化けしてしまう場合があるのです。
[対処方法] 対象方法は文字コードを指定するだけです。 ツイート
具体的に言うと
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
ベーシック認証なんかもdataWithContentsOfURLを使用すれば簡単に実装できます。
ツイート
NSMutableURLRequest
NSURLConnection
NSOperationQueue
を使用して自前で実装したりフリーのライブラリを使用して受信データをNSDataに格納する人が多いと思いますが、実はNSDataには指定されたURLからデータを取得する
/*
*指定されたurlからデータを取得する
*@param url データを読み込むurl
*@param readOptionsMask 読み込んだデータをキャッシュしない等のオプション指定
*@param errorPtr エラーが発生した際のエラー格納先
*@return 受信データ
*/
*指定された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, ^{
// ここに非同期(バックグラウンド)で実行したい処理を記述
こうなります。が、この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を非同期化すると
こんな感じです。
GCDを使って先ほどのdataWithContentsOfURLを非同期化すると
ベーシック認証なんかもdataWithContentsOfURLを使用すれば簡単に実装できます。
ツイート
2013年5月31日金曜日
WPFでTextBoxやRichTextBoxにファイルをドラッグ&ドロップするには
WPFのTextBoxってのは非常に優秀で何もしなくてもテキストのドラッグ&ドロップに対応しているんですね。解除用のフラグは見当たりませんでしたけど。。。
おかげでファイルのドラッグ&ドロップを実装する場合、テキストのドラッグ&ドロップイベント処理が邪魔をしてしまうので少しこつが必要です。
[コツ]
ツイート
おかげでファイルのドラッグ&ドロップを実装する場合、テキストのドラッグ&ドロップイベント処理が邪魔をしてしまうので少しこつが必要です。
[コツ]
- DragEventArgs.Handled=false;でテキストのドラッグ&ドロップイベントハンドラーを機能しなくする。
2013年5月3日金曜日
ARCを使わないObjective-Cのメモリ管理はこうすればリークも不正落ちも怖くない
Objective-Cはガベージコレクションを搭載していないので、メモリ管理が結構たいへんですがルールを決めてしまえばそんなに大変ではなくなるので楽してメモリ管理する方法をまとめてみました。
※Objective-Cで使用できる主なプリミティブ型
short (signed short)
unsigned short
int (signed int)
unsigned int
float
double
char
BOOL
ツイート
[前提条件]
- xcode4.5以上を使用する。
[ポイント概要]
- プロパティ記述時の属性(retain assign copy)を使い分ける
- alloc時にはautoreleaseを記述する
- 自クラス内のインスタンス変数へアクセスする時はプロパティを使用する
- retain、copy属性のプロパティはdealloc内でnilを代入する
[ポイント詳細]
ポイント1:プロパティの記述時の属性(retain assign copy)を使い分ける
ヘッダーファイルのクラス宣言内に記述するプロパティの属性を正しく使い分けます。- object型はretainを指定する
- NSString型はcopyを指定する
- プリミティブ型はassignを指定する
- 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を使用しない方が良いでしょう。
ラベル:
iPhoneDev
,
Objective-C
,
Xcode
- Home >
- Git , Linux , ラズベリーパイ >
- ラズベリーパイにGitをインストールする方法俺メモ
2013年5月1日水曜日
ラズベリーパイにGitをインストールする方法俺メモ
ラズベリーパイにGitをインストールする方法をメモっとく
[手順概要]
- piでログインする(sudoの権限があるユーザー)
- gettextをインストールする(Gitインストールにmsgfmtコマンドが必要なので)
- 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をインストールするのが一般的のようです。
[前提条件]
- MACを使用します。
- Linuxは「Raspbian」を使用します。
[用意するもの]
- ラズベリーパイ本体
- 電源用のマイクロUSB(ミニUSBじゃないYO)
- USBマウス(無くてもなんとかなります)
- USBキーボード
- HCMIかコンポジットビデオ端子(黄色いやつ)に接続出来るモニタ、テレビ等とケーブル
- SDカード(4G以上)
- SDカードリーダー
[インストール手順概要]
- Raspbianをダウンロードする
- SDにRspbianをコピーする
- ラズベリーパイにSDを差して起動する
- 初期設定
[インストール手順詳細]
1.Raspbianをダウンロードする
1.1.ここからwheezy-raspbian.zipをダウンロードします。
1.2.ダウンロードしたzipファイルを解凍します。
解凍したらxxxx-xx-xx-wheezy-raspbian.imgみたいなファイルがあるはずです。
2.2.ターミナルを起動してxxxx-xx-xx-wheezy-raspbian.imgがあるフォルダへ移動する。
$cd /Users/tanaka/Downloads
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
登録:
投稿
(
Atom
)