Googleのクラウド環境であるgoogle cloud platform(gcp)では、gcloudコマンドでクラウド環境に対する操作を行うことができます。
プロジェクトの作成と課金有効化をgcloudコマンドだけで行うためには、下記の手順で作業すればよいです。
```language...
[Linux]本番サーバにPHPMyAdminをインストール時、気をつけること
2017年9月23日
| カテゴリ: Linux
WebサーバのログにPHPMyAdminがインストールされているかスキャンしている不正なアクセスがあったのでメモ代わりに残しておきます。
以下のようにありがちなパスを片っ端にスキャンされているので、パスワードを掛けておくのは当然ですが、/phpMyAdmin...
[Linux]ubuntuで、crontabファイルを編集するエディタを変更する
2017年9月22日
| カテゴリ: Linux
Ubuntu Linuxで、初めて`crontab -e`コマンドを実行すると、以下のようにエディタの選択プロンプトが表示されます
```language-bash
> crontab -e
no crontab for root - using an empty one
Select an editor. To change later, run 'select-edito...
[Google App Engine]dev_appserver.pyで、No module named 'setup'エラー
2017年9月21日
| カテゴリ: python
|
Google App Engineを使った開発を行う際、dev_appserver.pyを実行すると`No module named 'setup'`エラーが出ることがあります。
```language-bash
> dev_appserver.py app.yaml
Traceback (most recent call last):
File "C:\Users\xxx\AppData...
VSCodeで、文字コードを自動認識してファイルを開く
2017年9月20日
| カテゴリ: VSCode
VisualStudio Codeでは、デフォルトでは、文字コードがUTF-8であると仮定してファイルが開かれます。
メモ帳(notepad.exe)のように、文字コードを自動認識させたい場合は、下記の設定を行えばよいです。
```language-json
{
"files.autoGuessEnc...
[PHP]発生したエラーの理由を、全てブラウザに出力させる方法
2017年9月19日
| カテゴリ: 未分類
PHPを勉強し始めて間もない時や、PHPを使ったプロジェクトの序盤では、トライアンドエラーを迅速に行うため、一旦すべてのエラーをブラウザ画面に表示させてしまいたい場合があります。
このような場合は、下記のコードをプログラムの先頭に書いておけ...
[PHP] "php -S"でビルトインサーバ実行時、コンソールにメッセージを出力させる
2017年9月18日
| カテゴリ: 未分類
phpでは-Sオプションを利用することで、ビルトインWebサーバを実行させる事ができます。
この環境で、ブラウザの画面ではなく、php -Sを実行したコンソールにログメッセージを出力するには、下記の処理を実行すればよいです。
```language-php
[PHP]Unexpected T_STRINGエラーが出たときにチェックすること
2017年9月17日
| カテゴリ: PHP
PHPのプログラムを実行するとUnexpected T_STRINGエラーが出る場合があります。
このエラーが出た場合にチェックするポイントを説明します。
## エラーが出た場所を確認する
以下のようにエラーが出るので、まずはこのエラーメッセージよりエラー...
[PHP]Slim3 でcookieを管理するクラスを作る
2017年9月16日
| カテゴリ: SlimFramework
PHPのSlim3 Frameworkでcookieを管理するためのクラスです。
stackoverflowにあったコードを元に一部改修してます。
https://stackoverflow.com/questions/35257522/slim-3-framework-cookies
```language-php
[PHP]Slim3では、なぜget()メソッドの中で$thisでDIコンテナが取得できるか?
2017年9月15日
| カテゴリ: SlimFramework
PHPのSlim3 Frameworkでは、以下のようなコードでgetリクエストが走った時のコールバック処理内で、DIコンテナへアクセスすることができます。
```language-php
$app = new \Slim\App();
// myServiceをDIコンテナを取得
$container = $app->getCont...
ThinkPadでPCの電源がシャットダウンされているときでも、USBポートからの充電を有効にするための設定方法です(Windows10が入った、ThinkPad x260で確認しています)。
スタートメニューから、Lenovo Settingsを開きます。
左のメニューより、電池...
[Linux]logrotateで毎分rotationする(もしくはN分毎に実行)方法
2017年9月14日
| カテゴリ: Linux
|
Linuxではlogrotateコマンドでログの切り替えを行うことができますが、ログ切り替えの最小単位は1時間周期(hourly)です。
今回は、logrotateコマンドで、15分おきや1分おきなど、1時間より短い時間でのログ切り替えを行う方法を説明します。
## 作...
[Slim3]DIコンテナからインスタンス取得時にコンストラクタ引数を渡す
2017年9月13日
| カテゴリ: SlimFramework
PHPのマイクロフレームワークであるSlim3 Frameworkでは、PimpleパッケージベースにしたDIコンテナが用意されています。
今回はSlim3で、DIコンテナからインスタンス取得時に、呼び元からコンストラクタ引数を渡す方法を説明します。
## 通常のDI...
Visual Studioでプロジェクトを作成したとき、No executable found matching command "dotnet-projectmodel-server"エラーが出ることがあります。
``` language-bash
---------------------------
Microsoft Visual Studio
----------------------...
Visual Studio 2017 Community EditionのISOイメージを入手する
2017年9月12日
| カテゴリ: C#
Visual Studio 2017のインストーラをダウンロードすると、通常は1MB程度の小さなインストーラーで大半のデータをインストール中にオンラインでDLする形式になります。
複数台にインストールするなど、予めISOイメージを取得して起きオフラインでVisual ...
Windows環境で、bash for windowsやGit bashなどのbash環境を使っているとき、findコマンドでファイル検索しようとすると、以下のエラーが表示される場合があります。
``` language-bash
$ find ./ -print
FIND: 無効なスイッチです
```
これは、...
[Ansible]大量ファイルのcopyが遅いときにすべきこと
2017年9月11日
| カテゴリ: Linux
|
Ansibleで小さなファイルを大量にcopyタスクを使ってコピーする場合、処理に非常に時間がかかる場合があります。この場合、copyの代わりにsynchronizeのタスクに変更すると劇的に処理が早くなる場合があります。
変更前:
```language-yaml
- name: co...
[Windows].Net CoreのSDKをインストールする
2017年9月10日
| カテゴリ: C#
Windows向けの.Net Core SDKは、https://www.microsoft.com/net/download/core#/sdkよりダウンロードできます。
.Net CoreのSDKのインストールは、1分程度で完了する小さなもので、特に再起動も要求されません。
インストーラーも下記のような感じ...
[SSH]パスワード未設定なのにEnter Passphrase for key .../.ssh/id_rsaエラーが出るとき
2017年9月9日
| カテゴリ: Linux
|
sshでパスフレーズを未設定なキーファイルを.ssh/id_rsaにおいたにもかかわらず、以下のようにパスフレーズを聞かれる場合があります。
```language-bash
> ssh 192.160.1.2
Enter passphrase for key '/home/username/.ssh/id_rsa':
```
この症...
[Ansible]copyタスクでDestination directoryエラーが出た時の対処法
2017年9月8日
| カテゴリ: 未分類
|
Ansibleのplaybookを実行時、copyのタスクを実行すると下記のエラーが出る場合があります。
```language-json
fatal: [testserver]: FAILED! => {
"changed": false,
"checksum": "98583305b1e488f5c4453b8a0ca6e5bac32d0a2f",
"failed"...
Ansibleのplaybookファイルを自己実行可能な形式にする
2017年9月7日
| カテゴリ: 未分類
|
AnsibleのPlaybookは、`ansible-playbook foo.yml`のような形で実行しますが、下記のようにしておくとymlファイル自体を実行可能な形式にすることが可能です。
ファイルの先頭に以下の1行を書く
```language-bash
#!/usr/bin/env ansible-playbook
`...
[Linux]メモリ/CPUを多く使っているプロセスを調べるワンライナー
2017年9月5日
| カテゴリ: Linux
LinuxでメモリやCPUを多く消費していて、パフォーマンスに影響を及ぼしているプロセスを調べたいときに便利なコマンドを2つ紹介します。
```language-bash
# メモリの使用量が多い順にプロセスを表示
ps aux | sort -nrk +4 | head
# CPUの使用量が...
[Linux]サーバの再起動が終わったことを音で知る(ping -a)
2017年9月3日
| カテゴリ: Linux
クラウドサーバなどリモート環境で実行されているLinuxサーバの再起動などを行った場合、いつ再起動が終わったかを知らせてほしい場合があります。
このような場合、リモートサーバがpingを許可していれば下記のコマンドで確認することができます。
``...
opensslコマンド実行時にPKEY_RSA_CTRL:invalid keybitsエラーが出るとき
2017年9月2日
| カテゴリ: 未分類
|
opensslコマンドを使って自己署名の証明書を作る時、下記のエラーが出ることがあります。
```language-bash
> openssl req -x509 -nodes -days 10000 -newkey rsa:100 -subj /DN=localhost -keyout foo.key -out foo.crt
...:rsa routines:PKEY_RSA...
VagrantでVMのネットワークが遅いときの対処法
2017年9月1日
| カテゴリ: Vagrant
VagrantでVMの管理にVirtualBoxを使用している場合、Vagrantfileの設定を変更することで、ネットワークを速くすることができます。
方法は、Vagrantfileファイルを編集し、ネットワークのドライバをvirtioというものに変更したうえで、vagrant upする...
[PHP]Slim3でPDOを使用する最小限のプログラム
2017年8月31日
| カテゴリ: SlimFramework
Slim3 FrameworkでPDOを使用したDBアクセスを行いたい場合があります。
Slim3では、システム全体で使用するオブジェクトの管理をDIコンテナに任せることができる為、DIコンテナ経由でPDOオブジェクトの取得を行う方がスマートです。
下記は、PDOオブ...
Visual StudioでAWS Lambdaのプロジェクト作成時、"Microsoft.DotNet.Props"が見つからないエラーが出るとき
2017年8月30日
| カテゴリ: C#
|
Visual Studioで、AWS Toolkit for Visual Studioを使用してAWS Lambdaのプロジェクトを作成しようとしたとき、下記のエラーが出るときがあります。
```language-bash
---------------------------
Microsoft Visual Studio
---------------------...
Ansibleのtemplateコマンドについて
2017年8月28日
| カテゴリ: 未分類
|
Ansibleでは単純なファイルのコピーだけでなく、templateコマンドを使うことによって可変部を含むファイルをコピーできるテンプレート機能を使用することができます。
## テンプレートの仕組みについて
- templateコマンドを使うと、Jinja2のテ...
[PHP]Slim3 FrameworkでGET/POSTパラメータを取得する方法
2017年8月26日
| カテゴリ: SlimFramework
PHPのマイクロフレームワークである、Slim3 Frameworkでクライアントから渡された、GET/POSTパラメータを受け取る方法はいくつかの方法があります。
まずは以下の方法で、すべてのパラメータを配列として取得できます。
```language-php
$paramValue ...
aws-cliを使って全Webサーバに同じコマンドを実行する
2017年8月24日
| カテゴリ: 未分類
|
今回は、AWSのcliユーティリティを使用して、複数のec2サーバに対してコマンドを実行します。例として、タグに"role=web"が指定された全てのec2インスタンスに対してuptimeコマンドを実行してみます。
## 最初にまとめ
結果だけ知りたい人のために結論...
aws-cliを使い始める人のための、jqコマンド超入門
2017年8月22日
| カテゴリ: Linux
|
AWSのクラウド環境をコマンドラインから操作するために、awsコマンドというものがあります。
検索系のコマンドの場合、jsonで形式で出力させたうえでjqコマンドで必要な情報のみ抽出することが多いのですが、jqコマンドを初めて使う場合、使い方が分か...
[git] git addで".git/index.lock': File exists."エラーが出たときにすべき事
2017年8月19日
| カテゴリ: 未分類
|
gitを使っていて、git addやgit pushなどのコマンドを実行したとき、以下のような'.git/index.lock': File exists.エラーが出るときがあります。
```language-bash
$ git add *
fatal: Unable to create '/home/xxx/.git/index.lock': File exists.
...
VisualStudio Codeでスクロールバーにファイルの縮小表示をさせない
2017年8月18日
| カテゴリ: VSCode
VisualStudio Code(VSCode)では、エディタのスクロールバー領域に開いているファイルを縮小表示したものが表示されます。この機能はミニマップと呼ばれていて、SublimeTextなど他のモダンなエディタも持っている機能です。
ミニマップは便利なのですが...
[PHP]Slim 3 Framworkで\Slim\Slimクラスがnew出来ない場合
2017年8月17日
| カテゴリ: SlimFramework
Slim Framworkを使ったサンプルコードをネットなどで探してきた再、$appオブジェクトを作成する際に、下記のようなコードが例示されている場合があります。
```language-php
cronで特定の時間からn分おきに処理を実行したい場合(*/n+offset)
2017年8月16日
| カテゴリ: Linux
Linuxのcron機能で、5分ごとにスクリプトを実行したい場合は、大抵の環境で下記の指定が可能です。
```language-bash
*/5 * * * *
```
ただ、上記の場合だと、開始が0分になります。
開始が0分からではなく、m分のオフセットを掛けたのち、n分おき...
[PHP]Slim3でリダイレクトを行う
2017年8月15日
| カテゴリ: SlimFramework
PHPのSlim3 Frameworkで302リダイレクトを行いたい場合があります。
Slim3でリダイレクトを行うときは、下記のように$response->withRedirect()メソッドを利用すればよいです。
``` language-php
use \Psr\Http\Message\ServerRequestInterface as Re...
[PHP]arrayをXMLに変換する関数
2017年8月15日
| カテゴリ: PHP
PHPでarrayをXMLを調べていたところ、意外と探せない。
PEARのXML/Serializerライブラリを使うのはさすがにレガシーすぎるので、stackoverflowで見つけたSimpleXMLElementクラスを利用したものを使うことにしました。下記Q/Aの回答に提示されていたコー...
[PHP]Slim Frameworkで応答をjsonp形式で返す
2017年8月14日
| カテゴリ: SlimFramework
Slim Frameworkで応答データをjsonp形式で返したい場合は、下記のようにすればよいです。jsonpのcallback関数名は、通常クライアントから指定してもらうことが多いです。
```language-php
$app->get('/', function (Request $request, Response $respons...
[PHP]SlimFrameworkでエラーのデバッグ出力を行う方法
2017年8月13日
| カテゴリ: SlimFramework
SlimFrameworkでは、スクリプトの途中でエラーが出たとき以下のメッセージを画面に表示するだけで、エラーのスタックトレースなど詳細を画面に表示しません。
```language-bash
Slim Application Error
A website error has occurred. Sorry for the te...
[PHP]Slim FrameworkでPhpRenderを利用したViewコンポーネントの分離を行う
2017年8月12日
| カテゴリ: SlimFramework
PHPのマイクロフレームワークでであるSlim Frameworkでは、標準ではViewに相当するコンポーネントが用意されていません。マイクロなだけに、ルーティング処理中でViewの出力まで行っても良いのですが、最低限のMVCによるViewの分離ぐらいは行いたい場合が...
[PHP]strpos()関数で、Empty needle in... のPHP Warningが出力される条件
2017年8月11日
| カテゴリ: PHP
PHPでstrpos()関数を実行したとき、下記の警告が表示される場合があります。
```language-bash
PHP Warning: strpos(): Empty needle in...
```
これは、strpos()の第二引数が、空文字列のときに発生します。
(さらに…)
[PHP]Slim FrameworkでAPIキーによるアクセス認証を実装する
2017年8月10日
| カテゴリ: SlimFramework
PHPを使ったプログラムで、簡単なWebAPIを実装したい場合があります。
小さなWebAPIサーバなど、シンプルなサービスを実装する時にSlim Frameworkのようなマイクロフレームワークは助けになりますが、クライアントの認証がネックになることがあります。...
[PHP]phpでのyaml読み込みはsymfony/yamlパッケージが便利
2017年8月9日
| カテゴリ: yaml
phpからyamlファイルを読む機会があったのですが、symfony/yamlパッケージを使ってみたら便利でした。
パッケージ名に"symfony"とついていますが、symfonyフレームワークを使わなくても、このパッケージだけ単独で利用できます。
(さらに…)
[PHP]ヒアドキュメントを使った時、syntax errorが出たらチェックすること
2017年8月8日
| カテゴリ: PHP
PHPでヒアドキュメントを使ったスクリプトを書いたとき、、ヒアドキュメントの次のステートメントで、下記のようなエラーが出る場合があります。
```language-bash
PHP Parse error: syntax error, unexpected end of file xxx.php line x
Parse err...
Ansibleを使って、PHP+composerをインストールする
2017年8月7日
| カテゴリ: 未分類
|
ansibleをインストール後、下記のplaybookを実行すれば、phpとcomposerを纏めてインストールできます。
動作テストは、vagrant上のubuntu-trusty-64にて行っています。
```language-yaml
#!/usr/bin/env ansible-playbook
- name: install php and c...
[PHP]引数にint又はnullを許容する関数を作る(タイプヒンティング、PHPDocコメント)
2017年8月7日
| カテゴリ: PHP
PHPで、渡されたパラメータの型がintまたはnullであることを、スクリプトで表明するための表記方法です。
## php 7.1の場合
php 7.1では、null許容型が用意されているので、"?int"のような指定方法が可能です。
```language-php
public function s...
[Linux]man asciiコマンドを利用して、アスキー文字コード表を一瞬で確認する
2017年8月6日
| カテゴリ: Linux
Linuxではmanコマンドを利用することでコマンドのヘルプを見ることができますが、用意されているのはコマンドのヘルプだけではありません。
例えば、下記のように`man ascii`コマンドを実行することで、アスキーコード表を素早く確認する事ができます。...
[PHP]GuzzleHttpでjsonデータを送信する
2017年8月6日
| カテゴリ: GuzzleHttp
PHPでGuzzleHttpを使用して、jsonのデータを送信したい場合、下記のコードでリクエストを投げることができます。
(さらに…)
[PHP]GuzzleHttpで通信の内容をデバッグ出力する
2017年8月5日
| カテゴリ: GuzzleHttp
PHPの通信ライブラリであるGuzzleHttpで通信の送受信内容をデバッグしたい場合があります。
デバッグ出力するためには、get()やpost()など通信実行のメソッドの第二引数に、'debug'=>trueのパラメータを追加すればよいです。
(さらに…)
[PHP]declare,namespace,use定義は、どの順で書くのが正しいか知ってますか?
2017年8月4日
| カテゴリ: PSR
PHPのスクリプトでは、先頭にdeclare,namespace,useなど複数の定義を書く必要がある場合があります。
これらの定義を複数書く場合、どの順番で書くのが正しいでしょうか?
(さらに…)
[PHP]Composerをautoloadだけの目的で使う
2017年8月3日
| カテゴリ: composer
PHPでComposerといえばパッケージの依存性管理を行うためのツールですが、パッケージ管理以外にオートロードの機能も備えています。
今回はcomposerを使って、何も依存パッケージを利用せず、オートロードの機能だけ利用したプログラムを作ってみます。...
[PHP]Guzzleで応答データのレスポンスボディをstring型として取得する
2017年8月2日
| カテゴリ: GuzzleHttp
PHPでのHTTPリクエストを行うライブラリにGuzzleHTTPが有ります。
GuzzleHTTPでは、通常以下のようなコードで応答テキストを出力することが多いです。
```language-php
PHPでもrange()関数を使ってみよう
2017年8月1日
| カテゴリ: PHP
pythonでは一定の回数ループさせたり、一定の範囲の数列を扱うために、range()関数があります。
pythonのプログラムでは頻繁に使われる便利な関数なのですが、実はPHPにもpythonと同様、range関数が標準で用意されています。
今回はrange関数を使っ...
[SourceTree]git管理されているフォルダを右クリックから一瞬で開く
2017年7月31日
| カテゴリ: SourceTree
Windows版のSourceTreeで、git管理されているフォルダをExplorerで開いているとき、右クリックメニューから簡単に開く方法を説明します。
## 右クリックメニューからSourceTreeで開けるようにする
SourceTreeはver2.0で大きくインターフェースが変わ...
[PHP]プログラム内でdefine定義された定数を調べる方法
2017年7月28日
| カテゴリ: PHP
PHPでは、define()関数を使用して、定数を作ることが可能です。
定数を切っておくと便利なのですが、定義の内容はシステム全体に及ぶため影響範囲を調べ辛いというデメリットもあります。
古くからあるアプリを保守する場合は、そもそも、何のdefine定...
[cmd.exe]Windowsでファイル一覧を再帰的に、コマンドラインから取得する
2017年7月26日
| カテゴリ: Windows
Linuxでは、findコマンドで特定フォルダ以下のファイル一覧を取得することができます。
今回は、Windowでの同様の処理を行う方法を説明します。
## Windowsでコマンドラインからファイル一覧を取得する
Windowsのcmd.exeでは、dirコマンドのオ...
[PHP]Slim FrameworkでGETとPOSTの両方処理できるルーティングを書く方法
2017年7月24日
| カテゴリ: SlimFramework
PHPのSlim Frameworkでは、$app->get($pattern, $callable)や、$app->post($pattern, $callable)でそれぞれGET/POSTリクエストが来た時の処理を定義することができます。
今回は、複数の種類のリクエストを一度に定義する方法をいくつか紹介します。
(...
[PHP]Slim Frameworkで302リダイレクトを行う方法
2017年7月21日
| カテゴリ: SlimFramework
PHPで利用できるマイクロフレームワークの一つに、Slim Frameworkというものがあります。今回は、Slim Frameworkで、302リダイレクトを行う方法を説明します。
Slim Frameworkでは、HTTPのリクエスト、レスポンスの情報をPSR-7の規格に準じた形で実装し...
SourceTreeで「SSHエージェント(Pageant)は起動していますが、接続に失敗しました」エラーの対処法
2017年7月19日
| カテゴリ: SourceTree
SourceTreeで、gitサーバに接続しようとすると「SSHエージェント(Pageant)は起動していますが、接続に失敗しました」エラーが出た場合の対処方法を説明します。
(確認環境:Windows 7、SourceTree 2.0.20)
(さらに…)
[PHP]composer updateでDiscard changes [y,n,v,s,?]が表示されたときの対処法
2017年7月17日
| カテゴリ: composer
Composerで`composer update`コマンドを実行したとき、下記のプロンプトを表示されて、更新作業が止まる場合があります。
```language-php
> composer update
...
Discard changes [y,n,v,s,?]
```
これは、vendorフォルダの中身をローカルで変...