My Photo

December 09, 2018

PHPStorm 2018.1.7 に更新

PHPStormを2018.1.?(2018.1.1だったか2018.1.3だったか)から2018.1.7に更新した。前に更新した時は「設定を引き継ぐか?」と聞かれたと思うのだが今回は聞かれなかった。

とりあえずプロジェクトは引き継がれているが、エディタやCode Styleなどの設定が引き継がれているかはよくわからん。どこを変えたか覚えてないので^^;

January 24, 2016

技術メモをQiitaに移行

今後、技術系の記事はQiitaに書くことにした。

このブログは有料サービスなのでお金払わなくなった記事が消えてしまう懸念があって。
#まあQiitaだってサービスが終了する可能性はあるが.
正確にはブログサービスのために金を払ってるのではなく、昔から使っているメールアドレスを維持するために金を払っていて、そのおまけとしてブログサービスが使えてしまう。

それに技術情報が集まっているところに置いたほうが探す人にとっては探しやすいかなと。
#自分用のメモ程度の低レベルな記事のせいで他の人が書いた有用な記事が埋まってしまうんではないかというのが心苦しい。

今日Qiitaに書いた記事はこちら

November 29, 2015

正規表現メモ:ものぐさ(最小)マッチング

関連記事:正規表現メモ

正規表現で複数回のマッチングを指定するとできるだけたくさんマッチングする(強欲、欲張り)。
指定の範囲内でできるだけ少なくマッチングさせる(ものぐさ、最小)にはメタ文字 "?" を使う。

正規表現 意味 文字列 マッチする部分
(ab)+ "ab" が1回以上繰り返し
(強欲マッチング)
ababababababc abababababab
(ab)+? "ab" が1回以上繰り返し。
(ものぐさマッチング)
ababababababc ab
(ab){2,4} "ab" が2回以上4回以下繰り返し。
(強欲マッチング)
ababababababc abababab
(ab){2,4}? "ab" が2回以上4回以下繰り返し。
(ものぐさマッチング)
ababababababc abab

参考ページ:
正規表現機能別一覧
正規表現の入門(2) 難しいメタ文字 (1/3):CodeZine(コードジン)

November 23, 2015

BASE64にエンコード/デコードするバッチファイル

関連記事:certutilでBASE64エンコード/デコード

certutilコマンドでバイナリファイルをBASE64のテキストファイルにしたり、逆にデコードしてテキストをバイナリにするバッチファイル。
毎回「引数なんだっけ?」となるのでバッチファイルを作った。

BASE64でエンコードするバッチファイル
第1引数で指定したファイルをエンコードして第2引数で指定したファイルに出力する。

@echo off
if "%1" equ "" (
goto :FAILURE
)

if "%2" equ "" (
goto :FAILURE
) else (
certutil -f -encode %1 %2
goto :END
)


:FAILURE
echo parameter error.

:END
exit/b

BASE64でデコードするバッチファイル
第1引数で指定したファイルをデコードして第2引数で指定したファイルに出力する。

@echo off
if "%1" equ "" (
goto :FAILURE
)

if "%2" equ "" (
goto :FAILURE
) else (
certutil -f -decode %1 %2
goto :END
)


:FAILURE
echo parameter error.

:END
exit/b

参考ページ
バッチファイルでif文をトラブルなく使う - Qiita
Windowsコマンド集 - exit:ITpro
Tech TIPS:バッチファイルの基本的な使い方 (1/2) - @IT

August 16, 2015

Windows7の検索ボックスの検索条件指定(フォルダの除外など)

Windows10が出たというのにWindows7の話^^;

エクスプローラの検索ボックスでフォルダを除外して検索したい場合、次のように指定したが思ったような結果を得られなかった。

種類:~!フォルダー

次のようにすればJPEGファイルは除外されるのに。

種類:~!JPEG

正解は以下でした。2つのうちどっちでもOK。

-kind:folder
-種類:フォルダー

「-<プロパティ>:<値>」とすると、「プロパティ=値」の否定という検索条件になるらしい。
また、検索条件を "AND" や "OR" でつないで検索することもできる。"AND"、"OR" は大文字でなければならない。

以上を踏まえて、例えば「2015/8/1~2015/8/3 に更新されたbakフォルダ配下ではないファイル」という条件で検索する場合は以下のようになる。

更新日時:‎2015/‎08/‎01 .. ‎2015/‎08/‎03 AND -kind:folder AND -folder:bak

他に、下記でもほぼ同じ検索結果を得られる。ただし、上の検索条件と違って testbak.txt のようなファイル名に "bak" を含む場合など、パスに "bak" が含まれるものも除外されてしまう。

更新日時:‎2015/‎08/‎01 .. ‎2015/‎08/‎03 AND -kind:folder AND パス:~!bak

また、「2014年中に更新されたテキストファイルまたはPDFファイル」という条件は、次のようになる。

更新日時:2014/01/01 .. 2014/12/31 AND (*.txt OR *.pdf)

参考ページ
エクスプローラでのファイルの検索方法 | Windows 7 Tips
Learn How to Use Windows 7’s Advanced Search Operator

TortoiseGitのインストールとリポジトリの作成

会社のPCでは TortoiseGit を使っているが、PCを渡された時点で既にインストール済みだった。なので自宅のPCには git for windows と TortoiseGit を自分でインストールしてみた。その時のメモ。

git for windows と TortoiseGit のインストール

git for windows→TortoiseGit→TortoiseGitのLanguage Pack
の順番でインストール。
よくわからないので全部「next」、「next」、...で、デフォルトのままでインストールした。

バージョン管理の開始(リポジトリの作成)と設定

バージョン管理をしたいフォルダで右クリックしてコンテキストメニューから「Git ここにリポジトリを作成(Y)」をクリックする。するとダイアログが開く。
そのダイアログには「Bareを生成」というチェックボックスがあるが、そのままにして(チェックせず)OKボタンを押下。
これでこのフォルダ以下がバージョン管理の対象になる。

Bareリポジトリというのは作業用ファイルを持たないリポジトリのこと(参考ページ4)。

リポジトリの作成は、実際はすんなり行かなかった。何も設定せずにリポジトリを作成すると「ユーザー情報を設定しろ」と言われて TortoiseGit の設定画面が開く。
ユーザー情報のところに名前とメールアドレスの入力欄、その上に「設定のでどころ」というのがある。
これはようはユーザー情報を保存する場所らしい。
ローカル:このリポジトリのみこのユーザー情報を使う。
グローバル:現在ログインしているユーザーについてはこのユーザー情報を使う。
システム:このマシンではログインしているユーザーにかかわらずこのユーザー情報を使う。
ということだとたぶん思う。
で、グローバルで保存しようと思ったのだが、ユーザー情報を入力してOKボタンを押すとエラーになる。
ユーザー環境変数の HOME が "/home/<ユーザー名>" だったのを
"C:\users\<ユーザー名>" に変更したところ問題が解消した(参考ページ2)。C:\users\<ユーザー名>に .gitconfig ファイルが作成されて、以下のようにユーザー情報が保存された。

[user]
name=into
email=into@test.com

この環境変数HOMEの設定はリポジトリを作る前にやっておくべきことなんだろう。
この HOME は誰が最初に設定したんだろう。git for windows なり TortoiseGit なりが設定して環境に合わせて変えることが前提ならいいんだが、なんか別のアプリケーションが設定したもので、今まで "/home/<ユーザー名>" で動作していたのなら、そのアプリケーションで今後なにか問題が発生するかもしれない。

解決しない問題

日本語ファイル名のファイルがコミットできない。コミット以前に追加することもできない。
追加のダイアログで日本語ファイル名が化けていて、無視してOKを押下すると「指定されたファイルが見つかりません」というエラーになる。

参考ページ
1.TortoiseGitのWindowsへのインストール - tanaka's Programming Memo
2.Windows で Git の環境設定 (msysgit, TortoiseGit) - ngの日記
3.Git(2)TortoiseGitでGitの設定を行う
4.TortoiseGit の基礎勉強 ~ TortoiseGit によるバージョン管理 ~ - バージョン管理システム入門(初心者向け)

April 15, 2015

