2018年05月19日

LEGO Mindstorms EV3 を Linux 化 & SSH 接続

LEGO Mindstorms EV3 で Linux を動作させることができるようなので、試してみた。

1. Linux のインストール

OS イメージは ev3dev として提供されているので、OSインストール自体はごく簡単。
ev3dev のサイトからダウンロードして microSD or microSDHC (2 〜 32GB) に書き込むだけ。

ev3dev

microSD への書き込みは ev3dev のGetting Startedページでは Etcher というツールを推奨しているが、dd コマンドなどでもOK。

書き込んだ microSD を "SD" スロットに挿入して電源投入すれば起動する。

ちなみに、microSD は一度挿入すると大人の指では取り出しが難しいので、ラジオペンチなどでつまんで出すしかない。
自分は耳かきを使ってます。

2. ev3dev への SSH 接続

LEGO Mindstorms EV3 は、WiFi モジュールを搭載していない。
もちろん、USB の WiFiアダプタを挿入すれば WiFi接続も可能。
ただし、Linux のドライバーが用意されているものを選定する必要があり、けっこう気を使う。

その点、Bluetooth は標準装備されているので楽。

Bluetooth には Bluetooth PAN (Personal Area Network) というプロファイルが用意されており、Bluetooth 上で IP 接続を実現できる。
以下、これを利用して SSH 接続するお話。

接続元 (マスタ) は、macOS High Sierra バージョン10.13.4

macOS での設定は以下のとおり:
  1. システム環境設定 > 共有 > インターネット共有
    で、[共有する経路]を "Wi-Fi"、[相手のコンピュータでのポート]を "Bluetooth PAN" に設定
  2. [インターネット共有]にチェックを入れる。

    警告ダイアログが表示される。
    [開始]ボタンをクリックすれば設定完了。
ev3dev と Bluetooth 接続する。
  1. ev3dev の Wireless and Networks > Bluetooth で[Powered]にチェックを入れ、[Start Scan]を選択。
    macOS とペアリングする。
  2. ペアリングした macOS を選び、Network Connection > IPv4 で[Change...]ボタンを選択してネットワーク設定を行う。
IPアドレスが表示されるので、macOS からアカウント robot で SSH 接続する。
$ ssh robot@ev3devのIPアドレス
パスワードは maker でログインできる。

ただし、ものすごく遅い。。。

※上の図は Wi-Fi 経由でログインしたときのスクリーンショット


