結局、ko.track はどこまで効くのか

knockout.js のプラグインである knockout-es5 を使用すると、双方向バインディングが利用できるようになります。入力欄の内容が ViewModel に入るだけでなく、ViewModel に代入した値が画面に反映されます。

ただ、単純に ko.track(obj) するだけだと、ViewModel の深い階層のオブジェクトに値を代入しても画面に反映されなかったり、今まで動いていたのに配列を書き換えた途端に動かなくなったりと、いまいち挙動がつかめません。一通り以下で試してみようと思います。

TypeScript でタグ付けされたTemplate literalを使う

前回の記事:JavaScript で String.format したいで、テンプレートリテラルの使い方は何となくわかりましたが、いざ TypeScript で使うぞってなったときにタグ関数の引数の型がよく分からなかったのでメモ。

JavaScript で String.format したい

他の言語とかで、軽くエラーメッセージ出したい時によく string.format を使うのですが、JavaScript には存在しません。なにかしら似たようなものはないかと Stack Overflow を覗いてみると template literal 使えばっていう回答がありました。テンプレートリテラルとは初耳なので、勉強がてらそれを使ってみることにします。

Node.js で Web スクレイピング

突然ですが、社内のシステム(Web アプリ)が非常に使いにくいです。社外から見えるのはいいけどスマホ用のデザインがないとか、API がないから自動化しにくいとか。

些細なことですが日々ストレスは溜まっていき、先日うっかり自分で作ってしまえばいいのでは?と思い立ってしまいました。ひとまず、Webアプリからデータを抜き出す部分について書き出しておこうと思います。

WordPress のビジュアルエディタでコード中の特殊文字がエスケープされる

今まで WordPress で記事を編集する際に、元に戻す(Ctrl + Z)をする度に特殊文字(> とか & とか)がエンティティ参照(&とか)に置き換わってしまいました。

調べた結果、コードを色付けしてくれる SyntaxHighlighter Evolved が原因だったようです。

取り消しを押すと・・・

特殊文字が変換されてしまう

GitLab のアップデートに失敗する(CentOS)

yum update で gitlab を更新したらエラーが出て更新できませんでした。

gitlab preinstall: Automatically backing up only the GitLab SQL database (excluding everything else!)
Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... pg_dump: [archiver (db)] connection to database "gitlabhq_production" failed: could not connect to server: そのようなファイ ルやディレクトリはありません
 Is the server running locally and accepting
 connections on Unix domain socket "/var/opt/gitlab/postgresql/.s.PGSQL.15432"?
Backup failed
[FAILED]
gitlab preinstall:
gitlab preinstall: Backup failed! If you want to skip this backup, run the following command and
gitlab preinstall: try again:
gitlab preinstall:
gitlab preinstall: sudo touch /etc/gitlab/skip-auto-migrations
gitlab preinstall:
エラー: %pre(gitlab-ce-8.16.3-ce.0.el6.x86_64) scriptlet failed, exit status 1
Error in PREIN scriptlet in rpm package gitlab-ce-8.16.3-ce.0.el6.x86_64
エラー: install: スクリプト %pre の実行に失敗しました (2)。gitlab-ce-8.16.3-ce.0.el6 をスキップします。
 Verifying : gitlab-ce-8.16.3-ce.0.el6.x86_64 1/2
gitlab-ce-8.14.3-ce.0.el6.x86_64 was supposed to be removed but is not!
 Verifying : gitlab-ce-8.14.3-ce.0.el6.x86_64 2/2

失敗:
 gitlab-ce.x86_64 0:8.14.3-ce.0.el6 gitlab-ce.x86_64 0:8.16.3-ce.0.el6

完了しました!

array.length === 0 がマジックナンバーだよって lint に怒られる

Node.js 使い始めて数カ月がたちます。今まではブラウザで動く、生の JavaScript しか書いたことないので、覚えることが多くて困っています。最近はテストの自動化に手を付け始めて、テスト自動化のついでに eslint も導入してみたのですが、エラーが出まくる出まくる・・・。(300行くらいでエラー200件)

基本は簡単につぶせるのですが困ったのが次の2つ。

Ruby + WebDriver で画面全体のスクショをとる

Selenium で Chrome の Web Driver を用いてスクリーンショットをとると、画面に表示されている部分のみのスクショが撮影されます。画面全体のスクショをとるには、頑張って画面をスクロールして何回かに分けて画像を撮り、それを結合する必要があります。