プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

3.4.x -> 3.6.x へのアップデート

本サイトのJoomla! を 3.4.8 から 3.6.2 にアップデートしました。

普通だと、『コンポーネント』→『Joomla!の更新』を行えば、それで終わりなんですが、キャッシュをクリアしても、なぜか表示される更新対象のバージョンが 3.6.0 しか出てず、 3.6.2 が表示されませんでした。ちょっと気になったので、アップデート手順をとか情報を調べたら、注意が必要そうだったので、メモにまとめておきます。

ちなみに、表示されなかった原因は、多分、更新のオプション設定だったようです(下記を参照)。

 

こちらのページの『Setting Ipdate Server』の部分にオプションの意味が書いてあります(図入りなのでわかりやすい)。

https://docs.joomla.org/J3.x:Updating_Joomla_(Update_Method)

日本語はこちらにありますが、図がなかったので、最初オプションの内容の説明の意味がが分かりませんでした (><)。

https://docs.joomla.org/J3.x:Updating_from_an_existing_version/ja

 

3.6.xへのアップデート手順

こちらのダウンロードページ(下記ページのリンク元)に注記があるのですが、3.6.1にアップデートするときに注意が必要だそうです。

https://www.joomla.org/announcements/release-news/5666-the-joomla-3-6-1-update.html

 

実際の作業はこのページにある説明に従って作業をします。簡単に書くと、

  1. 『コンポーネント』→『Joomla!の更新』を使って、3.6.0 にアップデートします
  2. 『エクステンション』→『管理』→『アップデート』を選択し、表示される『Joomla! Update Component Update』 の更新を行います。今回の場合、3.6.0 から 3.6.1 に事前に上げておくことになります。
  3. 『コンポーネント』→『Joomla!の更新』を使って、3.6.2 にアップデートします

 

日本語サイトのほうには、上記注意点へのリンクがないようなので、気にしなくてもいいのかもしれませんが、ま、試していないのでなんとも言えませんが。。。

http://joomla.jp/news/release-news.html

 

いずれにせよ、ご参考までに。

今更ながらdocker試してみました

cartoDB をサーバーにインストールして試したいと思い、いろいろと調べていたらdockerのイメージがあるらしいということがわかりました。インストール手順とか眺めても、結構面倒そうだったので、最初のお試しとしてこれを利用しない手はないでしょう。

ということで、まずは、興味ありながらも手を出せていなかったdockerを今更ながら試してみることにしました。といっても、dockerの解説記事やチュートリアルはすでにネット上にたくさんあるので、ここでは参考にさせていただいた記事『いまさら聞けないDocker入門@IT』を元に、個人的に躓いた点などをメモ的にまとめておきたいと思います。

インストール

dockerをインストールして試す手ごろな環境がないか探してみたところ、古いノートPCにLubuntu(14.04 LTS, 32bit)を入れていたので、それで試してみることにしました。インストールは、記事中にもあるように

sudo apt-get install docker.io

で問題なく完了しました。ただし、すでにシンボリックリンクは最初から貼られていました。

コンテナの実行

実は、ここが一番はまりました。記事によると

docker pull ubuntu
docker run -it --name test ubuntu /bin/bash

で最新のUbuntuのイメージをダウンロードして、それを実行するということでしたが、なぜか

mor@lenovo:~$ docker run -it --name test ubuntu /bin/bash
exec format error
FATA[0000] Error response from daemon: Cannot start container 9bd88c529a26a934e661b55a242078d0fa4f224b665a521687388b8af3cf3598: [8] System error: exec format error 
mor@lenovo:~$ 

というエラーが表示されて、実行できませんでした。

途方にくれながら、ググってみると、ホストOSが32bitの場合、コンテナのイメージも32bitである必要がありそうです。

http://d.hatena.ne.jp/rougeref/20150724 http://stackoverflow.com/questions/29072605/can-not-start-docker-on-lubuntu-cannot-start-container-exec-format-error

ということで、32bitイメージを取得して再度試してみました。

docker pull 32bit/ubuntu:14.04
docker run -it --name test1 32bit/ubuntu:14.04 /bin/bash

おぉ、問題なく動作しました。なお、イメージ取得時にタグ名をお忘れなく。

Dockerfileを試す

基本的には記事にあるとおりに作業すればよいのですが、

FROM 32bit/ubuntu:14.04
MAINTAINER mor
RUN apt-get update
RUN apt-get -y install nginx
ADD index.html /usr/share/nginx/html/

のように若干調整が必要でした。docker build を実行時にいくつかエラーが表示されていたのですが、まあ、動いていたので今回は気にしないことにしておきます。

あと、こちらのページのコラム記事に nsenter を使って、動作中のコンテナに接続する方法が紹介されています。しかし、残念ながら32bit版のLubuntuでは、こちらの記事の方法(dockerイメージによるインストール方法)は使えませんでした。さて、困ったと思っていたところ、dockerのバージョンアップに伴い、動作中のコンテナに接続してコマンドを実行する機能が追加されていました。

