main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);)",34);}[ref] Henry S.Warren,Jr., "ハッカーのたのしみ", 株式会社星雲社 (2004), まえがき
$ nkf --ic=utf8-mac charcorr.text #oka $ iconv -f utf8-mac -t utf8 charcorr.text #? $ convmv -f utf8 --nfc -t utf8 --nfd --notest charcorr.text #? emacs 正規化コマンド #未確認 ucs-normalize-NFC-region ucs-normalize-NFD-region
$ type -a hoge hoge is aliased to `echo alias-hoge' hoge is a function hoge () { echo func-hoge } hoge is ~/bin/hoge $ cat ~/bin/hoge echo command-hoge $ hoge #エイリアスが動く alias-hoge $ command hoge #明示的に、外部コマンドを動かす command-hoge $ a="hoge"; $a #関数が動く。エイリアス展開しない。関数は外部コマンドよりが優先する func-hoge #関数内ではローカル変数 local a="hoge"; $a にするとよい $ ¥hoge func-hoge #関数が動く。エイリアス展開しない。関数は外部コマンドよりが優先する
$ IFS=$' \t\n'
$ cat <(ls -1) <(command)の結果をファイルとして catが読み込む感じ
$ ls -1 > >(wc) >(command)のファイルに lsがリダイレクションで書き込む感じ。 $ a.out >(wc) ファイルに出力する a.outが、直接、出力を別のコマンドに渡すことができる。 a.out thefile ; cat thefile | wc と同じだろう
shopt [-p] #with no options or -p, a list options is displayed
# -sはon -uはoff shopt -s histappend # append to the history file shopt -s checkwinsize # checks the window size after each command shopt -u huponexit #デフォルト, send SIGHUP to all jobs by logout
変数variableの値について、部分的な削除や置換をする場合、次のようにできる。
${variable#pattern} 先頭からもっとも短く一致した部分を削除 ${variable##pattern} 先頭からもっとも長く一致した部分を削除 ${variable%pattern} 末尾からもっとも短く一致した部分を削除 ${variable%%pattern} 末尾からもっとも長く一致した部分を削除 ${variable/pattern/string} もっとも長く一致した部分をstringに置換(最初のひとつだけを置換) ${variable//pattern/string} もっとも長く一致した部分をstringに置換(一致したすべてを置換)
Ctrl-rを押したのち、検索文字をタイプするとインクリメントサーチが行われる。 次のものを検索したい場合は、文字をタイプせずに、Ctrl-rを押す。 Ctrl-rを押しすぎて、前にもどる場合には、Ctrl-sでもどれる。 (emacsの操作法と同じである) なお、通常、端末はCtrl-sでスクロールロックが掛かる(解除はCtrl-q)。 スクロールロックを無効にするために、 $ stty stop undef を一度しておく。もしくは、.bash_profileに記載しておく。
あらかじめ .bashrcに例えばデフォルトで HISTSIZE=1000 HISTFILESIZE=2000 とあったらコメントアウトするか(後方で再設定している場合)、両方とも200000くらいにする。 (後方で、HISTSIZE,HISTFILESIZEを大きく再設定していても、この段階で履歴数が切り詰められるようなので) ログイン後、 cat .bash_history1 .bash_history2 > temphis history -a history -c history -r temphis #memo: cat ... > temphis や history -a が含まれない、完ぺきではない。なぜ? history -w .bash_history1+2 #確認 history -w ログアウト (うまくいかなかたらログアウト後に .bash_history1+2を WinSCPなどで .bash_historyにファイル変更するなどする)
キャッチしたときの挙動は、プログラムの実装次第と思われる
# man 7 signal から。数字はシグナル番号 INT (ctrl+C) # 2, interrupt, キーボードからの割り込み QUIT # 3, quit, キーボードによる中止 TERM # 15, termmination, 終了 KILL # 9, kill(キャッチされなく、問答無用で終了)
WinSCPを立ち上げて最初の画面で、保存したセッション→選んで、編集ボタン→環境→ ファイル名をUTF-8でエンコード、を自動はダメで、オンにする。 (接続先がUTF-8やSJISでもちゃんと表示されるようになる)
すべてのプログラム→アクセサリ→コンピュータの簡単操作→拡大鏡 又は、 Windowsロゴキー+プラス(+) Windowsロゴキー+ESC で終了する。
Windowsで、AGDRec.exeを起動(コーデック:ここでは設定を変更しない、コンコードモード:バッファリング を選ぶ。後で変更可) → インディケータのアイコンを右クリックし、 1) 領域指定録画 で、キャプチャ領域を指定する 2) 設定 で、コーデックを無圧縮、オーディオ入力デバイスを使用しない、を選択しておく。 バッファリングエンコーディングを選ぶ(カクカクしないように)。 3) 録画開始・録画停止 → Adobe Premiere elementsで mp4に変換する(縦横の画面サイズ比で不足分は黒背景になり、クロップ できないようだ。特に縦長の動画はそのまま編集できなく(Premiere Proなら可能らしい)、左右に黒帯が できる。これらの黒帯は AviUtlでクリッピングして削除できる。) # 単にファイルを読み込む → 右上の書き出し・配信 → 携帯電話・携帯プレイヤ # → 種類はApple TV,iPad,iPhone4の720p 29.97で良い
Adobe Premiere elementsのツール → パンとズーム → 内側のフォーカスフレームを消す。外側のは クリップしたいように配置する → 完了
タイムラインにあるビデオクリップについて、 時間クリップを再生速度を変更したい先頭に移動し、鋏マークをクリック →終わりに移動し、鋏をクリック(範囲を指定)→その範囲をクリックして選択 →右クリック→タイムストレッチ→100%を200%にすると2倍速くなる。
トランジションのアイコン→回転、などを選び、動画間にドラッグドロップ →1秒、左のクリップ、などを選び→完了
上のテキストメニュー→新規テキスト→初期設定のテキスト →テキストを入力。 (色は、テキストを選択しておき、カラープロパティで変更可)
ビデオクリップの上で右クリック→90°回転 →適宜、拡大縮小可(適用エフェクト、でも回転や拡大縮小が可)
du -s -SG ディレクトリ名 #Gbyte単位でディレクトリ階層の合計サイズが得られる
(例) $ expr `date -d"Fri Dec 15 12:50:43 JST 2017" +%s` - `date -d"Fri Dec 15 12:45:06 JST 2017" +%s` 337
起動後→データ→データディスク→ファイル→ISOディスクイメージファイルからディスク作成 →isoファイルを選択→スタート(書き込みする)→DVDを入れる →書き込み後に記録データとソースデータを確認してください、にチェックを入れる
スキャナの電源を切る、PCを再起動する。(他の手段もあり。) キャノンのQ&A
windowsで作られたzip(おそらく)が、次のエラーでlinuxで解凍できないとき。 $ unzip hoge.zip Archive: hoge.zip warning [hoge.zip]: zipfile claims to be last disk of a multi-part archive; attempting to process anyway, assuming all parts have been concatenated together in order. Expect "errors" and warnings...true multi-part support doesn't exist yet (coming soon). error [hoge.zip]: missing xxxxx bytes in zipfile (attempting to process anyway) error [hoge.zip]: attempt to seek before beginning of zipfile (please check that you have transferred or created the zipfile in the appropriate BINARY mode and that you have compiled UnZip properly) 以下の修復を試すと解凍できるようだ。zipのバージョンはなるべく新しいものを使う。 $ zip -F hoge.zip --out hoge_mod.zip $ unzip hoge_mod.zip
$ rpm2cpio パッケージファイル名 | cpio -im 取り出したいファイル名
m メールアドレス メール送信。メッセージの終わりは . である h /var/mail/ユーザ名 にあるメール一覧。カレントの選択は >印 である q 終了 x 何もせず終了 数字 数字で示されているメールを表示。ただのenterでは >印 を表示 d [数字] 数字で示されているメールを削除。ただのenterでは >印 を削除 help コマンド一覧 list コマンド一覧(沢山)
/.mailrc 起動時に実行するコマンドを記載できる。例えば、
set noholdが有用である。>O印 (既読マーク)のメールを q終了時に~/mboxに保存する設定である。
$ htpasswd -nb username hogehogepassword
/etc/ssh/ssh_config で、 Host * のところに ServerAliveInterval 600 #デフォルト0(しない)から 600秒毎にheartbeatを送る。 ServerAliveCountMax 3 #デフォルトの値(600*3=10minサーバーから応答が無いと切断する) を追加する。
cygwin$ ssh user@host.eit.hirosaki-u.ac.jp -Y Warning: No xauth data; using fake authentication data for X11 forwarding. /usr/bin/xauth: file /home/user/.Xauthority does not exist host$ logout cygwin$ xauth add :0 . `mcookie` #←これをする xauth: file /home/user/.Xauthority does not exist #気にしない cygwin$ xauth list cygwin/unix:0 MIT-MAGIC-COOKIE-1 edf222c5df4c5c2ae777776555a7382c cygwin$ ssh user@host.eit.hirosaki-u.ac.jp -Y hoge$
コンテンツとしてのページは、ページ名がEUCエンコードされた ファイル名.txt となって wikiディレクトリに保存されている。ファイル名をUTF-8エンコードのファイル名に変換する。 ツールencls.phpを使用( https://pukiwiki.osdn.jp/dev/?BugTrack/2186 で説明されている https://ja.osdn.net/cvs/view/pukiwiki/devel/encls.php?view=log からダウンロードする。 実行には php7.2-mbstring のパッケージが必要なのでインストールしておく。) (注) attachディレクトリの添付ファイルは、数が少なく、英語のファイル名だったものは そのまま利用可能である。日本語のファイル名だったものは、文字化けするがページ上の ファイルアイコンをクリックしてダウンロードができる。そのため、手動で適宜復旧すること とした。その他 backup, cache, counter, diffディレクトリは初期状態のまま(リセット されたような状態)としすることとした。 なお、ダウンロードするとattachの .logファイルが更新される。日付が新しくなるので、 ファイルしたファイルが、attach上のどのファイルなのかの対応がわかる。 以下、手順 $ cd wiki #1.4.7のwikiディレクトリ EUCエンコードされたファイル名をUTF-8エンコードのものに変更する。 なお、encls.phpによって出力されるファイル名の先頭には UTF-8 が付く。 $ for f in *.txt; do mv $f `./encls.php $f`; done ファイルの中身をEUCからUTF8に変更 $ for f in UTF-8*.txt ; do nkf -Ew $f > EUC$f; done オリジナルのファイルを別ディレクトリtmpに移動、あとで削除する。 作業途中のファイルリストをtempファイルに作成する。 $ mkdir tmp; mv [0-9A-F]*.txt tmp $ ls -1 EUCUTF-8*.txt > temp ファイル名とファイルの中身をUTF-8に変換したファイルについて、ファイル名の先頭に 付いている EUCUTF-8 を削除する。 $ for f in `cat temp` ; do echo $f | sed 's/EUCUTF-8//'; done #事前確認 $ for f in `cat temp` ; do mv $f `echo $f | sed 's/EUCUTF-8//'`; done #削除 以上のように作った wikiディレクトリを、1.5.1のwikiディレクトリとする。
katex.inc.phpファイルを puluginフォルダに置く。 katex.inc.php (ver 0.13.0)
skin/pukiwiki.css.php と skin/tdiary.css.php にある span.size[1-7]内の、font-size:hogehoge; を font-size:hogehoge :not(.katex); に変更する。
KaTexを使うページに、#katex をいちどだけ書いておき、$と$ または $$と$$ の間に式を書く。
#katex $y=ax^2+bx+c$ や $$ y=ax^2+bx+c ~(センタリングされる) $$ 別の例、$ \int_0^\infty \bigl\{rR_n{}^l(r)\bigr\}^*\bigl\{rR_{n'}{}^l(r)\bigr\}\,dr=\delta_{nn'} $
とすると、
$y=ax^2+bx+c$ や $$ y=ax^2+bx+c ~(センタリングされる) $$ 別の例、$ \int_0^\infty \bigl\{rR_n{}^l(r)\bigr\}^*\bigl\{rR_{n'}{}^l(r)\bigr\}\,dr=\delta_{nn'} $
となる。
なお、式にエラーがあると、整形されないまま表示される。
https://ssltools.digicert.com/checker/views/checkInstallation.jsp にURLを入れる。 証明書のタイプは、EV, OV, DV の種類がある。
allium$ cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) allium$ gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
allium$ echo | gcc -O3 -E -v - 2>&1 | grep cc1 /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1 -E -quiet -v - -mtune=generic -march=x86-64 -O3 allium$ echo | gcc -Ofast -E -v - 2>&1 | grep cc1 /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1 -E -quiet -v - -mtune=generic -march=x86-64 -Ofast allium$ echo | gcc -Ofast -march=native -E -v - 2>&1 | grep cc1 /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1 -E -quiet -v - -march=core-avx2 -mcx16 -msahf -mmovbe -maes -mpclmul -mpopcnt -mabm -mno-lwp -mfma -mno-fma4 -mno-xop -mbmi -mbmi2 -mno-tbm -mavx -mavx2 -msse4.2 -msse4.1 -mlzcnt -mno-rtm -mno-hle -mrdrnd -mf16c -mfsgsbase -mno-rdseed -mno-prfchw -mno-adx -mfxsr -mxsave -mxsaveopt -mno-pku --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=3072 -mtune=core-avx2 -Ofast
-Ofast Disregard strict standards compliance. -Ofast enables all -O3 optimizations. It also enables optimizations that are not valid for all standard-compliant programs. It turns on -ffast-math and the Fortran-specific -fno-protect-parens and -fstack-arrays. -ffast-math Sets -fno-math-errno, -funsafe-math-optimizations, -ffinite-math-only, -fno-rounding-math, -fno-signaling-nans and -fcx-limited-range. This option causes the preprocessor macro "__FAST_MATH__" to be defined. This option is not turned on by any -O option besides -Ofast since it can result in incorrect output for programs that depend on an exact implementation of IEEE or ISO rules/specifications for math functions. It may, however, yield faster code for programs that do not require the guarantees of these specifications. -fno-math-errno Do not set "errno" after calling math functions that are executed with a single instruction, e.g., "sqrt". A program that relies on IEEE exceptions for math error handling may want to use this flag for speed while maintaining IEEE arithmetic compatibility. This option is not turned on by any -O option since it can result in incorrect output for programs that depend on an exact implementation of IEEE or ISO rules/specifications for math functions. It may, however, yield faster code for programs that do not require the guarantees of these specifications. The default is -fmath-errno. On Darwin systems, the math library never sets "errno". There is therefore no reason for the compiler to consider the possibility that it might, and -fno-math-errno is the default. -funsafe-math-optimizations Allow optimizations for floating-point arithmetic that (a) assume that arguments and results are valid and (b) may violate IEEE or ANSI standards. When used at link-time, it may include libraries or startup files that change the default FPU control word or other similar optimizations. This option is not turned on by any -O option since it can result in incorrect output for programs that depend on an exact implementation of IEEE or ISO rules/specifications for math functions. It may, however, yield faster code for programs that do not require the guarantees of these specifications. Enables -fno-signed-zeros, -fno-trapping-math, -fassociative-math and -freciprocal-math. The default is -fno-unsafe-math-optimizations. -ffinite-math-only Allow optimizations for floating-point arithmetic that assume that arguments and results are not NaNs or +-Infs. This option is not turned on by any -O option since it can result in incorrect output for programs that depend on an exact implementation of IEEE or ISO rules/specifications for math functions. It may, however, yield faster code for programs that do not require the guarantees of these specifications. The default is -fno-finite-math-only. -frounding-math Disable transformations and optimizations that assume default floating-point rounding behavior. This is round-to-zero for all floating point to integer conversions, and round-to-nearest for all other arithmetic truncations. This option should be specified for programs that change the FP rounding mode dynamically, or that may be executed with a non-default rounding mode. This option disables constant folding of floating- point expressions at compile time (which may be affected by rounding mode) and arithmetic transformations that are unsafe in the presence of sign-dependent rounding modes. The default is -fno-rounding-math. This option is experimental and does not currently guarantee to disable all GCC optimizations that are affected by rounding mode. Future versions of GCC may provide finer control of this setting using C99's "FENV_ACCESS" pragma. This command-line option will be used to specify the default state for "FENV_ACCESS". -fsignaling-nans Compile code assuming that IEEE signaling NaNs may generate user-visible traps during floating-point operations. Setting this option disables optimizations that may change the number of exceptions visible with signaling NaNs. This option implies -ftrapping-math. This option causes the preprocessor macro "__SUPPORT_SNAN__" to be defined. The default is -fno-signaling-nans. This option is experimental and does not currently guarantee to disable all GCC optimizations that affect signaling NaN behavior. -fcx-limited-range When enabled, this option states that a range reduction step is not needed when performing complex division. Also, there is no checking whether the result of a complex multiplication or division is "NaN + I*NaN", with an attempt to rescue the situation in that case. The default is -fno-cx-limited-range, but is enabled by -ffast-math. This option controls the default setting of the ISO C99 "CX_LIMITED_RANGE" pragma. Nevertheless, the option applies to all languages. -fno-protect-parens By default the parentheses in expression are honored for all optimization levels such that the compiler does not do any re-association. Using -fno-protect-parens allows the compiler to reorder "REAL" and "COMPLEX" expressions to produce faster code. Note that for the re-association optimization -fno-signed-zeros and -fno-trapping-math need to be in effect. The parentheses protection is enabled by default, unless -Ofast is -fstack-arrays Adding this option will make the Fortran compiler put all local arrays, even those of unknown size onto stack memory. If your program uses very large local arrays it is possible that you will have to extend your runtime limits for stack memory on some operating systems. This flag is enabled by default at optimization level -Ofast.