aoma blog

エンジニアの日常とか技術とか

デブサミ2020に行ってきた!

行ってきました!デブサミ2020の1日目! 寝坊しちゃって午後から参戦。ランチセッション逃したー。涙

event.shoeisha.jp

参加したセッションの一言メモ

13-D-5 ともにつくる「DX」〜事業会社、スタートアップ、グローバル、そして・・・「あなた」〜

株式会社Insight Edgeは住友商事グループのDXを推進するエンジニア集団だってことはわかったが「DX」はなんなのかよくわからなかったぜ!

13-A-6 GitHubMicrosoftが機能リリースする舞台裏

カナリアリリース大事。なんでもチャットbotがやっちゃう。リリーストレイン?それリリースブランチのことちゃうかー?

13-B-7 コンテナをシンプルに使おう 〜 Cloud Run のすゝめ 2020 冬

Cloud Run使ってみよー!そのためにもまずはコンテナの学習が必要だ。がんばれ俺!いや俺にはApp Engineで十分な気もする。独自コンテナなんて俺には必要ないし!

13-E-8 チームをつくるモブプログラミング ~内側と外側から語る~

モブプロはいいぞ!

今回のデブサミで一番驚いたこと

雅叙園のトイレ縮小してる!!

f:id:aoma23:20200213225605j:plain

小便器が橋の手前に!!

比較:人生一度は行きたい!目黒雅叙園のトイレ。 - aoma blog

明日も楽しみましょー!

CUNEの地獄袋 開封の儀

地獄袋、運良く抽選に当たりましてGETしました!

CUNE 地獄袋 2020のチケット情報・予約・購入・販売|ライヴポケット

サイズはざっくり「小さめ」と「大きめ」の2種類とのことで、「大きめ」を選びました!

これより開封の儀をとり行う

いきます!

  • デニム
  • ジップパーカー×2
  • パーカー
  • ヘアバンド×4
  • ペンケース
  • ハギレ×2
  • 入場チケットバンド
  • 初音ミクコラボタグ多数
  • ポストカード多数
  • 20と描かれたペロペロキャンディ
  • ボールペン1本
  • 結束バンド1本

かなり嬉しい結果でしたー!
CUNE好きだな。

追記

ちなみにパーカーにはワレメとヤブレがありました。

GitHubPages&Jekyllで日本語フォントを変更したい

半分グチです。

GitHubPagesはJekyllと連携してます。

GitHubPagesの設定画面でJekyllのテーマを選んでサクッといけてる感じのサイトを作れます。

で、選んだテーマの日本語フォントがいけてない(というか海外製だから何もしてない)ので、変更したかったんですよ。

当然ググりますよね。結果よくわからん!ってなりましたという話。

ググったよ

まずGitHubPagesのヘルプにたどり着きました。 _config.yml でたいていの設定は上書きできるぜと。おお素晴らしいと。 詳しくはJekyll本家のサイト確認しろと。

でJekyllにいきますよね。 当然お目当てのピンポイントなページには到達せつ、その中で探すことになります。 するとまずRubyで環境構築せいと。 いやいや、GitHubPagesと連携してるんで、環境構築とかしたくないからこれ採用しようとしてるんだと。 で読み込みますよね。

結果よくわからんと。 最終的に上書きするなら選んだテーマのREADME見ろって書いてあるわけですよ。

いやいやちょっと待てよと。 そもそも気分によって半年に1回とかサクッと見た目を変えたいから「テーマ」を選んでるわけですよ。 その度にいろいろ設定上書きを調べろというのかい? テーマを気軽に変更したいからこういうサービスを選んでるんですよ?と。

かれこれ1、2時間調べましたよね。でもう諦めました。

結論

GitHubPagesとJekyllに丸投げしてるのがよくない。 Jekyllもしっかり連携しろと。 お互いが協力してわかりやすいヘルプページ作ってください。いやマジでお願いします。 Rubyで環境構築とか抜きにした、GitHubPagesで選べるテーマだけに特化したヘルプページを。

