ジョギングで膝を壊しました

  • このエントリーをはてなブックマークに追加

今月ジョギングを開始しましたが、数週間で膝を壊しました😨
どれくらい酷かったかというと、一時は歩くことすら困難でした。膝が常に熱を持っていて、何もしなくても非常に痛みを感じてしまい、それを庇って歩くことでさらに悪化してしまうという状況でした。両膝共に痛かったのですが特に右膝が痛く、歩く度に体重がかかり激痛が走る状態でした。
会社に行くのすら辛いのでタクシーを使いました。

治療について、まず鍼治療をしました & そこでマッサージをしてもらいました。
少しだけ痛みは和らぎましたが、そこで言われたことは水が溜まっていることと、病院に行きましょうという事でした。

次に整形外科に行きました。お薬と湿布を貰い、アイシングの仕方を教えて貰いました。またリハビリのためのマッサージを受けるととても楽になりました。マッサージとストレッチによって固くなってしまった筋肉をほぐして貰いました。それから毎日、マッサージと細かい頻度でアイシング、痛み止めの薬も飲んでみると、少しずつ良くなりました。一度に一気にやったのでどれが効いたのかわかりませんし、もしかしたら自然治癒だったのかもしれません。

個人的には湿布がとても良かったと思います。
湿布はお父さんが気安めのために貼る物というイメージでしたが、きちんとしたお薬だったんですね。

スポーツ経験者やお医者さんにヒアリングをし、次の事が原因である事がわかりました。

  • 準備運動が足りなかった
    • 特に柔軟が足りなかった
    • 体を十分に温めてから運動するべきだった
  • 運動後のケアが十分でなかった
    • きちんとアイシングをしていなかった

まだリハビリ中で全然完治していませんが、次スポーツする時はジョギングではなくアクアエクササイズにしようと思います。このあたりのジムが気になってます。

apache-loggenを更新しました

  • このエントリーをはてなブックマークに追加

ApacheLoggenを更新しました。
ApacheLoggenはApache形式のダミーログを出力するやつです。

limit引数に2を指定すると3件出力されるというoff-by-oneな不具合の修正です。

それはそれとして、apacheなんてずっと触っていないのでnginxのログを追加しましょうかね.

ここは自分用のメモ

手元でテストする時。不通に実行するとインストール済みのgemsを見てしまうので。

手元で実行する時

bundle exec ruby lib/apache-loggen.rb

Gemsへのリリースの方法

curl -u [MY-MAIL-ADDR] https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
rake release

Facebookのインスタント記事について

  • このエントリーをはてなブックマークに追加

最近、Facebookのインスタント記事(IA)に関する調査をしています。

自分のブログをIAに対応してみたり、サンプルサイトを作っては審査申請をしてみたり。やってみて思った事は、FBは本当にこれを普及させたいのだろうか 😞

RSSで連携させると、インポートされる記事がすごいひどいことになる。そして審査で落とされる。公式の方法で連携させて微妙な結果が出力される上に審査で落とされる。そして結局手でIA用のHTMLを微妙なエディタで手打ちをするという仕打ち。こういうタグ表記はNGというものが多すぎて、成果に対する労力が見合わないぜ..

個人のサイトでここまで大変でストレスが凄いのだから、各媒体が手を出せないのも理解できる。実際に触ってみて分かる。

とてもつらい

再審査のボタンが押せない

記事の中の、op-modifiedを次のように、現在の時間に近しい値にしないとダメな模様。
はいはい、これも手作業で更新しましたよ😰

<time class="op-modified" datetime="2017-11-05T00:00:01-07:00">2017-11-05T00:00:01-07:00</time>

参考

Blogをgithub pagesからNetlifyに移行しました

  • このエントリーをはてなブックマークに追加

もともとBlogをGithub Pagesでやっていましたが、HTTPS化するのにCloudFlare使うのもなー、証明書の更新も面倒だなと思って躊躇していました。

