移動式のブログ

ガジェット、アニメ、プログラミング、考えたことその他色々・・・特にこれといったテーマはないカオスなブログです。

アンパンマン 無駄な考察その1

 
 アンパンマンと聞いて、大抵の人が思い浮かべることは「バイキンマンという悪者をアンパンマンというヒーローがやっつける」だとか「困った住民をアンパンマンが助ける」といった内容を思い浮かべるかもしれない。

 アンパンマンは善でバイキンマンは悪。それは本当なのだろうか。「アンパンマンは実は悪である」なんて展開があったら面白いのではないかとアンパンマンについて自分なりに考察してみた。



バイキンマン


 f:id:idoushiki:20160709112153p:plain
 
 
 

バイキンマンは実は凄く良い奴なのかもしれない


 バイキンマンには「ドキンちゃん」という仲間がいる。
 ドキンちゃんバイキンマンにやたらとわがままを言ってくるが、バイキンマンは嫌々ながらもドキンちゃんが注文した物を探しに行く。バイキンマンドキンちゃんに注文された品を得るために他人から物を奪うときもあるし、悪さをするときもあるので、これはかなり迷惑な話だなぁ。

 しかし、これは考えようによってはバイキンマンは、「自分の事を犠牲にしてまでドキンちゃんに尽くす凄く良いやつ」という事になりそうだ。なにせバイキンマンは自分が嫌われたりアンパンマンにぼこぼこにされてしまうリスクを冒してまでドキンちゃんに注文された物を全力で得ようとするからだ。

 バイキンマンは自分勝手な理由で悪さをすることがあるが、ドキンちゃんのために自分の身を犠牲にしているときも結構多い。

 ドキンちゃんが「おなかすいた」と言って、バイキンマンが何か食べ物を取りに行く光景をアンパンマンのアニメでよく見たが、バイキンマンは何だかお人好しだなとさえ思えてくる。
 


バイキンマンは努力家でその上精神的にタフ


 アンパンマンには、「顔が変われば元気百倍」になり、たったのパンチ一発で重量が何十トンもありそうなバイキンマンのメカを吹っ飛ばす。というチート級な能力を持ち合わせていて、その上しょくぱんまんカレーパンマンジャムおじさんその他色々とたくさんの仲間がいて、いつでも仲間に甘えることができる。
 実際に、アンパンマンは自分がピンチになると必ずジャムおじさんが新しい顔を持ってきてくれる状態だ。


 それに比べてバイキンマンは、一緒に戦ってくれる仲間がカビルンルンぐらいであまり強い戦闘員がいない。また、ドキンちゃんはほとんど戦闘に参加しない。
 バイキンマンにはアンパンマンのようにパンチ一発でメカを吹っ飛ばす力もなければ顔を変えて復活する能力もない。また、ジャムおじさんパン工場という大きな権力がバックにあるわけでもない。
 しかし、バイキンマンはそんな圧倒的不利な状況にもかかわらず、屈することはない。
 バイキンマンは誰にも頼らずに自分の持っている知識と技術力でメカを作って、それでアンパンマンに立ち向かって負ける。そして何度負けてもめげずに試行錯誤を繰り返し、新たなメカを何度も作ってはアンパンマンに立ち向かう。

 アンパンマンはチート級の力やたくさんの仲間などを持っているにもかかわらず、バイキンマンは底なしの精神力と今までに積み上げてきた技術力だけでアンパンマンとの圧倒的な力の差を埋めているようなので、バイキンマンってかなり凄いやつなんじゃないかなと思う。


 バイキンマンはコツコツと技術力を磨き続けてアンパンマンに勝てるように努力を続けている。顔が変われば元気100倍になれるからといって、バイキンマンの襲撃からなんの学習もせずに何の対策をしていない。そして毎回似たような手に引っかかってしまい住民や自分自身をピンチに追いやってしまうアンパンマンはいつかバイキンマンに負けてしまうかもしれない。 

 
 
 


 

 
 

マリオに出てくる敵キャラ

マリオアンドルイージRPG2ゲドンコ星人 落書き


なんとなく頭にこいつが思い浮かんだのでうろ覚えで描いてみた。

ゲドンコ星人
マリオアンドルイージRPGシリーズで登場する。懐かしいなぁ。

centos c言語

centos c言語コンパイル・実行 備忘録


 最初に、「#yum install gccgccをインストールしておく。


 f:id:idoushiki:20160331170259p:plain

 mkdirでディレクトリを作成しておく。cdでそのディレクトリに移動する。

f:id:idoushiki:20160331170303p:plain

pppppp・・・と適当に、文字を出力させるプログラムを書く。
viでソースコードを書いて保存する(ESCキーを押してから「:wq」で保存)。

f:id:idoushiki:20160331170307p:plain

gcc test.c -o test

gcc ファイル名 -o ファイル名 でtest.cをコンパイルして実行可能なファイル(test)にする。

./testで、さっき書いたプログラムが実行されて、printfの「pppppppppppp」が表示された。

中古パソコンにLinuxをいれる

中古パソコンにcentosをインストールしてみた


 最近、osの入っていないジャンク品のPCを買ってみて、使えるかどうかを試してみました。
 値段は約3000円。かなり安い(このパソコン、発売当初は20万円ぐらいしたらしい)。
 
 スペック

 CPU  PentiumM 740 1.73GHz
 メモリ 1.5GB
 HDD   100GB

 スペック的には今となってはおもちゃレベルのパソコンです。
 
 centosubuntuなどのLinux系osは無料でインストールできるので、centosをインストールすることにしました。

 
Index of /pub/Linux/CentOS/6.7/isos/x86_64centosはここでダウンロードすることができます。

