Translate

2016年5月18日水曜日

Arduino "Ciao" のトップページだけ翻訳してみた

Arduino Yunのドキュメントを読んでいると、Arduino社はどうもCiao ライブラリを使うことを推奨しているように読めた。
でも、Ciaoについてよく理解せず使っているのはまずかろう
と、
arduino.orgの

CIAO
http://labs.arduino.org/ciao

を勝手翻訳してよんでみた。

#ほかの翻訳同様参考にする場合は at your own risk でお願いします。




----

Ciao とは?


Arduino Ciao は、Arduino sketchに直感的な"外界"との通信を可能にする使いやすく強力な技術です。
サードパーティサービスやソーシャルネットワークなどの、大部分の標準的なプロトコルを使った様々なマイクロコンピュータ・Linino OS間の相互間通信のためのインタラクションを単純化することを目的としています。

Arduino Ciao - 以降 "Ciao"と略す - は、Sketch上で使用される正式なライブラリの一つです。

Ciaoは、モジュールとして簡単に設定できるように設計・実装されました。
システムリソース(ファイルシステム、コンソール、メモリ)とアプリケーション(Jabber、WebChjat、Twitter、Facebookなど)とのインタラクション可能なないくつかのコネクタをサポートすることがゴールです。

Ciao はMITライセンス準拠のオープンソースです:コードをよんだり、改善の議論やフィードバックの提供、新機能の開発が自由です。ソースコードはGitHub上で公開されています。

Ciao は2つのパーツで構成されています:

 Ciao ライブラリ:C言語で開発されました
 Ciao コア:Pyhtonで開発されました

図→ http://labs.arduino.org/dl1263?display&x=900&y=636

Ciao ライブラリ


Ciao ライブラリは、MCUがデータを(シリアル通信経由で)送受信するためにSketch内部でシンプルかつ直感的に使うことができる軽量ライブラリです。

動作の仕組みや設定方法をより理解するには、次のページを参照してください。

Ciao コア


"外界"との通信のために、Ciaoライブラリは、MPU(マイクロプロセッサ)サイド上のCiaoテクノロジキーコンポーネントである、Ciaoコアと相互接続します。Ciao コアは、Linino OS上で実行します。Ciao コアは、pythonで実装されており、コネクタとよばれるいくつかのモジュール経由で、"外界"との通信を可能にするよう設計されています。CiaoコアのコネクタはTCPソケットによりJSON形式の文字列を使って通信します。


Ciao コアは、このスマートかつ効果的な設計により、次のことが可能です:
 
  • 開発者が可能だとイメージしていることと同等のコネクタを使ってのインタラクション
  • Linino OS上で使用可能な言語で実装されたコネクタのサポート

Ciao コアアーキテクチャについての詳細や設定方法は次のリンクを参照してください。

Ciao のセットアップ


Ciao のインストールはとても簡単で数ステップで完了させることができます。このページを参照してください。

コントローラのリスト


既に使用可能なコネクタを探したりそれらをセットアップする方法を学習する場合は、Ciaoコネクタのページを参照してください。

動作可能なボード


Linino OS が動作する全てのボードで動作します:
  •     Arduino Yun
  •     Arduino Yun Mini
  •     Linino One
  •     Arduino Tian
  •     Arduino Industrial 101

Linino OS上でAlljoyn準拠のpytthonプログラムが動いていて、その上でコネクタ(これもpython)がSketch側のCiaoクラスで指定したもの(コネクタで定義したname文字列)動くようになっている。  

Alljoynは常時動いていて、コネクタをサポートし、それぞれのコネクタは設定ファイル内でnameをhじめとした細かな通信先ホスト名、ポート番号、必要があればユーザIDやパスワード(APIキーやSecretキー)、プロトコルへの細かな設定(MQTTならQoSとか)を記述する。

フレームワークでよく使用されるGoFのAbstract Factoryパターンで実装されているのでSketch側に細かな接続先の情報をいちいち書かなくて良い。

