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

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

タグ:ubuntu

アマゾンで PC とラズベリーパイをシリアル接続する USB ケーブルを購入しました:
Raspberry Pi ラズベリーパイ用の USB-TTLシリアルコンソールのUSB変換COMケーブルモジュールのケーブル


これ、Windows ではデバイスドライバも提供されていて、Teraterm などでシリアル接続できることがよく知られています。では Ubuntu (16.04) で同様のことができるのか? ということに挑戦してみました。結論としては特別にデバイスドライバを用意することもなく、アクセスすることができました。以下、その手順です。


まずはラズベリーパイの設定(raspi-config)でシリアル接続を有効にします。raspi-config で Interface - Serial を選択します:
2018081701


「はい」を選んでシリアル接続を有効にします:
2018081702


次にラズベリーパイと USB シリアルケーブルとを接続します。USB シリアルケーブルの黒(GND)をラズパイの6番ピン、白(UART TXD(14))を8番ピン、緑(UART RXD(15))を10番ピンにそれぞれ接続します。赤は結線の必要がないので宙ぶらりんのままです:
IMG_2932


次に Ubuntu 側の準備です。実は特別にデバイスドライバを準備することもなく、そのまま認識されます。が、ただ認識しただけでは通信はできないため、そのための準備が必要です。

まず、今回のシリアル通信には cu コマンドを使います。なので、まずは cu をインストールします:
$ sudo apt-get install cu

次にシリアルポートの確認と設定を行います。Ubuntu の USB ポートに USB シリアルケーブルを接続し、次のコマンドを入力して、ちゃんと認識できているかどうかを確認します:
$ ls -l /dev/serial/by-id/

USB シリアルケーブルが正しく認識できていると /dev/ttyUSB0 といった感じで最後に 0(ゼロ)が付いたデバイスとして認識されます。今回は /dev/ttyUSB0 として認識されていると仮定して以下の説明を続けます:
20180814a


/dev/ttyUSB0 の権限を変更します:
$ sudo chmod 666 /dev/ttyUSB0

ここまでの手順で準備が完了しました。最後に cu コマンドで目的のデバイスに接続します。その際にボーレートを 115200 bps に指定して接続します:
$ sudo cu -s 115200 -l /dev/ttyUSB0

成功するとこんな感じでラズパイのログインプロンプトが現れ、ログインできます:
20180814


モニタがないとか、無線LAN がないとか、無線 LAN の環境が普段と違う時(の無線 LAN の設定を変えたい時)でもラズパイを使えて、とても便利な接続方法です。アナログ最強!

 

Ubuntu (や CentOS/RedHat Enterprise Linux)をデスクトップとして使っている人はあまり多くないかもしれませんが、自分はその1人です。知る人ぞ知る GPD Pocket も Ubuntu モデルを購入しました。

個人的には最近の Linux デスクトップは非常に便利だと思ってますが、ただ使っていて「あれ??」と思うことが無いわけでもありません。例えば今回紹介するのは MPEG4 動画の再生なんですが、そのコーデックは標準で充分にインストールされているわけではないので、そのままでは再生できないことがあります。その Ubuntu 環境での導入方法を調べたのでメモ目的も兼ねてブログにします。


まず、MPEG4 AAC コーデックなどの拡張メディア機能を Ubuntu に導入するには ubuntu-restricted-extras というパッケージをあらかじめ導入しておく必要があります。以下のコマンドで導入します:
$ sudo apt-get install ubuntu-restricted-extras

その後、必要なメディアパッケージを導入します。今回の MPEG4 であれば以下のコマンドでインストールします:
$ sudo apt-get install libav-tools ffmpeg


これで MPEG4 AAC や H.264 デコーダーが導入されて、Ubuntu デスクトップからも再生可能になります。





前回の続きです:
Ubuntu で Swift 言語を使う


前回は Ubuntu 上に Swift アプリケーション開発環境を用意して、ハローワールド的なアプリケーションを作って実行するまでを紹介しました。今回は Swift 用の Web アプリケーションフレームワークである Kitura を使って、Ubuntu 上の Swift で Web アプリケーションを開発してみます。 以下の作業の前に前回紹介した導入作業が必要になるので、まだの場合はこちらを参照して Ubuntu に Swift をインストールしておいてください。

では改めて Kitura アプリケーションを作ってみます。前回同様にアプリケーションプロジェクト用のディレクトリ(以下の例では myFirstKitura)を作って移動し、swift コマンドでパッケージを初期化しておきます(ここまでは前回と同様です):
$ mkdir myFirstKitura
$ cd myFirstKitura
$ swift package init --type executable

このプロジェクトでは Kitura を利用するため、パッケージ情報に dependencies を記述する必要があります。Package.swift ファイルをテキストエディタで開き、以下の青字部分を追加します:
import PackageDescription

let package = Package(
    name: "myFirstKitura",
    dependencies: [
        .Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 1, minor: 6)
    ]
)

そしてアプリケーションのソースコード Sources/main.swift を以下のように変更します。Kitura の HTTP Server を使って 8090 番ポートで待ちうけ、"/"(ドキュメントルート)への GET アクセスをハンドリングしてメッセージを表示する、という内容にしています:
import Kitura

// Create a new router
let router = Router()

// Handle HTTP GET requests to /
router.get("/") {
    request, response, next in
    response.send("ハローワールド!")
    next()
}

// Add an HTTP server and connect it to the router
Kitura.addHTTPServer(onPort: 8090, with: router)

// Start the Kitura runloop (this call never returns)
Kitura.run()
  ↑なんとなく Node.js の Express に似てます。。


ではこのコードをビルドして実行します:
$ swift build
$ ./build/debug/myFirstKitura (実行したままにします)

実行されている状態で、同じシステムのウェブブラウザから http://localhost:8090/ にアクセスし、コードに記述したメッセージが表示されることを確認します:
2017040402


ウェブアプリケーションとして稼働できていることが確認できました。実行したままになっているコマンドを終了するには Ctrl + C を実行します:
$ ./build/debug/myFirstKitura
^C  (Ctrl+C を実行して、コマンドプロンプトに戻る)
$


以上、簡単なサンプルでしたが、Web のルーティング機能が実装されたフレームワークで Swift アプリケーションを、macOS ではなく Ubuntu 環境で開発/実行することができるようになりました。この Swift ウェブアプリケーションは IBM BluemixSwift ランタイムとしても実装されており、作ったアプリケーションを Bluemix 上ですぐに運用することができます:
2017040403



(参考)
http://www.kitura.io/en/starter/gettingstarted.html


Apple が開発したプログラミング言語 Swift は 2016 年にオープンソース化され、macOS 以外のプラットフォームでも Swift のアプリケーション開発ができるようになりました。というわけで、実際に Ubuntu から Swift をセットアップして使ってみました。以下は自分の(VirtualBox 上の)Ubuntu 14.02 環境での作業記録です。

なお、今回は Swift 3.0.2 を使うことにします(2017/Apr/04 時点での最新バージョンは 3.1 ですが、このバージョンの場合 Xcode 併用となって環境準備が面倒だったので・・ ←訂正、コマンドラインだけでも 3.1 が使えました。「Xcode の一部として Swift が提供されている」という表現が正しいようです)。

Ubuntu で Swift をインストールしたり、Swift アプリを作成したりする作業はターミナルからのコマンド操作で行います。というわけでターミナルを起動し、まずは Swift をインストールする上での前提パッケージをインストールします:
$ sudo apt-get update
$ sudo apt-get install clang libicu-dev libcurl4-openssl-dev libssl-dev

続いて Swift のダウンロードページから Ubuntu 用の Swift 3.0.2 をダウンロードします:
2017040401


ダウンロードしたファイルを展開して、展開先にパスを通します:
$ tar xzvf swift-3.0.2-RELEASE-ubuntu14.04.tar.gz
$ export PATH=~/swift-3.0.2-RELEASE-ubuntu14.04.tar.gz/usr/bin:$PATH  (この行を ~/.bashrc などに書くのがオススメ)

