Redmineのプラグイン メモ

  • プラグインのフォルダ名が大事
  • たまにバグがあるけど、railsわかれば対処可能
  • 日本語対応してない場合もある

環境・コマンド

インストール

bundle exec rake redmine:plugins:migrate RAILS_ENV=production

アンインストール

bundle exec rake redmine:plugins:migrate NAME=redmine_plugin VERSION=0 RAILS_ENV=production
rm -rf plugins/redmine_plugin

プラグイン

redmine_code_review 0.7.0

コードにレビューを書き込める
ソース:Code Review - Plugins - Redmine

バグ有りのため、以下を参考に。
Redmine コードレビュープラグイン : アジャイル株式会社

custom_menu 1.7.2

自分の好きなページへのリンクを簡単に作成する
ソース:Custom Menu - Plugins - Redmine

以下のプラグインもインストールする必要あり。
a_common_libs 2.2.4
https://bitbucket.org/dkuk/a_common_libs.git

clipboard_image_paste 1.9

画像をコピペで挿入できる。
ソース:Attach image from clipboard - Plugins - Redmine

recurring_tasks 2.0.0

定期タスクを登録する
ソース:Recurring Tasks - Plugins - Redmine

日本語対応なし。

redmine_banner

ヘッダーにバナーを表示する。
ソース:About Redmine Banner Plugin · akiko-pusu/redmine_banner Wiki · GitHub

redmine_lightbox2 0.3.1

ソース:Lightbox Plugin 2 - Plugins - Redmine

redmine_work_time 0.3.3

ソース:Work Time - Plugins - Redmine

usability 2.1.6

monacaで作成 canvasを使ったスクラッチカードアプリ

f:id:meikotan:20170319220425p:plain

クラッチカードの結果用の canvas と、削られる用の canvas を重ねて設置する。
削られる部分の canvas にタッチして色をクリアにすると、結果用の canvas に書かれた文字が見える。


HTML

<style>
canvas{ position: absolute; }
</style>

<canvas id="parent" width="400" height="300"></canvas>
<canvas id="child" width="400" height="300"></canvas>


javascript

var resultString= "1等";

// スクラッチ読み込み
var canvas  = document.getElementById("parent"),
  canvas2 = document.getElementById("child");
var ctx     = canvas.getContext('2d'),
    ctx2    = canvas2.getContext('2d');
 
var startX,startY,x,y,
    isDrawing = false;
    
// 結果用の canvas レイヤ
// canvas の初期化
ctx.fillStyle = "#fff";     
ctx.fillRect(0,0, canvas.width, canvas.height); // 塗りつぶし

// 文字の描画
// 文字のフォント設定
ctx.font = "bold 26px 'MS Pゴシック'";
ctx.textAlign = 'center';
ctx.fillStyle = '#ff0000';

// 結果の描画
ctx.fillText(resultString, canvas.width/2, canvas.height/2, canvas.width); // (文字,始点x,y,最大横幅)に文字を描画


// 削る用の canvas レイヤ
// canvas の初期化      
ctx2.fillStyle = "#999999";
ctx2.fillRect(0,0, canvas.width, canvas.height); // 塗りつぶし


// タッチ開始  
$('#child').on('touchstart', function(e) {   
 isDrawing = true;
  
 // 開始位置としてタッチした場所を設定
  var canvas2Rect = canvas2.getBoundingClientRect();
  var touch = event.targetTouches[0];
  startX = Math.floor((touch.pageX-canvas2Rect.left)/(canvas2Rect.right-canvas2Rect.left)*canvas2.width);
  startY = Math.floor((touch.pageY-canvas2Rect.top)/(canvas2Rect.bottom-canvas2Rect.top)*canvas2.height);
});

// タッチ中
$('#child').on('touchmove', function(e) {
 if(!isDrawing) return;

  // 終了位置の設定
  var canvas2Rect = canvas2.getBoundingClientRect();
  var touch = event.targetTouches[0];

  x = Math.floor((touch.pageX-canvas2Rect.left)/(canvas2Rect.right-canvas2Rect.left)*canvas2.width);
  y = Math.floor((touch.pageY-canvas2Rect.top)/(canvas2Rect.bottom-canvas2Rect.top)*canvas2.height);
  ctx2.beginPath();
  ctx2.moveTo(x, y);
  ctx2.clearRect(x,y,40,40, 2*Math.PI, true); // 切り抜き
  startX = x;
  startY = y;
});

// タッチ終了
$('#child').on('touchend', function(e){
 isDrawing = false;
});           
}

自分で作るスクラッチカードくじ

play.google.com

windows10 C++ コマンドプロンプトで実行した時に文字色・背景色を変える

環境

やりたいこと

C++のソースにエスケープシーケンスを使って、ansiカラーを出力させる

#include <iostream>
using namespace std;

int main() {
 printf("\033[33m"); /* 文字色黄色 */
 cout << "HELLO" << endl;

 printf("\033[0m"); /* 色の初期化 */
 cout << "HELLO" << endl;
}

エスケープシーケンスでできること、色について

エスケープシーケンスとは、エスケープコードで始まる文字列で
その中で、ANSIエスケープコードを使って色を変える

  • ANSIエスケープコードのフォーマット
ESC[n1;n2;...X
  • ESCの8進、16進変換
¥033 : 8進数で表記
¥x1b : 16進数で表記

参考

実行してもうまくいかない。

上手く読み込まれず、色のコードがそのまま文字列として出力される
f:id:meikotan:20170223122922j:plain

エスケープシーケンスを読み込むために ansicon を使う

windows xp 以下は System32¥config.nt というファイルに設定を追加するだけで
エスケープシーケンスが読み込めてたみたいだけど
windows10には config.nt 設定ファイル自体が存在しない。

ansiconを使う

以下のサイトを参考にしました。

ansiconをインストールする。
  1. アーカイブを展開
  2. 任意の場所にコピー。
Pathを通して、実行コマンドの前に「ansicon」コマンドを追加する。

※参考サイトにあるAutoRunレジストリエントリはよく理解できなかったので、使わない。

Project.exe の実行

ansicon Project

f:id:meikotan:20170223122946j:plain


ほかに出来ること。

printf("¥033[2J"); /* 画面をクリア */
printf("¥033[5;10H"); /* カーソルを移動 */
printf("\033[33m"); /* 文字色を黄色に */
printf("Hello!¥n"); /* メッセージを出力 */

printf("Press [Enter]...¥n"); /* メッセージを出力 */
(void)getchar(); /* キー入力を待つ */
printf("¥033[93m"); /* 文字色を標準に */

Sqliteのauto increment last_insert_rowid で直前で保存したデータを取得する

開発環境


オートインクリメントで登録したIDの値を
last_insert_rowid で取得したかった。

table:category
--
id   | autoincrement
name | text
--


INSERT した executeSql() の success callback から
ROWID = last_insert_rowid() を取得すると、ループの最後の値しか取得されない。

angular.forEach( Object, function(obj) {
  db.transaction( function(tx){
    tx.executeSql('INSERT INTO category ( name ) VALUES (?)', [ "小説" ] );
    tx.executeSql('SELECT * FROM questions where ROWID = last_insert_rowid()', [],
      function(tx, res){
        var category_id = res.rows.item(0).id;
        tx.executeSql('INSERT INTO books ( category_id, name ) VALUES (?, ?)', [ category_id, "白夜行" ] );
      }
    );
  });
});


INSERT した executeSql() はcallbackを取得しない。
次の SELECT文 executeSql() で callbackから
ROWID = last_insert_rowid() で取得するとうまくいく。

angular.forEach( Object, function(obj) {
  db.transaction(function(tx){
    tx.executeSql('INSERT INTO category ( name ) VALUES (?)', [ "小説" ] );
    tx.executeSql('SELECT * FROM questions where ROWID = last_insert_rowid()', [],
      function(tx, res){
        var category_id = res.rows.item(0).id;
        tx.executeSql('INSERT INTO books ( category_id, name ) VALUES (?, ?)', [ category_id, "白夜行" ] );
      }
    );
  });
});
参考:

データベースの利用方法 - Monaca Docsデータベースの利用方法 - Monaca Docs

javaMavenプロジェクトでjarを追加するとき、インストールディレクトリを指定する

netbeams Mavenプロジェクトで依存性フォルダのjarパスを変更できなかったので
mvnコマンドでローカルにインストールするとき、インストールディレクトリを指定する。
デフォルトはユーザのホームディレクトリ。

環境

Apache Maven 3.3.9
Net beams

apache-mavenの設定ファイルを修正

apache-maven-3.3.9\conf\settings.xml

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
<!--インストールフォルダを指定--> 
<localRepository>インストール先</localRepository>

エディタ Atom 便利パッケージ

エディタを「さくらエディタ」から「Atom」に変更しました。
プロジェクトのフィルだ・ファイルをまるっと開けるとこがすごく便利。

それで、パッケージ入れたらもっと便利になることがわかって、よさそうなのだけピックアップしました。

環境

windows 10

パッケージ

表示

◇ japanese-menu メニューを日本語表示に

適用前
f:id:meikotan:20160925120819j:plain
適用後
f:id:meikotan:20160925120739j:plain

◇ file-icons ファイル拡張子に併せてアイコン適用

可愛い。
.html
f:id:meikotan:20160925122451j:plain
.php
f:id:meikotan:20160925122559j:plain
.rb
f:id:meikotan:20160925122933j:plain
.py
f:id:meikotan:20160925122438j:plain

◇ show-ideographic-space 全角スペースを▭表示

f:id:meikotan:20160925124209j:plain


補完機能

◇ autoclose-html 閉じタグ自動補完

開始タグを書き終えた時に、閉じタグが自動生成される

◇ color-picker カラーピッカー表示

CTRL-ALT-C(CMD-SHIFT-C)
f:id:meikotan:20160925125533p:plain

◇ autocomplete-paths ローカルパスの自動補完

未検証

◇ bracket-matcher 終始のカッコ位置を表示

対応する括弧やHTMLタグに下線を表示する
f:id:meikotan:20160925130218j:plain
ctrl + M ⇒ 対応する括弧に移動
ctrl + Alt(cmd) + M ⇒ 対応する括弧内を全選択

◇ highlight-selected 選択した単語と同じ単語をハイライト

f:id:meikotan:20160925124720j:plain

atom-autocomplete-php

未検証

便利機能

Sublime-Style-Clumn-Selection 短形選択

Alt(Option)+ マウスを動かす => 短形選択!

◇ tablr CSVファイルをテーブル表示

Excelみたいに表示・編集可能
f:id:meikotan:20160925131633j:plain

「Open Table Editor」を選択する
f:id:meikotan:20160925132158j:plain

「Open Text Editor」選択すると、テキスト表示

◇ auto-encording 文字コードを自動判定

windows環境でShiftJISを使う方は、あったほうがいい。
ただし、tablrには未対応だったのが残念。

テーマ

◇ railscast-theme

テーマもいろいろ探したい

EPELリポジトリの追加

概要

標準リポジトリが提供していないパッケージをyumインストールしたいため、
EPELリポジトリを追加(アップデート)して、インストールの際は指定時のみ、EPELリポジトリを見るように設定。

EPEL・Remi とは?

Red Hat Enterprise Linux (RHEL) 向けの拡張パッケージ集のこと。

EPEL : エンタープライズ向けで信頼性が高い
Remi : 最新バージョンのパッケージが豊富

現在の設定確認

EPELリポジトリのバージョン確認

既存のリポジトリがない場合は、表示されない。

# rpm -qa | grep epel
  epel-release-5-4.noarch
Remiのバージョンを確認(もしEPELをRemiを使って入れているなら)

既存のリポジトリがない場合は、表示されない。

# rpm -qa | grep remi 
 remi-release-5.10-1.el5.remi
 ・・・
 ・・・
(アップデートの場合)古いバージョンのリポジトリを削除

依存関係のエラーが出るため、Remiから削除する。
インストール済みのRPMパッケージをアンインストールするには、「-e」オプションを使用する。

# rpm -e remi-release-5.10-1.el5.remi
# rpm -e epel-release-5-4

EPELリポジトリの追加

EPELリポジトリのダウンロード・インストール

環境に合わせバージョンをインストールする。

$ wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ rpm -ivh epel-release-6-8.noarch.rpm
EPELリポジトリの設定
# vi /etc/yum.repos.d/epel.repo
 [epel]
 …
 # 常時利用、基本リポジトリになければ利用
 enabled=1
 priority=2

 # 一時利用
 enabled=0
EPELリポジトリの使用

常時利用の場合はオプションがなくても、リポジトリを確認してくれる。
一時利用の場合は、yum install --enablerepoオプションを付けて実行する。

yum install --enablerepo=epel <package-name> 
追記(9/18)

yumコマンド実行時
常時利用のリポジトリを無効にすることも可能

yum install --disablerepo=epel <package-name>