2014年9月27日土曜日

Bloggerでコードを折り返させないで表示する

以前Bloggerでコードを見栄えよく表示する方法を投稿したのですが折り返しがあると
見づらいと感じたことが何度かありました。
今回は折り返ししないで、枠内に収まらなければ横スクロールできるデザインにしたいと思います。

1. レイアウトの「ガジェットを追加」から「HTML/JavaScript」を選択します。
2. 「HTML/JavaScript」編集画面の「コンテンツ」に次のコードを埋め込んで保存します。
<!-- Google Code Prettify -->
<script src='https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js'></script>
3. テンプレートの「カスタマイズ」で「上級者向け」を選択します。
4. 「CSSを追加」を選択して次のコードを埋め込んで「ブログに適用」します。
li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{ list-style-type: decimal !important }

pre.prettyprint{
  overflow-x: auto;
  word-wrap: normal;
  font-family: 'Lucida Console';
}

ol.linenums{
  display: table;
  width: 93%;
}
5. ヘッダーの「Blogger に戻る」で戻ります。

widthを指定しないとコード行の背景色が欠けてしまうので設定しています。
widthは横スクロールの有無に関らず背景色が大きく欠けない程度に93%;を設定しています。
calc(100%-OOpx)と指定することで%指定でも任意の横幅を設定できるはずなのですが
認識せず思ったとおりに反映されなかったのでwidth: 93%;にしています。

IE11、Firefox、Chromeで確認したところ背景色も欠けずに表示されました。

2014年9月23日火曜日

CentOS6 に Pandoc を yum でセットアップする

CentOS6にPandocをセットアップしてみました。

Pandocのインストール方法にCentOSが無かったのですがEPELにパッケージがありました。

とりあえずPandocを試してみたかったので今回はこのパッケージを利用しました。

Pandocのインストール
# EPELリポジトリを取得
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# EPELリポジトリをインストール
rpm -ivh epel-release-6-8.noarch.rpm
# Pandocパッケージがあることを確認
yum info pandoc
# Pandocパッケージをインストール
yum install pandoc
PandocでMarkdownファイルをHTMLファイルに変換
# Markdownファイルを作成
vi input.md
# MarkdownファイルをHTMLファイルに変換
pandoc input.md -o input.html
input.mdの内容
# test

## テスト
input.htmlの内容
<h1 id="test">test</h1>
<h2 id="テスト">テスト</h2>
入力ファイルの文字コードはutf-8で作成しましたが、日本語も表示されていました。
今回インストールしたPandocは約2年前のバージョン(リリースページ)になるので利用するときは
だいぶ前のバージョンということを考慮しといたほうが良いかもしれないです。

Pandocパッケージ情報
Name        : pandoc
Arch        : x86_64
Version     : 1.9.4.1
Release     : 1.1.el6
Size        : 1.1 M
Repo        : epel
Summary     : Markup conversion tool for markdown
URL         : http://hackage.haskell.org/package/pandoc
License     : GPLv2+
Description : Pandoc is a Haskell library for converting from one markup format to another,
            : and a command-line tool that uses this library. It can read markdown and
            : (subsets of) reStructuredText, HTML, and LaTeX, and it can write markdown,
            : reStructuredText, HTML, LaTeX, ConTeXt, Docbook, OpenDocument, ODT, RTF,
            : MediaWiki, groff man pages, EPUB, and S5 and Slidy HTML slide shows.

VirtualBox 4.3.16 で has terminated unexpectedly during startup が発生したときにしたこと

VirtualBox 4.3.16 で仮想マシンが開けなくなるエラーが発生しました。
The virtual machine 'xxxxx' has terminated unexpectedly during startup with exit code 1 (0x1).

終了コード : E_FAIL (0x80004005)
コンポーネント: Machine
インターフェース: IMachine {480cf695-2d8d-4256-9c7c-cce4184fa048}
思い当たるのはVirtualBoxを4.3.12→4.3.16にアップデート中にプロセスが残っているにも
かかわらず無視(ignore)してアップデートしたことです。

