forget for get

覚えるために忘れる

LaravelのSeederで関連テーブルの値を入れてダミーデータを作成

最初に関連テーブルの全データを取得しておいて、
ダミーデータ作成時に、取得しておいた全データからランダムにデータを取得して利用する。

$users = App\User::select('id','name')->get();
$factory->define(App\Post::class, function ($faker) use ($users) {
    $user = $users->random();
    return [
        'user_id' => $user->id,
        'user_name' => $user->name,
        'title' => $faker->sentence,
        'body' => $faker->paragraph,
        'post_datetime' => $faker->dateTimeThisMonth
    ];
});

 

・以下、ダメなパターン
1つのダミーデータ作るためにUser全検索が毎回されるのは無駄で時間がかかるのでボツ

$factory->define(App\Post::class, function ($faker) {
    return [
        'user_id' => App\User::all(['id'])->random(),
        'user_name' => App\User::all(['name'])->random(),
        'title' => $faker->sentence,
        'body' => $faker->paragraph
    ];
});

澤円さん(マイクロソフト エヴァンジェリスト)のプレゼン術

第3回CodeIQ感謝祭「春のエンジニアまつり」での
マイクロソフトエヴァンジェリスト・澤円さんのプレゼン術の講演内容を
まとめました。

概要

・ビジョン
・核
・話術
why、what、how

ビジョン

プレゼン後、聴衆にどうなってほしいか
相手を行動させる。
未来を描け

ビジョンが最も大事!

プレゼン後聴衆がワンセンテンスで内容を説明できるもの。
他の人にどうしても教えたくなってしまうもの

シンプルであること
冗長な表現は避ける
数字を強調
詳細は添付資料で

アクションの明確化

スライド1枚にテーマ1つ説明3つ
アニメーションは控えめに、
視点誘導のために使う。
色使いもシンプルに(色の意味も意識する)

文字を閉じ込める
画面は広すぎるので詰め込まない

改行の位置もとても大事

イメージがつながる画像を使う
セキュリティ→鍵とか盾とか

最後に
トドメの印象付け
時間調整
途中参加の人にも伝わる

 

話術

口癖を意識する
動画撮影して確認する
バリエーションを増やす

アイスブレイク

堂々と見せるテクニック
話す速度よりもゆっくりと歩く
手の動きで大きく見せる

 

git diffでワード、エクセル、パワーポイントの差分を見る

Apache TikaでOfficeファイルのテキスト差分を見る

gitでWord, Excel, PowerPointなどのOfficeファイルを管理していると、
変更があっても、どこが変更されたのかわからず、確認が面倒。

Apache Tikaを使うと、Word, Excel, PowerPointなどからテキストを抽出し、
その差分を表示することができます。

(追記)WinMergeプラグインを使った方が簡単

WinMergeでワード、エクセル、パワーポイントの差分を見る - forget for get

