VisualStudio+WinFormの環境で、AngleSharpパッケージを利用したWebページのスクレイピングを行ってみます。
## AngleSharpを使えるようにする
AngleSharpは、NuGetパッケージとして提供されているので、パッケージのインストールで導入することがで...
MySQLは、バージョン5.7からインストール直後に、rootユーザの初期パスワードとしてランダム文字列がセットされるようになりました。ですが、非対話でサーバのセットアップを行う場合、初期のパスワードがランダム文字列だと都合が悪い場合があります。
...
C#で非同期処理を行うための機能であるasync/awaitのふるまいに関する説明です。
サンプルコードを見ながら確認していきます。
## 処理に時間が掛かるメソッドHeavyFunction()を準備する
まず、処理に時間がかかるメソッドを用意します。この例で...
Linuxのシェルスクリプトで処理を自動化する時、初期パスワードをランダムな値でセットしたい場合があります。
このような場合、Linuxで用意されている/dev/urandomを利用すると便利です。
## /dev/urandomを利用したコマンドの例
以下のコマン...
Vagrant(もしくはVirtualBox)でストレージにHDDを使用していて、ランダムアクセスでの書き込みが多い使い方をしている場合にディスクのパフォーマンスが非常に悪い場合があります。
この場合、以下の手順でVirtualBoxの設定を変更し、ホストOS側のI/Oキ...
LaravelでORマッパーとして、Eloquentを使用ている場合、タイムゾーンを変更するには、config/app.phpのtimezoneを'UTC'から'Asia/Tokyo'に変更すれば、DBに登録される時刻がJSTになります。
ですが、Laravelを使わずに、Composerを使ってilluminate/da...
PHPのフレームワークLaravelに付属のEloquentでは、デフォルトでデータの登録・更新時刻をそれぞれ、created_at, updated_at列で管理してくれます。
通常はこれで問題ないのですが、履歴テーブルのようにデータの登録だけが行われ、更新されない事が事...
MySQLを使っていて、データベースをcreate databaseしたり、データベースに接続する時に、下記のエラーが出ることがあります。
```language-bash
1253 COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'utf8mb4'
```
## 原因
これは、...
PHPのフレームワークであるLaravelでは、DBアクセスを行うのにEloquentやQueryBuilderという便利なモジュールがあります。
ですが、プロジェクトによってはLaravel以外のマイクロフレームワークや、フレームワークなしの環境だけども、ORマッパーのEloq...
Linuxのコンパイル処理などで自分でMakefileを書いた時、`make clean`コマンドを実行すると、以下のようにNo such file or directoryエラーになることがあります。
```language-bash
$ make clean
rm *.o
rm: cannot remove '*.o': No such file or di...
Illuminate/DatabaseパッケージのgetQueryLog()は、実行されたSQLとパラメータに加えて、処理時間をtimeのキーで取得できます。手元の環境で1~2ぐらいの値が帰ってくるので絶対ミリ秒単位だろうと思ったのですが、気になったので調べました。
結果を先...
LinuxでMySQLを利用した開発を行っているとき、DBへの操作やバックアップはmysql/mysqldumpコマンドを利用してアクセスできます。
ですが、MySQLのバックアップや、データ集計を手元のPCでバッチ実行したい、WindowsからMySQLへコマンドラインでアクセ...
PHPのフレームワークLaravelで、フレームワークのインストールから、DBの設定とcliでのDB操作まで行ってみます。
今回、接続先のDBはVagrant上に構築したMySQLを利用しています。
VagrantでのMySQLデータベース作成は、下記の記事を参考にすると`v...
Linuxでbashスクリプトを作っていると、非対話でファイルに内容を追記したい場合があります。
echoコマンドと">>"リダイレクトを使うことで、ファイルの末尾に1行内容を追記できるのですが、複数行追記したい場合はechoコマンドが連続し読みづらくなり...
MicroSoftが提供しているエディタであるVisual Studio Code(VSCode)では、Windowsの右クリックメニューの"Open with Code"より、選択したファイルをVSCodeで開くことができます。この時、すでにVSCodeを開いているときは、起動中VSCodeの新しいタブとして...
PHPのORマッパーであるEloquentでは、データの登録時刻・更新時刻と、データの論理削除(SoftDelete)を行うときの削除時刻を自動で更新してくれる便利な機能があります。
今回は、これらの機能を最小の手間で(=Eloquentのデフォルト設定で)利用するため...
Laravel5.5で`php artisan migrate`した時に下記のエラーが発生することがあります。
```language-bash
$ php artisan migrate
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key wa...
VagrantでMySQLを起動させて3306のポートフォワーディングを行っているときに、ホストOSから接続するとHost 'gateway' is not allowedエラーが出ることがあります。
(環境によっては'gateway'ではなく、'_gateway'になる場合もあります)
エラーの内容
...
下記の内容でVagrantfileを作成して、'vagrant up'コマンドを実行すれば、MySQLサーバが構築できます。
```language-ruby
Vagrant.configure("2") do |config|
config.vm.box = "bento/centos-7.3"
config.vm.box_check_update = false
confi...
CentOSでyumの設定を変更しようとしてyum-config-managerコマンドを実行すると、command not foundエラーになることがあります。
```language-bash
$ yum-config-manager
bash: yum-config-manager: command not found
```
これは、yumのユー...
Cmderでは標準でgit for windowsが利用できるので、特別な設定を行わなくてもunix likeなコマンド一式を利用することができます。この機能は大変便利なのですが、残念なことに標準の設定だとlsコマンドを実行した時、日本語のファイル名が文字化けしてしま...
Dockerを使用していて、docker runを実行すると下記のエラーが発生することがあります。
```language-bash
> docker run
Failed to set up the root directory for shared mount propagation: Operation not permitted
```
この場合、docker ...
MySQLにSSHなどコマンドラインから接続している時に、データの傾向をつかむためにSQLだけで簡単なグラフを書く方法を説明します。
MySQLにはrepeat関数というものがあり、この関数では第二引数で指定した回数分、文字を繰り返し表示させることができま...
WindowsのSSHクライアントで有名なソフトにRLoginというものがあります。RLoginでは、Ctrl+矢印キーで現在開いている接続の複製を作ることができるという便利な機能があります。
今回は、Comderのショートカットを変更することで、RLoginと同じ操作で新...
PHPのSlim3フレームワークでslim/twig-viewパッケージを使用時、*.twigのビューファイルを変更してもブラウザで表示したときに変更内容が反映されないときがあります。これは、twigがビューのファイルを*.phpに変換した結果をキャッシュしており、元の*.tw...
PHPのパッケージマネージャであるcomposerでdump-autoloadコマンドを実行したとき、以下のように「A non-empty PSR-4 prefix must end with a namespace separator」エラーが出る場合があります
```language-php
$ composer dump-autoload
Generating...
PHPのSlim3フレームワークで、slim/twig-viewパッケージを使用時に、*.twigファイルで`{{ dump(value)}}`のようにdump関数を使おうとすると、下記のエラーになる場合があります。
```language-bash
Type: Twig_Error_Syntax
Message: Unknown "dump" fu...
phpでは、php.iniファイルの中でextensionを指定することができます。
exetensionで指定されたモジュールのバージョンを確認するには、--riオプションを使用すると便利です。
```language-bash
$php --ri memcached | grep Version
Version => 3.0.1
...
Vagrantで開発環境を作る際、諸般の事情でrootユーザがパスワード認証にによるログインを行えるようにしたい場合があります。
このような場合、Vagrantfileでrootのパスワードを自動セットさせるためには、以下のようにprovisionスクリプトを作成すれば...
Linuxでシェルスクリプトを書いているときに、存在しているファイルから空行を取り除きたい時があります。
この場合、以下のようにsedコマンドを使えば、改行を取り除いた結果を標準出力へ出すことができます。
```language-bash
sed '/^$/d' /path/t...
PHPでルーティングを行うパッケージであるnikic/FastRouteパッケージを利用して、controller-actionスタイルのルーティングを行う方法を説明します。
nikic/FastRouteパッケージは、PHP本体の開発者であるNikitaさんが開発していて、Slim3 Framework...
PHPのマイクロフレームワークであるSlim Frameworkのバージョン3.9.0が、2017/11/04にリリースされました。バージョン3.9.0での変更点は主に不具合修正で、以下のような修正が行われています。
- Requestオブジェクトに任意のHTTPメソッド名を使用でき...
PHPのviewテンプレートであるTwigを使おうとしたとき、以下のエラーが出ることがあります。
```language-php
Argument 1 passed to Twig_Filter::__construct() must be an instance of string, string given,
called in /path/to/vendor/twig/twig/...
PHPでSlim3フレームワークを使ったプロジェクトを作る場合、プロジェクト構成のひな型としてslim/slim-skeletonパッケージがあります。今回は、プロジェクトひな型として、slim-skeletonが役立つか評価したい人のため、プロジェクトを構成している全ファイ...
Cmderでは、C:\tools\cmder\config\user-aliases.cmdファイルに定義を追加することで、コマンドのエイリアスを定義することができます。
ですが、定義を追加してCmderを再起動しても、aliasが使用できない場合があります。
このような場合は、(Cmder...
この記事では、PHPでHttp通信を行うためのコンポーネントである、Guzzleを使うための手順を説明します。PHPに慣れていない人のために、PHPのパッケージマネージャであるcomposerのインストールから説明しています。
### 確認環境環境のインストール
今...
Vagrantを使って、CentOS7.3+PHP7.1環境を、素早くコマンド1つで構築する為の手順です。
## 手順
1. vagrantをインストールする
2. 下記の内容のファイルを"Vagrantfile"の名前で作る
```language-ruby
Vagrant.configure("2") do |config|...
vagrantで使用していないboxを削除するには、"vagrant box remove"コマンドを使用します。
## 操作方法
"vagrant box list"コマンドで、現在のbox一覧を確認します。
```language-bash
$vagrant box list
bento/centos-6.7 (virtualbox, 2.2.5)...
Redmineのインストールを行っていて、下記のエラーが出たので備忘録として書いておきます。
エラーが出たコマンド
```language-bash
$ bundle install --without development test rmagick --path vendor/bundle
[!] There was an error parsing `...
MySQLでrootのパスワードを忘れたときに、リセットする方法です。
mysqldを起動する時に--skip-grant-tablesオプションを使うと一時的に認証機構をOFFに出来るので、この機能を利用します。
--skip-grant-tablesオプション付きでmysqldを起動している...
Windowsのコマンドに、clipコマンドというものがあります。clipコマンドを利用すると、コマンドラインから非対話で、クリップボードに文字をセットすることができます。
下記のコマンドでは、helloという文字をクリップボードにいることができますが、...
cmderではコマンドプロンプトの文字がデフォルトでラムダ「λ」記号なのでですが、λが2byte文字たなめ、カーソルキーの上下でコマンドヒストリを表示させるときに、表示が崩れる場合があります。
そこで今回は、cmderでコマンドプロンプトをλから別の文...
Windowsのコマンドラインツールであるcmderは、インストール直後の状態では半透明のウィンドウで起動されます。
見た目は格好いいのですが、画面のキャプチャを取りたい場合、ウィンドウの後ろの内容が映り込んでしまい都合が悪い場合があります。また...
Windowsでcmd.exeの替わりに使用できるコマンドラインツールにcmderがあります。
cmderでは最初からgit for Windowsが使用でき、これに伴いLinuxのコマンド群も利用することができます。
ですが、Linuxのfindコマンドを利用しようとすると、以下のよう...
Windowsのシェルプログラムであるcmderですが、使用中に画面でCtrl-Dを押すとウィンドウが閉じてしまいます。
Ctrl-Dを押しても終了させたくない場合は、`C:\tools\cmder\config\settings`の設定ファイルを編集することでふるまいを変えることができま...
Linuxでシェルスクリプトを作っていて、変数に格納された値でURLをsedで置換したい場合があります。sedだと,sコマンドが置換なので以下のような感じで指定することが多いです。
```language-bash
#!/bin/bash
BASE_URL=http://www.example.com/
sed ...
Linuxでファイルシステムのマウント状態を確認するためのコマンドに、"mount"コマンドというものがあります。
このmountですが、単純に実行すると以下のような形で、カラム位置がそろっておらず非常に読み取りづらいです。
```language-bash
$ mount
...
loglotateコマンドを使ってログの切り替えを行うとき、以下のようにパーミッションのエラーが出る場合があります。
```language-bash
error: skipping "/var/log/foobar.log" because parent directory has insecure permissions
(It's world writable...
Linuxのサーバへsshログインした時に、下記のエラーが出る場合があります。
```language-bash
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_COLLATE: cannot c...
http://inet-ip.info/というサイトでは、特定のURLに対してHTTPリクエストを投げることで自分のPCのグローバルIPを取得することができます。
Linuxからcurlコマンドで確認する場合は以下のようにな形になります。
```language-bash
# curl http://ine...
CentOS7の環境にPHP7をインストールする場合、以下のようなコマンドを実行するかと思います。
```language-bash
sudo yum install epel-release -y
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum install --en...
2017/9/30に東京にて、OWASP World Training Tour 2017セミナーが開催されました。OWASPは、Open Web Application Security Projectの略で、セキュリティに関する診断の標準や規格などを策定している非営利組織です。
この記事では、OWASP World Traini...
phpでは、`php -l`コマンドでスクリプトにエラーがないか、構文チェックを行うことができます。
たくさんのファイルがある場合、findコマンドと組み合わせることで、指定したディレクトリ以下の全ファイルに対して、構文チェックを行えます。
下記の...
gcpの操作をcliのgcloudコマンドで行いたい場合、Linuxのシェルから実行すると成功するのに、cronで自動実行させると失敗する場合があります。
例えば、cronのスクリプトからgcloudを実行で下記のエラーが発生する場合ですが...
```language-bash
ERR...
Googleのクラウド環境であるgoogle cloud platform(gcp)では、gcloudコマンドでクラウド環境に対する操作を行うことができます。
プロジェクトの作成と課金有効化をgcloudコマンドだけで行うためには、下記の手順で作業すればよいです。
```language...
WebサーバのログにPHPMyAdminがインストールされているかスキャンしている不正なアクセスがあったのでメモ代わりに残しておきます。
以下のようにありがちなパスを片っ端にスキャンされているので、パスワードを掛けておくのは当然ですが、/phpMyAdmin...
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'`エラーが出ることがあります。
```language-bash
> dev_appserver.py app.yaml
Traceback (most recent call last):
File "C:\Users\xxx\AppData...
VisualStudio Codeでは、デフォルトでは、文字コードがUTF-8であると仮定してファイルが開かれます。
メモ帳(notepad.exe)のように、文字コードを自動認識させたい場合は、下記の設定を行えばよいです。
```language-json
{
"files.autoGuessEnc...
PHPのプログラムを実行するとUnexpected T_STRINGエラーが出る場合があります。
このエラーが出た場合にチェックするポイントを説明します。
## エラーが出た場所を確認する
以下のようにエラーが出るので、まずはこのエラーメッセージよりエラー...
投稿ナビゲーション