1.背景
とにかく、バチカンの生命倫理に関する(日本語の)資料がすくなくて、大変。この論文は、ネット上で見つけた数すくない論文の一つ。
2. 概要
(1)命はいつから始まるか、について
(a)受精から、(b)着床から、(c)社会的動向と合わせて判断すべき
(2)カソリックが否定している事項
(a)結論:
カソリックは、人工受精、体外受精、は勿論、避妊も否定している。
(b)原則する考え方
結婚には2つの意義がある。
(i)夫婦の一体化、
(ii)生殖(子どもを作ること)
(c)論理付け:
(i)避妊は→夫婦の行為から生殖の可能性を故意に排除する→上記の原則(b)を破壊する
(ii)人工受精・体外受精→夫婦の営みを前提としない生殖→事実上の結婚の意味と結果を分裂させる→上記の原則(a)(b)の両方を破壊する
再起動後、変なプログラム(あれとか、あれとか、あれ)を立ち上げる前(ログイン直後)に、Windows Updateを実行すると、上手くいった。
原因を追求しても、あまり意味がないので、運用で対応する。
つまり、私の環境では、自動WindowsUpdateは必ず失敗するので、定期的に自分で実施する必要がある、ということになる。
http://www.planex.co.jp/support/download/mzk-rp150na/pdf/MZK-RP150NA_Manual_V2.1.pdf
■ap-game-****を無効にする
1. 設定画面右上「無線LAN」、左フレーム「基本設定」の順にクリックしてください。
2. 画面内「仮想AP」をクリックしてください。
3. 仮想AP表内の「ap-game-****」の「有効」のチェックを外してください。※チェックを外すことによりap-game-****は無効になります。
4.「適用」「再起動」の順にクリックして設定を保存してください。
UDP受信プログラム
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int
main()
{
int sock;
struct sockaddr_in addr;
char buf[2048];
sock = socket(AF_INET, SOCK_DGRAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.s_addr = INADDR_ANY;
bind(sock, (struct sockaddr *)&addr, sizeof(addr));
memset(buf, 0, sizeof(buf));
recv(sock, buf, sizeof(buf), 0);
printf("%s\n", buf);
close(sock);
return 0;
}
UDP送信プログラム
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int
main()
{
int sock;
struct sockaddr_in addr;
sock = socket(AF_INET, SOCK_DGRAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
sendto(sock, "HELLO", 5, 0, (struct sockaddr *)&addr, sizeof(addr));
close(sock);
return 0;
}
/***********************************************************
** Function : UDP受信テストプログラム(MinGW on Win7)
** File Name: udp_recv_test.c
** Debug : gcc -g udp_recv_test.c -o udp_recv_test -lwsock32 -lws2_32
** Author :
** create :
** modify :
***********************************************************/
//----------------------------------------------------------
// Includes
//----------------------------------------------------------
#include <stdio.h>
#include <sys/types.h>
#include <winsock2.h>
#include <ws2tcpip.h>
//#include <sys/socket.h>
//#include <netinet/in.h>
//#include <arpa/inet.h>
//#include <netdb.h>
//----------------------------------------------------------
// Defines
//----------------------------------------------------------
#define _POSIX_SOURCE 1 /* POSIX comliant source (POSIX)*/
#define BUFFSIZE 2048
#define FALSE 0
#define TRUE 1
//----------------------------------------------------------
// Globals
//----------------------------------------------------------
//----------------------------------------------------------
// Prototype
//----------------------------------------------------------
int main(int argc, char *argv[]);
//----------------------------------------------------------
// Code
//----------------------------------------------------------
int main(int argc, char *argv[])
{
WSADATA wsaData;
SOCKET sock;
struct sockaddr_in addr;
//int sock;
char buf[2048];
char *deststr;
unsigned int **addrptr;
/*******************************************************
** Initialize
********************************************************/
if (WSAStartup(MAKEWORD(2,0), &wsaData) == SOCKET_ERROR) {
printf ("Error initialising WSA.\n");
return -1;
}
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
perror("socket");
return 1;
}
/*******************************************************
** Process
*******************************************************/
//------------------------------------------------------
// (1)
//------------------------------------------------------
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.s_addr = INADDR_ANY;
//------------------------------------------------------
// (2)bind
//------------------------------------------------------
bind(sock, (struct sockaddr *)&addr, sizeof(addr));
//------------------------------------------------------
// (3)recv
//------------------------------------------------------
memset(buf, 0, sizeof(buf));
recv(sock, buf, sizeof(buf), 0);
printf("%s\n", buf);
/*******************************************************
** Terminate
*******************************************************/
//close(sock);
closesocket(sock);
WSACleanup();
return 0;
}
/***********************************************************
** Function : UDP受信テストプログラム(MinGW on Win7)
** File Name: udp_recv_test.c
** Debug : gcc -g udp_recv_test.c -o udp_recv_test -lwsock32 -lws2_32
** Author :
** create :
** modify :
***********************************************************/
//----------------------------------------------------------
// Includes
//----------------------------------------------------------
#include <stdio.h>
#include <sys/types.h>
#include <winsock2.h>
#include <ws2tcpip.h>
//#include <sys/socket.h>
//#include <netinet/in.h>
//#include <arpa/inet.h>
//#include <netdb.h>
//----------------------------------------------------------
// Defines
//----------------------------------------------------------
#define _POSIX_SOURCE 1 /* POSIX comliant source (POSIX)*/
#define BUFFSIZE 2048
#define FALSE 0
#define TRUE 1
//----------------------------------------------------------
// Globals
//----------------------------------------------------------
//----------------------------------------------------------
// Prototype
//----------------------------------------------------------
int main(int argc, char *argv[]);
//----------------------------------------------------------
// Code
//----------------------------------------------------------
int main(int argc, char *argv[])
{
WSADATA wsaData;
SOCKET sock;
struct sockaddr_in addr;
//int sock;
char buf[2048];
char *deststr;
unsigned int **addrptr;
/*******************************************************
** Initialize
********************************************************/
if (WSAStartup(MAKEWORD(2,0), &wsaData) == SOCKET_ERROR) {
printf ("Error initialising WSA.\n");
return -1;
}
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
perror("socket");
return 1;
}
/*******************************************************
** Process
*******************************************************/
//------------------------------------------------------
// (1)
//------------------------------------------------------
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.s_addr = INADDR_ANY;
//------------------------------------------------------
// (2)bind
//------------------------------------------------------
bind(sock, (struct sockaddr *)&addr, sizeof(addr));
//------------------------------------------------------
// (3)recv
//------------------------------------------------------
memset(buf, 0, sizeof(buf));
recv(sock, buf, sizeof(buf), 0);
printf("%s\n", buf);
/*******************************************************
** Terminate
*******************************************************/
//close(sock);
closesocket(sock);
WSACleanup();
return 0;
}
0.前提条件
■Meadow(私の場合は3.0)がインストールされていること。
1.背景と狙い
■今後、簡単な数値シミュレーションのニーズが増えそうであり、できるだけ軽いプログラミング環境を作っておきたかった。
■とにかく軽くて、どのプラットフォームでも使えて、そして、もうこれ以上、私は、プログラミングの勉強をしたくなかった(C++でラストにしたい)。
■GUIなんぞには興味はなく、I/O系を使うこともないだろう(せいぜいsocketI/Oが条件)。またJava VMやJava開発環境は、私には正直「分からん」
■Perl, Rubyのスクリプト言語が良いことは良く理解しているが、知らない使い方を、その都度調べるのが面倒。
2.目的
■結局、UNIXの創世記から存在し、殆どのプラットフォームで利用可能で、今なお健在のGNU C Compiler(GCC)が、私には一番ラク。
■これをMeadow上のGDBの環境で使えれば、それで、私にはパラダイス。
3.開発環境構築
■「Windowsレジストリに登録されない」との一言で、cygwinをやめて、mingwにすることに決定。これならUSBメモリで開発環境を持ち歩ける(らしい)
(Step.1)http://sourceforge.net/projects/mingw/files/Installer/mingw-get/ ここ からダウンロードしてくる。私は、今回は「mingw-get-0.4-mingw32-alpha-1-bin.zip」をダウンロードした。
(Step.2)解凍するとディレクトリができるが、ディレクトリのトップが長いファイル名のままなので、"MigGW"などに替えて、C:\Users\ebata\mingwにもってきた。
(Step.3)C:\Users\ebata\mingw\binをpathを設定する。
(Step.4)C:\Users\ebata\mingw\binに移動して、"mingw-get list"と入力(時間がかかる)
(Step.5)mingw-get install gcc g++ mingw32-make
(Step.6)mingw-get install msys-base
(Step.7)mingw-get install gdb
(2016/04/04加筆)
スレッドプログラミングが行いたい場合は、以下を追加。
(Step.8)mingw-get install mingw32-libpthreadgc
(Step.9)mingw-get install mingw32-libpthreadgce
(Step.10)mingw-get install mingw32-pthreads-w32
(どれか1つは失敗したような気がするが忘れた)
このままpthreadのプログラムのコンパイルを試みると、
"c:\mingw\include\pthread.h:320:8: error: redefinition of 'struct timespec'"
などと喧しく言われることがある。
面倒くさかったので、C:\mingw\include\parts の time.hの、struct timespec をまるごとコメントアウトしたらコンパイルが通った
(2016/04/04加筆ここまで)
私の場合、Meadow側の設定は不要だった。
4.実行環境
==============================
#include int main ()
{
printf("Hello, world\n");
printf("2:Hello, world\n");
printf("3:Hello, world\n");
}
==============================
を、test.c と名前を入れて、
gcc -g test.c でコンパイル。
M-x gdbと入力すると、多分"gdb --annotate=3 a.exe"と表示されるので、そのままデバック環境を実行。ソースコードと連動して動く(あたりまえだが、20年前の環境が再現されて感動する)。
5.主要な操作
基本的には、ブレークポイントを設定してrunをする。
■ソースコート上でブレークポイントのセット
c-x space
■ソースコート上でブレークポイントの削除
該当行で C-x C-a C-d
ブレークポイントバッファの該当箇所で D(大文字)
マウスのクリックでも可能。
■n,sでステップ毎に進む。
以上
出展 http://robot009.blogspot.jp/2014/01/mingw-socket-programming-in-c.html
a. おまじない
・include
#include
#include
通常の #include ,などは使わない
・モジュールの初期化が必要
変数宣言 WSADATA wsaData;
初期化 WSAStartup(MAKEWORD(2 ,0), &wsaData);
終了処理 closesocket(SOCKET ss);
WSACleanup();
b. 変数宣言
SOCKET を使う。POSIXは、int の descriptor
従って、read、writeは使えない。recvとsendを使う。
c. リンクモジュール
-lwsock32 -lws2_32
gdbでデバックしようとする時は、こんな感じのコマンドでコンパイルする。
gcc -g server.c -o server -lwsock32 -lws2_32
gcc -g client1.c -o client1 -lwsock32 -lws2_32