Docker + gitBucket + Dropboxでプライベートgithubな話@さくらVPS

概要

Docker上でgitBucketコンテナを動かして,gitBucketのデータ置き場をDropboxにする話.
環境は,CentOS6.5なさくらVPS.
プライベートgithub的なやつをつくろう!

経緯

さくらVPSを借りているんだけど,最近はいろいろと便利なサービスがあって,正直全然使う機会がなくなってる.

一方で,githubのプライベートリポジトリが使いたくて月額課金しているんだけど,これが地味に痛い.bitBucketとか,gitlabとか微妙に使いづらいからしょうがないかと思ってたんだけど,最近gitBucketというgithubクローンが結構いい感じなことを知った.

そんで,gitBucketのDockerイメージがDockerHubにあったので,さくらVPSにDocker導入しようと思った.
環境移行するときのラクさも考えて,データはDropboxに置くことにした.


環境

  • CentOS 6.5(kernel 2.6.32-431.11.2.el6.x86_64)

    さくら借りた時にデフォルトだったやつです.

事前準備:dropboxとの連携

dropboxをサーバで使えるようにしておく.例えばこの方のブログなどが参考になりそうだと思う.

Dockerをいれる

このへんは公式の手順どおりにいく.
yumを使うと1.5.0が入るので,最新版が欲しければyumを使わない方法が公式に載ってるのでそれを参考にする.

# docker のインストール
$ sudo yum install device-mapper-event-libs
$ sudo yum -y remove docker
$ sudo yum install docker-io
# docker初期設定
$ sudo service docker start
$ sudo chkconfig docker on
# sudoしなくていいようにdockerグループに追加
$ sudo usermod -aG docker user
$ exit
# 動作確認
$ docker info

gitBucketをDropboxにデータ置くように設定して起動する

以下のコマンドで行う.このコマンドだと8080にアクセスするとgitbucketにアクセスできる.
デフォルトユーザは,IDパスともにroot.あとはふつーのgithubみたいに使える.

# gitbucket用のディレクトリをDropboxに作る.
$ cd Dropbox
$ mkdir gitbucket
# Dropboxと紐付けてgitbucketコンテナを起動する
$ docker run -d -p 8080:8080 -v /home/user/Dropbox/gitbucket:/gitbucket sken/gitbucket

おまけ:githubからリポジトリを移行する

この方のブログを参考にした. githubからリポジトリをまるっと取ってくる.タグとかブランチもそのままもってこれる.

# githubから該当リポジトリを手元にミラーオプションでクローン
$ git clone --mirror <SOURCE_REPOSITORY_URL>
$ cd <REPOSITORY>
# gitBucketで移行先リポジトリを作っておく.ミラーオプションつけてプッシュ.
$ git push --mirror <DESTINATION_REPOSITORY_URL>

SonyのMeshをハックしている話

概要

Sony のMeshがやってきたのでハックしてる.
ひとまずタグの白色LEDiPhoneアプリから制御できるようにした.
公式のアプリは使っていない.

youtu.be

Meshがどんなもんかっていうと,Makeクラスタの人にとって一番わかりやすいのは,未踏で開発されたTangramだろう. 単機能な電子ブロックをネットワークでつないで,アプリケーションを実現する. www.trangram.cc

もうちょっとどういうものか知りたければ,公式ページはもちろん,以下の様なページがある.

現状の不満

で,現在目立った不満としては,大きく,タグと開発環境(アプリ)の2点が挙げられると思う.

  • タグの種類が少ない.
    • 個人的にGPIOタグはチートすぎるし思想とズレてる感じもするし死ぬほどダサいと思ってる.
  • 開発環境がiPadだけ.
    • ソフトがめっちゃ重い.
    • バックグラウンドで動作しない.

となればすることはひとつで,Meshの通信プロトコルの解析です.
これができれば,タグを自前で量産することも,AndroidアプリやiPhoneアプリを作ることもできていい感じだと思う.