これはSketchプログラムが、最終的にAVRマイコン上に焼き込むため、なかなか更新することが難しいので、通信先のホスト名の突然の変更などはLinino OS上の設定ファイル変更で対応させようとしている、オブジェクト指向デザインの基本"関心の分離"を行っているわけか..

一見するとCiaoは記述する箇所がLininoOS上までおよぶので手数が増えるだけで旨味がないようにみえるが、その実IoTデバイスとして本番機動作迄踏まえた設計であるといえる。

つまり Arduino社も IoT に本気になった、ということだろう。

2016年5月9日月曜日

Arduinoシールド"Braccio"を組み立てる




スイッチサイエンスのサイトでふとこれを見つけた。

スイッチサイエンス:tinkerkit Braccio
https://www.switch-science.com/catalog/2699/

簡単にいえば腕だけのロボット。
ただし"手"の部分はカニバサミ状態。

おどろいたことにArduinoシールドで
上記サイト情報では常用している Arduino YUN でも動作するとのこと。

で、早速購入してみた。



到着したらすごくオサレな箱に入っていた(上の写真)。
しかも必要な工具
(先端磁石仕様のプラスドライバと薄っぺらなレンチ)
がはいっているため、
なにも工具がなくてもすぐに組み立てられる。



全部で6つのモータ、
目視した所だとおそらく全部同じ仕様のServoモータで
構成されたロボットだ。



モータには番号がついていて下から順番になっている(上の写真)。

デフォルト位置は、
Arduino IDE添付のサンプルプログラム"testbraccio90"を
実行し終わった状態、
すなわち
「腕、二の腕をまっすぐ真横にのばして、手を開いた」状態である。

M1:BASE
 土台内に埋め込まれていて、人間で言うと肩の部分にあたる。
 二の腕全体をを前や後ろに動かす動作に相当。
 デフォルト位置:90度
 旋回範囲:0度から180度まで

M2:SHOULDER
 土台のすぐ上に位置していて、M1同様肩の部分にあたる。
  二の腕を真横に上げたり下げたりする動作に相当。
 デフォルト位置:45度
 旋回範囲:15度から165度まで

M3:ELBOW
 M2の上に位置していて、肘の部分にあたる。
  腕をまげたりのばしたりする動作に相当。
 デフォルト位置:180度
 旋回範囲:0度から180度まで

M4:VERTICAL WRIST
 M3の上に位置していて、手首の部分にあたる。
  手首をのばしたり曲げたりする動作に相当。
 デフォルト位置:180度
 旋回範囲:0度から180度まで

M5:ROTATORY WRIST
 M4のすぐ上に位置していて、手首の部分にあたる。
  手首をひねる動作に相当。
 デフォルト位置:90度
 旋回範囲:0度から180度まで

M6:ROTATORY WRIST
 一番上の白い部品位置にあり、手(親指と人差指?)の部分にあたる。
  掴んだりはなしたりする動作に相当。
 デフォルト位置:10度
 旋回範囲:10度(開いた状態)から73度(閉じた状態)まで



組み立ては同梱のガイドに従って作業すればOK。
英語だが、図解されているので、
それほどむずかしくない。

BRACCIO QUICK START GUIDE
http://download.arduino.org/products/braccio/Braccio_Quick_Start_Guide.pdf

気をつける点は、
コネクタにシールが1~6とつけられているので、
このモータの番号を決して間違えないこと。
これを間違えてもシールドの結線でリカバーできるが、
カッコ悪いので組み直すことになる。
組み直しは可能だが、
木ネジ型なので一旦組み付けてしまうと
二度目以降の締め直しでバカになる可能性があるため、
できるだけ一発で決めたほうがよい。
そうしたのなら何度もしっかり確認をして組み付けていく。



また、ケーブルの取り回しを考えてケーブルを配置すること。
ガイドのほぼ全般ケーブル部分が省略されている。
というか、どこにも書いていない。
関節の可動部分に触れないようにケーブルを取り回すには、
組立中に完成した時のケーブル位置をきちんと想像できているか
にかかっている。
同梱には半透明のケーブルまとめる部品もついているが、
ある程度動作範囲が分かるまではこの部品は付けないほうが良い。