インストール手順(Windows

http://archive.apache.org/dist/tika/

からtika-app-1.17.jarをダウンロード。

 

任意の場所に配置(C:\Program Files\Git\bin)

 

インストール手順(Mac

brew install tika

 

gitの設定

プロジェクト直下のgitの設定ファイルを追加・編集
.git/info/attributes

*.pptx diff=tika
*.docx diff=tika
*.xlsx diff=tika

.git/config

[diff "tika"]
  binary = true
  textconv = java -Dfile.encoding=UTF-8 -jar 'C:\\Program Files\\Git\\bin\\tika-app-1.17.jar' -t

これで、Git ExtensionsやSourceTreeでもワード、エクセル、パワーポイントのテキスト差分を確認できるようになります。
Apache Tika便利!

 ※javaをインストールしてなかったらjavaをインストールしてください。

Windows10+Vagrant+VirtualBoxでrsyncが失敗する

ちょっと前まで動いてたWindows10+Vagrant+VirtualBoxの開発環境が、急に動かなくなった。

vagrant upしたら以下のようなエラーが、、

==> default: Rsyncing folder: /cygdrive/d/vagrant/cent6/ => /vagrant
There was an error when attempting to rsync a synced folder.
Please inspect the error message below for more info.

Host path: /cygdrive/d/vagrant/cent6/
Guest path: /vagrant
Command: "rsync" "--verbose" "--archive" "--delete" "-z" "--copy-links" "--chmod=ugo=rwX" "--no-perms" "--no-owner" "--no-group" "--rsync-path" "sudo rsync" "-e" "ssh -p 2222 -o LogLevel=FATAL -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i 'D:/vagrant/cent6/.vagrant/machines/default/virtualbox/private_key'" "--exclude" ".vagrant/" "/cygdrive/d/vagrant/cent6/" "vagrant@127.0.0.1:/vagrant"
Error: This rsync lacks old-style --compress due to its external zlib. Try -zz.
Continuing without compression.

 

cygdriveってパスになってるけど、Cygwinを入れた覚えはないのだが、、

ググってStackOverFlowとか見たけどなかなか解決策にはたどり着けず、

vagrant,virtualboxの最新版をインストールし直したり、

Windowsのアップデートもしたけど、解決せず、、

 

最終的に以下の記述で治りました。

config.vm.synced_folder "./", "/vagrant", type: "virtualbox"
config.vm.synced_folder "./vmshare", "/vmshare", create: true, type:"virtualbox"

2行目の設定はもともとあったのだけど、1行目の設定もデフォルトの設定の上書きとして必要みたい。。

 

 

monthly.jsを使って俺の嫁リストにカレンダー表示機能を追加

monthly.jsを使って俺の嫁リストにカレンダー表示機能を追加してみました。

 

↓こんな感じ。

新垣結衣カレンダー

 

年末年始、本屋さんとかでカレンダーを見かけることも多くて、

ふと、好きな画像でカレンダー作れたらいいなと思って、

キーワードからgoogle画像検索でひっかかった画像を表示するサイト「俺の嫁リスト」があったので、

そこにカレンダー表示機能をつけてみたらそれっぽいのができると思って、作業開始。

 

カレンダー表示するjQueryプラグインとして、fullcalendar.jsを使ったことがあったので、今回も使おうと思ったのですが、レスポンシブ対応してないようなので、

レスポンシブ対応しているmonthly.jsを使いました。

 

githubhttps://github.com/kthornbloom/Monthly

デモ:http://kthornbloom.com/monthly/

 

Quick Startに書いてある通りでほぼ完成。

<link rel="stylesheet" href="css/monthly.css">
<div class="monthly" id="mycalendar"></div>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/monthly.js"></script>
<script type="text/javascript">
    $(window).load( function() {
        $('#mycalendar').monthly();
    });
</script>

 

月の切り替えで画像を入れ替えるために、

.monthly-prev、.monthly-next、.monthly-resetのクリックイベントを拾うくらい。

.monthly-resetのクリックイベントだけ拾えなかったのですが、

monthly.jsでクリックイベントがキャンセルされていたので、コメントアウトして対処しました。

//event.stopPropagation();

 

ロリポップのcron設定でLaravelのartisanコマンドをスケジュール実行するには

ロリポップでcronが使えるらしいので、Laravelのartisanコマンドを作ってスケジュール実行しようとしたら、
設定するのに手間取ったのでやり方をメモしておく。

 

Laravelのドキュメントでは、cronに以下のように設定すればよいとある。

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

 

しかし、ロリポップの設定だと、実行ファイルパスを指定しろとある。(上記のような記述はできない)

 

なので、シェルスクリプトでartisanコマンドを実行する必要がある。
また、phpのパスも、バージョン指定する必要がある。

 

よって、以下のようなシェルスクリプトを作って、

ロリポップのcron設定の実行ファイルパスに「start_artisan.sh」を指定すればよい。

 

start_artisan.sh

#!/bin/sh
/usr/local/php5.6/bin/php /home/users/0/main.jp-lightwill/web/ravel/artisan schedule:run

phpのバージョンが5.6、ユーザディレクトリがmain.jp-lightwillの場合。

VM(Vagrant,VirtualBox)の日時を変更しても元に戻ってしまうとき

未来時間での動作確認をしたくて、

ローカルVM環境(Vagrant,VirtualBox)で普通にdateコマンドを叩いたら、

一時的に日時は変更されたが1分もしたら現在日時に戻ってしまった。

 

どうやらVirtualBoxではホストOSとゲストOSで時刻同期をしているらしい。

 

なので、

未来時間や過去時間で動作確認したいときは、ホストOSとゲストOSの時刻同期を切ってやる必要がある。

 

service vboxadd-service stop

date -s "2017/12/24 12:00:00"

 

動作確認が終わったら時刻同期を再開しておく。

 

service vboxadd-service start