考える×つくる×動かす

主に技術系のことを書いていきます。

2018年の目標

新年の計は元旦にあり
ということで2018年度の目標をきちんとブログに書いてアウトプットしておこうと思います。

2017年は激動なくらい色々な事がありました。
その中での反省とかを踏まえて2018年は大きくは以下の5個の目標を立てました。

  1. エンジニアとしてきちんとしたわかりやすい基盤を作る
  2. 料理人としてアウトプットを出して何かしらの場を作る
  3. 家の環境を整える
  4. 健康管理を引き続き頑張る
  5. 新しいことにチャレンジする

1. エンジニアとしてきちんとしたわかりやすい基盤を作る

今まではマネジメントだったり、データ分析だったり、拠点立ち上げとか
限られた会社内でしか通用しないをやってきたけど、
市場からもわかりやすい技術をきちんとインプット+アウトプットするようにしたい。

具体的には以下の技術にフォーカスしようと考えています

アウトプットの方法としては - 自分のサイトをきちんと作る (今はドメイン取って、AWS上にEC2追加してnginxとSSLの設定したくらい)

https://kazupyong.com/

  • hatenaブログにアウトプットを書く

考える×つくる×動かす

  • Qiitaに技術情報を載せる

kazupyong - Qiita

  • githubできちんと草を生やす

kazupyong (kazupyong) · GitHub

RebuildFMとかGoRailsとかの技術系ポッドキャストを聞いたり、
WebDBプレスとソフトウェアデザインをきちんと読んだり
インプットだけじゃなくてアウトプットも積極的にやっていきたい。
あとは勉強会にも積極的に参加したり開催したり、発表したりも一応の目標。

2. 料理人としてアウトプットを出して何かしらの場を作る

自炊とかホームパーティーとかで作ったものをしっかりと記録に残したい。
今までは作りっぱなしだったけど、それをきちんと分かる形でアウトプットしたい。
あとは知り合いのBarを月1とかでお手伝いするかなと計画中。

アウトプットの方法としては

  • 自分のサイトにRails+Vueとかで簡単なブログチックなもの作ってそこに上げるようにする。

https://kazupyong.com/

3. 家の環境を整える

昨年はDIYでテレビや自転車を壁掛けにしたり、キッチン周りの収納作ったり、ベッドを作ったりした。
夏場に水耕栽培にチャレンジしてみたけど、長期旅行の結果枯れてしまった。

今年は水耕栽培に再度チャレンジしたり家でも仕事できる環境をDIYで作りたい。
あとはRaspberry PiAmazon Echoで家の家電を操作できる環境を作ったり、
Raspberry Piソーラーパネルを使って水耕栽培自体の自動化とかログをとったりしたい。

4. 健康管理をきちんとする

今の健康管理は

  • Apple Watchで日々の歩数と心拍数と運動量の自動管理
  • Withings Scaleで体重と体脂肪の自動管理
  • Withings Auraで睡眠時間と睡眠の質の自動管理
  • Google Timelineで訪問場所等のログの自動管理
  • Apple WatchとRuntasticでのサイクリングログの記録
  • Apple Watchで水泳のログの記録
  • AnyTimeでジム訪問数とLFConnectでマシントレーニングの記録

自分的には大分自動化できているので今後も引き続いて健康ログの管理をする。

体脂肪率が18%なので12%くらいまでには落としたい。
体重は自転車通勤しているお陰で大体理想くらいだけど、
12月に体調崩すことがあったので暴飲暴食はやめる。

5. 新しいことにチャレンジする

フルマラソンに参加

2月に東京マラソンなので体をきちんと仕上げる

ロードバイクレースに参加

今のところ予定はないけどどっかで参加する

オープンウォーターの大会に参加

今のところ予定はないけどどっかで参加する

青色申告

ちょっと手違いで確定申告しないといけなくなったのできちんとやる。

英語の勉強する

最近英語を全く使ってなくて、
年末に海外の方とお話したときに、英語力の低下を実感したので

BBQとかキャンプに行く

去年はあんまり行けなかったので今年は行く。
あと道具をきちんと整備する。

おまけ

Twitterで見かけたいい言葉だと思ったのでShare

ってことで2018年も頑張って生きていこうと思います!

本番で動いているWordPressをMacのローカルで動かす方法

ちょっと非エンジニアに何度か聞かれたので個人的なメモ

MAMPのダウンロード+インストール

https://www.mamp.info/en/downloads/

本番のデータをコピー(ファイル)

本番でpublic_html 以下をダウンロードする。
(これはエンジニアがサーバー上でtar.gzとかでまとめてあげて直接渡すのが良さそう)
/Applications/MAMP/htdocs/ に展開しておく

本番のデータをコピー(DB)

(これもエンジニアがサーバー上dumpを取って直接渡すのが良さそう)
MAMPの設定パネルのphpMyAdminから
新しいDB(sample_wp)を文字コードutf8_general_ciを作成してDumpしたDBをimportしておく

Wordpressの設定ファイルを変更

/Applications/MAMP/htdocs/wp-config.phpを以下に変更

define('DB_NAME', 'sample_wp');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost:8889');

ローカルなのでデフォルトのままです。
セキュリティーに拘る人はDBのユーザーを新規で作る方がいい。