Excelで就業時間を計算する式を考えた

会社の就業時間の計算ルールが変わった。
今までの就業時間の計算は割りと簡単で

退勤時間-出勤時間-昼休みの1時間

の結果を5分単位で端数処理をしていた。

新しいルールは以下のようになった。
・就業時間のスタートは9:30。9:30より早く出勤しても9:30までは就業時間に入らなくなった。
・12:00~13:00の昼休み1時間に加えて18:00~18:15が休憩時間になった。
・15分単位で端数は切り捨て。

就業時間の計算方法が変わったのは、残業したときの割り増し賃金が導入されたから。今まで残業しても休日出勤しても時給が変わらなかった。
#法律違反だったわけだ。
社労士に意見されたそうで、残業した分の割増賃金を導入することになった。でも人件費を増やしたくない。だからルールを変えて就業時間を減らそうと会社は考えたのかなと、想像できる。
で、残業の割増賃金で増える分とルール変更で就業時間が短くなって減る分、合算して給料が増か減かというと、まず間違いなく減です。ええ。最近はあまり残業してないし。
今までは9:20に出勤すればその時点から就業開始だったが、今後は始業時間の9:30から就業開始になる。これだけで毎日マイナス10分。
また、定時の後に15分の休憩ができたので、18:00~18:29に退勤しても18:00退勤と変わらない。これで1日当たり10~15分くらい従来より就業時間が減ることになる。
出勤が20日/月と考えるとざっくり計算で1月あたり
  20分×20=3時間40分
くらい就業時間が減って、その分給料も減るかなーと予想。

で、これをEXCELで計算する式を考えた。セルC2が退勤時刻とすると下記のようになった。
冗長な括弧があるが、これは多少でもわかりやすくするため。わかりやすくなってないか^^;

FLOOR((C2-TIME(9,30,0)-(IF(C2<=TIME(12,0,0),0,IF(C2<=TIME(13,0,0),(C2-TIME(12,0,0)),IF(C2<=TIME(18,0,0),1/24,IF(C2<=TIME(18,15,0),(1/24+(C2-TIME(18,0,0))),(1/24+1/24/4))))))),"0:15")

やってることは

15分単位で切り捨て(退勤時間-始業時間の9:00-休憩時間)

である。
よりわかりやすくいように適当に改行、インデント、コメントを入れてみた。
#EXCELの式の中にコメントなんて書けないが、分かりやすくするために入れた。

FLOOR(  // 切り捨て
  // 切り捨て前の生の就業時間
  (
    C2           // 退勤時間
    -
    TIME(9,30,0)  // 始業時間
    -
    // 休憩時間
    (
      IF(C2<=TIME(12,0,0),           // 12:00以前の場合
        0,                                // 休憩時間なし
      IF(C2<=TIME(13,0,0),           // 13:00以前の場合
        (C2-TIME(12,0,0)),                // 12:00を超えた部分
      IF(C2<=TIME(18,0,0),           // 18:00以前の場合
        1/24,                             // 昼休み1時間
      IF(C2<=TIME(18,15,0),          // 18:15以前の場合
        (1/24+(C2-TIME(18,0,0))),         // 昼休み1時間+18:00を超えた部分
                                        // それ以降
        (1/24+1/24/4)                     // 昼休み1時間+夕方の休憩時間15分
      ))))
    )
  ),
  "0:15"  // 切り捨ての単位
)

April 07, 2015

URLリライトの復習その2

関連記事:
UbuntuサーバのApache2でURLリライトを試してみる
URLリライトの復習とIE11のUser-Agent
.htaccessの有効化とサブディレクトリのアクセス制御

CentOSでのURLリライト

以前、URLリライトについての記事を書いた時は動作確認に Ubuntu Server を使っていたが今はCentOS(6.6)を使っているので、URLリライトが使えるか調べてみた。
/etc/httpd/conf/httpd.conf を見ると

LoadModule rewrite_module modules/mod_rewrite.so

という記述があるのでデフォルトでURLリライトが有効になっている。あとは .htaccess を使えるようにすれば .htaccess でURLリライトが可能になる。

サブディレクトリの.htaccessのRewritBaseとRewriteRule

