Redmine Advent Calendar 2019のQiitaで書きました。追っかけでもう一つ。
Travis-CIで行っていたRedmineプラグインのCIを、GitHub Actionsに変更したものです。
GitHub Actionsをやってみようというのが動機づけですが、結果的に実行も早かったのでよかったです。
Qiitaで記事を投稿するのも初だったのですが、ここと棲み分けをどうしたものか・・・ととりあえずリンクしてみました。
2020年1月18日土曜日
2018年12月9日日曜日
ユーザー登録時に姓名で自動的にグループを割り当てる(Redmine Auto Assign Group Plugin)
Redmine Advent Calendar 2018の9日目に書こうと思っていたやつです。
Redmine Auto Assign Group Pluginは、ユーザー登録時、自動的にグループを割り当てるプラグインです。
1年ぐらい前に、ここに書いたような感じでRedmine.orgのフォーラムをきっかけに作ったものです。
Redmine 4.0.0に向けて直した勢いで、姓名でも割り当てできるようにしました。
メールアドレスと同じで、正規表現で設定を行います。
他の条件とのAND条件で一致した場合にグループを割り当てます。
画面はこんな感じ。
前回リリース時点から、姓名に部署などを入れて運用するケースがあるため、メール以外もできるといいという話は上がっていました。
ただ、自分自身がこのプラグインどころか、グループ自体を使っていないので、なかなか手がつきませんでした。自分で使うの大事ですね。
やるか!と勢いをつけた当初は、そろそろRedmine 4.0.0がでるんじゃね!?
と界隈が盛り上がっていた頃で、リリースに合わせてプラグインもリリースするなら、一緒にやるか、と思いたちました。
本家のリリースは、やっぱり気分が上がりますよね!
月日は流れて、、、、
リリース楽しみにして年末を過ごしたいと思いますw
#書いてる時点でリリースしてないですけどね。。。
と書いてアドベントカレンダー用にあっためて置いたら、12/9にRedmine 4.0.0がリリースされました!!!!!
1日早くリリースしてしまいましたが、リリースされた状態のRedmine 4.0.0でも無事に動いています。
#アドベントカレンダーの方は別のに変えてしまった。。。
Redmine Auto Assign Group Pluginは、ユーザー登録時、自動的にグループを割り当てるプラグインです。
1年ぐらい前に、ここに書いたような感じでRedmine.orgのフォーラムをきっかけに作ったものです。
Redmine 4.0.0に向けて直した勢いで、姓名でも割り当てできるようにしました。
メールアドレスと同じで、正規表現で設定を行います。
他の条件とのAND条件で一致した場合にグループを割り当てます。
画面はこんな感じ。
前回リリース時点から、姓名に部署などを入れて運用するケースがあるため、メール以外もできるといいという話は上がっていました。
ただ、自分自身がこのプラグインどころか、グループ自体を使っていないので、なかなか手がつきませんでした。自分で使うの大事ですね。
やるか!と勢いをつけた当初は、そろそろRedmine 4.0.0がでるんじゃね!?
と界隈が盛り上がっていた頃で、リリースに合わせてプラグインもリリースするなら、一緒にやるか、と思いたちました。
本家のリリースは、やっぱり気分が上がりますよね!
月日は流れて、、、、
- 4.0.0のStable branchのできたし!
- Advent Calendarも書かないとだし。。。
リリース楽しみにして年末を過ごしたいと思いますw
#書いてる時点でリリースしてないですけどね。。。
と書いてアドベントカレンダー用にあっためて置いたら、12/9にRedmine 4.0.0がリリースされました!!!!!
1日早くリリースしてしまいましたが、リリースされた状態のRedmine 4.0.0でも無事に動いています。
#アドベントカレンダーの方は別のに変えてしまった。。。
祝 Redmine 4.0.0リリース!
Redmine Advent Calendar 2018の9日目です!
ついに今日、Redmine 4.0.0がリリースされました!
JPLはじめ、コミッタの皆様、コミュニティの皆様、ありがとうございました!
で、プラグインのことを書こうかと思いましたが、急遽変更でRedmine.orgのニュースに投稿された、JPLのリリース通知を翻訳したいと思います。
ざっくりな感じですので、誤訳などあればご指摘を。。。
----------------
昨年、Redmineにコントリビュートしてくれた多くの方に感謝します。Redmine 4.0.0のリリースを報告できて嬉しく思います。Redmine 4.0.0では、200を超える変更が行われました。
https://guides.rubyonrails.org/v5.2/active_job_basics.html#job-execution
Redmine 4.0.0は、先日リリースされた最新のRails 5.2.2を使用しています。
Redmine 3.4.7と3.3.9は、3.4.x、3.3.xのユーザー向けメンテナンスリリースです。詳細はチェンジログを参照してください。それぞれ、2つのRailsの脆弱性が修正されたRails 4.2.11への更新も含んでいます。それらの脆弱性はRedmine3.xには影響しないですが、可能であれば更新すべきです。
----------------
ついでに、拙作&メンテのプラグインの4.0.0対応状況は以下の通りです。
ついに今日、Redmine 4.0.0がリリースされました!
JPLはじめ、コミッタの皆様、コミュニティの皆様、ありがとうございました!
で、プラグインのことを書こうかと思いましたが、急遽変更でRedmine.orgのニュースに投稿された、JPLのリリース通知を翻訳したいと思います。
ざっくりな感じですので、誤訳などあればご指摘を。。。
----------------
Redmine 4.0.0, 3.4.7, 3.3.9 リリース
昨年、Redmineにコントリビュートしてくれた多くの方に感謝します。Redmine 4.0.0のリリースを報告できて嬉しく思います。Redmine 4.0.0では、200を超える変更が行われました。- メール通知での大きな変更: これまで1つのメールですべてのユーザーへ通知していましたが、それぞれのユーザー宛てになりました。
- テキストの書式に関する多くの改善
- CoderayからRougeへの変更により、コードハイライトで多くの言語をサポート
https://guides.rubyonrails.org/v5.2/active_job_basics.html#job-execution
Redmine 4.0.0は、先日リリースされた最新のRails 5.2.2を使用しています。
Redmine 3.4.7と3.3.9は、3.4.x、3.3.xのユーザー向けメンテナンスリリースです。詳細はチェンジログを参照してください。それぞれ、2つのRailsの脆弱性が修正されたRails 4.2.11への更新も含んでいます。それらの脆弱性はRedmine3.xには影響しないですが、可能であれば更新すべきです。
----------------
ついでに、拙作&メンテのプラグインの4.0.0対応状況は以下の通りです。
- Redmine XLSX format issue exporter
Githubのmasterは4.0.0で動作しますが、4.0.0の最後の最後で直ったCSVエクスポートのバグと同じものがあるため対応中。。。 - Redmine Auto Assign Group Plugin
v0.1.1で対応済み - Redmine XLS Export plugin
v0.2.1.t11で対応済み
2018年10月17日水曜日
Redmineのリポジトリから特定ソースの修正をGoogle Apps Scriptでメールする
Redmineのプラグインを作成していると、関連する本体側の修正に影響を受けることがあります。
また、私の作っているRedmine XLSX format issue exporterは、RedmineのCSVエクスポート機能と同等を目指しているので、変更に追随するようにしています。
Redmine本体へのコミットは、MastodonやDiscordのBOTで確認できますが、流してみる感じになるので見逃してしまいがちです。
CIで失敗する場合はいいのですが、スルーしてなんか動きがおかしくなったり、本体側のバグ修正をプラグイン側にも反映すべき場合があったりが続いたので、対策を考えて見ました、の結果です。
今回はGoogle Apps Scriptを使って見ました。Google Apps Scriptを使うと、cron的なトリガーでスクリプトを動かすことができます。
設定画面はこんな感じ。