証明書の更新だったらAWSのACM使えば無料だし、Acceptさえすれば自動で更新されていくし便利じゃん!と思い、S3とCloudFrontの設定をしましたが、サブディレクトリのindex.htmlが上手く解決できませんでした。
最初はS3をPrivate化して、CloudFrontからのアクセスに成功。しかし、index.htmlが解決できないので、S3をpublicにして必要な設定を入れてみても、どうも上手くいかない。

もやもやしていたところ、Netlifyの存在を教えて貰いました。

なにこれ、簡単すぎる!!

15分もあれば、諸々設定終わります。証明書もLet’s Encryptとボタン1つ押すだけで、自動で証明書が作られて自動更新されていきます。

とはいえ、いくつかハマったところがあったのでメモを残しておきます。

Let’s Encryptの設定でハマった

最初はcustom domainを適当な値にして確認していて(例:test1.orz.at)、それで証明書の設定を入れた後に、blog.orz.atに名前を変更したら、証明書の更新はどこからも変更できませんでした。なので、blog.orz.atでアクセスしてもtest1.orz.atの証明書が使われてしまうことに。

証明書を消すことも出来ないので、サイトそのものの定義を削除して、作り直しました。

(DNSの設定はNetlify管轄にしないで、CNAME指定でやってました)

Redirectの設定

{site}.netlify.comでアクセスしたらblog.orz.atに飛ばしたい。
Origin的なサイトが見えちゃうと、コピーサイトに見えそうだし。そもそも複数のドメインからアクセスできちゃうの嫌。

ここを見ると、redirectの設定ができます。テストはここで確認できます。
というわけで、以下の設定を追加。

http://tamtam180-blog.netlify.com/* https://blog.orz.at/:splat 301!
https://tamtam180-blog.netlify.com/* https://blog.orz.at/:splat 301!

そして、今もハマってる最中。
Hexoの設定でgenerateした時に、_redirectsが対象外になっていました。設定ファイルに次を追加。参考

include:
- _redirects

できた

custom domainへ移動するようになりました。

$ curl -I "https://tamtam180-blog.netlify.com/"
HTTP/1.1 301 Moved Permanently
Cache-Control: public, max-age=0, must-revalidate
Content-Length: 35
Content-Type: text/plain; charset=utf-8
Date: Sun, 29 Oct 2017 15:32:39 GMT
Location: https://blog.orz.at/
Age: 1
Connection: keep-alive
Server: Netlify

Javaのforkjoinとparallel()について

  • このエントリーをはてなブックマークに追加

こんなコードで実験。
普通に考えると、Parallel()はJVM内で共通のPOOLを使い、使えない場合はcaller threadを使うようになる。
現に、ExecutorServiceを使う場合、そのような(commonのforkjoinとcaller threadを使う)挙動になる。

なのでparallel().foreachの中で重い処理を書くと全体に影響が出る。(もちろんcaller threadで実行されので処理が止まってしまうわけでは無い)

しかしながら、ForkJoinPoolを使った場合、全てのスレッドがForkJoinPoolで実行されるのである。なぜ共通のPoolが使われないのか?

//ExecutorService forkJoinPool = Executors.newFixedThreadPool(2);
ForkJoinPool forkJoinPool = new ForkJoinPool(2);
forkJoinPool.execute(() -> {
Arrays.stream(new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 })
.parallel()
.forEach(ii -> {
int r = ThreadLocalRandom.current().nextInt(5) + 2;
try {
TimeUnit.SECONDS.sleep(r);
} catch (Exception e) {}
System.out.printf("[%d]%s\t%s%n", r, new Date(), Thread.currentThread().getName());
});
});
forkJoinPool.shutdown();
forkJoinPool.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);

ThreadPoolExecutorの場合

