実験記録 No.02

大阪市在住プログラマー。 翻訳とか、物理シミュレーションとかやってます。

【日本語訳】眠れる者の目覚め(The Sleeper Awakes)

眠れる者の目覚め(The Sleeper Awakes, 1899)
H.G.ウェルズ 著
H.Tsubota 訳
ライセンス:クリエイティブ・コモンズ・ライセンス 表示 - 非営利 - 継承 4.0 国際

あらすじ

1897年、イギリスで一人の男が謎の昏睡状態に陥る。眠り続けた男が目を覚ますとそこは二百年後のロンドンだった。しかも、いくつかの偶然と複利の力によって男の財産は莫大な額にまで増え、男は世界の所有者として目覚めたのだった。世界を支配する評議会、革命家オストログ、過酷な労働にあえぐ労働者たちの争いに男は巻き込まれていく。

訳者あとがき

『眠れる者の目覚め』(The Sleeper Awakes)はH.G.ウェルズによるディストピア小説で、1899年に出版された『眠れる者が目覚める時』(When the Sleeper Wakes)の改訂版として1910年に出版された。

西暦2100年のロンドンで目覚めた主人公が、享楽と退廃と奴隷的労働が渦巻くその奇妙な世界を探訪し、そこで繰り広げられる革命の争いに巻き込まれていく。

ウェルズの想像する未来の発明品や飛行機の形は(その一部が実現している)現代から見れば奇妙にも見えるが、そこで描かれる社会構造はある意味で普遍的なもので、それはカースト的階級社会、快楽主義的な上級民と奴隷労働にあえぐ労働者だ。『一九八四年』で知られるジョージ・オーウェルはオルダス・ハクスリーの『すばらしい新世界』を、いわば『眠れる者の目覚め』のパロディーである、と評している [1]

同時にまたこの小説は典型的なエンターテイメント小説でもある。主人公はいわば異世界に転生してそこで「世界の主人」となり、(当時まだ実現していなかった)飛行機での飛行が刺激的に描かれ、ヒロインとの交流や革命闘争での主人公の活躍が繰り広げられる。『宇宙戦争』や『モロー博士の島』に比べると結末はあっけないものかもしれないが、科学的・哲学的・社会学的な考察とエンターテイメントの融合という意味では実にウェルズらしい作品であるように思う。

Google App Engineでメモリー不足でサーバーエラーが起きた場合の対処方

概要

Google App Engineの更新後にウェブアプリでサーバーエラーが起きるようになったが、アプリ側のapp.yamlで設定を変えることで復旧した。

起きた現象

Google App Engine(以下GAE)のF1インスタンスのPython上で稼働していたウェブアプリが、2023年4月27日に突然、以下のようなメッセージをブラウザ上に表示してアクセスできなくなった。

Error: Server Error
The server encountered an error and could not complete your request.

Please try again in 30 seconds.

アプリのGCP上のログ[1]を確認すると、次のようなログが記録されていた。

Exceeded hard memory limit of 384 MiB with 434 MiB after servicing 0 requests total. Consider setting a larger instance class in app.yaml.

ログから判断する限り、アプリがメモリーを使い尽くして、強制終了されたようである。

問題の起きる前後で、アプリ側はいっさい変更していかったため、GAEの更新が影響しているものと考え、GAEの更新状況を確認したところ[2]、たしかに2023年4月27日に更新が行われていた。

原因の調査

問題の起きる前後でのログを比較したところ、以下のようにgunicornのワーカー数が変化していることに気がついた。

問題の起きる前

Running /bin/sh -c exec gunicorn main:app --workers 2 -c /config/gunicorn.py

問題の起きた後

Running /bin/sh -c exec gunicorn main:app --workers 4 -c /config/gunicorn.py

ここから、GAEの更新によってワーカー数が2から4に変化したために、必要なメモリー量が増え、メモリー不足となって強制終了されたと推測された。

このワーカー数の変更が意図的な仕様変更なのか、不具合なのかは不明だが、現在時点(2023年5月11日)では、ドキュメントにF1インスタンスのデフォルトのワーカー数が2であることが明記されている[3]ので、不具合の可能性がある。

問題への対応

以下のようにしてGAEでのワーカー数を明示的に指定することで、問題は起こらなくなった。

  • requirements.txtファイルに「gunicorn==20.1.0」と記載してgunicornを自前でインストールするようにする(※これを行わないとentrypoint指定で問題が起きる)。
  • app.yamlファイルに「entrypoint: gunicorn main:app --workers 2」と記載して明示的にワーカー数2を指定。

なお緊急的にはF2やF4のインスタンスに変更することでメモリー量を増やして対応することも可能だが、F2やF4では課金されるフロントエンドインスタンス時間が2倍、4倍され[4]、なおかつ単価も高くなるため費用が高くなることに注意が必要である。

参照

[1] Google Cloud console
[2] App Engine standard environment for Python 3 release notes | Google App Engine standard environment docs | Google Cloud
[3] Python 3 Runtime Environment | Google App Engine standard environment docs | Google Cloud
[4] Pricing | App Engine | Google Cloud

【日本語訳】気の向くままに(As I Please)

気の向くままに(As I Please, 1943-1947)
ジョージ・オーウェル 著
H.Tsubota 訳
ライセンス:クリエイティブ・コモンズ・ライセンス 表示-非営利-継承 4.0 国際

訳者まえがき

「気の向くままに」は週刊新聞「トリビューン」に掲載された連載コラムで、BBCを退職して「トリビューン」の文芸担当編集者に就任したオーウェルによって1943年12月から1947年4月まで連載されました。その名の通り各コラムは「気の向くままに」文学や時事について論評したものになっていて、多くの場合、1つの記事内で3つほどの別個のテーマについて論じています。

本来は各コラムにタイトルはありませんが、ここでは内容を概覧できるように翻訳者がタイトルを付けています。なお底本は「The Collected Non-Fiction: Essays, Articles, Diaries and Letters, 1903-1950」(ペンギン・ブックス, ‎2017/3/9)を使用。

目次

【2022年版】FreeCAD利用事例まとめ



































































































SVG形式からPNG形式への画像の変換方法

ベクター形式であるSVG形式の画像ファイルをPNG形式に変換する方法のメモ。Windows 10で確認済み。

数枚の場合はInkscapeを使ってGUIでファイルをインポート・エクスポートすればできるが、大量(数十枚〜)にある場合はコマンドラインでバッチ処理したくなる。

その場合はInkscapeを使ってコマンドラインで変換処理をおこなえる。以下の形式でSVG形式からPNG形式にファイルを変換する。

Inkscape 0.92の場合

>inkscape -z -w (ピクセル単位での幅) -f (SVG画像ファイル) -e (PNG画像ファイル)

例えばSVGファイル MyImage.svg を幅 300px でPNGファイル MyImage.png に変換する場合は以下の様にする。

>inkscape -z -w 300 -f MyImage.svg -e MyImage.png

あとは適当なスクリプトからこのコマンドを実行するだけ。

各オプションの意味は以下の通り

  • -z, --without-gui : InkscapeをGUI無しで実行
  • -w, --export-width=WIDTH : 出力画像の幅をピクセル単位で指定
  • -f, --file=FILENAME : 入力SVGファイル指定
  • -e, --export-png=FILENAME : 出力PNGファイル指定

Inkscape 1.0.2の場合

>inkscape -w (ピクセル単位での幅) -p (SVG画像ファイル) -o (PNG画像ファイル)

例えばSVGファイル MyImage.svg を幅 300px でPNGファイル MyImage.png に変換する場合は以下の様にする。

>inkscape -w 300 -p MyImage.svg -o MyImage.png

あとは適当なスクリプトからこのコマンドを実行するだけ。

各オプションの意味は以下の通り

  • -w, --export-width=WIDTH : 出力画像の幅をピクセル単位で指定
  • -p, --pipe : 入力SVGファイル指定
  • -o, --export-filename=EXPORT-FILENAME : 出力PNGファイル指定

オプションの確認

全オプションを確認したい場合はhelpオプションで可能。メッセージがUnicode化されていてコマンドプロンプトの場合は「chcp 65001」を実行しておかないと文字化けする場合がある。

>chcp 65001
>inkscape --help

参照

Inkscape - オプション一覧

2021/6/10:更新