DBの設定を変更

MAMPの設定パネルのphpMyAdminからwp_optionsの siteurlを http://localhost:8888 homeを http://localhost:8888 に変更する

MAMPでhtaccessを有効化する

/Applications/MAMP/conf/apache/httpd.conf

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride All         ←"None"を"All"に変更
</Directory>

.htaccessの設置

/Applications/MAMP/htdocs/.htaccess に以下を記述して作成する

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

MAMPを再起動する

セキュリティーを考えるとwp-config.phpのSALT値を変えたり、
DBのユーザーをrootから変えたり、記事内で絶対パスで記述されてる場所をローカルURLに置き換えたり
バーチャルホストで動かしたり色々あるけど一応これで最低限動くはず。

ISUCON2014予選に参加してみた

チーム名:「/^o^\マッミョサーン」
最終スコア:26890
チームメイトはid:kazuphと@kokonoka

詳細はid:kazuphが書いていてくれるので割愛します。


ISUCON2014予選でがんばってきた - 僕の車輪の再発明


9月の頭に昨年の過去問を1回4時間くらいやって傾向と対策を練っていました。

基本的なスタンス

・nginxやmysqlのログを見て遅い部分のボトルネックを解消
・インデックスは貼る前と貼った後のEXPLAINをみながら貼っていく
・DBの構造とかを変更
・ロジックで減らせるクエリは極限まで減らす
ミドルウェアに手を入れたりは最後までしない
・最後にキャッシュ出来る部分はキャッシュする


そのおかげで変なエラーが出てベンチマークとか動かない(´・ω・`)とかなくて
基本的には成功法で攻めることができたはず。

やったこと

・全体のロジックを確認
・3回以上ID,PASSを間違えたipアドレスをブロックするipsテーブルを追加
・10回以上ID,PASSを間違えたユーザーをブロックするunlock_usersを追加
・初期で上テーブルにINSERTする初期スクリプトを作成
・usersに最新ログインの日時+IPアドレスを加えた
・login_logを使わなくした
mysqlの設定ファイルを秘伝のタレを利用した
・自分たちで新たに加えたテーブルにインデックスを貼った
・WORLOADが増えるとTCPでTIME_WAITが発生してPORTが専有されてしまうのを解決した

ハマったところ

・login_logのロジックを確認しつつテーブル分割するかキャッシュを使うか決めきれなかった
→これで午前のほぼ時間を費やしてしまった。。
・お昼ごはんのメニュー(結局寿司食べたく出前とった)
・/loginのエラー時にリダイレクトされるのを減らすためにnginxで静的ページを返したかった
MySQLのバージョンアップ(最後で5.6系に変えようと別インスタンスでテストしたけどエラー出て動かなかった)

反省点

・もっとはじめにベンチ前にく初期投入データを見ておくべきだった(これがランダムだと思ってた)
・全体ロジックを確認してUSERSをキャッシュ化してしまうべきだった
・パスワードのHASH処理を始めに計算にしてDBに入れておくべきだった
・nginxでCookieの値を持ってこれるそしてその値を見て静的ページを返せばよかった
・土曜朝じゃなくて金曜朝に海外から帰ってきて万全の状態で挑むべきだった(言い訳ですがw)


今回基本的にはid:kazuphがほとんどコード書いてくれてた。
自分ももっとさくっと書けるようにならないとと反省。


1年強振りのブログ記事でした。
詳細とMySQLの秘伝のタレに関しては別エントリ書きます。

mroongaで「ERROR 1005 (HY000): already used name was assigned:」の対処

MroongaでTokenizerをMecabからTokenBigramSplitSymbolAlphaDigitに変更する際に
インデックスのDropでエラーが出てしまい強制的に中止した。

これがまずかったのか、
その全文検索のインデックスが存在していないにもかかわらず、
再度インデックスを貼り直そうとした際に、

ERROR 1005 (HY000): already used name was assigned:

というエラーが発生するようになってしまった。

groonga /var/lib/mysql/database.mrn
>table_list

でMroongaのtable_list情報を確認した所しっかりと残っていた。

http://groonga.org/ja/docs/reference/commands/table_remove.html
の情報を参考に

>table_remove index_name 

でMroongaのtable_list情報を削除したら無事インデックスを貼り直すことができました。


以下バージョン情報です。

mysql Ver 14.14 Distrib 5.6.11
groonga(mroonga) 3.0.3

人生で大事なことは大体自転車から学んだ。

・一歩ずつ前へ前へペダルを漕ぐだけで大概の場所に自分の力で行ける
・長くてきつい上り坂は永遠には続かない
・楽な下り坂も永遠には続かない
・頂上から見る景色は物凄い綺麗だ
・下り坂に入ったときにブレーキを掛けながら下りないと転んで怪我することもある
・距離は短いけど急な坂もあれば距離が長くゆるやかな道もある
・毎日のメンテナンスが安全やパンクを防いでくれる
・自転車本体の良し悪しはあるけど結局は自分の体力次第
・長距離の自転車に乗る場合はペース配分を考えないと途中でバテてしまう
・食べ物や水はある程度ストックしておかないと大変なことになる
・いくら遠回りしたって足を止めないで漕ぎ続ければ目的地には到着できる