今週のまとめ(8/31)
技術
Vue.js v-tokyo Meetup #11
まちにまった Vue.js 3 @kazu_pon
viteではじめる Vue3 + TypeScript @yuneco
Googleサービス大規模障害の原因と対策
トラフィックが増えてきて、詰まりはじめると一気にダメになるやつ……
別のGoogleサービスからのトラフィックの増加により、BLOBメタデータサービスの過負荷が始まって待ち時間が発生し、操作が過度に再試行されたことでリソースが使い果たされた。失敗したリクエストをキャンセルして再試行しようとすることで事態は悪化し、トラフィックがさらに増加した。
チーム
ローカライズ
ハンコ文化は滅ぼさねばならん
DucuSign わろた
— ひっぺん(米国株ブログ/働かない革命) (@beikoku_kabu) 2020年8月23日
「はんこお辞儀」に対応してる!
こんなローカライズ断われば良かったのに…$DOCU pic.twitter.com/yvAaN4N0se
その他
ゲーム
徳を積んでいないと事前予約出来ない仕組み、良い転売対策と思う
登録するPSN IDのこれまでの行い、「プレイステーション アクティビティ」に応じて決めるとの回答。具体的にどんな「アクティビティ」が関連するのかは分かりませんが、過去に実在のプレーヤーとして登録や購入などの行動が確認できたかでフィルターする趣旨と思われます。要するにPSに功徳を積んできたかどうか。
まめち
ツイッターである単語を検索したいときにユーザー名の中の単語まで拾ってしまうことがあるけど、検索時に「(検索したい単語) OR @i 」とすると文章中の単語だけ拾ってくれるという技を知ってめちゃめちゃ快適。ORは大文字で、ORの前後に半角スペース入れると良いらしい。メモ。
— 柏樹 (@kashiwagi2555) 2020年8月26日
自宅の電波時計がうまく受信できないようなので、同期させる発振機を作れないか調べていたところ、スマートフォンアプリでできるらしい(すごい)
— 山口 祐 (@ymg_aq) 2020年8月25日
スマホ側から13.3kHzで音声出力し、イヤホンをワイヤーアンテナに見立てて3倍高調波(40kHz)で発振することでJJYの電波時計用長波を再現する仕組み。 pic.twitter.com/Gosy0cUk50
キャンプ
東京奥多摩にあるラグジュアリーなグランピング施設「Circus Outdoor」がメルヘンで良い…
— YO 〰︎ 憧れのホテル👟 (@hotel_yohaku) 2020年8月23日
"世界中を旅するサーカス団"をイメージしたテントが用意されており、まるでおとぎ話の世界のよう。希望すればスマホを預けられるデジタルデトックスも。不思議な世界で、時計の針が遅く進む感覚を味わえる… pic.twitter.com/1S5aiRY70S
スイーツ
京都府河原町駅近くにあるお店「和栗専門紗織ーさをりー」の、最高級の丹波くりを使用し、注文が入ってから作る僅か1mmでふわっふわの「錦糸モンブラン」✨ pic.twitter.com/Dboj213oRR
— 極上のスイーツ (@sweetroad5) 2020年8月28日
今週のまとめ(8/24)
技術
認証機能を自作するのは大変だから IDaaS 使おうぜという話
徳丸さんもTwitterで言及しているが、認証機能を自作するべきではない
いいえ。どんなに有能の方が開発したとしても脆弱性の混入はありえます。自分で開発するべきではない理由は、既に公表され、さまざまな検証を経て脆弱性が修正されたソフトウェアを使うべきだというのが一番の理由ですから、「優秀な人なら自分で開発した方がよい」という… https://t.co/vYlqhTi2YE
— 徳丸 浩 (@ockeghem) 2020年8月14日
開発中の案件でも使っている、実装がかなり楽
「firebaseui の日本語化が面倒」とブコメしたら Twitter で「使わないほうが楽」と mizchi さんからコメント貰った(あとで試す
なお、Auth0 は高い
https://auth0.com/pricing/
Bonfire Frontend #6
Y!MAPがリニューアル版をベータリリースしてたの知らなかった……
構成は React + Redux + express + TypeScript
www.slideshare.net
最近よく聞く Core Web Vitals の話
www.slideshare.net
ローディング画面のお知らせ機能はとても良い、ゲームでよく見るやつだ
www.slideshare.net
速度改善の話
IaaS から CaaS への移行、速度改善とは別の取り組みのはずなので 600ms 早くなっている
www.slideshare.net
TypeScript
TypeScript 4.0
TypeScriptのバージョンはsemantic versioningではなく、メジャーバージョンアップにロマンを求めるromantic versioningでもなく、淡々と3.9の次は4.0へ桁をあげるだけの十進数的なdecimal versioning
— Teppei Sato (@teppeis) 2020年8月21日
Generics の使いどころについて
とりあえず、これだけ覚えておく
Rule: If a type parameter only appears in one location, strongly reconsider if you actually need it.
今週のQii活
その他
ゲーム
俺見て来たか知らんけど思った以上につれて笑った pic.twitter.com/zcW0lrG01i
— / \゛ (@vaninbo) 2020年8月21日
旅行
今年ついに完成、初のリッツカールトン豪華客船やばすぎ。
— Takaya Shinozuka (@shinojapan) 2020年8月21日
・スウェーデンの高級クルーザー専門デザイナーチームが造船
・全149室スイートルーム、定員298人
・プライベートテラス付き
・1泊1名10〜100万円 ツアーに依存
・各国を7ー10日かけてまわる
・オールインクルーシブ、船内全て無料 pic.twitter.com/HUthbjZshc
想像超えるエメラルドグリーンの楽園だった。高知最南端 pic.twitter.com/diYtPbNAQw
— ニュー伊吹 (@ibuki_inter) 2020年8月17日
料理
鶏ムネ肉を一番美味しく焼く「30分チキン」。
— イナダシュンスケ (@inadashunsuke) 2020年8月22日
つめたいままのフライパンに鶏ムネ肉の皮目をぴったり貼りつけて塩胡椒したら、火をつけます。あくまで弱火です。 pic.twitter.com/O9prA0Urhn
スイーツ
【カフェ ミクニズ】
— 唯一無二の絶品グルメ(むにぐるめ) (@muni_gurume) 2020年8月23日
@東京:四ツ谷駅から徒歩7分
1日限定24個のガトーショコラをテイクアウトできるお店。
表面のツヤツヤ感に目を奪われる美しい濃厚ケーキで、フランス産ヴァローナ社のチョコを使った贅沢な逸品!
口通り滑らかな食感が心地良く、上品な甘味がたまらない! pic.twitter.com/lHTihhD29F
FuelPHP on heroku
下ごしらえ
create fuelphp project
$ oil create heroku-fuelphp
$ cd heroku-fuelphp/
$ rm -fr .git . gitmodules
$ rm *.md
$ rm -fr docs/
自分の環境(MacOS 10.8.1/git version 1.7.8.4)だと
Adding existing repo at 'fuel/core' to the index
とか言われてsubmodule add出来ないので予め削除
$ rm -fr fuel/core/ $ rm -fr fuel/packages/auth/ $ rm -fr fuel/packages/email/ $ rm -fr fuel/packages/oil/ $ rm -fr fuel/packages/orm/ $ rm -fr fuel/packages/parser/
git init & submodule add
$ git init $ git submodule add git://github.com/fuel/core.git fuel/core $ git submodule add git://github.com/fuel/auth.git fuel/packages/auth $ git submodule add git://github.com/fuel/email.git fuel/packages/email $ git submodule add git://github.com/fuel/oil.git fuel/packages/oil $ git submodule add git://github.com/fuel/orm.git fuel/packages/orm $ git submodule add git://github.com/fuel/parser.git fuel/packages/parser
git submodule checkout & pull
$ git add . $ git submodule foreach git checkout 1.3/master $ git submodule foreach git pull origin 1.3/master $ git status # modified: fuel/core (new commits) # modified: fuel/packages/orm (new commits) $ git add fuel/core $ git commit -m 'init'
heroku create
$ heroku create --buildpack https://github.com/winglian/heroku-buildpack-php -s cedar Creating serene-dusk-4028... done, stack is cedar BUILDPACK_URL=https://github.com/winglian/heroku-buildpack-php http://serene-dusk-4028.herokuapp.com/ | git@heroku.com:serene-dusk-4028.git Git remote heroku added
git push
$ git push heroku master Counting objects: 54, done. Delta compression using up to 2 threads. Compressing objects: 100% (46/46), done. Writing objects: 100% (54/54), 99.37 KiB, done. Total 54 (delta 3), reused 0 (delta 0) -----> Heroku receiving push -----> Git submodules detected, installing Submodule 'fuel/core' (git://github.com/fuel/core.git) registered for path 'fuel/core' Submodule 'fuel/packages/auth' (git://github.com/fuel/auth.git) registered for path 'fuel/packages/auth' Submodule 'fuel/packages/email' (git://github.com/fuel/email.git) registered for path 'fuel/packages/email' Submodule 'fuel/packages/oil' (git://github.com/fuel/oil.git) registered for path 'fuel/packages/oil' Submodule 'fuel/packages/orm' (git://github.com/fuel/orm.git) registered for path 'fuel/packages/orm' Submodule 'fuel/packages/parser' (git://github.com/fuel/parser.git) registered for path 'fuel/packages/parser' Initialized empty Git repository in /tmp/build_owc6gc2lo4pn/fuel/core/.git/ Submodule path 'fuel/core': checked out '61ef4c098485035f4d625d87238e4d408dfa59e5' Initialized empty Git repository in /tmp/build_owc6gc2lo4pn/fuel/packages/auth/.git/ Submodule path 'fuel/packages/auth': checked out 'd5c78ff7e3b1698334747587505d79baf59a3158' Initialized empty Git repository in /tmp/build_owc6gc2lo4pn/fuel/packages/email/.git/ Submodule path 'fuel/packages/email': checked out '6a38100229aa02c905d143c200a0dac5184a174e' Initialized empty Git repository in /tmp/build_owc6gc2lo4pn/fuel/packages/oil/.git/ Submodule path 'fuel/packages/oil': checked out 'e0947076c4058104f92d8465ccb82d2ac93f6b72' Initialized empty Git repository in /tmp/build_owc6gc2lo4pn/fuel/packages/orm/.git/ Submodule path 'fuel/packages/orm': checked out '42a37ce5d639bc6485b907764280dca3285a2bf9' Initialized empty Git repository in /tmp/build_owc6gc2lo4pn/fuel/packages/parser/.git/ Submodule path 'fuel/packages/parser': checked out 'f85eafe3ed198bf51feb7c3c1c7116aa3a77ea24' -----> Fetching custom buildpack... cloning with git...done ! Heroku push rejected, no Cedar-supported app detected To git@heroku.com:serene-dusk-4028.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'git@heroku.com:serene-dusk-4028.git'
index.phpがないとリジェクトされるらしいので作る
$ touch index.php $ git add index.php $ git commit -m 'add index.php' [master 73128cb] add index.php 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 index.php /Users/khirose/workspace/heroku-fuelphp% touch index.php /Users/khirose/workspace/heroku-fuelphp% git add index.php /Users/khirose/workspace/heroku-fuelphp% git commit -m 'add index.php' [master 73128cb] add index.php 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 index.php
$ git push heroku master Counting objects: 56, done. Delta compression using up to 2 threads. Compressing objects: 100% (48/48), done. Writing objects: 100% (56/56), 99.57 KiB, done. Total 56 (delta 4), reused 0 (delta 0) -----> Heroku receiving push -----> Git submodules detected, installing Submodule 'fuel/core' (git://github.com/fuel/core.git) registered for path 'fuel/core' Submodule 'fuel/packages/auth' (git://github.com/fuel/auth.git) registered for path 'fuel/packages/auth' Submodule 'fuel/packages/email' (git://github.com/fuel/email.git) registered for path 'fuel/packages/email' Submodule 'fuel/packages/oil' (git://github.com/fuel/oil.git) registered for path 'fuel/packages/oil' Submodule 'fuel/packages/orm' (git://github.com/fuel/orm.git) registered for path 'fuel/packages/orm' Submodule 'fuel/packages/parser' (git://github.com/fuel/parser.git) registered for path 'fuel/packages/parser' Initialized empty Git repository in /tmp/build_3so3ldgotzkpp/fuel/core/.git/ Submodule path 'fuel/core': checked out '61ef4c098485035f4d625d87238e4d408dfa59e5' Initialized empty Git repository in /tmp/build_3so3ldgotzkpp/fuel/packages/auth/.git/ Submodule path 'fuel/packages/auth': checked out 'd5c78ff7e3b1698334747587505d79baf59a3158' Initialized empty Git repository in /tmp/build_3so3ldgotzkpp/fuel/packages/email/.git/ Submodule path 'fuel/packages/email': checked out '6a38100229aa02c905d143c200a0dac5184a174e' Initialized empty Git repository in /tmp/build_3so3ldgotzkpp/fuel/packages/oil/.git/ Submodule path 'fuel/packages/oil': checked out 'e0947076c4058104f92d8465ccb82d2ac93f6b72' Initialized empty Git repository in /tmp/build_3so3ldgotzkpp/fuel/packages/orm/.git/ Submodule path 'fuel/packages/orm': checked out '42a37ce5d639bc6485b907764280dca3285a2bf9' Initialized empty Git repository in /tmp/build_3so3ldgotzkpp/fuel/packages/parser/.git/ Submodule path 'fuel/packages/parser': checked out 'f85eafe3ed198bf51feb7c3c1c7116aa3a77ea24' -----> Fetching custom buildpack... cloning with git...done -----> PHP app detected -----> Bundling Apache 2.2.22/PHP 5.3.10 build Creating Slug Identifier file with id: 11eb980091f29e7be8abbe03604ff2ac -----> Discovering process types Procfile declares types -> (none) Default types for PHP -> web -----> Compiled slug size is 18.4MB -----> Launching... done, v4 http://serene-dusk-4028.herokuapp.com deployed to Heroku To git@heroku.com:serene-dusk-4028.git * [new branch] master -> master
成功したっぽい
$ heroku open
http://serene-dusk-4028.herokuapp.com/public/
参考:
http://d.hatena.ne.jp/Kenji_s/20111202/1322783183
http://d.hatena.ne.jp/hnw/20120603
http://dqn.sakusakutto.jp/2012/04/heroku_push_rejected_no_cedar-.html
brew install mongo
% sudo brew install mongo
Password:
==> Downloading http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-1.6.5.tgz
######################################################################## 100.0%
==> Caveats
If this is your first install, automatically load on login with:
cp /usr/local/Cellar/mongodb/1.6.5-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents
launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
If this is an upgrade and you already have the org.mongodb.mongod.plist loaded:
launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
cp /usr/local/Cellar/mongodb/1.6.5-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents
launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
Or start it manually:
mongod run --config /usr/local/Cellar/mongodb/1.6.5-x86_64/mongod.conf
==> Summary
/usr/local/Cellar/mongodb/1.6.5-x86_64: 16 files, 83M, built in 2 seconds
ねんがんのはてなブログをてにいれたぞ
@hachimitu → @ninochi → @picacch → @elpeo → @inuro → @tnh → @hirose504
と言うわけで連綿と受け継がれた流れの果てにはてなブログを手に入れました