hubot-slack触った

今更ながらhubot触る機会があったので雑にメモ

インストール

Getting Started With Hubot | HUBOT

手順通りで良いんじゃないかな。 npm install -gはできるだけしない派なんだけどこういう解説って-g付けがち。

余計なhubot-scriptsなどが入るんで消してあげる必要はある.

coffee script

捨てた。src/scripts配下にjsでかけるのでそっちで対応。

slack

hubotのトークンだと出来ないことも結構ある。 やりたい事によってはレガシートークンが必要になっちゃうのはどうなのかな~って感じ。

後、チャンネル多いと見通しが悪くなったので雑に発言のリンク貼り付けさせてslackに展開させる感じのタイムライン的なものを作った。

リンクのURIは明言されてないけどこんな感じで良さそう

let room_id = res.envelope.room;
// res.message.subtype == 'file_comment'の場合はres.message.ts.replace('.', '')
let message_id= res.message.id.replace('.', '');
let url = 'ワークスペースのURL';

let archive_link = `${url}/archives/${room_id}/p${message_id}`;

slack - Get a message's ts value from /archives link - Stack Overflow

HomesteadでLaravel Dusk動かす

ここ見ればだいたい解決する

Problem running dusk on Homestead · Issue #50 · laravel/dusk · GitHubgithub.com

フォントも入れないと日本語使えないので注意が必要。

まとめるとこんな感じ

-- とりあえず必要っぽいのをぶち込む
sudo apt-get update
sudo apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4
sudo apt-get -y install chromium-browser
sudo apt-get -y install xvfb gtk2-engines-pixbuf
sudo apt-get -y install xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable
sudo apt-get -y install imagemagick x11-apps
sudo apt-get -y install fonts-ipafont-gothic fonts-ipafont-nonfree-uigothic
chmod a+x ./vendor/laravel/dusk/bin/chromedriver-linux

-- 仮想ディスプレイを適当に作成
Xvfb :0 -screen 0 1280x960x24 &
-- テスト実行
php artisan dusk

仮想ディスプレイはサービスにしておくと便利

sudo vim /etc/systemd/system/Xvfb.service

[Unit]
Description=X Virtual Frame Buffer Service
After=network.target

[Service]
ExecStart=/usr/bin/Xvfb :0 -screen 0 1280x960x24

[Install]
WantedBy=multi-user.target
chmod +x /etc/systemd/system/Xvfb.service
systemctl enable Xvfb.service

LaravelでスマホとPCの画面を分ける

レスポンシブだなんだ言ってもテンプレート分けること多い。 mod_rewriteで分岐するなり自前でUA確認するなりしても良いけど 端末確認してテンプレート変える程度なら以下のプラグイン入れて分岐するのが簡単。

github.com

インストールして

composer require jenssegers/agent

app/config/app.phpにプロバイダーとエイリアスを設定する

Jenssegers\Agent\AgentServiceProvider::class,
'Agent' => Jenssegers\Agent\Facades\Agent::class,

後はソース内で分岐してそれぞれのviewを表示する

<?php
$agent = new Agent();
if ($agent->isMobile()) {
    // mobile device
} else {
    // pc
}

リリースビルドはちょくちょくやろう

Androidアプリの開発時にdebugビルドだけで開発を進めてると いざリリースビルドって時にproguardの設定で躓きやすい。 沢山パッケージ入れてると何でコケてるのかわからなくなったりするのでちょいちょいproguard適用したリリースビルドが通るのか確認しながら開発を進めた方が良いよね。 毎回だとビルドに時間掛かるし夜にでも自動ビルドさせておくのが良いのかもしれない。

GitHubでForkしたプロジェクトをcomposerで取り込む

Forkしたプロジェクトに機能を追加して使いたい場合にはcomposer.jsonで見に行くrepositoriesをしてあげる。 requireのブランチ名にdev-のプレフィックスを付けるのが重要。

...
+  "type": "project",
+       "repositories": [
+        {
+            "type": "vcs",
+            "url": "ForkしたプロジェクトのURL"
+        }
+    ],
    "require": {
...
-       "Forkしたプロジェクトのcomposer.jsonに書かれているname": "*"
+       "Forkしたプロジェクトのcomposer.jsonに書かれているname": "dev-機能を追加したブランチ名"
    },
...

InfyOm Laravel Generatorのscaffoldを変更する

Laravel Generatoのscaffoldで自動生成したいけど

自動生成で作られるコードやデザインを変えたいって時は

resourcesにscaffold用のテンプレートぶち込んでおけば好きに変更できて便利。

# テンプレートをinfyom.laravel_generator.path.templates_dirに持ってくるコマンド
php artisan infyom.publish:templates

# テンプレートを好みに編集する
vim resources/infyom/infyom-generator-templates/scaffold/controller/controller.stub

# 編集したテンプレートを使って自動生成が行われる
php artisan infyom:scaffold Hoge --fromTable --tableName=hoges

現状だとテンプレートを設置した場合はswaggerを有効にするとまともに動かないので注意が必要。

get_templateでswagger-generator/templatesを見に行かなくなってしまうのが原因なのはわかるけどプルリク送れないチキン野郎。

LaravelでAdminLTEな管理画面を作るにはLaravel Generatorが良さそう

個人的にLaravelで管理画面作る時にAdminLTE使って作る事が多いからどうやるのが良いのか調べてみた。 普段は前に作ったプロジェクトから持ってきて~見たいな駄目な方法で運用してた。

bowerとかでインストールして普通に作る

まぁ特に言うことは無い。

AdminLTE持ってきてbladeで使える感じにheaderとか区切ってく感じ。

テンプレートに使うってだけで用意した後は普段通りに実装が出来るのでテンプレート用意した時点のリポジトリでも作っておけば楽ちん。

以下のページがよくまとまってる。

https://almsaeedstudio.com/blog/integrate-adminlte-with-laravelalmsaeedstudio.com

qiita.com

InfyOmのLaravel Generatorを使う

labs.infyom.com

Laravelの弱点(と勝手に思ってる)scaffoldが素敵に出来る。

scaffoldのCUIが一行ずつで面倒だけどDBの定義から取ってくるオプションがあったりGUIで操作できる物を作成中だったり素敵。

AdminLTE以外にもmetronic等などのテンプレートに対応しているので素敵。

使い方は普通にドキュメント見るのが良いかと。

labs.infyom.com