最後に土台の茶色い板を組み付けるが、
これはサンプルプログラム"testbraccio90"をうごかして
すべてのモータがデフォルト位置にある状態で
つけたほうが良い。

組み立ては30分位で完成する。



配線してArduino(同梱されていない)にShieldボードを刺すが
Arduino YUN/Tian の場合は
https://www.switch-science.com/catalog/2699/
にあるとおり5 VピンとVinピンをショートさせ
Shieldの5Vの足を1本Arduino側に接続しないように刺す必要がある。

ここまでできたらShield側に同梱のACアダプタを接続して通電させる。

そしてPCにArduinoをUSBで結線し
Arduino IDEを起動して
ファイル>スケッチの例>Braccio>testBraccio90
(見当たらない場合はIDE最新版をarduino.orgからダウンロードすること)
を開き、これをコンパイル&ロードする。



動作完了(上の写真)したら、
モータの角度を変えないように本体の一番下に
土台を組み付ける。


まだそれほど触っていないが、
意外と重いものはつかめないし
すべての動作は重心を考えて
動かしながらちょこちょこ角度をいじる必要がある。
場合によっては結線の取り回しなども変えないと
Arduinoごと振り回したりする(既に私も2度やった)。

あと、
動作中も動いていなくても
蚊の羽音のようなモータ特有の小さな音が出続ける。

でもさすがイタリア製、
日本製だとロボットを落ち着いたオレンジ色に塗らないでしょ。
見た目もきれいなので
IoTデモとしてこれを使う場合も見栄えがいい。

とりあえずXFDでもやってみるかな..

2016年2月26日金曜日

ブロックチェーンを勉強するためにまず用語集を翻訳してみた

Bluemix上にBlockchainなるサービスがLabに登場した。

IBM、「Bluemix」上で開発者向けブロックチェーンサービスを提供へ
http://japan.zdnet.com/article/35077990/

そろそろ「ブロックチェーン」というものを勉強しなきゃと思ってはいたのだけど、なんとなくのばしのばしにしていた。

でも、そろそろやらんとなあ..と思い、まず

Marblesというブロックチェーンのサンプルコードについている用語集
https://github.com/openblockchain/obc-docs/blob/master/glossary.md

をまず翻訳してみた。

先に行っておくと、ブロックチェーンの"ブ"も知らない超弩級ド素人が翻訳しているので、私のほかの翻訳文書と比較しても品質はとても低い。機械翻訳に近いくらいの出来だ。
なので、参考にするとしても、かなりリスクをともなうことを覚悟してほしい。

----

Roles & Personas

Roles


Chain Transactorトランザクションの生成やネットワークデータ問い合わせのためのパーミッションを保持するエンティティ。
Chain Validatorchain ネットワークのstakeを所有するエンティティ。各chain validatorはトランザクションが有効かどうか決定する投票権を持っており、それゆえchain validatorはそれらのchainへ送られるすべてのトランザクションを調べることができる。
Chain Auditorトランザクションを調べるためのパーミッションを持つエンティティ。

Participants

Solution Userエンドユーザはchainネットワークの詳細について知らない、一般的に彼らはSolution Providerによって有効可能となったアプリケーションを通してchainネットワーク上でトランザクションを開始する。Roles:なし
Solution Providerchainネットワークへアクセスするためのエンド(ソリューション)ユーザのためのモバイルや/もしくはブラウザベースのアプリケーションを開発する組織。アプリケーションオーナはネットワークオーナでもある。Roles: Chain Transactor
Network Proprietor(所有者)Proprietor(所有者)はセットアップし、chainネットワークの目的を決定する。彼らはネットワークのステークホルダである。Roles: Chain Transactor, Chain Validator
Network Auditorsトランザクションを調べるパーミッションを持つ個人もしくは組織。Roles: Chain Auditor

Business Network

Types of Networks


