ログ日記

作業ログと日記とメモ

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が一つの場合 選ぶ余地もなく --network-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…

CourseraのGoogleのやつを一つやった

www.coursera.orgすぐできるかと思ったらめっちゃ時間かかった…。 7〜8時間のうち休憩100分程度、一週間分と考えたらこんなもんなのか。 最初は律儀にビデオ見てたけど、しんどいから字幕を翻訳して読みつつ、ビデオはスライドのようにして見てた。 実際にGC…

ImageMagickで縦横比を維持したまま画像をリサイズして左右に余白を追加する

convertのオプションが多くて複数回実行する必要があるみたいな記事もあるけど http://imagemagick.org/discourse-server/viewtopic.php?t=11525 convert -size 400x600 xc:white page.jpgs -gravity center -composite output.jpgsこれを少し変えて convert…

CSRFのトークンはワンタイム?

今更な話なんだけど、トークンってワンタイムの必要あるんだっけ?と思ったのでメモ。 http://takagi-hiromitsu.jp/diary/20060409.html https://blog.tokumaru.org/2011/01/anti-csrf-onetime-token-failure-case.html この辺が話題になってたのって10年〜5…

Debian stretch に Kubernetes をインストール

Docker Swarm は普通に動くようだったので Kubernetesも試した。 エラーでなかなか進まず色々試してたら汚れてきたのでカッとなってVMwareで新しい環境を作ってテストした。 テストだからって普段使いのLinuxで試さない方が良さそう。 taskselで全部のチェッ…

Debian stretch で docker-machine

docker-machineのコマンドではdockerを自動インストールできない。 こういうことを自動的にやってもらうためにdocker-machineを使うと思っていたんだが…。 https://docs.docker.com/install/linux/docker-ce/debian/ apt-get install \ apt-transport-https …

Debian stretch で tsung

だいたい https://qiita.com/nishimura/items/f3ba8e051e2983ff743b ここの通りでいいんだけど、パッケージのパス設定が色々壊れている。 普通に実行すると Starting Tsung Log directory is: /home/user/.tsung/log/20180814-1449 Can't start ! {error, {{…

Chrome拡張のトップレベルでawaitしたいけど出来ないっぽい

例えばbackground.js のトップレベルで chrome.storage.sync.get を待つために await すると定形通りのエラーになる。 Uncaught SyntaxError: await is only valid in async functionまあそうだよね。 オプション画面で設定した値を使ってイベント登録したい…

現在見ているページに関連するRedmineのチケット一覧を表示するChrome拡張機能「Related Redmine」

Chrome拡張のページ: https://chrome.google.com/webstore/detail/related-redmine/kmgkdpnmpjmncggngjcinmkfacbgaecj 画像は、バグったよーっていうGmailのURLに反応してチケット一覧を出す例。 設定例 https://github.com/nishimura/related-redmine 設定…

extension の Event Page を手動で無効にする

Event Page が無効になった時のテストをしたい。 chrome.webNavigation.onReferenceFragmentUpdated.addListenerで登録した関数は、無効のときはどのように動くのか?など。 https://stackoverflow.com/questions/17808135/chrome-extension-onsuspend-is-ne…

Debian9にRedmineを入れるメモ

Redmineインストール Wikiに書いてある通りにやるだけで、特に問題なくいける。バージョンは最新のものにする。 https://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_on_Debian_9 以前は専用ユーザー作ったりホームディレクトリのpublicに…

git-flowって結構使われてるんだなとブコメ見て思った

Git

GitFlowをやめて本番リリースが楽になった話 ここ。 なんか全然想像できないんだけど、最終確認者がお客さんとか技術に詳しくない社長とか偉い人だとすると 「feature/1 作ったので http://feature1.example.com/ 見てくださいー」 「feature/2 作ったので h…

MacBook Pro 2017 15inch の Touch Bar が壊れた

Mac

Touch Bar の表示が三原色の横線の表示になって、ちょっと乱れたとかじゃなくて完全に表示不能になった。 VMware Fusion を使っていたときに急になって、何かバグ的なものかと思って再起動したけど直らなかった。 USBや電源を抜いて電源オフしてしばらく待っ…