続きを読む
posted by K/I at 01:10 | 東京 ☀ | Comment(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2018年02月09日

WordPress関数でのカテゴリ追加

WordPressバージョン: 4.9

WordPress でカテゴリを追加する関数にはいくつか種類があるが、wp_insert_category() あたりが細かなパラメータも設定できてなかなか良さそう。

と思いきや、4.9.4 で試したら「Call to undefined function wp_insert_category()」のエラーに…。
代わりにwp_insert_term()を使ったらうまくいった。

指定するパラメータは以下のとおり:
・$term
カテゴリーの「名前」
・$taxonomy
'category' を指定
・$args
'alias_of'、'description' (カテゴリーの「説明」)、'parent' (親カテゴリーのID)、'slug' (カテゴリーの「スラッグ」) を必要に応じて
タグ:WordPress
posted by K/I at 21:56 | 東京 ☀ | Comment(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2017年05月06日

FuelPHPって。。。

ここ数ヶ月 FuelPHP で何年か前から作りかけているシステムに手を入れているのだけれど、FuelPHP は正直しんどいなぁと思いつつある。
そのうち慣れてきて作業効率も上がるだろうと思っていたが、未だに作業の進みが悪くてダメなんじゃないかこれ?という思いが行き来するようになってきた。。。

いちばん困っているのは、ドキュメントが貧弱で、情報が少ないところ。
結局、自分でコード読むのがいちばん早かったり。
これ2010年頃からはじまっているシステムだから、もっと情報が充実していてもよいと思うのだが。。。

不思議な挙動をするところがあったり、モデルクラスの扱いに面倒なところがあったり、回避策を調べるのがたいへん。

比較的軽いところ、カスタマイズしやすいところは自分の性に合っていると思うのだけれど、フレームワークの特性をうまく利用して、きれいなコードを書いてやろうとか思いはじめると、難しいのではないかなぁ。
posted by K/I at 15:03 | 東京 ☀ | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2017年03月25日

FuelPHP で Orm\Model クラスのリレーション定義しても cascade がうまく動作しない

PHP Framework: FuelPHP
Version: 1.8

FuelPHP の ORM モデルクラスに $_has_many プロパティを定義してリレーションを定義すると、JOIN が楽になるほか save() や delete() 実行時に関連テーブルのデータも自動的に save()、delete() させるように設定が可能となる。
https://fuelphp.com/docs/packages/orm/relations/intro.html

ところが、この $_has_many プロパティのキーの選び方には注意が必要であることがわかった。

$_has_many のキーに、テーブルのフィールド名と同じ名前を選んではいけない!

つまり、上記 Document ページでいうと
protected static $_has_many = array('comments' => array(
'model_to' => 'Model_Fancy_Comment',
'key_from' => 'article_id',
'key_to' => 'parent_article_id',
'cascade_save' => true,
'cascade_delete' => false,
// there are some more options for specific relation types
));

'comments' が、$_properties に含まれていると、動作がおかしくなる。。。

たとえば \Orm\Model クラスの delete() メソッドがどうなっているかを見てみると、

foreach($this->relations() as $rel_name => $rel) {
:
$rel->delete($this, $this->{$rel_name}, true, $should_cascade);
}

としている。
$rel_name は $_has_many プロパティのキー、$rel は \Orm\HasMany オブジェクトが代入されるのだが、$this->{$rel_name} がモデルクラスのフィールド参照とモロかぶりなのである。

これがわかるまで、丸1日かかってしまった。。。
タグ:FuelPHP PHP
posted by K/I at 14:51 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2015年05月10日

PHP で NW-7 バーコード画像を生成する

PHP の Pear には、バーコードを生成するライブラリー Image_Barcode2 クラスが提供されているけれど、なぜか NW7 が含まれていないので作ってみた。

(1) Barcode2.php ファイルを探し (通常は /usr/share/pear/Image/Barcode2.php など)、Image_Barcode2 のクラス内定数に BARCODE_NW7 を追加:

const BARCODE_NW7 = 'nw7';

(2) Barcode2 の Driver ディレクトリーに、今回作成した NW-7 用のドライバーファイル Nw7.php を追加。

設置は以上で完了。

使い方は、たとえば:
<?php
require 'Image/Barcode2.php';                                                    
$code = new Image_Barcode2();                                                    
$code->draw('a01234567b', 'nw7');                      
などとすれば、バーコード画像が表示される。
posted by K/I at 22:43 | 東京 ☁ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年09月28日

Fedora 16以前のバージョン "End of Life" !!!

Fedoraは 17 以降から、fedup というツールでお手軽にアップグレードができるようになっていたらしい。

それが理由なのか、あるいは Systemd 導入が理由なのかわからないが、Fedora 16 までのバージョンは "End Of Life" になっていた。
しかもかなり以前に:
https://bugzilla.redhat.com/show_bug.cgi?id=834795

EOF になると、アップグレードすらできなくなるのか。
Fedora 13 で運営しているサーバーがあるのだが、こいつは完全に世間から取り残された。。。
posted by K/I at 21:34 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年09月26日

PHPの意外なハマりどころ

フォームで、name 属性に . を使うと、_ に自動変換されてしまうのね。
今まで知らなかった。。。
posted by K/I at 21:25 | 東京 ☁ | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2014年06月30日

Apache組み込まれている静的モジュール/動的モジュールの一覧取得方法

いつも忘れてしまうので、メモ。

Apache2 で、組み込まれている Static Module の一覧は、
# httpd -l

ロードされている Dynamic Module の一覧は、
# apachectl -M

で調べられる。
タグ:Apache
posted by K/I at 20:15 | 東京 ☁ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年06月13日

CentOS 6.5 への MongoDB のインストール

CentOS 6.5 に MongoDB サーバーをインストールしようとしたら、パッケージは存在しているのにレポジトリからダウンロードできずインストールできないと言われた。
CentOS 6.4 はうまくいくのに。。。

やむなく、MongoDB 本家のレポジトリを追加してインストールすることに。
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/
基本的には上記URLのとおりにやればOK。

ただ、既存の YUM レポジトリーの MongoDB 関連パッケージとかち合うのが気になるので、enabled=0 のほうがよいかも。
posted by K/I at 22:16 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2014年03月16日

Subversion の Secure connection truncated エラー

Subversion で巨大なレポジトリーをチェックアウトしようとすると、Secure connection truncated エラーが出ていっぺんにダウンロードできない場合がある。

ssh でレポジトリーにアクセスできるなら、そちらを使えばエラーを回避できるようだ。

SSH で接続する場合のレポジトリーの URL は、

svn+ssh://(ホスト名)/(レポジトリーのパス)
タグ:SVN subversion
posted by K/I at 21:23 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする