2019/06/30

[tools]UMLエディタを探し始めた

今までシーケンス図を描くのにastah community 6.9.0を使っていた。
無料版ながら商用でも利用できる最後のバージョンだ。
だったのだ。。。


先週、PCを初期化することになってしまい、以前の環境に戻そうとあれこれインストールしていた。
そして気付いたのだ。astah communityの配布が終わっているということに。

個人事業主をやっていたときもastah professionalの購入を考えていたのだが、結局その前に休業して買わぬままだ。
ほとんどC言語しか使わないということもあり、線さえ引っ張れれば良いときが多く、そうなるとprofessionalは多機能すぎるし・・・、とためらったのだ。


というわけで、UMLエディタを慌てて探し始めた。


PlantUMLは、ちょっと私の使い方とあわない。
目で見ながら線を引いて、あーでもないこーでもない、と考えるタイプなので、文字で入力するのはつらい。


となるとExcelでも十分なのだが、あれも私の感覚とちょっと違う。
線が引っ張れれば良いといったが、UMLの線が引っ張れれば良い、だな。

そして、オフラインで使いたい。
どうにもオンラインでの描画は苦手なのだ。


となると、結局astahくらいしか選択肢が無いのか。
astah UMLの買い切りバージョンがあるとよかったのだが、ないのよねぇ。
利用時間での課金制というわけでもないので、悩む値段だった。


Modelioというツールを使ってみた。

https://www.modelio.org/

うーん、私にとっては描画が難しかった。
選択して移動するのと、期待通りの矢印を引くというところがうまく操作できなかった。



でも、これってeclipseだよねぇ、というわけで、papyrusというプラグインも試してみた。

https://www.eclipse.org/papyrus/

こちらも、私はうまく操作できなかった。
こうもアプリが操作できないと、私の熟練度が低いだけなのでは。。。と思わないでもないが、まあよかろう。


では、オフラインで使いたいという要求を取り下げてみよう。

https://online.visual-paradigm.com/ja/solutions/free-sequence-diagram-editor-online/

これはよさそうだった!
が・・・微妙にあちこちと細かいところが感覚と違う。。。



はっ、私が「違う」と思っているベースはastah communityなのか!
あるいはVisioだったりするのだが、その辺が私の基準になっているようだった。

ということは、結局astahに戻るのだろうか。。。

2019/06/24

[bash]doとdone

「bashのdoとdoneってなによ!」と、腱鞘炎で苦しんでいる私は突如思った。


shell - What is the purpose of the "do" keyword in Bash for loops? - Unix & Linux Stack Exchange
https://unix.stackexchange.com/questions/306940/what-is-the-purpose-of-the-do-keyword-in-bash-for-loops


いろいろ説明や例があるが、Pascalのbeginとendみたいなものか、というところで落ち着いた。


じゃあ、セミコロンもある程度は省略できるんじゃないか?と思った。

これは通った。

#!/bin/bash

set 1 2 3
for i do
         echo $i
done


こっちはダメだ。
リストとdoの切れ目がわからないからか。

#!/bin/bash

for i in 1 2 3 do
         echo $i
done


改行を入れると通る。

#!/bin/bash

for i in 1 2 3
do
         echo $i
done

[bash]文字列比較の==

比較するとき、==を使いたくなるだろう。

が、「bash if 文字列」などで検索したところによると、文字列比較は=らしい。
なお、数字の場合は-eqとか-neになるそうだ。

#!/bin/bash

if [ "$1" = "hello" ]; then
     echo hello!!
fi


#!/bin/bash

if [ "$1" == "hello" ]; then
     echo hello!!
fi

この2つを試してみたのだが、どちらも同じ動きをした。


検索するといろいろ出てきたが、とりあえずbashは使えるらしい。
が、積極的に使う理由もないだろう。たぶん。

2019/06/23

[xfce4]xfce4-terminalのキー変更(0.8.7.4)

LinuxではLubuntuを使っているのだが、terminalはxfce4-terminalを使っている。

キーバインドの変更は、こんな感じだ。
バージョンによって変わることもあるそうだから、タイトルにはバージョンを書いておいた。

vi ~/.config/xfce4/terminal/accels.scm

これでファイルを開くと、なんとなくわかるんじゃなかろうか。