http://agekuno.hatenablog.com/entry/2014/10/18/010128

試してみるとこんな感じでした。

mor@lenovo:~$ docker exec --help

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

  -d, --detach=false         Detached mode: run command in the background
  --help=false               Print usage
  -i, --interactive=false    Keep STDIN open even if not attached
  -t, --tty=false            Allocate a pseudo-TTY
mor@lenovo:~$ 
mor@lenovo:~$ docker exec -it 0bfb /bin/bash
root@0bfb951cf79a:/# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2268   528 ?        Ss   15:38   0:00 /bin/sh -c /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
root         7  0.0  0.2  14900  3180 ?        S    15:38   0:00 nginx: master process /usr/sbin/nginx -g daemon off; -c /etc/nginx/nginx.conf
www-data     8  0.0  0.0  15044  1396 ?        S    15:38   0:00 nginx: worker process                                  
www-data     9  0.0  0.0  15044  1396 ?        S    15:38   0:00 nginx: worker process                                  
www-data    10  0.0  0.0  15044  1396 ?        S    15:38   0:00 nginx: worker process                                  
www-data    11  0.0  0.0  15044  1396 ?        S    15:38   0:00 nginx: worker process                                  
root        18  1.0  0.1   3544  1708 ?        Ss   15:39   0:00 /bin/bash
root        32  0.0  0.0   3144   976 ?        R+   15:39   0:00 ps aux
root@0bfb951cf79a:/# exit
exit
mor@lenovo:~$ 

これを使えば、パッケージのインストールなどしなくても一発でコンテナの様子を調べられます。便利!

Docker Hub の利用

解説記事の最後はDocker Hub を使ってみるということです。こちらも試してみました。

Docker Hub のアカウント登録で、GitHubのアカウントも使えるとあったのですが、今回試した際は見つけることができませんでした。なので、アカウントを新たに登録して、ログインしてみます。

docker push

でリポジトリに追加できました。なお、dockerの場合、『リポジトリ』がイメージ名に対応しているようです。

pushコマンドで追加した場合、何もしなければpublicリポジトリになるようです。これをprivateに切り替えるためには、リポジトリの詳細画面を開いて、タブメニューのSettingsを選択して、『Visibility Settings』でprivateにすればOKのようです。しかし、無料枠だとprivateリポジトリが1つだけなので、なかなか難しいところです。

なお、今回は Automated Build は試しませんでした。

Dockerをどう使うか?

触ってみた感触だと、テスト的にあれこれするには非常に便利そうに感じてます。まずはいろんな環境を手軽に作ったりするのに使う感じになりそうかな。

ネットの記事をあれこれ読むと、dockerを利用してサーバー運用とかもできそうですが、結局データをどう保存しておくのかとか、コンテナ同士のやりとりをどうするのか、といった面がまだ見えていません。

でも、Dockerfile によってサーバーの設定を記述できるなどは非常に魅力的です。ま、もっとも、Chefとかのツールを使ってもいいんじゃないか思うので、そのあたりの違いもちょっと見えていない面があります。

これを機に、少しDockerに触ってみようと思います。

cartoDB 使ってみた

2016年5月にあった OSC名古屋 併設のハッカソンイベントで知った、cartoDB が面白そうだったので、試してみました。類似の記事も多くありましたが、自分の備忘録と作業記録を兼ねてメモしておきます。

 

cartoDBとは

地図上でデータを視覚化するSaaSになるようです(Wikipedia)。でも、単なるクラウドサービスだけでなく、オープンソースでコードを公開していたり、いろいろとできることが豊富そう。使ってみないことには何もわからないので、まずは試してみることにしました。

 

アカウントの設定

cartoDB のサイトを開いてみると、いろいろと書いてあるのですが、ちょっと地図を作って試すだけでも signup が必要そうです。が、果たして本当にそれでよいのか、クレジットカード番号聞かれたらどうしようか(そんなことなかったです)、小心者なので気になって、この時点で前に進めませんでした。最近はやりの『おためしはこちら』みたいな誘導の仕方はそれなりに効果があるのだなと、今更ながら変なところに感心してしまいました。

で、signupしないと前に進めなさそうなので、あきらめて素直にsignup しました(メールアドレス、アカウント名、パスワードを入力します)。signup時点では、freeプランになっているようなので、一安心です。

 

お試し

signupした直後の画面(dashboardと呼ばれるようです)で、さて何をすればよいのか?というのがまたわかりませんでした。まあ、結論から言えば、『NEW MAP』 をクリックすると、『Add datasets』という画面が表示されるので、ここから表示したいデータ(位置情報を含むデータ)をアップロードする、という形になります。

※画像はいくつかdataset追加後なので、最初の画面は少し見た目が異なります。

 

考えてみれば当たり前で何らかの位置情報を持ったデータセットがないと何も表示できないので、最初はデータセットの定義という形になります。