【エン痔ニアの職業病】おしり障害報告書

先日、おしりが気になるので病院に行ってきました。
はたして痔なのか気になりまして。。
きっとエンジニアで同じ悩みを抱えてる人は多いと思うんですよね。座りっぱなしの職業ですから。でも、

  • 恥ずかしくて病院に行きづらい
  • 黄門様を誰かに見られるなんてイヤ!
  • 炎上プロジェクト中で行きたくても時間がない(お尻も炎上してるのに)

といった理由で一歩を踏み出せない人もいるのでは?
なので恥ずかしいけど参考になればと思い、書きます!

おしり障害報告書

現象

  • 便をした後キレイにしたにも関わらず、数分後に肛門が汚れている
  • 残便感がある(肛門付近に残ってる感)

原因

  • ウォシュレットのしすぎ
  • いぼ痔が大きくなっていた

詳細(病院でわかったこと)

  • そもそもお尻はすこし穴が空いている
  • 左右のいぼ痔で穴を塞いでいる(いぼ痔は誰にでもあるのが普通。大きくなると問題)
    • これでうんちがストップする
  • いぼ痔は水をストップするようには出来ていない
  • キレイにしようとしすぎて長時間ウォシュレットしていた

    • 肛門内に水が入り残る
    • 数分後に出てきて汚れる
  • いぼ痔が大きくなっていた

    • 違和感が残便感に感じた(便ではなかった)

対策

  • ウォシュレットをやめる
  • 拭きすぎない
  • 1〜2分でトイレから出る(座りすぎは痔に良くない)
  • いぼ痔を小さくする注射をした

さいごに

症状や原因は人それぞれです。
重い病気の可能性もありますので、勇気を出して早めに病院に行きましょう。

JavaScriptで一覧ページの画像URLを全て取得する

稀に、一覧ページとかに表示されてる画像URLを全て取得したいとき、あるよねー!

そんなときは Chromeデベロッパーツールを使いましょう。

JS pathを取得

Copy JS pathで取得

document.querySelector("#qurireco > article:nth-child(1) > a > div > div._7uaWVw_YSgf_GKoctUM12 > span > img")

こんな感じ。

f:id:aoma23:20191125160708p:plain

getAttributeで画像URLが取得できることを確認

Consoleタブに貼り付けて確認してみる。

console.log(document.querySelector("#qurireco > article:nth-child(1) > a > div > div._7uaWVw_YSgf_GKoctUM12 > span > img").getAttribute("src"));

JS pathの規則性を探す

document.querySelector("#qurireco > article:nth-child(1) > a > div > div._7uaWVw_YSgf_GKoctUM12 > span > img")
document.querySelector("#qurireco > article:nth-child(2) > a > div > div._7uaWVw_YSgf_GKoctUM12 > span > img")
document.querySelector("#qurireco > article:nth-child(3) > a > div > div._7uaWVw_YSgf_GKoctUM12 > span > img")

nth-childのカッコ内の数字が違う感じだなー。

ループさせる要素を見つける

上記でみつけた規則性から下記要素をループすれば良さそう。

document.querySelectorAll("#qurireco > article")

素数を確認

念の為件数を確認。

console.log(document.querySelectorAll("#qurireco > article").length);

ループして出力

var elements = document.querySelectorAll("#qurireco > article");
for (var element of elements) {
  console.log(element.querySelector("a > div > div._7uaWVw_YSgf_GKoctUM12 > span > img").getAttribute("src"));
}

クリップボードにコピーするのも良き

var elements = document.querySelectorAll("#qurireco > article");
var list = [];
for (var element of elements) {
  list.push(element.querySelector("a > div > div._7uaWVw_YSgf_GKoctUM12 > span > img").getAttribute("src"));
}
copy(list.join("\n"));

かんたんですね!

PHPer がはじめて Tour of Go を学んだときのポイント24選

Goって興味はあったけど全然触ってこなかったaomaです。

Goには A Tour of Go という、これをやればGoマスターになれるステキサイトがあります。