この変更が反映されるタイミングだが、次にxfce4-terminaを開いたときではなく、全部のxfce4-terminalを閉じて次に開いたときのようだ。

2019/06/22

[win10 1903]タスクバーの色が変えられない

Windows Updateで降ってくるまで待とうかと思ったが、気分転換にWindows10を1903にアップデートした。



特にインストールして変わったところが見られなかった。
フォント設定は元に戻されたので変更したが、プライバシー設定は前のまま全部OFFになっていた。
ただ、インストールした後って、けっこう元に戻されたりするので、実は見た目だけ引き継いでるんじゃなかろうか?などと心配になったりする。







 

それはいいとして、配色だ。
なぜか知らんが、 「既定のWindowsモード」が黒じゃないとタスクバーの色変更ができないようなのだ。
前もそうだったっけ?
アップデートした直後は大丈夫だったのだが、元に戻せるだろうと思って色を変更してみたらこのざまである。。。

毒くらわば皿まで、とハイコントラストモードにすると、タスクバー自体が消えてしまった・・・。
うーん、なんか今回は画面設定周りがひどいな。Updateが降ってくるまで待たなかったから仕方ないのだがね。





この辺は、Winaero TweakerやClassicStartMenuなんかで対応できそうだが、うまくいかなくなった理由がよくわからなかった。
どうも、ライトテーマなるものが追加されたらしい。

Windows 10の「ライトテーマ」とは?「May 2019 Update」で変わった新しい見た目をチェック | できるネット
https://dekiru.net/article/18530/
以前のAero Liteのライトではなく、Lightの方だそうな。




2019/06/16

[raspi]タイムゾーンの変更

Raspberry Piのタイムゾーン変更を、raspi-configを使わず、/etc/localtimeの変更だけで済ませていた。
dateコマンドで時間がとれていた(UTCに変更したのだ)ので安心していたのだが、Javaのログファイルが+1時間されていた。
それに、起動したとき最初に出てくるタイムゾーンがBSTのままだった。
何か足りんらしい。


raspi-configのここら辺だろう。

https://github.com/RPi-Distro/raspi-config/blob/0038aaeb180a0ad2224940cd26655bb8401e5e5d/raspi-config#L417-L429

dpkg-reconfigure tzdataで書き換えるようだ。
たぶん、/etc/timezoneに書いてある文字列を使って設定するのだろう。
実際、/etc/timezoneは「Europe/London」になっていたので、UTCになりきっていないのだろう。


試しに、/etc/timezoneに”Etc/UTC”と書いて実行してみた。

