Redmine2.3.2にグループ管理プラグインを入れる

redmineにグループ管理のプラグインを入れたが、ちゃんと動かなかったので
つまづいた所をメモする。
※補足
Ruby on Railsを全然知らないPHPerがちょちょっと修正しているので、
Railsに詳しい人から見たらおかしいかも。指摘してくれるとありがたいです。

■環境
CentOS 6.5
Redmine 2.3.2
ruby 2.0.0
rails 3.2.13

https://github.com/fathomssen/redmine_group_manager
基本的なインストール方法はREADME.rdoc通り

①order by句がおかしい

オーダー句がおかしいとエラーになったので、app/models/gmanager.rbの9行目を修正した
【修正前】

mem = Member.where(:project_id => pid).order(user_id: :asc)

【修正後】

mem = Member.where(:project_id => pid).order("user_id asc")

②オーナー未指定のグループがあると動かない

まあ、インストール直後は全てのグループにオーナーが指定されていないのですが、
オーナーが未指定の場合はユーザテーブルのID=1のユーザがオーナーになるそうです。
(app/helpers/gmanagers_helper.rbの28行目参照)

私の環境ではID=1のユーザが既に削除されていたので、
新しくID=1で絶対的管理者的存在のユーザを作成しました。
別IDで絶対的管理者がいるなら、上記のヘルパーを修正するのでも良いと思います。
(個人のIDにしてしまうと退職した際などに困るのでオススメしません)

③グループ編集タグがredmine管理者にしかでない

各プロジェクトページにてグループ編集タブが表示されるはずなのですが、
プラグインを入れた時点ではredmineの管理者でなければタブが表示されていませんでした。
プロジェクトの管理者にグループ編集機能を使わせたい場合は、redmine管理者メニューの
『管理 > ロールと権限』からグループ編集権限を予め付与しておかなければなりません。
説明をよく読めば書いてあるのかもしれませんが、英語辛いので斜め読みしてました。すみません。

④グループメンバー一覧の項目順がおかしい

各プロジェクトのグループ編集タブよりグループメンバー一覧を表示すると、
カスタムフィールドの項目名と値の並び順が一致していませんでした。
なので、一致するようソート処理を入れます。

app/models/gmanager.rbの34行目と48行目に同じ修正を入れる。
【修正前】

keys = CustomField.where(:type => 'UserCustomField')

【修正後】

keys = CustomField.where(:type => 'UserCustomField').order(:id)

app/models/gmanager.rbの49行目も修正する。
【修正前】

values = User.find(id).custom_values

【修正後】

values = User.find(id).custom_values.order(:custom_field_id)

これで動くようになりました。

〜番外編〜

このプラグインはプロジェクトに所属している人をグループに追加することしかできません。
私はプロジェクトに所属していないユーザもグループ追加できるようにしたかったので、
プラグインを大幅に修正しました。

プロジェクトに未所属のメンバーもグループに追加できるようにしたプラグインは
こちらです。
https://github.com/mildjester/redmine_group_manager

CentOS7にfishを入れる

最近人気らしいfishを試しに入れてみました。

■環境

CentOS 7.3
fish 2.3.1

epelリポジトリが入っていない人はインストールします。

yum -y install epel-release

fishをyumでインストールします。

yum -y install fish

今だけfishを使う場合は、コマンドでそのままfishと打ちます。

fish

恒久的にfishを使いたい場合はchshしておきます。

chsh -s /usr/bin/fish {ユーザ名}

 

これでfishが使えるようになりました。


〜参考〜

CentOS6.X系の場合は以下でfishのインストールできるようです。

wget -P /etc/yum.repos.d/ http://download.opensuse.org/repositories/shells:fish:release:2/CentOS_6/shells:fish:release:2.repo
yum -y install fish

【oh-my-fishインストール】

ついでにoh-my-fishもインストールします。
CentOS7でyumインストールできるgitのバージョンは1.8系(2017年4月現在)なのですが、
oh-my-fishのインストールにはgit 1.9.5以上が必要なので
ソースからコンパイルします。

