調べたこと、作ったことをメモしています。
こちらに移行中: https://blog.shimazu.me/

strace コマンドの使い方をまとめてみた : sonots:blog

Link: strace コマンドの使い方をまとめてみた : sonots:blog

[T. S. Pillai et al. All File Systems Are Not Created Equal: On the Complexity of Crafting Crash-Consistent Applications. OSDI'14.](https://www.usenix.org/conference/osdi14/technical-sessions/presentation/pillai)

で紹介されていたALICEというアプリケーションでstraceをめっちゃ使っていたけど、実際に自分が使ったことは殆どなかったのでどういう出力をされるものなのか調べてみたところ、このブログがよくまとまっていた。

gogsのdockerを永続化させる

はじめてdockerを真面目に使ってみた。 以下のパッチを, githubからクローンしてきたgogsの中で当てれば永続化できる、はず。 https://gist.github.com/amiq11/b7223e684631f3caa02e

当て方は以下

$ git clone git@github.com:gogits/gogs.git
$ cd gogs
$ wget https://gist.githubusercontent.com/amiq11/b7223e684631f3caa02e/raw/12a1a9631b034617567c11eb1aa5c6dccc06f585/gogs_persistent.patch
$ patch -p1 --dry-run < gogs_persistent.patch
# 良さそうなら以下を実行
$ patch -p1 < gogs_persistent.patch
$ cd docker
$ ./assemble_blocks.sh docker_gogs_persistent gogs_storage w_db_persistent option_db_mysql
$ fig up

Ubuntu上のChromeでのタッチパネルの利用

概要

windowsではどのアプリケーションでも、スワイプがきちんとスクロールやドラッグになったりピンチが拡大縮小になったりするのに、ubuntuではただのマウスのクリックや移動でしかなく、おかしい状況だった。 でも、絶対なんかやり方あるだろ!と思って調べてみたところ、chrome上ではタッチパネルをきちんと利用できることがわかったのでメモ。

環境

方法

参考ページ: Ubuntu 14.04 multi touch screen support - Ask Ubuntu

方法としては単純で、google-chromeを起動するときのオプションに--touch-events=enabled--enable-pinchを追加すればよい。これをデフォルトで起動するため、以下の2つの起動スクリプトを変更する。

  1. Lens(Windowsキーを押すと出てくるやつ)で起動するためのスクリプトを変更
  2. コマンドライン上でgoogle-chromeと打つときに勝手にオプションが追加されるように変更

Lens(Windowsキーを押すと出てくるやつ)で起動するためのスクリプトを変更

$ sudo vi /usr/share/applications/google-chrome.desktop

108行目のExecオプションが以下のようになっているはず。

Exec=/usr/bin/google-chrome-stable %U

これを、下のように変更。

Exec=/usr/bin/google-chrome-stable --enable-pinch --touch-events=enabled %U

コマンドライン上でgoogle-chromeと打つときに勝手にオプションが追加されるように変更

コマンドは以下。

$ sudo rm /usr/bin/google-chrome
$ sudo vi /usr/bin/google-chrome
$ sudo chmod +x /usr/bin/google-chrome

viで/usr/bin/google-chromeを開いたときに、以下のようなスクリプトを書く。

#!/bin/bash
/etc/alternatives/google-chrome --enable-pinch --touch-events=enabled $@

おわりに

これで、とりあえずChromeだけはタッチ操作がきちんとできるようになるはず。
Unityのタッチ対応の方法は絶賛募集中でございます。。。。

無銘闇人の電脳ろぐ: iBusでxmodmapでの設定が消える問題の解決方法とか

Link: 無銘闇人の電脳ろぐ: iBusでxmodmapでの設定が消える問題の解決方法とか

最近Google Docsで文字変換中に次の文字を入力すると一文字目が入力されないというバグが発生していたため、ibusに戻ってくることにした。しかし、ibusだとどうやらXmodmapが自動では読み込まれないようだったので調べてみたところ同じ現象が起こっている人を見つけた。

手順

  • ibusの設定を開く(コマンドはibus-setup)
  • 詳細タブを開く
  • システムキーボードレイアウトを利用する、にチェックを入れる

簡単だった。

gcc/g++のincludeパス・ライブラリのリンクするためのパスを増やす

# For gcc/g++
export CPLUS_INCLUDE_PATH=$C_INCLUDE_PATH:$HOME/local/include
export LIBRARY_PATH=$LIBRARY_PATH:$HOME/local/lib:$HOME/local/lib/x86_64-linux-gnu

普段実験用のパッケージを$HOME/localにインストールするので、CPLUS_INCLUDE_PATHやLIBRARY_PATHを追加した。


最近全然メモしてなかったので、備忘録が役割を果たしていない。 ちゃんとマメに書いていかないとなあ。

RDSとEC2を使ってみた

概要

AWSをつかって簡単にデータベースが構築できるサービス、RDSを利用してみたのでそのメモを書いておきます。

EC2とは

Amazonの提供するIaaSのサービス。計算リソースとコストに応じて利用するインスタンスのタイプを選ぶことができます。たくさんあるインスタンスタイプのうち、今回はt2.mediumを利用しました。t2インスタンスはCPUのリソースを使わない時にはトークンが貯まり、CPU boundな処理(ビルドなど)を行う際には実CPUのリソースをフルに活用出来るという仕様のようです。(インスタンスタイプを参照)

RDSとは

Amazonの提供するRDBMSをEC2のインスタンス上にセットアップして提供してくれるサービス。利用可能なRDBMSとしてはMySQLPostgreSQLといったオープンソースのものから、OracleSQL Serverといったライセンスが必要なものまであり、高価なライセンスをはじめに払うほかにライセンスが従量課金の金額に含まれる形態のものもあるため、簡単に試せそう。スナップショットやインスタンスタイプの変更も可能で、Multi-AZ構成にすることでデータセンター単位での障害にも対応できるようです。 しかし、RDSのインスタンスタイプの変更はフェイルオーバー時間がある程度かかるという記事もあるので、注意が必要かもしれません。
今回はPostgreSQLをt2.microインスタンスで利用してみました。ストレージは5GB。

RDSのアプリケーションからの見え方

これが個人的にはじめよくわからなかった部分です。
RDSのセットアップでは、Database名とユーザー名を入力し、インスタンス等を選択してlaunchするというごく普通の手順を踏みます。その際、DNSが設定されて外部からアクセスできるようになり、今後はそのドメインを利用してアクセスすることができるようになります。

RDSのセットアップ方法

cliでやる方法もありますが、とりあえずGUIから。

VPC Security Groupの作成

  1. EC2のコンソールを開き、左のメニューからSecurity Groupsを開き、Create Security Groupをクリック。
  2. ポップアップが出るので、Security group name、Descriptionを記述して、sshができるようにRuleを図のように追加します。
  3. Createを押すと、コンソールに次のように出てきます。

EC2インスタンス(RDSにアクセスするノード)のセットアップ

  1. Instancesを開き、Launch Instanceをクリックします。
  2. OSがインストール済みのイメージからCloneします。今回はUbuntu Server 14.04を選びました。
  3. いろいろあるInstance Typeから、適当なものを選びます。ここではt2.microを選びました。
  4. 最後に確認が出るので、Edit Security Groupを選択し、先ほど作ったものを選択。
  5. Launchをクリックして、EC2のインスタンスを起動します。
  6. EC2のコンソールから、Private IPsのIPをコピーし、Security Groupsを開きます。
  7. 作成したGroupを選択し、InboundをEditし、Custom TCP Ruleからポート5432、SourceをCustom IPでコピーしたIPを入力(172.32.0.0/32というマスクのついた形式)

RDSのセットアップ

  1. RDSのコンソールを開き、Launch DB Instanceをクリック。
  2. DBのエンジンを選択。ここではPostgreSQLを選択しました。
  3. Multi-AZにするかどうかを選択できますが、今回は必要がない(上に無料なので)Single-AZにしました。
  4. インスタンスの設定を行います。ここで設定したMaster Userはデータベースにアクセスするためのユーザーになります。
  5. ネットワークやデータベースの設定を行います。VPC Security Zoneは、EC2のコンソールのほうから設定したものを選択することになります。
  6. さいごにLaunch DB InstanceでRDSのインスタンスを立ち上げることができます。
  7. コンソールに戻ると、次のような画面になります。このインスタンス一覧のすぐ下にある、Endpointがそのノードにアクセスするためのドメインになります。

RDSの利用

EC2のインスタンスSSHで入ってからの操作をメモします。といってもこれだけ。 ちなみに、ubuntu serverの場合はデフォルトのユーザはubuntuなので注意。(普段Amazon Linuxをつかっていると、ついec2-userで入ろうとして死ぬ。)

$ sudo aptitude install postgresql-9.3
$ psql -U masteruser -h ${Endpointに書いてあったドメイン} testdb

雑感

DBサーバをlaunchするのは非常に簡単にできて驚きました。ただ、同一セキュリティグループ内でもInboundのルールが適用される点などはいまいちまだ理解できていないので、AWSの仕組みについてはもうすこし勉強する必要がありそうです。


この記事はクラウド基盤構築の課題として提出しました。

ちなみに、課題は以下のようなものです。

クラウド基盤構築コース、もしくは、これまでITシステムに関わった経験の中で、自身で調べた(Linux、仮想化、クラウドなどに関連する)技術要素について、その技術解説をBlog等にまとめてください。
その際、以下の内容を含めるようにしてください。

・ その技術が必要な場面
・ その技術の利用手順
・ その技術の背景にある仕組みの解説

体裁や言葉遣いなどはあまり気にせずに、「その技術を知らない人が読んだ時に、技術の必要性、使い方、仕組みを理解して納得できるかどうか」という点を重視して作成してください。

中井さんの授業はとてもおもしろかったので、またlinux関係のイベントとかいったらお世話になりたいと思います!

(48-146421)

RaspberryPiのタイムゾーンを日本時間に設定する

Link: RaspberryPiのタイムゾーンを日本時間に設定する

<blockquote class="link_og_blockquote">まえがき RaspberryPiで動かす管理アプリを制作していました。とりあえずBeta的なノリだけど動かせる状態になったので、開発用に使っていたマシンから実際に運用するRaspberryPiのマシンに移...</blockquote>