というわけで,ひとまずMeshタグの白色LEDを制御するiPhoneアプリを作った.
ただこれが正しくハックできているかというと結構微妙なところで,各タグの機能(ボタンとかLEDとか)はちょっとまだバグがあって公開にはもう少し時間がかかる感じです.
お楽しみに〜👋

youtu.be

Android wearをiPhoneで使えるようにした.その2:アルファ版リリースの話.

前回のエントリで書いた,iPhoneAndroid Wear が使えるようになるアプリのアルファ版を公開した.こんな感じ

alpha release: android wear works with iphone - YouTube

インストール

マーケットに公開したわけではなくて,APKリリースなので,ADBコマンドが使える環境が必要.
apkはGoogleドライブにある.
apkダウンロードリンク

Wear側でADBをオンにした状態でPCに接続して,下記コマンドを実行する.
wear_iosというアプリがインストールされる.

$ adb install Wearable-release.apk

使い方

動画をみるとだいたいわかる. ペアリングするために,LightBlue というアプリをStoreからインストールする必要がある.
動画にあるように,"Blank"という仮想のBLEデバイスみたいなものを追加して,オンにしてください.

教えてほしいこと

動作機種

どの機種で動いたか教えて欲しい.バグとかも.

通知アイコン

通知がきたときにアプリのアイコンが出るのと出ないのがある.出してほしいアプリとかあったら教えて欲しい.今は,以下のアプリのアイコンが出るように設定してる.

  • 電話
  • SMS(メッセージ)
  • LINE
  • Gmail

これから

ソースを公開する.
Playストアで配信する.

Android wearをiPhoneで使えるようにした.その1: デモ(速報)編

こんな感じにiPhoneの通知をAndroid Wearで受けられるようになるものを作った.
AndroidWearとiOSを連携させる方法は Google公式のAPIでは提供されていない ためか,これまで 実現されていなかった. そのため本エントリでは速報的にデモ動画を掲載し,技術的な話は次回以降のエントリで説明していく. f:id:concre_shiitake:20150308165035j:plain

経緯

先週,@MohammadAGさんの,Android wear をiPoneで使えるようにしたっていう動画がバズってるのを見つけた.


Android Wear and iOS (direct connection) - YouTube

ぼくはAndroid端末も持っているんだけど,基本的にはiPhoneユーザなので手元のAndroid Wearを持て余していたもんだから,この動画にはすごく興味をもった.
ただ,これはデモ動画だけで,APKやソースの公開についてはまだ未定 ということだったので,自分で考えて実装する必要がある.

で,つくってみた

iPhoneにメッセージを受信した際の通知をAndroid Wear側でユーザに通知します.

Android Wear work with iPhone - YouTube

これから

まだざっくりとしたプロトタイプなので,もう少し仕様を見ながら修正をして,来週末くらいには公開できるといいなと思ってます.  

Intel Edison, ubilinuxへカーネルモジュールを追加する.

Intel Edison Advent Calender 2014の6日目です.
本日の担当は@shiitakeoですこんにちは.

宣言どおり,ubilinuxカーネルモジュールを追加するお話をします.
ubilinuxにカーネルモジュールを追加することができると,Webカメラを使ったり,オーディオを使ったりと,Edisonの可能性が広がりますね!

経緯

Yoctoはopkgのリポジトリが貧弱なので,ubilinux最高!みたいになってきてるのが実際のところだと思う. たしかにubilinuxのaptのリポジトリはいい感じなんだけど,ソースが提供されていないのでカーネルモジュールの追加どうすんのって感じだった.

解決策

Yoctoでカーネルをビルドして,ubilinuxへコピーするような形をとると,ubilinuxへカーネルモジュールを追加することができる.
具体的には,/boot/にあるカーネルと,/lib/modules以下にあるカーネルモジュールを,Yoctoからubilinuxへ転送する. ここで注目したいのは,ubilinuxのカーネルはYoctoのカーネルをベースにしているということで,試しに再ビルドしたYoctoのカーネルをubilinuxにコピーしてみたら,カーネルモジュールを追加することができた.

