Cやってみよう #2
昨日の続き
引数をとって何かを出力する
何作る・・・?
- 無駄なやつ作る
- ググッてビビッときたのが、素数checker
ひとまず、引数をとって出力するだけのやつを作ってみる
- 引数は何個でもOK
int count;
が無いとコンパイルエラーになった。丁寧。
chk-prime.c: 関数 ‘main’ 内: chk-prime.c:16:10: エラー: ‘count’ が宣言されていません (この関数内での最初の使用) for (count = 1; count < argc; count++){ ^ chk-prime.c:16:10: 備考: 未宣言の識別子は出現した各関数内で一回のみ報告されます
ひとまず引数をprintするだけの動くもの。
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int count; for (count = 1; count < argc; count++){ printf("argv[%d] = %s\n", count, argv[count]); } }
argc
・・・argcはargument countの略です。
printf
を使ってcount
を添字として配列から出力している
ふむふむ。
ここまではOK。
では引数が素数か否か判定するロジックを入れてみる
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int count; int divisor; int i; int x; for (count = 1; count < argc; count++){ divisor = 0; /* 約数のcount用 */ x = atoi(argv[count]); /* 引数を数値にキャストして変数に入れる */ for (i = 1; i <= x; i++){ /* 引数(int:x)回分処理をする */ if( x % i == 0 ){ divisor++; /* 割り切れた場合、約数をカウントアップ */ } } if ( divisor == 2 ){ /* 1と引数自身で割り切れた場合、(2の時)素数 */ printf("%s is prime\n", argv[count]); /* } else { printf("%s is not prime\n", argv[count]); */ } } }
gcc chk-prime.c -o chk-prime.o
できた
[vagrant@CentOS-71 ctest]$ for i in $(seq 1 100);do ./chk-prime.o $i; done 2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime 53 is prime 59 is prime 61 is prime 67 is prime 71 is prime 73 is prime 79 is prime 83 is prime 89 is prime 97 is prime
よさそう
Cやってみよう #1
仕事でほんとに困ったときは
だからチョットでもわかるようにC言語の気持ちに近づいてみよう。
といっても何にから手を付けたらよいかわからないので、hellow world
してみよう
見なかったことにして、環境を作ろう
vagrant box add CentOS_71 https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box vagrant init CentOS_71 vagrant up CentOS_71 vagrant ssh CentOS_71
環境
[vagrant@CentOS-71 ~]$ uname -a Linux CentOS-71.local 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux # gccもはいってた [vagrant@CentOS-71 ~]$ rpm -qa | grep -w gcc-4.8.3-9.el7.x86_64 gcc-4.8.3-9.el7.x86_64
さっきのサンプルを
mkdir ctest cd ctest/ cat << 'EOD' > hello.c #include <stdio.h> main() { printf("hello, world¥n"); } EOD gcc hello.c && echo "OK" || "NG"
できた
実行権限付きだ
[vagrant@CentOS-71 ctest]$ ls -l 合計 16 -rwxrwxr-x 1 vagrant vagrant 8505 10月 6 14:44 a.out -rw-rw-r-- 1 vagrant vagrant 62 10月 6 14:43 hello.c
実行してみた
[vagrant@CentOS-71 ctest]$ ./a.out hello, world
ふむ。
明日は引数を取る何かを作ってみよう。
今更ながら、Port vlanの構成image を(過不足あればお教えください)
port vlan image ┌─────────────────────────────────────────────────────────────────────────────────┐ │ ┌─────────────────────────────────────┐ ┌─────────────────────────────────────┐ │ │ │ VLAN100 │ │ VLAN999 │ │ │ │ port 1 ~ 4 │ │ port 5 ~ 8 │ │ │ │ │ │ │ │ L2 │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │port 1│ │port 2│ │port 3│ │port 4│ │ │ │port 5│ │port 6│ │port 7│ │port 8│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └───┬──┘ └───┬──┘ └───┬──┘ └───┬──┘ │ │ └───┬──┘ └───┬──┘ └───┬──┘ └───┬──┘ │ │ │ └─────┼────────┼────────┼────────┼────┘ └─────┼────────┼────────┼────────┼────┘ │ └───────┼────────┼────────┼────────┼────────────┼────────┼────────┼────────┼──────┘ │ │ │ │ │ │ │ │ ┌───┴──┐ ┌───┴──┐ ┌───┴──┐ ┌───┴──┐ ┌───┴──┐ ┌───┴──┐ ┌───┴──┐ ┌───┴──┐ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ PC │ PC 1 │ │ PC 2 │ │ PC 3 │ │ PC 4 │ │ PC 5 │ │ PC 6 │ │ PC 7 │ │ PC 8 │ (server) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘
port vlan はL2 switchの複数portを一つのNWに設定する手法の一つ
Monodrawというツール買ったので使いたくてblogに投稿
初めてイベントで話してきました
京都に行けたので幸せでした。
私の不手際によって2泊3日。
フリーな時間はingressしまくって、メダル3つ獲得しました。
で、イベントは以下です。
いやー。緊張しました。
話した内容は以下です。
こういったイベントに参加させて頂いて、自信がつきました。
これまで外に出ていくことを積極的にできていなかったので、
自分たちのやってること(業務)が
- 世の中的にイケてるのか?
- 正しそうな方向を向いているか?
みたいなことを確認する場がなかなか無かったんですが、道が見えた気がします。
また表に出ることのメリットは語り尽くされてると思いますが、
人のつながりを作ることができたという点がとても大きかったと思います。
また所属チームにもどって、切磋琢磨して代表に選ばれるように頑張ります。
mysql5.6以降の初期パスワードについて
mysql5.6?くらいから、mysqlのデフォルトパスワードがmysqlに事前に設定されてる。
なので初期ログイン時はファイルから拾う必要があるが、mysqlを再構築する場合はどのファイルにパスワードが書かれるのかわかんなかったが、マニュアルを調べてみると
--random-passwords
なるオプションが追加されてて、これつけて実行するとカレントディレクトリに、
.mysql_secret
ってファイルができて、そこから初期パスワードを拾う。
cd ~ /bin/rm -rf /var/lib/mysql /usr/bin/mysql_install_db --basedir=/usr --datadir=/var/lib/mysql --random-passwords chown -R mysql:mysql /var/lib/mysql chmod 755 /var/lib/mysql cat ~/.mysql_secret
CentOS7でvncを起動させろ
前提条件
- firewalld おとしとく
- SELinux無効しとく
あとはここからやっていくと出来た。 深いところは調べてない・・・
install
yum groupinstall "GNOME Desktop" yum install tigervnc-server.x86_64
rootユーザーでやった
vncpasswd
/root/.vnc/xstartup を編集 おまじないっぽいので、時間のあるときに調べとこう
#!/bin/sh xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & exec gnome-session &
vncserver起動
vncserver vncserver -list
vncserver停止
# display 番号を渡す vncserver -kill :1
接続はいつもの、[Chicken of the VNC]で!
mysqldumpはこうした方がいいね(オンラインでバックアップの場合)
オンラインでバックアップを取る必要がある場合はロック出来ないので以下で!
- dump取得後にgzip圧縮もしてる
--result-file=file_name, -r file_name
このオプションで出力を指定していると、エラーが起きた場合、ファイルが空で作成されるのでおすすめしない。
DB=fuga MYSQL_PWD=password mysqldump -h example.jp -u hoge --force --single-transaction --quote-names --default-character-set=binary --compress --add-drop-database --add-drop-table --databases $DB --log-error=$DB.log | gzip > $DB.gz