ソースからコンパイルする際に必要なものをインストールします。
私の環境では以下でしたが、ここは各環境に合わせてインストールしてください。
ソースからコンパイルする方法を調べれば出てくると思います。

yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf gettext gcc

ソースコードをダウンロードしてきます

cd /tmp/
wget https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
tar xzf git-2.9.3.tar.gz

※最新のソースは以下で確認
https://www.kernel.org/pub/software/scm/git/

gitをインストールします。
configureのオプション「–with-curl」を付けないと、oh-my-fishインストール時にコケます。

cd git-2.9.3
make configure
./configure --with-curl
make
make install

『/usr/local/bin』配下にgit系コマンドが配置されるので、
もしPATHを通していない場合は追加する。

set -U fish_user_paths $fish_user_paths /usr/local/bin
git --version
git version 2.9.3

最後にoh-my-fishをインストールして完了です。

curl -L https://get.oh-my.fish | fish

oh-my-fishのインストール詳細についてはこちらを参照してください。
https://github.com/oh-my-fish/oh-my-fish

【pecoインストール】

ついでにpecoもインストールしておきます。

peco本体はgithubからダウンロードし、利用可能な状態にしておきます。

cd /tmp/
wget https://github.com/peco/peco/releases/download/v0.5.1/peco_linux_amd64.tar.gz
tar xzf peco_linux_amd64.tar.gz
mv peco_linux_amd64/peco /usr/local/bin/.

oh-my-fishでpecoをfishに取り込みます。

omf install peco

最後にfishのコンフィグファイルを修正します。

vim ~/.config/fish/config.fish
# 記載する内容
function fish_user_key_bindings
    bind \cr peco_select_history
end

以上で設定は完了です。

zabbixでPHPの警告が出る場合の対処

■環境
zabbix 3.2
PHP 7.1

PHP7.1でzabbixを動かすと、以下の警告が出ました。

A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpMemoryLimit() → str2mem() in include/func.inc.php:410]
A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpPostMaxSize() → str2mem() in include/func.inc.php:410]
A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpUploadMaxFilesize() → str2mem() in include/func.inc.php:410]

警告が出ている箇所は以下のようになっています。
[/usr/share/zabbix/include/func.inc.php]

 394 /**
 395  * Converts strings like 2M or 5k to bytes
 396  *
 397  * @param string $val
 398  *
 399  * @return int
 400  */
 401 function str2mem($val) {
 402         $val = trim($val);
 403         $last = strtolower(substr($val, -1));
 404
 405         switch ($last) {
 406                 case 'g':
 407                         $val *= 1024;
 408                         /* falls through */
 409                 case 'm':
 410                         $val *= 1024;
 411                         /* falls through */
 412                 case 'k':
 413                         $val *= 1024;
 414         }
 415
 416         return $val;
 417 }

この引数の「$val」には『256M』のように単位付きの数字が入ってくるようで、
それを『$val *= 1024』と数字のように扱っているので警告が出ているようです。
(警告は出ているが、処理自体は正常に行なわれている)

解決策は色々あると思いますが、とりあえず以下のように修正したら
警告は表示されなくなりました。(404行目を追加しています)

 401 function str2mem($val) {
 402         $val = trim($val);
 403         $last = strtolower(substr($val, -1));
 404         $val = intval($val);
 405         switch ($last) {
 406                 case 'g':
 407                         $val *= 1024;
 408                         /* falls through */
 409                 case 'm':
 410                         $val *= 1024;
 411                         /* falls through */
 412                 case 'k':
 413                         $val *= 1024;
 414         }
 415
 416         return $val;
 417 }

CentOS 7.3にzabbix 3.2をインストール

■環境

CentOS 7.3
zabbix 3.2
PHP 7.1
MySQL 14.14
Apache 2.4


①zabbixをyumでインストールするためのリポジトリをインストール

# yum install http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

②zabbixの本体をインストール

# yum install \
zabbix-server-mysql \
zabbix-web-mysql \
zabbix-web \
zabbix-agent \
zabbix-get \
zabbix-sender \
zabbix-web-japanese

