Windows10で画面が急にセピア調のような表示になった

Windows10で画面が急にセピア調のような表示になった。
検索したところ以下のブログが見つかり解決しました。お世話になりました。
お仕事メモ -y3b5の日記|Windows10で画面が白黒になった時

原因はショートカット[Windowsキー]+[Ctrl]+[C]を同時押ししてしまったため。
元に戻すにはもう1度同じキーを押下すればよい。

Bitnami redmineのバックアップとリストアをやってみた

新しいプラグインを試したくなったのでプラグインのインストール前にBitnami redmineのバックアップとリストアをやってみた。

●環境
・Windows10
・バックアップする側:Bitnami Redmine Stack 3.4.2-4
・リストアする側:Bitnami Redmine Stack 3.4.3-1

●前提
・redmineをインストールしたディレクトリを以下とする。
C:\Bitnami\redmine-3.4.2-4\
C:\Bitnami\redmine-3.4.3-1\
・コマンドはコマンドプロンプトから実行する。
・バックアップする側のredmineのチケットにファイルをアップロードしている。
・バックアップする側のredmineにプラグインを導入している。
・バックアップする側のmysqlはポート番号13306で起動している。
・リストアする側は別のPC。

●バックアップ
・redmineにアクセスできないようにApacheを停止する。
・mysqld.exeを使うのでコマンドへのパスを指定する。

set PATH=%PATH%;C:\Bitnami\redmine-3.4.2-4\mysql\bin

・バックアップする側でデータベースのバックアップを取得する。

mysqldump.exe -u root -p bitnami_redmine -P 13306 --default-character-set=binary > backup.dmp

・チケットに添付したファイル類をコピーする。
C:\Bitnami\redmine-3.4.2-4\apps\redmine\htdocs\filesフォルダすべて。
・インストールしていたプラグインをコピーする。
C:\Bitnami\redmine-3.4.2-4\apps\redmine\htdocs\pluginsフォルダすべて。

●リストア
・redmineにアクセスできないようにApacheを停止する。
・mysql.exeを使うのでコマンドへのパスを指定する。

set PATH=%PATH%;C:\Bitnami\redmine-3.4.3-1\mysql\bin

・backup.dmpファイルのあるディレクトリに移動してからリストアするコマンドを実行する。

mysql -u root -p -D bitnami_redmine < backup.dmp

・チケットに添付したファイルとプラグインのコピーを以下に置く。
C:\Bitnami\redmine-3.4.3-1\apps\redmine\htdocs\files
C:\Bitnami\redmine-3.4.3-1\apps\redmine\htdocs\plugins
・Apacheを再起動して元々使っていたユーザでログインできればリストア完了。

VBAを使ってエクセルにシートを追加する

マクロを作っていてシートの追加を忘れてしまったので残しておく。
マクロの記録を使ったときに記録されるVBAのコード。

Sub Macro1()
    Sheets.Add After:=Sheets(Sheets.Count)
End Sub

Sheets.Addでシートの新規追加を実施する。
Afterはどのシートの後ろに追加するか指定する。
Sheets.Countはシートの総数を求める。
なので一番最後のシートの後ろに新規のシートを追加する意味となる。

3番目のシートの前に追加するコード。

Sheets.Add Before:=Sheets(3)

新規に作成するシートの名前をfooにするコード。

Sheets.Add.Name = "foo"

新規に作成するシートの名前を日時にするコード。

Sheets.Add.Name = Format(Now(), "yyyy年MM月dd日 h時mm分ss秒")

アクティブシートの前または後ろに新規のシートを追加するコード。

Sheets.Add Before:=ActiveSheet
Sheets.Add After:=ActiveSheet

追加位置、シート名を指定するコード。

Sheets.Add(Before:=ActiveSheet).Name = "foo"

Excel2010で確認した。

PHPで前月・翌月の末日を取得する。

PHPで前月・翌月の末日を取得するときに気を付けないといけない点。
dateとstrtotimeを用いて翌月の末日を取得したいときに以下のように当月末日(2017-01-31)を指定しても期待した結果と異なる。

echo date('Y-m-d', strtotime('+1 month' . '2017-01-31'));
// 期待した結果:2017-02-28
// 実際の結果:2017-03-03

これはphp.netにも注意書きがされている。
http://php.net/manual/ja/datetime.formats.relative.php

月数を相対指定すると、その途中に経過する月の日数を使って結果を算出します。 たとえば “+2 month 2011-11-30” の結果は “2012-01-30” となります。 11 月の日数は 30 日、12 月の日数は 31 日なので、 その合計である 61 日後となるわけです。

