もやぶろ

moyashidaisukeのブログだからもやぶろ。フリーランスのエンジニアのダイスケです。QOLあげて色々楽しくチャレンジして良く生きたい。プログラム関連とかギター関連とか旅行関連とか色々。

wordpressのビジュアルエディタを本物に見た目あわせる

bge.jp

ぐぐるといくつか記事が出てくるのだけど、この方法が一番良いと思う。

基本、どれも専用のcssを用意して、functions.phpで読み込ませよう、なんだけど、 次の工程が元のcssをコピペしよう、となっているのがwordpress界隈の闇。

元のcss変える度にコピペしないといけないじゃん、、、、

本番(実際にユーザーに見える画面)で@import使うと悪影響があるけど、これは管理画面用途なので気にせずOK。

dev.classmethod.jp

CloudFormationでRDS:DBParameterGroup で名前が指定できない

docs.aws.amazon.com

ありません。 Descriptionを駆使するしかない。GUIからは(コンソールで手動で作った場合)は指定できるのに、CloudFormationからだと指定できないの、何でだろう、、、

20171216社畜王ランスインスト事業部 ライブ

ライブでしたー。 このバンドのライブも確か4回目。今回はインスト縛り。

  1. ゼス崩壊 / RanceVI -ゼス崩壊-
  2. Diving into the dungeon / ぱすてるチャイムContinue
  3. 大メドレー
    • 自由と平等と正義と / 大帝国
    • 大悪司改 エデン / 大悪司
    • Take me to the another world / 大番長
  4. courageous survivor / ももいろガーディアン
  5. Carried Out / 妻しぼり
  6. 456メドレー
    • Atlach=Nacha ~going on~ / Atlach=Nacha
    • 人間狩り track8
    • 零式 track6 (通称:戦闘)
    • Type Zero / Alice Sound Collection III
  7. 久遠の果て / 超昂閃忍ハルカ
  8. My glorious days / Alice Sound Collection VII

いつものブラック会社採用写真風写真 f:id:moyashidaisuke:20171217233052j:plain

ギターの弦の遍歴

使っているギターの弦と過去の弦の話とか

今使ってるやつ

www.soundhouse.co.jp

後述のNANOWEBを前使っていたが、こちらの方がよりナチュラル(コーティングされてる感が少ない)で素直な印象。 コーティング弦で長持ちなのにギラギラ感がちゃんとある。その分、ヘタってきた時の音の違いがはっきりわかる。

太さはここ10年くらい10-46。太い方が音的に好きなんだけど、これ以上太いと弾けないのでこれくらいで。

過去の

www.soundhouse.co.jp

3年くらいこれだった。ギラギラ感が少なくて落ち着いた音になるけど、アンプとかの音作りでカバーできる範囲。 社会人になって、時間を有効に使う必要性が高まり、弦交換する時間をギター弾く時間にあてるために乗り換えた。最初は高く感じるが、弦交換にかける時間を考えればこちらの方が安い(社会人的発想)。社会人は時間をお金で買うのだ。 今剛さんとか、1曲で替えるみたいな話もあるけど、アマチュアにはそんなの無理なので、効率よく時間を使おう。

www.soundhouse.co.jp

5年くらいこれだった。張り替えた直後の音が好きだったけど、すぐへたる。比較的安かったのでずっとこれだった。

コードを書くのが速い人/遅い人 その1:ログの読み方

ペアプロっぽい感じで一緒にデバッグする機会で得た知見の話。
完全に個人的見解だし、まとまってないポエム的なものなのでQiitaじゃなくてこっちに書いておく。


ある程度の実力と経験値があるエンジニアなら、問題解決の型をもっていて、新しい言語なりFWなりに触る時に早くキャッチアップできる力になっていると思う。
そういった型に対する考察。

何か開発しててうまく動かないときの追い方

自分の場合、大体以下の通り。

  1. エラーが発生する
  2. ログを確認する
  3. 複数箇所、複数行にまたがっているログから本質的なものを探し出す
  4. ログを元に、コードを確認するなり、エラーコード、エラーメッセージを調べるなりして対応する(ケースバイケース)

この3が苦手な人が多い印象。

StackTraceとかだと長々としたログが出ているが、大体一番下か一番上にエラーの内容が書いてある。(複数行のパターン)
この勘所がないと、長いログを上から下まで読んで、よくわからない、という結論になってしまいがち。