[3]Wed Oct 18 02:04:18 JST 2017  ForkJoinPool.commonPool-worker-3
[4]Wed Oct 18 02:04:19 JST 2017 ForkJoinPool.commonPool-worker-2
[5]Wed Oct 18 02:04:20 JST 2017 pool-1-thread-1
[5]Wed Oct 18 02:04:20 JST 2017 ForkJoinPool.commonPool-worker-1
[2]Wed Oct 18 02:04:20 JST 2017 ForkJoinPool.commonPool-worker-3
[3]Wed Oct 18 02:04:22 JST 2017 ForkJoinPool.commonPool-worker-2
[4]Wed Oct 18 02:04:24 JST 2017 pool-1-thread-1
[4]Wed Oct 18 02:04:24 JST 2017 ForkJoinPool.commonPool-worker-1
[3]Wed Oct 18 02:04:25 JST 2017 ForkJoinPool.commonPool-worker-2

ForkJoinPoolの場合

[2]Wed Oct 18 02:03:06 JST 2017  ForkJoinPool-1-worker-0
[2]Wed Oct 18 02:03:06 JST 2017 ForkJoinPool-1-worker-1
[3]Wed Oct 18 02:03:09 JST 2017 ForkJoinPool-1-worker-1
[4]Wed Oct 18 02:03:10 JST 2017 ForkJoinPool-1-worker-0
[2]Wed Oct 18 02:03:11 JST 2017 ForkJoinPool-1-worker-1
[2]Wed Oct 18 02:03:12 JST 2017 ForkJoinPool-1-worker-0
[3]Wed Oct 18 02:03:15 JST 2017 ForkJoinPool-1-worker-0
[4]Wed Oct 18 02:03:15 JST 2017 ForkJoinPool-1-worker-1
[2]Wed Oct 18 02:03:17 JST 2017 ForkJoinPool-1-worker-1
[3]Wed Oct 18 02:03:18 JST 2017 ForkJoinPool-1-worker-0
[4]Wed Oct 18 02:03:22 JST 2017 ForkJoinPool-1-worker-0

WHY..?

なぜだろうと思いソースを追いかけると、ForkJoinTaskで次のコードが。

private int doInvoke() {
int s; Thread t; ForkJoinWorkerThread wt;
return (s = doExec()) < 0 ? s :
((t = Thread.currentThread()) instanceof ForkJoinWorkerThread) ?
(wt = (ForkJoinWorkerThread)t).pool.
awaitJoin(wt.workQueue, this, 0L) :
externalAwaitDone();
}

parallel()で使われるForkJoinPool.commonPoolもクラスはForkJoinWorkerThreadなので、ちょっと特別扱いされてるのかー。
ていうか、こんなん分かるわけないよ。

でも、これって実行した後の話だよね。。

“commonで実行しようと思ったけど、callerがforkjoinだからそっちで実行しよう” みたいな処理じゃないと辻褄が合わない気がする。他の場所にあるのかな?

ForkJoinTaskのこれか。

public final ForkJoinTask<V> fork() {
Thread t;
if ((t = Thread.currentThread()) instanceof ForkJoinWorkerThread)
((ForkJoinWorkerThread)t).workQueue.push(this);
else
ForkJoinPool.common.externalPush(this);
return this;
}
  • ForkJoinTaskは木構造を作っている(これを実行したらこれを実行するみたいなグラフ)
  • ForkJoinスレッドの中でForkJoin(parallel()も同様)を実行すると、この構造に連結されていく
  • ForkJoinPool.submit(stream.parallel().forEach) はこの構造を一気に構築する。
  • この構造上、途中に遅いヤツが居ると後続の処理は全て引きずられる
    • 待機列を一気に構築して、それぞれ処理する。並び替えは不可。というイメージ。
    • 時間が経過すると、一番遅いヤツに引きずられて空きWorkerだらけになる。
    • (スーパーのレジのイメージで、かつ100人の客が居たらいっきに100人分の列と順番を決めてしまう)
  • これに対してExecutorServiceは1つの行列(Queue)にタスクを積んで、空きWorkerができ次第順処理される
    • (コンビニのレジの列のイメージ)

