IT memo/Programming Memo
[
Front page
] [
New
|
List of pages
|
Search
|
Recent changes
|
Help
]
Start:
* プログラミングのためのTIPS [#uf7699ac]
よく忘れるチョイネタは、しっかりとメモしておこう。
#contents
** Fortran [#b5e5c4ce]
*** unformattedなsequentialの入出力 [#r9d30534]
- 衝撃の事実! unformattedでsequential なアクセスの場合、...
要は、カタマリの間には8バイトのスペース(?)が入って、一...
たぶん、いまさら気づいているのが遅いんだろうけど、今までD...
*** formattedなsequentialの入出力 [#h0b54c6e]
- いまさらでいうと、formattedの自由書式(*)のとき、入力は,...
*** iargc() [#pe2d5080]
引数の数。
if (iargc().ne.3) then
write(6,*) 'Usage: xxxxxx'
stop
end
とか入れておくと、すっかり忘れたプログラムが何をするもの...
** C [#ze17e571]
めちゃ初心者です。
*** コマンドライン引数 [#i4b2c11f]
main()の括弧部分にargcと*argv[]を定義する。下は、入力ファ...
int main (int argc,char *argv[]) {
FILE *ifile, *ofile;
char ifname[30],ofname[30];
sscanf(argv[1], "%s", &ifname);
sscanf(argv[2], "%s", &ofname);
ifile = fopen (ifname,"r");
ofile = fopen (ofname,"wb");
if (ifile==NULL || ofile==NULL) {
printf ("Error opening files\n");
return;
}
** Shell (sh,csh,tcsh,bash) [#rd9ecdac]
*** 互換しない組み込み関数 [#b946efe9]
shではexport, cshではsetenv。
*** 変数名に変数は使えない??→使える。 [#t18bd1bc]
例えば
#!/bin/sh -f
VAR1="aaa"
VAR2="bbb"
VAR3="ccc"
NUM=1
while [ $NUM -le 3 ] ; do
echo VAR${NUM}
done
%%なんてことは''できない''。%%
Sさんから情報提供があり、できることがわかりました。上の例...
#!/bin/sh -f
VAR1="aaa"
VAR2="bbb"
VAR3="ccc"
NUM=1
while [ $NUM -le 3 ] ; do
VAR=\$VAR$NUM
VAR=`eval echo $VAR`
echo $VAR
NUM=`expr $NUM + 1`
done
exit
メモ書いていて良かった~。
*** 非互換構文 [#d04d8c56]
-${XXX:-xxx} (bash)
-- XXXという環境変数が定義されていない場合、xxxをXXXとし...
-- マイナスの代わりにプラスを用いると、xxxを強制する。
-- マイナスの代わりにイコールを用いると、xxxに数字が使え...
*** リダイレクト [#v071ba1c]
しょっちゅう忘れる。
- sh/bash では "> file 2>&1"
- csh/tcsh では ">& file"
** awk [#mb29cab0]
*** 書式(printf) [#k6e7422f]
Cと同じ。小数%f、指数%e、整数%i。改行用の\nも忘れるな。%A...
awk '{SUM=SUM+$1}END{printf("%f\n",SUM/NR)}' list
echo 1 | awk '{printf("%2.2i\n",$1+1)}'
*** 正規表現 [#cf680f28]
- ファイル名:FILENAME
- 行:NR
- フィールド数:NF
- フィールド全部:$0
*** 文字列と数値列 [#b0d08842]
数値列として入力しているつもりが文字列と認識され、思った...
VAL=50
echo 100 | awk '$1 < "'"${VAL}"'" {print "awk think "$1"...
awk '$1 > "'"${VAL}"'" {print "awk think "$1"...
を実行すると、
awk think 100 < 50
と出力される。これは、要するに文字列としては1より5の方が...
ここで数値列をはっきりさせたいときは+0などを追加すればよ...
VAL=50
echo 100 | awk '$1 < "'"${VAL}"'"+0 {print "awk think "$...
awk '$1 > "'"${VAL}"'"+0 {print "awk think "$...
とすればよい。
参考:http://aoki2.si.gunma-u.ac.jp/Hanasi/Algo/letsawk/V...
** sed [#a63fe483]
*** 置換 [#e19d699a]
- 全ての/ (スラッシュ)を (空白)に置換
sed -e s/"\/"/" "/g sample.txt
- Change all capital letters to lowercase
sed -r "s/[A-Z]+/\L&/g" sample.txt
or
sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuv...
- Change all lowercase letters to capital
sed -r "s/[a-z]+/\U&/g" sample.txt
or
sed "y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUV...
** その他のコマンド [#h2e940b6]
*** tar [#taf05d35]
- その場の隠しファイル隠しディレクトリだけtarする。ホーム...
$ tar cvf hiddenfile.tar .[^.]*
一段下がって、ディレクトリ名を指定すれば隠しファイルもす...
*** .htaccess [#i4c1adcd]
-netmask
--deny from XX.XX.XX.YY/ZZ とするとXX.XX.XX.YYを含む2^(32...
-mod_rewrite
*** 改行コード [#kd041043]
- Mac -> Unix
$ tr \\r \\n <mac.txt >unix.txt
- Windows -> Unix
$ tr -d \\r <windows.txt >unix.txt
- Unix -> Windows
$ perl -p -e 's/\n/\r\n/' <unix.txt >windows.txt
*** wget [#i325930d]
- To copy all contents in a http directory;
$ wget -r -l1 --no-parent http://xxxx/xx/x/
- If you want to specify only gif files;
$ wget -r -l1 --no-parent -A "*.gif" http://yyyy/yy/y/
*** rsync [#oeeb3407]
- Making a mirror directory structure (using SSH)
$ rsync -avz -e ssh [Source] [Destination]
Source and destination can be either remote or local path.
Remote path should be [USER@]HOST:SRCPATH
- Link
-- http://www.double-h.com/linux/tipsmemo/others/general0...
*** SSH [#bea8d226]
- Multiple-step login
-- Add those lines in .ssh/config (permission 600). Of co...
Host rainbow
HostName rainbow.iis.u-tokyo.ac.jp
ServerAliveInterval 30
IdentityFile ~/.ssh/id_rsa
Host isotope2
Hostname isotope2.aori.u-tokyo.ac.jp
User kei
ProxyCommand ssh rainbow nc %h %p
-- So that you can login directory to isotope2 only by "s...
-- You can use scp, rsync, etc. with similar manner.
-Link
--http://rcmdnk.github.io/blog/2014/06/08/comptuer-linux-...
*** Global IP [#y3853d92]
# curl inet-ip.info
End:
* プログラミングのためのTIPS [#uf7699ac]
よく忘れるチョイネタは、しっかりとメモしておこう。
#contents
** Fortran [#b5e5c4ce]
*** unformattedなsequentialの入出力 [#r9d30534]
- 衝撃の事実! unformattedでsequential なアクセスの場合、...
要は、カタマリの間には8バイトのスペース(?)が入って、一...
たぶん、いまさら気づいているのが遅いんだろうけど、今までD...
*** formattedなsequentialの入出力 [#h0b54c6e]
- いまさらでいうと、formattedの自由書式(*)のとき、入力は,...
*** iargc() [#pe2d5080]
引数の数。
if (iargc().ne.3) then
write(6,*) 'Usage: xxxxxx'
stop
end
とか入れておくと、すっかり忘れたプログラムが何をするもの...
** C [#ze17e571]
めちゃ初心者です。
*** コマンドライン引数 [#i4b2c11f]
main()の括弧部分にargcと*argv[]を定義する。下は、入力ファ...
int main (int argc,char *argv[]) {
FILE *ifile, *ofile;
char ifname[30],ofname[30];
sscanf(argv[1], "%s", &ifname);
sscanf(argv[2], "%s", &ofname);
ifile = fopen (ifname,"r");
ofile = fopen (ofname,"wb");
if (ifile==NULL || ofile==NULL) {
printf ("Error opening files\n");
return;
}
** Shell (sh,csh,tcsh,bash) [#rd9ecdac]
*** 互換しない組み込み関数 [#b946efe9]
shではexport, cshではsetenv。
*** 変数名に変数は使えない??→使える。 [#t18bd1bc]
例えば
#!/bin/sh -f
VAR1="aaa"
VAR2="bbb"
VAR3="ccc"
NUM=1
while [ $NUM -le 3 ] ; do
echo VAR${NUM}
done
%%なんてことは''できない''。%%
Sさんから情報提供があり、できることがわかりました。上の例...
#!/bin/sh -f
VAR1="aaa"
VAR2="bbb"
VAR3="ccc"
NUM=1
while [ $NUM -le 3 ] ; do
VAR=\$VAR$NUM
VAR=`eval echo $VAR`
echo $VAR
NUM=`expr $NUM + 1`
done
exit
メモ書いていて良かった~。
*** 非互換構文 [#d04d8c56]
-${XXX:-xxx} (bash)
-- XXXという環境変数が定義されていない場合、xxxをXXXとし...
-- マイナスの代わりにプラスを用いると、xxxを強制する。
-- マイナスの代わりにイコールを用いると、xxxに数字が使え...
*** リダイレクト [#v071ba1c]
しょっちゅう忘れる。
- sh/bash では "> file 2>&1"
- csh/tcsh では ">& file"
** awk [#mb29cab0]
*** 書式(printf) [#k6e7422f]
Cと同じ。小数%f、指数%e、整数%i。改行用の\nも忘れるな。%A...
awk '{SUM=SUM+$1}END{printf("%f\n",SUM/NR)}' list
echo 1 | awk '{printf("%2.2i\n",$1+1)}'
*** 正規表現 [#cf680f28]
- ファイル名:FILENAME
- 行:NR
- フィールド数:NF
- フィールド全部:$0
*** 文字列と数値列 [#b0d08842]
数値列として入力しているつもりが文字列と認識され、思った...
VAL=50
echo 100 | awk '$1 < "'"${VAL}"'" {print "awk think "$1"...
awk '$1 > "'"${VAL}"'" {print "awk think "$1"...
を実行すると、
awk think 100 < 50
と出力される。これは、要するに文字列としては1より5の方が...
ここで数値列をはっきりさせたいときは+0などを追加すればよ...
VAL=50
echo 100 | awk '$1 < "'"${VAL}"'"+0 {print "awk think "$...
awk '$1 > "'"${VAL}"'"+0 {print "awk think "$...
とすればよい。
参考:http://aoki2.si.gunma-u.ac.jp/Hanasi/Algo/letsawk/V...
** sed [#a63fe483]
*** 置換 [#e19d699a]
- 全ての/ (スラッシュ)を (空白)に置換
sed -e s/"\/"/" "/g sample.txt
- Change all capital letters to lowercase
sed -r "s/[A-Z]+/\L&/g" sample.txt
or
sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuv...
- Change all lowercase letters to capital
sed -r "s/[a-z]+/\U&/g" sample.txt
or
sed "y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUV...
** その他のコマンド [#h2e940b6]
*** tar [#taf05d35]
- その場の隠しファイル隠しディレクトリだけtarする。ホーム...
$ tar cvf hiddenfile.tar .[^.]*
一段下がって、ディレクトリ名を指定すれば隠しファイルもす...
*** .htaccess [#i4c1adcd]
-netmask
--deny from XX.XX.XX.YY/ZZ とするとXX.XX.XX.YYを含む2^(32...
-mod_rewrite
*** 改行コード [#kd041043]
- Mac -> Unix
$ tr \\r \\n <mac.txt >unix.txt
- Windows -> Unix
$ tr -d \\r <windows.txt >unix.txt
- Unix -> Windows
$ perl -p -e 's/\n/\r\n/' <unix.txt >windows.txt
*** wget [#i325930d]
- To copy all contents in a http directory;
$ wget -r -l1 --no-parent http://xxxx/xx/x/
- If you want to specify only gif files;
$ wget -r -l1 --no-parent -A "*.gif" http://yyyy/yy/y/
*** rsync [#oeeb3407]
- Making a mirror directory structure (using SSH)
$ rsync -avz -e ssh [Source] [Destination]
Source and destination can be either remote or local path.
Remote path should be [USER@]HOST:SRCPATH
- Link
-- http://www.double-h.com/linux/tipsmemo/others/general0...
*** SSH [#bea8d226]
- Multiple-step login
-- Add those lines in .ssh/config (permission 600). Of co...
Host rainbow
HostName rainbow.iis.u-tokyo.ac.jp
ServerAliveInterval 30
IdentityFile ~/.ssh/id_rsa
Host isotope2
Hostname isotope2.aori.u-tokyo.ac.jp
User kei
ProxyCommand ssh rainbow nc %h %p
-- So that you can login directory to isotope2 only by "s...
-- You can use scp, rsync, etc. with similar manner.
-Link
--http://rcmdnk.github.io/blog/2014/06/08/comptuer-linux-...
*** Global IP [#y3853d92]
# curl inet-ip.info
Page: