Clojureのインストール Using Brew

2011年にプログラミング言語の1つであるClojure入門しようとしたけど、時間だけが過ぎていた。こんどこそは入門しようと思い、Mac(high sirrera)にClojureをインストールした。

Javaのインストール

$ brew cask install java

Clojureのインストール

$ brew install clojure

Clojureの起動

$ clj
user=> (reverse "Hello World!")
(\! \d \l \r \o \W \space \o \l \l \e \H)

artisan.hatenablog.com

Day One ClassicでDropboxと同期できなくなった

最強の日記アプリと誉れ高いDay One。これまで日記のデータをDropboxに保存し、複数デバイスで同期して利用していたが、気づいたら同期出来なくなっていた。なんでろうと思ったら、サポートに記載あった。

Syncing with Dropbox in Day One Classic | Day One Help

  • 2017年9月28日に、DropboxがDay Oneとデータを同期できるAPIを廃止
  • Day One Classicは2016年3月でサポート終了したため、対応せず

とりあえず、暫定対策としてiCloudで同期して利用している。そろそろDay One 2へ移行する必要があるかもしれない。

apt-get installでインストールしたパッケージに含まれるファイル一覧を表示させる

dpkg-query -L <package_name> を利用する。 UbuntuなどのDebian系のディストリビューションで利用可能。

# dpkg-query -L mecab    
/.
/usr
/usr/bin
/usr/bin/mecab
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/mecab.1.gz
/usr/share/doc
/usr/share/doc/mecab
/usr/share/doc/mecab/mecab.html
/usr/share/doc/mecab/changelog.Debian.gz
/usr/share/doc/mecab/copyright
/usr/share/doc/mecab/partial.html
/usr/share/doc/mecab/unk.html
/usr/share/doc/mecab/dic.html
/usr/share/doc/mecab/flow.png
/usr/share/doc/mecab/feature.png
/usr/share/doc/mecab/soft.html
/usr/share/doc/mecab/dic-detail.html
/usr/share/doc/mecab/libmecab.html
/usr/share/doc/mecab/learn.html
/usr/share/doc/mecab/result.png
/usr/share/doc/mecab/posid.html
/usr/share/doc/mecab/README.Debian
/usr/share/doc/mecab/README
/usr/share/doc/mecab/AUTHORS
/usr/share/doc/mecab/index.html
/usr/share/doc/mecab/bindings.html
/usr/share/doc/mecab/format.html
/usr/share/doc/mecab/feature.html
/usr/share/doc/mecab/mecab.css

参考

askubuntu.com

データがあればUPDATE。なければINSERTの「INSERT ... ON DUPLICATE KEY UPDATE 構文」

MySQLで、データが存在する場合は更新を行い、存在しない場合にのみ登録を行いたい場合には、「INSERT ... ON DUPLICATE KEY UPDATE 構文」を利用する。

今回は、サンプルとして複数データを一度に登録する場合である所謂Bulk Insertのサンプルを掲載しておく。

流れとしては、

  • UNIQUE インデックスまたは PRIMARY KEYの指定を行う(以下の例では、fruit_nameに対し、UNIQUEインデックスを指定している)
  • 以下のような「INSERT ... ON DUPLICATE KEY UPDATE 構文」を含んだSQL文を実行させる
  • INSERT文の部分が実行され、重複データと判断された場合には、 ON DUPLICATE KEY UPDATE 以下の更新処理が実行される
INSERT INTO
  fruit_count(fruit_name, total_count, updated_at)
VALUES
  ('apple', total_count, NOW()),  ('banana', total_count, NOW())
ON DUPLICATE KEY UPDATE
  fruit_name = VALUES(fruit_name),
  total_count = total_count + 1

テーブルに AUTO_INCREMENT カラムが含まれているとき

上記のままだと、AUTO_INCREMENT カラムの値が激増する。そのため、下記のようにする必要があるようだ。当方未確認。

INSERT INTO
  fruit_count(fruit_name, total_count, updated_at)
VALUES
  ('apple', total_count, NOW()),  ('banana', total_count, NOW())
ON DUPLICATE KEY UPDATE
  fruit_name = VALUES(fruit_name),
  total_count = total_count + 1,
  id=LAST_INSERT_ID(id)

参考

MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.5.3 INSERT ... ON DUPLICATE KEY UPDATE 構文

Javascript+SELECTBOXでページを切り替える

SELECTBOXでページを切り替えたいときがある。よくあるのが、検索結果一覧において「30件、50件」のようにSELECTBOXで表示件数を切り替えられるようにするケース。

調べたけど、スマートな記載が簡単に探せなかったので、メモしておく。 optionのvalueに切り替え先のページのアドレスを記入し、optionが選択されたらそのアドレスに飛ぶようにしている。

<select id="fruit" name="fruit" onchange="location.href=this.options[this.selectedIndex].value;">
  <option value="apple.html">りんご</option>
  <option value="banana.html">ばなな</option>
  <option value="cherry.html">さくらんぼ</option>
</select>