8月 152015
 

1:インストールのは簡単だと思う
#yum install subversion
成功したかをテストする
#svnserve –version
Subversionが見えたら、成功した

2:配置
新しいreposを作る。
#mkdir -p /svn/repos
#svnadmin create /svn/repos
svnのコンフィグファイルを編集:
# vim /svn/repos/conf/svnserve.conf

編集された部分:
[general]
anon-access = none
auth-access = write
password-db = /svn/repos/conf/passwd
authz-db = /svn/repos/conf/authz
realm = repos
注意、svnサーバーの再起動は必要がない

#vim /svn/repos/conf/passwd
[users]
username = password
ここではユーザー情報を配置する

ユーザーの権限を配置する:
# vim /svn/repos/conf/authz

# chown -R svn:svn /svn/repos
启动svn
# su – svn -c “svnserve -d -r /svn/repos”

svnサーバーは起動された。

svn://ipアドレス/repos

8月 152015
 

islowerは(テストのキャラクタが、小文字である)
相関関数
isalphaは、isupperは
ヘッダファイル
#include
定義された関数
int islower(int c)
機能の説明
cが小文字のパラメータを確認してください。
戻り値
パラメータcが小文字に、trueを返す場合、それ以外の場合はNULL(0)を返します。
追加情報
これは、マクロ定義、非リアルタイム機能です。

#include
main()
{
char str[]=”123@#FDsP[e?”;
int i;
for(i=0;str[i]!=0;i++)
if(islower(str[i])) printf(“%c is a lower-case character\n”,str[i]);
}
実行
c is a lower-case character
s is a lower-case character
e is a lower-case character

8月 152015
 

accept … クライアントとの接続を確立
SOCKADDR = accept(NEW_SOCKET, SOCKET)
クライアントとの接続を確立し、新しいソケット NEW_SOCKET を生成します。 SOCKET は、socket で作成し、bind でポートに 結び付けたソケットです。ソケット NEW_SOCKET を通じて、 クライアントとデータのやりとりをすることができます。 SOCKET は、その後もポート監視用ソケットとして使われます。
より詳しく言うと、 listen により OS が陰で作成していた待ち行列から、 1つだけクライアントを取り出し、そのクライアントとの接続を確立するのが accept です。

accept は、戻り値としてクライアント側の情報を返します。 IP アドレスとポート番号を一体化した SOCKADDR 形式になっていますが、 unpack_sockaddr_in で分解することができます。

bind … ソケットにポート番号を割り付ける
bind(SOCKET, SOCK_ADDR)
ソケット SOCKET に対して、ポート番号 SOCK_ADDR を割り当てます。 SOCKET は socket を使って事前に用意しておきます。
例えばソケット S にポート 1234 番を割り当てたいなら

bind(S, pack_sockaddr_in(1234, INADDR_ANY))
とします。特定のポートを使用できるのは一つのプロセスだけなので、 他のプロセスがたまたまポート 1234 を使っていると、bind に失敗します。
何番のポートでもよいなら、OS にポートを選ばせることもできます。

bind(S, pack_sockaddr_in(0, INADDR_ANY))
と、ポート番号に 0 番を指定すると、OS が勝手にポートを選んでくれます。 FTP クライアントのデータコネクション の例を参照して下さい。
なぜ bind に pack_sockaddr_in の戻り値 (IP アドレスとポート番号をひとまとめにしたもの) を渡すかというと、同じマシンに IP アドレスが複数割り当てられている場合に、 どちらの IP アドレスのポートを使うのかを選択できるようになっているのです。 しかし通常は IP アドレスとして INADDR_ANY を指定しておけば大丈夫です。

connect … サーバに接続
connect(SOCKET, SOCK_ADDR)
SOCK_ADDR で指定したホストとポートに接続します。 データのやりとりはソケット SOCKET を通じて、
print SOCKET “….”;
$in =
などとします。
SOCKET は socket 関数で事前に作成しておきます。 SOCK_ADDR は接続先の IP アドレスとポート番号をひとまとめにした構造体で、 pack_sockaddr_in を使って事前に作成しておきます。