Industry Networkある特定の企業のためにビルドされたソリューションを提供するひとつのchainネットワーク。
Regional Industry Networkある特定の企業や地域のためにビルドされたアプリケーションを提供するひとつのchainネットワーク。
Application Network単一のソリューションだけを提供するひとつのchainネットワーク。


Types of Chains

Main Chainひとつのビジネスネットワーク;各main chainは、組織の同一グループによって認可された1つ以上のアプリケーション/ソリューションを運用する。
Confidential Chain契約投資家(contract stakeholders)によってのみアクセス可能な秘密のビジネスロジックを実行するために生成された特別な目的のchain。


Transactions

Types of Transactions

Deployment Transactionあるchainへ新しいchaincodeをデプロイするトランザクション。
Invocation Transactionあるchaincode上の一つの機能を発動するトランザクション。

Confidentiality of Transactions

Public transaction公となっているそのペイロードを持つトランザクション。chainネットワークへアクセス可能な誰もがpublic transactionの詳細を調べることができる。
Confidential transaction暗号化されたペイロードを持つトランザクション。もしトランザクションがdeployment transactionであれば、以降デプロイされたchaincodeを読んでいるすべてのinvocation transactionもまた秘密であるべきである。

Inter-chain Transactions

Inter-Network Transaction2つのビジネスネットワーク(main chains)間のトランザクション。
Inter-Chain Transactionconfidential chainやmain chainの間のトランザクション。confidential chainのchaincodeは一つ以上のmain chain上のトランザクションを起動する事ができる。

Network Entities

Systems

Application Backend

目的:
関連のモバイルや/もしくはブラウザベースアプリケーションをサポートするバックエンドアプリケーションサービス。

鍵となるロール:
  • エンドユーザの管理やメンバーシップサービスによるそれらの登録
  • トランザクション要求の開始、そしてノードへのリクエスト送信
所有元:
Solution Provider, Network Proprietor

Non Validating Node (Peer)

 目的:
トランザクションを構築し妥当なノードへフォワードする。ピアノードはすべてのトランザクションレコードのコピーを維持するのでsolution providerはそれらを内部で問い合わせることが可能である。(開発用語名:NVP - Non Validating Peer)

鍵となるロール:
  • メンバシップサービスによるユーザの秘密事項の管理と維持
  • トランザクションの構築と妥当なノードへのフォワード
  • 台帳のローカルコピーの維持、そして内部で情報を問い合わせるためのアプリケーションオーナへの許可
所有元:
Solution Provider, Network Auditor

Validating Node (Peer)

 目的:
トランザクションの構築と妥当性検証、そしてchaincodeのstate維持。
鍵となるロール:
  • メンバシップサービスによるユーザ秘密事項の管理と維持。
  • トランザクションの構築
  • ネットワーク上のほかの妥当性検証ノードでのトランザクションの実行と妥当性検証
  • 台帳のローカルコピーの維持
  • 合意による参加と台帳の更新
所有元:
Network Proprietor, Solution Provider (同一のエンティティに所属する場合)

Membership Service

目的:
エンドユーザや組織の識別の振り出しや管理

鍵となるロール:
  • 各エンドユーザや組織への登録証明書の発行
  • 関連する各エンドユーザや組織へのトランザクション証明書の発行
  • OBCエンティティ間のセキュア通信のためのTLS証明書の発行
  • chain 特定キーの発行
所有元:
Third party service provider

Membership Service Components


Registration Authority登録username、登録passwordのペアにネットワーク参加を割り当てる。username/passwordペアはECAから登録証明を取得することで利用される。
Enrollment Certificate Authority (ECA)メンバシップサービスにより既に登録されたネットワーク参加者に登録証明書(ECert)を発行する。ECertは一つ以上のネットワークに参加している個別のエンティティを特定するために使用される長期証明書である。
Transaction Certificate Authority (TCA)Ecert 所有者へトランザクション証明書(TCert)を発行する。それぞれのECertから無限数のTCertを抽出することが可能である。TCertはネット ワーク参加者によりトランザクションを送るために使用される。セキュリティ要求のレベルに依存して、ネットワーク参加者はそれぞれのトランザクションごと に新しいTCertを使うことを選択してもよい。
TLS-Certificate Authority (TLS-CA)あるchainネットワークのメッセージを渡すシステムへのTLS証明書の発行。TLS証明書はシステム間のセキュアな通信チャネルによって使用される。

