2026年7月4日土曜日

SceneBrowser - 大量の動画コレクションを快適に管理できるmacOSアプリを試験公開します(アルファ版)

⚠️現在アルファ版です:このソフトウェアは開発初期段階にあり、バグや不具合が含まれている可能性があります。

動画ファイルが増えてくると、Finderでのサムネイル表示では物足りなくなってきませんか?特に大量の動画コレクションを管理するとき、各動画の内容を一目で把握したいと思うことがあります。

そんな課題を解決するために、SceneBrowserというmacOS向けの動画管理アプリを開発しました。

SceneBrowserとは?

SceneBrowserは、動画ファイルに対して4x4のサムネイルグリッド(16枚の場面キャプチャ)を自動生成し、動画の内容を一目で把握できるようにするアプリケーションです。

一言で言ってしまえばWhiteBrowserのMac版です。まだそんなに機能ないですが

主な機能

  • 4x4サムネイルグリッド表示 - 各動画から16枚の場面を抽出して表示
  • フォルダ管理 - 複数のフォルダを登録して整理
  • 高速スキャン - FFmpegを使った効率的な動画メタデータ抽出
  • 大量のコレクションにも対応 - 仮想スクロールで1万本以上の動画も快適に閲覧
  • 進捗表示 - スキャンやサムネイル生成の進行状況をリアルタイム表示
  • SQLiteデータベース - 動画情報を効率的に管理

使い方

  1. アプリを起動
  2. 左側のフォルダパネルで「+」ボタンをクリックして動画フォルダを追加
  3. フォルダ横の🔄ボタンをクリックしてスキャン実行
  4. 自動的にサムネイルが生成されます
  5. フォルダをクリックして動画一覧を表示

サムネイルの再生成が必要な場合は🖼️ボタン、フォルダをライブラリから削除したい場合は🗑️ボタンを使用できます。

ダウンロード

⚠️ アルファ版についての注意事項:

  • このバージョンは開発初期段階であり、予期しないバグや動作不良が発生する可能性があります
  • データの損失を防ぐため、重要なファイルのバックアップを取ることをお勧めします
  • フィードバックやバグ報告はGitHubのIssuesまでお願いします

最新版はGitHub Releasesからダウンロードできます。

開発版ビルドもGitHub Actionsから入手可能です(最新機能を試したい方向け)。

インストール後の注意事項

開発版ビルドは「ad-hoc署名」のため、macOSのGatekeeperが警告を表示することがあります。以下のいずれかの方法で回避できます:

方法1:ターミナルコマンド(推奨)

xattr -cr /Applications/SceneBrowser.app

方法2:右クリックから開く

  1. アプリを右クリック
  2. 「開く」を選択
  3. 警告ダイアログで「開く」をクリック

詳細はインストールガイドをご覧ください。

オープンソース

SceneBrowserはオープンソースプロジェクトです。ソースコードはGitHubで公開しています。

アルファ版のため、特にバグ報告や改善提案などのコントリビューションを歓迎しています!皆様のフィードバックが開発の大きな助けになります。

今後の展望

現在はアルファ版として基本機能を提供していますが、今後以下のような機能追加を検討しています:

  • 動画の検索・フィルタリング機能
  • タグ付けやお気に入り機能
  • 動画プレビュー再生
  • 安定性とパフォーマンスの向上
  • 他のプラットフォーム対応(Windows、Linux)

まとめ

大量の動画コレクションを管理するのは大変ですが、SceneBrowserを使えば各動画の内容を一目で把握でき、効率的に整理できます。

アルファ版ではありますが、ぜひ試してみてください!バグ報告や機能要望など、あらゆるフィードバックをお待ちしています。皆様の意見をもとに、より良いアプリに育てていきたいと思います。


関連リンク:

2018年1月16日火曜日

Echo: Alexa skill 開発環境構築からローカルテスト、デプロイまで

とりあえずメモ。テストが自動化できそう。


環境構築

lambdaの環境だと、requestsパッケージすら入ってないので、virtual envで必要なパッケージをインストールした方が良い
virtual envをインストール

デプロイ前に、ローカルでテストして、構文エラーぐらいは直しておきたい
python lambda localをインストール

作業開始

aws lambdaのページに従い、virtual env環境で作業します

ローカルテスト

コマンド:
$ python-lambda-local -l $VIRTUAL_ENV/lib/python3.6/site-packages/ -f handler src/lambda_function.py event.json

-l には、virtual env上でインストールしたpython packageが入ったディレクトリ、つまりデプロイ時zip化するディレクトリを指定する
-f は、handler名
event.jsonの中身ですが、Alexa Skill Kitのテストタブにある、サービスシミュレータで、「発話を入力」すると、「サービスリクエスト」に出てくるjsonをそのまま使えます。


デプロイ

こちらに従い、Zip化して、lambdaに入れます。
Virtualenv で作成した Python 環境を使用してデプロイパッケージを作成する