gethostbyaddr … IP アドレスをホスト名に変換
HOSTNAME = gethostbyaddr(IADDR, ADDR_TYPE)
IP アドレスの構造体と、アドレスファミリを渡すと、 IP アドレスに対応するホスト名が返されます。 IADDR は、IP アドレスを表す構造体で、 アドレスファミリには、AF_INET を指定します (AF_INET は Socket モジュールによりセットされる定数です)。
use Socket;
$ip_address = ’133.8.13.11′;
$iaddr = pack(‘C*’, split(/\./, $ip));
$hostname = gethostbyaddr($iaddr, AF_INET);
gethostbyname … ホスト名・IP アドレスの情報を取得
gethostbyname(NAME)
引数には X68000.startshop.co.jp などというホスト名を渡します。
$iaddr = gethostbyname(‘X68000.startshop.co.jp’);
$ip_address = join(‘.’, unpack(“C*”, $iaddr));
とすることで $ip_address に 192.168.1.22 のような IP アドレス (表示可能な文字列) が代入されます。 Perl5 を使っていて、Socket モジュールが使えるなら、
use Socket;
$ip_address = inet_ntoa(inet_aton(“X68000.startshop.co.jp”));
とした方がよいでしょう。
getpeername … 相手先のホスト名・IP アドレスの情報を取得
getpeername
getservbyname … サービス名からポート番号を取得
PORT = getservbyname(SERVICE, PROTO)
getservbyname は http・smtp・ftp などのサービス名を、対応するポート番号に変換します。
$port = getservbyname(‘http’, ‘tcp’); # $port には 80 が代入される
$port = getservbyname(‘smtp’, ‘tcp’); # $port には 25 が代入される
$port = getservbyname(‘ftp’, ‘tcp’); # $port には 21 が代入される
HTTP のポート番号は 80 であり、 SMTP は 25 であると決まっています。 ですから HTTP クライアントを作るなら 直接ポート番号を 80 と決め打っても動作するのですが、 プログラム中に 80 という値を埋め込むと、ソースを読んでいる人にとっては、 どうして突然 80 という数字が出てきたのか わかりません。 そこで `HTTP’ を 80 に変換してくれる getservbyname を使って 「HTTP というプロトコルを使う」 ということをわかりやすくしているのです。

第2引数の ‘tcp’ は、常にそう書くものだと思っておいてください。 UDP/IP を利用する DNS などは ‘udp’ を指定しますが、 HTTP・FTP・POP3・SMTP などは全て TCP/IP を使用するので、 ‘tcp’ を指定しておけば問題ありません。

プロトコル名とポート番号の対応表は、UNIX なら /etc/services に、 Windowsなら C:\windows\services に、Windows NT なら C:\WinNT\system32\drivers\etc\services に置いてあります。 なお、getservbyname の serv というのは service の略です。

getsockname … ソケットの情報を取得
(SOCK_ADDR) = getsockname(SOCKET)
ソケットの IP アドレスとポート番号を調べます。 相手先の IP アドレス・ポート番号を調べるのではありません。 それは getpeername で調べることができます。
ここで得られる IP アドレスは、自分自身のホストに付けられた IP アドレスです。

$sockaddr = getsockname(SOCK);
($port, $iaddr) = unpack_sockaddr_in($sockaddr);
$hostname = gethostbyaddr($iaddr, AF_INET);
print “ホスト $hostname、ポート $port\n”;
inet_aton … ホスト名を IP アドレスに変換 (Socket モジュール関数)
use Socket;
IADDR = inet_aton(HOSTNAME);
ホスト名を表す文字列を受け取り、IP アドレスに変換します。 例えば

use Socket;
$iaddr = inet_aton(“X68000.startshop.co.jp”);
とすると、X68000.startshop.co.jp に対応する IP アドレスが $iaddr に代入されます。 $iaddr には ’127.0.0.1′ などという文字列が代入されるのではなく、 生のデータが代入されます。127.0.0.1 なら `0x7f 0×00 0×00 0×01′ という4バイトの構造体が代入されるわけです。 そのため、$iaddr を print 文などで表示しようとしても、化けた表示になります。 文字列として表示したい場合は inet_ntoa を使います。
inet_aton を実行すると、/etc/resolv.conf に書かれた DNS サーバに対して IP アドレスの問い合わせが行われます。 これらの変換作業は、OS が全て面倒を見てくれます。

もし指定したホスト名に対応する IP アドレスが見付からない (正引きできない) と、 エラーになります。 TCP/IP では IP アドレスがわからないと絶対に相手先と通信することはできないからです。

また、

use Socket;
$iaddr = inet_aton(“X68000.startshop.co.jp”);

$iaddr = gethostbyname(“X68000.startshop.co.jp”);
と等価です。perl4 しかなくて Socket モジュールを利用できないなら この書き方で同じ結果が得られます。 しかし perl5 が使えるなら、素直に inet_aton を使いましょう。
inet_ntoa … IP アドレスを表示可能な形式に変換 (Socket モジュール関数)
use Socket;
IP_STRING = inet_ntoa(IP_ADDRESS);
inet_aton、unpack_sockaddr_in の項で説明したように、
$iaddr = inet_aton($hostname);

($port, $iaddr) = unpack_sockaddr_in($sockaddr);
とすると、$iaddr にはそのままでは表示できない形で IP アドレスが代入されます。 inet_ntoa は、その IP アドレスを表示可能な文字列に変換します。 これはただの文字列なので、print 文などで表示することができます。
また、

$ip_address = inet_ntoa(inet_aton(“X68000.startshop.co.jp”));
とすると、$ip_addr には X68000.startshop.co.jp を IP アドレスに変換した 133.8.3.1′ などという文字列が代入されます。
なお、上記の書き方は

$iaddr = gethostbyname(“X68000.startshop.co.jp”);
$ip_address = join(‘.’, unpack(“C*”, $iaddr));
と等価です。 perl4 しかなくて Socket モジュールを利用できないなら この書き方で同じ結果が得られます。 しかし perl5 が使えるなら、素直に inet_ntoa を使いましょう。
listen … クライアントからの接続を受け入れるよう OS に指示を出す
listen(SOCKET, BACKLOG)
クライアントからの接続を受け入れるよう、OS に命令します。 listen が実行されると、OS は接続してきたクライアントとの接続を確立し、 待ち行列に登録します。
この待ち行列への登録作業は、プロセスからは見ることができません。 全て OS が陰で行います。この後、accept を実行することで クライアントと実際に接続することができます。

BACKLOG には、まだ accept されていないコネクション (OS が待たせているコネクション) の 最大数を指定するものです。もし BACKLOG 以上のクライアントが同時に connect してきた場合は、サーバは接続を拒否するか、何もレスポンスを返しません。

BACKLOG には直接数字を指定してもいいのですが、 実際に何個のクライアントを受け付けるかは OS により異なります。 BACKLOG の解釈は OS によって異なり、

BSD 系 OS では、backlog に 1.5 を乗じた値が使われる
Solaris 2.6 や HP-UX では、適当な係数を乗じた値が使われる
Linux では backlog に指定した値がそのまま使われる
Solaris2.5.1 では +1 した値が使われる
などと解釈されます。
(use Socket として) Socket モジュールを使っているなら、 BACKLOG として SOMAXCONN を指定することができます。これは OS が許す最大値を意味します。FreeBSD-2.2.7 では /usr/include/sys/socket.h で

#define SOMAXCONN 128
と定義されているので、
listen(CLIENT_WAITING, SOMAXCONN)

listen(CLIENT_WAITING, 128)
は同じ意味です。
特に理由がなければ SOMAXCONN を指定しておくといいでしょう。

