まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

2016/04

CentOS に Go 言語環境を導入します。以下は CentOS 6.x の 64bit 版を前提とします。


Go 言語のインストールは yum ではなく、直接バイナリをダウンロードして展開するだけです(この例では /usr/local/go/ 以下に Go 1.4 をインストールしています):
# cd /usr/local/src
# wget https://storage.googleapis.com/golang/go1.4.linux-amd64.tar.gz
# tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz

環境変数 GOPATH を設定し、また PATH を通してコマンドラインから直接利用できるように設定します:
# vi ~/.bashrc

(以下の2行を追加して保存)
export GOPATH=/usr/local/go/
export PATH=$PATH:/usr/local/go/bin

ここまでの準備ができたらログインし直して、go コマンドを実行して動作確認します(青字のような出力になれば成功です):
# go version
go version go1.4 linux/amd64

試しに Hello World 的なアプリを書いて実行してみましょう。以下の内容のテキストファイルを hello.go という名前で作成して保存します:
package main

import "fmt"

func main(){
  fmt.Printf( "Hello, World\n" )
}

そして実行して動作を確認します:
# go run hello.go
Hello World

動きました!


ついでに HTTP サーバーを作ってみます。今度は以下の内容を http1.go という名前で作成します。8080 番ポートのルートパス(/)で待ち受けるような内容にしています。また GET の param パラメータの値を取り出して出力するようにしています:
package main

import(
  "fmt"
  "html"
  "net/http"
)

func HelloServer( w http.ResponseWriter, req *http.Request ){
  title := html.EscapeString( req.URL.Path[1:] )
  param := req.FormValue( "param" )
  output := `
<html>
<head>
<title>` + title + `</title>
</head>
<body>
<h1>HTTP のテスト</h1>
<h2>get</h2>
param=` + html.EscapeString(param) + `</br>
</body>
</html>
`
  fmt.Fprintf( w, "%s", output )
}

func main(){
  http.HandleFunc( "/", HelloServer )
  http.ListenAndServe( ":8080", nil )
}

そして実行します:
# go run http1.go


ウェブブラウザで、この Go を実行中のマシンの 8080 番ポートのルートパス(/)にアクセスします。またこの時に param パラメータを付けて実行すると、そのパラメータ内容が表示されることを確認します:
2016042601


CentOS 上で Go 言語が実行でき、HTTP サーバーを作れることも確認できました。

このエントリの続きです:
レッドハットの開発者向けサブスクリプション(無料)を使ってみた


上記エントリで、レッドハット社が開発者向けに無料で提供を開始した RHEL 7.2 の導入方法を紹介しました。普通に導入して使うまでであれば、この方法で問題なくできるはずです。

が、この状態から新しいツールを yum でインストールしようとして躓きました。ライセンスを購入して利用しているわけではないので、標準のレポジトリを使うことができず、結局 yum の利用ができないのです:
2016042701


というわけで、インストール時に使ったメディア DVD(iso)を使って yum のリポジトリを作り、そこから yum でツールを導入できるようにしてみます。


まずはインストールメディアを RHEL システム内にマウントします。DVD で所有している場合はトレイに入れるだけで自動的にマウントしてくれるはずです。iso ファイルで所有している場合は、以下のコマンドを使ってマウントします(この例では /root/rhel-server-7.2-x86_64-dvd.iso ファイルを /mnt/iso にマウントします):
# mount -t iso9660 -o loop /root/rhel-server-7.2-x86_64-dvd.iso /mnt/iso

次に /etc/yum.repos.d/localdvd.repo ファイルを以下の内容で新規に作成します。マウントした iso(または DVD)をリポジトリとするための記述になってます:
[localdvd]
name=RHEL 7.2 x86_64 DVD
baseurl=file:///mnt/iso/
enabled=1
gpgcheck=0
gpgkey=file:///mnt/iso/RPM-GPG-KEY-redhat-release

そしてリポジトリリストを更新します:
# yum repolist all

これで DVD(iso) の中にあるパッケージファイルが yum で導入できるようになりました。普通に yum install コマンドなどが使えるようになっている、はず:
# yum install screen


東芝 dynabook N29 を1週間の出張に持って行って使ってみた感想をまとめます。

最大の特徴は 8.9 インチという画面サイズを実現した小型化を実現した上でのフルキーボードモデルであるということ。そしてこのキーボードがデタッチャブルとなっていて、画面部分だけを取り外して Windows 10 タブレットとしても使える、ということです:


この N29 は自分にとってのメインで利用する機種ではなく、購入後もあまりまとめて利用する機会がありませんでした。このたび1週間ほどの出張に出かける機会があったので、そこに N29 を持ち込んで使う、という目的で使ってみました。

余談ですが、この N29 はネットの一部では「Libretto の再来」と呼ばれています。Libretto を初代の 20 モデルから使い続けていた自分としてはこの評判から気になっていたモデルでした。


最初にカタログ上のスペックをまとめておきます。詳細はこちらを参照していただくとして、ざっとこんな感じ:
CPUインテル Atom Z3735 1.33GHz 4コア 4スレッド
メモリ2GB
ディスプレイ8.9 インチ 1920x1200 タッチパネル対応
キーボード65 キー + マルチタッチ対応クリックパッド
ストレージ64 GBフラッシュメモリ(空きは約 49GB)
ネットワークインターフェース無線LAN, Bluetooth
SD カードMicroSD x 1
(キーボード接続時に SD x 1)
外部インターフェースヘッドセット端子 x 1
MicroUSB x 1(充電用)
HDMI(micro) x 1
(キーボード接続時に USB x 1)
バッテリー駆動時間約6時間(キーボード接続時だと約 12 時間)
外形寸法(mm)235 x 161 x 9.8
(キーボード接続時だと 235 x 170.6 x 19.9)
重量479g(キーボード接続時だと 989 g)
OSWindows 10 Home 32bit
付属アプリMicrosoft Office Mobile
筆ぐるめ22
ウィルスバスタークラウド90日間、等


また、自分のこの N29 の使い方ですが、ほぼ 100% キーボードを接続した状態で使います。主目的はウェブとプログラミング、そして SSH などコマンドラインを使ったサーバー管理といった所。要はタブレットとしてキーボードを外して使う、というのは、ごくたまに「自慢する時」だけです。なので、Windows 10 もタブレットモードを無効にして使っています。その利用方法を前提として以下を記載します。

結論を最初に書くと「外付けマウスを併用すると結構使える。マウスなしだと使いにくい」です。8.9 インチという A6 に近いサイズを実現するためキーボード配列が特殊になっています。例えばですが右 SHIFT はありません(SHIFT キーは左のみ)。あと基本は日本語キーボード配列なのですが、 \ など一部のキーの配置が一般的なものとは異なっていて、ブラインドタッチに慣れた人でもたまに間違えると思います。小型化を優先した結果だと思いますが、必ずしも打ちやすいキーボードではありませんでした(まあ、でも慣れの範囲だと思う)。 そしてそれ以上に使いにくかったのがキーボード付属のクリックパッドです。右と左の判断が甘いのか、右クリックのつもりで使っても左クリックと判断されることが(今でも)結構な頻度であります。マルチタッチに対応しているのでスクロール(二本指で上下)などは簡単に行えますが、どちらかというと使いにくいインターフェースでした。ここはキーボード部分にある USB ポートを使って外付けマウスを付けた方がいいと思いました。なお画面は 8.9 インチですが、解像度は 1920x1200 と(このサイズを考えれば)かなり高めです。また1つ上の N40 モデルにすることで一回り大きなキーボードを手に入れることもできます。

そしてストレージは 64 GB のフラッシュメモリです。起動速度を意識しての eMMC だと思いますが、この中に色々保存するのは無理があるので、自分は 64GB の MicroSD カードを挿入して、データはそちらに置くようにしました。128 GB あれば、あとはクラウドストレージを併用してなんとか使える、という印象です。

N29 は基本スペックが上記のようにあまり高くないので、重めのアプリを入れて使うことには向かないと思っています。自分は普段はアプリケーション開発用に Eclipse を使うのですが、これはかなり苦しいアプリです。逆に Chrome やテキストエディタにはほぼ支障ありません。ただメモリが少ないせいか、Chrome でタブを開きすぎると、タブを切り替える度に再読み込みが発生し、スムーズなタブ切り替えが出来るわけではない、という印象を持ちました。


N29 の形状ですが、クラムシェルを閉じるとバッテリー部分が本体から飛び出す形になります。実はこれが結構便利な仕様でした:
n29_1


