hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

Qiitaの記事をmarkdownファイルで保存する

概要

Qiitaの退会がいて既にみれなくなっている記事もあるかと思いますが、
ストックしてたい記事がなくなるととても残念です。 まだ公開されているものはlocalに保存しておくのも手の人ではないでしょうか。

やりかた

qiita.com こちらを参考にして保存したい記事のURLを取得してファイルに保存しておきます。
今回はqiita_urls.txtをつくり、 取得したいURLをファイルに複数行設定して以下のコマンドを実行しました。

cat qiita_urls.txt | xargs -n1 -I{} bash -c "curl -sS {}.md > \$(echo {} | awk -F / '{print \$NF}').md"

簡単ですね。

まとめ

これで一旦保持したい記事はローカルに残すことができそうです。

コロナウイルスはどれくらい小さいの?

概要

技術的な話では全く無いのですが
以前から少し気になっていたコロナウイルスの大きさに関してブログにしてみました。
興味のある人は読んでいただきたいです。

大きさの比較

実際にμm(マイクロメートル)やnm(ナノメートル)という単位が出てきますが、

1mmの1/1000が1μm 1μの1/1000が1nm です。

それだけだとよくわからないので比較して見たいと思います。

米粒

縦 5mm 横 3mm 厚みは 2mm 程度だそうです。

スギ花粉

まずは春先によく悩まされる スギ花粉 です。

ja.wikipedia.org

30μmから40μm ということです。

杉から飛散してる動画をみたことがありますが、目にみえるぐらいというとかなり集まってるんでしょうね。
今年も症状が出る日もあるのでマスクを早く手に入れたいところです。

黄砂

続いては黄砂です。
こちらも春先になると飛んできますね。
東アジアの砂漠域(ゴビ砂漠タクラマカン砂漠など)や黄土地帯から強風により吹き上げられた多量の砂じんだそうです。

粒の大きさなのですが 1μm - 30μmのものが多いうです。

ja.wikipedia.org

PM2.5

続いてはPM2.5これは最近良く耳にします。 空気清浄機で除去されるようなことを謳い文句にしてるところもありますね。 微小粒子状物質で物の燃焼などによって直接排出されるものと、硫黄酸化物SOx)、窒素酸化物(NOx)、揮発性有機化合物(VOC)等のガス状大気汚染物質だそうです。

大きさは 2.5μm以下の超微粒子だそうです。

https://ja.wikipedia.org/wiki/%E7%B2%92%E5%AD%90%E7%8A%B6%E7%89%A9%E8%B3%AA#PM2.5%EF%BC%88%E5%BE%AE%E5%B0%8F%E7%B2%92%E5%AD%90%E7%8A%B6%E7%89%A9%E8%B3%AA%EF%BC%89:embed:city

インフルエンザウイルス

ウイルスといえばインフルエンザのイメージが強いです。 大きさは 1-2µm 小さいですね。

ja.wikipedia.org

細菌

代表的な細菌だとビフィズス菌、乳酸菌などの腸内細菌ですかね。 実際に目にすることはなかなかないと思いますが、 大きさは菌によってまちまちかと思いますが、

1μmということです。 こちらはインフルエンザと同じくらいということでしょうかね。

PM0.1

ダイソンの空気清浄機がPM0.1までの超微小粒子を99.95%除去できるとありますが、 0.1μmなので100nmということですね。 すごいなダイソン

コロナウイルス

コロナウイルスの大きさですが、 直径80-220nm程度だそうです。 小さいですね。

ja.wikipedia.org

仮定

コロナウイルスを100nm お米が 3mmだとすると
30000倍するとお米の大きさになります。

ここでコロナウイルスをりんごほどの大きさだと仮定すると
りんごが 10cm ほどの大きさなので、
直径3kmの大きさが米粒になってしまいます。 3kmのお米想像しただけででかいw

奇しくも
地球の大きさをりんごの大きさに例えてるケースを見かけますが、
そのときの公転円周の直径が3kmになるということなので、
如何にウイルスが小さいかがわかりますね。

まとめ

コロナウイルスは小さいんですね。 新型コロナウイルスがどれほどの大きさかはわかりませんが、 飛沫と一緒に空気中に舞っているようです。

飛沫の大きさはまちまちあるようですが、 1mmぐらいの大きのから小さな物があるようです。 小さい飛沫は5 から3マイクロメートル程度と言われているようです。

コロナウイルスは飛沫と一緒に空気中に舞ってるようなので、
十分に換気してる場所の方が安全ということですね。 また閉塞した場所での爆発的な感染が今回の新型の特徴なので十分に注意したいですね。

参考URL

病原体:ウイルスと細菌と真菌(カビ)の違い|これからの衛生管理 | 大幸薬品株式会社
不織布マスクの性能と使用時の注意
新型コロナウイルス 閉鎖空間で短時間浮遊の可能性 :日本経済新聞
www.youtube.com

Railsのescape_javascriptの脆弱性対応を適応する

概要

Railsのバージョンが6.0.2.2に上がっています。

weblog.rubyonrails.org

CVE-2020-5267 の脆弱性が含まれていました。 詳細はこちらを確認することでできます.

github.com

適応

Rails6.0.2.1を使っていたため

Gemfileを変更して 6.0.2.1を6.0.2.2に変更します。

rails ~> 6.0.2, >= 6.0.2.2

変更したらupgradeします。

bundle upgrade rails
Fetching zeitwerk 2.3.0 (was 2.2.2)
Fetching nokogiri 1.10.9 (was 1.10.8)
Installing zeitwerk 2.3.0 (was 2.2.2)
Fetching activesupport 6.0.2.2 (was 6.0.2.1)
Installing activesupport 6.0.2.2 (was 6.0.2.1)
Installing nokogiri 1.10.9 (was 1.10.8) with native extensions
Fetching actionview 6.0.2.2 (was 6.0.2.1)
Installing actionview 6.0.2.2 (was 6.0.2.1)
Fetching actionpack 6.0.2.2 (was 6.0.2.1)
Installing actionpack 6.0.2.2 (was 6.0.2.1)
Fetching actioncable 6.0.2.2 (was 6.0.2.1)
Fetching railties 6.0.2.2 (was 6.0.2.1)
Fetching activestorage 6.0.2.2 (was 6.0.2.1)
Fetching actionmailer 6.0.2.2 (was 6.0.2.1)
Installing actioncable 6.0.2.2 (was 6.0.2.1)
Installing actionmailer 6.0.2.2 (was 6.0.2.1)
Installing activestorage 6.0.2.2 (was 6.0.2.1)
Installing railties 6.0.2.2 (was 6.0.2.1)
Fetching actiontext 6.0.2.2 (was 6.0.2.1)
Fetching actionmailbox 6.0.2.2 (was 6.0.2.1)
Installing actiontext 6.0.2.2 (was 6.0.2.1)
Installing actionmailbox 6.0.2.2 (was 6.0.2.1)
Fetching rails 6.0.2.2 (was 6.0.2.1)
Installing rails 6.0.2.2 (was 6.0.2.1)
Installing rails 6.0.2.2 (was 6.0.2.1)

影響のあるgemがバージョンアップされていることを確認できます。

確認

rails consoleから適応されていることを確認します。

変更前

pry > helper.j '$`aaa`'
=> "$`aaa`"

変更後

pry > helper.j '$`aaa`'
=> "\\$\\`aaa\\`"

正しく変更されています。

テストコードがある方はテストを実行して All Green であることを確認するとよいですね。

参考URL

Rails 6/5とRubyのJSON gem向けセキュリティ修正がリリース|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社

CVE-2020-10663: JSON における安全でないオブジェクトの生成の脆弱性について(追加の修正)

Comparing v6.0.2.1...v6.0.2.2 · rails/rails · GitHub

Qiitaのユーザページに読んだ記事の項目が追加されたけど取りやめられたことに関して

Qiitaのユーザページに読んだ記事の項目が追加されて取り止められたことに関して

私のQiita

Twiiterでいろいろ炎上してますが、 私の表示も確認してみました。

f:id:hotoolong:20200326114604p:plain
読んだ記事あり

全然記事は書いてないのですが、
読んだ記事だけ見るとVim,Ruby,Railsの人みたいですね。

blog.qiita.com

Qiitaからの通知があり、読んだ記事は一旦非公開になってしまいました。

f:id:hotoolong:20200326114751p:plain
読んだ記事なし

こんな感じになりました。

私の場合は見られても問題情報かなとは思いつつ、 Twitterのアナリティクスのように個人で見れる状態だけにとどめて置くほうが良かったのではと思います。

影響

この情報が表示されデータが保持されていることに対して 退会される方が増えてきてます。

退会されるのは自由なのですが、

Qiitaが今まで培ってきたエンジニアの知識のインフラのようになってきているので 保持されている情報が無くなってしまうというのはかなり辛いですね。

オプトアウトはキャンセルできるが

まさにこのツイートの通り、ここが退会への引き金になってるんでしょうね。

退会したユーザアカウントの脆弱性

ユーザが退会した後の問題がちらほら出てきてますね。

経験則なのでなんとも言えないのですが、
退会後のユーザの扱いに関しては、優先度が著しく落ちることがあるので、
個人情報の扱いなどもそうですが、このあたりを些末に扱うと痛い目あいますよね。

記事が消えるのが心配な方へ

とあるようにマークダウンにして保持できるようです。

まとめ

  • 行動情報の扱い
  • オプトアウトはできる取り扱いに簡単にキャンセルできない

このようなことがキーワードだとおもいます。

blog.qiita.comには 本日(3月26日)17時ごろを目処に、改めてアナウンス とあるのでどのようなアナウンスになるか静観しようかと思います。

(3/19-3/30) 【40%OFF以上】新生活キャンペーン Kindle本

イントロ

連続して電子書籍のフェアです。

今回は新生活キャンペーン Kindle本です。
前回のセールと同時期の3/19-3/30にIT系の書籍も安くなっています。

pickup

  • The DevOps 逆転だ!究極の継続的デリバリー (¥1,210)

  • Girls Who Code 女の子の未来をひらくプログラミング (¥990)

  • はじめて学ぶソフトウェアのテスト技法 (¥1,320)

  • プログラムはなぜ動くのか 第2版  知っておきたいプログラムの基礎知識 (¥1,320)

  • CODE: コードから見たコンピュータのからくり (¥1,375)

  • 【電子合本版】Code Complete 第2版 完全なプログラミングを目指して (¥5,500)

  • コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識 (¥1,320)

まとめ

こちらも以前のセールと同様にIT系の書籍以外でもたくさんセールになっているので 気になる方はこちらのリンクからどうぞ!

(3/19-3/30) 【40%OFF以上】Kindle本春の大セール

イントロ

またもや電子書籍のフェアばかり取り上げてしまっていて恐縮です。

今回はKindle本春の大セールということで3/19-3/30にIT系の書籍も安くなっています。

pickup

  • React.js & Next.js超入門 (¥1,485)

React.js & Next.js超入門

React.js & Next.js超入門

  • Vue.js&Nuxt.js超入門 (¥1,485)

Vue.js&Nuxt.js超入門

Vue.js&Nuxt.js超入門

  • ITエンジニアになる! チャレンジDocker仮想化環境構築入門 (¥1,485)

  • 子どもの才能を引き出す最高の学びプログラミング教育 (¥666)

  • 続AIにできること、できないこと---すっきり分かる「最強AI」のしくみ (¥1,155)

まとめ

IT系の書籍以外でもたくさんセールになっているので 気になる方はこちらのリンクからどうぞ!

fishファイルのfiletypeをneovim(vim)で認識させてコメントするのを簡単にする

neovimでfishファイルを開いたときにコメントしたい行があったのですが、 適応されなかったので無理やり適応してみました。

ファイルを開いてfiletypeを確認します。 以下のサイトに記載されているのを参考にして

wonderwall.hatenablog.com

set filetype?

すると空っぽだったので

~/.config/nvim/init.vim に*.fishに対してfishというfiletypeを追加します。

autocmd BufNewFile,BufRead *.fish setfiletype fish

サイドfishファイルを開いて set filetype? をすると

  filetype=fish

となったので認識されたようです。

次に tcomment.vim の 設定を追加します。 再度 init.vim に 以下を追加して

if !exists('g:tcomment_types')
  let g:tcomment_types = {}
endif
let g:tcomment_types = {
  \    'fish': '#'
  \  }

再度 fishファイルを開いてコメントしたい行にいき コメントするためのKeyをタイプします。 私はデフォルトのままつかってるので C--です。 これでコメントアウトできました。