f:id:idoushiki:20160331155401p:plain
たまたまデータの入っていない空のCDがあったので、CD版のものをインストールしてCDに焼きました。

f:id:idoushiki:20160331165418p:plain
centosのCDをパソコンに入れて電源を入れたら無事起動した。
これで起動しなかったら3000円でゴミを買ったことになりますね。

しかし、中古のぼろいパソコンも何気に使えるという事が確認できました。



 f:id:idoushiki:20160331165429p:plain
↑中古品なだけあってファンの排気口のところに大量の埃がたまっています。
 一瞬、もともとスポンジみたいなフィルターがついているのかと思ったが、ほこりのかたまり!
 このパソコンを起動したときにやたらと変なにおいがしてその上部屋がほこりっぽくなった原因は多分これ。
 このほこりは掃除機で吸い取りました。

f:id:idoushiki:20160331165414p:plain
↑細かいところは綿棒で掃除。綿棒もこのざまですよ。






 

c言語 winsock通信プログラム 2

c言語 winsock通信プログラム 受信側

通信するプログラムの受信側のソースコード

#include<stdio.h>
#include<winsock2.h>

int main(void){

while(1){

WSADATA wsaData;

WSAStartup(MAKEWORD(1,0),&wsaData);

struct sockaddr_in client, server;

char buf[2];

int a,b,c;

a=socket(AF_INET, SOCK_STREAM,0);
memset((char*)&server,0,sizeof(server));

server.sin_family=AF_INET;
server.sin_addr.s_addr=htonl(INADDR_ANY);
server.sin_port=htons(ポート番号をここに入力する);

bind(a,(struct sockaddr*)&server),sizeof(server);
listen(a,1);
c=sizeof(client);
b=accept(a,(struct sockaddr*)&client,&c);

recv(b,buf,2,0);

printf("%s",buf);

closesocket(a);
closesocket(b);

WSACleanup();}

return 0;
}



bind(a,(struct sockaddr*)&server),sizeof(server);
listen(a,1);
c=sizeof(client);
b=accept(a,(struct sockaddr*)&client,&c);
recv(b,buf,2,0);

bind関数でソケットを開き、listenで受信の準備をする。
acceptで受信待機状態にする。
recvで送信側から送信されたデータを受信する。

c言語 winsock通信プログラム 

c言語 通信プログラム クライアント側

 二つのパソコンを用意して、クライアント側からサーバー側に文字を送るプログラムを本やサイトを参考にして組んでみました。

f:id:idoushiki:20160330003006p:plain
上の図のように、パソコンを二つ用意してLANケーブルで繋ぎ、クライアント側からサーバー側に文字を送るプログラムを組めるようにしたいと思います。


 ウインドウズのPCなら、「winsock」を使えばTCP通信、UDP通信をすることができます。
 
 「winsock」について詳しくはこちら→
Geekなぺーじ:winsockプログラミング


 
 winsockには、winsock.hとwinsock2.hの2種類が存在しますが、今回はwinsock2を使っています。
  
 
 f:id:idoushiki:20160329231014p:plain
 f:id:idoushiki:20160329230536p:plain

 VisualStudioでwinsockを使うには設定が必要です。
 
 プロジェクトのプロバディで、
「構成プロバディ」→「リンカー」→「入力」を選んで、「追加の依存ファイル」に
「ws2_32.lib」と入力して「適用」を押せば、winsock2.hを利用することができます。

 

ソースコード クライアント側

#include <stdio.h>
#include <winsock2.h>

int
main(void)
{ while(1)

{
 WSADATA wsaData;



 // winsock2の初期化
 WSAStartup(MAKEWORD(1,0), &wsaData);

 struct sockaddr_in server;

 char buf[2];
 int a;
 fgets(buf,2,stdin);

 a=socket(AF_INET, SOCK_STREAM, 0);
 memset((char *)&server,0,sizeof(server));

 server.sin_family=AF_INET;
 server.sin_addr.s_addr=inet_addr("相手のIPアドレスをここに入れる");
 server.sin_port=htons(ポート番号をここに入れる);
 
 
 connect(a,(struct sockaddr *) &server, sizeof(server));

 send(a,buf,2,0);


 closesocket(a);
 
 // winsock2の終了処理
 WSACleanup();}
 
 return 0;
}

このプログラムは、クライアント側のパソコンで入力した文字をサーバー側のパソコンに送信するプログラムのクライアント側です。



・送信する文字の数を設定する

 char buf[2];←[]の中の数字を変更して送信できる文字の量を調節する。
 int a;
 fgets(buf,2,stdin);←真ん中の数字(2)はbufの[]内の数字と同じにする。

fgetsで入力した文字をbufに格納して、sendでデータをサーバー側に送る

 send(a,buf,2,0);←真ん中の数字(2)はbufの[]内の数字と同じにする。


・winsockの初期化

WSADATA wsaData;

 WSAStartup(MAKEWORD(1,0), &wsaData);

winsockで通信をするためにはまず↑のコードで初期化をする必要がある。
MAKEWORD()かっこの中の二つの数字は、winsockのバージョンを表しているので、今回は(1,0)に設定してある。


.socketの設定

 a=socket(AF_INET, SOCK_STREAM, 0);
 memset((char *)&server,0,sizeof(server));

socket関数でsocketを用意して、memset関数で(server)を0で初期化する。


・サーバー側と通信

 connect(a,(struct sockaddr *) &server, sizeof(server));

 send(a,buf,2,0);

connectでサーバーに接続する。
sendで、サーバーにbufを送信する。



・通信終了

 closesocket(a);
 
 WSACleanup();

closesocketでソケットを閉じる。(fcloseみたいな感じ)
WSACleanupでwinsockを終了する。