Androidアプリ開発日誌 1日目

はじめに

Androidアプリの開発をやってみたいなーと前々から思っていたので始めてみました。

以前も同じように考えては入門書読んで挫折してたので、今回は開発日誌をつけつつがんばってみます。

目標は3〜4ヶ月くらいで何かしら単純なアプリをリリースする。ということにします。

開発環境の準備

手元の環境は

です。

AndroidStudioのLinux版は「Android Studio と SDK ツールをダウンロードする | Android Studio」にありました。

プロジェクトの作成

特別なことはせず、EmptyActivityを選択してプロジェクト作成。

.gitignoreファイルをGitHubから取ってきてプロジェクトのルートフォルダに置いておきます。

wget https://github.com/github/gitignore/blob/master/Android.gitignore ${PRJ_ROOT}/.gitignore

Fragmentの実装

今日はFragmentの実装を試してみました。

最近(?)のAndroidアプリはActivityに大きな役割はもたせず、代わりにFragmentがViewを管理したほうがいいらしいです。

Android はじめてのFragment - Qiita

まずは上を参考に、上のリンクにある「レイアウトファイルからFragment追加する方法(静的な追加)」と「コードからFragmentを追加する方法(動的な追加)」のに種類を試してみました。

動的なFragment追加は、あらかじめActivityのレイアウトファイルにLinearLayoutというコンテナ(入れ物)を置いておき、そこにFragmentを追加するって形になるんですね。へー。

今日は力尽きたんでこのへんでおしまいです。

Pythonで複数の配列を同時にソート

Python使ってて、複数の配列を同時にソートしたくなることありますね。

たとえば、キー配列をもとに値配列をソートしたいときとか…

そんなときはzipをうまくつかってください。

a = [2, 0, 1]
b = ["a", "b", "c"]

# zipで二つの配列を統合
c = zip(a, b)

c.sort()

# 統合していた配列をもとに戻す
a, b = zip(*c)

print(a)
print(b)
# (0, 1, 2)
# ('b', 'c', 'a')

結果を見ると配列aをキーにしてソートされていることがわかります。

結果がタプルで得られてることに注意しましょう。

ちなみに、配列が3つ以上でもzip(a, b, c, …)と増やしていけばOKです。

もしソートに使うキー配列を変えたい場合には、itemgetter()を使うとよいです。

from operator import itemgetter

a = ["a", "b", "c"]
b = [2, 0, 1]


c = zip(a, b)

# itemgetterには何番目の配列をキーにしたいか渡します
c.sort(key=itemgetter(1))

a, b = zip(*c)

print(a)
print(b)
# ('b', 'c', 'a')
# (0, 1, 2)

これでいくらでも好きにソートできますね!以上!

Ubuntuのターミナルで丸数字がずれる問題の対処法

問題

Ubuntuのターミナルで丸数字や特殊な全角を使っていると、表示がずれる問題があります。

f:id:xterm256color:20161120202407p:plain

画像のように、丸数字とその後の文字が重なってしまっています。

原因は、丸数字の表示幅が「半角」になってしまっていること。

続きを読む

XenServer の dom0 で yum を使う

XenServer はデフォルトでは yum が使えなかったので、使える方法を探しました。

環境

XenServer 7.0.0

yum 有効化

/etc/yum.repos.d/CentOS-Base.repo 内のリポジトリ情報を編集します

  1. コメントアウトされた baseurl を有効にする(#baseurlbaseurl に変更)
  2. enabled=0enabled=1 に変更
  3. name 行の $releasever7.2.1511 に置換する
sed -i "s/^#baseurl/baseurl/" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s/^enabled=0/enabled=1/" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s/\$releasever/7.2.1511/g" /etc/yum.repos.d/CentOS-Base.repo

ダメなところ

yum update をしてパッケージ更新しようとすると、エラーメッセージが表示される。

Error: Package: sm-1.12.2-xs202.518.x86_64 (@install/$releasever)
           Requires: xenserver-multipath
           Removing: device-mapper-multipath-0.4.9-85.el7_2.1.xs13.x86_64 (@install/$releasever)
               xenserver-multipath
           Updated By: device-mapper-multipath-0.4.9-85.el7_2.5.x86_64 (updates)
               Not found
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

とりあえす --skip-broken オプションを付けて対処。

参考サイト

Xenserver 7.0 Repositories - Command-Line Interface - Discussions

TensorFlow ソースコードからのビルド方法

TensorFlow は Pip を使ってインストールするのがおそらく一般的。ですが、ソースコードからもビルドすることができます。

環境

  • Ubuntu 16.04.1
  • Geforce GTX 1060
  • NVIDIA Driver 367.44
  • ※ CUDA Toolkit 8.0
  • ※ cuDNN 5.1
  • ※ TensorFlow (Commit: 2a6d7511f13a0387857081f1cf64d282d2816a62)

※が今回のインストール対象

続きを読む

XenServer 7 インストール手順

仮想化ハイパーバイザの XenServer の新しいバージョン XenServer 7 がリリースされていたので早速インストールしてみました。

インストール環境

  • 筐体:Intel NUC6i5SYH
  • CPU:Intel Core™ i5-6260U
  • メモリ:Crucail CT8G4SFD8213 (DDR4 8GB)
  • HDD:PLEXTOR PX-128M5S (128GB)
続きを読む