Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

小学校でひらがなの読みを教えるか?という話

  • (A) 小学校の授業は自国語で行われるんだから、自国語の話す・聞く・読む・書くはある程度できる状態で小学校に入ってくる前提だ、という考え方。たとえば「移民の多い土地では自国語で授業ができず問題となっている」という例が論拠として挙がる。
  • (B) 自国語の話す・聞く・読む・書くは小学校で始めて習うんだから、全くできない状態で小学校に入ってくる前提になっていないとおかしい、という考え方。たとえば「インドには地元の言葉は使用禁止の小学校がある、しかもエリート校だ」「日本統治時代の台湾の公学校では日本語で授業が行われていた」「日本でも方言を使う土地では学校以外で標準語にあまり触れていないケースがある」という例が論拠として挙がる。

(特に小学校の)プールの運用方法

  • (A) 夏、屋外のプールが終わっても水を張ったままにしておき、翌年の春、プール開きの前に虫やカエルなど水生生物の観察をする文化。そのあとプールに繁茂した藻やら何やらを一生懸命に掃除して、やっとプール開き。
  • (B) プールは必ず屋内に設置されているので、藻なんか生えないし、虫もいない。毎年藻が繁茂するようなプールなんて不衛生で泳げない、という文化。

夏の気温が低い土地だと、プールの水温が低すぎてプール授業が行えないことがある(文科省基準では水温≧20℃、よくある自治体基準では水温[℃]+気温[℃]≧45)ので、水温や気温を上げるために屋内プールになっているみたいですね。
そういう人が、関東地方の市民プールや児童プール((A)の状態であることが多い)を見て「汚なくて、とても子供を入れられない」と思うのも無理からぬことなのかもしれません。

GitLabのworker_processesの設定

GitLabのunicornの設定のうち、worker_processes(プロセス数)はCPUコア数+1がおすすめ、という話がGitLabのドキュメントに載っている。
https://docs.gitlab.com/ee/install/requirements.html#unicorn-workers
なんだけど、これってだいたい奇数になるし、それにスループットしか見てないのでは?という疑念が。

  1. GitLabをOmnibus package経由でインストールすると、GitLabの前段にnginxを置く構成になる。ここで、前段のnginxの設定のworker_processes, worker_connectionsの設定と合わせて、unicornのプロセス数を、nginxからGitLabに入ってくるコネクションx2にしないと、複数のリクエストが同時にGitLabに到達した場合、1つのリクエストが1つずつプロセスを掴んだままスタベーションを起こして、そのまま処理がタイムアウトするケースがある。参考: https://docs.gitlab.com/omnibus/settings/unicorn.html
  2. プロセス数が奇数だと、最初に処理を開始したプロセスと、後追いで割り当てられたプロセスとで、タイムアウトのタイミングがバラバラになるから、片方のプロセスだけがタイムアウトする危険性がある。

GitLabの挙動自体に問題が出るケースとしては上記の2つだけど、他にも、2つのプロセスを同時に割り当てられたリクエストと、1つずつバラバラに割り当てられたプロセスとで、nginxのログに残るリクエストごとのターンアラウンドタイムにばらつきが出るから、負荷テストのときなんかにその理由を説明する必要がある、という開発運用上の問題もあるのでは……

小さな生き物を使った「実験」

  • (A) 子供が小さな生き物を「実験台」にして遊ぶのは、よくあることだし実験や科学的な知識に興味を持たせるのによい、という考え方。
  • (B) 生き物を「実験台」にするのは残酷で、許されることではない、という考え方。

たとえば私の地元は(A)の考え方で、友人の父親(私の親があの人は人格者だとよく言っていた)が、空き缶にアマガエルを入れて焚き火に放り込み、即席骨格標本を作って見せてくれた。
他にも、NHK夏休み子ども科学電話相談の先生が「昆虫のさなぎを解剖しても大丈夫、先生が許す」と言ったりするのも(A)の考え方だと思う。
一方で、シリアルキラーに対して「むやみに脊椎動物を殺さないこと」という常識を指導をしたという話(ソースどこだっけ)もあって、これは(B)の考え方によるものなのかな〜と思う。

Memory Consumption to Read XMLs in PowerShell

Background

PowerShell has an useful function to read and parse XML files: [XML]. But reading XML files and (especially) building DOMs are memory consuming function.

Question

How much memory do you need to read XML files with [XML]?

Methods

See http://d.hatena.ne.jp/N_Nao/20111226/1324926173 for mem.sh.

$ cat xml.ps1
$XML = [XML](Get-Content "./test.xml")
$ ls -l test.xml; ./mem.sh pwsh xml.ps1
-rw-rw-r-- 1 satob satob 7756  420 01:04 test.xml
'pwsh xml.ps1' -> Max RSS = 84172 KB.
$ ls -l test.xml; ./mem.sh pwsh xml.ps1
-rw-rw-r-- 1 satob satob 84556  420 01:04 test.xml
'pwsh xml.ps1' -> Max RSS = 85500 KB.
$ ls -l test.xml; ./mem.sh pwsh xml.ps1
-rw-rw-r-- 1 satob satob 929356  420 01:05 test.xml
'pwsh xml.ps1' -> Max RSS = 118520 KB.
$ ls -l test.xml; ./mem.sh pwsh xml.ps1
-rw-rw-r-- 1 satob satob 6395116  420 01:06 test.xml
'pwsh xml.ps1' -> Max RSS = 368376 KB.

Result

# (A) XML Size[KB] (B) Memory Consumption [KB] (C) Delta from #1-(B) (C)/(A)
1 8 84,172 - -
2 85 85,500 1,328 15.6
3 930 118,520 34,348 36.9
4 6,400 118,520 284,204 44.4

Consideration

  • Memory consumption of [XML] is 20~40x as large as the target XML file.
  • Memory/XML size ratio (C)/(A) can be larger when the XML size is larget.