OBC Entities

Chaincode

Public Chaincodepublic transactionによりデプロイされたchaincode。これらのchaincodeはネットワークのどんなメンバによっても割り当て可能である。
Confidential ChaincodeConfidential transactionによりデプロイされるchaincode。これらのchaincodeはネットワークの妥当性検証メンバ(chain validator)によって割り当て可能である。
Access Controlled Chaincode承 認されたinvokerのトークンも埋め込まれたConfidential transactionによりデプロイされるchaincode。これらのinvokerもまた、たとえValidatorでなくても、 confidential chaincode割り当て許可されている。

Ledger(台帳)

Chaincode-StateOBCはstateサポートを提供する;chaincodeはstate APIを通して内部のstateストレージへアクセスする。stateは、ロジックへアクセスするstateのchaincode機能を呼び出すトランザクションによって生成、更新される。
Transaction Listす べての処理されたトランザクションは台帳内にオリジナルフォーム(confidential transactionのために暗号化されたペーロード)で保管される、このためネットワーク参加者はアクセスパーミッションを使って過去のトランザク ションを調べることができる。
Ledger Hash台帳の現在のスナップショットをカプチャするハッシュ。トランザクションが生成されてからのネットワークにより処理されたすべてのvalidated transactionの結果である。

Node

DevOps Serviceク ライアントとそれらのノードやchainネットワークとのやりとりをAPIとして提供するノード上の正面のモジュール。このモジュールもまたトランザク ションの構築に責任を持ち、メンバーシップサービスとともに動作してすべてのタイプの証明書や暗号キーを受け取りストレージに格納する。
Node Serviceトランザクション処理に責任をもつノード上のメインモジュール。chaincodeをデプロイおよび実行、台帳データの維持、そして合意プロセスを起動する。
ConsensusSieveとよばれるOBCのデフォルト合意アルゴリズム。妥当性検証ノードにできるかぎり非決定論トランザクションを確認することを許可する「古典的な」PBFTメカニズムを拡張した、新しいアルゴリズムである。

----

と、最後まで翻訳したので、最初から読んでみるか..


2016年2月17日水曜日

FreeIPAでログインしたJenkins/Subversionで突然E200015: authentication cancelledというメッセージが出て失敗する

FreeIPAのLDAP連携でユーザ管理しているJenkinsサーバで毎晩必ず成功するジョブを仕掛けたままにしていたら、ある日次のようなログが出てエラーになってしまった..


ビルドします。 ワークスペース: /var/lib/jenkins/workspace/hogehoge_buildname
Updating http://subversion.server.local/svn/repo/default/tags/it_target at revision '2016-02-17T09:32:57.319 +0900'
org.tmatesoft.svn.core.SVNCancelException: svn: E200015: authentication cancelled
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)

調べてみるとSubversionサーバ(subversion.server.local)のdefaultリポジトリへのアクセスで認証がキャンセルされているというエラーらしい..

で、調べてみたらFreeIPAをデフォルトインストールした時のパスワードポリシ"global_policy"が定義されていて、Max lifesycleが90日になっていた。

なのでJenkins上に定義していたCridentialsのアカウントパスワードを設定しなおしたら動作した..


FreeIPAをそのまま使っている場合はパスワードポリシに気をつけましょう..


と、いってもこんな初歩的な罠にゃ誰もひっかからんか..





2016年2月3日水曜日

メールによるRedmineチケットの登録をためしたら、ログにPermission deniedと表示され動かない

メールによるRedmineチケットの登録で

SELINUXがenforcingであるCentOS7.2上にRedmine3.2.0とpostfix(MX)をインストールしているので、

メールによるチケットの登録
http://redmine.jp/guide/RedmineReceivingEmails/

をためしてみた。

しかし、上記リンクの「メールサーバからメールを転送」に従って設定して実行してみたら、/var/log/maillogに以下のエラー行がでて登録されない..

