- 2019-10-02
- 2019-10-03
- 2019-10-04
- 2019-10-05
- 2019-10-10
- 2019-10-11
- 2019-10-12
- 2019-10-14
- 2019-10-15
- 2019-10-16
- 2019-10-18
- 2019-10-21
- 2019-10-21
- 2019-10-24
- 2019-10-26
2019-10-02
EmacsでreStructuredTextを書く(rst-mode)
C-c C-a C-a
で見出し文字が挿入される。
繰り返すと文字が変わる。
書いている最中に変なインデントが入ったらTABキーで是正できる。
参考:
- Emacsのrst-modeショートカット – 楽しくやろう。
- 普段使うコマンドの簡単なまとめ
- reStructuredText(reST)をEmacsで書く際のまとめ - YAMAGUCHI::weblog
- 普段使うコマンドの簡単なまとめ
- Emacs Support for reStructuredText
- rst.elの本家。上記ページからリンク有
※Emacsについては GNU Emacsについてのメモ - はとのーと にまとめました。
EmacsにGo言語用go-modeをインストールする
基本的にはemacsで快適なGo言語ライフを送るための設定 - Qiitaに従う。
ただしgolintの取得で次のエラーが出たのでURLを変更して取得した。
go get github.com/golang/lint/golint package github.com/golang/lint/golint: code in directory /home/paz/.go/src/github.com/golang/lint/golint expects import "golang.org/x/lint/golint" go get golang.org/x/lint/golint
※Emacsについては GNU Emacsについてのメモ - はとのーと にまとめました。
PHPのシングルクォート文字列とダブルクォート文字列の違い
What is the difference between single-quoted and double-quoted strings in PHP? - Stack Overflowによると以下の4種類ある。
- シングルクォートされた文字列はほとんどそのまま表示される。変数もエスケープシーケンスも展開されない。中でシングルクォートを使いたい時は
\'
、バックスラッシュを使いたいときは\\
と書く。 - ダブルクォートされた文字列はエスケープ処理され、変数も展開される。
$type
と$types
という変数がある時、"echo The $types are"
と書くと$types
が展開されるが、波括弧でecho This ${type}s are"
と書けば$type
の方が展開される。 - ヒアドキュメント
<<<識別子
はダブルクォートされた文字列として扱われる。各行の最後には改行がつく。 - Nowdoc構文
<<<'識別子'
はシングルクォートされた文字列として扱われる。各行の最後には改行がつく。
2019-10-03
初めてGitHubでPullRequestを出した
サンプルで学ぶ Go 言語:Multiple Return Valuesの「両方」が「療法」にtypoしていたのでPullRequestを出すことにしました。 初めてやったので次回以降用に手順を記録します。
GitHub上で上記ページのソースをFork。
ローカルにチェックアウトする。
git clone https://github.com/myname/go-by-example.git
修正用のブランチを作成して切り替える。
git checkout -b fix-typo-for-multiple-return-value
docs/multiple-return-values.htmlを修正し、ローカルでコミットする。
リモートにブランチを送信する。
git push origin fix-typo-for-multiple-return-value
GitHubの自分のプロジェクト上で"New Pull Request"をクリックする。
base repositoryはFork元、baseはmasterにする。 head repositoryはForkした自分のプロジェクト、compareはfix-typo-for-multiple-return-valueにする。
"Create pull request"をクリックする。 タイトルと内容を入力し、再び"Create pull request"をクリックする。
2019-10-04
Leszynski命名規則(Microsoft Access用アプリケーションハンガリアン)
- Leszynski命名規則 - Wikipedia
- Naming Conventions for Microsoft Access (Archived Microsoft Access Content)
- Web Archiveで保存されているページ。オリジナルページは削除されている。
テーブルはtbl
、クエリーはqry
などの接頭辞をつけたキャメルケースのオブジェクト名とする。
2019-10-05
Googleで一時的に英語サイトのみ検索する方法
次のURLを開く。
検索の途中だったらURLに&hl=en
を付ければよい。
VBAでスタンダードっぽい書き方
- プロシージャ名は大文字で始め、パスカルケースとする
- 変数名は型を表す小文字で始め、キャメルケースとする
- プロシージャが何であるかのコメントはプロシージャ内の先頭に書く
- エラー処理ハンドラのラベルは
ErrorHandler:
2019-10-10
ALGOLが解決したFORTRANの問題とは何か?
WikipediaのALGOLのページ には次のように書かれている。
FORTRANで明らかとなった問題を防ぐよう設計され
このFORTRANで明らかになった問題とは一体何か? Programming Language Design Issues | JoeQuery に次のような記述がある。
The success of FORTRAN caused fear of IBM's industry dominance.
つまり、FORTRANで明らかになった問題とは、IBMによる業界への支配なのではないだろうか?
端的な証拠として The History of the ALGOL Effort (pdf) にはFORTRANを排除したいヨーロッパ陣営とFORTRANを認めさせたいバッカス率いるアメリカIBM陣営との攻防が描かれている。 (ここでいう "Zürich meeting" とは The Zurich ACM-GAMM Conference のこと)
In 1958, at the Zürich meeting, FORTRAN was not considered to be the ideal universal algorithmic language
(中略)
FORTRAN is chosen because it would become the de facto standard and J.W. Backus, the leader of the group developing FORTRAN, also participated in the creation of IAL at the Zürich meeting.
2019-10-11
トップレベルが配列であるJSON
RFC 準拠的な JSON 形式について - Qiita によるとJSONのトップレベルは配列でもよいらしい。
次のようになる。
[ { "name": "睦月", "month": 1 }, { "name": "師走", "month": 12 } ]
VBA-tools/VBA-JSON: JSON conversion and parsing for VBA では次のようなコードで解析・アクセスできる。
Dim Json As Object Set Json = JsonConverter.ParseJson("[{""name"":""睦月"",""month"":1},{""name"":""師走"",""month"":12}]") Debug.Print "Count:" & Json.Count Debug.Print Json(1)("name") & ":" & Json(1)("month") Debug.Print Json(2)("name") & ":" & Json(2)("month") ' Count:2 ' 睦月:1 ' 師走:12
サーバーからHTTPで取得する方法は エクセルVBAでHTTPリクエストをする最も簡単なプログラム を参照。
2019-10-12
PHPから人間が読みやすいJSONを返すには json_encode
にオプションを付ける
PHPから人間が読みやすいJSONを返すには json_encode
に以下のオプションを付ける。
<?php echo json_encode($a, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
2019-10-14
Arch Linuxのパッケージマネージャ pacman
の削除オプション
-R
--remove
- パッケージを削除-n
--nosave
- 設定ファイルをバックアップしない-s
--recursive
- 指定したパッケージと依存パッケージが削除される-u
--unneeded
- 他のパッケージによって必要とされていないターゲットを削除する
2019-10-15
XFceでWindowsキーを押すとメニューが出るようにする
XfceでWindowsキーを押すとメニューが出るようにする設定 - Qiita
設定>キーボード>アプリケーションショートカットキーに "xfce4-popup-whiskermenu" を追加する。
「起動に使用するキーボードキーを押してください」と表示されるので Windows
キーを押して登録する。
この設定をすると Windows
キーを使う他のショートカットキーが効かなくなるため、自分は次のように設定した。
- 設定>キーボード>アプリケーションショートカットキー
"xfce4-popup-whiskermenu"
->Ctrl+ESC
- 設定>ウィンドウマネージャー>キーボード
- ウィンドウを最大化 -
Super+Up
- ウィンドウを画面左にタイル表示 -
Super+Left
- ウィンドウを画面右にタイル表示 -
Super+Right
- ウィンドウを最大化 -
2019-10-16
Emacsで単語やリージョンを大文字/小文字/キャピタライズする
- 後続の単語を
M-l
- 小文字に変換するM-u
- 大文字に変換するM-c
- 大文字で始める
- リージョンを
C-x
C-l
- 小文字にするC-x
C-u
- 大文字にする
※Emacsについては GNU Emacsについてのメモ - はとのーと にまとめました。
2019-10-18
X Window SystemのSynapticsで右クリックを2本指タップ→3本指タップに変更する
2本指でスクロールしている時にいきなり右クリックメニューが表示される時があるため右クリックを3本指タップに変更した。
まずは xinput list
でデバイスIDを調べる。
xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)] ⎜ ↳ TPPS/2 IBM TrackPoint id=12 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Integrated Camera: Integrated C id=9 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)] ↳ ThinkPad Extra Buttons id=13 [slave keyboard (3)]
SynPS/2 Synaptics TouchPad が id=11 で表示されたので、xinput list-props
でその詳細を表示する。
xinput list-props 11 Device 'SynPS/2 Synaptics TouchPad': Device Enabled (161): 1 Coordinate Transformation Matrix (163): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Tapping Enabled (298): 1 〜 中略 〜 libinput Tapping Button Mapping Enabled (304): 1, 0 libinput Tapping Button Mapping Default (305): 1, 0 〜 中略 〜 Device Product ID (287): 2, 7 libinput Drag Lock Buttons (322): <no items> libinput Horizontal Scroll Enabled (323): 1
"libinput Tapping Button Mapping Enabled (304): 1, 0" について libinput - libinput-based X.Org input driver - man page には次のように書かれている。
libinput Tapping Button Mapping Enabled
2 boolean value (8 bit, 0 or 1), in order "lrm" and "lmr". Indicates which button mapping is currently enabled on this device.
上記で "1, 0" と表示されたので、「lrm 有効」「lmr 無効」という意味になる。 (lrm はタッチした時の指が1本は左ボタン、2本は右ボタン、3本は真ん中ボタンという意味。lmr は左ボタン、真ん中ボタン、右ボタン)
これを変更するには Arch Linux では /etc/X11/xorg.conf.d/70-synaptics.conf を書き換える (はずだが自分の環境では /etc/X11/xorg.conf.d//50-synaptics.conf になっていた)。
次の行を書き換える。
(書き換え前) Option "TapButton1" "1" Option "TapButton2" "2" Option "TapButton3" "3" (書き換え後) Option "TappingButtonMap" "lmr"
X Window System を再起動し、きちんと "0, 1" に書き換わっているか以下で確認した。
xinput list-props 11 | grep "Tapping Button Mapping Enabled" libinput Tapping Button Mapping Enabled (304): 0, 1
2019-10-21
ソースコードは横○○カラムで折り返すべき?
ソースコードは横80カラム以内で折り返すべき? - QA@IT
- 折り返さないよ派
- if文の条件中に改行するとぶら下がりのインデントが気持ち悪いよ派
- 条件は別の行や関数にくくり出せばいいのに派
- 改行でプログラムのまとまりを認識している派
- if文の条件中に改行するとぶら下がりのインデントが気持ち悪いよ派
- 折り返すよ派
- メールで送ったりコメント付きで印刷しやすく派
- if文の条件中に改行したら行頭を演算子にすればOKだよ派
- 横に長すぎる行は「いやな臭い」の一種だよ派
- 折り返すよ派が推奨する折り返し文字数
- 180 (Visual Studio, eclipse)
- 130 (vi)
- 120 (Java)
- 115 (TortoiseSVNの差分表示制限)
- 80 (ターミナル)
2019-10-21
バッテリーの過充電を避けるためのスクリプト
How to Remind Unplug a Charging Laptop on Arch Linux
バッテリーの状態をチェックし、指定 % 以上になったら notify-send
でメッセージを表示している。
このスクリプトを参考に、自分の ThinkPad X220 の Arch Linux 用にスクリプトを作成した。
Battery overcharge notification script for my ThinkPad X220 under Arch Linux - Gist
2019-10-24
Apacheで各ユーザーのホームディレクトリ以下を公開するにはUserDir機能を使う
mkdir ~/public_html sudo a2enmod userdir sudo systemctl restart httpd
参考資料:
- development - Should I as a developer use var/www in conjuction with apache? - Ask Ubuntu
- UserDir を有効にする - Linux 入門
2019-10-26
CPU周波数を制限するにはcpupower frequency-set
Arch LinuxでCPU周波数の上限を制限するには cpupower frequency-set 周波数
とする。
たとえば 2GHz にするには次のようにする。
sudo cpupower frequency-set -u 2GHz
現在の状態を確認するには cpupower frequency-info
を実行する。
参考資料: CPU 周波数スケーリング - ArchWiki
それぞれのCPUコアの速度を表示するには cat /proc/cpuinfo
で "cpu MHz" の行を見ればよい。
継続して表示するには以下のように watch
で監視するとよい。
watch grep \"cpu MHz\" /proc/cpuinfo