A Tour of Go

普段PHPに慣れている中で、ムムッ!?っとなった点を目次別にメモしました。
PHPerでこれからGoを学ぶよって人の助けになれば幸いです。

Packages, variables, and functions.

Flow control statements: for, if, else, switch and defer

More types: structs, slices, and maps.

  • ポインタ

  • structのフィールドはポインタで (*p).Xのようにアクセスできる。p.Xと省略することも可能

  • structのポインタpを出力すると&がついた形で返ってくる。(変数だと0x414020みたいなやつなのに...)
  • 配列は固定長。可変長はスライスをうまく使う

    • https://go-tour-jp.appspot.com/moretypes/7
    • コロンで指定した最初の要素は含むが、最後の要素は含まない。var s []int = primes[1:4]の場合、要素は3つ。
    • Sliceは配列のような感じ。要素をいじると元の配列や別のSliceの要素も変更される
    • 長さと容量。とっつきにくいが、長さはどこまで見せるか(カーテンどこまで開けるか)、容量は実際に持っている値たちと考えるとわかりやすい。
    • makeで様々な空のsliceを作れる
    • appendでsliceに追加できる。
      • https://go-tour-jp.appspot.com/moretypes/15
      • cap増え方の謎...
        • 調べた

          https://qiita.com/hitode7456/items/562527069e13347b89c8
          > 長さ が 容量 を超えた時に、その時の 容量 の倍の 容量 が新たに確保されることが分かりました。
          http://toc-dev.blogspot.com/2012/09/goslice-make.html
          > 2のn乗で徐々にメモリが拡張されているのがわかる。
          
        • ということで2の倍数で増えてく模様。(cap=3のときに溢れても6ではない)

          2個目の記事で、3 3 3 3 6 6 6 12 になっているところは、今実行すると、3 3 3 3 8 8 8 8 になった。
          
        • Goのバージョンによっても変わるらしい。気にしなくていいっぽい。

          https://stackoverflow.com/questions/38573983/capacity-of-slices-in-go
          > TL; DR - スライスの容量がどれだけ拡張されるかは仕様に記載されていません。Goのバージョンが異なれば(または実装が異なる場合も、アーキテクチャが異なる場合も同じバージョンなど)、スライスの容量は異なります。
          
  • Maps(辞書的なやつ。key/value

  • 関数は関数の引数や戻り値としても使える

  • クロージャーは変数を保持する。戻り値が関数だとクロージャーと判断してよさそう。

Methods and interfaces

ゴルーチン

  • http://cuto.unirita.co.jp/gostudy/post/goroutin/
    • 並列処理用。独立して動作する実行単位であり、OSが管理するスレッドに割り当てられて動作します。
    • 関数の呼び出し時に先頭に「go」を付けるだけ
    • 「ゴルーチン」として呼び出した関数の終了は待たないことです。そのため、呼び出した関数が返す戻り値を受け取ることはできません。
    • mainから開始している親となる処理が終了すれば、いくら他に「ゴルーチン」が動いていても、すべて中断して終了します。

おまけ

Note: Go playground上の時間は、いつも "2009-11-10 23:00:00 UTC" です。 この値の意味は、読者の楽しみのために残しておきます(^^)

一体どんな意味が!?と思い調べてみました。

Goは2009年11月に公に発表され[23]、バージョン1.0は2012年3月にリリースされました。 https://en.wikipedia.org/wiki/Go_(programming_language) https://opensource.googleblog.com/2009/11/hey-ho-lets-go.html

なるほどGoの誕生日ね!おめでとう!

【MySQL】壊れているビューを削除できない!

現象

気づいたらビューが壊れている。

#1356 - View 'testdb.view_test' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

削除しようとしても消せない!!

DROP TABLE view_test;
// #1051 - Unknown table 'testdb.view_test'

解決策

まず適当なSQLで壊れていない状態に作り直す!

CREATE OR REPLACE VIEW view_test AS SELECT now();

そして削除!

DROP TABLE view_test;

SO COOL!!!