2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|

2014-03-10 「生命倫理に関する教会公文書の長所と短所」のサマリ [長年日記]

1.背景

とにかく、バチカンの生命倫理に関する(日本語の)資料がすくなくて、大変。この論文は、ネット上で見つけた数すくない論文の一つ。

2. 概要

(1)命はいつから始まるか、について

(a)受精から、(b)着床から、(c)社会的動向と合わせて判断すべき

(2)カソリックが否定している事項

(a)結論:

カソリックは、人工受精、体外受精、は勿論、避妊も否定している。

(b)原則する考え方

結婚には2つの意義がある。

(i)夫婦の一体化、

(ii)生殖(子どもを作ること)

(c)論理付け:

(i)避妊は→夫婦の行為から生殖の可能性を故意に排除する→上記の原則(b)を破壊する

(ii)人工受精・体外受精→夫婦の営みを前提としない生殖→事実上の結婚の意味と結果を分裂させる→上記の原則(a)(b)の両方を破壊する


2014-03-11 Windows アップデート のトラブル (エラー番号 0x80070057) [長年日記]

再起動後、変なプログラム(あれとか、あれとか、あれ)を立ち上げる前(ログイン直後)に、Windows Updateを実行すると、上手くいった。

原因を追求しても、あまり意味がないので、運用で対応する。

つまり、私の環境では、自動WindowsUpdateは必ず失敗するので、定期的に自分で実施する必要がある、ということになる。


2014-03-18 MZK-RP150NA [長年日記]

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.「適用」「再起動」の順にクリックして設定を保存してください。


2014-03-25 UDP送受信プログラム [長年日記]

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;
}

2014-03-26 GCC+Meadow+GDBの環境構築に成功 [長年日記]

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でステップ毎に進む。

以上


2014-03-27 MinGWはそのままではSocketI/Fを使えない [長年日記]

出展 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