開発したAlexa skillが、アプリ上に表示されない場合

Amazon developer console上でスキルを開発しても、スマートフォンアプリの方に表示が出ないことがあります。
私の場合は、Amazon USのアカウントでログイン・開発していたのが原因でした。
IDはUS/JPともに同じもの(メアド)、パスワードだけ違っているので、JPのID/PWでログイン・スキルの追加をすることで、表示されました。
なおUS/JPのDeveloper console間で、開発中・開発したSkillは共有されないようなので、USで作ってしまったらJP site側で再度作り直す必要がありました。

2017年12月3日日曜日

Use Arduino IRRemote library on ATTiny85

--- 日本語は下の方に記載してあります

Arduino IRRemote library supports ATTiny85. ( Official homepageand Github)
But it does not work so far on my environment. To use it for sending IR, some tricks are needed.

  1. Stop interrupt during sending IR.
  2. Modify delay function, IRsend::custom_delay_usec
Background of this modification is simple. IRRemote library uses TIMER0 to control PWM for IR on ATTiny. Arduino time related functions, like micros(), uses TIMER0 for counting time. IRRemote's changing TIMER0 parameters changes its behavior.
And TIMER0 generates interrupt every overflow period to count up arduino timer related values. By IRRemote's change, TIMER0 trigger's overflow interrupt each 13usec period (at CPU clock 8MHz). This breaks PWM frequency since PWM works with TIMER0, too.

So, solution for 1 is that use noInterrupts() and interrupts() before/after IRsend::sendXX();

noInterrupts();
irsend.sendRaw(codeValue, 32);
interrupts();


Solution for 2 is that replace custom_delay_usec()'s wait function to use delayMicroseconds(). delayMicroseconds() does not uses timer interrupts related value to wait. See API reference.

void IRsend::custom_delay_usec(unsigned long uSecs) {
  delayMicrosec(uSecs);
}

I did above two in my sketch by copying IRsend code from IRRemote library code...
It can be achieved by inheriting own class from IRsend, but not tested.

===
ATTiny85でArduinoのIRRemote libraryを使う方法です。
IRRemoteはATTiny85のサポートをしていますが、いくつか修正をしてあげないと動きません。

  1. 赤外線を送信している間、割り込みを禁止する
  2. IRsendのcustom_delay_usec()の修正

--- Follows are japanese.---

IRRemote libraryは、ATTiny85の場合、TIMER0を利用して赤外線送信を行っています。しかし、TIMER0はArduinoのタイマー周り、例えばmicros()の実現のために利用されています。
IRRemote libraryは、赤外線の38KHz, 1/3 dutyを実現するために、PWMを利用しており、ATTiny85の時は、TIMER0で、このPWMを制御しています。
IRRemote libraryが赤外線のためにこのTIMER0を変更しますが、このせいでmicros()あたりの挙動が変わります。
IRsend::custom_delay_usec()はmicros()を利用しているため、期待したwait時間のwaitをしません。
また、この変更による割り込みも影響します。
Arduinoの時間系ライブラリは、TIMER0のOverflow割り込みを使って時間関係の変数を更新します。IRRemoteは、TIMER0のoverflow valueを変えるため、13usecごとに割り込みが発生します。(CPU clock 8MHzのとき)
このoverflowが起きると、割り込みが終わるまでpwmの動作も止まってしまいます。38KHz, 1/3 dutyが壊れるわけです。

1の対処は簡単です。Arduinoの割り込み禁止・許可関数の、noInterrutps()/interrupts()を、IRsend::sendXXの前後で呼び出すだけです。
2の対処ですが、IRRemote libの、custom_delay_usec()の処理を、delayMicroseconds()に置き換えるだけです。delayMicroseconds()は、TIMER0割り込みを使わないように書かれていますので、TIMER0の影響を受けません。
(コードは上の方に)

私の場合、IRRemote libから、sendXX関連のメソッドを自分のsketchにコピーして書き換えました。元のコードをいじらないためです。
IRsend classを継承して、必要なメソッドをoverrideすることでも実現できるはずですが、未確認です。

2016年10月16日日曜日

エナメル塗料でアクリジョンは溶けないのか?

しばらくアクリジョンを使って塗装しています。
使い終わった塗料皿なんかを、バケツに入れておけば、簡単に掃除ができるので重宝してます。
当然無臭ですし。

さて、アクリジョンの上にエナメル塗料でスミイレやらウェザリングやらするわけですが、どういうことか、一度、アクリジョンが溶ける、というか、塗膜がぼろぼろはがれてきたことがあります。アクリジョンのつや消しの上に、タミヤエナメルでウォッシングしてる最中の時でした。
アクリジョンの説明によれば、乾燥したアクリジョンの上にエナメルを塗っても大丈夫なはずですが、なぜか溶けました。
すこし調べると、エアブラシ専用薄め液だと落ちる、というような話もあり、、、

