VisualStudio+WinFormの環境で、AngleSharpパッケージを利用したWebページのスクレイピングを行ってみます。 ## AngleSharpを使えるようにする AngleSharpは、NuGetパッケージとして提供されているので、パッケージのインストールで導入することがで...


MySQLは、バージョン5.7からインストール直後に、rootユーザの初期パスワードとしてランダム文字列がセットされるようになりました。ですが、非対話でサーバのセットアップを行う場合、初期のパスワードがランダム文字列だと都合が悪い場合があります。 ...


[C#]async, awaitの使い方を正しく理解する

2017年11月18日 | カテゴリ: C# | タグ:
C#で非同期処理を行うための機能であるasync/awaitのふるまいに関する説明です。 サンプルコードを見ながら確認していきます。 ## 処理に時間が掛かるメソッドHeavyFunction()を準備する まず、処理に時間がかかるメソッドを用意します。この例で...


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...


LinuxでMySQLを利用した開発を行っているとき、DBへの操作やバックアップはmysql/mysqldumpコマンドを利用してアクセスできます。 ですが、MySQLのバックアップや、データ集計を手元のPCでバッチ実行したい、WindowsからMySQLへコマンドラインでアクセ...


Linuxでbashスクリプトを作っていると、非対話でファイルに内容を追記したい場合があります。 echoコマンドと">>"リダイレクトを使うことで、ファイルの末尾に1行内容を追記できるのですが、複数行追記したい場合はechoコマンドが連続し読みづらくなり...


[PHP]Eloquentで日付に関する列定義の命名規則

2017年11月13日 | カテゴリ: PHP | タグ: ,
PHPのORマッパーであるEloquentでは、データの登録時刻・更新時刻と、データの論理削除(SoftDelete)を行うときの削除時刻を自動で更新してくれる便利な機能があります。 今回は、これらの機能を最小の手間で(=Eloquentのデフォルト設定で)利用するため...


Cmderでは標準でgit for windowsが利用できるので、特別な設定を行わなくてもunix likeなコマンド一式を利用することができます。この機能は大変便利なのですが、残念なことに標準の設定だとlsコマンドを実行した時、日本語のファイル名が文字化けしてしま...


MySQLにSSHなどコマンドラインから接続している時に、データの傾向をつかむためにSQLだけで簡単なグラフを書く方法を説明します。 MySQLにはrepeat関数というものがあり、この関数では第二引数で指定した回数分、文字を繰り返し表示させることができま...


WindowsのSSHクライアントで有名なソフトにRLoginというものがあります。RLoginでは、Ctrl+矢印キーで現在開いている接続の複製を作ることができるという便利な機能があります。 今回は、Comderのショートカットを変更することで、RLoginと同じ操作で新...


PHPのSlim3フレームワークでslim/twig-viewパッケージを使用時、*.twigのビューファイルを変更してもブラウザで表示したときに変更内容が反映されないときがあります。これは、twigがビューのファイルを*.phpに変換した結果をキャッシュしており、元の*.tw...


[Linux]ファイルから改行を除く方法

2017年11月7日 | カテゴリ: Linux | タグ:
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メソッド名を使用でき...


Cmderでは、C:\tools\cmder\config\user-aliases.cmdファイルに定義を追加することで、コマンドのエイリアスを定義することができます。 ですが、定義を追加してCmderを再起動しても、aliasが使用できない場合があります。 このような場合は、(Cmder...


この記事では、PHPでHttp通信を行うためのコンポーネントである、Guzzleを使うための手順を説明します。PHPに慣れていない人のために、PHPのパッケージマネージャであるcomposerのインストールから説明しています。 ### 確認環境環境のインストール 今...


vagrantで使用していないboxを削除するには、"vagrant box remove"コマンドを使用します。 ## 操作方法 "vagrant box list"コマンドで、現在のbox一覧を確認します。 ```language-bash $vagrant box list bento/centos-6.7 (virtualbox, 2.2.5)...


MySQLでrootのパスワードを忘れたときに、リセットする方法です。 mysqldを起動する時に--skip-grant-tablesオプションを使うと一時的に認証機構をOFFに出来るので、この機能を利用します。 --skip-grant-tablesオプション付きでmysqldを起動している...


Windowsのコマンドに、clipコマンドというものがあります。clipコマンドを利用すると、コマンドラインから非対話で、クリップボードに文字をセットすることができます。 下記のコマンドでは、helloという文字をクリップボードにいることができますが、...


cmderではコマンドプロンプトの文字がデフォルトでラムダ「λ」記号なのでですが、λが2byte文字たなめ、カーソルキーの上下でコマンドヒストリを表示させるときに、表示が崩れる場合があります。 そこで今回は、cmderでコマンドプロンプトをλから別の文...


[cmder]ウィンドウを半透明にさせない方法

2017年10月20日 | カテゴリ: Windows | タグ:
Windowsのコマンドラインツールであるcmderは、インストール直後の状態では半透明のウィンドウで起動されます。 見た目は格好いいのですが、画面のキャプチャを取りたい場合、ウィンドウの後ろの内容が映り込んでしまい都合が悪い場合があります。また...


Windowsのシェルプログラムであるcmderですが、使用中に画面でCtrl-Dを押すとウィンドウが閉じてしまいます。 Ctrl-Dを押しても終了させたくない場合は、`C:\tools\cmder\config\settings`の設定ファイルを編集することでふるまいを変えることができま...


Linuxでファイルシステムのマウント状態を確認するためのコマンドに、"mount"コマンドというものがあります。 このmountですが、単純に実行すると以下のような形で、カラム位置がそろっておらず非常に読み取りづらいです。 ```language-bash $ mount ...


gcpの操作をcliのgcloudコマンドで行いたい場合、Linuxのシェルから実行すると成功するのに、cronで自動実行させると失敗する場合があります。 例えば、cronのスクリプトからgcloudを実行で下記のエラーが発生する場合ですが... ```language-bash ERR...


WebサーバのログにPHPMyAdminがインストールされているかスキャンしている不正なアクセスがあったのでメモ代わりに残しておきます。 以下のようにありがちなパスを片っ端にスキャンされているので、パスワードを掛けておくのは当然ですが、/phpMyAdmin...


VisualStudio Codeでは、デフォルトでは、文字コードがUTF-8であると仮定してファイルが開かれます。 メモ帳(notepad.exe)のように、文字コードを自動認識させたい場合は、下記の設定を行えばよいです。 ```language-json { "files.autoGuessEnc...


PHPのプログラムを実行するとUnexpected T_STRINGエラーが出る場合があります。 このエラーが出た場合にチェックするポイントを説明します。 ## エラーが出た場所を確認する 以下のようにエラーが出るので、まずはこのエラーメッセージよりエラー...