RewriteRuleは書式は以下である。

RewriteRule <Pattern> <Substitution>

いろいろ試してわかったことを以下に箇条書き。

  • パターンと照合される入力値は相対パスである。スラッシュではなく名前から始まる。よって、パターンとして "/○○" では入力値と一致しない。相対パスが一致するようなパターンを考えなければならない。
  • Substitutionは "/" で始まればドキュメントルートからのパス。名前から始まれば相対パスである。
  • パターンに一致して書き換えられた場合、RewriteBaseがあれば書き換えられたURL(のパス名)は "RewriteBaseの値+<Substitution>" が結果となる。

具体例として、以下のようなディレクトリ、ファイル構成を考える。

/(ドキュメントルート)
├abc.html
├sub
│├.htaccess
│├abc.html
・・
・・
・・

/sub/.htaccess(RewriteBaseとRewriteRurleのみ抜き出したもの)とその場合にURLリライトの結果の表を以下に示す。

例1

RewriteBase /sub/
Rewrite ^test\.html$ abc.html
元のURLのパス名 URLリライトへの
入力
URLリライトの
出力
書き換えられた
URLのパス名
/sub/test.html test.html abc.html /sub/abc.html
/sub/sub2/test.html sub2/test.html パターンに
一致しない
-

例2

RewriteBase /sub/
Rewrite ^.*test\.html$ abc.html
元のURLのパス名 URLリライトへの
入力
URLリライトの
出力
書き換えられた
URLのパス名
/sub/test.html test.html abc.html /sub/abc.html
/sub/sub2/test.html sub2/test.html abc.html /sub/abc.html

例3

Rewrite ^test\.html$ /abc.html
元のURLのパス名 URLリライトへの
入力
URLリライトの
出力
書き換えられた
URLのパス名
/sub/test.html test.html /abc.html /abc.html

March 08, 2015

.htaccessの有効化とサブディレクトリのアクセス制御

関連記事:
.htaccessでBASIC認証
BASIC認証の設定のAuthNameとRequire

.htaccessを有効にする

/var/www/html がドキュメントルートの場合、ディレクティブの中のAllowOverrideを All に変更すると、.htaccess が使えるようになる。
ただし All にすると .htaccess で何でも出来てしまうので、.htaccess で許可する内容に応じた値にするべきである(参考ページ3,4)。

<Directory "/var/www/html">

    AllowOverride All

</Directory>

サブディレクトリ・サブディレクトリの特定のファイルのBASIC認証を解除する

あるディレクトリにBASIC認証がかかっていて、サブディレクトリやサブディレクトリ内の特定のファイルは認証なしにしたい場合の例を以下に示す。
以下のディレクトリ構成・ファイル配置で、testディレクトリには .htaccess でBASIC認証がかかっている。

test
├.htaccess
├sub1
│└sub1_1.html
├sub2
│├.htaccess
│└sub2_1.html
├sub3
│├.htaccess
│└sub3_1.html
├sub4
│├.htaccess
│├sub4_1.html
│└sub4_2.html
└sub5
  ├.htaccess
  ├sub5_1.html
  │sub5_2.html
  └sub5_3.html

sub1 は .htaccess がなく、親ディレクトリと同様にBASIC認証がかかる。 sub1以外のtestのサブディレクトリにはそれぞれ .htaccess がある。

test/sub2/.htaccess

Satisfy any
Order Allow,Deny
Allow from all

test/sub2 は認証無しになる。
1行目が "Satisfy any" なので、
・「testディレクトリで設定されているBASIC認証」または「"Satisfy any" の下に記述された条件」
を満たせばアクセスが許可される。
2行目以下ですべてのアクセスを許可しているので、結果として test/sub2 は認証がかからない。

test/sub3/.htaccess

Deny from all

test/sub3 はアクセスが許可されない。
Satisfyディレクティブがないので Satsify all と同じ意味となり、
・「testディレクトリで設定されているBASIC認証」かつ「test/sub3/.htaccess に記述された条件」
を満たせばアクセスが許可される。
test/sub3/.htaccessではすべてのアクセスを拒否しているので、結果として test/sub3 にはアクセス不可となる。

