投稿

R7800 OpenWrt(hnyman ビルド)のファイアーウォールの変更箇所

イメージ
ゲートウェイルーターの置き換え計画の下、新しく入手した NetGear R7800 のファイアーウォール設定を、初期状態から変更した箇所を解説。※原則として /etc/config/firewall を直接編集するのではなく、LuCI の GUI を通じて設定しており、以下に掲載する Traffic Rules は、その GUI 操作による結果が反映されたものである。 デフォルト設定 config defaults option syn_flood '1' option input 'ACCEPT' option output 'ACCEPT' option forward 'REJECT' 変更せず。lan ゾーン config zone option name 'lan' list network 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' 変更せず。wan ゾーン config zone option name 'wan' list network 'wan' list network 'wan6' option input 'REJECT' option output 'ACCEPT' option forward 'REJECT' option masq '1' option mtu_fix '1'「option mtu_fix '1'」を削除。これは WAN 側がモデムを介したプロバイダー側ネットーワークに直結しているケースを前提とした設定のものと思われ、実家の LAN 環境での LAN 間に設置する GateKeeper として運用するこのルーターでは不要。フォワーディング設定 config forwarding optio…

need, require, want 等の目的語となる動名詞

My car needs to be repaired.My car needs being repaired.My car needs repairing.👉「動名詞と TO-不定詞の使い分け」で述べたように、これもやはり、動名詞と to-不定詞の根本的違いの観点から理解すれば特に不可解なことはない。1. My car needs to be repaired.本質的に to-不定詞は M であり、need は自動詞として存在するから、意味上の主語は SV の S と同じである。従って to-不定詞句は受動態で表現することになる。2. My car needs being repaired.動名詞句 being repaired は他動詞 need の目的語(O)である。S は O に他動詞を介して働きかける関係であるから、O の意味上の主語が my car となることは S と O が一致することとなり、他動詞の原理的に有り得ない。つまり、意味上の主語は S の my car 以外の他者を意味しているので、being repaird という受け身ではなく repairing という能動表現が適切である。ちなみに、being repaird とすると、受動表現ではなく、my car 以外の他者を意味上の主語とする進行形表現となってしまう。3. My car needs repairing.要するにこれは My car needs someone('s) repairing. の someone が不特定の人物なので明示せず省略された表現と考えれば良い。もちろん、repair する人物が特定している状況においては当然、My car needs the mechanic's repairing. という形の表現となるだろう。

動名詞と to-不定詞の使い分け

動詞によって目的語に動名詞を取る場合と to-不定詞を取る場合、両方を取る場合がある。動詞+動名詞動詞+to-不定詞両方(意味は同じ)両方(意味が異なる)このような分類を受け容れると、結局はそれぞれの動詞群を暗記するしかなくなる。動名詞と to-不定詞の根本的な違いで理解するならば、そのような必要はなくなる。1. 動詞+動名詞ex. avoid, deny, enjoy, finish, mind, stopこの場合、本質的に動詞は他動詞であり、SVO の O として動名詞が存在する。なので、O の具体的存在感が重視される。2. 動詞+to-不定詞ex. afford, expect, hope, pretend, wishこの場合、本質的に動詞は自動詞であり、SVM の M として to-不定詞が存在する。なので、SV によって叙述が一応完結し、to-不定詞は付加的情報としての漠然とした曖昧模糊とした存在感となる。3. 両方(意味は同じ)ex. begin, continue, like, start日本語に訳す場合に同じ表現になるというだけで、本当は違うことになる。4. 両方(意味が異なる)ex. forget, remember, regret, stopSVO か SVM かの違いが、「過去〜現在」の具体性か、「未来」の漠然性か、という違いを生むことになる。要するに 4 ケースに分けてそれぞれの動詞群を暗記するようなことをする必要はなく、単に、「動詞+動名詞(SVO)か、動詞+to-不定詞(SVM)か」ということを理解していれば良い。

動名詞の意味上の主語

Do you mind my smoking?Do you mind me smoking?動名詞の意味上の主語が、「述語動詞の目的語との混同で目的格(この例では me)となる場合がある」という説明がよくされるが、間違っている。後者の smoking は動名詞ではなく、分詞であり、目的語 me を修飾する形容詞である。名詞と形容詞の区別は極めて初歩的な物事のはずだが、それができていない場合は、たとえ英語の専門教育を受けていて教育に携っているような人であっても、解説の方は信用してはならない。ただ、その道の情報について博識だというだけの話。私の喫煙行為を気にしますか?喫煙する私のことを気にしますか?そもそも、より本質的なことを言うと、「動名詞」なんて分類もおかしな話で、あくまでも分詞、そのうちの名詞的用法に過ぎないわけなのだが。

疑問詞+to-不定詞

I don't know what to do with him.特別視する必要はなく、単なる名詞+不定詞(形容詞的用法)である。彼と一緒にするべき何か(を、私は知らない)要するに疑問詞 what はここでは名詞である。

m3u8 ファイルをダウンロードして ffmpeg で MP4 に変換・結合

.m3u8 形式の動画ファイルを公衆 Wi-Fi 環境でダウンロードして、後で部屋でゆっくり観ることができるようにする要請が生じたため、調べてみた。.m3u8 ファイル自体をダウンロードするFirefox 版の動画ゲッターを使った。動画の視聴を始めると、プラグインが .m3u8 を認識し、.m3u8 ファイルをダウンロードできるようになる。動画ゲッターでは .m3u8 ファイルの中身の .ts ファイルもダウンロードできるが、そこまでする必要はない。動画ゲッターでダウンロードした .m3u8 の中身 #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1500000 https://???.cloudfront.net/???/???.m3u8 #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1500000,URI="https://???.cloudfront.net/???/???_iframe.m3u8" 動画ゲッターでダウンロードした .m3u8 ファイルの中身の https://???.cloudfront.net/???/???.m3u8 のアドレスを ffmpeg コマンドの入力ファイルとして使った。ffmpeg で .m3u8 ファイルから MP4 に変換・結合するffmpeg を使うのがシンプルかつ強力なので、Homebrew で ffmpeg をインストールした。インストール brew install ffmpegffmpeg コマンド ffmpeg -protocol_whitelist "file,crypto,http,https,tcp,tls" -i ???.m3u8 -c copy -bsf:a aac_adtstoasc out.mp4m3u8 の中身である断片化された多数の .ts ファイルのダウンロードは ffmpeg が処理過程でサラリとやってくれる。

GIMP の Python-Fu でウォーターマークの自動付加

イメージ
100 個近くの一組のファイル画像群のウォーターマークを一斉更新する必要が生じたので、この機に GIMP の Python-Fu を使ってみることにした。エラーがない状態でないと、Python-Fu スクリプトとしての認識自体がされない。Python-Fu スクリプトとして認識させるために、一定のフォーマットを整える必要がある。Python 2.x に基いているようなので、Unicode の扱いや str.format など 3.x と違う点に留意しなければならない。macOS では ~/Library/Application Support/GIMP/2.10/plug-ins に置く。上述のように、そもそもデバッグが不可能なので、スクリプトとして正常に認識されるフォーマットのスケルトン状態から一つ一つの機能を確実に実装して確認していくやり方でスクリプトを完成させていくのが適切な開発手法だろう。使える機能(pdb.*)のリファレンスはヘルプ > プロシージャーブラウザーにある。 # -*- coding: utf-8 -*- from gimpfu import * WATERMARK = 'https://www.scaredeer.com' def watermark(infile, outfile): pdb.gimp_context_set_foreground((255, 255, 255, 255)) # RGBA image = pdb.gimp_file_load(infile, 'background') pdb.gimp_image_scale(image, 350, 600) # 縮小 background = pdb.gimp_image_merge_visible_layers(image, EXPAND_AS_NECESSARY) pdb.gimp_rotate(background, 0, pi) # 180°回転 text_layer = pdb.gimp_text_layer_new(image, unicode(WATERMARK, 'utf-8'), 'Arial Bold', 18, 0) p…

R7800 OpenWrt(hnyman ビルド)のファイアーウォールの初期設定

イメージ
OpenWrt は fw3 を使っている。fw3 では iptable を直接いじるのではなく、設定ファイル(/etc/config/firewall 等)から一連の iptable を生成して、それを netfilter に渡す。netfilter に渡される iptable 自体はかなり複雑でユーザーが直接いじれるものではなくなっている。従って、fw3 に渡す設定ファイルの方を扱うことを考えればよく、UCI や LuCI で CUI/GUI を通じて操作するのも、設定ファイルの方である。 デフォルト設定 config defaults option syn_flood '1' option input 'ACCEPT' option output 'ACCEPT' option forward 'REJECT' グローバルに適用されるデフォルト設定(👉 Defaults)。通信のルーター自身への出入は許可し、通過は拒絶する。syn_flood プロテクションを on。lan ゾーン config zone option name 'lan' list network 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' lan のゾーン設定(👉 Zones)。lan 側インターフェース(lan)をこのゾーン(lan)に割り当て、全ての通信を許可。wan ゾーン config zone option name 'wan' list network 'wan' list network 'wan6' option input 'REJECT' option output 'ACCEPT' option forward 'REJECT' option masq '1' option m…

SyntaxHighlighter から Prism へ移行

プログラムのサンプルコードの表示用のツールを SyntaxHighlighter から Prism へ移行した。このサイト(www.scaredeer.com)は Blogger で運用しており、Blogger の記事・ページとして生成されるファイル以外に、自分で任意のファイルを置けず、当然、Prism 用のファイル(prism.css と prism.js)も設置できない。仕方ないので、DNS の設定でサブドメイン www2 の A レコードを追加して、別サーバー(nginx で運用)を用意し、そこに設置した Prism 用のファイルをこの Blogger から指し示すようにして運用している(👉 Blogger と独自ドメインの設定)。Blogger のテーマの HTML のカスタム箇所 <head> ... <link href='https://www2.scaredeer.com/prism/prism.css' rel='stylesheet'/> </head> <body> ... <script src='https://www2.scaredeer.com/prism/prism.js'></script> </body>

Favicon Generator

イメージ
Favicon Generator (realfavicongenerator.net) を使って SVG 画像から各種 favicon とそれ用の head 内記述用タグを自動生成できる。 今回は、Blogger サイト用の favicon を生成して、Blogger の外部サイト(www2.scaredeer.com)を用意してそこに各種の favicon データを置いてみた(👉 Blogger と独自ドメインの設定)。Blogger の favicon ガジェットを使うと、自動で 16x16 に圧縮された物凄く汚ないアイコン画像しか使えないからである。以下、Blogger のテーマの HTML を修正するわけだが、その場合の注意点:各タグが閉じられていないので、タグの最後の > の直前に / を入れて /> の形式にしておく必要がある。head 内記述用タグの挿入する位置は CSS 定義よりも前にした方が良い(自分はテーマ HTML の viewport 定義と title の間にした)。そうしないと、meta theme-color が反映されなかった。cf. This value is used by the user agent to draw the background color of a shortcut when the manifest is available before the stylesheet has loaded.生成される manifest のファイル名が web.manifest となっているが、これは json ファイルなので、manifest.json にファイル名を変更して Web サーバー側で .json ファイルとして適切に MIME が認識されるようにした。これに伴って、head 内記述用タグの manifest のリンク先も修正した。ついでに manifest の中のエントリーとして description の情報も補っておいた。head 内記述用タグmanifest.json { "name": "ししおどし", "short_name": "鹿威し", "description&q…