Feb  00 00:00:00 mail local[000000]: fatal: execvp /path/to/redmine/extra/mail_handler/rdm-mailhandler.rb: Permission denied


/etc/aliasesのパイプで/path/to/redmine/extra/mail_handler/rdm-mailhandler.rbを実行するように書いたのだけど、ファイルの実行権限やユーザ、グループ設定は大丈夫なので、SELINUXがあやしいとおもいためしに

semanage permissive -a postfix_local_t

を実行してpostfix_local_tがらみだけSELINUXをPermissive(auditログにはエラーはでるが実行は許可する)にしてみたら動作した..

でも、これだとセキュリティ的に負けた気がする..

で、Permissiveを元に戻して

chcon -R -t postfix_local_exec_t /path/to/redmine/extra/mail_handler/rdm-mailhandler.rb

したのだけど、/var/log/audit/audit.logに

type=AVC msg=audit(1454457948.826:11466): avc:  denied  { search } for  pid=10388 comm="local" name="redmine" dev="dm-1" ino=103065422 scontext=system_u:system_r:postfix_local_t:s0 tcontext=unconfined_u:object_r:httpd_sys_rw_content_t:s0 tclass=dir

と出てしまう..
どうもredmineを/var/www/html以下ではないパスにインストールしたかったので、/path/to/redmine(パスのredmineのところだけauditログに出ている)に対して

chcon -R -t http_sys_rw_content_t /path/to/redmine

してしまっていたのが災いして、ファイルまで到達できなかったらしい..

どうもchconをイロイロ試してみたが、http系とpostfix_local_t系の二つのSELINUXドメインを共存させることはできないらしい..

とはいえ Redmine を動かすには http_sys_rw_context_t は外すことはできない..

しょうがないので、rdm-mailhandler.rbを/another/path/rdm-mailhandler.rbに移動させて

chcon -R -t postfix_local_exec_t /another/to/redmine/extra/mail_handler/rdm-mailhandler.rb

して動かしたらやっと動作した..


そういや日本語の記事であまり有効な情報がなかったなあ..
SELINUXを有効にした状態で、みんな運用していないのかねえ..

2016年1月28日木曜日

CentOS7.2でamavisdとspamassassinが起動しなくなった



Server WorldのPostfix+Clamav+Amavisd
http://www.server-world.info/query?os=CentOS_7&p=mail&f=6

を参考にCentOS7.2でSELINUXはenforcingしたままメールサーバをあげたのだけど
何故かメールが送れなくなった。

で調べてみるとpostfixとdovecot、clamd@amavisdは動いているのに
amavisdとspamassassinが止まっていた..

手動でsystemctl start amavisdしても動かない..

で/var/log/maillog を眺めていてふと

 spamd[1865]: config: no rules were found! Do you need to run 'sa-update'?

なる文字を見つけた..

!これだよ..

sa-updateが動かない..
http://fight-tsk.blogspot.jp/2011/11/sa-update-d.html


昔Ubuntu 10.04LTSでメールサーバ上げた時やったやつ..
4年前にはまったやつじゃん..

おれ..全然成長しとらんわ...
..て、いうか、最初からメール動いてなかったんじゃ..


..と、いうわけで

http://www.apache.org/dist//spamassassin/source/

にある現時点の最新版

# cd /tmp
# wget http://www.apache.org/dist//spamassassin/source/Mail-SpamAssassin-rules-3.4.1.r1675274.tgz
# wget http://www.apache.org/dist//spamassassin/source/Mail-SpamAssassin-rules-3.4.1.r1675274.tgz.asc
# wget http://www.apache.org/dist//spamassassin/source/Mail-SpamAssassin-rules-3.4.1.r1675274.tgz.md5
# wget http://www.apache.org/dist//spamassassin/source/Mail-SpamAssassin-rules-3.4.1.r1675274.tgz.sha1
# sa-update --install ./Mail-SpamAssassin-rules-3.4.1.r1675274.tgz


してから

