投稿

2019の投稿を表示しています

縁起説

アッシジ長老がサーリプッタ長老に語ったとされる句: Ye dhammā hetuppabhavā, tesaṃ hetuṃ Tathāgato āha tesañca yo nirodho; evaṃvādī Mahāsamaṇo. なぜか「諸法(事象・現象)が縁によって生じる」と解釈され、いわゆる「縁起説」として定着している。仏教の最も基本的な思想とされているが、この句の解釈は実は違うのではないか? Ye dhammā は Tathāgato āha に係っているだけで、実質は hetuppabhavā, tesaṃ hetuṃ, tesañca yo nirodho と(四諦のうちの)三諦を言ったに過ぎない。「Ye dhammā Tathāgato āha」は単に、「如来が語られたこの法は」と言っていて、「方法(dhammā)」という単語に、事象・現象などと多義的な解釈を持たせて、何やら大げさな神秘性を帯びた体系に、仏教の位置付けを飛躍させる必要はなかったのではないかと思う。 hetuppabhavā は「原因から生まれる諸々の(複数形)もの」tesaṃ hetuṃ は「その原因(単数形)」、tesañca yo nirodho は「それら(原因から生まれた諸々のもの)が消滅するところの(原因に係る)」 つまり、全体を訳すとこうなる。 如来が語られたこの法というのは、 (一つの)原因から生じた諸々の結果(複数)と、それらの原因(単数)、 (その原因はまた)諸々の結果を消滅させる原因でもあるところのもの。 それ(その方法)を大沙門は説かれた。 結果が複数で、それら複数の結果の原因となっているものが単数であるというのが一つのポイントである( 参考 )。 そのように、神秘性の方向性なしに素直な話として解釈してみれば、その前後のコンダンニャ長老、サーリプッタ長老、モッガラーナ長老らの、最初に正見を得た時の常套句である、「生じるものは、滅する性質の云々」とイマイチ訳のわかったようなわからないようなセリフも、本来はどういうものであったかどうかが見えてくる気がする。つまり: 「諸々の結果を生じている一つの(大元となる)原因がわかれば、それは反対に諸々の結果を一挙に消滅させる鍵ともなるわけだ」 そういうやりとりだとすると、四諦→コンダンニ

日商簿記 3 級

イメージ
今日、第 152 回の 日商簿記 3 級試験 を受験してきた。 自分は、商業高校出身でも、経済・商学系の大学出身でもない門外漢の理系人間。ゼロからの完全独学独習。勉強期間は 2 ヶ月足らず。 解答時間は 35 分程度だった。満点狙い。 3 級はおそらく、商業高校の生徒なら、多くが在学中に 2 年生くらいの時に(高得点とは限らないまでも)合格してしまうのではないだろうか? 2 級の方は経済・商学系の大学では推薦入学の要素にもなることから、商業高校の生徒でも優秀な生徒に限られるとは思うが。 使用した参考書・問題集は以下の 2 セットのみ: 公認会計士よせだあつこのパブロフ流シリーズ 『簿記教科書 パブロフ流でみんな合格 日商簿記3級 テキスト&問題集 第4版』(2019-02-20) 『簿記教科書 パブロフ流でみんな合格 日商簿記3級 総仕上げ問題集 第3版』(2019-02-20) 中央経済社の検定簿記シリーズ 『検定簿記講義 3 級 商業簿記〔2019年度版〕』(2019-02-27) 『検定簿記ワークブック 3 級 商業簿記』(2019-02-27) まとめ 今 152 回から 3 級は大きく試験範囲が変わり、自営業向けだった内容が株式会社向けとなったので、参考書・問題集はちゃんと新しいもので揃えるというのがポイント。 上に紹介した 2 セットのものは、それぞれかなり性格が異なった毛色のものを組み合わせた。おそらく、それぞれが強調する視点が異っているので、片方だけでは、独学での満点狙いは厳しかったかもしれない。 結果 満点逃しました……orz 敗因 「455」を「445」と書き写しミスしたこと「のみ」による。これが満点を奪った、たった一つのミス。 書き間違えた「445K」をベースに貸倒引当金の計算も行っているため、そこから派生した項目も影響を受けて、おそらく別の採点対象の項目も巻き添えを食ってしまい、計 -6 点となったものと思われる。 合計が合わなくなるミスであれば、気付くことはできたはずなのだが、これは貸借対照表と損益計算書の両方にセットで使われる値だったため、矛盾が発生せずに、気付くことにはならなかった。 パブロフ式の著者さんでも見直し無しで解答時間が 48 分( 参考 )のところを、自

MySQL データベースのバックアップ