これで Swift 本体のインストールは完了です。次にアプリケーションを作ってみます。開発用のディレクトリ(以下の例では myFirstSwift)を作って、そこに移動します:
$ mkdir myFirstSwift
$ cd myFirstSwift

このディレクトリの中で上記でインストールした swift コマンドを使い、Swift アプリケーションパッケージを初期化します:
$ swift package init --type executable

この時点で以下のようなファイル構成が生成されています:
myFirstProject
|- Package.swift
|- Sources
    |- main.swift
    |- Tests

いわゆる「ソースファイル」は Sources/main.swift になります。この時点での中身は以下のような Hello World 表示アプリケーションになっています:
print("Hello, world!")

必要に応じてテキストエディタで適当に書き直してみます:
print("ハロー Swift ワールド on Ubuntu!")

ソースコードが用意できたら swift コマンドでビルドします:
$ swift build

ビルド結果は .build/debug/myFirstSwift にあるので、これを実行して、期待通りの結果が出力されることを確認します:
$ ./build/debug/myFirstSwift
ハロー Swift ワールド on Ubuntu!

ごく簡単なサンプルでしたが、とりあえず Ubuntu 上で Swift アプリの開発ができることが確認できましたが。次回は Swift の Web フレームワークである Kitura を紹介する予定です。




(参考)
http://www.kitura.io/en/starter/gettingstarted.html


Google ドライブのファイルシステム(?)を fuse を使って Linux にマウントする、というためのツールを使ってみました。今回は Google Drive ocamlfuse というツールを使って、Ubuntu 14.04 環境にマウントしてみました:
https://github.com/astrada/google-drive-ocamlfuse


なお、今回紹介する手順では途中でウェブブラウザを使った OAuth 認証を行うため、GUI 環境が必要です(コマンドライン環境だけでは最後までマウントできません)。GUI アクセスできる Ubuntu とウェブブラウザをご用意ください。

まずはターミナルを開き、Google Drive ocamlfuse を apt-get でインストールできるようにするため、リポジトリを追加します:
$ sudo add-apt-repository ppa:alessandro-strada/ppa
$ sudo apt-get update

そして apt-get install を実行します:
$ sudo apt-get install google-drive-ocamlfuse

準備の最後に Google Drive をマウントする先のマウントポイントとなるディレクトリ(以下の例では ~/googledrive)を用意しておきます:
$ mkdir ~/googledrive

では Goodle Drive ocamlfuse を使って実際にマウントしてみます。初回のみコマンドラインから引数なしで実行します:
$ google-drive-ocamlfuse

するとウェブブラウザが起動し、Google の OAuth 認証が行われます。Google ドライブを使うためのユーザーおよびパスワードでログインします:
2017032201


オフラインアクセスのための許可が求められるので「許可」をクリック:
2017032202


以下のようなメッセージが表示されれば OAuth 認証完了です:
2017032203


再びターミナル画面に戻り、今度はマウントポイントを指定して google-drive-ocamlfuse を実行します。これで OAuth 認証時に使ったユーザーの Google ドライブが指定ディレクトリにマウントされます:
$ google-drive-ocamlfuse ~/googledrive


この状態で df -h コマンドを実行すると、指定したディレクトリに Google Drive がマウントされていることが確認できます:
2017032204


ls コマンドなどでこのディレクトリ内を確認すると、Google Drive 内のドキュメントが odt 等のフォーマットで存在していることを確認できます:
2017032205


アンマウントする場合は fusermount コマンドを -u オプションを付けて(アンマウントポイントを指定して)実行します:
$ fusermount -u ~/googledrive


Google ドライブがマウントできると Boostnote のドキュメント共有が異なるシステム間でも可能になったりできて、ますます便利です。



(参考)
http://o2t.hatenablog.com/entry/2014/09/08/143621
 

このページのトップヘ