次の手順で今のところ仮想マシンは起動できるようになったので残しておこうと思います。

1. VirtualBox 4.3.12をダウンロードページから再インストール
2. PCを再起動
3. インストールしたディレクトリの「\drivers\vboxdrv」フォルダにある「VBoxDrv.inf」ファイルを
右クリックで「インストール」を選択してインストール

これは 4.3.12 再インストール後に仮想マシンを起動すると"Cannot access the kernel driver"と
表示されたので、この症状に対応するためです。

Cannot access the kernel driver!
VirtualBox Runtime Error

4. PCを再起動
再起動せずに仮想マシンを起動すると"Cannot access the kernel driver"が出たので。

"Cannot access the kernel driver"には次のサイトも参考にさせていただきました。
http://kitaz.dip.jp/default/modules/xpress/archives/643
http://qiita.com/komiya_atsushi/items/b92d1ab844b37a78ac1c
https://forums.virtualbox.org/viewtopic.php?f=6&t=46845

問題なく動作しているPCはアップデートでプロセス云々聞かれずに終了できたので、今後は
アップデート中に問題が発生した場合は綺麗な状態にしてからアップデートしたいと思います。

2014年9月20日土曜日

Android Developer の OS別のシェアのページが見つけづらい

Android DeveloperにあるAndroidのOS別のシェアのページがすぐに見つけられなかったので。



Android DeveloperのトップページからヘッダーのDevelopersをクリック。


ヘッダーにあるメニューが表示されるのでAboutをクリック。


Dashboardsをクリックで目的のOS別のシェアのページにたどり着けました。


最近のAndroidの動作確認端末はどれが良いのか

数年前にAndroidのネイティブアプリを開発を担当していたのですが動作確認の際に
端末の選定で何も知識が無く困ることがありました。

後で知ったのですが、端末を選定するポイントがあるみたいですね。
Androidにおけるテストに関して デバイスをどう選択するか 2012を見たときに凄く参考に
なりました。ありがたかったです。

メーカー + OS + チップセットの組み合わせが選定のポイントと、このとき知りました。
このようなポイントを踏まえてみると3項目でどれも種類が多いのが分かりました。orz

最近の端末を調べてみました。
今回もAndroidにおけるテストに関して 端末をどう選ぶか 201404を参考にさせていただきました。

Xperia、AQUOS Phone、ARROWS、Galaxy、Nexusの5種類は抑えておくと良いかもしれないです。
チップセットはQualcommのSnapdragonがシェアをとっているようです。
AndroidのOS別のシェアは4.0.3(API Level15)以上が全体の約85%を占めています。
WikipediaのAndroid端末一覧を見ると国内で初期に4.3がインストールされている端末は数が
少ないので、場合によっては動作確認端末での優先度は低くなると思いました。

2013年のキャリア別の端末別のランキングを見るとXperia、Galaxy、AQUOS Phoneが高いので
2013年の端末を動作確認に含める場合は考慮しようと思います。

Xperiaはdocomoとauで発売されて人気機種、AQUOS Phoneはどのキャリアでも発売されて
いるので、外せないと思います。
Galaxyも昔から人気機種ですね。
ARROWSは昔は不評だったようですが、最近の端末は評判が良いようですので選定の際には
チェックしといたほうが良さそうです。
昔はノーマークだったNexusはNexus5がSIMフリーやキャリアどちらでも取り扱われているので
どのくらいシェアがあるのか分かりませんがNexusはこれからアプリを開発する際には考慮
しといたほうが良さそうです。

2014年9月19日金曜日

Golang環境を構築するときに気付いたこと

Go言語を触ってみたかったので、環境を構築しようとGetting Startedダウンロードページ
参考にしました。

最近知ったHTMLをコマンドラインからパースするpupとかコマンドラインを便利にできるpeco
触りたかったので go get で取得しようとしたところ $GOPATH が設定されていないので
取得できないとエラーが。