作成したスクリプトは、redmine.orgのリポジトリページへアクセスして、今日のコミットがあればメールするというものです。
以下のような感じ。targetsにURLを追加していけば、複数のソースをチェックできます。
これでちょっとは見逃しが少なくなるといいんですが。。。
また、私の作っているRedmine XLSX format issue exporterは、RedmineのCSVエクスポート機能と同等を目指しているので、変更に追随するようにしています。
Redmine本体へのコミットは、MastodonやDiscordのBOTで確認できますが、流してみる感じになるので見逃してしまいがちです。
CIで失敗する場合はいいのですが、スルーしてなんか動きがおかしくなったり、本体側のバグ修正をプラグイン側にも反映すべき場合があったりが続いたので、対策を考えて見ました、の結果です。
今回はGoogle Apps Scriptを使って見ました。Google Apps Scriptを使うと、cron的なトリガーでスクリプトを動かすことができます。
設定画面はこんな感じ。

作成したスクリプトは、redmine.orgのリポジトリページへアクセスして、今日のコミットがあればメールするというものです。
以下のような感じ。targetsにURLを追加していけば、複数のソースをチェックできます。
これでちょっとは見逃しが少なくなるといいんですが。。。
2018年7月22日日曜日
Redmineのチケットに表示されるSVNのコミット情報に対象ブランチを表示する
Redmineのチケットとリポジトリを関連付けすると、そのチケットに該当のコミットが表示されます。
Git Revision Branches
名前からGit専用と見せかけて、実はMercurialにも対応していました。
でも、私が欲しいのはSubversion!!!!!
というわけで、以下のプルリクエストを作成しました。
Subversion support.
これを入れるとSubversionでも以下のように表示されます。
Redmineはプロジェクトに複数のリポジトリが設定できるため、そのリポジトリ名と後ろにブランチが表示されます。
認識できるリポジトリは、Subversionの標準的な構成(trunk, branches, tags)を想定しています。
ただ、Redmine本家のリポジトリからして、sandboxというのがあるので、さすがにRedmineのプラグインだしなと思って、それも認識できるようにしました。
trunk以外はその1階層下まで表示する仕組みにしています。
また、一つのリポジトリに複数のプロジェクトを突っ込んでいるような構成も見かけます。
各プロジェクトの中に、さらにtrunkやbranchesなどがある、例えば、
http://example.com/svn/projectA
/trunk
/branches
/tags
http://example.com/svn/projectX
/trunk
/branches
/tags
みたいな感じのとき、Redmineのプロジェクト、もしくはリポジトリの設定が分かれていて、リポジトリの設定には、
http://example.com/svn/projectX
と指定すると思われます。
こういった場合にprojectX部分は邪魔なので、それを省く設定を入れました。
複数リポジトリを設定する場合を想定して、カンマ区切りで複数指定できるようにしました。

ここには、どのブランチへのコミットなのかの情報がありません。
これを解決しようと以下のプラグインが存在します。Git Revision Branches
名前からGit専用と見せかけて、実はMercurialにも対応していました。
でも、私が欲しいのはSubversion!!!!!
というわけで、以下のプルリクエストを作成しました。
Subversion support.
これを入れるとSubversionでも以下のように表示されます。
Redmineはプロジェクトに複数のリポジトリが設定できるため、そのリポジトリ名と後ろにブランチが表示されます。

ただ、Redmine本家のリポジトリからして、sandboxというのがあるので、さすがにRedmineのプラグインだしなと思って、それも認識できるようにしました。
trunk以外はその1階層下まで表示する仕組みにしています。
また、一つのリポジトリに複数のプロジェクトを突っ込んでいるような構成も見かけます。
各プロジェクトの中に、さらにtrunkやbranchesなどがある、例えば、
http://example.com/svn/projectA
/trunk
/branches
/tags
http://example.com/svn/projectX
/trunk
/branches
/tags
みたいな感じのとき、Redmineのプロジェクト、もしくはリポジトリの設定が分かれていて、リポジトリの設定には、
http://example.com/svn/projectX
と指定すると思われます。
こういった場合にprojectX部分は邪魔なので、それを省く設定を入れました。
複数リポジトリを設定する場合を想定して、カンマ区切りで複数指定できるようにしました。
とりあえずこれで自分としては用が足りるとこまでいったかなという感じ。
2018年4月22日日曜日
【テスト設計】VSTePのファーストステップ 〜 新潟出張版 〜 に参加してきました
JaSST'18 Niigataの翌日に行われた、
【テスト設計】VSTePのファーストステップ 〜 新潟出張版 〜
に参加してきました。
JaSST'17 Tokyo のセッション「VSTePのファーストステップ 〜 JaSST'16東北出張おかわり会 〜」にて講演された、 JaSST東北実行委員のお二方を講師に迎えて行われました。
お二方、主催すわにいの@kasacchifulさん、お疲れ様でした&ありがとうございました!
内容はワークが中心で、ワークに当たって必要なVSTePのことを、はじめに座学でというものでした。座学は大きく、テスト観点図とテストコンテナについてでした。
具体的な図などは、connpassに記載のある参考してもらえればと思います。
VSTePを用いると、チームで納得したテスト観点図、テストコンテナができるので、振り返りを通した改善が行いやすくなるとの話でした。
実際のワークを通して、顕在化したバグがどこで漏れていたのか、というあたりが明確になりそうだということ、それがチームの中での共通のものさしで語れそうだということを感じました。
普段は一人でマインドマップで観点を出していくことが多いため、まずはワークでやったようなことを取りいれながら、徐々に周りを巻き込んで行けたらなあ、とか思いました。
【テスト設計】VSTePのファーストステップ 〜 新潟出張版 〜
に参加してきました。
JaSST'17 Tokyo のセッション「VSTePのファーストステップ 〜 JaSST'16東北出張おかわり会 〜」にて講演された、 JaSST東北実行委員のお二方を講師に迎えて行われました。
お二方、主催すわにいの@kasacchifulさん、お疲れ様でした&ありがとうございました!
内容はワークが中心で、ワークに当たって必要なVSTePのことを、はじめに座学でというものでした。座学は大きく、テスト観点図とテストコンテナについてでした。
具体的な図などは、connpassに記載のある参考してもらえればと思います。
テスト観点図
- テスト観点は「テストの意図」。
- チームで納得のいく観点、観点のまとめを行う。
- チームで話し合う中での「違和感」を大事にする。
あのとき、なんかひっかかってたんだよな〜、というところでバグが出て後悔しないようにする。 - 仕様書に書かれていることがすべてではない。
- チームの経験なども含めて観点を出していく。
- トップダウン、ボトムアップ、ズームイン、ズームアウトを繰り返し考えてみる。
- 図にしたら、左右、上下の粒度を見ていく。
粒度があっていない箇所から抜け漏れが見えてくることが多い。
テストコンテナ
- テストを実施することを考えた、観点のグルーピングを行う。
- 左から右へ、時系列にコンテナを並べる。
縦方向は並列に行えるもの。
テストの前後関係、実施順序、同時にできることなどが見える。 - チームとしてしっくりくる、納得できる括りにすることが大事。
ワーク
- +Lhacaの解凍機能について、テスト観点図、テストコンテナを作成するワーク。
- 今回は6人のチーム。
- それぞれで仕様書をざっとみる。
- 仕様書は見ないようにして観点をみんなで付箋に書き出していった。
仕様書を見ないことで、仕様書に書いていないことが出やすくなる。 - 手を止めずにどんどん進めていくのが重要。
- 出した付箋をツリー構造に整理していく。
整理する中で新しい観点がでてきたり、構造を変えるために加えたりと、いろいろ話しながら進めました。 - 観点に出ていくる「言葉」を共通の理解で捉えているか、を確認するのも重要。
チームで同じものを見ていることが重要。バックボーンの違いから、ここがなかなか合わなかった感じがしましたが、擦り合わせて行けたかな。
知っている人たちのチームだからこその思い込みもありそうだな、と思いました。 - テスト観点図ができたら、テストコンテナを作成していく。
- これをやってからでないと、これができない。
これをしてからこれをすべき、といったところからまとめていった。 - 実際にテストを行うことをイメージしながら進めると、順序や並列でできるかなどが考えやすいと感じた。
- 機能が追加された場合などの影響範囲なども、関連する観点から属しているコンテナを抽出することで絞り込みやすい。
実際のワークを通して、顕在化したバグがどこで漏れていたのか、というあたりが明確になりそうだということ、それがチームの中での共通のものさしで語れそうだということを感じました。
普段は一人でマインドマップで観点を出していくことが多いため、まずはワークでやったようなことを取りいれながら、徐々に周りを巻き込んで行けたらなあ、とか思いました。
2017年12月1日金曜日
[Redmine Advent Calendar 2017 1日目] shields.ioでredmine.orgのプラグインレイティングのバッヂを表示する
Redmine Advent Calendar 2017の1日目です!
Redmineのオフィシャルサイトであるredmine.orgには、開発されているプラグインを確認できるPlugins Directoryがあります。