この飛び出した部分は、クラムシェルを開いた時にキーボードを押し上げる形になり、キーボードに自然な傾斜が生まれます。つまり「画面を開くと少し傾いて打ちやすくなる」のでした。これは目からウロコの、なかなか面白いトリックです。実際これで腕が疲れにくくなり、結構楽に使えました:
n29_2


そして特筆すべきと思ったのがバッテリーの持ちです。キーボードを併用することで事実上2つのバッテリーを使うことになっている、という背景もあると思いますが、かなり持つという印象でした。カタログスペック上では 12 時間ということですが、本当に(連続で)そのくらい持つのではないかというくらいの減り方でした。ストレージがメモリオンリーなのと、重いアプリを初めから諦めて使っていなかったということも関係あるかもしれません。でもかなり優秀なバッテリー消費という印象でした。


(オマケ)
少しだけ余談を。モバイル PC やタブレットを使う上で、「Bluetooth の外付けキーボードを使う」ことについて触れておきたいです。自分の考えは外付けキーボードを根本から否定するつもりはないのですが、「できれば使いたくない」派です。理由は2つ。

まずモバイル PC やタブレットは機動性を重視しています。要は「持ち歩きやすさ」も要素の1つだと思っています。一方でデベロッパーやサーバー管理者にとっては(プログラミングや SSH などで)キーボード操作は避けて通れません。そういった中で外付けキーボードを別途持ち歩く必要がある、というのは自分にとっては好ましくありません。

もう1つの理由は外付けキーボードのバッテリーを意識する必要がある点です。ただでさえスマホが個人用/会社用と複数台あって、そこにモバイル PC もあって、複数マシンのバッテリーを意識していないといけないのに、更に外付けキーボードのバッテリーも管理下に加える、というのは避けたいのでした。

これらの理由から、自分はモバイル PC に Bluetooth キーボードは「避けて通れるなら避けたい」のでした。その点では今回紹介した N29 や、Microsoft Surface は評価を高く考えています。また同じ理由でマウスも Bluetooth ではなく有線の USB マウスを持ち歩くようにしています。
(オマケ終わり)


というわけで、自分のようにテキストエディタや SSH で、比較的キーボードを多用する使い方の人にとっては N29 はマウスを併用することでそれなりに使いやすいモバイルノート PC という印象です。逆に画像編集やオフィスアプリ利用などだと(標準アプリが貧弱ということもあって)ちょっと不便に感じるかもしれません:

 

以前にこんな記事を書きました:
ラズパイと PC とをシリアル接続する

小型PCでもあるラズベリーパイは「一度セットアップしてしまえば」便利なのですが、このセットアップ時がちと面倒なのです。イメージの入ったマイクロ SD カードを用意し(ここまではいい)、HDMI ケーブルでディスプレイにつなぎ、キーボードとマウスをUSB接続して起動し、この外付けしたキーボードとマウスを使って初期セットアップを行います。要は初期セットアップ時に GUI を操作するための環境が必要なのです。 このセットアップが済んでしまえば(セットアップ時にネットワークや SSH の設定も済ませてしまえば)後は電源だけを繋いで起動したら SSH でログインして使う、なんてこともできるようになるのですが、最初のセットアップ時だけはどうにもなりません。

そこで上記のシリアル接続環境が便利になります。要は PC とラズパイをシリアルケーブルで接続し、PC 側の CUI 画面とキーボードを使って操作する、というものです。この方法であれば GUI は使えませんが、テキストコマンドを使った初期セットアップができるようになります。要は HDMI や USB マウス&キーボードを用意しなくてもシリアルケーブル1本だけでセットアップができるようになり、初期セットアップ後はネットワーク接続を使って普通に使えるようにできる、というものです。セットアップが完了した後も、ネットワーク環境が変わって SSH ログインなどができなくなるようなケースでもシリアルから操作できるようになり、とても便利で愛用していました。


さてラズベリーパイ3が発売されました。CPU などの基礎機能が上がったことに加え、Bluetooth と無線 LAN を標準搭載したモデルです。実際自分もそうですが、ラズベリーパイを持ち運んで使おうとするとモバイルルータやテザリングで無線 LAN 接続して使う、という形になると思います。要は持ち運んで使うには無線 LAN は必須です。その無線 LAN を標準搭載したのが大きな魅力でした:



早速購入し、これもいつもの感じ(上記リンク参照)でシリアル接続してセットアップ・・・しようと試みたのですが、何かこれまでと違います。起動時のメッセージにいきなり文字化けが・・・
2016041101


しばらく待つとログインプロンプトが表示されました。なので一応起動プロセスは正しく行われていたようです・・:
2016041102


ではセットアップを行おうと、初期ログインユーザー名の "pi" を入力すると・・・なぜか "pl" になってしまう。どういうこと?しかも改行がズレてるし・・・
2016041103


何これ? ログインできないの?? 結果としてはこれはラズパイ3にシリアル接続した時だけ発生する現象でした(普通に HDMI や USB 接続では問題なくセットアップできるし、同じバージョンの Raspbian Jessie をラズパイ1や2に入れると問題は発生しない)。どういうことだろう、と思って調べてみると、どうやらこの現象が起こっているのは僕だけではなかった様子でした。

結論としては、どうやらラズパイ3は現時点ではシリアル接続での初期セットアップはできない模様です:


どうも Bluetooth モジュールがシリアル関係と同じ所を使っているようで、その影響でシリアル接続の調整が上手く行かなくなっているようです。単にボーレートを 115200 から下げればよい、というわけでもなく、下げたら下げたなりに狂ってしまうので、どうにもできないようでした。

で、↑このリンク先にも書かれていますが、シリアル接続を使えるようにするための解決策も一応あります。/boot/config.txt ファイルに
core_freq=250

の1行を追加してあげるだけです。特にパフォーマンスが落ちることもなくシリアル接続が使えるようになりました:
2016041201
 ↑できたーっ!


ただ、この1行を追加するには一度セットアップを完了させる必要があり、そのためには HDMI や USB 機器を接続してセットアップする必要があります。

要するに現時点での結論としてはラズパイ3でもシリアル接続はできる、でも初期セットアップ時には HDMI や USB キーボード/マウスが必要になりそうです。ということは最初からシリアルケーブルだけで、というわけにはいかない。うーむ・・・ (--;


解決策の続報を待つ!

マンホール、およびマンホールマップの話です。


マンホールマップでは登録されたマンホール写真が地図上のどこにあるのか、を調べるだけでなく、どの都道府県のどの市区町村にどんなマンホールがあるか、といった逆引き(?)の検索も可能です:
http://manholemap.juge.me/mc.jsp


こういう話題の際に必ず出てくるのが「市町村合併」の話です。1995年に成立した合併特例法により、2005年から2006年にかけて市区町村の合併がピークを迎えました。俗にいう「平成の大合併」です。法律の変更によって、市になる条件が緩和された上に、財政支援策が拡充されたことで、町や村が合併して市になる(あるいは既存の市の一部として合併する)という動きが見られました。 こういった合併が行われると、合併前の(無くなってしまった)自治体のマンホールは新たに製造されることがなくなるので、「レア物」という形で、ある意味での昇格をする形になります。

↑旧埼玉県浦和市(現さいたま市)のマンホール


で、この市町村合併が行われる際には、同一の都道府県内の市町村が合併する、というのが一般的ですが、ごく稀に例外があります。つまり都道府県を越えた合併が行われることがあります。これが越境合併です。ある日を境に○○県民が住居を変えずに××県民になる、ということが発生します。

比較的最近では 2005 年2月13日、それまでは長野県木曽郡山口村と呼ばれていた地域がこの日から岐阜県中津川市に編入する形で合併が行われました。長野県がちょっとだけ小さくなり、その分岐阜県が大きくなったわけです。

なお、この直前の越境合併は1959年なので、実に46年ぶりの越境合併が行われたことになります。ちなみにこの越境合併によって、旧山口村の郵便番号と自動車のナンバープレート(の管轄支局)も中津川市のものに変わったようです。なぜか市外局番は変わらなかったらしいです。

で、そのような背景を持つ、超レアな旧山口村のマンホールがこちらです。村の木であったツバキと、同じく村の花であったムラサキツツジをあしらったデザインになっています:



財政的な理由もあって、今でも市町村合併や市政への移行は多く発生していますが、道にはその名残が残り続けるわけです。そんな歴史の道しるべという意味でもマンホールは面白いです。デザインの華やかさだけがファンの心を掴んでいるわけではない、ということを紹介したかったのでした。

このページのトップヘ