2020年4月15日水曜日

Redmineをちゃんと使う

在宅勤務で、いろいろなことを見直している。
なんとなく使っているRedmineもちゃんと使うためにいろいろ調べようと思う。
自分用に家庭でも使用しているが、あまり使えていなかったし。

用語の整理

ほんとなんとなくで使っていたと反省・・・。
用語 意味 デフォルト値 参考
ワークフロー 「仕事の流れ」を意味する言葉で、チケット作成から完了までの流れを決める機能 「ロール数」×「トラッカー数」存在する 引用元
ロール ユーザーがプロジェクト上で行える操作を定義したもの 「管理者」、「開発者」、「報告者」 引用元
トラッカー トラッカーはチケットの大分類 バグ/機能/サポート 引用元
チケット タスク管理の最小単位 引用元
ステータス ステータスはチケットの進捗状況を表すもの 新規/進行中/解決/フィードバック/終了/却下 引用元
作業分類 チケットの作業時間を活動(作業分類)単位で分ける 「設計作業」、「開発作業」 引用元
http://redmine.jp/glossary/

自分に合わせてカスタマイズする

上記用語やそれを実際に即したかたちにしたら、家族にも使ってもらえたりするのかと・・・。

趣味の開発用途の場合

これは、1人で完結するので、単純化できる
名称 設定
ワークフロー あとで
ロール 変更なし(管理者/開発者/報告者)
トラッカー 変更なし(バグ/機能/サポート)
ステータス 変更なし(新規/進行中/解決/フィードバック/終了/却下)
作業分類 変更する(調査作業/設計作業/開発作業/確認作業)

作業分類の追加

管理者でログインして、[管理]→[選択肢の値]にて、作業分類(作業時間)を追加する


これでOK

ワークフローの確認

1人なので、ロールは「管理者」のみになる(T_T)
変更はなしで大丈夫


勉強系用途の場合

これも、1人で黙々なので、単純化できる
名称 設定
ワークフロー あとで
ロール 変更なし(管理者/開発者/報告者)
トラッカー 変更する勉強/バグ/機能/サポート)
ステータス 変更する(新規/進行中/終了/却下)※ワークフローで対応する
作業分類 変更する(インプット/アウトプット/テスト・振り返り)

トラッカーの追加

管理者でログインして、[管理]→[トラッカー]にて「勉強」を追加する


作業分類の表示/非表示を変更

管理者でログインして、[管理]→[選択肢の値]にて
作業分類(作業時間)でインプット/アウトプット/テスト・振り返りを追加する
その後、プロジェクトに移動して[設定]→[時間管理]から表示したい項目を有効化する。


ワークフローでステータス遷移を縛る

ステータスの遷移を新規/進行中/終了/却下のみにしたい
解決とフィードバックは遷移しないようにする。
これは、[管理]→[ワークフロー]にてトラッカーを「勉強」にして遷移を決める。


これで、ステータスの遷移を確認する

これでOK

家庭内タスク管理の場合

これは、家族で使うことになるので、少し複雑になるか?
名称 設定
ワークフロー あとで
ロール 変更する(管理者/依頼者/作業者)
トラッカー 変更する(家のこと/学校のこと/会社のこと/実家のこと)
ステータス 変更なし(新規/進行中/解決/フィードバック/終了/却下)
作業分類 変更する(見積/対応/確認)

ロールの追加

管理者でログインして、[管理]→[ロールと権限]にて行う

その他

トラッカーの追加は、今までと同じ。

2020年4月7日火曜日

PhpSpreadsheet をオフライン環境に導入する

昔にPHPExcelを使ったクローズなサービスを作っていた。
クローズというのは、インターネットから遮断されているということ。
このサービスを少し手直すする必要が出てきた。
寝ている子を起こすといやつだ。
どうやらPHPExcelはもう推奨されていないらしい
https://github.com/PHPOffice/PHPExcel
https://qiita.com/suin/items/7a8d0979b7675d6fd05b
「PhpSpreadsheet」というのが後継にあるのかな。
https://phpspreadsheet.readthedocs.io/en/latest/
https://github.com/PHPOffice/PhpSpreadsheet

環境

開発環境はlinuxで、上記のサービス環境はwindowsという変な状態になっている。
windows環境はインターネットからは遮断されており、検査されたデータしか持ち込めない。
しかも手動検査・都度申請が必要…

PhpSpreadsheet の公式インストール方法

公式では、composerを使って
composer require phpoffice/phpspreadsheet
php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples
で一撃的な感じで書いてある。
composerねー。npmもそうだけど、オフライン環境への導入が大変そう。
みんなはどうしているのかな? 巨人の肩に乗らせて欲しい
まずは、公式の手順でやってみる

早速サンプルを実行してみる

php -S localhost:8888 -t vendor/phpoffice/phpspreadsheet/samples


ディレクトリ構成

これで、一体どのようなファイル生成されているかを見てみよう
:~/excel$ tree
.
├── composer.json
├── composer.lock
└── vendor
    ├── autoload.php
    ├── composer
    │   ├── ClassLoader.php
    │   ├── LICENSE
    │   ├── autoload_classmap.php
    │   ├── autoload_files.php
    │   ├── autoload_namespaces.php
    │   ├── autoload_psr4.php
    │   ├── autoload_real.php
    │   ├── autoload_static.php
    │   └── installed.json
    ├── markbaker
    │   ├── complex
    │   └── matrix
    ├── phpoffice
    │   └── phpspreadsheet
    │       ├── CHANGELOG.PHPExcel.md
    │       ├── CHANGELOG.md
    │       ├── CONTRIBUTING.md
    │       ├── LICENSE
    │       ├── bin
    │       ├── composer.json
    │       ├── composer.lock
    │       ├── docs
    │       ├── mkdocs.yml
    │       ├── phpunit.xml.dist
    │       ├── samples
    │       └── src
    └── psr
        └── simple-cache
            ├── LICENSE.md
            ├── README.md
            ├── composer.json
            └── src
なるほど・・・。
vender配下に生成するのと、autoload.phpが肝なのか?

Composerをオフラインで使う

調べてみると、オンラインPCでComposerを使用して必要なライブラリなどを取得して環境を作って、それをオフライン環境に導入するといった方法が多いみたい
https://teratail.com/questions/76493
https://blitzgate.co.jp/blog/1820/
上記を踏まえて作戦を考えた
  1. ローカルのリポジトリ的なやつからインストール
  2. 手動で依存関係を解決する
  3. オンラインPC環境で構築してから転送する

ローカルのリポジトリからインストール

https://qiita.com/suin/items/d24c2c0d8c221ccbc2f3
windows版のcomposerをインストールするハードルがあるが、出来てしまえば、応用がききそう。
今回は時間が無いので、見送る。

手動で依存関係を解決してみる

依存関係の定義

依存関係はcomposer.jsonに定義しているみたい
    "require": {
        "php": "^7.1",
        "ext-ctype": "*",
        "ext-dom": "*",
        "ext-gd": "*",
        "ext-iconv": "*",
        "ext-fileinfo": "*",
        "ext-libxml": "*",
        "ext-mbstring": "*",
        "ext-SimpleXML": "*",
        "ext-xml": "*",
        "ext-xmlreader": "*",
        "ext-xmlwriter": "*",
        "ext-zip": "*",
        "ext-zlib": "*",
        "markbaker/complex": "^1.4",
        "markbaker/matrix": "^1.2",
        "psr/simple-cache": "^1.0"
    },

ベースとなるディレクトリ構造

まずは、この構造を作る
:~/excel$ tree
.
└── vendor
    ├── markbaker
    │   ├── complex
    │   └── matrix
    ├── phpoffice
    │   └── phpspreadsheet
    └── psr
        └── simple-cache
それぞれを手動でインストールしてみようと試みた。
名称 ソース
PHPComplex https://github.com/MarkBaker/PHPComplex
PHPMatrix https://github.com/MarkBaker/PHPMatrix
simple-cache https://github.com/php-fig/simple-cache
phpspreadsheet https://github.com/PHPOffice/PhpSpreadsheet
composer関係を除けば同じようになった。

サンプルを実行してみる

これで動けばいいのだけれど
$ php -S localhost:8888 -t vender/phpoffice/phpspreadsheet/samples
PHP 7.2.24-0ubuntu0.18.04.3 Development Server started at Sun Mar 15 09:52:56 2020
Listening on http://localhost:8888
Document root is /***/vender/phpoffice/phpspreadsheet/samples
Press Ctrl-C to quit.
[Sun Mar 15 09:53:12 2020] PHP Fatal error:  Uncaught Exception: Composer autoloader could not be found. Install dependencies with `composer install` and try again. in /***/vender/phpoffice/phpspreadsheet/src/Bootstrap.php:22
Stack trace:
#0 /***/vender/phpoffice/phpspreadsheet/samples/Header.php(9): require_once()
#1 /***/vender/phpoffice/phpspreadsheet/samples/index.php(3): require_once('/home/adeno/exc...')
#2 {main}
  thrown in /***/vender/phpoffice/phpspreadsheet/src/Bootstrap.php on line 22
[Sun Mar 15 09:53:12 2020] 127.0.0.1:39226 [500]: / - Uncaught Exception: Composer autoloader could not be found. Install dependencies with `composer install` and try again. in /***/vender/phpoffice/phpspreadsheet/src/Bootstrap.php:22
Stack trace:
#0 /***/vender/phpoffice/phpspreadsheet/samples/Header.php(9): require_once()
#1 /***/vender/phpoffice/phpspreadsheet/samples/index.php(3): require_once('/home/adeno/exc...')
#2 {main}
  thrown in /***/vender/phpoffice/phpspreadsheet/src/Bootstrap.php on line 22

あら、、、
Composer autoloader could not be found

オンラインPC環境で構築してから転送する

他のPCで環境構築したものを持ってくるのは最終手段にしたかったが、仕方ない。
linuxで環境構築した一式をwindows側に持ってくる。
php -S localhost:8888 -t vendor\phpoffice\phpspreadsheet\samples


なんと、一撃だった。

肝心な使い方

おいおいと
https://symfoware.blog.fc2.com/blog-entry-2059.html
https://vertys.net/php-spreadsheet-often-use-process/
https://qiita.com/BRSF/items/ed32311d48161be7c719
https://blog.capilano-fw.com/?p=3945#i-16
https://qiita.com/sudnonk12/items/a0d58cc0f6ff1c6e2765
http://ariarijp.hatenablog.com/entry/2017/08/24/093000
https://knooto.info/php-phpexcel-vs-phpspreadsheet/
とりあえずサンプル+追記で今日はここまで。
<?php

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Style;

$spreadsheet = new Spreadsheet();

// Set document properties
$spreadsheet->getProperties()->setCreator('Adeno')
    ->setLastModifiedBy('Adeno')
    ->setTitle('タイトル')
    ->setSubject('件名')
    ->setDescription('コメント')
    ->setKeywords('キーワード');

$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$sheet->setCellValue('A2', '日本語はどう?');
$sheet->unFreezePane();


// Rename worksheet
$spreadsheet->getActiveSheet()->setTitle('シート1');


$sheet = $spreadsheet->createSheet(1);
$sheet->setCellValue('A1', '2枚めHello World !');
$sheet->setCellValue('A2', 'No');
$sheet->setCellValue('B2', '名前');
$sheet->setCellValue('C2', '単価');
$sheet->setCellValue('D2', '数量');
$sheet->setCellValue('E2', '小計');
$sheet->setTitle('シート2');

// スタイルを指定
$sharedStyle = new Style();
    $sharedStyle->applyFromArray([
        'borders' => [
            'top' => ['borderStyle' => Border::BORDER_THIN],
            'bottom' => ['borderStyle' => Border::BORDER_THIN],
            'right' => ['borderStyle' => Border::BORDER_THIN],
            'left' => ['borderStyle' => Border::BORDER_THIN],
        ]
    ]
);


$sheet->duplicateStyle($sharedStyle, 'A2:E3');

$sheet->freezePane('A2');   //1行目を固定

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$spreadsheet->setActiveSheetIndex(0);


$writer = new Xlsx($spreadsheet);

// Redirect output to a client’s web browser (Xlsx)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');


//$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
exit;
こんな感じ

2020年3月30日月曜日

メインPCの環境移行-2

メインPCの環境移行-2

また花粉の季節だ・・・。マスク売ってないし。大変だ。
仕事のあり方を考えないと、家庭とプライベートがおろそかになっちゃう。
メインPCもだいぶ慣れてきた。といってもそんなに使い込んでないけど。
まだ出来ていなかった、3Dプリンタやその他もろもろを移行してみる

FreeCAD

apt install freecad
で終わりだよねーと思っていたら
No module named WebGui
なんでしょうか??
忘れたなー。。。

オフィシャルからダウンロード

https://www.freecadweb.org/downloads.php
AppImageを実行する


Flathubからインストール


こっちでも良かった。
今後使って馴染んだ方にしようか。

AV1を再生したい

もとのPCにAV1の動画があった。
こっちで再生しようと思ったら、VLCで
Codec not supported: VLC could not decode the format “av01” (AOMedia’s AV1 Video)
となってしまった。
beta版では対応しているみたいなので、試してみた。
apt install snapd
sudo snap install vlc --beta
snap run vlc
出来たよかった!
https://askubuntu.com/questions/1196840/how-do-i-get-vlc-on-ubuntu-18-04-to-play-mkv-files
※こっちもFlathubでなんとかなりそうだった。

プリンタドライバ

3Dじゃなくて普通のプリンタの話。CanonのMG6330。
確かドライバの追加インストールなしで認識してくれたような気がしたけど。
http://continue-to-challenge.blogspot.com/2019/01/canon-mg6330linux.html
まぁこの手順通りでOK。 スキャナーは意外と使わないね。。。
スマホで写真でなんとかなるしね。

3Dプリンタ印刷ソフト

何を使ってたっけ?
http://continue-to-challenge.blogspot.com/2019/03/3d.html
思い出そう。

Cura

https://ultimaker.com/software/ultimaker-cura
これって、印刷ソフトじゃなくてスライサーソフトだったのね。

プリンタ追加

手順書に従いやってみる
https://cdn.shopify.com/s/files/1/1671/6015/files/Manual_for_HICTOP_3DP11_beginner-carol-Michael.pptx?17696024134433080466
pursa i3として追加。

設定

設定(プレファレンス) → Curaを構成する → プリンター → プリンターの設定
X幅:220mm
Y奥行き:270mm
Z高さ:200m
G-Codeの開始
G21 ;metric values
G90 ;absolute positioning
M82 ;set extruder to absolute mode
M107 ;start with the fan off
G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
G29 Z0 ;move Z autolevel <-追加
G1 Z15.0 F9000 ;move the platform down 15mm
G92 E0 ;zero the extruded length
G1 F200 E3 ;extrude 3mm of feed stock
G92 E0 ;zero the extruded length again
G1 F9000
;Put printing message on LCD screen
M117 Printing...

Repetier-Host

言語日本語にしたら余計にわからなくなったので、英語のままで。。。

プリンタの追加

  • PrinterSettings
    Port:/dev/ttyACM0
    Baud Rate:115200
別途ttyACM0をユーザーから使用できるようにしておく
sudo usermod -a -G dialout [ユーザー名]

プリンタの設定

材料ははPLAを使うので
  • Default Extruder Temperature:210℃
  • Default Headed Bed Temperature:55℃
などなど、前と同じ
https://continue-to-challenge.blogspot.com/2017/05/3dhictop-reprap-prusa-i33dp-08bk.html

オートレベルの設定

前と同じで「G29 Z0」を追加
https://continue-to-challenge.blogspot.com/2019/03/3d_13.html
でOKと思っていたが生成されたGcodeを見たら追加されてなかった。なぜだろう。
Slicer → Configuration → G-Code → Start G-Codeで「G29 Z0」を追記する
; Default start code
G28 ; Home extruder
G29 Z0 ;move Z autolevel <-追加
G1 Z15 F{Z_TRAVEL_SPEED}
M107 ; Turn off fan
G90 ; Absolute positioning
M82 ; Extruder in absolute mode
{IF_BED}M190 S{BED}
; Activate all used extruder
{IF_EXT0}M104 T0 S{TEMP0}
G92 E0 ; Reset extruder position
; Wait for all used extruders to reach temperature
{IF_EXT0}M109 T0 S{TEMP0}



テストしてみる

うさぎ
https://www.thingiverse.com/thing:600429


サンプルみたいにキレイに出力できるかな?
プリント時にX軸が衝突する・・・。なんでだっけ??
試行錯誤の結果、手動でautohomeを一度実施してから
開始することでなんとかなりそう。



出力したてのものがこれ



ブリムとか切り離してキレイにしたのがこれ



意外とキレイにできたね。

なんか作りたくなってきた。
マスク手に入らないから、出力してみようかな。
https://www.iguazu-xyz.jp/knowledge/trend_02