$GOPATH の設定は環境を構築する上で必要らしく重要な環境変数らしいです。
go get のときにエラーが出たので当たり前ですよね。

今度は $GOPATH に設定する値は何が無難なのか分からなかったので調べることに。
GOPATHとワーキングディレクトリを見ると作業ディレクトリのような扱いに感じたので
ホームディレクトリ直下にフォルダを作成。
# GOPATHのパスはGoのバージョンごとに分けたほうが良いと知り .go だけよりも
# バージョンがあると後で融通が効くと思ったので下の設定になりました。
# %USERPROFILE%\.go\{Goのバージョン}
SET GOPATH=%USERPROFILE%\.go\1.3
仕切りなおして再度 go get を実行するとコンソール上に hg の表示が。
調べてみたところ Google が公開しているライブラリは Mercurial を通して公開されているとのこと。

必要なので Mercurial もダウンロードページからインストーラをダウンロードしてインストール。
今回は Mercurial だけ欲しかったので一覧から次の項目のインストーラを利用しました。
Mercurial 3.1.1 MSI installer - x64 Windows - requires admin rights

Mercurial のダウンロードページに Inno Setup installer というはじめてみる名前が。
これも調べてみると OSS のインストーラとのことでした。
特に理由は無いですが、MSI installer を選びました。

go get で無事にpupもpecoも取得できコマンドラインから実行できることを確認しました。
# go get で取得したパッケージは %GOPATH%\bin にバイナリができるので
# PATHに下のパスを追加することで利用できるようになります。
%GOPATH%\bin
Go言語を触りたいから Mercurialを知る→インストーラのInno Setup installerを知る
環境変数の管理の方法が増えた

ただ単にGo言語を触りたいだけだったのに、調べてブログに書き起こしてみると他にも
新たなことを発見・気付くことができました。

形にすることで残るし、些細なことにも気付けるきっかけになるのだなぁと再認識しました。

ちなみにpuppecoはバイナリが公開されているのでGo環境を構築しなくてもダウンロードして
PATHを通せば利用できるようになります。

2014年9月18日木曜日

Jenkins でリモートサーバーのコマンドを実行できる SSH pluginを使ってみた

毎朝Linuxサーバーの電源を入れては起動後に必要なスクリプトを実行していたのですが
たまに忘れたりして他の人に迷惑をかけていました。

このような作業は自動でやりたいと思っていたのでJenkinsで出来ないか調査したところ
リモートサーバーのコマンドを実行できるSSH pluginというのがありました。

インストールから設定方法
  1. プラグインの管理の「利用可能」からsshで検索してSSH pluginをインストールします。
  2.  システムの設定で「SSHリモートホスト」でSSHサイトの「追加」ボタンを押すと下のキャプチャの設定項目が表示されます。
  3. ユーザー名とパスワードで接続できる場合はホスト名、ユーザ名、パスワード/パスフレーズでパスワードを入力します。

SSH plugin 設定画面
SSH plugin 設定画面
公開鍵で接続を行っている場合
キーファイルに秘密鍵のファイルパスを入力して、パスワード/パスフレーズで秘密鍵の
パスワードを入力することで接続できるようになります。
秘密鍵をPuTTY形式で作成している場合はOpenSSH形式に変換する必要があります。

OpenSSH形式ではなかったために見事に接続に失敗してしまいました。

使い方
  1. ビルドの設定画面で「ビルド手順の追加」から「リモートホストでシェルを実行」を選択。
  2. 下のキャプチャの項目が表示されます。SSHサイトにはシステムの設定で追加したSSHサイトが選択できるので、実行するサイトを選択します。
  3. リモートホストで実行したいコマンドを入力します。
  4. ビルド実行で実際にリモートホストに対してコマンドを実行してくれます。

SSH plugin ビルド設定項目
SSH plugin ビルド設定画面