test/sub4/.htaccess

<Files "sub4_1.html">
    Satisfy any
    Order Allow,Deny
    Allow from all
</Files>

test/sub4ディレクトリの sub4_1.html は認証なし、sub4_2.html は認証ありとなる。
<Files>ディレクティブで指定されたファイルに対して内部に書かれたディレクティブが適用される。
この場合、sub4_1.html だけ無条件でアクセス許可となる。

test/sub5/.htaccess

<FilesMatch "sub5_[12]\.html">
    Satisfy any
    Order Allow,Deny
    Allow from all
</FilesMatch>

test/sub5ディレクトリの sub5_1.html と sub5_2.html は認証なし、sub5_3.html は認証ありとなる。
<FilesMatch>ディレクティブは<Files>ディレクティブと同様に適用範囲を制限する。違いは指定に正規表現を使う点である。

参考ページ:
1..htaccessを有効にする-独学!未経験からWebデザイナーになる!!
2.特定のファイル・ディレクトリのアクセスを拒否する-独学!未経験からWebデザイナーになる!!
3.DokuWikiのインストール (CentOS 6.5) : Unix系技術情報備忘録
4.Apacheサーバー構築法 - 第5回 設定を上書きする「.htaccess」:ITpro
5..htaccessでアクセス制限
6.core - Apache HTTP サーバ バージョン 2.2
7.サブディレクトリで特定のファイル以外のBasic認証を解除する - IMPOV::In My Point Of View
8.ミケネコの htaccess リファレンス
9.コンテナ指示子

March 01, 2015

[CentOS 6.6]VirtualBoxのGuest Additionsをアップデート

関連記事:
[CentOS 6.6]PHP5.5のインストール準備(EPEL、REMIリポジトリの追加)

PHP5.5のインストール

EPEL、REMIリポジトリを追加したのにいよいよインストール。
既存のリポジトリを無効にしなければいけないと書いてあるサイトもあったが、そんなこともなく、以下のようにインストールできた。

# yum --enablerepo=remi --enablerepo=remi-php55 install php php-gd php-pdo php-xml
読み込んだプラグイン:downloadonly, fastestmirror, refresh-packagekit
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * remi: remi.kazukioishi.net
 * remi-php55: remi.kazukioishi.net
 * updates: www.ftp.ne.jp
依存性の解決をしています
(中略)
依存性を解決しました

================================================================================
 パッケージ         アーキテクチャ
                               バージョン                  リポジトリー    容量
================================================================================
インストールしています:
 php                x86_64     5.5.21-1.el6.remi           remi-php55     2.6 M
 php-gd             x86_64     5.5.21-1.el6.remi           remi-php55      72 k
 php-pdo            x86_64     5.5.21-1.el6.remi           remi-php55     112 k
 php-xml            x86_64     5.5.21-1.el6.remi           remi-php55     208 k
依存性関連でのインストールをします。:
 gd-last            x86_64     2.1.1-1.el6.remi            remi           135 k
 libXpm             x86_64     3.5.10-2.el6                base            51 k
 php-cli            x86_64     5.5.21-1.el6.remi           remi-php55     3.7 M
 php-common         x86_64     5.5.21-1.el6.remi           remi-php55     1.0 M
 php-pear           noarch     1:1.9.5-3.el6.remi          remi           375 k
 php-pecl-jsonc     x86_64     1.3.6-1.el6.remi.5.5.1      remi-php55      47 k
 php-pecl-zip       x86_64     1.12.4-1.el6.remi.5.5       remi-php55     269 k
 php-process        x86_64     5.5.21-1.el6.remi           remi-php55      57 k
 t1lib              x86_64     5.1.2-6.el6_2.1             base           160 k

トランザクションの要約
================================================================================
インストール        13 パッケージ
(中略)
完了しました!

とりあえずphp本体の他に php-gd、php-pdo、php-xml をパラメータとして指定した。依存関係からpearなどもインストールされた。

php-mcryptのインストール

Laravelには php-mcrypt が必要というのでインストールしようとしたが、すんなりとはいかなかった。
php本体と同様にインストールしようとしたら、「libmcryptが必要」というエラーが出た。