前月・翌月の末日を取得したいときは以下のようにする。

echo date('Y-m-d', strtotime('last day of previous month' . '2017-01-31'));
// 結果:2016-12-31

echo date('Y-m-d', strtotime('last day of next month' . '2017-01-31'));
// 結果:2017-02-28

// 月の途中でも計算してくれる。
echo date('Y-m-d', strtotime('last day of previous month' . '2017-01-15'));
// 結果:2016-12-31

おまけ
末日ではなく前月・翌月の初日を取得したいとき。

echo date('Y-m-d', strtotime('first day of previous month' . '2017-01-31'));
// 結果:2016-12-01

echo date('Y-m-d', strtotime('first day of next month' . '2017-01-31'));
// 結果:2017-02-01

// 月の途中でも計算してくれる。
echo date('Y-m-d', strtotime('first day of previous month' . '2017-01-15'));
// 結果:2016-12-01

PHP 5.6.32で確認した。

redmineでチケット内の注記(#note-n)にリンクを貼る

redmineで注記を増やしていくとだんだん過去の注記を参照させたくなるときがある。
チケット内の参照させたい注記番号が3のときに「#3」とするとrdmineの#3チケットにリンクされてしまう。

仮にチケット番号#500内の注記番号#3にリンクさせたいときは
「#500-3」
のように指定すればリンクになってくれる。

findとgrepを使ってfunctionの一覧を取得する

プロジェクトのソースコードからfunctionの一覧が取得したくてfindとgrepを使って出力してみた。

OS
CentOS7

条件
ファイルのみ。
拡張子が.php。
パスにpluginと入ったものは除外。
パスにxxxxx、またはyyyyyと入ったものは含む。

実行したコマンド(実際には1行で実行した)

find . -type f
 -a -name "*.php"
 -a -not -ipath "*plugin*"
 -a  \( -ipath "*xxxxx*" -o -ipath "*yyyyy*" \)
 -print | xargs grep 'function'

CentOSでfindコマンドを使っていたときのエラーメッセージ

findコマンドを使っていて以下のメッセージが出力された。

find: 無効な評価式です。二項演算子 ‘-o’ を使用していますが、前項がありません
find: 無効な評価式です。 ‘)’ がどこかにあることが予期されますが、一つも見つかりません。

どこがおかしいのかわからずかなり時間を使ってしまったが原因は条件と\(または\)の間に半角スペースがないのが原因だった。
わかってしまえばそんなことなのだけれど時間を使ってしまった。

// NG
find \(-ipath "*etc*" -o -ipath "*lib*" \)
find \( -ipath "*etc*" -o -ipath "*lib*"\)

// OK
find \( -ipath "*etc*" -o -ipath "*lib*" \)

redmineのプラグインをアップグレードするときに手間取ったこと。

redmineのプラグインをアップグレードするときに手間取ったこと。

環境
Bitnami redmine 3.4

アップグレードするには最新のファイル類をpluginsディレクトリ(redmine-3.4のインストールディレクトリ/apps/redmine/htdocs/plugins)にコピーしてから以下のコマンドを実施する。

bundle exec rake redmine:plugins:migrate NAME=redmine_foo RAILS_ENV=production

NAME=redmine_fooはプラグイン名を指定する。

最初に起きた問題はrakeコマンドをがないと言われた。
解決策はBitnami Redmineをインストールしたディレクトリにある「use_redmine.bat」からBitnami Redmine Stack Environmentを起動してそこからコマンドを実施した。

次の問題はBitnami Redmine Stack Environmentからコマンドを実行すると以下のメッセージが出力された。
出力されたメッセージ

rake aborted!
Child already added
apps/redmine/htdocs/lib/redmine/menu_manager.rb:370:in `add_at'
apps/redmine/htdocs/lib/redmine/menu_manager.rb:297:in `push'
apps/redmine/htdocs/lib/redmine/plugin.rb:279:in `menu'
apps/redmine/htdocs/plugins/redmine_code_review/init.rb:73:in `block in <top (required)>'

ネットで検索をすると同じ名前があるからメニュー登録しているときに重複が発生してエラーになってるというようなことが書かれていた。
思い当たったのは古いプラグインディレクトリを名前を変えてpluginsディレクトリに置いていた。
・そのときのpluginsディレクトリのイメージ
plugins/redmine_foo
plugins/1.0.0_redmine_foo

解決策は古いプラグインディレクトリを関係ない場所に移動してからコマンドを実行した。
最終的には正常にコマンドが実行されてredmineからプラグインを確認するとアップグレードのバージョンになっていた。