Goでis-a関係を作る

Go

Goには継承はなく、実装の再利用は構造体の埋め込みで行う。じっさいは委譲だが、見た目はオブジェクト指向言語で継承した場合のように使える。 package main type Super struct {} func (super Super) SuperMethod() {} type Sub struct {Super} func main(…

PHPで例外を出力するときにわざわざgetMessage()を使う必要はない

PHP

たまに見かけるので。 こんな感じにすれば__toString()が自動的に呼ばれる。エラーメッセージとスタックトレースの両方がついたいい感じの出力になる。

Nginxで権限があるはずなのにポートをバインドできない

ちょっと必要があって、Nginxを8000番で動かそうとしたらなぜかエラーが出た。1023までのポートならともかく8000だし、そもそもroot権限で動かしてるのに。 nginx: [emerg] bind() to 0.0.0.0:8000 failed (13: Permission denied) Permission deniedと来た…

WindowsでMercurialが死んでた件

5.0.2で以下のようなエラーが出た。Python 3が別途入ってたからそのせいかと思ってPATHいじったりアンインストールしてみたりしたが駄目。 仕方ないので一応安全そうなところから4.9.1をダウンロードして入れてみたら動いたっぽい。 ちなみにChocolateyで定…

Laravelでドキュメントルートに静的ファイルを混在させる方法

作ったシステムに後から静的ページを追加したい、みたいな要望にどう対応すればいいだろうか。「有料です」で済ませたいところだが、なかなかそうも行かない場合も多い。 古のCGI/PHP環境でやってきたクライアントにとっては、既存のファイルと無関係なとこ…

LaravelでAuth系のコントローラが最初から存在するのはなぜか

ご存知の通りLaravelではartisan make:authすることでいくつかのファイルが生成・変更され、デフォルトの認証関係の機能を有効にできる。 だが、じつはこれを実行しなくとも、最初からApp\Http\Controllers\Auth\LoginControllerをはじめとする各種コントロ…

ChocolateyでStrawberry Perlが更新できない

chocolatey upgrade strawberryperlすると、 WARNING: Generic MSI Error. This is a local environment error, not an issue with a package or the MSI itself - it could mean a pending reboot is necessary prior to install or something else (like t…

Tridactylでデフォルトのsearchurlsのキーワードを無効にする

Tridactylではデフォルトで各種キーワードでの検索が設定されている。が、キーワードが名前そのままなので、キーワードと同じ単語を検索したい場合につらい。ので無効にしたいのだが、しばらくやり方がわからず、試行錯誤の末最近ようやくわかったので共有す…

Google Chartsで列に有効なデータがある場合は問題ないのにない場合にエラーになる件

var data = google.visualization.arrayToDataTable([ ['date', 'number'], ['2019-05-13', 1], ['2019-05-14', 2], ['2019-05-15', null] ]); では問題ないのに、 var data = google.visualization.arrayToDataTable([ ['date', 'number'], ['2019-05-13', …

Eloquentのwhen()で、偽になる可能性のある値の存在を条件に検索する

Eloquentというかクエリビルダ側の機能だけどまあ。 when()はこのように使うことができ、条件分岐を何度も何度も書かなくて済む。 when($condition['cond_1'] ?? false, function ($query, $cond_1) { $query->where('cond_1', $cond_1); }); }…

ASUSのノートPCを修理に出したメモ

購入から一年後くらいからSSDの認識が怪しくなってきて、一度治ったかのように見えたものの数ヶ月後完全に駄目になったので修理に出した。ASUSのサポートセンターに直接。 こういうのって具体的にどういうフローになるのか、どれくらいかかるかなどわかりに…

ngrokでWordPress製のサイトを公開する

ご存知の通りWordPressはドメイン名をデータベースに入れたりデータベースに入れたりしてるので、ngrokで動かせるようにするのはちょっとやっかい。 なのでどうするか。まあ公式ドキュメントに書いてある。 ngrok – documentation なお既存の記事などのデー…

ngrokで"online ngrok process", "tunnels/ngrok process"はなにを指すか

"online ngrok process"は有効なngrokコマンドの数、"tunnels/ngrok process"はngrokによって転送(トンネル)されているポート数、と考えてよさそう。 つまり、無料版 1 online ngrok process 4 tunnels/ngrok process ngrok - secure introspectable tunnels…

Laravelのartisanのzsh補完書いた

サブコマンドの補完はあったんだけど、ちゃんとオプションの補完までしてくれるのがないので自分で書いてみた。zshわからんしcompsysわからんし、そもそもシェルスクリプトさっぱりなので大変苦労したが、まあ使えるものになってきたので公開。 サブコマンド…

Accessの日付処理はWindowsのロケール設定に依存しているが不完全なので問題を回避できない場合があるっぽい?

もう手もとにOffice 365 Soloなくて(仕事終わったんで解約した)、検証できないのでいろいろアレだけど一応書いておく。 AccessでGUIから日付を取得しようとすると、Windowsのロケールに依存した形式で返ってくるようなのだが、これを適切に取り扱う方法がな…

VirtualBoxで、仮想アプライアンスのエクスポートをCLIでやる

半分くらいまで手動で(GUIで)やってからふと思い付いて調べたら、やっぱりできた。 VBoxManage list vms で名前取って、VBoxManage export <NAME> -o <NAME>.ova みたいな。 拡張子でエクスポートするファイルタイプを指定する形っぽい。.ovfで指定したら.vmdkもいっしょ</name></name>…

2018年に買ってよかったもの5つ

コーヒーメーカーとコーヒーミルと、水出しアイスコーヒー用のボトル コーヒーメーカーは象印のEC-GB40ていう安いやつ。ドリップでそこまで味変わらんだろうと思ったので、ちゃんとしたドリッパーではなくコーヒーメーカー。じっさいそれで特に問題なくおい…

Laravelでinput:checkboxのデフォルトでのチェックを実装する

ご存知の通りHTMLの仕様バグによりinput:checkboxは未チェック時、nameも送ってくれない。通常なら以下のようにして、フォームエラー時の再チェックを実装する。 <input type="checkbox" name="example" value="1" {!! old('example') == 1 ? 'checked="checked" : '' !!}> デフォルトが未チェックであればこれで問題ないが、デフォルトでチェック状態にしたい場合は…

Laravel Mixというかwebpackのコンパイルが、productionで重い件メモ

前提として、CSSはデフォルトにプラスα程度でデフォルトで入ってるBootstrapが重いく らい、JavaScriptが、Bootstrap入ってるファイルが別々に2つあってこっちが割と重い。 初回で13秒程度、変更検知でのコンパイルが6秒ほど。 一応developmentだと4秒未満、…

LaravelのViewのキャッシュの仕様

前の記事でBlade::setEchoFormat()の挙動を確認していたときに、思うように反映されず、キャッシュかなあと思ったらキャッシュが原因だったということがあったので、Viewのキャッシュ周りの仕様を簡単に調べてみた。 結論から書くと、Viewのキャッシュは設定…

LaravelのBladeで{{ csrf_field() }}が通る理由

なにかの間違えで、{{ csrf_field() }}と書いていたんだけどそれが通るということがあって、{{ ... }}の仕様どうなってるのかなと思い確認した。 {{ ... }}は紆余曲折を経て、に変換されていた。e()はPHPerなら予想がつくだろう通りhtmlspecialchars()のラッ…

ブギーポップ新アニメ2話まで見ての雑な感想

わざわざ書くまでもないかと思ってたけど原作好きだった人どころか原作読んだことある人の感想もろくにないので、雑に書く。 いろいろ思うところはあるけど、今更でもやってくれただけでもよかったかな。ジョジョみたいに、原作から十年二十年経ってフルサイ…

PHP 7.3.0をCentOS 7でビルドする

PHP

phpenv経由でphp-buildで。すると、 configure: error: Please reinstall the libzip distribution と言われるのでsudo yum install libzip. だが入れても言ってくるので、libzip-develも入れてみる。すると今度は、 configure: error: system libzip must b…

2018年後半に読んだ本

これ前半後半で分ける必要あった? 後半の方が多かったかな。行動経済学やそれに近い心理学系のや、まあなんかその辺が中心。 割とよい本多くてどれをおすすめするか難しいが、学習に関して「Learn Better」や、風邪に関して「かぜの科学」、睡眠に関して「…

2018年前半に読んだ本

去年は割とノンフィクションの本を読めた。60冊弱くらい。その9割くらい、Twitterで雑な感想書いてあったのでまとめる。 前半は割と軽いものを読んでいた。コーヒーにはまったのでそれ関係が多かった。 この中で一冊挙げるなら、「マネージャーの最も大切な…

Laravel Mixというかwebpackでconsole.log()が消えないようにする

追記 Laravel Mixとwebpackのどっちが犯人なのか探ってたら、Laravel Mixが犯人であること、さらにじつはもうdrop_consoleがデフォルトで無効になっていることに気付いた。 Remove drop_console option · JeffreyWay/laravel-mix@a9d2646 · GitHub というこ…

Laravel 5.6.27以降でログアウト後のリダイレクト先を変更したいなら、logout()ではなくloggedOut()をオーバーライドする

5.7で開発中なんだが、ログアウト後のリダイレクト先を変更するのどうしたらいいか調べてたら、ソースコードを読む感じIlluminate\Foundation\Auth\AuthenticatesUsersのloggedOut()をオーバーライドするのがよさそうだったのだが、ググると同じクラスのlogo…

LaravelのAuth::routes()で一部機能(ルート)を無効にする

Auth::routes()の本体である、Illuminate\Routing\Router::auth()を確認してて気付いたのでメモ。 false, 'reset' => false, ]); # ... これで新規登録とパスワードリセットが無効にできる。管理者だけが扱うようなアプリケーションでは使いそう。 まあ、ド…

Composerのディレクトリが~/.config/composer以下になる場合

CentOS 7環境で、新規案件のためにLaravel入れたのだがlaravelコマンドが入ってない。~/.composer/vendor/binにパスは通ってるのになあ、とよく見てみると、~/.composer/vendor/bin自体がなかった。 もうちょっと調べてみると、~/.config/composerというのが…

GitHubの公開鍵が勝手に消えていた件

Ansibleのauthorized_keyでGitHubの自分の公開鍵を指定するみたいな使い方してたので気付いたんだけど、昨日、登録していた公開鍵(1つ中1つ)が消えていたっぽい。 身に覚えはなく、ブラウザ履歴や作業ログで消えた時間帯を確認してみても、やっぱりその時間…