自分でデータを用意できない場合は、『data library』 というタブをクリックするとこちらからもサンプルになるようなデータを選択することができるようです。

 

今回はcartoDBを紹介していたサイトでも使われていた、総務省統計局にある日本の統計から都道府県別の人口Excelファイル)を利用しました。

ファイルをアップロードする場合は、『Connect dataset』タブを選択し、『Data file』 を選択してドラッグアンドドロップしたり、URLを入力すると読み込んでくれます。

ファイルをアップロードすると、セルの結合があるExcelファイルにも関わらず読み込んでくれました!

 

で、『the_geom』というカラムが位置情報を保持しているカラムの様なのですが、この時点では何も入っていません。当然ですね、元のExcelファイルは都道府県名を日本語で書いているだけですので。なんとcartoDBはジオコーディングもできるそうです。都道府県名の入ったカラム上でクリックすると、メニューが表示されます。

ここで、『Georeference』を選択すると、下記の様な位置情報指定用の画面が表示されます。

もし、緯度経度をすでに持っているようなら、直接そのカラム名を指定すればよいようです。今回は、都道府県名ということで『City name』を選択しました。

都道府県名の入ったカラム名を指定して、Country を示すカラムがないので、直接 Japan と入力しました。画面下部の『continue』を押すと、

のような確認画面が出てくるので、ボタン(中央の画像)を押します。とりあえず、完全ではないですが、都道府県名から緯度経度に変換したものが得られました。

 

とりあえず、これで地図表示ができます。画面上部のMAP VIEWを選択すると、地図上にポイントがプロットされました。

拡大してみていくと、なにやら表示の怪しそうな部分(隠岐の島にポイントがある・・・)もありますが、一応表示できています。

 ※ジオコーディングについては、日本語で都道府県名を与えているのが問題かと思い参考サイトのようにローマ字表記にしたり、返還方法を Admin. Regions としたりしましたが、やはりうまくいかない部分もありました。DATASET上で直接データの編集もできますが、問題があるようなら、事前に別途ジオコーディングをしていたほうがよいかもしれません。

 

情報の表示

この時点では、緯度経度で示した地点をプロットしているだけなので、さほど面白くありません。せっかくなので、人口に応じた表示にしてみたいと思います。画面右側にあるバーからWizardというボタン(筆のアイコンのボタン)を押すと、下図のような表示になります。

この画面であらかじめ決められたいくつかのフォーマットを選択して表示することが可能なようです。わかりやすそうなもので、人口に応じて円をの大小で表示させたいと思います。

実はまだこの時点では、人口のカラムが文字型なので表示させることができません。

一旦、DATA VIEW に戻ります。人口のカラムのヘッダ行のところにstringとあるので、そこをクリックすると、データ型を選択できるメニューが表示されます。ここで、Numberを選択すると、string型だったデータが数値として扱われるようになります。

次に、MAP VIEW に戻り、Wizardを選択し、Bubbleを選択します。どのカラムのデータを表示させるか選択するのですが、今回の場合は数値型のカラムが一つなので選択済みになっています。デフォルトでもなんとかく、それっぽい図になりました。

 

公開

freeプランの場合、作成した地図を非公開にすることはできないようです。実はすでにこの時点で地図は公開されています(https://ユーザー名.cartodb.com/ にアクセスするとそのユーザーのMAP、datasetを見ることができます)。

画面上部のPUBLISHボタンを押すと、公開用のURLや埋め込み用のコードを取得することができます。とはいえ、PUBLISHを押さなくても、すでに公開されていますのでご注意ください。
 

その他

いろいろとオプションを触ってみると非常に簡単に地図上での表現を変更することができます。面白いですね。また、あとから知ったのですが、チュートリアルにいろいろな地図の作り方が載っているので、そちらを試すのも面白いと思います。

Twitterのデータを拾ってきて、地図上に表示することも簡単にできました。なお、Twitterからデータを取得するには、ちょっと手間ですが、cartoDBにメールを送ってリクエストを出す必要があります。また、Twitterからのデータ取得を一定間隔で自動で行うなどの場合、別途料金が必要なようです。また、データ取得回数にも制限があるみたいです。詳しくはTwitterのチュートリアルなどをご覧ください。

個人的には、一旦地図を作成すると、API経由でデータのアップデート(DATASETの更新)ができるようなので、これも試したいと思います。

にしても、いろいろと便利なものがでてきますね。

 

参考サイト

使い方の解説

http://qiita.com/PSS/items/46f94e528cd8ad645dcf

http://waigani.hatenablog.jp/entry/2015/09/23/223636

http://midoriit.com/2016/05/cartodb%e3%81%ae%e6%b4%bb%e7%94%a81.html#more-2337

 

全般的な説明

http://kaitok.github.io/cartodb/20160329/cartodb_intro/#1

http://www.orenchbase.com/archives/549

 

チュートリアル

https://docs.cartodb.com/tutorials/connect_twitter_datasource/