pack_sockaddr_in … IP アドレスとポート番号を、SOCKADDR 構造体に変換 (Socket モジュール関数)
use Socket;
SOCK_ADDR = pack_sockaddr_in(PORT, IP_ADDRESS);
ポート番号 PORT と、IP アドレスを表す構造体 IP_ADDRESS を受け取り、 2つをひとまとめにした構造体 SOCK_ADDR を返します。
IP_ADDRESS は inet_aton で作成します。 PORT は getservbyname を使ってサービス名から変換するか、あるいは そのまま数値を渡します。

ここで得られた SOCK_ADDR は connect で使用します。

pack_sockaddr_in の逆の操作を行うには unpack_sockaddr_in 関数を使います。

setsockopt … ソケットオプションを設定
setsockopt(SOCKET, LEVEL, OPTION_NAME, OPTVAL)
ソケット SOCKET に対して、ソケットオプションを設定します。 echo サーバでの使用例 を参照して下さい。
sockaddr_in … IP アドレスとポート番号をひとまとめにした構造体を作成 (Socket モジュール関数)
use Socket;
SOCK_ADDR = sockaddr_in(PORT, IP_ADDRESS)
(PORT, IP_ADDRESS) = sockaddr_in(SOCK_ADDR)
この関数は、2通りの使い方があります。 スカラーコンテキストの場合、つまり
$sock_addr = sockaddr_in($port, $iaddr)
のように1つの戻り値を受け取るような形で呼び出したときは、 $port と $iaddr をひとまとめにした構造体を返します。 一方、リストコンテキストの場合、つまり
($port, $iaddr) = sockaddr_in($sock_addr)
配列を受け取る形で記述したときは、先の例とは逆に $sock_addr を受け取り、$port と $iaddr に分解します。
sockaddr_in は、スカラーコンテキストなら pack_sockaddr_in を呼び出し、 リストコンテキストなら unpack_sockaddr_in を呼び出すだけの wrapper 関数です。この関数は呼び出し方によって、全く逆の動作をするわけで、 なるべく pack_sockaddr_in、unpack_sockaddr_in を使用した方がよいでしょう。 その方がわかりやすいと思います。

→ 関数説明: pack_sockaddr_in
→ 関数説明: unpack_sockaddr_in
socket … ソケットを生成
socket(SOCKET, DOMAIN, TYPE, PROTOCOL);
ソケットを生成します。ソケットとは、データ入出力の出入口のようなもので、 クライアントもサーバもソケットを通じてデータをやりとりします。
TCP/IP を使う場合は socket(SOCKET, PF_INET, SOCK_STREAM, 0)
UDP/IP を使う場合は socket(SOCKET, PF_INET, SOCK_DGRAM, 0)
UNIX ドメインソケットを使う場合は socket(SOCKET, PF_LOCAL, SOCK_DGRAM, 0)
とします。HTTP・FTP・POP3・SMTP などは全て TCP/IP を使用するので、 最初の書式だけを覚えておけばいいでしょう。4番目の引数は常に0にして下さい。
SOCKET の部分には 好きなファイルハンドル名を指定して下さい。例えば

socket(S, PF_INET, SOCK_STREAM, 0)
とすれば、ファイルハンドル S が生成されます。ソケットから読み込むには
$in =
とし、ソケットに送信するには
print S “….”;
とします。
unpack_sockaddr_in … SOCKADDR 構造体をポート番号と IP アドレスに変換 (Socket モジュール関数)
use Socket;
(PORT, IP_ADDRESS) = unpack_sockaddr_in(SOCK_ADDR);
SOCKADDR 構造体を、ポート番号と IP アドレスとに分解します。
用途としては、例えば accept で生成されたソケットの IP アドレスとポート番号を 調べる場合に使います。まず、getpeername でソケットの情報 (SOCKADDR 形式) を得て、unpack_sockaddr_in で IP アドレスとポート番号を取得できます。