ということで、実験してみました。

テストピースにエアブラシ専用薄め液で薄めたニュートラルグレイ(左)と、アクリジョン薄め液で薄めたニュートラルグレイ(右)を塗ります。乾燥は3日ほど。



まずは、何もつけない綿棒でこすってみます。
(10秒くらいかなり強くこすりました)


ちょっとだけ落ちました。強くこすってるので力ではげた?

次にエナメル溶剤をしみこませた綿棒でこすります。

塗料が落ちました・・・
両方とも落ちていますので、エアブラシ溶剤だから、ということもなさそうです。

いちおう水を含ませた綿棒でも試してみました。
もちろん、ほとんど落ちません。先の何も浸みさせていない綿棒と同じようです
テストピースの塗料がはげているのは、上の、エナメル溶剤でこすったピースを流用しているから。



ということで、アクリジョンも、多少はエナメル溶剤で溶けるようです。今回は強くこすっていますので、スミイレ程度なら、エナメルでもいけると思います。
ウォッシングも、さっと拭く程度ならいけるかもしれません。
ウォッシングならMr.ウェザリングカラーを最近試していますが、油彩ベースだから?アクリジョンの上でも大丈夫そうです。













2016年7月3日日曜日

アクリジョンでスミイレしてみた

アクリジョンを試しています。
ラッカーのあの臭いがないのが、本当に快適です。

ついでにエナメルも置き換えられないかなーと思い、スミイレしてみたのですが、こちらはダメでしたね、、、

エアブラシ用アクリジョン専用うすめ液で薄めることで、流し込むことは出来ました。
が、その後の拭き取りがうまくいきません・・・

乾かないうちに水で拭き取ろうとしても、やっぱり拭き取れない(固まってしまった)部分が残ります。
そうすると、ツールクリーナーの出番になるのですが、そうすると、きれいに拭き取れない。
細かい塗料カスがぼろぼろでるんです、、、ツールクリーナーは溶かすわけではないので。

うまい方法があればいいんですが。いまのところエナメル使う感じかなと。
ちなみに水で薄めた場合は、塗料が流れません。
水自体が、モールドに流れていかないのがその理由です。
水だけ流し込んでも、流れないんですよ。


attinyの電源をUSBからとる:パスコンの利用

写真とかないですが、メモ程度に。

Attiny13aをブレットボード上で開発してました。
ソフトの書き込みもあるので、そのときはArduinoの5Vを引っ張ってきていました。

これを同じ5VのUSBから引っ張ってきたところ、なぜか稼働せず。
プログラムが途中で止まったり、そもそも全然違う動きをしていたり、、、

これが必要だったようです。
Wikipedia:バイパスコンデンサ

マイコンやらLEDの動作で、電源電圧が落ちていたと。
バイパスコンデンサとして、10uFのコンデンサをつけたところ、正しく動作しました。

回路図などの説明は検索するといろいろ出てきます。
たとえばこちら

マイコンとかですと、0.1uF〜0.01uFのセラミックコンデンサが一般的なようです。
この値については、ここが参考になりそうです。

電子工作する人には当たり前の知識なんだと思いますが、私のような素人には知らないことばかりです。

2016年6月14日火曜日

Arduino ISPを経由して、ATtiny13にロードする(2)

前回の記事で、Delayが時間通りにかからないことを書きました。
クロックが正しく設定されてないことが想定されます。

チップのCKSELを書き換えることで、クロックが変更できます。想定のクロックにするには、
Arduino IDEから、ブートローダ書き込みをします。
前回置いた hardware/では、これが失敗してました。

hardware/の修正版はこちら: https://github.com/nackon/arduino_attiny13