この記事 の現象はまさにそれかなと思いました。

参考

わからない事をわからないと意思表示する事は大事

  • このエントリーをはてなブックマークに追加

分からない事を分からないと意思表示するのは大事な事。
分からない事を分からないまま進めたり、想像で補完して変な事になったり。自分には分からない事を質問された時に、適当に答えて間違った情報を流すのでは無く、近くに居る専門家に助けを求めたりプロキシしたりしないといけない。

分からない事は恥では無く、分からないままにしておく事の方が恥だと思う。

新人じゃないんだし30過ぎた人にわざわざ指摘するのもなぁという思いと、これ系で頭を悩ませる人はだいたい改善しない傾向が強いので、フォローするのも既に面倒な状態になっている事が多い。

strengths-finder

  • このエントリーをはてなブックマークに追加

社内でstrengths finderが流行っているのでやってみました。
簡単に言うと、2択の質問に1問20秒以内に約200門ほどの回答をWebからします。1時間くらいかかります。そうすると、34の指標から自分がどういう思考性を持っているのかを教えてくれるのです。

こちらの書籍を購入すると、アクセスコードが付いてきて上位5個まで見ることができます。34個全部を見るには1万円ほど払う必要があるっぽいです。

だいたい合っている気がする..

たむたむの上位5件

  1. 個別化
  2. 活発性
  3. 学習欲
  4. 慎重さ
  5. 着想

1. 個別化

「個別化」という資質により、あなたはひとりひとりが持つユニークな個性に興味を惹かれます。あなたはひとりひとりの特徴や個性を覆い隠したくないので、人を一般化したり、あるいは類型化することに我慢できません。むしろ、個人個人の違いに注目します。あなたは本能的にそれぞれの人の性格、動機、考え方、関係の築き方を観察しています。あなたはそれぞれの人生における、その人にしかない物語を理解します。この資質によって、あなたは、友達にぴったりの誕生日プレゼントを選んだり、ある人は人前で誉められることを好み、別の人はそれを嫌うことを分かったり、一から十まで説明して欲しい人と、一を示せば十を知る人とに合わせて、教え方を調整できたりするのです。あなたはほかの人の強みをとても鋭く観察する人なので、ひとりひとりの最もよいところを引き出すことができます。この個別化という資質は、あなたが生産性の高いチームを作ることにも役立ちます。完璧なチームを作るに当たり、チームの「組織構造」や「作業手順」に着目する人もいますが、あなたは優秀なチーム作りの秘訣は、各自が得意なことを充分に発揮できるような、強みに基づく配役である、ということを本能的に知っています。

あなたが卓越している点は?

強みによって、あなたは、人を団結させます。あなたは相手の状況を理解し始めると、それぞれの人との絆を築きます。あなたは自然と相手の状況に一体感を持ちます。あなたは人が共通点を発見できるように手助けする才能を持ちます。このためその人たちが気楽にやり取りして協力し合えるようになることがよくあります。あなたは本能的に、一人ひとりの違いを察知する才能があるかもしれません。あなたは、多様性は悪いことではなく、むしろ良いことであると考えているかもしれません。あなたは、多様な背景を持つ人々がチームの成功のために協力する方法を見つけるためにサポートできるかもしれません。生まれながらにして、あなたは、ときどき、あなたに助けを求める友人にアドバイスをすることがあります。あなたは、自分の意見、提案、アドバイスについては、人から言ってほしいと依頼されない限り、自分の中にとどめておくでしょう。多くの場合、あなたは、ときどき、自分の実践的、率直または現実的な考え方が特定の人から評価されていることに気付くことがあります。あなたがすべての人を平等、同等に扱っていることの価値を分かってくれる人の支援に喜びを感じるでしょう。持っている才能によって、あなたは、先を見据える人達が経験する試練、苦境、孤独を敏感に感じ取ります。人々が彼らのアイデアを冷淡かつ無神経に見捨てたとしても、未来志向の人々はこれからの数か月、数年、または数十年の間に達成可能なことに関する彼らのビジョンをあなたが評価することを感じ取ります。

