ログ日記

作業ログと日記とメモ

PHPStan が早い

PHP

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/…

Kensington Expert Mouse を分解して断線を修理した

ExpertMouseが切れたりついたりして、仮想マシンの「どちらに接続しますなか?」が何度も出るようになったので直すことにする。 断線?というか接触不良的なやつ。 どうもコードがマウスに収納されていく部分が怪しくて、そこを持ってぐねぐね動かすとランプ…

フラッシュセッションにハマる

PHP

前にも同じ問題でハマったのに忘れていて再びハマったメモ。 リダイレクト前にセッションに値を保存して、リダイレクト後のページで取り出して、削除するような一度だけ使うセッション変数にはフラッシュセッションを使う。 セッション系ライブラリには大抵 …

macOS Mojave にアップグレードしたらVMware Fusionがプチフリするようになった

Mac

High Sierra の時も問題があったので、今回も何か挙動が変になることがあるだろうなーと思っていたらやっぱり問題が起きた。 ブラウザの新規ウィンドウを立ち上げたり画面遷移しただけで5〜10秒ほどフリーズするようになった。 VMware Fusion 設定の詳細の「…

スタートアップがPHPを使っていると聞いた話

PHP

この前、外国のスタートアップをやっている人にサービスを見せてもらった。 Qiitaによく書かれているような新しめのフロントエンドの技術盛り沢山で、クラウドや聞いたことのないようなサービスからTrelloのような知っているサービスなど色々使いつつ、なん…

さくらクラウドでsystemd-nspawnを使う場合のネットワーク設定

IPが一つの場合 選ぶ余地もなく --netowrk-veth のプライベートネットワーク。 /etc/systemd/nspawn/guest1.nspawn などのファイルに [Network] Port=80:80と書くと元々あったIPマスカレードに加えてポートフォワードが設定されるので、ポート競合が起きない…

ローカルでDocker を使って GitLab CIを設定するのは鬼門だった

普通に公開用のドメインでやるより相当ハードルが高かった。というか一部動かず解決しなかった。 docker-compose.yml の名前で解決できることと出来ないことがある CIでDockerを走らせる場合は、(GitLabを立ち上げる docker-compose.ymlではなく)GitLab Run…

ローカル仮想マシンのDockerでも簡単にLet's Encryptを使いたい

今まではLet's Encryptで local.example.com とかのグローバルサブドメインを設定して、それをrsyncで持ってきてローカル用に使ってた。 これを自動化する。test.example.comドメインに対する test.local.example.com は空でいい。 version: '3' services: p…

/etc/hosts のドメイン省略形は後ろに書かなければならない

初めて知った。というか前に書いて不具合が出た。 何となく習慣で 127.0.0.1 host1.example.com host1って書いてたけど、Ansibleで設定していたときに 127.0.0.1 host1 host1.example.comと書いていた。 そうすると hostname -f で正しくドメインが引けない…

さくらクラウドでbrctlなどでeth0にブリッジする(失敗)

[追記] 下の設定は意味がなかった。 ブリッジに新しいNICを接続するとき、やはり別のMACアドレスが必要になる。 でもそのMACアドレスでは外に出れないので、ローカルネットワークと同じような状態になって意味がない…。ブリッジに接続する新しいNICまで同じM…

debian9 の systemd-nspawnでdockerを動かす準備

デフォルトの設定では動かなかったので調べる。 https://wiki.archlinux.org/index.php/systemd-nspawn#Run_docker_in_systemd-nspawn 権限の設定が必要な模様。 それでもエラーが出たので、systemd-nspawnコマンドで起動してみる。 SystemCallFilterは --sy…

VagrantとAnsibleを使って仮想マシンでsystemd-nspawnを使えるようにする

https://github.com/nishimura/vagrant-systemd-nspawn.git ここに置いた。 Macでの環境。 Vagrant 2.0.1 ansible 2.6.4 VirtualBox 5.1.28 VMware Fusion 10.1.3 以前使ったときに vagrant plugin install vagrant-hostsupdater vagrant plugin install vag…