forget for get

覚えるために忘れる

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

 

 

mysqlでカナでソートしたら濁音の並びがおかしかったので対策

mysqlでカナでソートしたら濁音の並びがおかしかった

 

普通に

ORDER BY kana

とやったら、

 

ハマカーン
ハライチ
バカリズム
バナナマン
パンクブーブー

 

となった。

 

本当は

 

バカリズム
バナナマン
ハマカーン
ハライチ
パンクブーブー

 

のように並んでほしい。

 

COLLATE 節を使うとよい。

ORDER BY kana COLLATE utf8_unicode_ci

 

laravelだとorderByRawを使って。

->orderByRaw("kana COLLATE utf8_unicode_ci")

 

これで意図した並びになった。

 

バカリズム
バナナマン
ハマカーン
ハライチ
パンクブーブー

Vimの設定

新しい環境をつくる度に毎回やってることをまとめておく。

 

色分け (syntax on) するために拡張版Vimをインストール

$ sudo yum install vim-enhanced
$ sudo mv /bin/vi /bin/vim-tiny
$ sudo ln -s /usr/bin/vim /bin/vi

php-docプラグインをインストール

https://www.vim.org/scripts/script.php?script_id=1355
ここからダウンロードして、~/.vim配下に置く。
77~83行目のAuthorやCopyrightなどをプロジェクトに応じて修正。

~/.vimrcを作成

set lcs=tab:>.,trail:_,extends:\
set list
highlight SpecialKey cterm=NONE ctermfg=7 guifg=7
highlight JpSpace cterm=underline ctermfg=7 guifg=7
au BufRead,BufNew * match JpSpace / /
set ambiwidth=double
set binary noeol
set viminfo='20,\"1000
source ~/.vim/php-doc.vim
inoremap <C-P> <ESC>:call PhpDocSingle()<CR>i
nnoremap <C-P> :call PhpDocSingle()<CR>
vnoremap <C-P> :call PhpDocRange()<CR>

 

※~/.vimrcでやってることは以下。
・タブや全角スペースを可視化する
set lcs=tab:>.,trail:_,extends:\
set list
highlight SpecialKey cterm=NONE ctermfg=7 guifg=7
highlight JpSpace cterm=underline ctermfg=7 guifg=7
au BufRead,BufNew * match JpSpace / /


・全角記号でカーソルがずれるのを防ぐ
set ambiwidth=double

 

・ファイル末尾に勝手に改行コードがつくのを防ぐ
set binary noeol

 

・ファイル間でのヤンク(yy)行数を増やす

set viminfo='20,\"1000

 

・Ctrl+Pでphpdoc生成

source ~/.vim/php-doc.vim
inoremap <C-P> <ESC>:call PhpDocSingle()<CR>i
nnoremap <C-P> :call PhpDocSingle()<CR>
vnoremap <C-P> :call PhpDocRange()<CR>

(C-Pの箇所を変えれば好きなキーバインドにできる)

参照サイト

vim で 色分け (syntax on) できない

vim でタブや全角スペースを表示する

Vimで全角記号を扱うと色々とおかしくなる

vimでファイルを保存したときに勝手に改行コードがつい...

Vim - Vimでヤンクした内容がファイルをまたぐと50行までしか保持されていない。|teratail

phpDocumentor形式のドキュメントブロックを生成するvimプラグイン | バシャログ。