# sudo dpkg-reconfigure -f non-interactive tzdata
debconf: unable to initialize frontend: Non-interactive
debconf: (Can't locate Debconf/FrontEnd/Non.pm in @INC (you may need to install the Debconf::FrontEnd::Non module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/arm-linux-gnueabihf/perl5/5.24 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base) at (eval 17) line 2.)
debconf: falling back to frontend: Noninteractive

Current default time zone: 'Etc/UTC'
Local time is now:      Sun Jun 16 13:57:31 UTC 2019.
Universal Time is now:  Sun Jun 16 13:57:31 UTC 2019.

このあと、SSHで開いてみたのだが、まだBSTのままだ。
再起動もやってみたが、そういう話ではなさそうだ。

そもそも、最初に出てくるこの日時はなんなのかと見ていったら、uname -vだった。
kernel versionらしいので、RaspbianOSとかapt upgradeとかだろう。
気にしなくてよさそうだ。


この状態でJavaの時間を見ると、UTCになっていた。
よかったよかった。
できれば、ファイルの書き換えで済ませられると良いのだが、仕方あるまい。

Mbed Studio 0.5.1 + F411REがつながらない

つながらないのだ・・・。


Mbed Studioなるものがあることに気付いたのでインストール。
BLE Nano用のプロジェクトをインポートさせたが、Active Programに設定できず。

たぶんBLE NanoがMbed OS5に対応していないせいでは、と考えて新規の空プロジェクトを作り、NUCLEO F411REをつないでみた。

が、Mbed Enabledじゃない、といわれて認識してくれない。
firmwareも新しくしてみたのに、なんでだ・・・。

pyOCDに対応したボードだけしかダメなんじゃないの、という話になってた。
結構前からpyOCDは存在してるイメージがあるけど、NUCLEOなんかもあんまり対応してないのね。
https://os.mbed.com/questions/84835/Debugging-in-Mbed-Studio/

でも、vscodeだけどpyOCDを使ってデバッグしている人もいるから、何かやりゃ動くのか?
https://os.mbed.com/users/MACRUM/notebook/vscode-stm32-openocd/

ただ、「やったー、Arm純正のコンパイラでビルドだけできるぜー」って訳にはいかないことは分かった。



という記事をOpen Live Writerのテスト版(0.6.3)で作っていたのだが、画像付きだとアップロードできないのが直ってないのか、うちの環境だとうまくいかないのか、とにかくアップできなかった。。。

2019/06/15

SEGGER Embedded Studio for ARM(Nordic Edition)でnRF51822をビルド

前々回の続きだ。

メモ
  • SESをNordic Editionにした(V4.16)
  • nRF SDK v10.0.0を使う
  • サンプルのble_app_beacon_s110_pca10028をインポート
  •  PDFの8.2章を見ながらインポートする
    •  8.2.6の追加時に、ついでにtoolchainの行をコピーして1行増やし、toolchain/gccも追加
    •  ses_nrf51_startup.sの`__SRAM_segment_end__` は`__RAM_segment_end__`に変更
これでnRF51422としてはビルドが通ったと思う。
が、うちにはnRF51822しかないので、そっちに変更。

nRF51422のメモリマップ
  • FLASHのstart addressとサイズ
    • 0x00000000 (256kB)
  • RAMのstart addressとサイズ
    • Block0 : 0x20000000 (8kB)
    • Block1 : 0x20002000 (8kB)
256kB=0x40000、8kB=0x2000なので、これを目印にSESの設定を探すと、「Project Options > Code > Build > Memory Segments」がそれっぽい。
RAMの割り当てが多い気がするが、セクションが重ならなければよかろう。

nRF51822のProduct Specificationを見ると、なんだ、同じじゃないか。
では、このまま使おう。

J-LinkとnRF51822を「Target > Connect J-Link」で接続。


続けて焼こうと思ったが、SoftDeviceのことを忘れていた。
これは8.4章に書いてある。

SoftDevice v8.0.0はリリースノートによるとこうらしい。


なので、これをオフセットとして足してやればいいのだろう。
「Project Options > Code > Build > Memory Map Macros」なのかな。









・・・ダメだ。
PDFによるとビルドするとオフセットした分だけ結果のハイライト位置がずれるらしいが、これではずれなかった。

よくわからんので、nRF SDK v15のプロジェクトを見てみた。
 FLASH_STARTなんかはなかったし、ビルドしてもハイライト位置はずれなかったのだが、対応しているプロジェクトだとSoftDevice関係の設定はいらないと書かれていたから当てにならん。

ただ、Linker設定でflash_placement.xmlが指定されてて、そのファイルの中にはFLASH_STARTなどの文字が見えた。 


では、同じようにやってみようとnRF51の方に戻ったのだが・・・その項目がない!


もしかして、インポートすると出てこないのだろうか。。。
ただ、その代わりなのか、Linker Script Fileの設定がある。
でもICFファイルといえばIARだよなぁ、とPC内を検索してみたが、nRF SDKの中にIAR用としてICFファイルがあった。
 使えてくれ!と期待して変更したが、やっぱりだめだった。

Keilで設定を見てみると、Target設定でずらしていた。
 
 
 というわけで、こちらもずらそう。


そしてビルドし直す。
SoftDeviceはnRFgo Studioで焼いてあるので、DebugのLoaderは設定しない。


そうやってDebugを実行すると、mainの頭まで動いてくれた。
そのまま実行できたのだが、Advertisingしていない。。。
エラーハンドラにブレークポイントを置いてみたが、止まる気配がない。
うーん・・・。

一時停止してみると、WFEの近くで止まった。
そういえば、nRF SDKは外部RFを使うサンプルになっているんだったが、私のnRF51は外部RFを持っていないのだった!

SOFTDEVICE_HANDLER_INIT()を内部RFに変更することで、無事Advertisingを確認できた。
ここまでわかるのに時間がかかったが、やり方さえ分かってしまえば大したことはないな。