ねえぶ

猫好きエンジニアのブログ

先月読んだ本と今月の読書予定(2018年7月)

先月の読書実績

漫画,雑誌は除いています.

実績 Fav
数学ガール
なっとく!アルゴリズム
カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで
🆕 イノベーションのジレンマ―技術革新が巨大企業を滅ぼすとき
  • 時間がうまく作れなくてあまり読書できなかった

今月の読書予定

新規・継続
数学ガール
なっとく!アルゴリズム
イノベーションのジレンマ―技術革新が巨大企業を滅ぼすとき
🆕 アナタはなぜチェックリストを使わないのか?【ミスを最大限に減らしベストの決断力を持つ!】

先月読んだ本と今月の読書予定(2018年6月)

先月の読書実績

漫画,雑誌は除いています.

実績 Fav
いちばんよくわかるHTML5&CSS3デザインきちんと入門
ミライのつくり方2020―2045 僕がVRに賭けるわけ
ほとけ様に教わった 毎日をハッピーにする90の方法
数学ガール
なっとく!アルゴリズム
カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで
エリック・エヴァンスのドメイン駆動設計
  • DDDは難しく頭に入ってこないので,第10章まで読んで一旦読むをやめた
  • 数学ガール結構難しい(特に母関数).1巻読み終わったら次読む前に秘密ノートシリーズを先に読もうかな.

今月の読書予定

新規・継続
数学ガール
なっとく!アルゴリズム
カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで
🆕 イノベーションのジレンマ―技術革新が巨大企業を滅ぼすとき

先月読んだ本と今月の読書予定(2018年5月)

先月の読書予定と実績

雑誌は除いています.

実績 Fav
Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語
仕掛学
Newton 対数の威力」
Newtonライト『統計のきほん』
Newtonライト『ベクトルのきほん』
いちばんよくわかるHTML5&CSS3デザインきちんと入門
エリック・エヴァンスのドメイン駆動設計
  • DDDがまだまだ全然読み終わらない・・・(ちょうど半分くらい)
    • 第2部まで終わったら一旦読むの止めるかも
  • 仕事でCSSの基礎がわかってないことが判明したから,急いでCSSの勉強を割り込みさせて読んでいる
  • 雑誌も先月から読み始めたけど,Newtonはやはり面白い!

今月の読書予定

新規・継続
エリック・エヴァンスのドメイン駆動設計
🆕 なっとく! アルゴリズム
🆕 数学ガール

三楽の森公共緑地・貫井神社を散策

通勤路がコンクリートジャングルなので,たまに自然に触れるために公園や神社などを散策しています.

1ヶ月前ですが,3月25日(日)に三楽の森公共緑地に行ってきました! また,その近くにあった貫井神社にも寄ってきました.

基本情報

三楽の森公共緑地

浅間神社

アクセス

JR国分寺駅南口から徒歩で向かいました.三楽の森までは20分くらいでした. 三楽の森の入口は北側のみなので注意です!

三楽の森公共緑地

公園前と,入口を入ったところにある看板. 所有者の前田さんに感謝!

緑地内には様々な木々が生い茂り,ちょうど春先だったので新芽も見られ,とても気持ちよい空間でした.

私の好きな竹林もありました!!

貫井神社

帰りに三楽の森近くにある貫井神社にも寄ってきました.

こちらの神社は境内に池があり,掛かる橋を渡って拝殿に向かいます. 池には鯉や亀が!

本坪鈴は1つ.よい音色でした.

少し外れたところには八雲神社愛宕神社があるのですが,閉まっていました. 昔あった神社なのかな? この2つの神社がある森を抜けて北側に歩いたのですが,よい雰囲気でした.

その他

三楽の森のすぐ近くに小学校があり,校門に大きな桜の木があったのですが,これがまた壮観でした.

冬の公園散策もよいですが,春先はまた温かい陽気でよいですね!

NeomakeでEslintが動かない場合の対処

以下のブログを参考にSyntasticからNeomakeに乗り換えてみたのですが,私の環境ではEslintがうまく実行されませんでした.

[Vim]SyntasticによるESLintチェックが遅いのでNeomakeに乗り換えた - dackdive's blog