# systemctl start amavisd
# systemctl start spamassassin

したら..動きました..

あ /var/log/messages に

 clamd: LibClamAV Warning: RWX mapping denied: Can't allocate RWX Memory: Permission denied
 clamd: LibClamAV Warning: Bytecode: disabling JIT because SELinux is preventing 'execmem' access.
 clamd: Run  'setsebool -P clamd_use_jit on'.


ってワーニングも出ていたので、

# setsebool -P clamd_use_jit on

しときました。

SELINUXをenforcingのままメールサーバを立てる場合は気をつけて

2016年1月26日火曜日

CentOS7.2上にJenkinsをインストールしProxyを設定し更新したら「Signature verification failed in update site 'default'」というエラーが表示される

CentOS 7.2 のDVDイメージ(1511)が出たので、これをつかってOSをインストールして、Jenkinsを起動した。

で、プラグインの設定でProxyをセットして「保存」し、「更新」しようとしたら、


 Signature verification failed in update site 'default' (詳細)

と表示されて、プラグインを追加・更新することができない。

で、調べてみたら..

Java and Old Hash Algorithms
https://isc.sans.edu/forums/diary/Java+and+Old+Hash+Algorithms/16571/

という記事をみつけた。

CentOS 7.2のデフォルトJavaがJava1.8.0.71(執筆時点)になっており、
MD2もしくはRSAハッシュが1024ビット未満だとdisableになるように設定されているかららしい。


対処方法も書いていて、

#jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

$JAVA_HOME/lib/security/java.securityの上記の行をコメントアウトすればよいとのこと。


CentOS7.2にFreeIPAを入れ、次にJenkinsをいれると、OpenJDK1.7.0とOpenJDK1.8.0両方はいるが、/usr/bin/javaはalternativesで1.8.0側にリンクされている。


なので、
 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/security/java.security
を編集して再起動したらアップデートありの赤マークが出てくるようになった


でも、みんな騒いでないなあ..なんでだろ..
ひょっとしてうちのproxyだけなのかなあ..



2016年1月12日火曜日

JenkinsのMQTT Nortify Pluginを使ってみる



Jenkinsのプラグインを検索していたら
"MQTT Nortification Plugin"
というイマドキなプラグインを見つけた。



ので無性に試してみたくなってJenkinsへインストールしてみた。

でジョブ設定に入って「ビルド後の処理の追加」を覗いてみると
「MQTT Nortification」という欄ができていた。

追加するとMQTTブローカ先の指定やPublishするトピック名、メッセージ本体、QoSなどが設定できるようになっていた。


これを試すにはMQTTブローカが必要になる。

で、ふと思ったのだけどJenkins実行環境がproxy環境配下のDockerマシン上なので、BluemixのIoT Foundationに直接メッセージを送れない..

しょうがないので、同じDocker上に別コンテナでMosquittoをたちあげた。




Jenkins側のジョブでは、
Broker URL欄に"tcp://localhost:1883"、
Credentials欄はなしのまま(Mosquittoで認証設定していないため)、
Topic欄は"iot-2/evt/status/fmt/json"(なんでもいいけどIoT FoundationのQuickstartでも動かせることができるように)、
Message欄は(IoT Foundation推奨フォーマットJSON形式の)
{
"d":{
"myName":"Jenkins Test"
"result":$BUILD_RESULT,
"url":$PROJECT_URL,
"culprits":$CULPRITS
}
}

とした。
MQTTブローカに最後のメッセージを1件のこして新たに追加されたSubscriberに対して最初にそのメッセージを送りたい場合はRetain Message欄をチェックするらしい。お試しでは使わないので何もしなかった。

で、ジョブを実行するとmosquitto_sub側のターミナルにメッセージが表示され、動作していることがわかった。




CULPRITSは空か..何が入るかはもう少し使ってみないとわからないが、少なくとも成功かどうかやジョブ名はSubscriber側におくることはできるようだ。


これで、Arduino側でLチカとか使えばXFDできそう..


Docker上でpublicイメージansi/mosquittoを使ってMosquittoをあげてみる