まあでもOSビルドして基板に転送,くらいのノリなので,今までのスタイルとあまり変わらないみたいな感じ.

1. 準備@Ubuntu:必要なカーネルモジュールを追加したYoctoイメージの作成.

必要なモジュールを追加したYoctoをビルドする.
カーネルビルドについては,Edisonアドベントカレンダー3日目の@k_yoneさんのエントリを参考にしてください.
発売当初は結構うまく行かなくて,ひさやんさんのエントリにお世話になった記憶がある.これとか,これとか.今はそうでもないのかなあ?

2. 準備@Edison

カーネルとモジュールを書き換えるので,現在入っいるものを削除しておきます.どっかにコピーしておいてバックアップしてもいいです.

$ rm /boot/*
$ rm -r /lib/modules/*

3. Edisonへ必要なファイルを転送する@Ubuntu

イメージファイルをマウントして,カーネルカーネルモジュールをscpを使って転送します.
カーネルビルドの際の設定(menuconfig)で,"*"にしたものはカーネルに組み込まれているので,edison-image-edison.hddimgの中に,"M"にしたものはカーネルモジュールになるので,edison-image-edison.ext4の/lib/modules以下に存在しています.

# postBuild.shを実行して作成される,ビルドしたイメージが存在するディレクトリで作業しています.
$ cd toFlash
$ sudo mkdir -p /mnt/edison/kernel
$ sudo mkdir -p /mnt/edison/modules
$ sudo mount -o loop  edison-image-edison.hddimg /mnt/edison/kernel
$ sudo mount -o loop edison-image-edison.ext4 /mnt/edison/modules
# user名とIPは適宜変更してください.
$ scp /mnt/edison/kernel/* root@192.168.xxx.xxx:/boot/
$ scp -r /mnt/edison/modules/lib/modules/* root@192.168.xxx.xxx:/lib/modules/

4. 再起動してカーネルとモジュールを読み込む@Edison

転送ができたら,再起動してあげれば,カーネルとモジュールが読み込まれて,ubilinuxで利用できるようになります.

$ reboot

5. 確認

今回はuvcをカーネルへ追加してみました.

root@ubilinux:~# find / -name uvc*
/sys/bus/usb/drivers/uvcvideo
/sys/kernel/debug/usb/uvcvideo
/sys/module/uvcvideo
/usr/include/linux/uvcvideo.h```

最後に

ubilinux最高!

おまけ

なんかこう固い話でつまんないので,HexBugとコラボして走ったりかっとんだりするEdisonくんを作りました.
ご確認ください.


走れ!Edisonくん! - YouTube


かっとべ!Edisonくん! - YouTube

水に反応して光るバッジをAgICで作った(Maker Fair Tokyo 2014落選作品のご紹介)

何を作ったか

MFT2014に落選したモノを,AgICを使って作った.雪だるま型の雪合戦用のバッジで,雪(水)がバッジにあたると雪だるまの目が光る.
↓バッジが濡れると…
↓雪だるまの目が光る. かわいい

MFT2014に落ちた

先週の日曜日にMaker Fair Tokyo 2014に行きました.
出展落ちたけど行きました.
出展落ちたけど行きました.
出展落ちたけど行きました.

何を出そうとしていたかというと,これまで作ってきたものと新作で, 新作は,水に反応して光るバッジと,そのバッジをたくさん並べた壁を出す予定だった.
出展申込が夏だったのもあって,うおおおお!水鉄砲でバッジ狙ったり,壁にバンバン水打ってビガビガ光ってたら最高じゃん!ちっちゃい子も楽しめるじゃん!受かる要素しかない!みたいなテンションだったんだけど,冷静に考えるとMFTは秋の終わりなんだよなあ,みたいな感じだった.

AgICとの出会い

で,出展落ちてから基板発注する元気もなくなって放置してたんだけど,先日AgICという,光沢用紙上にマーカーで書いた線で回路を作れるペンを手に入れた. こういう写真用の光沢用紙を使う.

以前にもこういうのはあって,例えば絵の具みたいになってて,それを紙に塗って回路作るやつとかがあった. けどこの手のやつは水にめっちゃ弱くて,今回のような水に濡れることを前提とした用途には向いてなかった.
一方で,AgICはある程度水に耐えられるので,じゃあこれで作れたらいい感じじゃんみたいな感じで,水に反応して光るバッジをAgICで作ってみた. 季節外れという弱点を克服するために,ユースケースは雪合戦にして,バッジの形も雪だるまっぽい感じを目指した.

仕組み

LEDを光らせるにはふつう,電池と抵抗とLEDをを使う. で,今回はLEDを点灯回路の抵抗の部分を水に置き換えてる.
こうすると,LEDと電池をつなぐオープンな箇所が,水で閉回路になってLEDが光るようになる.

ただ,伝導率がだいぶ低いのでトランジスタを使ってる.電源がそれなりにゴツイやつなら別にトランジスタいらないんだけど,ボタン電池でやりたかったのでトランジスタを使った.
雪だるまのおなかの部分にある2つの電極をまたぐように水がかかると,トランジスタのベース部分に電流が流れてLEDがが光る.このあたりはデザイン的にもうちょっと雪だるまにマッチするようなものにできるといいなあ.と思う.


AgICにはんだづけができなかったので,雪だるまのおなかの電極と電池をAgICを塗った紙でつないでたりとかしてる.この部分は雪だるまの手をイメージしてみたんだけど,なんか心臓から毛が生えたみたいな感じになってキモくなったと思う.

で,気になるところとしては,今回"水"って言っているのは純水ではなく水道水なのですが,雪って電気伝導率低いっていうし,実際どうなんでしょうね.雪玉作るときに手でにぎにぎするしいけるのかなあ.どうなんだろう.

今後

基板起こすのもいいけど,こういう紙とかテープとか使うのも楽しいなあと思った.
ちっちゃい子向けのワークショップにして,好きな形とかにしたら楽しいと思うし,来年のMFTとか出したい.なんか別の機会がないかなあとも思ってる.家族で来て楽しめたり,別にひとりで来ても楽しいみたいなやついいと思う.

Intel Edisonで大量のサーボを動かすPCA9685を使う話

概要

I2Cを使って,1つのチップで16個のサーボを動かすことのできるサーボドライバを使う話.
使うのは,Adafruitのモジュール Arduino用のライブラリはあるんだけど,微妙に修正が必要.
このブログではこれまでEdisonならではのIoTという文脈で試してきましたが,ここではお手軽なArduinoIDEを使ってみます.
Pythonで使う方法は,公式でRaspberryPi用の説明があるみたいですけど,このままで動くのかな?どうなんでしょう.

Arduino用ライブラリの導入

Arduino用のライブラリはgithubにあります.
これを落としてきて,Galileo, Edison用のArduinoIDE向けのライブラリディレクトリへ配置します.Macの場合は以下.

/Applications/Arduino\ edison.app/Contents/Resources/Java/libraries

ライブラリの修正

以下のディレクトリにあるcppファイルを修正します.

/Adafruit_PWMServoDriver/Adafruit_PWMServoDriver.cpp

Adafruit_PWMServoDriver.cpp中で以下のようになっている箇所があります.

#if defined(__AVR__)
 #define WIRE Wire
#elif defined(CORE_TEENSY) // Teensy boards
 #define WIRE Wire
#else // Arduino Due
 #define WIRE Wire1
#endif

ここの部分を全部コメントして,以下の1文のみにします.

#define WIRE Wire

これで,問題なく動作するようになります.

配線,プログラム

これについては通常のArduinoと変わらないので,Adafruit公式のチュートリアルや,サンプルプログラムを参照してください.