===

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9007
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/Users/naoyuki/Documents/Arduino/hardware/attiny/avr/bootloaders/dummy/dummy.hex"
avrdude: writing flash (0 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 0 bytes of flash written
avrdude: verifying flash memory against /Users/naoyuki/Documents/Arduino/hardware/attiny/avr/bootloaders/dummy/dummy.hex:
avrdude: load data flash data from input file /Users/naoyuki/Documents/Arduino/hardware/attiny/avr/bootloaders/dummy/dummy.hex:
avrdude: input file /Users/naoyuki/Documents/Arduino/hardware/attiny/avr/bootloaders/dummy/dummy.hex contains 0 bytes
avrdude: reading on-chip flash data:

ブートローダの書き込み中にエラーが発生しました。
Reading |

===


dummy.hexを0byteで書いて、0byteを読み出そうとしている?
dummy.hexは、0byteでもないですし、仮に0byteだとしてもそれを読みに行っているのはおかしいです。
また、ATTiny13a自体は、ブートローダをもたず、やりたいことは, CKSEL(Fuses)を書き込みたいだけですので、
boards.txtから、ブートローダの指定(dummy/dummy.hex)を削除してやりました。

===

↓以下の行をコメントアウトor削除:

# attiny13-8.bootloader.path=dummy
# attiny13-8.bootloader.file=dummy.hex

===

ブートローダのファイルの指定がないぞ、と怒られてはいますが、目的のhfuses/lfusesは書き出されています。
これで動作確認したところ、delayの時間がしっかり直っていました。

===


avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9007
avrdude: erasing chip
avrdude: reading input file "0xff"
avrdude: writing hfuse (1 bytes):

/Users/naoyuki/Desktop/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Users/naoyuki/Desktop/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -pattiny13 -cstk500v1 -P/dev/cu.usbmodem621 -b19200 -Uflash:w:/Users/naoyuki/Documents/Arduino/hardware/attiny/avr/bootloaders/{bootloader.path}/{bootloader.file}:i -e -Uhfuse:w:0xff:m -Ulfuse:w:0x7a:m
Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xff:
avrdude: load data hfuse data from input file 0xff:
avrdude: input file 0xff contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0x7a"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x7a:
avrdude: load data lfuse data from input file 0x7a:
avrdude: input file 0x7a contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude done. Thank you.


avrdude: Version 6.0.1, compiled on Apr 14 2015 at 16:30:25
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "/Users/naoyuki/Desktop/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
User configuration file is "/Users/naoyuki/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port : /dev/cu.usbmodem621
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATtiny13
Chip Erase delay : 4000 us
PAGEL : P00
BS2 : P00
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 5 4 0 no 64 4 0 4000 4000 0xff 0xff
flash 65 6 32 0 yes 1024 32 32 4500 4500 0xff 0xff
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 2 0 0 0 0 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00

Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9007
avrdude: erasing chip
avrdude: reading input file "/Users/naoyuki/Documents/Arduino/hardware/attiny/avr/bootloaders/{bootloader.path}/{bootloader.file}"
avrdude: can't open input file /Users/naoyuki/Documents/Arduino/hardware/attiny/avr/bootloaders/{bootloader.path}/{bootloader.file}: No such file or directory
avrdude: read from file '/Users/naoyuki/Documents/Arduino/hardware/attiny/avr/bootloaders/{bootloader.path}/{bootloader.file}' failed

avrdude done. Thank you.

ブートローダの書き込み中にエラーが発生しました。


===

2016年6月12日日曜日

Arduino UNOをISPにして、ATTiny13へ書き込み

Arduino UNO経由で、Arduino IDEで書いたコードを、ATtiny13に書き込みを行える環境を作りました。

hardware/下を作るのに手間取ったというか、なんで動くようになったのかよくわからないので、
とりあえず丸ごとgithubに保存してます。
https://github.com/nackon/arduino_attiny13
この環境の既知の問題として、delayで指定した時間が正しくない、というのがあります。
(追記)
Bootloaderの書き込みがうまくてきてませんでした。
次の記事に追記します

参考にしたサイト
https://arduinodiy.wordpress.com/2015/04/26/installing-attiny13-core-files-in-arduino-ide-1-6-x-and-1-7-x/
→これをちゃんとやったつもりだったが、なぜか動かない・・・
http://www.instructables.com/id/Installing-Attiny13-core-files/
→boards.txtをこれに従って直してみたら・・・動いた。

接続方法はこちら。
http://make.kosakalab.com/make/electronic-work/arduino-ide-arduinoisp/
http://www.jonki.net/entry/20131109/1383977233

Arduino UNOの人は、10μFのコンデンサーが必要です。
https://www.arduino.cc/en/Tutorial/ArduinoISP
1KΩとか250Ωの抵抗で代替できる、とか言う記述も見かけましたが、
私はダメでした。

2015年7月23日木曜日

Androidに搭載のセンサーが、増えている

Xperia Z4(au)に搭載されているセンサを一覧で出力してみました。

こんなのついてるの?と思うセンサまでありました。
(下記のTYPE_*は、AndroidのSensor クラスに定義されている値です)

TYPE_ACCELEROMETER: 加速度センサ
TYPE_GAME_ROTATION_VECTOR: ゲーム用のローテーションセンサ
TYPE_GEOMAGNETIC_ROTATION_VECTOR:ローテーションセンサではあるがジャイロを使わない。低消費電力
TYPE_GRAVITY:重力センサ?
TYPE_GYROSCOPE:ジャイロセンサ。
TYPE_GYROSCOPE_UNCALIBRATED
TYPE_LIGHT:照度センサ
TYPE_LINEAR_ACCELERATION
TYPE_MAGNETIC_FIELD:方位角センサ
TYPE_MAGNETIC_FIELD_UNCALIBRATED
TYPE_ORIENTATION:端末の回転センサ
TYPE_PRESSURE:気圧センサ
TYPE_PROXIMITY:近接センサ
TYPE_ROTATION_VECTOR:傾きセンサ?
TYPE_SIGNIFICANT_MOTION:モーションセンサ?
TYPE_STEP_COUNTER:歩数カウンタ
TYPE_STEP_DETECTOR:一歩を検知するセンサ
UNKNOWN:22:ログを出してみると、チルトセンサとなっている/Sensor name="Tilt Detector", v
UNKNOWN:25:ログを出してみると、ピックアップジェスチャとなっている/Sensor name="Pick Up Gesture",

気圧センサや、歩数カウンタがあるというのが驚きです。
せっかくなので、テストアプリ作りつつ、動作を見てみました。
ソースはgithubにおいてあります。

起動すると、搭載されているセンサの一覧を取得し、表示します。


アイテムを選択すると、センサから返ってくる値を表示します。こちらは気圧センサ。


気象庁によると、計測した7/23日18:00の東京の気圧は1007.8hPaだったようなので、わりと正確な値が出ているようです。
IoTが話題に上がることが多い昨今ですが、端末センサでデータをとって、何か出来るかもしれませんね。

2014年12月30日火曜日

TimeMachineがバックアップできなくなった

TimeMachineのバックアップが失敗するようになりました。

最初は「イメージが壊れています、新規にバックアップを作成します」みたいなエラーで、「後で行う」を選択していたのですが、いつの間にかバックアップエラー(null)みたいなエラーになってしまいました。nullってなんだ。

ネットに転がっていた com.apple.TimeMachine.plistを削除する方法など試してみましたが、バックアップ先として、使っていたネットワークディスク -ネットワーク越しのiMac上につなげた外付けHDD- が、Time Machineからみえない。でもネットワークディスクとしては見えているし・・・みたいな状態でした。

最終的にはこのサイト(英語)の"On the Destination Mac:"を参考に、iMac側、つまり外付けHDDを共有しているサーバiMac側で、

  1. システム環境設定>共有>ファイル共有から、TimeMachine用にしている外付けディスクを明示的に共有フォルダとして指定、
  2. オプションから、SMB をOFFし、AFPをONした(元はSMBだけONだった)
  3. 外付けディスクのアクセス権(ユーザ)に、自分を追加して、読み書き設定
で、TimeMachineからiMacの外付けディスクが見えるようになりました。現在絶賛フルバックアップ中・・・

この辺の設定変えた記憶がないので、なぜ急にこうなったか全くわかりません。

とりあえずバックアップが無事完了することを祈って・・・寝ます。


2014年11月22日土曜日

avahiで簡単SSH接続

こちらを参考に、avahiをセットアップしました。
Raspberry Pi 無線 LAN 設定おぼえ書き
http://ag.hatenablog.com/entry/2014/01/13/182102

これで、IPアドレス指定なしで、ssh接続が出来ます。

ssh -X pi@raspberry.local

DHCP環境だと助かります。

#これ、Androidでもいけるのかな?

2014年11月18日火曜日

Raspberry PiのSDイメージをバックアップしておく

前回のエントリーにて、Raspberry PiにNOOBSをインストールして、SSH接続できるところまで行きました。

せっかくなので、この初期イメージをバックアップしておきます。
SDが壊れたとか、クリーンな状態で別な開発をしたいときは、そのイメージから復元すれば、HDMI/キーボード/マウスを用意して1からインストールする必要がなくなります。

やることは簡単です。MacやUnix系OSにあるddでSDカードのイメージを吸い出すだけです。
dd if=/dev/disk2 of=pi.img 
ifは読み出すSDカード、ofは書き出すファイルを指定します。(詳しくは"dd linux"とかでググって)

16GBのSDカードで、3050secほどかかったようです。
15720251392 bytes transferred in 3050.507887 secs (5153323 bytes/sec)

・・・え、約50分・・・結構かかりました。書き戻すときはどのくらいかかるんだ・・・?いや、インストールするのと変わらない・・・はず・・・でも、これでSDカード初期化すると、NOOBSのバージョンあげられないし・・・
とかいろいろ思いますが、 とりあえずよしとします。
使いながらいろいろ考えていきます。

こうやってバックアップしておくと、ある程度環境構築した環境もバックアップできるので、それこそインストール→環境設定→・・・の手間も省けますし。

2014年11月16日日曜日

Raspberry PI: MacとSSH接続

前回の投稿で、Raspberry PIをインストールし、HDMIディスプレイにデスクトップ環境が表示されるところまで進めました。

今回は、SSH接続にチャレンジです。SSH接続により、ケーブル・キーボード・マウスレス環境にします。

Raspberry PIのNOOBSにはsshが入っているようなので、基本的には以下だけで繋がるところまでは行きました。

  1. Raspberry PIに固定アドレスを割り振る
  2. PCと有線LAN接続(ハブなし、ストレート)
  3. ssh pi@xxx.xxx.xxx.xxx
これだけです。
が。
問題は、有線LANを接続していると、PCのネットワークパケットがすべて有線側に流れてしまうことです。無線LANより有線LANを優先して使うからと思われます。

つまり、Raspberry PIと有線接続していると、無線LAN側で繋がったインターネット接続は使われなくなり、Webで調べ物したり出来なくなります。

これではあまりにも不便・・・
とりあえずはインターネット共有を使ってしのぎます。
システム環境設定>共有から、インターネット共有を選択します。
  • 共有する接続経路:WiFi
  • 相手のコンピュータ外傷するポート:Ethernet


MacOSXのインターネット共有は、DHCP機能も含まれているらしく、Raspberry PI側はデフォルトのDHCPのままでいいです。
私の環境では、IPアドレスとして192.168.2.2が割り当てられていました。

ただ、これですと、本当にLANに有線接続したいときに困るわけです。
Subnet変えるとかして分けてあげればいいのでしょうが、今回は手っ取り早くこれです。

ここまで来れば問題ありません。ssh -X pi@192.168.2.2 で、ssh接続が出来るようになります。

ん?ssh -X?-Xってなに?って人。Xserverをssh接続元に持ってくるオプションです。
ssh接続後、lxsessionと打ち込むことで、こんな風になってしまいます。



Mac上に、Raspberry PIのデスクトップが表示されているのがわかると思います。
(RasPi側の)デスクトップのアイコンは触れませんが、下部のタスクバー部分のボタンは触れました。

MacOSXは昔は標準でXserver機能がありましたが、今(Marverix以降?)は入ってないので、XQuartzからダウンロード、インストールしておきます。
今は入っていない・・・というより、オープンソース化しちゃったみたいですけど。

デスクトップを使うかはおいといて、これでHDMIをつながなくても(モニタがなくても)開発やら実験が出来る環境になりました。

ということで、今日はここまで。

2014年11月15日土曜日

Raspberry Pi 購入:Raspbian インストール

いきなりですが、Raspberry Piを初めて見ます。
電子工作したくなったのも一つであり、また、いろいろあるセンサーをいじりたくなったのも一つ。
最大の理由はハルロックに刺激された、というところwww
ま、刺激されたのはおいといて、やはり前者です。スマートフォンで、ソフトウェア(アプリ)開発および公開のハードルはかなり下がりましたが、やはりハードが必要になる部分はどうしようもないです。(そこをソフトやクラウドで何とかすることを考えるのも、アイディアの源泉かもしれませんが)

ということで、ハードもいじりたいなと、思った次第です。
ソフトウェアと同じく、ハードウェア作成のハードルもかなり下がっています。
ブレットボードを使えば、半田付けすら不要ですからね・・・作ったハードを量産してくれる工場もたくさんあるみたいですし。

ということで、まずは機材の用意。



Raspberry Pi Model B+ と、ケースのセット。
やはりパーツむき出しは不安なので(MacbookProのアルミの上に置いたらショート・・・)、ケース付きにしました。
B+にしたのは、まずは遊んでみるため、かつ、プロトタイピングでハードを試作するとき、USB端子の不足はどうにも解消できないから。
完成後、端子多すぎて(サイズ的に)常用できないときは、新しいの買えばいいですしね。




お勉強用に。



Raspberry Piはストレージを持たないので。4GB〜8GB でいいらしいですが、大して値段も変わらないので16GBを選択。32だとさすがに無駄かな・・・



GPIOをブレットボード化してくれます。すぐには使わないけど、将来的に便利そうなので。
あとは、HDMIケーブルと、USBキーボード、マウス、MicroUSBケーブルを用意しました。
HDMIケーブルやらキーボードやらは、将来的にSSH接続で開発できる環境にすればいらないのですが、やっぱり最初は必要になりました。はじめは手軽にRaspbian NOOBSで始めたのですが、その際はこれらが必要になります。
すぐにケーブルレス開発も出来そうですが、いきなりハードルをあげる必要もないでしょう。あとでじっくり対応していけばいいだけです。

ということで、準備が出来たらとりあえずインストール・・・ですが、難しいことはありません。
NOOBSのセットアップガイドに従って、インストールしていくだけです。
英語ですが、諦めないでください。中学レベルの英語です。全然難しいことは書いてません。
要約すると:
  1. NOOBSのアーカイブをダウンロード
  2. アーカイブを展開し、展開されたファイルをSDカードにコピー
  3. SDカードをRaspberry Piにさす。
  4. USBキーボード・マウス・HDMIケーブル(To TV or Monitor)をRaspberry Piにさす
  5. MicroUSBをさし、電源供給
  6. インストーラーが起動し、インストールされます。
  7. 最初に何をインストールするか聞かれますが、一番上のものを選べばいいです。Scratchは初心者用の開発環境みたいなので、必要に応じて選べばいいです。Scratchとはなにか?・・・ググってください。
  8. 後は勝手にインストールされます。

OK押すと再起動されます。Linuxでよく見る起動メッセージが表示され、しばらく見ていると・・・Configuration menu(raspi-config)がでてきます。



なにもいじらなくていいと思います。
4.Internationalisation settings で、日本語化も出来そうですが、Linux Destributionでは日本語にしてろくなことがないので、私は英語で使います。

<Finish>を選択すると、コマンドラインが出てきますので、startxと打ち込んでリターン



きました!デスクトップ環境!!



無事ここまで来ました。ネットワークの設定してないし、出来ることを調べてもいないので(- - ;、今日はここまでです。
電子工作目的ですが、まずはネットワークの設定をしてしまいたいので、別で記事を書く(かも)。


2014年10月26日日曜日

MG νガンダム 制作日記

MGνガンダムの制作が完了したので、その制作過程を公開です。

・・・はい、ver.kaではなく、無印です。
2000年発売のキットらしく、今から見るとプロポーション的にいまいちなところがあります。

素組状態ですと写真のような感じです。

関係ないけどνガンダムってでかい。
後ろはMGパーフェクトガンダムとキュベレイ

いろいろ考えたのですが、素組して気になった以下の点を修正することにしました。

  • 頭部の小型化。設定画を見てみると、このぐらい大きいようにも見えますが、やはりでかい。
  • 肩の大型化。設定画に比べても小さいし、やはりバランスが悪い。
  • 胴を2mm延長。寸胴とかさんざんなこと言われています。
  • 腰前後のアーマーの小型化。私の嫁さん(ガンダム知らない)に「おむつはいてる」とか、これまた散々な言われよう。
  • 腰前部のアーマーは上部に0.5mm延長。胴と腰の隙間が丸見えなので、それを隠すため。
  • 腰の左右のアーマーは、前後のものと違ってやたら短い。足守れないだろ・・・?2mm延長する。
  • この写真ではわかりませんが、足の甲の白い部分とつま先の黒の部分の段差が全然ない。1mmプラバンを貼って高くする。
ということで、まずは完成した写真から。


νガンダム、行きます!



割とよく仕上がったと思います。思わずスマホの壁紙にしてしまうぐらいにはw

ということで、制作過程です。

頭部の小型化

ネットの作例を見ていると、いろいろ方法があります。頭部を4分割するとか、別パーツ持ってきて、とか・・・
私の場合、元々のサイズが設定がに近いというのもあり、(技量的に)無理な小型化はしませんでした。
  1. 左右はヤスリで削りこんで幅を詰める
  2. 顎のラインも削りこんでシャープに
  3. 上部は、縦長な印象だったので、切断して丈詰め
この3つです。あとは、肩を大型化することで、相対的に小さくなるかなと。

3はこの写真の黒線部分で切り離して、2mm ほど丈を詰めました。切断にはエッチングソーを使いました。細く切れるので便利ですよ。


正面。頭部が卵形
側面


当然切り離して削った分、段差が出るので、ポリパテを盛って修正です。(写真がどっかいってしまった)

肩とか腰アーマーとか。

説明するほどのものではありません。1mmのプラバンを貼って、大型化です。
写真はプラバンを貼ったところ。



腰前部アーマーは、小型化済みのものです。下部をやすりで一生懸命削って小型化です。・・・が!削りすぎて裏が透けた&穴が空いた・・・ので、結局0.3mmプラバンを貼って修復しています。

足の修正

・・・写真撮ってませんでした・・・
やったことは先に書いたとおりで、つま先部分に1mmのプラバン貼って、つま先側の高さを上げました。
ちなみに、定番の「つま先をとがらせる」改造はしませんでした。それに逆行して、むしろ斜めに削って上向きにしました。

だって、とがってたら歩きづらいでしょ?

塗装

最後に塗装です。といってもたいしたことはしていません。
下地を普通にサフで仕上げた後、以下のカラーレシピでエアブラシ塗装。

白・・・下地スカイブルーに、グランプリホワイト。これは、映画見てると、暗い部分が青く色づけされていたので、そのイメージで。
黒・・・ブルー30%+ミッドナイトブルー70%+黒は、混ぜた色を黒く整える感じで。
黄・・・ただのイエロー。もうちょっと工夫しても良かったかも。

内部フレームとかは塗ってないです。膝のダンパーをクロムシルバーで塗ったぐらいです。

後は適当にスミイレと、半光沢で仕上げました。



2012年6月19日火曜日

「テレビの大罪」




テレビも、一面的な報道ばっかりして、大衆ウケしそうなコメンテーターばっかり・・・とか思ってた私。
この本では、著者がテレビ局にコメントを求められたときの話もありますが、当たり障りのない、それどころか、テレビ局の筋書きにあうコメントを要望されてたり。「やっぱり・・・」という感想。
「中卒の人にでもわかるように話してください」とか、視聴者バカにしてるのか?とか思う。

やはり、あまりまじめに見るものじゃないな、と改めて思いますが、だからといって、新聞、週刊誌、Webの情報を集めればいいかというと、それも違う。

3.11の時。

身内がまさに被災地に住んでいて、連絡も取れなくなっていました。
地震そのものの情報含めて、テレビ、Web、新聞に常に目を通していました。

幸い、その身内とはしばらくして連絡が取れましたが、そうして複数の情報を集めていたとき感じたのは、「どの情報源も、100%正確な情報を伝えてはくれない」という、当たり前と言えば、当たり前のこと。

テレビは、センセーショナルな被災地の被災地、原発の映像を、それも同じものを、何回も流す。
私として(そして同じ境遇の多くの人が)知りたかった、避難所の避難者の名前を書いた掲示板は全然移さない。
同じ映像とコメント、どうでもいいよ。

新聞も、政府への文句ばかり。自分の意見は少ない(テレビよりは多かったけど)。
「この日経平均の低下が、世界の日本の政治への不信感を示している」とか書いてたと思う。うろおぼえだけど。
関係ないだろ。

Webは、いろんな異なる意見が多すぎて、且つ、明らかなデマも混じってて。
「今は情報の裏をとってる暇がないからそのまま流す」とかTwitterしてるジャーナリスト(だったかな?)なんかもいたっけ。
それ、自分の役割放棄してるだけだから。

どの媒体も、それぞれの事情と、性格があるから、結局のところ、複数のソースを利用して、自分で考え、判断するしかない。
幸いWeb使えば、たくさんの情報・事実にアクセスできる。たとえば政治家の発言の全文や、原発の仕組み、放射線の影響まで、複数のソースの情報、それはマスコミ、大学、政府広報、海外メディア、専門家などなど。

新聞・テレビ以外のニュースソースがあるという点で、本当にいい時代だなと思う。

というわけで、「テレビはウソばっかり。見てるとバカになる」なんて一面的に観ないで、情報のOne of themとして、正確な情報収集と判断をしていかなければな、と・・・

こんなのでてた・・・eneloop pro



eneloop proという、容量を増やしたeneloopが出ていたとは・・・知りませんでした。

WiiとかWii用にwまとめて買った私のeneloopが、一斉に寿命を迎えた(※)ので、stick booster用のeneloopをこっちに買えてみよう。


(※)たぶん4年ぐらいは使った


SUGOI HUB(USB2-HUB4X)を買ってみた。iPad2充電できませんでした



タイトルの通りです。以上・・・w

システムトークスのサイトにあるとおり、3番目と4番目のポートは2000mA出力している、とのことで期待してたんですが、やはりだめでした。
いちおう、iPod touchは大丈夫でした。

とはいえ、私の環境ですと、Apple Keyboard (テンキー付き)のUSBポートに、マイクロソフトプレゼンター マウス のトランシーバを指していると、MacbookProが起動直後にフリーズするという悲惨な現象が出ていたんですが、このハブに買えたら現象でなくなりました。

供給電流の安定と大容量、というのは伊達じゃないですね。




2012年5月29日火曜日

(ちょっと古いけど)ネットのビジネス・ユーザについて書いた、二つの本

連続して読んだ、二つの本。


この二つの本が、合わさってとても考察のしがいがある。

「グーグルに依存し・・・」は、第三章で、「ウェブ広告の未来」という説を書いています。
(略)おそらく広告は、さらにカスタマイズされていき、より個人レベルでのアプローチへと進化を遂げているだろう。
 「ウェブはバカと暇人のもの」は、まずはじめに、以下のように言ってしまう。
私はネットの使い方・発信情報について、「頭の良い人」「普通の人」「バカ」に分けて考えたい。(略)私は本書で「普通の人」「バカ」にまつわる話をする。

どうも、「グーグルに依存し・・・」の方は、「頭の良い人」が、「頭の良いサービスを提供する」視点で書いているように思える。翻って、「ウェブは・・・」は、全くその逆、引用の通りである。

もちろん、後者の本も、「頭の良い人」のことを否定しているわけではない。むしろ先の引用の通り、「頭の良い人」を「あっち側」にやって本を書いていると思われる。

この「両方の視点」を、読み比べ、考えていくことで、そのギャップに何があるのだ?というか、ネットはそれが両立しているのではないか?・・・してるのか!?ネットは真?偽?それともカオス?そのギャップを埋めることで・・・!?などと、いろいろ妄想が働く。

この二つの本が、それぞれ2009年7月、2009年4月に発行されているというのも、なかなかおもしろい。
すでに3年が経過しているが・・・今はどっちに向かっているのか、それとも、全然違う方向なのか・・・

考察のしがいがありそうなのだが、酔っ払っているのでやめておくw


↓余談だがこーいうのをみると、そんなに広告って未来あるのかなーという疑念がなくもないが。考察の一助か。