また、ブラウザからAjaxを叩く系の処理だと、本当はサーバ側でエラーが出ているのに、ブラウザのエラーを永遠と解析しようしていたりする。(複数箇所のパターン)


で、普段からログを読んで問題解決していく癖が無い人が書いたコードは、エラー時の情報が少ない事がよくある。

try (
// 何か処理
} catch (Exception $e) {
   error_log("失敗しました");
}

みたいなコード。黙ってExceptionをそのまま投げてくれればいいのに、、、、

ブログを書こう

Twitterでとても良いつぶやきを見たので、心を入れ替えようと思います。


しょーもない話も多くなるかもしれませんがよろしくお願いします。
趣味の音楽関連の話も書いていきます。

ひとまず、サイドバーにTwitterを追加しました。
手順はこちらにこれ以上無いくらい詳しくのってました。デフォルトだと縦に長過ぎたので、heightは500にしています。
www.mutant-tetsu.com

転職して5ヶ月たったので振り返り

2017/2末に転職して、気がついたら5ヶ月過ぎてたので、なんとなく振り返りしてみる。

転職した時の記事
moyashidaisuke.hatenablog.com


5ヶ月間にやった事
  • 技術的負債との戦い(一番熱いところなので、そのうちちゃんと報告したい)
  • マネジメント系
    • スクラムチーム立ち上げ -> そのままスクラムマスター(今は別の人に引き継いだ)
    • 採用関連もろもろ
  • 勉強会
    • LT2回しゃべった(もう少し増やしたい)

転職する時に考えてた、やりたい事はまあまあできてますね。

5ヶ月間にできるようになった、チャレンジした事キーワード(技術系)
  • AWSでサーバ環境一通り
    • 前職ではインフラチームまかせだったのを、一通り自分でやった
  • AWS Lambda
    • ちょっとした処理書くのにはめっちゃ便利
    • サーバレスサーバレスと騒がれるのもわかる。色んな悩みから解放される。(別な悩みが増えるけど)
  • 監視系
    • Mackerel
      • 導入簡単で楽ちん
    • NewRelic
      • めっちゃ高機能で感動するけど高い。パフォーマンス周りの解析はほんとすごい
  • SalesForce
    • バックオフィス系で使ってるのでちょっとだけ触った。ぶっちゃけ全然好きじゃないけどよく出来てる。
  • DDD
    • LaravelでDDDで色々作ろうとしてる
  • Deployer
    • PHP製のデプロイツール。shellでもできるんだけど、PHPのデプロイはPHPだと何かと楽。
  • Slack
    • 色々連携できて便利
    • GitにpushしたらCI流してデプロイしてSlackに報告される流れまで作った
    • サーバ監視も業界NewsもGitのコミットもJiraの変更も全部Slackへ
  • Mautic
    • OSSのMA(マーケティングオートメーションツール)
    • 細かいとこが荒すぎるけど
    • 商用のMAツールがめっちゃ高いので、導入コストの低さは魅力的だけど、コード追わないと仕様がさっぱりわからないし、バグが多すぎて運用コストがかさむ

色々やってますが、サービス使う系ばっかり。環境系だとDockerの機運が個人的に高まっている。
システム環境は5ヶ月に比べてかなり改善されつつあるので、そろそろもっとコード書いてばりばり作っていきたい今日このごろ。

転職します

2017/2/23付けで前職を退職しまして、2/27より株式会社みんれびで働く事になりました。


あらすじ

前に転職したのは2012の秋頃なので、約4年半も勤めた事になります。
moyashidaisuke.hatenablog.com

その前も約4年だったので、私の転職周期は4年くらいのようですねw