# yum --enablerepo=remi --enablerepo=remi-php55 install php-mcrypt
(中略)
エラー: パッケージ: php-mcrypt-5.5.22-1.el6.remi.x86_64 (remi-php55)
             要求: libmcrypt.so.4()(64bit)
 問題を回避するために --skip-broken を用いることができません
 これらを試行できます: rpm -Va --nofiles --nodigest

標準のリポジトリやREMIに libmcrypt はなかったが、EPELにあったのでインストール。
何かワーニング出たけどインストールできた。

# yum --enablerepo=epel install libmcrypt.x86_64
(中略)
依存性を解決しました

================================================================================
 パッケージ         アーキテクチャ  バージョン              リポジトリー   容量
================================================================================
インストールしています:
 libmcrypt          x86_64          2.5.8-9.el6             epel           96 k

(中略)
パッケージをダウンロードしています:
libmcrypt-2.5.8-9.el6.x86_64.rpm                         |  96 kB     00:00     
警告: rpmts_HdrFromFdno: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
 Userid : EPEL (6) <epel@fedoraproject.org>
 Package: epel-release-6-8.noarch (@extras)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
(中略)
インストール:
  libmcrypt.x86_64 0:2.5.8-9.el6                                                

完了しました!

それからphp-mcryptをインストールする。今度はエラーとならずに完了。同時にphp自体も5.5.21から5.5.22にアップデートされた。
#PHP5.5のインストールは実は先週行ったので、1週間の間に新しいバージョンが出たようだ。
libmcryptのインストール時の警告は気になるが、とりあえずこの状態からlarabelのインストールを目指そう。

# yum --enablerepo=remi --enablerepo=remi-php55 install php-mcrypt
(中略)
依存性を解決しました

================================================================================
 パッケージ        アーキテクチャ
                                バージョン               リポジトリー      容量
================================================================================
インストールしています:
 php-mcrypt        x86_64       5.5.22-1.el6.remi        remi-php55        43 k
依存性関連での更新をします。:
 php               x86_64       5.5.22-1.el6.remi        remi-php55       2.6 M
 php-cli           x86_64       5.5.22-1.el6.remi        remi-php55       3.7 M
 php-common        x86_64       5.5.22-1.el6.remi        remi-php55       1.0 M
 php-gd            x86_64       5.5.22-1.el6.remi        remi-php55        72 k
 php-pdo           x86_64       5.5.22-1.el6.remi        remi-php55       112 k
 php-process       x86_64       5.5.22-1.el6.remi        remi-php55        57 k
 php-xml           x86_64       5.5.22-1.el6.remi        remi-php55       208 k
(中略)
インストール:
  php-mcrypt.x86_64 0:5.5.22-1.el6.remi                                         

依存性を更新しました:
  php.x86_64 0:5.5.22-1.el6.remi         php-cli.x86_64 0:5.5.22-1.el6.remi     
  php-common.x86_64 0:5.5.22-1.el6.remi  php-gd.x86_64 0:5.5.22-1.el6.remi      
  php-pdo.x86_64 0:5.5.22-1.el6.remi     php-process.x86_64 0:5.5.22-1.el6.remi 
  php-xml.x86_64 0:5.5.22-1.el6.remi    

完了しました!

2015/05/07追記
Laravelにはphp-mbstringも必要だった。php-mbstringをインストールしたときの記事は以下。
Laravelのインストール

参考ページ:
CentOS6.x - CentOS6.6に php5.5をインストールしてみる。 - Qiita
【CentOS, PHP】CentOSへのPHP5.5, MySQL5.6環境の構築 - Qiita
CentOS 6.5 にphp5.5とMySQL5.6をyumでインストールする - Qiita
CentOS6.5にPHP5.5をインストールする - inari blog (@inari111)
CentOS 6.6 LAMPサーバ インストールメモ【CentOS6.6+Apache+MySQL+PHP】 | あぱーブログ
Laravel - The PHP Framework For Web Artisans
CentOSでlibmcryptをインストール | Me-ISM

より以前の記事一覧

June 2021
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof