Linux版SQL ServerをDockerで動かしたときにサーバの照合順序を変更したい
はじめに
他のデータベースにもれず、SQL ServerもDockerで動かすことが出来ます。
ただ、単純にDocker Hubのページのように
> docker run \ --name=mssql \ --hostname=my-docker-mssql \ -d \ -e 'ACCEPT_EULA=Y' \ -e 'SA_PASSWORD=mssqllinux@1' \ -p 1433:1433 \ microsoft/mssql-server-linux:latest
とやると言語やサーバの照合順序が英語(SQL_Latin1_General_CP1_CI_AS
)になってしまいます。
データベースの照合順序は作成時に指定できますしデータベース名に日本語を使わなければそうそう地雷を踏みぬくことも無いと思いますが、本番環境と異なっていると変なところで踏みぬいて嫌な感じになるので出来れば統一したいものです。
環境変数
さて、Docker Hubのページにはぱっと見
しか紹介されておらず、照合順序が変更できなさそうですがConfigure SQL Server settings with environment variables on Linuxを見るとかなりの設定が出来るようです。
というわけでこれが正解。
> docker run \ --name=mssql \ --hostname=my-docker-mssql \ -d \ -e 'ACCEPT_EULA=Y' \ -e 'SA_PASSWORD=mssqllinux@1' \ -e 'MSSQL_LCID=1041' \ -e 'MSSQL_COLLATION=Japanese_CI_AS' \ -p 1433:1433 \ microsoft/mssql-server-linux:latest
おわり
Scala.jsでもReactを使いたい
はじめに
Scalaが好きすぎてフロントエンドでも使いたいのでScala.jsに入門してみました。
必須環境
Scala.jsのチュートリアル曰くsbtとかnode.jsを入れなさいということなのでインストールしましょう。
また、npmパッケージのキャッシュとかバージョンの固定とかしてくれるYarnも一緒に入れておきます。直接使うことはありませんが、scalajs-bundler経由で利用します。
Hello World
scala-seed.g8からプロジェクトをシードして、ちょろっと書き換えてScala.js用のプロジェクトを作成します。
Hello world · jyuch/scalajs-react-tutorial@60aaf73 · GitHub
この状態で
> sbt run
とするとコンソールにHello world
と表示されますが、何となく味気ないです。
Hello World in browser
今度は適当なHTMLを書いて生成されたJavaScriptを読み込んでみましょう。
Hello World in browser · jyuch/scalajs-react-tutorial@2c18e9d · GitHub
> sbt fastOptJS
でScalaのコードをトランスパイルし、ブラウザでindex.html
を開きます。
ちゃんとScalaコードが(JavaScriptにトランスパイルされて)ブラウザ上で動いています。
Hello World on DOM
今度はReactを使ってDOMの差し替えを行ってみましょう。
scalajs-reactをbuild.sbt
の依存ライブラリに追加します。
また、Reactの依存ライブラリ諸々を1つのjsファイルに押し固めたいのでscalajs-bundlerプラグインを追加します。
Hello World on DOM · jyuch/scalajs-react-tutorial@6a064bb · GitHub
そしてこうやって
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>The Scala.js Tutorial</title> </head> <body> <div id="playground"></div> <script type="text/javascript" src="./target/scala-2.12/scalajs-bundler/main/scalajs-react-tutorial-fastopt-bundle.js"></script> </body> </html>
こうして
package react4s import org.scalajs.dom.document import japgolly.scalajs.react._ import japgolly.scalajs.react.vdom.html_<^._ object Hello { val playground = document.getElementById("playground") def main(args: Array[String]): Unit = { val NoArgs = ScalaComponent.builder[Unit]("No args") .renderStatic(<.div("Hello World")) .build NoArgs().renderIntoDOM(playground) } }
トランスパイルして
> sbt fastOptJS::webpack
こうです。
Todo list
せっかくReactを使っているので、SPAっぽいことをやってみましょう。というわけで(消せない)Todoリストです。
Todo list · jyuch/scalajs-react-tutorial@a224ac7 · GitHub
package react4s import org.scalajs.dom.document import japgolly.scalajs.react._ import japgolly.scalajs.react.vdom.html_<^._ object Hello { val playground = document.getElementById("playground") def main(args: Array[String]): Unit = { val Example = ScalaComponent.builder[Unit]("Example") .initialState(State("", List("Hello World"))) .renderBackend[Backend].build Example().renderIntoDOM(playground) } case class State(item: String, items: List[String]) class Backend($: BackendScope[Unit, State]) { def render(s: State): VdomElement = { <.div( <.form(^.onSubmit ==> handleSubmit, <.input(^.onChange ==> onChange, ^.value := s.item), <.button("Add item") ), <.ul( s.items map { it => <.li(it) }: _* ) ) } def handleSubmit(e: ReactEventFromInput): Callback = { e.preventDefaultCB >> $.modState(s => State("", s.item :: s.items)) } def onChange(e: ReactEventFromInput): Callback = { val v = e.target.value $.modState(_.copy(item = v)) } } }
<.div
や^.onSubmit
のような面妖なDSLが出てくると『うわっ、こっわ』となりますが、しばらく書いているとこんなものかなーと思えてくるので慣れって怖いですね。
gitbucket-backup-pluginをリリースしました
はじめに
GitBucketのバックアップ機能を提供するgitbucket-backup-pluginをリリースしました。
gitbucket-windows-backup-pluginを開発・保守してきましたが、以下の点が気に入りませんでした。
- 名前に
windows
と入れてしまったせいでWindows専用な雰囲気が漂っていた - ずっと0.xでリリースしていたせいでいつまでもオープンベータ感が拭えなかった
そこで、コード内を見直すついでにリポジトリの移動・プラグインIDの変更などを行いました。
gitbucket-windows-backup-pluginとの互換性
設定ファイルで一部互換性を失う変更を行っています。
設定ファイルを移行する際はGITBUCKET_HOME/backup.conf
中のwinbackup
をbackup
に変更してください。
また、テストメール送信用URLとバックアップテスト実行URLが変更になっています。
くわしくはREADMEをご覧ください。