2017/02/28
Python でディレクトリ内のファイル一覧を取得する方法3種
微妙に動作が違ってすぐ迷うので備忘録
。
例として、こんなディレクトリ構造を使用します。
```text
`gutter: false;
.
└── dir
├── a.txt
├── b.txt
├── c.jpg
└── subdir
├── d.yaml
└── e.conf
```
プログラム全般、無節操に手を出しまくってみる
微妙に動作が違ってすぐ迷うので備忘録動作確認は Python 2.7.12 と 3.5.2 で行いました。
例として、こんなディレクトリ構造を使用します。
```text
`gutter: false;
.
└── dir
├── a.txt
├── b.txt
├── c.jpg
└── subdir
├── d.yaml
└── e.conf
```
「[Docker](https://www.docker.com/) 上で GUI アプリケーションを動かす」という投稿を見つけたので、ちょっとやってみましたDocker でインタラクティブな GUI を動かすのは本来の思想に合ってないという点はとりあえずおいておく。
> 参考
> - [Running GUI apps with Docker – Fábio Rehm](http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/)
[Android で Custom Progress Bar を作る方法](http://kokufu.blogspot.jp/2017/02/android-custom-progress-bar.html) を書いてて、アニメーションGIF を作った時の備忘録。 結局、[ffmpeg](https://ffmpeg.org/) で全フレームを静止画に変換し、各フレームを [ImageMagick](https://www.imagemagick.org/script/index.php) で処理してから、アニメーションGIFに変換するのがベストという結論に。
Progress **Bar** といっても、バー状のものではなく、indeterminate モードを自作する方法です。 indeterminate モードは、終了時間が未定の時に使用される周期的なアニメーションを指します。 ### indeterminateDrawable を記述すればよい 実は、やり方は簡単。 `ProgressBar` の `indeterminateDrawable` に [Drawable Animation](https://developer.android.com/guide/topics/graphics/drawable-animation.html) を指定すれば良いのです。 注意点としては、`layout_width`, `layout_height` に `wrap_content` が使えないということ。サイズを指定する必要があります。 /res/layout/activity_main.xml ```xml `highlight: 10; <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ProgressBar android:layout_width="120dp" android:layout_height="120dp" android:layout_centerInParent="true" android:indeterminateDrawable="@drawable/animation01" /> </RelativeLayout> ``` ### Drawable Animation の作り方 [Drawable Animation](https://developer.android.com/guide/topics/graphics/drawable-animation.html) はリンク先にもあるようにパラパラ漫画の要領でアニメーションを作成します。 例えば、`ic_signal_wifi_[0-4].png` のようなファイルを用意し、以下のように `animation01.xml` に記述します。 /res/drawable/animation01.xml ```xml <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:duration="200" android:drawable="@drawable/ic_signal_wifi_0_bar" /> <item android:duration="200" android:drawable="@drawable/ic_signal_wifi_1_bar" /> <item android:duration="200" android:drawable="@drawable/ic_signal_wifi_2_bar" /> <item android:duration="200" android:drawable="@drawable/ic_signal_wifi_3_bar" /> <item android:duration="200" android:drawable="@drawable/ic_signal_wifi_4_bar" /> </animation-list> ``` あとは、上記のように `indeterminateDrawable` 属性に指定すれば、以下のような Custom Progress Bar が完成します。 ### さらに簡易的な方法もある 単純な回転の場合、 [Animation Resources](https://developer.android.com/guide/topics/resources/animation-resource.html) の [RotateDrawable](https://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html) を使えば、リソースが一つしかなくても回転アニメーションを作成できます。 例えば以下のように-360 にしているのは回転方向を反時計周りにするためです。。 /res/drawable/animation02.xml ```xml <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="-360" android:drawable="@drawable/ic_sync"/> ``` この方法、速度指定できないですし、細かい制御には向いていません。 > 参考 > > 速度を N倍にする方法はあるみたい > - [AndroidのRotateDrawableで回転速度を調整する - scache’s blog](http://scache.hatenablog.com/entry/2016/12/15/022152)
[Cypress](http://japan.cypress.com/) PSoC の I2C モジュールを使ってアドレスをスキャンする方法。 こんなの滅多にやらないから、備忘録として。 > 参考 > - [I2C Scan | Cypress Semiconductor](http://japan.cypress.com/forum/psoc-4-architecture/i2c-scan) ```c bool TestI2CAddress(uint8 address) { uint32 status = I2C_I2CMasterSendStart(address,I2C_I2C_READ_XFER_MODE); I2C_I2CMasterSendStop(); return !status; } int main() { static uint8 I2C_address; CyGlobalIntEnable; I2C_Start(); while(true) { for(I2C_address = 0; I2C_address < 0x7F; I2C_address++) { if(TestI2CAddress(I2C_address)) { // I2C_address が存在する // 出力する等何か処理 } } while(true) { // Wait } } } ```
アプリケーション開発から組み込みまで手を出しているフリーランスのエンジニア
何故か C,C++ の仕事をすることが多いけど、本当は Java や C# が好き
最近は Android がらみ多し