Proxy環境内で動作するMQTTブローカが必要になったので
DockerHubを検索してみた。

残念ながらOfficialがなかったので
一番ダウンロードの多い"ansi/mosquitto"を試してみた。

publicイメージなので、以下試したい人はat your own riskでやってください。



サイトのREADME.mdは超シンプル。

sudo docker pull ansi/mosquitto で取得して
sudo docker run -p 1883:1883 --name mosquitto -d ansi/mosquittoで実行しろ

としか書かれていない。

実行後、sudo docker exec -it mosquitto /bin/sh して
シェル対話実行可能状態にする。

Mosquitoには、コマンドでpublish/subscribeできる
コマンドmosquitto_pub、mosquitto_subがあるので
Subscribeしたら標準出力させるように
mosquitto_subを使って動作確認してみる。

ldd /usr/local/bin/mosquitto_subすると、
/usr/local/libへのパスがないことがわかったので、
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib して
SOライブラリのパスを増やして
mosquitto_sub -t <Subscribeしたいトピック> で実行して
別のマシンでpublishしたらつながった。
#Publisher側プログラムがない人はmosquitto_pubを代わりに別ターミナルで動かせばいい

これで、
いちいちローカルにインストールしないでも
Mosquittoが使えるようになった。






ニワカIoT屋の人にもDocker環境は便利だ;-p

2015年11月26日木曜日

xrdp入れてリモートデスクトップ接続しようとしたら「VNC error - only supporting 8, 15, 16 and 24 bpp rdp connections」と出てつながらない


CentOS7 にKDEデスクトップ環境を入れて、xrdpをインストールし、クライアントPC(Windows7)からリモートデスクトップ接続しようとしたら、以下のメッセージが最後に出てきて接続できない..

VNC error - only supporting 8, 15, 16 and 24 bpp rdp connections


で/etc/xrdp/xrdp.iniをしらべてみたら..

max_bpp=32

という行を見つけた。

で、この値を24に変更したら動くようになった。

なんで動くようになったか、気になったのでしらべてみたら、以下のブログ記事を見つけた。

http://d.hatena.ne.jp/teandt/20151101

たしかに元のモニタのcolor設定は「TrueColor32bit」になっていて、これをそのままリモートデスクトップで..というわけにはいかないようだ。

..たぶん..

2015年10月6日火曜日

DockerHub上の公式イメージのみを使ってRedmineコンテナを起動する




CentOS上にRedmineサーバ(sameersbn/redmine)をDockerコンテナとして立ち上げる

を書いた時点では、実はなかったのだが..

しばらくみないうちにRedmineの公式イメージがDocker Hub上に公開されていた。

ので、Redmine/Postgres両方ともofficialのついた公式イメージだけ使ってRedmineサーバを起動するdocker-compose.ymlを書いてみた。

red_pgsql:
  image: postgres:9.4.4
  environment:
    - POSTGRES_USER=redmine
    - POSTGRES_PASSWORD=secret
    - LANG=ja_JP.utf8
red:
  image: redmine:3.0.5
  links:
    - red_pgsql:postgres
  volumes:
    - /redmine_files:/usr/src/redmine/files
  ports:
    - "8083:3000"


docker-compose up -d すれば立ち上がったのだけど..
Redmineのバージョンがまだ3.0.5か...
OfficialイメージのくせにRedmine最新版に対応しきれていない..

やはり前に使った sameersbn/redmine のほうが最新版だし、memcached連携なんかもできるようになっいて高負荷でも使えそうなコンテナ構成がとれそうだ..

もしかしたら隠しENVIRONMENTなんかもあるかもしれないけど..

使いやすさ的にはofficial、玄人向けはsammersbn/redmineってところかな..

Google Colab相当の環境をローカルPC上のDocker Composeで実現する

 Docker Composeの有料版に、お金を払いたくない ^H^Hが使えない ため古いゲーミングPC(GeForce3080)にDocker Composeを入れてその上のコンテナでGoogle Colab相当のノート操作ができないかためしてみた: コンテナイメージとして a...