しかし、ソースコードは別のリポジトリに登録してある状態になります。
例えばGitHubにソースを登録しておいた場合、READMEやWiki、Issuesなど、そこだけで足りてしまうのが実際のところです。
検索してGitHubに飛んだら、Plugins Directoryを見ることがない場合も多いと思います。
そこで何か誘導するものがあれば、Plugins Directoryで他のプラグインに巡り会う機械にもつながるな、ということで、Plugins Directoryのレイティングをバッヂとして表示する仕組みを考えました。
バッヂからPlugins Directoryへリンクしてレイティングしてもらう、というモチベーションでプラグイン開発者の方にも入れてもらいやすいかなと考えています。
shields.ioというサービスが、いろいろなサービスのバッヂを提供しています。
これにredmine.orgのプラグインレイティングが載れば、プラグイン開発者の方がみんなで使えるな、ということでプルリクエストを出したところ、入れてもらえました。
以下はRedmine XLSX format issue exporterの GitHubにバッヂを入れた例です。
星がでるパターンですが、数字で出すパターンもあります。
READMEには、Markdownで以下のように記載してPlugins Directoryへリンクしています。
2日目はy503Unavailableさんです!
Redmineのオフィシャルサイトであるredmine.orgには、開発されているプラグインを確認できるPlugins Directoryがあります。

Plugins Directoryにプラグインを登録しておくと、Redmine上から最新バージョンのチェックも行えます(管理画面のCheck for updatesから行えます)。

しかし、ソースコードは別のリポジトリに登録してある状態になります。
例えばGitHubにソースを登録しておいた場合、READMEやWiki、Issuesなど、そこだけで足りてしまうのが実際のところです。
検索してGitHubに飛んだら、Plugins Directoryを見ることがない場合も多いと思います。
そこで何か誘導するものがあれば、Plugins Directoryで他のプラグインに巡り会う機械にもつながるな、ということで、Plugins Directoryのレイティングをバッヂとして表示する仕組みを考えました。
バッヂからPlugins Directoryへリンクしてレイティングしてもらう、というモチベーションでプラグイン開発者の方にも入れてもらいやすいかなと考えています。
shields.ioというサービスが、いろいろなサービスのバッヂを提供しています。
これにredmine.orgのプラグインレイティングが載れば、プラグイン開発者の方がみんなで使えるな、ということでプルリクエストを出したところ、入れてもらえました。
以下はRedmine XLSX format issue exporterの GitHubにバッヂを入れた例です。
星がでるパターンですが、数字で出すパターンもあります。

