php Macでcsvを読み込む時の注意点
コドモと犬とギリギリおとん:PHPでファイル読み込み時の改行コードの問題メモ
上記を対応してnginxとphp-fpmをリスタート
$tmp_name = $this->request->param('form')['upfile']['tmp_name'];
$fp = fopen($tmp_name, 'rb');
var_dump(fgetcsv($fp));exit;
Cssが反映されない場合の対処法
- ブラウザのキャッシュ
- そもそも更新しているファイルが間違っていた
- FWのキャッシュ
- WEBサーバーのキャッシュ
Laravelをちょっとだけ触ってみた感想
自分のメモ用として書き残す。
主にここ(はじめての Laravel 5.1 | ララ帳 | ページ 4)を参照している。
非常にわかりやすい。
Laravelのバージョンは5
【.envがみつかんねー!】
私はcentosのサーバーを立ててmountしてNetBeansを使用しているのだが
.envファイルの存在に気づかず、2時間くらい無駄にしました。
プロジェクトルートにあるので、vim等で修正しましょう。
【atrisanコマンド migrationオプション】
古い情報:php artisan migrate:make create_users_table
新しい情報:php artisan make:migration create_users_table
↑で紹介してるサイトをみてれば大丈夫だが、ぐぐってると古い情報があるので気をつけよう。
【テーブル名とモデル名】
テーブル名は複数形で命名しましたが、モデル名は単数形で命名するのが慣例となっています
ややこしい。。。
こういう慣例って誰得なんだ?
【DBの作り方】
○マイグレーションの作成
「php artisan make:migration クラス名(スネーク) --create=テーブル名(スネーク)」
例:php artisan make:migration create_user_articles_table --create=user_articles
クラス名はキャメルに変換される。
マイグレーションを作るとID/insert_date/update_dateの3カラムが自動で設定されているので
追加編集する場合は/app/database/migrations/以下にあるファイルを編集すること。
【INSERT時の注意点】
Eloquentを用いたInsertは2種類ある。
モデルのインスタンスをnewする方法とcreateメソッドを使う方法。
・インスタンスをnewする方法
$article = new UserArticle();
$article->title = $title;
$article->body = $body;
$article->save();
・createメソッドを使う方法
$article = UserArticle::create(array('title' => $title, 'body' => $body));
両方同じ結果となるがcreateメソッドを使う場合は注意点がある。
マニュアル(Eloquent ORM 5.0.dev Laravel)にもあるがモデルに$fillable(更新して良いカラム)、$guarded(更新させないカラム)を設定する必要がある。
というか、設定しないとエラーになる。
・設定サンプル
class UserArticle extends Model
{
protected $guarded = array();
protected $fillable = array('title');
}
この記述だと、上記のcreateメソッドのサンプルの場合はtitleカラムに値が入り、bodyカラムには値が無い状態でINSERTが行われる。
とりあえず数日使ってみた感じ、新し物好きでなければLaravelを使う理由ないかなぁ
使いこなすと利点が見えてくるとは思うが、そこまでやる時間が無かったので今後のTODOタスクとして積んでおく。
vagrant+Laravelならこちら
Laravel homesteadを利用したLaravel 5 ローカル開発環境の構築 | hrendoh's memohrendoh's memo
BOOTSTRAP の導入方法
自分用メモ
参考
初めてのLaravel 5.1 : (15) Bootstrap3 の導入 | ララ帳
Bootstrapの導入方法はいくつか考えられます。
- Bootstrap CDNを使用する
- コンパイル済のBootstrap をダウンロードして、public ディレクトリ以下に配置する
- Bootstrapのソースをダウンロードして、resources/assets ディレクトリに配置し、Elixirを使ってコンパイルおよび public ディレクトリに配置する
3.が最も最適化できますが、手順が最も複雑で難しくなります。
この記事では最も手軽な、Bootstrap CDN を使用して進めます。
Elixirを使ったBootstrapの導入に関しては、以下の記事をご覧ください。
PHPの socket_create_listen と socket_create 関数について
現在PHPのソケットについて勉強中。
調べていてわかったことをメモっておく。間違っている可能性あり。
phpでソケット通信をする際の受け側で使用する場合は2パターンある。
1.socket_create_listenを使用する
2.socket_create, socket_bind, socket_listenを用いる
(socket_accept以降は共通なので省く)
簡単に説明すると
1.簡単にlisten状態にできるがすべてのインタフェースでlisten状態になる。
2.接続を受けれるインタフェースを指定できたりTCP/UDP、IPV4/IPV6等の指定ができる
1のサンプルコード
$port = 9999;
$sock = socket_create_listen($port);
if(!$sock){
echo 'ERROR_CREATE_LISTEN';exit;
}$newSock = socket_accept($sock);
2のサンプルコード
$port = 9999;
//ソケットの生成
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);//バインド
if(!socket_bind($sock, '192.168.56.101', $port)){
echo 'ERROR_BIND';
exit;
}
//待ち受け可能状態
if(!socket_listen($sock)){
echo 'ERROR_LISTEN';
exit;
}$newSock = socket_accept($sock);
2のsocket_createでIPやらTCPを指定しsocket_bindでインタフェースを指定できる
1の実行結果(netstat)
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN
2の実行結果(netstat)
tcp 0 0 192.168.56.101:9999 0.0.0.0:* LISTEN