2. 活発性

「いつ始めようか?」これはあなたの人生で繰り返される質問です。あなたは動き出したくてうずうずしています。分析が有用であるとか、ディベートや討論が貴重な洞察を生み出す場合があることもあなたは認めるかもしれませんが、心の奥深くでは、行動だけが有意義であると知っています。行動だけが何かを起こすことができるのです。行動だけが功績につながります。決断が下されると、あなたは行動を起こさずにはいられません。ほかの人は「まだ知らないことがあるのに」と戸惑うかも知れませんが、あなたのペースを遅くすることはなさそうです。街の中を横断する決定を下した場合、最も速く移動する方法は信号から信号へと渡り歩くことです。すべての信号が青になるまでだらだらと待っているわけではありません。そのうえあなたの考え方では、行動と思考は互いに相容れないものではありません。事実、「活発性」の資質によって、あなたは、行動は最良の学習手段であると考えています。あなたは決断し、行動し、結果をみて、そして学びます。この学習方法によって、あなたは次の行動、そしてさらに次の行動へと導かれるのです。もし行動しなかったら、どうやって成長できるのでしょう?あなたは、行動がなければ成長できないと考えています。あなたは、危険を冒してでも行動し続けなければなりません。次の行動を起こさなければなりません。思考を常にいきいきと豊かにしておく方法が、他にあるでしょうか。発言したことや考えたことによってではなく、実行したことによって判断されるということを、あなたは知っています。これが重要なのです。あなたはこれを恐れることはありません。あなたにとって、これが喜びなのです。

あなたが卓越している点は?

おそらくあなたは、ある種のスタートアッププロジェクト、プロセス、手続き、構想などを引き受けるために、名乗りを上げる場合があります。それは、あなたが自分の才能、技術、知識が目前の作業に釣り合うことがわかっているときでしょう。ときどき、具体的な試みを選択して、陣頭指揮を取ろうとします。しかし、成功に必要な専門知識が欠けている場合は、誰かにリーダーシップの役割を引き受けさせることもあります。強みによって、あなたは、チームの中で、ときどきプロジェクトの立ち上げ、会議の開始、プロセスの開始に携わるかもしれません。計画の立案が長引くと、うんざりしてくるかもしれません。そういうとき、忙しく立ち働きたい、何か行動を起こしたいと思うでしょう。持っている才能によって、あなたは、何かを任されたがっています。あなたは決心した途端に始めたくなります。進捗を邪魔する人にはおそらくイライラさせられることでしょう。生まれながらにして、あなたは、ときどき、仕事や学習を開始するために必要な刺激、原動力や報酬を人に与えることがあります。あなたは、特定の考え、プロジェクト、変更、規制、提案などに対して抵抗がある人がそれらを克服できるように手助けするかもしれません。あなたは本能的に、節度を持って行動したり、言葉を選んで話したりすることがあります。あなたは、状況や目の前の人に影響を受け、発言したり行動したりすることもあります。しかしあなたは、個人的な事柄は自分の胸にしまっておくことを選ぶようです。自分の経験について話すことよりも、ある種のプロジェクトを立ち上げることを好むのかもしれません。

3. 学習欲

あなたは学ぶことが大好きです。あなたが最も関心を持つテーマは、あなたの他の資質や経験によって決まりますが、それが何であれ、あなたはいつも学ぶ「プロセス」に心を惹かれます。内容や結果よりもプロセスこそが、あなたにとっては刺激的なのです。あなたは何も知らない状態から能力を備えた状態に、着実で計画的なプロセスを経て移行することで活気づけられます。最初にいくつかの事実に接することでぞくぞくし、早い段階で学んだことを復誦し練習する努力をし、スキルを習得するにつれ自信が強まる――これがあなたの心を惹きつける学習プロセスです。あなたの意欲の高まりは、あなたに社会人学習――外国語、ヨガ、大学院など――への参加を促すようになります。それは、短期プロジェクトへの取組みを依頼されて、短期間で沢山の新しいことを学ぶことが求められ、そしてすぐにまた次の新しいプロジェクトへに取組んでいく必要のあるような、活気に溢れた職場環境の中で力を発揮します。この「学習欲」という資質は、必ずしもあなたがその分野の専門家になろうとしているとか、専門的あるいは学術的な資格に伴う尊敬の念を求めていることを意味するわけではありません。学習の成果は、「学習のプロセス」ほど重要ではないのです。

あなたが卓越している点は?

あなたは本能的に、情報の輪に加わっていたいタイプです。起こっていることすべてを把握したいと考えています。自分に直接関係がなくても、常に最新の変化を知っておきたいのです。当然、重要なプロジェクトや納期、発見、問題、成功などに関するニュースを誰かがうっかり、または故意に伝えなかったとき、あなたは非常に困惑し、不満を抱きます。生まれながらにして、あなたは、何時間も続けて集中することができます。特に新しい情報を調べることで、理解を深めたり、独創的な発想を生み出したりする場合はなおさらです。このような熱意によって、機会あるごとに、さらに知識やスキルを習得しようと心に決めるようです。おそらくあなたは、精神的および身体的なエネルギーを要求された仕事に向ける一方で、任意的な仕事にはさほど注目しません。そのような状況下では、仕事や研究を何時間も続けられることが有利に働く場合があります。生物学的な性質によって、最も警戒するとき、最も効率的または生産的になる時が決まります。多くの場合、あなたは、他のことに気を取られずに課題に集中できます。ときには、特定のテーマについて知っておく必要のあるすべてのことを理解するまで、読書、調査、実験、執筆などを続けることがあります。特定の概念を習得したり、重要な情報を記憶することに熱心に取り組んだり、特定のコースの必修科目を終えたりするまで休まないことがあります。持っている才能によって、あなたは、手間隙かけて、物事が起こった経緯と理由を突き止めます。そして、わかったことをパートナー、チームメンバー、友達に話します。あなたは通常、合理的に説明します。重要な事実のみを取り上げます。ほとんどの人はあなたの言うことを簡単に理解できます。あなたが事細かい説明ではなく、要点を理解できるよう話してくれ、聞いている側はたいへん有り難く感じていることでしょう。

4. 慎重さ

あなたは用心深く、決して油断しません。
あなたは自分のことをあまり話しません。あなたは世の中が予測できない場所であることを知っています。すべてが秩序正しいように見えますが、表面下には数多くの危険が待ちかまえていることを感じ取っています。あなたはこれらの危険を否定するよりは、一つひとつを表面に引き出します。そうして、危険はひとつずつ特定され、評価され、最終的に減っていきます。いうなれば、あなたは毎日の生活を注意深く送る、かなりまじめな人です。

例えば、何かが上手くいかない場合に備えて、あらかじめ計画を立てることを好みます。あなたは友人を慎重に選び、会話が個人的な話題になると、自分のことについては話しをせず、自分自身で考えることを好みます。誤解されないように、過度に誉めたり認めたりしないように気をつけます。人になかなか打ち解けないという理由で、あなたを嫌う人がいても気にしません。あなたにとって、人生は人気コンテストではないのです。人生は地雷原を歩くようなものです。そうすることを望むならば、他の人は用心せずにこの地雷原を駆け抜けるかもしれません。しかし、あなたは違う方法をとります。あなたは危険を明確にし、その危険が及ぼす影響を推し量り、それから慎重に一歩ずつ踏み出します。あなたは細心の注意を払って進みます。

あなたが卓越している点は?