※MySQLではなくPostgreSQLを使う場合は、上記の『mysql』を『pgsql』にするだけです。

③MySQLの設定

# mysql
mysql> CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbixpassword';
mysql> CREATE DATABASE zabbix CHARACTER SET utf8;
mysql> GRANT ALL ON zabbix.* to 'zabbix'@'localhost';
mysql> quit
# zcat /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql.gz | mysql -uroot zabbix

パスワードは任意のものを入れてください。
DB名とユーザ名も変えたければ変えても構いません。

④Zabbixの設定

# vim /etc/zabbix/zabbix_server.conf
以下項目を設定
LogFileSize=10
DBPassword=zabbixpassword

もし手順③にてDB名とユーザ名も変更していた場合は、ここで該当箇所も修正してください。

⑤起動

# systemctl start zabbix-server
# systemctl start zabbix-agent
# systemctl restart httpd

これでインストールは完了です。
https://ホスト名/zabbixにアクセスするとzabbixが開き、初期設定が始まります。
初期ログインのID/PASSは『Admin/zabbix』です。

ログイン後、右上の人形アイコンで言語やパスワードを変更できます。

私が実施した時はダッシュボードにて以下のPHPの警告が表示されました。
『A non well formed numeric value encountered』
解決策はコチラに記載しています。


その他

MacサーバへのZabbixエージェントインストールが難しかったので、別途記事にしました。
MacにZabbixエージェントを入れる

【git】gitコマンドチートシート

自分が使うgitコマンドを整理しました。

■環境
OS X El Capitan 10.11.6
git 2.10.1

【設定について】
グローバルコンフィグの設定
(全リポジトリの共通設定)

$ git config --global user.name "jester"
$ git config --global user.email "jester@sample.co.jp"

リポジトリ別コンフィグの設定

(対象リポジトリのディレクトリにて)
$ git config user.name "master"
$ git config user.email "master@sample.co.jp"

【リポジトリの作成・リモート設定について】
リモートのリポジトリをクローンする

$ git clone {リモートリポジトリの指定} {生成するディレクトリ}

※生成するディレクトリを省略すると、リモートリポジトリと同じ名前でディレクトリが生成される

ローカルで新規にリポジトリを作成する

$ mkdir SampleProject
$ cd SampleProject
$ git init

ローカルで作成したリポジトリを後からリモートに紐付ける

(対象のリポジトリディレクトリにて)
$ git remote add {名前、originなど} {リモートリポジトリの指定}

リモートリポジトリの変更する

(対象のリポジトリディレクトリにて)
$ git remote set-url {名前、originなど} {リモートリポジトリの指定}

リモートとの紐付けを解除する

(対象のリポジトリディレクトリにて)
$ git remote rm {名前、originなど}

【WordPress】SyntaxHighlighter Evolvedを高速化する

Wordperssのプラグイン『SyntaxHighlighter Evolved』を入れていたところ
画面表示がとても遅くなったので高速化しました。

〜〜〜2017/2/11 追記〜〜〜
プラグインを変えた方が早いかもしれないです
「WP Code Highlight.js」に変えてみたところ、表示は問題なく早いですし
paddingなどもこちらの方が気に入ってます。
〜〜〜追記終わり〜〜〜

■環境
CentOS 7.3
Wordpress 4.7.2
SyntaxHighlighter Evolved 3.2.1
※前提条件として、Wordpressを置いてあるサーバを操作できる権限があることとします

『SyntaxHighlighter Evolved』は各種言語に対応しているのですが、
実際、自分は書かないなーという言語も入っているので、不要なものは
プラグインで読み込まないようにします。

具体的には、プラグイン内のPHPファイルを修正し、不要な言語の設定を読み込んでいそうな行を
コメントアウトします。

# cd /{wordpressが配置されているディレクトリ}/wp-content/plugins/syntaxhighlighter
# vim syntaxhighlighter.php

コメントアウト箇所は114行目あたりから始まる以下の部分です。

wp_register_script( 'syntaxhighlighter-brush-○○○',〜〜〜 $this->agshver );

上記の「○○○」部分に言語名が入っているので、不要な言語の行はコメントアウトします。

あと、あまり効果があるか分かりませんが、テーマも使わないものはコメントアウトしてしまいました。
該当箇所は149行目あたりから始まる以下の部分です。

wp_register_stype( 'syntaxhighlighter-theme-○○○',〜〜〜 $this->agshver );

上記の「○○○」部分にテーマ名が入ります。

上記でコメントアウトした言語、テーマについて
下の方の行で配列に格納されているので、そこもコメントアウトします。

言語についての配列は、162行目あたりにあります。

$this->brushes = (array) apply_filters( 'syntaxhighlighter_brushes', array(
    'as3'           => 'as3',
    'actionscript3' => 'as3',
    'bash'          => 'bash',
    'shell'         => 'bash',
    以下略

テーマについての配列は、243行目あたりにあります。

$this->themes = (array) apply_filters( 'syntaxhighlighter_themes', array(
    'default'    => __( 'Default',      'syntaxhighlighter' ),
    'django'     => __( 'Django',       'syntaxhighlighter' ),
    'eclipse'    => __( 'Eclipse',      'syntaxhighlighter' ),
    'emacs'      => __( 'Emacs',        'syntaxhighlighter' ),
    'fadetogrey' => __( 'Fade to Grey', 'syntaxhighlighter' ),
    'midnight'   => __( 'Midnight',     'syntaxhighlighter' ),
    'rdark'      => __( 'RDark',        'syntaxhighlighter' ),
    'none'       => __( '[None]',       'syntaxhighlighter' ),
) );

上記箇所を適当にコメントアウトすると、画面表示がいくらか早くなりました。

PHPExcelの使い方メモ

PHPでExcelを生成できる『PHPExcel』の使い方メモ
※実際に私が使ったものをメモしているだけなので、機能を網羅している訳ではないです。かしこ。

インストールはcomposerを使うか、圧縮ファイルをダウンロードしてきて
適当なディレクトリに解凍します。
あとは以下をrequireするだけ。
/格納したパス/PHPExcel/Classes/PHPExcel.php
/格納したパス/PHPExcel/Classes/PHPExcel/IOFactory.php

実際のソースコードは以下の通り

/**
 * PHPExcelの新規オブジェクト作成
 */
$excel = new PHPExcel();

/**
 * シートを作成してシート名を変える
 */
$sheetIndex = 0; // シート番号は0から
$excel->setActiveSheetIndex($sheetIndex);
$sheet = $excel->getActiveSheet();
$sheet->setTitle('SampleSheet01');

/**
 * セルにデータを入力する
 */
// 基本的な入力
$rowCnt = 1; // 行番号は1から
$clmCnt = 0; // 列番号は0から
$text = 'セルに書き込む内容だよ';
$sheet->setCellValueByColumnAndRow($clmCnt, $rowCnt, $val);

// 文字列型で入力
$rowCnt++; // 1行下に移動
$clmCnt++; // 1列右に移動
$text = '000001'; // 文字列型にしないと、左記は「00001」ではなく「1」になってしまう
$sheet->setCellValueExplicitByColumnAndRow($clmCnt, $rowCnt, $val, PHPExcel_Cell_DataType::TYPE_STRING);

/**
 * セルの書式設定
 */
// シートのデフォルトフォントを設定する
$sheet->getDefaultStyle()->getFont()->setName('MS Pゴシック')->setSize(11);

// 背景色を設定
$bgcolor = '000000'; // 16進数で指定
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getFill()->getStartColor()->setRGB($bgcolor);

// 文字色を設定
$fontcolor = 'FFFFFF'; // 16進数で指定
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getFont()->getColor()->setARGB($fontcolor);

// 太字にする
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getFont()->setBold(true);

// セル(行列番号指定)の上だけに罫線(二重線)を引く
$sheet->getStyleByColumnAndRow($clmCnt, $rowCnt)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_DOUBLE);
// セル(レンジ指定)の周り全てに罫線(単一線)を引く
$sheet->getStyle('A1:B3')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);