READMEには、Markdownで以下のように記載してPlugins Directoryへリンクしています。
[](https://www.redmine.org/plugins/redmine_xlsx_format_issue_exporter)SVGのファイル名部分は、プラグインのPlugins DirectoryでのURL末端になります。
2日目はy503Unavailableさんです!
2017年10月28日土曜日
Redmine Auto Assign Group Pluginを作りました!
Redmine Auto Assign Group Pluginを作りました!
@akipiiさんが既にブログで取り上げてくださっています。ありがたや!
で、ブログ書いてないと気づいた。。。
Plugin to automatically assign new users to groups?
ユーザーの登録時に自動的にグループを設定したいという要求は、結構昔からあったようです。
上の投稿から参照されているスレッドは2012/04に開始されています。
パッチやプラグインの書き込みがありますが、条件によって別のグループを設定したい、というのが今回の投稿でした。
ユースケースとして挙げられていた、グループごとでアクセス権限を行なうような運用は、規模が大きかったり複数の組織が絡むようなときに、手間が大幅に削減できそうな感じがしました。
他にも思いつかないようなシーンが隠れてそうだなあとも思い、なんか既にありそうな感じ・・・と思ったんでググってもないから、面白そうだし作るか!ということにしました。
グループの設定画面から、グループごとに正規表現でルールを設定できます。
ユーザーが追加された際に、ルールに合致するとそのグループに追加されます。
あとは、グループ横断でのルール一覧もあるといいかな、と思ったり、いらないんじゃないかな、と思ったり。
作ったばかりなので、フィードバックを頂いたら考えていこうかなあと思います。
@akipiiさんが既にブログで取り上げてくださっています。ありがたや!
で、ブログ書いてないと気づいた。。。
きっかけ
redmine.orgのフォーラムに以下の投稿がありました。Plugin to automatically assign new users to groups?
ユーザーの登録時に自動的にグループを設定したいという要求は、結構昔からあったようです。
上の投稿から参照されているスレッドは2012/04に開始されています。
パッチやプラグインの書き込みがありますが、条件によって別のグループを設定したい、というのが今回の投稿でした。
ユースケースとして挙げられていた、グループごとでアクセス権限を行なうような運用は、規模が大きかったり複数の組織が絡むようなときに、手間が大幅に削減できそうな感じがしました。
他にも思いつかないようなシーンが隠れてそうだなあとも思い、なんか既にありそうな感じ・・・と思ったんでググってもないから、面白そうだし作るか!ということにしました。
使い方
GitHubにインストール方法と簡単な使い方を書きました。グループの設定画面から、グループごとに正規表現でルールを設定できます。
ユーザーが追加された際に、ルールに合致するとそのグループに追加されます。
今後の方向性
とりあえず、正規表現のチェック機能が必要と思っています。あとは、グループ横断でのルール一覧もあるといいかな、と思ったり、いらないんじゃないかな、と思ったり。
作ったばかりなので、フィードバックを頂いたら考えていこうかなあと思います。
2017年9月12日火曜日
RedmineプラグインでMroongaを使うときのテスト
Full text search pluginとRedmine XLSX format issue exporterが競合した話。
パッチのロード順でチケットが表示(issues#show)できなった。
パッチを提示してもらい、パッチを適用する位置を変更して対処した。
https://github.com/two-pack/redmine_xlsx_format_issue_exporter/issues/50
ここからが本題。
いつも開発環境はsqlite3でやっているが、Full text search pluginがMroongaを使用するので、Unofficial Redmine CookingのRedmine AnsiblePlaybook Unofficial Cooking Edition(闇鍋版)を使用した。
すると、rake redmine:plugins:testでRedmine XLSX format issue exporterのテストを実行すると以下のようなエラーが出た。
調べて見るとdb/schema.rbにテーブル作成時のオプション指定が入らないことが原因。
プラグインでは以下のようなmigrateが書かれている。
rakeでテストを実行するの際に、db:test:prepareで一度テーブルが削除されてから、schema.rbを元に作成し直す。
その際に、schema.rbにはENGINEがMroongaではなくInnoDBになってしまうので、FULLTEXTのインデックスが作れない。
結局、db/tasks/redmine.rakeを書き換えた上で、db:drop -> db:create -> db:migrate -> redmine:plugins:test の順で実行した。
config/application.rbでconfig.active_record.schema_format = :sqlとするとSQLに書きだされるため大丈夫というのも検索しているとあったが、db/structure.sqlにplugin分が書き込まれてないため、rake taskではテーブルがないとエラーになってだめだった。
パッチのロード順でチケットが表示(issues#show)できなった。
パッチを提示してもらい、パッチを適用する位置を変更して対処した。
https://github.com/two-pack/redmine_xlsx_format_issue_exporter/issues/50
ここからが本題。
いつも開発環境はsqlite3でやっているが、Full text search pluginがMroongaを使用するので、Unofficial Redmine CookingのRedmine AnsiblePlaybook Unofficial Cooking Edition(闇鍋版)を使用した。
すると、rake redmine:plugins:testでRedmine XLSX format issue exporterのテストを実行すると以下のようなエラーが出た。
Mysql2::Error: The used table type doesn't support FULLTEXT indexes: CREATE fulltext INDEX `index_issue_contents_on_contents`
調べて見るとdb/schema.rbにテーブル作成時のオプション指定が入らないことが原因。
プラグインでは以下のようなmigrateが書かれている。
create_table :issue_contents, options: "ENGINE=Mroonga" do |t|
t.integer :project_id
t.integer :issue_id, unique: true, null: false
t.string :subject
t.text :contents, limit: 16.megabytes
t.integer :status_id
t.boolean :is_private
end
対してschema.rbは以下のような感じ。create_table "issue_contents", force: :cascade do |t|
t.integer "project_id", limit: 4
t.integer "issue_id", limit: 4, null: false
t.string "subject", limit: 255
t.text "contents", limit: 4294967295
t.integer "status_id", limit: 4
t.boolean "is_private"
end
add_index "issue_contents", ["contents"], name: "index_issue_contents_on_contee
nts", type: :fulltext
rakeでテストを実行するの際に、db:test:prepareで一度テーブルが削除されてから、schema.rbを元に作成し直す。
その際に、schema.rbにはENGINEがMroongaではなくInnoDBになってしまうので、FULLTEXTのインデックスが作れない。
結局、db/tasks/redmine.rakeを書き換えた上で、db:drop -> db:create -> db:migrate -> redmine:plugins:test の順で実行した。
config/application.rbでconfig.active_record.schema_format = :sqlとするとSQLに書きだされるため大丈夫というのも検索しているとあったが、db/structure.sqlにplugin分が書き込まれてないため、rake taskではテーブルがないとエラーになってだめだった。
2017年6月18日日曜日
長岡IT開発者勉強会(NDS) 第52回勉強会に参加してきました #nds52
長岡IT開発者勉強会(NDS) 第52回勉強会に参加してきました。
http://nagaoka.techtalk.jp/no52
Togetterでまとめてくださっています。
https://togetter.com/li/1120966
今回のテーマは「初心者むけ」でした。
初心者とは・・・という哲学的な内容で非常に勉強になりましたw
メモを見ながら雑感です。へえと思ってばかりで何年やっても初心者だな、俺。。。
http://nagaoka.techtalk.jp/no52
Togetterでまとめてくださっています。
https://togetter.com/li/1120966
今回のテーマは「初心者むけ」でした。
初心者とは・・・という哲学的な内容で非常に勉強になりましたw
メモを見ながら雑感です。へえと思ってばかりで何年やっても初心者だな、俺。。。
「はじめてのC#プログラミング」 ailightさん
- 歴史的なあれ。N88BASIC、Quick C、Etc.... とても懐かしかった。
- caseのbreak漏れでコンパイルエラーとか、へえと思った。
機械、規約がうまく問題を解決してくれるのはうれしい。 - 「分岐が複雑の始まりであることを理解する」、「ループは前処理と後処理がセットでループ」とか、その通りだなと思いつつ、普段から意識できているかというと怪しいと思った。。。
「なんてかんたんなJavaEE」 civicさん
- Full Profile / Web Profile / Micro Profile
薄いという選択肢があるのはいい。
「文字コードとプログラミング(仮)」 gonchan93さん
- 「UNICODEを使え」、もうこれだね!w
- JavaのStringがメモリ節約の方向にという話は、へえと思った。
この辺の話。http://openjdk.java.net/jeps/254
「Netcatを使おう」 hayajoさん
- telnetみたいなのか、と思ったらそれどころではなかった。すごいコマンドがあるもんだ!
「怖くないし役に立つ設計原則の話」 neko_gata_sさん
- DRY原則おじさん。いるわー、おれだわー、こぴぺするなーいってるわーorz
- 「設計原則同士は関連している」というところに集約されていると思った。おまけのデザパタも含めて。話を聞くとうんうん、と思うけど、こうやって筋立てて話をできることや反例の出せることは、本当にすごいと思う。
- 硬い、柔らかい、のあたりが、理屈はわかっても初心者には判断が難しいところだと思う。
- DRYにしないと!と言って見たり、こういう時は重複してもさ、とかいうことは確かにあるが、腑に落ちるように説明するのが難しいところ。
「はじめてのソフトウェアテスト(仮)」 kasacchifulさん
- 工程や「バグ」など用語を揃えておくのは本当に大事。
- 「テストが上手くなると設計が上手くなる」は、実感としてそう思う。
違う視点、観点が入るというところなんだろうけど、そもそも作るべきもの、品質を捉え直すタイミング、意識ができるからかなと思う。
「今日から使えるCSSパターン」 Watanabeさん
- Adobe Museで生成されるCSSは笑ったw
- OOCSS、BEM(Block Element Modifier)は初めて聞いた。
- 全体を貫く「設計方針」が必要という話も含めて、実践的なアプローチをされていて、すごいと思った。
「はじめての修羅場」 hiro_ishibashiさん
- すごく良い話だった。
- 発表にあったようなことを意識もしないようなPMも山ほどいる。メンバーは辛みしかない。
- なにもマジな修羅場でなくても、修羅場予備軍でのカイゼンポイントばかりだと思った。
- 「犯人にまかせた、放置したマネジメント層の問題」。これ。本当にこれ。
「フリーランスの始め方(初心者向け)」 nemuzukaさん
- 税金とか普段は意識しないから、へえと思った。
「「新人研修の作り方」のその後」 masaru_b_clさん
- どんどん改善されていくことがすばらしい。
- 継続していることもすばらしい。
- 外部に公開していることも本当にすばらしい!
「インターネットの契約から開通まで」 kam1nchuさん
- ネット引くのって、すげーことなんだなと思った。
こんなことかんがえたことなかったw - ひかり電話も使ってあげて欲しいと思ったw
2017年5月25日木曜日
RedmineのテストFixturesを手動テスト用に投入する
RedmineのテストFixturesを手動テスト用に投入するのに以下のようなスクリプトを作成しました。
https://github.com/jbbarth/redmine-scripts
を参考にしました。
上記を実行してから、
https://github.com/jbbarth/redmine-scripts
を参考にしました。
#!/bin/bash export RAILS_ENV=test test -e test/.fixtures.core || cp -a test/fixtures test/.fixtures.core rm -rf test/fixtures mkdir test/fixtures cp -i test/.fixtures.core/*yml test/fixtures/ cp -i plugins/*/test/fixtures/*yml test/fixtures/ cp -i plugins/*/spec/fixtures/*yml test/fixtures/ bundle exec rake db:drop db:create db:migrate redmine:plugins db:schema:dump db:fixtures:load cp -f db/test.sqlite3 db/test.template.sqlite3
上記を実行してから、
$ RAILS_ENV=test ruby bin/rails serverで起動すると、Fixturesに含まれているeCookbookなどのプロジェクトが使えます。
2017年5月21日日曜日
Travis-CIで行っているRedmineプラグイン用テストをローカルで行う
Redmine XLSX format issue exporterのCIはTravis-CIを使わせてもらっています。
Travis Integration for Redmine Pluginsを使うとRubyとRedmineのバージョンの組み合わせなども結構簡単に環境を作れます。
ただGitHubへのPushがトリガーなのでローカルでもできると確認とかできていいかな、と思って、Travis-CI環境をローカルでというのをやってみました。
結論から言うと、Pushしちゃう方が早い、と言う感じでした。。。
最後の最後で手動で依存関係解決しCIコマンド実行してね、で終わってて詰まりました。
参考ページ
https://docs.docker.com/engine/reference/commandline/run/
http://docs.docker.jp/engine/reference/run.html
https://docs.docker.com/engine/reference/commandline/exec
2. Travis-CI CLIをインストールする
https://github.com/travis-ci/travis.rb
3. .travis.ymlからCI用のスクリプトを生成する
ここでは、Redmine XLSX issue exporterのリポジトリをクローンしています。
リポジトリのルートに.travis.ymlがあります。
4. スクリプトを修正する(その1)
Dockerの制約でスクリプト内で行っている/etc/hostsの変更ができなくなっています。
このため、無理やりですが参考ページを参考に、スクリプトを変更して対処します。
変更前
5. スクリプトを修正する(その2)
travis-buildのページに書いてありますが、.travis.ymlに書かれているenvやmatrixはスクリプト生成時に反映されません。このため、スクリプトでいくつかの修正が必要です。
赤字部分が該当箇所で.travis.ymlの定義に該当します。
6. スクリプトを実行する
Travis Integration for Redmine Pluginsを使うとRubyとRedmineのバージョンの組み合わせなども結構簡単に環境を作れます。
ただGitHubへのPushがトリガーなのでローカルでもできると確認とかできていいかな、と思って、Travis-CI環境をローカルでというのをやってみました。
結論から言うと、Pushしちゃう方が早い、と言う感じでした。。。
まずは公式
Troubleshooting Locally in a Docker Imageで、Dockerで提供されているイメージと.travis.ymlからCI用のシェルスクリプトを出力するtravis-buildのインストールについて書かれています。最後の最後で手動で依存関係解決しCIコマンド実行してね、で終わってて詰まりました。
実際にやった手順
環境
- macOS Sierra 10.12.4
- Docker version 17.03.1-ce, build c6d412e
手順
1. Dockerイメージを起動してログインする~ $ docker pull travisci/ci-garnet:packer-1478744932 packer-1478744932: Pulling from travisci/ci-garnet Digest: sha256:9380acbb65ed1ae6e5a0b545616f2f4a9f8d6855c264a45924dd52d3ff0589f5 Status: Image is up to date for travisci/ci-garnet:packer-1478744932 ~ $ docker run --name travis-redmine-ci --rm -dit travisci/ci-garnet:packer-1478744932 /sbin/init <snip> ~ $ docker exec -it travis-redmine-ci bash -l root@foo:/# su - travis travis@bar:~$
参考ページ
https://docs.docker.com/engine/reference/commandline/run/
http://docs.docker.jp/engine/reference/run.html
https://docs.docker.com/engine/reference/commandline/exec
2. Travis-CI CLIをインストールする
travis@bar:~$ gem install travis <snip> travis@bar:~$ git clone --depth=50 --branch=master https://github.com/travis-ci/travis-build.git <snip> travis@cc01d74d8710:~$ travis Shell completion not installed. Would you like to install it now? |y| <snip> travis@bar:~$ cd travis-build travis@bar:~$ ln -s `pwd` ~/.travis/travis-build travis@bar:~$ bundle install --gemfile ~/.travis/travis-build/Gemfile <snip> travis@bar:~$
参考ページ
https://docs.travis-ci.com/user/common-build-problems/#Troubleshooting-Locally-in-a-Docker-Imagehttps://github.com/travis-ci/travis.rb
3. .travis.ymlからCI用のスクリプトを生成する
ここでは、Redmine XLSX issue exporterのリポジトリをクローンしています。
リポジトリのルートに.travis.ymlがあります。
travis@bar:~$ cd ~/builds travis@bar:~$ git clone https://github.com/two-pack/redmine_xlsx_format_issue_exporter.git travis@bar:~$ cd redmine_xlsx_format_issue_exporter travis@bar:~$ travis compile 1.1 > ci.sh
4. スクリプトを修正する(その1)
Dockerの制約でスクリプト内で行っている/etc/hostsの変更ができなくなっています。
このため、無理やりですが参考ページを参考に、スクリプトを変更して対処します。
変更前
sudo sed -e 's/^\(127\.0\.0\.1.*\)$/\1 '`hostname`'/' -i'.bak' /etc/hosts test -f ~/.m2/settings.xml && sed -i.bak -e 's|https://nexus.codehaus.org/snapshots/|https://oss.sonatype.org/content/repositories/codehaus-snapshots/|g' ~/.m2/settings.xml sudo sed -e 's/^\([0-9a-f:]\+\) localhost/\1/' -i'.bak' /etc/hosts
変更後
cp /etc/hosts ./hosts.new sudo sed -e 's/^\(127\.0\.0\.1.*\)$/\1 '`hostname`'/' -i'.bak' ./hosts.new test -f ~/.m2/settings.xml && sed -i.bak -e 's|https://nexus.codehaus.org/snapshots/|https://oss.sonatype.org/content/repositories/codehaus-snapshots/|g' ~/.m2/settings.xml sudo sed -e 's/^\([0-9a-f:]\+\) localhost/\1/' -i'.bak' ./hosts.new cp -f ./hosts.new /etc/hosts
参考ページ
http://blog.jonathanargentiero.com/docker-sed-cannot-rename-etcsedl8ysxl-device-or-resource-busy/5. スクリプトを修正する(その2)
travis-buildのページに書いてありますが、.travis.ymlに書かれているenvやmatrixはスクリプト生成時に反映されません。このため、スクリプトでいくつかの修正が必要です。
赤字部分が該当箇所で.travis.ymlの定義に該当します。
- 使用するRubyバージョンを書き換え
travis_cmd rvm\ use\ 2.0.0\ --install\ --binary\ --fuzzy --assert --echo --timing - 使用するRedmineバージョンの書き換え
travis_cmd export\ REDMINE_VERSION\=2.5.2 --echo - 対象ブランチの指定
travis_cmd git\ clone\ --depth\=50\ --branch\=\'\'\ https://github.com/two-pack/redmine_xlsx_format_issue_exporter.git\ two-pack/redmine_xlsx_format_issue_exporter --assert --echo --retry --timing
6. スクリプトを実行する
travis@bar:~$ bash ci.sh
まとめ
.travis.ymlのmatrixやenvの設定を活かしたスクリプトをうまく生成できないため、手間がかかってしまいます。
Travis-CI上でのみ失敗するとかでなければ、大人しくブランチにプッシュしてクラウドで回してもらう方が良さそうです。
2017年5月1日月曜日
JaSST'17 Niigataの振り返り
2017/04/28(金)に、「JaSST'17 Niigata ソフトウェアテストシンポジウム 2017 新潟」行われました。
テーマは「ユーザビリティ / UX」。私は実行委員なのにテーマが決まってから本を読む、という有様でしたので、非常に勉強になりました。
そのうち資料の公開もあると思いますが、現時点での振り返りです。
「ユーザエクスペリエンスの要素とプロセス——UX/UCD概論」
でお話頂きました。
UXとは?なぜUXなのか?そしてUCDと、概論として非常に分かりやすい形でのお話でした。著書の「ユーザビリティエンジニアリング (第2版)」を読んでから臨みましたが、更に理解が深まった気がしました。
心にとまった幾つかピックアップ。
お茶やお菓子とともに講演者の方々や参加者の方々と語り、交流を深めるという会です。
新潟だけではなく各地から参加してくださ方もおられ、いい刺激になりました。
そして、樽本さんからは「ユーザビリティエンジニアリング (第2版)」にサインを頂きました!
このあとも、JaSSTは東北、関西、北海道と続いていきますので、足を運んでみてはいかがでしょうか?
テーマは「ユーザビリティ / UX」。私は実行委員なのにテーマが決まってから本を読む、という有様でしたので、非常に勉強になりました。
そのうち資料の公開もあると思いますが、現時点での振り返りです。
基調講演
基調講演は、利用品質ラボの樽本 徹也さんから「ユーザエクスペリエンスの要素とプロセス——UX/UCD概論」
でお話頂きました。
UXとは?なぜUXなのか?そしてUCDと、概論として非常に分かりやすい形でのお話でした。著書の「ユーザビリティエンジニアリング (第2版)」を読んでから臨みましたが、更に理解が深まった気がしました。
心にとまった幾つかピックアップ。
- 効果、効率、満足度
- Experienceが儲かる
- UXの要素 表層、骨格、構造、要件、戦略
(ジェス・ジェームス・ギャレットの「The Elements of User Experience」)
事例紹介
事例紹介として、日立ソリューションズの柳生 大介さんから、
「機能中心から人間中心へ ~日立ソリューションズの取り組み~」
でお話頂きました。
どんなきっかけでUXへの活動を始めたのかから、具体的な取り組みと非常に興味深かったです。
手法の紹介も具体的で実際のイメージがつかみやすかったのではないかと思います。
心にとまった幾つかピックアップ。
- 共通の物差しとしてのペルソナ
- ブレストでのアンチプロブレム
- ユーザーに伝わるのか、まずは言葉を見直す
情報交換会
JaSST Niigataでは毎回、本会後に情報交換会が行われています。お茶やお菓子とともに講演者の方々や参加者の方々と語り、交流を深めるという会です。
新潟だけではなく各地から参加してくださ方もおられ、いい刺激になりました。
そして、樽本さんからは「ユーザビリティエンジニアリング (第2版)」にサインを頂きました!
というわけで
ぼんやりな感じの振り返りになりましたが、UXを知る、というところからと考えていた私としては、得るものが多い場となりました。このあとも、JaSSTは東北、関西、北海道と続いていきますので、足を運んでみてはいかがでしょうか?
2015年1月27日火曜日
Windows 10 Technical PreviewをBuild 9926にアップデート
新しいビルドがでました。ISOはこちらから。
前のビルドからもアップデートできるようなのでやってみました。
まずはビルド番号の確認。Build 9841です。
Update and recoveryのPreview Buildsからアップデートします。
ポチッとするとダウンロード開始。
ダウンロード完了!
インストール中・・・・
完了して再起動の要求でOK。
再起動中・・・
再起動かかって設定中。
前のビルドからもアップデートできるようなのでやってみました。
まずはビルド番号の確認。Build 9841です。
Update and recoveryのPreview Buildsからアップデートします。
ポチッとするとダウンロード開始。
ダウンロード完了!
インストール中・・・・
完了して再起動の要求でOK。
再起動中・・・
再起動かかって設定中。
再起動かかって、あともうちょっと。
完了!ログインしようとしたらキーボードの配列がUS配列になってました。
アップデート前は日本語配列だったんだけど。。。
ログインしたらアプリのインストール中。もうちょい。。。
そして完了!Build 9926!
ぱっとみ、スタートメニューの感じが変わったのとタスクバーに検索ボックスがついてます。
2015年1月8日木曜日
YosemiteのApacheでユーザーディレクトリを見ると403になる
いろんなサイトを見て回ってやっと解消できたのでメモ。
やりたいことは、http://localhost/~username/index.htmlとかが見れることです。
http://localhost/はIt works!なのに403がでていました。
- OS X 10.10 YosemiteでApache(ウェブ共有/サイト)を使う方法
- YosemiteのApache設定
- OS X 10.10 / 10.9 Sites Folder Sharing Not Working
やりたいことは、http://localhost/~username/index.htmlとかが見れることです。
http://localhost/はIt works!なのに403がでていました。
- モジュールの有効化
/etc/apache2/httpd.confを編集して、コメントアウトされている以下のモジュール有効化する。
LoadModule authz_core_module libexec/apache2/mod_authz_core.so LoadModule authz_host_module libexec/apache2/mod_authz_host.so LoadModule userdir_module libexec/apache2/mod_userdir.so
- ユーザーディレクトリ用の設定ファイルを読み込む設定を有効化
/etc/apache2/httpd.confを編集して、コメントアウトされている以下を有効化する。
Include /private/etc/apache2/extra/httpd-userdir.conf
さらに、/etc/apache2/extra/httpd-userdir.confを編集してコメントアウトされている以下を有効化する。
Include /private/etc/apache2/users/*.conf
- ユーザーディレクトリの作成
ホームディレクトリにSitesディレクトリを作成します。ここにファイルを設置します。
mkdir ~/Sites
- ユーザごとの設定ファイルを作成
/etc/apache2/users/username.confを以下の内容で作成する。
<Directory> AllowOverride All Options Indexes MultiViews Options +FollowSymLinks Require all granted </Directory>
- Apacheを再起動
sudo apachectl restart
2014年8月7日木曜日
Arduino Ethernet Shieldを使ってみた
ArduinoのEhternetシールドを買ったので使ってみました。以下で安いものがあったので購入しましたが、ピンががつんと曲がった状態で届きました。動いたので良かったですが。。。
(Arduinoのための)用のイーサネットW5100シールド(マイクロSDカードをサポート)
Arduino本体と重ねるとこんな感じ。
Ethernet library
このライブラリを使って、Webサーバーから情報を取得してLEDをON/OFFすることにします。
本当は、Travis CIの結果をLEDで表示する、をしたかったのですが、調べてみるとArduinoの要領だとHTTPSでの通信は難しいとのことで断念。。。
スケッチはこちら。
ライブラリにサンプルとして着いているWebClientを参考にしています。
LEDのピンは7番を使っています。Ethernetシールドが4、10〜13のピンを使っているためです。
こんな感じになりました、、、といっても普通にLEDつけてるのと変わりません。
シールドを載せてあとはライブラリを使うだけなので、簡単にできますね。
(Arduinoのための)用のイーサネットW5100シールド(マイクロSDカードをサポート)
Arduino本体と重ねるとこんな感じ。
やってみたこと
Ethernetシールド用のライブラリが用意されています。Ethernet library
このライブラリを使って、Webサーバーから情報を取得してLEDをON/OFFすることにします。
本当は、Travis CIの結果をLEDで表示する、をしたかったのですが、調べてみるとArduinoの要領だとHTTPSでの通信は難しいとのことで断念。。。
実装
Webサーバー側には以下のようなCGIを置きました。ledの値を0にするとLEDが消えて、1にすると点くようにします。#!/usr/bin/ruby print "Content-Type: text/html\n" print "\n" print "led:1\n"
スケッチはこちら。
ライブラリにサンプルとして着いているWebClientを参考にしています。
LEDのピンは7番を使っています。Ethernetシールドが4、10〜13のピンを使っているためです。
こんな感じになりました、、、といっても普通にLEDつけてるのと変わりません。
シールドを載せてあとはライブラリを使うだけなので、簡単にできますね。
2014年7月31日木曜日
リリース:Redmine XLSX format issue exporter 0.1.0
Redmineのチケット一覧をXLSX形式で出力するプラグイン、
リンクを押すとCSVエクスポートと同じように、オプションで選択している項目を出力するか、全ての項目を出力するかを選択するダイアログがでます。また、チケットの説明をつけるかも選択できます。
あとはエクスポートボタンを押すダウンロードがはじまります。XLSXの中身は、CSVダウンロードと同等のものにある程度の書式設定(ヘッダの色、ヘッダの固定、折り返し、列の幅)がされています。
Plugins Directoryに登録したついでにRedmine XLS ExportのPlugins Directoryを見たら、すでにオフィシャルには3年以上更新されていません。リポジトリもなくZIPで公開されているのみという状態だったので、自分でZIPからGithubに遷してメンテしているんですよね。もう更新しないのかなあ。。。
Redmine XLSX format issue exporterを作りました。Plugins Directoryにも登録しました。
機能
Redmineにはチケット一覧の右下からCSVやPDFで出力する機能が標準であります。そのXLSX版です。プラグインをインストールすると、右下の赤丸部分のようにリンクが追加されます。リンクを押すとCSVエクスポートと同じように、オプションで選択している項目を出力するか、全ての項目を出力するかを選択するダイアログがでます。また、チケットの説明をつけるかも選択できます。
あとはエクスポートボタンを押すダウンロードがはじまります。XLSXの中身は、CSVダウンロードと同等のものにある程度の書式設定(ヘッダの色、ヘッダの固定、折り返し、列の幅)がされています。
Redmine XLS Exportとの違い
Excel形式でエクスポートするプラグインとしてRedmine XLS Exportもあります。こちらには、XLS形式でのチケット一覧の出力以外に、履歴や添付ファイルを出力する機能などもあります。Redmine XLSX format issue exporterでは、シンプルにRedmine標準のCSVエクスポートのXLSX版という位置づけにしたいと考えています。Plugins Directoryに登録したついでにRedmine XLS ExportのPlugins Directoryを見たら、すでにオフィシャルには3年以上更新されていません。リポジトリもなくZIPで公開されているのみという状態だったので、自分でZIPからGithubに遷してメンテしているんですよね。もう更新しないのかなあ。。。
2014年7月23日水曜日
RedmineプラグインのCI環境を作る
1年ぐらい前にNDSでRedmineプラグインのテスト書いてとLTしましたが、幾ばくかのテストを自分で書きました。
テストを書いたので次はCI環境を作りたいと思います。
Travis Integration for Redmine Plugins
Redmineプラグインのテストをするには、当たり前ですがRedmineが必要になります。なので、CIの環境にRedmineをインストールするところから始めないとなのですが、その辺をTravis CI向けにスクリプト化したものです。
これは便利そうということで、これを使っての環境構築を試してみました。
追記:上記のリポジトリでRedmineをダウンロードしてくるソースがedavis10のところになっていました。ここもミラーしているようですが、Redmineのフォーラムでgithubのリポジトリが示されていたので、フォークしてソースに書き換えました。
追記の追記:プルリクエストを出して取り込まれました。
.travis.ymlのrvmとREDMINE_VERSIONのマトリックスでビルドが実行されます。
非常に簡単にRedmineプラグインのCI環境を作ることができました。RedmineプラグインのCI環境を作るハードルを下げてくれますね。
テストを書いたので次はCI環境を作りたいと思います。
Travis Integration for Redmine Plugins
調べてみたところ、以下を見つけました。Travis Integration for Redmine Plugins
Redmineプラグインのテストをするには、当たり前ですがRedmineが必要になります。なので、CIの環境にRedmineをインストールするところから始めないとなのですが、その辺をTravis CI向けにスクリプト化したものです。
これは便利そうということで、これを使っての環境構築を試してみました。
追記:上記のリポジトリでRedmineをダウンロードしてくるソースがedavis10のところになっていました。ここもミラーしているようですが、Redmineのフォーラムでgithubのリポジトリが示されていたので、フォークしてソースに書き換えました。
追記の追記:プルリクエストを出して取り込まれました。
手順
手順は以下のとおりです。Travis CIで対象のリポジトリをCI対象にしている状態とします。- Travis Integration for Redmine Pluginsをクローンしてくる。
- .travis*をプラグインのルートフォルダにコピーする。
- .travis.ymlで定義されているbranchesを書き換える。クローンしたままだとtestingブランチのみが対象となるため、フックが効かないことがあるかもです。
- .travis.ymlで定義されているenvを書き換える。REDMINE_VERSIONで指定されたバージョンのRedmineでテストをします。複数指定する場合は、行をコピーしてバージョンを書き換えてください。
- .travis.ymlで定義されているPLUGINをプラグイン名に書き換える。
- .travis*をコミットする。コミットがフックされてビルドが開始されます。
結果
できた環境はこちら。テストも成功しました。.travis.ymlのrvmとREDMINE_VERSIONのマトリックスでビルドが実行されます。
非常に簡単にRedmineプラグインのCI環境を作ることができました。RedmineプラグインのCI環境を作るハードルを下げてくれますね。
Arduinoで温度センサーを使ってみた
Arduinoエントリーキット
に付いてきた最後の部品、温度センサーを使ってみました。
温度センサーはLM35DZです。データシートはこちら。
LM35のGNDと+Vsを逆にしていたため、測定した値がおかしくなりArduino自体が動かなくなってしまいました。。。
データシートのピン配置図をみていたのですが、BOTTOM VIEWと書いてあるのを読み取れていませんでした。。。足の出ている方を上にしてみるんですね、BOTTOM VIEWですもんね。この投稿をみてわかりました。
分かってみてからLM35DZ 逆で検索すると、同じようなことがでてきました。
実際の室温と同じぐらいになっていました。
LM35HigherResolution
analogReference()は、アナログ入力の基準電圧を変える関数。デフォルトは5V。INTERNALを指定すると1.1Vになります。
基準電圧が5Vの場合は、
これが基準電圧を1.1Vにすると、
上でも書いたようにLM35DZは10mV/℃で出力するので、5Vの場合は1単位あたり0.49℃、1.1Vの場合は1単位あたり0.11℃となり、より細かい温度を測定できます。
ただし、LM35DZは+2℃〜+150℃まで測れるとデータシートにありますが、1.1Vの場合のMaxは112.53℃に制限されます。
実際に試してみると、5Vの場合は27.83℃と28.32℃(差は0.49)をいったりきたりしたのに対して、1.1Vの場合には29.54℃と29.43℃(差は0.11)をいったりきたりしていました。それぞれはよさそうですが、比べると1℃近くも値が違います。なんでだろう?
これでArduinoエントリーキット
に付いてきたひと通りの部品を試しました。
ここまでArduinoを触った感じでは、簡単な回路ものであれば容易にできそうです。本をひと通りやっていくだけでも楽しめました。
ただ、回路を組むのでわからなかったり、スケッチの問題ではなさそうというときは、はまってしまうorお手上げになってしまいそうだという感触。このあたりはいろいろやってみての経験なんだろうと思います。
温度センサーはLM35DZです。データシートはこちら。
配線
回路図は以下のとおり単純なのですが、はまりました。LM35のGNDと+Vsを逆にしていたため、測定した値がおかしくなりArduino自体が動かなくなってしまいました。。。
データシートのピン配置図をみていたのですが、BOTTOM VIEWと書いてあるのを読み取れていませんでした。。。足の出ている方を上にしてみるんですね、BOTTOM VIEWですもんね。この投稿をみてわかりました。
分かってみてからLM35DZ 逆で検索すると、同じようなことがでてきました。
スケッチ
いろいろなサイトで同じスケッチがでているので割愛。ポイントは以下のとおり。実際の室温と同じぐらいになっていました。
- アナログ入力は5Vを1024段階にする。
- LM35DZのVoutからは、10mV/℃で出力される。
精度を上げる
検索していたらこんなのを見つけました。LM35HigherResolution
analogReference()は、アナログ入力の基準電圧を変える関数。デフォルトは5V。INTERNALを指定すると1.1Vになります。
基準電圧が5Vの場合は、
5V / 1024 = 0.00488から、1単位あたり約4.9mVとなります。
これが基準電圧を1.1Vにすると、
1.1V / 1024 = 0.00107なので、1単位あたり約1.1mVとなります。
上でも書いたようにLM35DZは10mV/℃で出力するので、5Vの場合は1単位あたり0.49℃、1.1Vの場合は1単位あたり0.11℃となり、より細かい温度を測定できます。
ただし、LM35DZは+2℃〜+150℃まで測れるとデータシートにありますが、1.1Vの場合のMaxは112.53℃に制限されます。
実際に試してみると、5Vの場合は27.83℃と28.32℃(差は0.49)をいったりきたりしたのに対して、1.1Vの場合には29.54℃と29.43℃(差は0.11)をいったりきたりしていました。それぞれはよさそうですが、比べると1℃近くも値が違います。なんでだろう?
これでArduinoエントリーキット
ここまでArduinoを触った感じでは、簡単な回路ものであれば容易にできそうです。本をひと通りやっていくだけでも楽しめました。
ただ、回路を組むのでわからなかったり、スケッチの問題ではなさそうというときは、はまってしまうorお手上げになってしまいそうだという感触。このあたりはいろいろやってみての経験なんだろうと思います。
2014年7月22日火曜日
半固定抵抗を使ってみる(回路図も書いてみた)
Arduinoエントリーキット
についてきた部品で、まだ使っていないものが以下の2つ。
ついてきたものは使ってみよう!ということで、まずは半固定抵抗から。
半固定抵抗の調節に合わせて音の調子が変わるというものを作ってみます。作ったものはこんな感じ。

.jpg)
三本ある足の真ん中にかかる抵抗が上のつまみに連動しています。
写真だけだとわからない、、、と今更ですが回路図を書いてみようと思い立ちました。
調べてみると、Fritzingというツールが使いやすそうなのでこれを使いました。
以下のようにブレッドボードのイメージが出てきて、そこにパーツを置いて描けます。Arduino自体ももパーツとしてあるのが便利。
これを元に整形して回路図を描けます。
上と同じですがエクスポートした回路図がこれ。簡単に描けて便利ですね。
TDDでかいてみました。#ifdefで実機に出力/入力する関数をラップしてテストするようにしました。toneW()やanalogReadW()などです。うまくラッパーをまとめていけば、TDDもしやすくなると感じました。というか、まとめないとコードが汚くなりそう。。。
次は温度センサーです。
- 半固定抵抗 10kΩ
- 温度センサー
ついてきたものは使ってみよう!ということで、まずは半固定抵抗から。
半固定抵抗の調節に合わせて音の調子が変わるというものを作ってみます。作ったものはこんな感じ。
半固定抵抗
これです。
.jpg)
三本ある足の真ん中にかかる抵抗が上のつまみに連動しています。
回路図
配線はこんな感じ。写真だけだとわからない、、、と今更ですが回路図を書いてみようと思い立ちました。
調べてみると、Fritzingというツールが使いやすそうなのでこれを使いました。
以下のようにブレッドボードのイメージが出てきて、そこにパーツを置いて描けます。Arduino自体ももパーツとしてあるのが便利。
これを元に整形して回路図を描けます。
上と同じですがエクスポートした回路図がこれ。簡単に描けて便利ですね。
スケッチ
スケッチはここでコミットしています。TDDでかいてみました。#ifdefで実機に出力/入力する関数をラップしてテストするようにしました。toneW()やanalogReadW()などです。うまくラッパーをまとめていけば、TDDもしやすくなると感じました。というか、まとめないとコードが汚くなりそう。。。
次は温度センサーです。
登録:
投稿 (Atom)
RedmineプラグインをGitHub Actionsでテストする
Redmine Advent Calendar 2019 の Qiita で書きました。追っかけで もう一つ 。 Travis-CIで行っていたRedmineプラグインのCIを、GitHub Actionsに変更したものです。 GitHub Actionsをやってみようという...
-
Arduinoエントリーキット についてきた部品で、まだ使っていないものが以下の2つ。 半固定抵抗 10kΩ 温度センサー ついてきたものは使ってみよう!ということで、まずは 半固定抵抗 から。 半固定抵抗の調節に合わせて音の調子が変わるというものを作ってみます。作...
-
ちょっと確認のために試してみました。ソースは以下。 https://bitbucket.org/twopack/jsonrest/commits/e5353d883dffe31f99948a977b938c69 試したかったのは、 @Autowired でインジェクションして...
-
Redmine Advent Calendar 2019 の Qiita で書きました。追っかけで もう一つ 。 Travis-CIで行っていたRedmineプラグインのCIを、GitHub Actionsに変更したものです。 GitHub Actionsをやってみようという...




























