ログ日記

作業ログと日記とメモ

Debian の Let's Encrypt (certbot) を --preferred-chain オプション対応済みのバージョンにしてDST Root CA X3を指定する

2020年9月末でAndroid 7.1以下でSSLが使えなくなるらしいので。 以下はDebian 10 Busterの環境だけれども、stretchでもCentOSでも内容はほとんど同じはず。songmu.jp community.letsencrypt.orgバージョン 1.6.0から --preferred-chain オプションで有効期限…

テンプレートエンジンを使うのをやめたい

PHP

BladeOneをアップデートしたら、include時の変数割り当てのフローが変わったのか、既存変数が上書きされてエラーが出るようになってしまった。 本家Bladeではこういったことは起きない? 仕方がないのでバージョン固定した。ソースを追っても何となく不毛な…

開発マシンの Debian stretch を buster にアップグレードする

GUIで使っていてOfficeやらGHCやら色々入っている。PHP5も入っている。 Dockerもsystemd-nspawnコンテナも入っている。 かなり躊躇していたが、そろそろアップグレードする。 サーバーで使っている Debian を buster にアップグレードしたログ - ログ日記 CU…

PHPStanのextensionでnamespace・class名の依存関係チェックする

前に書いた記事 DDDのさわりをやろうとした - ログ日記 ここで作ろうと思っていた拡張を作った。 github.comサンプル。 https://github.com/nishimura/phpstan-namespace-dependency-sample 実際に作ってみると、各レイヤーごとの依存関係の認識が曖昧なこと…

PHPの開発環境とライブラリと振り返りと近況

昔のコードを触る機会があった。 PHPの自作フレームワーク現状まとめ - ログ日記 この辺のやつ。 もう7年も前か…。当時はテンプレートエンジンに変数を渡す場合、アクションコントローラーでメソッドを呼び出すのが流行っていた。 set('foo', 1); } } や foo…

Debian Buster に Cacti をインストールする

ログをElasticSearch+Kibanaに集約したり、Prometheus を使ってみたりしたけれども、普通にサーバーのログファイル+Cactiに戻ってきた。最近の流行は大量のサーバーとか大量のコンテナとかがメインターゲットなんだね。 普通に数台〜十数台のコンテナでは…

プログラムの分け方とディレクトリ構造

最近、プログラムのディレクトリレイアウトというかファイルを置く場所を変えようと試みている。 旧来のMVC的な構造だと、ControllerやModelのディレクトリを分ける、レイヤーごとにまとめる、という感じになると思う。 商品情報表示画面、その管理画面、CSV…

Debian stretch で MySQL 5.6 のアップグレード

本家のリポジトリを使ったMySQLの5.6.47 から 5.6.48 のアップグレードが失敗する。 /usr/bin/mysqld_safe のスクリプトが間違っているっぽい。 データディレクトリが /usr/data になってしまう。 OSもMySQLも古いバージョンだから、メンテされていないのか…

PHPStan バージョン0.12.24から PDOStatementが Traversable でなくなってしまった件

ジェネリクスの実装が @implements Traversable<array<int|string, mixed>>で固定されるようになった。FETCH_CLASSとジェネリクスを組み合わせていい感じにマッピングする方法が使えなくなって、ちょっとめんどくなってしまった。 都度 @var が必要になる。一応報告しておいたけど。 h</array<int|string,>…

Let's Encryptで後からサブドメインを変更する

既に取得済みのSSLに、後からサブドメインを追加したくなった場合。削除して再取得するしかないのかなと思ったけど、ドメイン名 common name の更新もできるようだ。 github.com certbot certonly --force-renew --cert-name example.com -d example.com -d …

DDDのさわりをやろうとした

PHP

ちょっと一部だけ複雑なプログラムがあったので、PHPでDDDっぽいオブジェクト指向をやろうとした。 なかなか大変だった。 まず静的解析による型チェックは必須。 型が自動でチェックされないDDDは、適当に書き捨てたプログラムより分かりにくくなると思った…

PHPStan が早い

PHPStanのデフォルトのルールを変更したくて、どうすれば良いか分からなかった。 デフォルトの config.neon を変更する方法を教えてってissueに書いたら10分後に返信来た。 scopeClassを変更すればgetType()で何でもできるよ、でも全体で一つの拡張しか使え…

DBでSQLのテーブル名に別名を付けるときのルールと複数形

SQL

データベースのテーブル名を複数形にするかどうか、作るたびに悩む。 Qiita の記事 https://qiita.com/siinai/items/d4274c95fcdde3fd7295 のコメント欄に良いリンクがあった。 SELECT id, name, description FROM products product WHERE product.name = ‘f…

検索エンジンとSNSが合体した全文検索エンジンが欲しい

ブックマークしたページから数回層だけリンクをたどって後で検索できるようなものはないだろうか。スコア計算はGoogle以前のものでもいい。 キーワードの回数、割合、単語の近さとか。 URL スコア 巡回リンク階層 https://news.yahoo.co.jp/ 2 5 https://b.h…

サーバーで使っている Debian を buster にアップグレードしたログ

ひとまずPHP、PostgreSQL、MySQL、Rails(Redmine)、Apache が入っているstretchのサーバーをアップグレードする。第4章 Debian 9 (stretch) からのアップグレード まずPHP7とPostgreSQLのために使っていたリポジトリをコメントアウト。Dockerも # php7.1 #…