持っている才能によって、あなたは、自分の人生に対するある種の事実を胸にしまっておくことを選んでいます。仕事、プロジェクト、または肩書きのせいで自分が公的な立場に置かれるのであれば、それらを避ける場合があります。多くの場合、あなたは、友人を慎重に選びます。あなたは、選び抜いた人と近くて親密な関係を育てることで満足感を得ます。友人と呼べる人の数が多いことより、質の良い関係を持つことの方があなたにとってはずっと重要です。生まれながらにして、あなたは、自分自身や自分の考え、気持ちについて多くを語らないようにしています。率直になり過ぎるリスクの可能性をおそらく重視しているでしょう。特別な称賛に値することが十分に証明されるまで、人々やグループの才能、貢献、成果を認めないことがあります。あなたは本能的に、好ましい結果を助長することを重視します。あなたは他の人の良い点を見つけて強調します。あなたは人に得意なことについての具体的な特定の詳細事項を伝えます。そして才能を活かせるように手助けします。これがその人の継続的な成功につながると、あなたは主張します。おそらくあなたは、自分が維持する人間関係や「友人」と呼ぶ人々の選択にはこだわりを持っています。多くの人から、特定の時点において彼らが何を考え、何を感じているのかを鋭く感じ取る人だと思われています。

5. 着想

あなたは着想に魅力を感じます。では、着想とは何でしょうか?着想とは、ほとんどの出来事を最もうまく説明できる考え方です。あなたは複雑に見える表面の下に、なぜ物事はそうなっているかを説明する、的確で簡潔な考え方を発見すると嬉しくなります。着想とは結びつきです。あなたのような考え方を持つ人は、いつも結びつきを探しています。見た目には共通点のない現象が、何となく繋がりがありそうだと、あなたは好奇心をかき立てられるのです。着想とは、皆がなかなか解決できずにいる日常的な問題に対して、新しい見方をすることです。あなたは誰でも知っている世の中の事柄を取り上げ、それをひっくり返すことに非常に喜びを感じます。それによって人々は、その事柄を、変わっているけれど意外な角度から眺めることができます。あなたはこのような着想すべてが大好きです。なぜなら、それらは深い意味があるからです。なぜなら、それらは目新しいからです。それらは明瞭であり、逆説的であり、奇抜だからです。これらすべての理由で、あなたは新しい着想が生まれるたびに、エネルギーが電流のように走ります。他の人たちはあなたのことを、創造的とか独創的とか、あるいは概念的とか、知的とさえ名付けるかもしれません。おそらく、どれもあてはまるかもしれません。どれもあてはまらないかもしれません。確実なのは、着想はあなたにとってスリルがあるということです。そしてほとんど毎日そうであれば、あなたは幸せなのです。

あなたが卓越している点は?

あなたは本能的に、メンバーの中で、独創的な仕事のやり方を提案する役目を果たすことがあります。他のメンバーより画期的なアイデアを提案することがあります。持っている才能によって、あなたは、人々の言葉に耳を傾け、彼らが自分のことをどう考え、どう話しているかを突き止めます。あなたは、人々があなたをどう見ているかを敏感に察しています。あなたはおそらく、一部の心をつかみ、その他の人を感心させたいのでしょう。おそらくあなたは、ときどき、独創的なアイデアを生み出せる機会を活用することがあります。生まれながらにして、あなたは、特定の業務やプロジェクトに対して新しい革新的なアイデアを生み出すことができるとうれしく思うかもしれません。あなたはおそらく標準の業務手順に従わざるを得ない場合には、熱意を失ったり飽きたりするでしょう。あなたはしばしば、創造性が抑圧されると、仕事や学習コースが自分に合っているのだろうかと疑問に感じます。あなたは、自分の独創的な提案を、批判や不服、つまり権力への服従に対する拒否の表れと捉える人に、不満を抱くことがあるでしょう。強みによって、あなたは、グループのメンバーから独創的な考えを当てにされているでしょう。おそらく、誰かが問題やチャンスを説明するとすぐに、あなたの頭にアイデアが浮かぶでしょう。

Sequelにbooleanを渡すと=ではなくIS比較になる

  • このエントリーをはてなブックマークに追加

RubyのSequelというライブラリのお話。 mysql=5.5.42 sequel=4.25.0

db[:log_delay].where(:send_dg => false).order(:event_at).limit(1000).all

こんな処理を書いていて、なんか遅いなー(state=Sorting resultで詰まっている)と思ったら、以下のSQLに変換されていました。

SELECT * FROM `log_delay` WHERE (`send_dg` IS FALSE) ORDER BY `event_at` LIMIT 1000

IS FALSE..だと!? なお、インデックスは send_dgenvet_atに付けています。

本来発行したいSQLは以下です。

SELECT * FROM `log_delay` WHERE (`send_dg` = false) ORDER BY `event_at` LIMIT 1000

こう書いたら目的通りのSQLが生成されました。

db[:log_delay].where(:send_dg => Sequel.lit('false')).order(:event_at).limit(1000).all

そして詰まりも無くなりました。

レビュー

  • このエントリーをはてなブックマークに追加

今やコードのレビューは当たり前のように行われているところが多いと思います。でも実装の前にアーキテクチャを考えたり、設計を考えたり、思想を考えたりしますよね。実装する前に、そういうの先に共有してレビューする必要があると思うのです。

そんなの、当たり前だろ。という人が殆どだと思います。

でも、意外とやらない人が多い。都市伝説ではなく。

そして障害を多発させたり、日々の運用に耐えられなくなったり、ビジネスのスケールに対して技術が足を引っ張ったり、最悪の場合はそもそもゴールに着地出来なかったり。

大事な土台なのに。

上記はエンジニアの話ですが、別にエンジニアに限った話ではありません。

例えば商品設計の話。
商品設計が誰のレビューも受けていないとかあり得ない。というかその分野の識者じゃない人が考えたものを、すぐ近くに識者が居るのに尋ねたりレビューをしてもらったりをしないのは何故なのか。
商品設計という土台をレビューしないで、売り方の話ばっかり。これも前述と同じですね。

こういう事を指摘すると、エンジニアの人がそうだそうだと同調するケースがありますが、あなたも土台のレビューをすっ飛ばしているじゃないかとツッコミを入れたくなります。

前の記事でも似たような事を書きましたが、表面的な内容は異なれど、土台を識者に相談してレビューを受けようという本質的な所は同じなんだけどな。

最近コレ系の事案が多い。

結果をトレースするのではなく考え方をトレースする

  • このエントリーをはてなブックマークに追加

物事の応用が上手な人は、結果をトレースしているのではなく考え方をトレースしているのだと思っています。
考え方というのはWHYにあたる部分。なぜそうしたのか。

仕事の仕方が下手な人は総じて、結果がこうだったらこう対応するという1:1の結論を出している傾向があるように思えます。なぜそうしたのかを理解しないで真似をするので、なぜそうしているのかが自分で分かっておらず、対応が短絡的に見えてしまう。

他にも、転移学習という言葉を使うと界隈から怒られそうですが、別の分野の事例を聞いた時、パズルピースをはめ変えて自分事の事例に落としこむという事も、考え方は同じです。
これが出来ない人は他分野の話を聞いても、「話としては面白かったけど、僕らには関係ないね」とか言ってしまう。ヒントなんてそこら中にあるのにね。

身近な事例(良くある事例)だと、〇〇社で使っているから僕らも使おう。みたいなやつ。他には、他業種のカンファレンスに参加しても何も得られない人とか。(同じ業界の同じ業種の事例でしか学べない人とか)

私が今まで見てきた人(エンジニアに限らず)の殆どが、結果をトレースする人は微妙な人が多く、考え方をトレースする人は成長が早く、似たような失敗を何度も繰り返さない人が多かった。