表のエクスポート MySQL で表を丸ごとファイルにエクスポートする場合は、SELECT * FROM table を応用した INTO OUTFILE file による指定が基本となる: SELECT * INTO OUTFILE '/mnt/data/tmp/sampletable.tsv' FROM Sample_Table; ファイル形式は TSV(TAB 区切りでエスケープ方式が TAB 区切り特有のルールとなっている。CSV よりも遥かにスマートなフォーマット) ファイルは上書き不可なので、既存の同名ファイルが存在してはならない。 参考: MySQL 8.0 リファレンス (出力先ファイル名や、表名などは一例) エクスポートした表のインポート 反対にエクスポートした表をデータベースにインポートして書き戻す場合は次の命令が対応する: LOAD DATA LOCAL INFILE '/mnt/data/tmp/sampletable.tsv' INTO TABLE Sample_Table; エクスポートしたファイルを編集してデータエントリーを付け加えてインポートし直すと、元から存在したエントリーについては warning となり skip されるだけなので、気にせずにエントリーの追加用途に利用できる。 また、一部エントリーを元のデータに追加するのではなく、元のデータを修正して上書き更新したい場合であれば、TRUNCATE 命令を使って一旦消去してから全体丸ごと LOAD し直せばよい: TRUNCATE TABLE Sample_Table; LOAD DATA LOCAL INFILE '/mnt/data/tmp/sampletable.tsv' INTO TABLE Sample_Table; 参考:SHOW WARNINGS LOAD の結果、追加したデータに何らかの不備があって WARNING が発生した場合は、直後に SHOW WARNINGS すれば WARNING 内容を確認することができる。 SHOW WARNINGS; データベースのバックアップ 表の定義を含めたデータベースのバックアップは mysqldump コマンドを使う。こ

Python で Google SpreadSheets を CSV にエクスポート

OAuth2 を含めた gspread の説明は公式のリファレンス(👉 1 、👉 2 )が参考になる。 また、CSV へのエクスポートについては Stack Overflow の記事(👉 Saving a google spreadsheet as a csv )を参考にした。 from oauth2client.service_account import ServiceAccountCredentials import gspread import csv JSON_KEYFILE = 'XXX.json' SPREADSHEET = 'テスト' WORKSHEET = 'sheet1' CSV_FILENAME = 'test.csv' SCOPE = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive'] serviceAccountCredentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEYFILE, SCOPE) gspreadClient = gspread.authorize(serviceAccountCredentials) worksheet = gspreadClient.open(SPREADSHEET).worksheet(WORKSHEET) with open(CSV_FILENAME, 'w', newline='') as csvFile: writer = csv.writer(csvFile) writer.writerows(worksheet.get_all_values())

OpenWrt on WZR-HP-AG300H: nginx

デフォルトの uHTTPd に替えて当初は Apache を入れようとしたが、マトモに動かなかった(公式のフォーラムでもそのような話が出ていた)。それで諦めかけていたのだが、どうしても Virtual Host を実現したいので、nginx を入れてみることにした。 公式 wiki に従って(PHP は使う予定がないので、該当部分は飛ばした。)入れてみると、とても軽快で、さらに設定も /etc/nginx/nginx.conf に記載された内容で行うだけという、とてもシンプルなものだった。歴史が長過ぎて半ば妖怪化しつつあるような Apache と違って、一発で気に入った。 Virtual Host は nginx.conf で server {} を追加するのが基本。 ただし、デメリットも 2 点発生した。 デフォルトでは HTTPS に対応していない CGI に対応していない OpenWrt 用 nginx の HTTPS 化 nginx 自体は HTTPS に対応しているのだが、OpenWrt 標準の nginx モジュール(.ipk)は HTTPS 非対応でコンパイルされているため、自前で nginx モジュールをコンパイルして用意しなければならない。大変だったが(nginx の HTTPS 化そのものについては、 一箇所 しか情報が存在しなかったほど、情報が限られていた)、最終的に実現できた。 【下準備】Linux で git を使える環境を整える: apt install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev subversion libncurses5-dev gcc-multilib flex gettext mercurial git clone して、ソースコードを用意する: git clone https://git.openwrt.org/openwrt/openwrt.git cd openwrt このままでは有無を言わさず最新のソースコードが使われてしまい、ライブラリーとのバージョンの不整合が起こるため、自分の使っている stable バージョンに絞って checkout する。 git checkou

OpenWrt on WZR-HP-AG300H: SFTP サーバー

/etc/config にある設定ファイルを扱う程度ならば scp コマンドで十分だが、WWW サーバーとしてセットアップすると、ファイルのアップロード作業が頻繁に発生するようになってくるので、FileZilla のような FTP クライアントを使ってファイルのやりとりが出来るように SFTP サーバーをセットアップしておくことにする。openssh-sftp-server をインストールする。 もちろん、SSH の拡張的な SFTP ではなく、ちゃんとした FTP サーバーの方をインストールする手もある。👉 FTP servers

