うさぎのしっぽ

プログラミングとか。備忘録として使ってるブログです。あとは趣味少し。 間違いなどありましたらご指摘ください(・3・)

新しいPCが手元に来たらやること

PC苦手な方が見に来てそうなのでちょっと書き足します。

 

必ず入れたいフリーソフト

Chrome(webブラウザ、なにかと速い)

・さくらエディタ(メモ帳を使うよりも文字化けが減ります)→DL:Sakura Editor download | SourceForge.net

・Lhaca(zip以外の解凍もできます)→DL:+Lhaca - 窓の杜ライブラリ

 

 あると便利なフリーソフト

DropBox(PCとPC、PCとタブレットなどのデータ共有用に)

・超録(録音ができます。お好みでどうぞ)

 

 

------プログラマ用のフリーソフト-----------------------

Cygwin(主にdevil)

・empty.bat(メモリ解放)

 

ある文字が含まれる行を削除する【正規表現】

参考:

正規表現サンプル(ある文字が含まれる行を削除する)

 

0.エディタで対象の文書を開く

1.置換画面を開くためにCtrl-R

2.置換前文字列 には 下の黄色背景の文字列を入力.

3.置換後文字列 には 何もかかない

4.正規表現がONになっていることを確認して実行

 

windows

^.*不要.*\r\n

unix

^.*不要.*\n

Mac

^.*不要.*\r

 

 

gsed: command not found (´・ω・`)

他の人の書いたコードを利用しようとしたら数時間単位で嵌った.

 

gsed: command not found

 

gsed ← このコマンド,mac用だそうです(たぶん厳密には違うけど)

linuxでは sed に相当する.使い方もほぼ同じ.

 

sedではmac上で上手く動かない場合があるらしくて,それを補うためにgsedを利用する…らしい(てきとう)

linuxにgsedを入れる必要がなくて入れてなかったせいで動かなかった.

 

gsed → sed に書きなおすだけでエラー取れた

vectorのsortについて確認【c++】

スペースを含む文字列のソート に確信が持てなかったので確認.

→文字列を頭から一文字づつ比較してソート(空白も他の文字と同列に扱う)

 #include <algorithm> → sort()を利用するため

 

以下ソースコードと実行結果

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
/*********************
**
** sort()の仕様を確認するためのプログラム
**
*********************/

int main(){

vector<string> strlist;

//文字列をvectorに入れる
strlist.push_back("aaa");
strlist.push_back("bbb");
strlist.push_back("ccc");
strlist.push_back("aa");
strlist.push_back("a");
strlist.push_back("a a");
strlist.push_back("a c");
strlist.push_back(" a");
strlist.push_back("b a");
strlist.push_back("a 5");
strlist.push_back("b 3");
strlist.push_back("a 1");


//ソート前の中身確認
int vsize=strlist.size();
for(int i=0; i < vsize ; i++)
cout << strlist[i] << endl;

//ソート実行
cout << "sorting now..." << endl;
sort( strlist.begin(), strlist.end() );

//ソート後の中身確認
for(int i=0;i<vsize;i++)
cout << strlist[i] << endl;


return 0;
}

 

user% g++ sort_vector.cpp

user% ./a.out
aaa
bbb
ccc
aa
a
a a
a c
a
b a
a 5
b 3
a 1
sorting now...
a
a
a 1
a 5
a a
a c
aa
aaa
b 3
b a
bbb
ccc

 

xmlをシンプルにするためのPerl

使いまわししやすそうなので置いておく.

XMLファイルを読み込んで必要な行だけ抽出するperl

見どころはタグの中身だけ拾ってくる部分かな.

ブログに乗せるためにちょこちょこいじったからそのままだと動かないかも

($value)=$line=~/<count>(.*?)<\/count>/; # <count>タグで囲まれた部分を探して${value}に代入

 

 

#
# xmlをシンプルにするためのプログラム
#
#
#
# 使い方
# program.pl sorcefile.xml > outpurfile
#
#

########################################
# 引数の数が正しいかチェック
# 定数宣言
# program.exe sorcefile
########################################

#引数の数をチェックする
#引数の数が正しくない場合は,プログラムの実行方法を提示して終了

 

## 引数を使うとき
if (@ARGV != 1){
 die("err. this program needs 1 argment\n inputfile.xml\n");
}

$inputfilename=$ARGV[0];


## 引数使わないとき
#$inputfilename="inputfile.xml"; # XML形式の inputfile の宣言


##########################
# ファイルオープン----------------------------------
# file connection open
##########################

# 読み込み専用で開く.
# ファイルが存在しない場合はエラー出力を出して終了.

if(! open(SORCE_FILE,$inputfilename)){
die("err. can not open ${inputfilename}\n");
}

 

#############################
# メイン処理 特定のタグの中身だけ出力していく#
# 前提: 一行に同じタグは複数存在しない
#############################

# 一行づつ読んで,不必要ならスルー

# 必要な情報ならタブ区切りにして出力

while(my $line = <SORCE_FILE>){#一行づつ読み込む
# print "read line : ",$line,"\n"; #debug用 読み込んだ行をそのまま出力
chomp($line);#改行切り落とし

if(undef){ # 必ず偽(可読性用)

die("err. Code1\n");
next;
}elsif($line =~/<findNGtag>/){ # タグ探し
next;   # 出力せずにスルー  次の行へ処理を進める
}elsif(($value)=$line=~/<find1>(.*?)<\/find1>/){ # タグの中身をvalueに代入
print $value,"\n";     # タグの中身だけ出力して改行
next; # 次の行へ処理を進める
}elsif($line =~/<find2>(.*?)<\/find2>/){   # タグ探し
# print $line,"\n";     # 行を丸ごと出力して改行
next;
}else{
next; #必要のないその他の情報を飛ばす
}

}

# ファイルクローズ-----------------------------------
close(SORCE_FILE);

 

 

 

 

 

 

 

 

 

 

VC++から引数付きexeファイルの実行


VC++から引数付きexeファイルの実行 - C・C++ - 教えて!goo

 

 

#1です。こちらで作成したサンプルです。
呼び出し側
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv)
{
intret;
printf("system試験開始\n");
ret = system("C:\\VCSTUDY\\printarg\\Debug\\printarg.exe XXX YYY ZZZ");
if (ret == 0){
printf("system成功\n");
}else{
printf("system失敗\n");
}
return 0;
}
----------------------

呼び出される側(c:\\test.exeに相当)
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv)
{
inti;
for (i = 0; i < argc; i++){
printf("ARGV[%d]=%s\n",i,argv[i]);
}
return 0;
}
以下、実行結果です。
コマンドプロンプト画面に下記の文字が出力されます。
------------------------
system試験開始
ARGV[0]=C:\VCSTUDY\printarg\Debug\printarg.exe
ARGV[1]=XXX
ARGV[2]=YYY
ARGV[3]=ZZZ
system成功
Press any key to continue
---------------------------

 

visual studioに既存のソースを追加

あんまり触ったことないせいで地味に手間取った.

追加したい階層で右クリック->追加->既存の項目 で選べる

 

参考:


visual studio 2008 プロジェクトへファイル追加方法 - その他(開発) - 教えて!goo