// 列の幅を指定する
$sheet->getColumnDimension('A')->setWidth(14.5);
// 列の幅を自動調整する(※これで効くはずなんですが、効かない事が多々ある)
$sheet->getColumnDimension( PHPExcel_Cell::stringFromColumnIndex($clmCnt))->setAutoSize(true);

以上

MFクラウド会計を使った休眠法人決算

休眠法人の決算を税理士を雇わずに終わらせる。
MFクラウド会計の無料プランを使う。

①各種設定>事業所 で必要な情報を設定する。

②各種設定>開始残高 で、昨年から繰り越した現金や預金の金額を設定する。

③銀行の利子が入っていると思うので、その分だけ振替伝票を記載する。

④以下をPDF出力する。
「決算・申告メニュー>決算書」
「会計帳簿メニュー>現預金出納帳」
「会計帳簿メニュー>総勘定元帳」

⑤e-taxにて確定申告する。
手順詳細はコチラ

これで、税務署から何も言われなければ完了。
呼び出しを食らったら、大人しく従います。

【法人】国税のe-taxでの申請手順メモ

法人(休眠中)の国税に関する確定申告をe-taxで行なったので、その手順をメモします。
休眠中じゃなくても、大体の手順は同じだと思います。
※eLTAX(地方税)についてはこちら

■必要なもの

  • Windows PC
  • ICカードリーダー
  • 決算書など、確定申告書に添付する資料のPDF

■手順

①e-tax利用準備

電子証明書は法人のものでなくても、代表個人のものでもよいです。
マイナンバーカードに電子証明書が付いているので、それを使うのが一番早いと思います。

作業手順は以下に従ってください。
http://www.e-tax.nta.go.jp/hojin.html

②e-taxソフトでの申請データ作成

e-taxソフトやソフト起動時に入力する利用者識別番号も①の手順で取得できます。

※注意
利用者識別番号は使い続けていれば過去に発行した物もずっと有効(?)らしいですが、
年に1回使う程度だと失効している可能性があります。(私は失効していました)
利用者識別番号が無効と言われた場合は、手順①を再度実施してください。

左メニューの『作成>申告・申請等>新規作成』にて申告書を作成します。
【1つめ:確定申告書申告書】
以下を選択して「次へ」をクリックします。
手続の種類:申告
税目:法人税・地方法人税
帳票の年:自分の事業にあった項目

以下を作成します。
<<普通法人の確定申告(青色)>>
・別紙1(1) 各事業年度の所得に係る申告書
・別紙2 同族会社等の判定に関する明細書
・別紙4 所得の金額の計算に関する明細書
・別紙7(1) 欠損金又は災害損失金の損金参入に関する明細書
・法人事業概要説明書

※注意
作成する帳票を選ぶ画面がチェックボックスになっていますが複数選べません。
まずは別紙1を選んで作成し、後から他の書類を追加してください。

【2つめ:確定申告の添付書類】
以下を選択して「次へ」をクリックします。
手続の種類:申告
税目:法人税・地方法人税
帳票の年:自分の事業にあった項目

以下を作成します。
<<イメージ添付書類(法人税申告)>>
・添付書類送付書
 ->決算書、出納帳、総勘定元帳のPDFを添付する

③e-taxソフトでの署名

左メニュー『署名可能一覧へ>電子署名』にて、上記で作成したデータに署名をします。
署名に使う電子証明書は①で取得したものです。

④e-taxソフトでの送信

左メニュー『送信可能一覧へ>送信』にて、まずは手順②で作成した2つの書類を紐付けます。
下側の単独送信不可の書類(作成した添付書類)を選択した状態で「紐付け」をクリックします。
すると紐付け画面が表示されるので、確定申告書を選択して「OK」をクリックします。

これで紐付けが完了したので、上側の送信可能書類(作成した確定申告書)を選択した状態で「送信」をクリックします。
その後、利用者識別番号の暗証番号を入力すれば送信完了です。

以上でe-taxでの申請は完了。