Google Closure Library の UI と調べもの

What UI rendering systems are used by Google with closure library, and why are these not open source? goog.ui.* は古いまま更新されていない。 最近のGoogleのサービスのUIはオープンソース化されていない。 Touch support for goog.ui.menu? goog.ui…

Redmineのガントチャートを画面いっぱいに表示する

RedmineのガントチャートはPDFとpngでダウンロードできるけど、結局Webをスクリーンショットするのが一番綺麗なので。 $('#wrapper').css({'overflow': 'visible'}); $('#sidebar').hide(); $('#content').css({'width': 'auto'}); $('#gantt_area').css({'o…

タスク管理ツールRepsonaに登録してみた感想メモ

これを読んだ。 note.muタスク管理ツールって理想のものが全然なくて自作しがちだよね…と思いながら。 度々調べるけど良いものがなくて、たぶん欲しい機能があるものはMS Projectになる。でも大規模用すぎるので他を探すことになる。repsona.com使ってみた(…

GHCJS + Template Haskell でハングアップ

GHC

hangs when linking Template Haskell 8.0/8.2 · Issue #668 · ghcjs/ghcjs · GitHub このissueは見てたはずなんだけど、流し読みしていて頭に入ってなかった。実際にTemplate Haskellを使ってみると問題が起きた。なので再インストールする。 その前に、 ht…

GitHub Pull Request ではなく git request-pull

Git

Linus が Git comes with a nice pull-request generation module, but github instead decided to replace it with their own totally inferior version. https://github.com/torvalds/linux/pull/17#issuecomment-5654674 Gitにはniceな pull-requestモジ…

GHCJS + Jsaddle

GHC

Jsaddleを動くようにした。 昨日書いた https://n314.hatenablog.com/entry/2019/06/06/210731 スタブはあまり意味はなかった。 理解は進んだけども。 webkit.idl などのWebIDLにDOMの定義があるから、そこから自動生成しているっぽい。 ということは、基本…

GHC8.4とGHCJS

GHC

github.com ここのコメントにDockerを置いてくれている人が居る。 tarをダウンロードして、stack.yamlを書いて、stack setupしてみる。 .stack-work/dist/x86_64-linux/Cabal-2.2.0.1/build/Parser.hs:1445:48: error Parser.hs" "Not in scope: type variab…

GHCJSのスタブを使うのは大変っぽい

GHC

昨日のghc-base-stubを使う方式だと上手くいかなかった。 GHCJSに再度トライ - ログ日記 例えばghcjs-domを使いたい場合、GHCJSだと ghcjs-dom, ghcjs-dom-jsffi を使うところが GHC版だと ghcjs-base-stub, ghcjs-dom, ghcjs-dom-jsaddle, jsaddle-dom, jsa…

PostgreSQLでビューを使う時の最適化

ちょっと簡単なサンプルが思い付かないけど。 joinが大量にある巨大なビューから少ない件数のデータを取得する場合。ビュー単体でselectしたら全てインデックススキャンになるようにしていて select * from large_large_view where large_large_view.post_id…

GHCJSに再度トライ

stack new myghcjs cd myghcjs myghcjs.cabal の 各build-depends に追加 if impl(ghcjs) build-depends: ghcjs-base if !impl(ghcjs) build-depends: ghcjs-base-stubjs.yaml resolver: lts-8.11 compiler: ghcjs-0.2.1.9008011_ghc-8.0.2 compiler-check: …

Hasteを試したログ

GHCJSの重さが気になっていたところで、こんな記事を見かけた。 qiita.com Hasteが良さそうなので試してみる。 Hasteのプロジェクトの作り方は stack new した後に stackoverflow.com 該当箇所をここの設定に書き換える。 % stack exec haste-boot ... Insta…

GHCJSを使えるようにしたログ

github.comソースからのインストールは出来たんだけど、それをstackで使う方法が分からなかった。 エラーがややこしいので元々入っているcabalを消したりhaskell-platformを消したりしてstackだけ動いている状態にして試した。 コンパイルが1時間近くかかる…

emacs-purpose(window-purpose)でバッファを開くウィンドウを目的(モード、ディレクトリ)ごとに固定する

昨日の続き。 Emacsの使い方を変えようとして無理だった - ログ日記 似たような質問を発見した。 stackoverflow.com この人は .c と .h でウィンドウを固定したかったみたい。ここでは buffer-stack が挙げられている。 これも少し使ってみたけれど、まあそ…

Emacsの使い方を変えようとして無理だった

Emacsのウィンドウまたはフレームごとにバッファリストを分けたい。 色々調べたけれど無理そう。 stackoverflow.com ここの3番目の答えにあるように、自分の使い方としては昔から emacs &で別々のEmacsを立ち上げていた。 例えばユーザーのマイページを作る…

Closure Compiler の出力するJavaScriptを ES5(旧)とES6(新)で比べる

ふと、ES6よりES5で書いた方が軽くなるかと思ったので疑問を解消するために確かめる。 ※ ES5、ES6と書きつつ、単に書き方の違いの調査になってきたので新・旧とする。 Closure Compiler と Closure Libraryをダウンロードする。 wget https://dl.google.com/…