OpenWrt on WZR-HP-AG300H: VPN サーバー

イメージ
VPN は tun モードでセットアップした(が、それとは別に tap モードでもセットアップし、両立させた)。基本的には OpenWrt 公式のガイド(👉 OpenVPN Basic )に従ったが、必ずしも公式ガイドその通りに uci コマンドを使ってセットアップせずとも、コンフィグファイルを直接編集したり、一部の操作は LuCI でも代用できると思う。 PKI の準備 PKI をセットアップ(= Easy-RSA をインストール)し、必要な証明書等を生成する。これはガイドの通りにそのまま。 👉 OpenVPN Basic: PKI VPN 用の仮想の物理インターフェースの作成と、論理インターフェースの作成 仮想の物理インターフェース tun0 を紐付けた論理インターフェース vpn_router を作成する。プロトコルは none(LuCI 上では Unmanaged と表示される)👉 OpenVPN Basic: Network また、これは独自にやり方を見出したが、tap モードでセットアップすることもでき、物理インターフェース tap0 を作った場合は、論理インターフェースを新設せず、論理インターフェース lan の物理インターフェースの一つとして tap0 を追加するだけで良い(上のスクリーンショット。論理的に lan の一部として存在するので、tun モードの場合のように、Firewall の設定をする必要はない)。 OpenVPN Services OpenVPN サービスをセットアップ(= openvpn-openssl をインストール)し、設定する。ガイドでは uci コマンドを使っているが、luci-app-openvpn をインストールすれば、LuCI の GUI でも代用できないことはないと思う。ガイドの uci コマンドでは環境変数を使って自動化している部分があり、何らかの理由で不具合がある場合には、あとで適宜設定を修正する必要があるかもしれない。また、VPN 用のネットワークアドレスも、自分で使いたいものに修正する。👉 OpenVPN Basic: VPN-Service ポート番号が重複しないようにすれば、同時に、tun と tap のサーバー(上のスクリーンショットの router_server と

OpenWrt on WZR-HP-AG300H: ブリッジ化

イメージ
WZR-HP-AG300H では初期状態ではルーターとしてセットアップされている。つまり、図においての物理インターフェース eth1 が論理インターフェースの wan に紐付けられている状態である。 Network > Interfaces 設定 なので、論理インターフェース的に wan と lan の二段構成になっている状態を解消して、単なるブリッジ状態にするには、LuCI 上で Network > Interfaces 設定で wan のエントリーを削除した上で、lan の Physical 設定で物理インターフェースの eth1 を lan に紐付け、さらに IPv4 のアドレス、ネットマスク、ゲートウェイ等の設定を UP ポート側の LAN に合わせたものにすればいい。基本的にこれだけで ok のはずである。 作業上の注意としては、先に wan のエントリーを削除して lan の設定をする前の段階で、一旦変更を反映させてしまうと、UP ポートが単に使えない状態になってしまい、UP ポートに LAN ケーブルを接続して設定作業をしていたならば、LuCI 自体にアクセスできない状態になり、焦ってしまうかもしれない点である。Wi-Fi か、LAN ポートに LAN ケーブルを接続すれば問題ないはずである。 Network > Switch 設定 初期状態では VLAN がセットアップされており、LAN ポート 1 〜 4 は、VLAN のノード 1 である eth0.1 に属している。VLAN を使わないのであれば、VLAN 関係の設定を削除して、単純に eth0 で扱っても良さそうだが、もしかしたら、一度試して支障が生じたことがあるかもしれない。現状では LuCI から Enabled を切るだけにして、/etc/config/network の VLAN の項目自体は無理に削除せずに放置している(Enabled を切ると、option enable_vlan '1' が削除されるだけである)。 /etc/config/network 以上のような形で、/etc/config/network の内容は、wan のエントリーが削除され、lan のエントリー部分が以下のようになった: config int

二階堂重人氏のデイトレード本

二階堂重人『 最新版 株デイトレードで毎日を給料日にする! 』(すばる舎、2018-11-27) 株自体の入門書でもないのに、ロウソク足や信用取引についての説明にページ数を割くなど、どうでもいい情報があるので、「デイトレードのテクニックそのもの」についての情報は薄い。ポイントとしては 2 点程度か。 デイトレ銘柄のキャッチの仕方 チャートによる売買タイミング 以上の 2 つの次元で構成されるという点は特に目新しいものではない。銘柄の選別はランキングを使う等の漠然とした話で、ありふれた手法だと思う。唯一、この本の中で詳細かつ具体的に著されているのは、ボリンジャーバンドと変動平均を組み合わせた売買タイミングの方法だけだと思う。 著者のボリンジャーバンドと変動平均を組み合わせた売買タイミングの方法 +2σ を上抜けする急上昇 +1σ を割る反落 5 分足の 12 本変動平均(1 時間分)を割らずに反発 +1σ を抜けて 12 本変動平均がサポートとなる押し目を形成したことを確認 以上で速やかに in する。 この手法の主旨としては、急上昇の動きをキャッチしようとするところ(トレンドフォロー)にあるが、+2σ を上抜けしたからといって、トレンドフォローが正解の場合と、反対に反落する逆張りが正解の場合があり、これだけではバクチとなる。そのため、一旦反落して押し目を作り、再度、本格的な上昇が開始する前に乗ってしまおうという作戦だろう。押し目狙いなので、まず一旦は反落して一休みする流れは必要であるが、押し目となって再度本格的な上昇が始まるか、そのまま反落して元の黙阿弥になってしまうかを、1 時間分の変動平均がサポートとして機能しているかどうかを基準にしているわけである。 空売りの場合はそのまま上下対称のやり方となる。 ちなみに、利益確定については、特に定まった手法はないようだ。

WZR-HP-AG300H with OpenWrt

2 台目となる Buffalo の Wi-Fi ルーター親機 WZR-HP-AG300H をメルカリで入手した。ちなみに 1 台目は友人が不要になったものをたまたまもらっただけで、特に WZR-HP-AG300H であることを狙ったわけではない。もらってしまってから、DD-WRT というカスタムファームウェアに書き換えられること、それによって、OpenVPN が使えるということを知り、Buffalo 公式の OEM ファームウェアで使える(セキュリティ性能が脆弱な)PPTP ではなく OpenVPN を是非使いたかったので、それだけが目的で DD-WRT にしてみたという経緯であった。なので特に元の OEM ファームウェアに戻すことなど考えずに、その時はただ DD-WRT(v24-sp2 (12/22/14) std - SVN revision 25697)化した。 2014 年頃で DD-WRT の方は(少なくとも WZR-HP-AG300H 用については)安定版のリリースが停滞してしまっている( 専らベータ版のみ )。せめて KRACK 対策された安定版が欲しいところ。一方、 OpenWrt の方は今でも WZR-HP-AG300H 用の最新版が用意されている。 さらに、OpenWrt は色々と追加パッケージを自分で好きなように入れることができ、中には、Asterisk や Python やデータベースのパッケージもあるという。これは OpenWrt に俄然、興味を惹かれた。 またよくよく調べてみると、昔の時点だけでなく 2019 年の今に至るまで、OpenWrt 用の Buffalo 製ハードとしては WZR-HP-AG300H はメチャクチャ最適な機種らしいということがわかってきた。 型番の AG というのは、Wi-Fi の周波数が 5GHz 帯の IEEE 802.11a と 2.4GHz 帯の IEEE 802.11g の両対応という意味のようで、これ以前の機種や廉価版機種では G のみの型番のものが多く(それらはハードオフなどでも見捨てられてジャンクとして転がっている)、Wi-Fi 性能の点で一線を画している。さらに型番の 300 は IEEE 802.11n の通信速度 300Mbps のことだろう。 とはいえ、後に 3x3 MIMO

西澤ロイ『頑張らない英文法』

図書館で予約していた、西澤ロイ『 頑張らない英文法 』(あさ出版、2014年)が 2、3 年以上かかって順番が回ってきた。 自分自身が独学で体得していたことが、大学の英語学科で学んだ専門家の言っていることとほとんど一致していることを確認できた。筆者がこの本で解説していることは、基本的に中学英語の範囲の文法事項だが、この中学英語の範囲の文法事項を、このような形で理解しているということが重要である。テスト勉強用の知識としていくら中学英語を 100 点満点の状態でインプットできていたとしても、意味がないのである。 個人的には、自分のような体得に至っていない人には、この本は自分が人に英語を教える時に強調して言っていることと重複しているので、購入、一読をお勧めできる本である。 自分自身として、この本を読んで一つだけ、得られたことは、情報の先後で意味合いが違うため、能動態と受動態といったような書き換えられた文の意味に違いが生じるという点である。情報の先後による違い自体は自分なりに理論を構築していたが、能動態と受動態などの書き換えによって生じる意味の違いについては、特に生じるか生じないかということ自体を意識することはなかったため、これについては一つの収穫だった。 自分が理工学系的発想で築いた独自理論は、筆者がこの本で解説しているものよりも、さらにアグレッシヴにカスタマイズされているのだが、少なくとも、この本に書かれていることは、自分が学校教育の英語の文法とは違って独自に編み出したものと、同じ考え方が述べられていたので、それが決して的外れな我流理論というわけでもないことが確認できて良かった。