例1: accept の戻り値を利用

$sockaddr = accept(CLIENT, CLIENT_WAITING);
($port, $iaddr) = unpack_sockaddr_in($sockaddr);
$hostname = gethostbyaddr($iaddr, AF_INET);
print “ホスト $hostname、ポート $port からの接続です。\n”;
例2: ソケットから getsockname で SOCKADDR を受け取ることもできる
accept(CLIENT, CLIENT_WAITING);
$sockaddr = getpeername(CLIENT);
($port, $iaddr) = unpack_sockaddr_in($sockaddr);
$hostname = gethostbyaddr($iaddr, AF_INET);
print “ホスト $hostname、ポート $port からの接続です。\n”;
他にも、getsockname の戻り値に対して使用することがあります。

原始アドレス:http://x68000.q-e-d.net/~68user/net/func.html#socket

8月 152015
 

目標:windowsのパソコンでFedora Core15をインストールする。

性能:MBRのファイルを書きこまないこと。LINUXを削除してもWindowsに影響を与えないこと

1.grub4dosをダウンローダーする

2。grub4dosから解凍のgrub4dos、grldr、grub.exeとmenu.lstの三つのファイルを解凍し、Cのルートディレクトリに置く

3。C:\boot.iniをcに行を追加します:\ grldr=”Grub4Dos”

4,http://fedoraproject.org/ja/get-fedoraからFedora 9のインストールファイルをダウンローダーする
1仮想ドライブまたはFC9 isoイメージファイルを開くにはWinRARの、二つのファイルvmlinuzとinitrd.imgのISOLINUXのフォルダとCのルートディレクトリに抽出さ

2 Grub4dos最後のmenu.lstファイルには、次の行を追加します。
タイトルFC9をインストールする
ルートを(hd0、1)
カーネルは、(hd0、1)/ fclinux/ vmlinuzに
initrdには、(hd0、1)/ fclinux/ initrd.imgを

3 [スタート]メニューでコンピュータを再起動し、grub4dos-> FC9インストールを選択し、インストールプロセスを開始

4インストールプロセスでは、インストールを選択できるようになる、ハードディスクのインストールを選択し、isoファイルのパスを選択します。

5地区が完了すると、ブートモードを選択し、それはMBRにFC9ブートローダーをインストールしないことをお勧めしますが、Linuxのパーティションをインストールする場所

インストール後に、MBRのブートレコードがLinux上で見つからない場合、FC9システムを入力することはできません、次のものが必要です。

1使用Explore2fs(Windowsのシステムツールがhttp://www.linuxidc.com/Linux/2008-01/10746.htmダウンロードするLinuxパーティションにアクセスするには)の/ boot / grub/ grubの下にあるLinuxパーティションのコピー。 confファイル

(2)のような行を見つけ、grub.conを開くには、メモ帳を使用します。
タイトルのFedora(2.6.25-14.fc9.i686)
ルートを(hd0、7)
カーネル/ vmlinuzで-2.6.25-14.fc9.i686 ROのルート= UUID= fa4faa10-4dd8-4e4c-ae6b- d099b5fdc0cb rhgb静か
initrdを/ initrdを-2.6.25-14.fc9.i686.img

4 Grub4dosこれらの行は、menu.lstファイルの末尾に追加

grub4dos-> Fedoraの(2.6.25-14.fc9.i686)を選択し、システム、ブートメニューをリブートは正常にFC9システムに入った。それをお楽しみください!

11月 242013
 

CentOSのyumはGitがありませんダウンロードしてインストールする必要がある

まずはgitの関係するソフトウェアをインストールする
[bash]
yum install curl
yum install curl-devel
yum install zlib-devel
yum install openssl-devel
yum install perl
yum install cpio
yum install expat-devel
yum install gettext-devel
[/bash]

gitをダウンロードする
[bash]
wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
tar xzvf git-latest.tar.gz
cd git-xxxx-xx-xx
autoconf
./configure
make install
[/bash]
インストールが成功したを確認する
[bash]
git –-version
[/bash]

7月 202013
 

CSVフォーマットは以下の特徴がある
1、レコードは改行(CRLF、U+000D U+000A)で区切られる
2、フィールドの間はコンマ「,」(U+002C) で区切られる。
  最後のフィールドの後にはコンマは付けない。付ける場合、最後のフィールドは長さは0の内容が存在するとみなす
3、ファイルの先頭に「ヘッダ行」の定義がない(ソフトウェアにより、解釈が異なる)
4、フィールドは、ダブルクォート「”」(U+0022) で囲んでも囲まなくてもよい
5、フィールドがコンマ、ダブルクォート、改行を含む場合は、かならずダブルクォートで囲む。
6、フィールドに含まれるダブルクォートは2つ並べてエスケープする

参考サイト:http://ja.wikipedia.org/wiki/Comma-Separated_Values
Pythonにより、mysqlのレコーダーからCSVに変換する例は次になる

[python]
# coding=utf8
import os
class csv_writer:
#save data in csv
def write_rows(self,rows,file_name,re_write=True):
if (re_write==True):
if os.path.isfile(file_name)==True:
os.remove(file_name)
write_file=open(file_name,’a’)
new_txt=""
for t in rows:
new_txt=”’%sn”’%(self.row2csv(t))
write_file.write(new_txt)
def row2csv(self,row):
new_txt=""
for t in row:
new_txt=”’%s,%s”’%(new_txt,self.txt2field(t))
return new_txt[1:]
def txt2field(self,txt_temp):
txt=’%s’%(txt_temp)
if txt.find(‘"’)>-1:
txt=txt.replace(‘"’,’""’)
if txt.find(‘n’)>-1 or txt.find(‘,’)>-1 or txt.find(‘"’)>-1:
txt=”’"%s"”’%(txt)
return txt
if __name__==’__main__’:
a=((1,2,3),(4,”’yyunrppp”’,’tx"t’))
kk=csv_writer()
kk.write_rows(a,’tt.csv’)
[/python]

7月 202013
 

centos VPSを使うとき、vimというコマンドを入力すると次のエラーがでった
bash: vim: command not found
viのみが使えるような感じでした
原因を探すと、Viのみがインストールされた
ではvimをインストールする
次の命令になる
[bash]
yum -y install vim-enhanced
[/bash]
注意:rootを使う必要がある

7月 202013
 

今日では、サーバに大きなファイルをアップロードすると、一部のファイルのみがアップロードされた。

ログを確認のところ:

it.sauronsoftware.ftp4j.FTPException  code=426, message= Failure writing network stream.

df コマンドでディスクの容量を確認すると、ディスクがいっぱいとわかった。だから、ファイルを読み取ることができなかった。

解決:不要なファイルを削除すること

7月 162013
 

まずVIMの場所はどこ?答え:

まず、Linuxの環境で次の命令を打つ

echo $HOME

結果は次の様な感じ

/home/yourname

では、.vimrcの場所は次になる

/home/yourname/.vimrc

Linuxの環境で次の命令を打つ

vim /home/yourname/.vimrc

vimの環境で、編集モードに入る(「i」を打つ)

次のテキストを入力してください

set nocompatible
set backspace=indent,eol,start
set autoindent
set nowrap
set ruler
syntax on
上記の編集を保存してください
上記構成の特定の意味:
1、vi互換モードを廃止、INSERTモードでは、方向キーとbackspaceが効く。2、改正のバックスペース3、自動インデント設定をONにする4、長い行は自動的に折り返されていない

5、ルーラーを開く

6、オープン構文の色付け

以上、VIMを楽しんでください

ほかの役に立つコマンド:

行番号の表示:set number

行頭に移動する:0

行末に移動する:$

名前を付けて保存:w ファイル名

文末に移動する:G

指定される行に移動する:「:: 行No」