TL;DR

次のようにしたら動きました.

NeoBundle 'neomake/neomake'
NeoBundle 'benjie/local-npm-bin.vim'

augroup ft_javascript
  autocmd!
  " get eslint path of current environment
  function! s:GetEslintExe()
    let l:eslintExe = GetNpmBin('eslint')
    if empty(l:eslintExe)
      return 'eslint'
    else
      return l:eslintExe
    endif
  endfunction

  " set exe of neomake eslint
  autocmd FileType javascript let g:neomake_javascript_myeslint_maker = {
        \ 'exe': s:GetEslintExe(),
        \ 'args': ['-f', 'compact'],
        \ 'errorformat': '%E%f: line %l\, col %c\, Error - %m,' .
        \ '%W%f: line %l\, col %c\, Warning - %m'
        \ }
augroup END

let g:neomake_javascript_enabled_makers = ['myeslint']
let g:neomake_error_sign = {'text': '>>', 'texthl': 'Error'}
let g:neomake_warning_sign = {'text': '>>',  'texthl': 'Todo'}
call neomake#configure#automake('nrw', 750)

環境

  • Mac 10.13.3
  • MacVim 8.0

現象

参考ブログに倣ってインストールしてみましたが,ローカルのeslintがなく,グローバルのeslintだけある場合にNeomake実行時に次のようなエラーが出ました.

19:31:12 [D +7.45] [-.-:1:1] automake: handling event FileType.
19:31:12 [D      ] [-.-:1:1] Using setting automake.ignore_filetypes=['startify'] from 'global'.
19:31:12 [E +0.02] [-.-:1:1] Exe () of maker eslint is not executable.
19:31:12 [D      ] [-.-:1:1] automake: configured buffer for ft=javascript (no enabled makers).
19:31:12 [D      ] [-.-:1:1] automake: setting tick for new buffer.
19:31:12 [D      ] [-.-:1:1] automake: no enabled makers.

エラーログは次のような設定を入れて出力させました.

let g:neomake_verbose = 3
let g:neomake_logfile = '/tmp/neomake.log'

また,この時:NeomakeInfoを実行すると,eslintのexe項目が空文字でした.

原因

ローカル環境のeslintを使うように調整してくれるbenjie/local-npm-bin.vimが,ローカル環境のeslint(node_modules/.bin/eslint)が見つからない場合にeslintのexeに空文字を設定するようになっていたのが原因でした(該当コードGetNpmBin()はローカル環境の実行ファイルが見つからない時に空文字を返す).

参考ブログのbenjie/neomake-local-eslint.vimから名前から変わっているから,動作が当初から変わってしまったのかな?

解決策

  • myeslintというmakerを新たに定義して,filetypeがjavascriptに変わる時に現在のローカル環境のeslintをmakerのexeにセットするようにしました
  • benjie/local-npm-bin.vimeslintmakerを上書きしてしまうタイミングが後になるからか,eslintmakerをvimrcで書き換える方法ではうまく動きませんでした
" filetype: javascript
augroup ft_javascript
  autocmd!
  " get eslint path of current environment
  function! s:GetEslintExe()
    let l:eslintExe = GetNpmBin('eslint')
    if empty(l:eslintExe)
      return 'eslint'
    else
      return l:eslintExe
    endif
  endfunction

  " set exe of neomake eslint
  autocmd FileType javascript let g:neomake_javascript_myeslint_maker = {
        \ 'exe': s:GetEslintExe(),
        \ 'args': ['-f', 'compact'],
        \ 'errorformat': '%E%f: line %l\, col %c\, Error - %m,' .
        \ '%W%f: line %l\, col %c\, Warning - %m'
        \ }
augroup END

その他

  • 参考ブログではautocmdでNeomakeの実行を設定していましたが,公式の方法に則って以下のようにしました
call neomake#configure#automake('nrw', 750)

syntasticからNeomakeへの乗り換えで変更したdiffは↓で確認可能です.

https://github.com/ottijp/dotfiles/compare/4f8f4690a53cfde376367ac990efc54d59c217fd...36e6207e5a4f290b96dc2eeeb2a0d911ac7666ea

先月読んだ本と今月の読書予定(2018年4月)

先月の読書予定と実績

実績 Fav
Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語
エリック・エヴァンスのドメイン駆動設計
エンジニアのための時間管理術
人を動かす「仕掛け」
  • DDDがかなり分量があって遅読家にはちょっとつらい(^^;
  • Swift本はあと残り1章

今月の読書予定

新規・継続
Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語
エリック・エヴァンスのドメイン駆動設計
🆕 なっとく! アルゴリズム

SlideShareのアカウントを凍結された話

TL;DR

  • SlideShareのアカウントを凍結された
  • サポートが全く使えなくて,結局凍結も解除されなかった
  • SpeakerDeckに乗り換えた

経緯

勉強会で発表した資料を共有するために,去年(2017年)の12月からSlideShareを使っていました.アカウント自体は数年前から作ってあり,他の人の資料をFavしたりしていました. アップロードしたのは計2回で,2017年12月と2018年2月です.

後者の2018年2月にアップロードした1日後くらいにアカウントが突如凍結されました. 凍結後はLinkedInアカウントでOAuthした直後に↓のようなエラーになりログインができませんでした.

f:id:ottijp:20180304141456j:plain

Oops! Something went wrong. Please try again later.

また,connpass等に貼った資料は↓のようにエンベッドされたスライドがエラー表示されていました.

f:id:ottijp:20180304141507j:plain

This presentation has been removed as it was reported as violating SlideShare Terms of Service. It is no longer available. Try finding related content from the SlideShare Homepage.

アップロードした資料

凍結直前にアップロードした資料はこちら(リンクはSpeakerDeckにもアップしたもの)です. SpeakerDeckではサポートされていませんが,10スライド目の次にこのYouTubeリンクも入れていました.

凍結した理由

サポートのやり取りでも結局教えてもらえず,何が利用規約違反だったのかわかりませんでした. こちらのブログでサポートにアンセーフなリンクがあると教えてもらって,それを直してアカウントの一時停止を解除してもらったとあったのでそれに期待していたんですが・・・.

サポートとのやりとり

Contact Usページから質問を投げました. すると次のように回答をもらいました.

I'm really sorry for taking long to get back and for the inconvenience this has caused.

In order to look into it further, I request you to please provide me with the screenshot of the steps you are following before encountering the error. Once I get this inforamtion, I'll look into it right away. Here's a link with instructions on how to create a screenshot if you need it: https://help.linkedin.com/app/answers/global/id/223 .

Also, please send me the file you're trying to upload so that I can look into it from this end.

Once I get this information, I'll look at it right away!

手順のスクリーンショットとアップロードしたファイルを送るようにと言われたので,その通りにしました.

すると,送ったファイルのことには全く触れず,次のような返事が来ました(ここでサポートの人が変わっていた.) スクリーンショットをすでに送っているのにまたスクリーンショットを送れと言われ,ここでサポートに疑心を持ち始めました.

I'm sorry you're experiencing issues using LinkedIn. Did you try switching to a different browser? For example, if you were having problems when using Chrome, did you try it again with Internet Explorer, Microsoft Edge, Firefox, Safari, or Opera browsers?

Here's a current list of supported internet browsers: https://www.linkedin.com/help/linkedin/answer/4135

If you've tried these solutions but continue experiencing issues, reply with the following details:

• An explanation of the issue

• The browsers and versions you've tried

• A screenshot ( https://www.linkedin.com/help/linkedin/answer/223 ) of your issue to better understand what you're dealing with

Once we have this information we'll be able to better assist you.

Thanks for your patience as we work through this.

一応言われたとおり3つの異なるブラウザで試し,それらのバージョンとともに現状が同じであることを伝えました. また,添付したファイルを確認してくれたのかを聞き,アカウントが凍結されているのを疑っていることを伝えました.

すると,次の回答です.

Please use the link below to reset the password and access your account.

Password Reset Link:

http://www.linkedin.com/uas/request-password-reset

I've also sent a password reset email to your primary email account. If you don't see it there, please check your spam, social network, or junk folders for our password reset email. To make sure LinkedIn messages aren't sent to the folders mentioned above, try adjusting your filters to always receive emails from trusted email domains like LinkedIn.com. Here's how: http://help.linkedin.com/app/answers/global/id/5367.

Additionally, we'd like to recommend that you review the current registered email addresses associated with your account and remove any outdated ones. We strongly recommend that you have at least two valid email addresses attached to your account. This way, if you lose access to your main email address, you'll still have other email addresses where we can send password reset messages. You can review and add email addresses from here: https://www.linkedin.com/settings/?modal=nsettings-manage-email

IMPORTANT:

o Remove any existing characters in the "Enter new password" field and then re-enter your new password.

o If you receive an error message using the link above, confirm that https://www.linkedin.com is a trusted site in your browser's security settings and try again.

If you're still unable to sign in after changing your password, clear your browser's cookies and saved passwords. It may prevent entering unintended login information and should resolve the issue.

Instructions for Clearing Your Cache and Cookies:

https://help.linkedin.com/app/answers/global/id/1285

Removing Old Saved Passwords from Your Browser:

https://help.linkedin.com/app/answers/global/id/5354

I sincerely hope you're able to get back into your account and will gladly help if you have any other questions.

またもや人の話は無視してテンプレのパスワードリセット案内でした. 全然話が通じてなくて辛かったです.

ちなみに,

I've also sent a password reset email to your primary email account.

と言っていますが,スパム振り分けも含め確認してもメールは来ていなかったので,自分でリセット処理をしました.

ぐっと堪えて,言われたとおり一応パスワードリセットをし,現状が変わらないことを伝えました. また,送った添付ファイルを見ているのかと,こちらの質問に答えてほしいことを再度伝えました.

そして来た回答がこちら.

Thanks for your reply.I'm sorry we've made you wait so long and for the inconvenience this has caused. I truly appreciate your patience.

We suspend and disable SlideShare accounts that violate our User Agreement. This includes:

Unsolicited contact with others for the purpose of harassment, advertising, selling, dating, or any other inappropriate conduct.

Providing false credentials for the purpose of creating an account.

Impersonation of any individual, entity, or other misrepresentation of identity.

Posting content that violates our terms (i.e. advertisements, spam, etc.).

If you have further questions, please feel free to reply to this message.

やっとアカウントが利用規約違反で凍結されていることは教えてくれました. どうしたら問題を修正し,アカウアントを正常化できるかを聞きました

Due to the sensitive nature of your request, I've forwarded this message to our Safety team.

Please understand that your issue may require some additional research, which may delay their response. But, someone from that team will get back to you as quickly as possible.

If you're able to access your account, you can check the status of your case at any time from the Your cases tab on LinkedIn Help. Learn more here: https://www.linkedin.com/help/linkedin/answer/43378.

Thanks for your patience as we look into this for you.

セーフティチームとやらに回されました. そして来た最終回答がこちら.

In regards to your Slideshare account, due to User Agreement violations, that account has been permanently restricted.

たった1文でした.

永久に凍結・・・.

しかも勝手にissueはcloseされてました.

こっちの質問には全然答えてくれず,最終的に冷たく見放されて,なんだかすごく悔しかったです.

で,どうしたか

SlideShareは嫌いになったので,SpeakerDeckに乗り換えました. まったく同じ資料をアップロードしていますが,こちらでは特に問題になっていません.

まとめ

利用規約は読んでますが,どの条項にも違反しないスライドだと自信を持っています. もし違反していたとしても,理由も告げず一発退場でアカウント凍結され,救済措置も無いのはかなり辛いです. 自分のスライドだけではなく,いままでFavしてきたスライド一覧も見られなくなってしまいました.

SlideShareとSpeakerDeckの違いとして,機能の比較はよく見ますが,規約の厳しさやサポートの良し悪しはあまり語られることが無いように思います. どちらもそんなに長く使っているわけではないのであまり強くは言えないですが,私の場合はSlideShareですごく嫌な思いをしたので,SpeakerDeckを推します.

これからスライド共有サービスを利用しようとしている方には,サービス利用にあたり,こういったリスクもあることを知っておいてもらいたいです.