4年半で経験できた事、できるようになった事

  • 初めてBtoCのサービスに携われた
    • Excel方眼紙からの開放
  • ゲームを初めて作った
    • 当時はいわゆるブラウザゲーだったので、ものすごいスピード感での運用をした(イベント開始後に演出変更したり、一日に10回くらいデプロイするとか普通だった
    • 最先端のスマホのアプリに携われた
    • デザイナーさんがたくさんいる環境は初めてだった
    • AWSベースのLAMP環境で、サーバもクライアントもやったので、知らない知識・技術がいっぱい身についた
      • 高トラフィックをシャーディングしたMySQLでさばきつつ、RedisやらAPCやらキャッシュしつつ、負荷に合わせてサーバ追加したり
      • HTMLとCSSで頑張ってアニメーション作ったり
    • 少人数で回してたので、サウンドとかシナリオとかに口出したり、勝手に演出追加したり
    • KPI見ながらすごいスピード感でPDCA
  • Unityでゲーム作るようになった
    • 新規アプリに携われた
      • BGMに勝手にギター入れたりしてた
    • 相変わらずクライアントもサーバもやっていた
    • 某スマホ用コントローラーIFを作って特許取った
    • 大阪の子会社に出向して、自分が小学校の時にやってたゲームを作ったレジェンド達と一緒に仕事できた
      • 色々自動化したりテストコード書くようにしたりやりたい放題やらせてもらえた
  • お陰様で会社で出しているアプリも人気
    • 人気がある分負荷もものすごい事になり、TVCMやリリース前後の火消しでサーバ負荷対策
    • 会社も非上場->マザーズ上場->一部上場。人数もすごい事に。
      • 優秀な人がすごい勢いで集まってくるようになった
    • 休みの日や旅行中でも会社のCMが流れる体験
  • サーバ側の新FW選定
    • 数年分の負債を返す作業
  • お陰様で給料もすごく上がった

4年半でできなかった事

  • 社外で勉強会行ったり何か作ったり
    • 忙しくてそれどころでは無い
    • 社内でやってる事が割りと最先端なので、業務に真剣に取り組んでいればある程度までは大丈夫だった。でもある程度まで。
  • ゲームじゃないサービスをやりたかった
  • 出世
    • 平で開発しまくる道を敢えて選んでいたので仕方が無い面もあるが、社内制度とかもっと改善したかった
  • 脳筋じゃないスマートなプロジェクト運営
    • 体力が必要なフェーズもあるが、ずっと全力疾走はできない

次の4年半でやりたい事と転職理由

できなかった事の裏返しになってしまうですが、ゲームじゃないサービスにじっくり取り組んで見たかったのが一番大きいです。
あと、もっと組織に食い込んで影響範囲広げつつ、社外でももっと活動したいと思っています。

最後に

入社した時は、そもそもMac全然使えない、コマンドもろくに叩けない、頭でっかちで技術が追いついていない、というそれは酷い状態だったのですが、
お陰様で技術力もいっぱいついて(入社時に比べれば)、貴重な経験もいっぱいさせてもらって、
あっという間に走り抜けた4年半だったと感じています。

関わった皆様には本当に感謝しています。ありがとうございました。

1ヶ月も有給消化期間も頂いて、英気もばっちり、また頑張るぞ~

mixiのボイスを全部消すscript作った

mixiにはボイスという、twitterそっくりな(昔はエコーと呼ばれてた)機能があるのですが、
これの全削除機能がありません。
mixi.jp
mixiの呟きを一括削除できる方法な無いのでしょうか?昔のつぶやき... - Yahoo!知恵袋


twitter連携とかしてて、千、万の単位になってたら手作業で消すのはめちゃめちゃ大変です。

というわけて、mixiをスクレイピングするやつを途中まで作ってたのを利用して削除するやつ作りました。

ちなみにtwitterはこういうのがあります。
http://kurorekishi.me/cleaner/getstartedkurorekishi.me

# -- coding: utf-8
require 'rubygems'
require 'mechanize'
require 'kconv'

# setting
DOMAIN = 'https://mixi.jp'
MAIL = ARGV[0]
PASS = ARGV[1]

if MAIL == nil || PASS == nil  then
  puts '2ARGS is require'
  exit 1
end

agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'

# ログイン
agent.get(DOMAIN)
p 'login'
agent.page.form('login_form').field('email').value=MAIL
agent.page.form('login_form').field('password').value=PASS
agent.page.form('login_form').submit

# トップページ
agent.get(DOMAIN + '/home.pl')
p 'top'


for num in 1..100 do
	page = agent.get(DOMAIN + '/list_voice.pl')
	p 'voice'

	#<a class="deleteIcon " href="delete_voice.pl?post_time=20161022191342&amp;redirect=list_voice.pl&amp;post_key=648078d3c3351838fb69737f14e1b2e3f59328f9">削除</a>
	elements = page.search('a')
	elements.each do |ele|
		if ele.get_attribute(:class) == 'deleteIcon '
			deleteHref = ele.get_attribute(:href)
			agent.get(DOMAIN + "/" + deleteHref)
			p deleteHref
		end
	end
end 


リポジトリ
github.com

【Laravel】【PHP】herokuでlaravelデプロイメモ

ちょっとしたscriptを作ったのだけど、みんな使いたいとの事で急遽Webアプリケーションへ。

PHPが動いてMySQLが動いて無料で簡単に使えるのもの、という条件でHerokuへ。

2ヶ月前の事で、ちゃんとメモもとってなかったので汚いですが、せっかくなので公開はしておきます。



参考
ローカルのphpのバージョンが古くてLaravel5.1が入らなかった
takemaru123.hatenablog.jp

料金体系確認
tdenc.com

Laravel動かすよ
qiita.com


remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Failed to detect set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/php.tgz
remote: More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to bandoffcount.
remote:

buildpackでエラー、、、
git - Push rejected, failed to detect set buildpack heroku/php - Stack Overflow


Herokuのログ見る
qiita.com



できたもの

bandoffranking

コード
github.com

nokogiriとMechanizeでスクレイピングその2

前回の続き
nokogiriとMechanizeでスクレイピングその1 - moyashidaisuke's diary


文字コードをちゃんと設定してないせいか、\nがたくさん出てる。=>gsubで無理やり置換しました。

now_updated = div.inner_text.gsub('\n', '')


class指定で取得するときに、div.class の形式だと部分一致で取れる。
div[@class="class"] だと完全一致になる。
http://www.engineyard.co.jp/blog/2012/getting-started-with-nokogiri/


スクレイピングのスクリプト自体はほぼこれで完成。
残りは、サーバーにのっけて定期的に実行し、どこか(メールとかTwitterとか)に連携する。

HTMLのプレゼンテーションライブラリ

PowerPointKeyNoteもいいですが、

  • 有料(Google DocsOpenOffice.orgなら無料ですが。。。)
  • バージョン管理しにくい
  • 使用しているPCに環境依存

という弱点があるので、HTML/CSS/jsベースのライブラリを調べてみました。

HTMLベースで作成できるプレゼン用スライドのまとめ | コリス
HTML/CSS/JavaScriptでプレゼンテーションを実現するライブラリまとめ - NAVER まとめ


ざっくり調べてみた感じだと、reveal.jsが良さそうなのでこれ使ってみます。

  • 演出がかっこいい
  • PDF出力がすぐできる(SlideShareとかにアップできる)

reveal.js - The HTML Presentation Framework
JavaScript - なんかかっこいいプレゼンテーションテンプレートを探しているならreveal.js使ってみろって - Qiita

SIerも自社サービス系も同じIT業界と呼ぶのはもうやめよう

SIerが「IT系」の代表格とかいう日本の風潮
SIerって終わってんな
コーディング技術にこだわり過ぎるとITエンジニアの地位は向上しない - プロマネブログ


ここらへんを読んで。

自社サービス系ってのはいわゆるWeb系とか、自社のプロダクトをもってる会社とか。

この2つを両方IT業界と言っちゃってるのがそもそもの間違い。
一番違うのはビジネスモデルの違いかと思ってます。



■SI業界
受託で主に業務システムを作る
発注者がお客様
営業が案件を取ってきて、見積もりベースでお金を払う
できるだけ大きな見積もりで案件を取り、できるだけ安いコストで作れれば利益が上がる
要は人月ビジネス
⇛営業や、派遣社員達の取り扱いがうまい人が会社にとって価値がある


■自社サービス
何らからのサービス、プロダクトを作る。
エンドユーザーがお客様
使った人が満足すればお金を払う
コストは安いに越した事は無いが、できるだけ良い物をつくれば利益が上がる
⇛良い物を作れる人が会社にとって価値がある


極論で二項対立で書いちゃってますが、当然例外は有り。

一見、設計したりコード書いたりしてるので同じ業界に見えますが、ビジネスの手段が違うので比較してもあまり意味が無い。

CentOSでapache起動してもブラウザアクセスできない時

ちょっと遅目ですが、chef+Vagrant触り始めました。すごく楽しいです。


centOSで、とりあえずapacheいれたけど192.168.33.10 でアクセスしたけど何もでない場合、iptablesの設定が邪魔してる可能性があります。(デフォルトだとこれにひっかかる)

ローカルで動かす分にはいらないので止めちゃいましょう。

https://github.com/pakiln/chef-repo/tree/master/site-cookbooks/iptables_stop



色々な手順を参照してると意外と抜けてたりする。