コードの日本語化をC++に拡張しようとした時の出来事 [プログラム一般]

 今日は今迄C言語だけでテストしてきましたが、C++でも同様にできることを確認しましたので、報告迄です。ただし、これはMacだけしかできないようです。clangコマンドをインストールできるOSであれば、clang++もインストールできそうな気がしますが、記憶では今のところclang++をインストールできるのはMacだけです。

(*追記:Linuxで調べたところ、clangがインストールできれば、clang++は使えるようでした。と言うことはOSに依存しないようです。)なので、これはマックユーザだけのメッセージになりそうですが、いずれはすべて大丈夫になると思いますので、参考迄に。
今回もC++の最初の入門コードの形になるのですが、今回はメイン関数内では一切abc…を使っていません。そのように仕組みました。コードはこれ:
#include<iostream>

#define 使う using
#define ネーム空間 namespace
#define を std
#define 整数領域 int
#define メイン main
#define シーアウト cout
#define 改行 endl
#define 戻り値 return

使う ネーム空間 を;

整数領域 メイン()
{
      を::シーアウト << "こんにちは、C++の世界へようこそ!" << 改行;
 
      戻り値 0;
}
コンパイルはターミナルから $ clang++ ようこそC++.cpp -o ようこそC++
で、これもノーエラー、ノー警告です。まあズに乗ってネットからもっと参考になるサンプルがないかなあと思って、グーグルで調べると、ウインドウズようなのですがCですから共有できるだろうと思ったのが大間違い、どっとハマってしまいました。コードはこのようなものです。
/************************/
/*  コンピュータ名取得  */
/************************/
#include <stdio.h>
#include <windows.h>

void  main( )
{
    char    cpnm[MAX_COMPUTERNAME_LENGTH+1];
    DWORD   len;

    len=MAX_COMPUTERNAME_LENGTH+1;

    GetComputerName(cpnm,&len);

    printf("\nこのコンピュータの名前は %s です\n",cpnm);
}
このコードには<windows.h>がありますが、それならMacにもあるだろうと高を括ってしまったわけです。ありませんでした。なので、せっかく試してみたのにできなかったことが悔しかったので、削除したwineのCodeWarriorを再びインストールし直して試してみました。コンパイルはできたのですが、警告が21も出て来て、しかもメッセージは文字化けしていて、まともに見る気もしません。この実行結果は日本語は文字化けでしたが、名前は出てきました。
「Frc-2」?アルファベットではありますが、意味が???で、このIDEは結果をテキストとして保存することができるので、その内容をテキストエディットで見ると、「このコンピュータの名前は Pro-2 です」となっていて、これだと内容通りです。2は何の2なのか分かりませんが、それなりに拾っています。win95のプログラムソフトですから、そんなもんだと思います。しかし、気付いたのはコードを例によって全部日本語に置き換えた後だったので、がっかりでした。まあそれはそれとしても、このページは文科省公認のページなんだとか?よくわかりませんが、こういう人達はWindows以外は認めない主義なのでしょうか?確かにWindowsが揺るぎない安定したOSなら話は分かりますが、こんな注意書きみたいなものも有るのです、「このexeファイルをトロイの木馬と判断するウイルスソフトがあるので云々…」ええ?Windowsって未だにウイルスソフトを入れないとダメなの?うそ〜?って言いたくなりますが、確かにwine上でも不可思議な動きをするので対応するだけで頭を抱えること屢々です。例えば、ターミナルではctrl+cでプロセスを終了させたつもりが、しばらくして何もしていないのに、かってにまた動き出すのです。ええ?タイマー?再自動起動?理解できません。コードエディターに日本語を入力する時も、入力は英語なのに入力できないかと思いきや、日本語では当然ダメだと思いきや、それの間違った変換できないアルファベットだけは打てたりと様々です。
で、話を戻しますがこれ、windows特有のコード部分ならまだ話が分かるのですが、コードの使い方なのでしょうか、Macでは結構警告が出ます。警告は次期バージョンがアップデートした時エラーに変わることも有るので、これを公開するのには注意が必要なはずですが、但し書きも有りません。それが、検索のトップに出て来るとはこれ如何に?
勘弁して〜!


Objective-C2.0コードを日本語化する [Mac関連]

 これは私が最近取り組んでいるお遊びみたいな仕事 
なのですがobjective-cのコドを日本語化して日本 
語でプログラムを組もうと言うものですと言っても原 
語を変更しようと言うものではなく別個に日本語で置 
き換えて試そうというものですから基本はやはり英語 
です                       
日本人に生まれ日本語しか話せない人間にとっては 
四六時中英語のコドと睨めっこするのは一縷の寂 
しさを感じるし特にMacのnext-step objective-c 
心のつぶやきがそのままコドにしない限り発想 
がそもそも浮かんできませんそう私は英語ではつぶ 
やけないのですそこで微弱ながらこの発想が生まれ 
ましたまずはヘッダファイルからなのですがそう 
は言うもののFoundationだけのヘッダファイルだけ 
でも相当有るしちょこっとやったところを紹介する  
こんな感じです                
・・・・・・・・・・・・・・            
#define 範囲 range
#define 利用可能 _AVAILABLE
#define オブジェクトを獲得 getObjects
#define オブジェクトの索引 indexOfObject

@クラス タデタ, タ索引セット, タ文字, タURL;    
/********* 可変的柔軟な配列 *********/
@インタフェス タ配列 : タオブジェクト <タコピング, タ可変的コピング, タ安心コディング, タ高速列挙> 
- (タU整数)カウント配列;               
- (id)オブジェクトに索引を:(タU整数)索引;
@終わり

@インタフェース タ配列 (タ拡張した配列)      
                          
- (タ配列 *)オブジェクト追加措置配列:(id)anオブジェクト;                         
- (タ配列 *)配列からのオブジェクト追加措置配列:(タ配列 *)その他配列;                    
- (タ文字 *)ストリングによる結合型コンポネント:(タ文字 *)区切り線;                    
- (BOOL)オブジェクト内包:(id)anオブジェクト;    
- (タ文字 *)説明器;                  
- (タ文字 *)地方言語用説明器:(id)地方言語;       
- (タ文字 *)地方言語付き説明器:(id)地方言語 indent:(タU整数)level;                     
- (id)配列付き一番目のオブジェクト標準:(タ配列 *)その他配列;                        
- (void)オブジェクトを獲得:(id __unsafe_unretained [])                         
オブジェクトs 範囲:(タ範囲)範囲;           
- (タU整数)オブジェクトの索引:(id)anオブジェクト;  
- (タU整数)オブジェクトの索引:(id)anオブジェクト in範囲:(タ範囲)範囲;
- (タU整数)indexOfObjectIdenticalTo:(id)anオブジェクト;
- (タU整数)indexOfObjectIdenticalTo:(id)anオブジェクト in範囲:(タ範囲)範囲;
- (BOOL)isEqualToArray:(タ配列 *)その他配列;   
・・・・・・・・・・・・・・・・・・・・・・・・・ 

コンパイルできるコード

まだ未完で縦書きなのでちょっと変に感じるかもしれま
せんが日本語の部分はコドに見えない程ではないで 
しょうか                      
しかしこれはコンパイルされるちゃんとしたコドで 
日本語訳は好みで私が訳したものですから違う意味
のところが有るかもしれませんが単なる例です   
コンパイルされるかどうか疑わしいと思う人のために
れを用意しました                 
#import <Foundation/Foundation.h>        
                          
#define 一つのオブジェクトタイプ 2000       
#define 二つのオブジェクトタイプ 3000       
#define 三つのオブジェクトタイプ 4000       
#define ログ NSLog                
#define 待ち行列 pool               
#define 逃がす drain                
#define 自動解放プル NSAutoreleasePool    
#define 授ける alloc                
#define 初期化 init                 
                           
int main(int argc, const char * argv[])       
{                          
  自動解放プル *待ち行列 = [[自動解放プル 授ける] 初期化];
                           
  ログ(@"一つのオブジェクトタイプ=%d", 一つのオブジェクトタイプ);
  ログ(@"二つのオブジェクトタイプ=%d", 二つのオブジェクトタイプ);
  ログ(@"三つのオブジェクトタイプ=%d", 三つのオブジェクトタイプ);
                          
  [待ち行列 逃がす];                 
                            
  return 0;                     
}                          
このコドはちょっと古いタイプのobjective-c2.0です 
が今のものでも同様にコンパイルできます$ clang -o 
 定数について 定数について.m -framework      
Foundationで確認済みですまたMacではもうswiftに 
移行するのでしょうからこれらのコドが大幅変更され
ることは無いでしょうし日本語化してみることによっ 
得るものも有るはずですこの日本語化には規則を
設けてあって演算命令はそのまま使うとしています
闇雲に日本語化しないというのも大事にしたいところ
です                       
縦書きですみませんがなるべく日本人は日本人として値
を返す主義に徹したいかなあと           

Cファイルコードに日本語を挿入してみる [Mac関連]

 Xcode4になってから殆どXcodeに触っていなかったのですが、ちょっと自身に激を入れようかなと思い、Xcode5をちょっとまた触りだしました。画面が散らからないように、統合されたのと新しい要素も加わっているらしい。とは言っても、どちらかと言えばiPhone, iPadのために有るような感じで、それらは使わないのでちょっと違った使い方をしようかなと、何気なくターミナルからCファイルをいじっていたら、なんかコンパイル時のメッセージが、日本語でうまく表示できてるなと思い、まさかという感じでコード自体に日本語を加えてみました。

ファイル名も日本語でコンパイルできました。余り意味は有りませんが、可能かどうかやって見る価値はあります。そこで、#define での定義はコンパイル時にアスキー文字に変わるようなので、これは有りかなって感じで、やってみると警告は出るもののコンパイル可能でした。コードはunixの参考書そのまま使っています。


イグザファイル.c
#include <stdio.h>

#define デリ1 "¥010"        //DEL1をデリ1に変えるとどうなるか
#define デリ2 "¥138"        //DEL2をデリ2に変えるとどうなるか

int main()
{
    int c, p;
    p="¥000";
    while((c=getchar()) !=EOF){
        if (c!=デリ1 && c!=デリ2){
            putchar(c);
        } else {
            if (
                (p>=129 && p<=159) || (p>=224 && p<=252)){
                    putchar(c);
                }
        }
        p=c;
    }
    // sub();
    exit(0);
}


コンパイル時の警告はこれ、


$ cc -o イグザファイル イグザファイル.c


イグザファイル.c:9:3: warning: incompatible pointer to integer conversion assigning to 'int'
      from 'char [6]' [-Wint-conversion]
        p="¥000";
         ^~~~~~~
イグザファイル.c:11:8: warning: comparison between pointer and integer ('int' and 'char *')
                if (c!=デリ1 && c!=デリ2){
                    ~^ ~~~~~
イグザファイル.c:11:22: warning: comparison between pointer and integer ('int' and 'char *')
                if (c!=デリ1 && c!=デリ2){
                                ~^ ~~~~~
イグザファイル.c:22:2: warning: implicitly declaring library function 'exit' with type 'void
      (int) __attribute__((noreturn))'
        exit(0);
        ^
イグザファイル.c:22:2: note: please include the header <stdlib.h> or explicitly provide a
      declaration for 'exit'
4 warnings generated.

嘗てのマックではコメント以外はエディタに日本語を打っただけで、受け付けなかったと記憶しているのですが、段々日本語にも優しくなってきて、これはmavericksになってからでしょうか、コンパイルもどうあれ最後まで読んでくれています。このコードは実行すると、入力待ちになって入力すると、エコーコマンドと同じその文字を返すコマンドなのですが。当然日本語もその値を返というものです。


で、ネットで調べる限りは、このようなことはできるとも、やってみたという記事も無いようなので今では常識なのか意味が無いから誰もやらないのか定かでは有りませんが、日本語が使える部分があるのであれば、使ったほうが良いのではないでしょうか。
疑う人もいるかと思うので、今使っている環境を説明すると、Mac Pro xeon 8core OSX10.9.3 でインプットメソッドとしてはMacUIMとGoogle日本語入力MacPortsではコンパイルに必要な物は全部入れてあると言っていいほど入っていますが、どれどれと言われても困るほど、インストールしています。
まあ、大勢は変わらないでしょうけど参考まででした。

*追記:Linuxでも試したところ、gccではエラーになりますが、clangでは警告のみでコンパイルできました。再びMacに戻ってclangでやると、このコードはノーエラー、ノー警告でした。

#include <stdio.h>

#define 第一 1
#define 表示 a()

void 表示;

int main(){

  if (第一){

    表示;

  }
  return 0;
}

void 表示{
  printf("1こんにちは\n");
  printf("こんにちは\n");
  printf("こんにちは\n");
}


縦書する時の注意点 [プログラム一般]

 

 最近ずっと縦書で投稿しているのですがブログで縦書にする
とはっきり分かるところがありますそれは自分が書いているとこ
ろと自動で挿入される部分とはっきり別れるところですつまり好
むと好まないとに関わらず表示される部分とにですネットではや
はり横書きの方が読みやすいのかも知れませんしかし筆者が
育った環境は主に縦書であり私の購読書は縦書が殆どでやは
り縦書のほうが読み易い事は事実なのです

 


 

まあこだわる必要はないんだろうし何方かというと縦書の方
が読みやすいと思う人に読まれれば良いかなと思っています

 


 

 それで縦書をしていて気付いたことがあるのですがそれはア
ルファベット表記にした時です横書きだと例えば
I am a boy.
と書いて
html
つまりブラウザで見てもその通り表示されるのに対して
縦書の場合は
Iamaboy.
となってスペスが表示されません
html
では横書きなので確かにスペスはあるのですなのでスペ
を表示する方が自然のように思いますけれども何故なのかハッキ
リしたところが分かりません

 




縦書の部分は、実は横書きで、こう書いていたのです。


 最近ずっと縦書で投稿しているのですが、ブログで縦書にするとはっきり分かるところがあります。それは、自分が書いているところと自動で挿入される部分とはっきり別れるところです。つまり好むと好まないとに関わらず表示される部分とにです。ネットではやはり横書きの方が読みやすいのかも知れません。しかし、筆者が育った環境は主に縦書であり、私の購読書は縦書が殆どで、やはり縦書のほうが読み易い事は事実なのです。
まあ、こだわる必要はないんだろうし、何方かというと、縦書の方が読みやすいと思う人に読まれれば良いかなと思っています。
 それで、縦書をしていて気付いたことがあるのですが、それはアルファベット表記にした時です。横書きだと例えば、I am a boy. と書いてhtmlで、つまりブラウザで見てもその通り表示されるのに対して、縦書の場合は、Iamaboy.となってスペースが表示されません。htmlでは横書きなので確かにスペースはあるのです。なので、スペースを表示する方が自然のように思いますけれども、何故なのか、ハッキリしたところが分かりません。ところがです、横書きの場合でもスペースを2回打っても表示されるのは一個だけです。これがストリングとキャラの違いなのでしょうか。私も各言語の参考書を曲がりなりにも全部持っているのですが、この手の説明に出くわしたことがありません。これも私自身の中では、西洋の神秘とでも言いましょうか謎なのですが、htmlについては、もう一つ謎があります。暗黙の了解なのでしょうがhtmlの元はjavaでjavaの参考書で足りない説明というと、何故構文の中に”#””<>”を使うことを禁じているのかです。その手の解説説明にも出くわしたことがありません。私は自己解釈でhtmlでそれを使うとコールバックが起こって、Cやjavaのオブジェクトコードに入り込んで、クラッシュしてしうからだと判断しています。つまり、ジャバは初めからブラウザを意図して作られた言語だったんだと思っています。当時は今のようなブラウザも田舎にはインターネットも無かったですから、はっきりと断定はしていませんでしたけど。まあ、たまにフィードバックしないと、頭の中が機械と同じ暴走しそうな気がして、整理しています。


Mac(Mavericks)でWebServer/DocumentsをMacPortsのwwwに変えてみた [Mac関連]

Mac OSX では10.7以降は、phpもapache2以降もバージョンがextensions対応になっているらしいのですが、10.6.8からMavericksにアップグレードしたのでは、phpもapache2も古いままなので、localhostでphpMyAdminのmcryptが無いというメッセージを消せずにいました。
前のブログにも書いたのですが、これは新しくphpとapacheを入れ直せば簡単に片付く問題と容易く考えていました。甘かった?
本家からphp-5.4.x, php-5.5.xやhttpd-2.4.xとかダウンロードして、./configure … install…とやってもどうしてもエラーになりインストールできないし、MacPortsからインストールしても、今一どころか、どうしたらhttp://localhost/にopt/localからのApacheに切り替えるのかさえも、実際は分かりませんでした。ネットで調べても、筆者のようなケースは稀なのか、それと覚しきページに行き当たりません。
なので、当たって砕けろで大分悩みながら、一応/opt/local/www/phpmyadmin/を表示して、mcryptエラーを無くす事ができました。分かってしまえば、ごく簡単でしたが、取り敢えずの話で、課題は沢山残されています。これだと、ちょっと前の機種(10.6.8)でも大丈夫そうですが、取り急ぎまだ試していません。

さて本題ですが、portでphpmyadminやwordpressをインストールすれば、wwwのディレクトリができて、様々なextensionを同時にインストールしてくれるのですが、mcryptもその一つです。
なのでこのウェブルートをlocalhostにしたいわけです。それには、phpとapache2もportからインストールしなければ反映されないというのは、当たり前のようなので、インストールしました。phpのバージョンはphp55にしたのですが、記憶に無いのですが、ただのphp5もインストールしてありました。後はmysqlですが、これは5.7.3がインストール済みなのですが、optoptようにインストールしなければならないものだと判断して、5.5あたりをインストールしたりネットからtarファイルをダウンロードしてインストールしたりと様々やったのが、返って混乱を招いたようです。
最終的には、5.7.3で事足りていました。

 最初にphpをインストールすればapache2をダウンロードした時点で、/opt/local/にapache2が追加されるのが分かるので、順番にこだわる必要は有りませんが、apache2のディレクトリは、/opt/local/etc/apache2も出来ているので、これがいつ出来たものかが分かりません。未だに分からないのですが、ここにはphp55もあるので、この時だとは思うのですが?
計算ではこの時点でドキュメントルートさえ返れば、http://localhost/でIt Works!とか表示するわけですが、色々試して行く着いた結果が、sudo httpd - stop, sudo apachectl stopで今のアパッチを止めて、/opt/local/apache2/bin/httpd -k start とやると上手く行くという事でした。
これで、ブラウザでlocalhostとやると、/opt/local/apache2/htdocs/index.htmlのIt works!とでました。
では、これでphpファイルを表示できるかというと、出来ませんでした。
まずは、php.iniとhttpd.confの設定ファイルを、設定し直さなくてはなりません。
php.iniファイルは、/opt/local/etc/php55にphp.ini-developmentがあるので、cpコマンドで同じディレクトリにphp.iniを作り、中身は/etc/php.iniのように現在のままで良さそうですが、httpd.confは多少直して、LoadModule php5_module modules/libphp5.so を追加、DocumentRootに”/opt/local/www”に変更。ディレクトリも、に変更。下の方にあるInclude の設定を前のと同じくするために、コメントアウトして、Include /private/etc/apache2/other/*.con を追加。 このファイルが有るconfディレクトリをwwwディレクトリにオプションドロップでコピー。 同じく、confと同じディレクトリにあるmodulesディレクトリもコピー。これでhttpdをスタートさせても、ターミナルから文句が来るので、本来apache2に有ったotherとusersもコピー。 それでエラーが出るようであれば、指示に従いながら、筆者の場合警告は出るものの、起動しました。それで、インストールされているphpmyadminを見ると、mcryptエラーは無くなりました。 ApacheのバージョンはApache/2.2.26 (Unix)で24でしたので、アップグレードはしています。 phpは5.3.28, phpMyAdminは、4.1.7, 最終安定バージョン: 4.1.8となりました。(今気づいたのですが、このバージョンって昨日リリースされたと有りました。)wordpressもみれますが、同じ事なので省略。  最新の機種を持っている人であれば、こんな事で悩む必要がないかもしれませんが、いずれにしも、覚えていて損は無いと思います。又、MAMPとかBitNamiとかも、別の意味で悩んでしまいますので、筆者の方針としては、なるたけ、少ないメモリで動かす方向で、と考えています。 又、MacPortsでは他にも色々インストールできるみたいだし、node.jsとかsphinxとか試せるものは沢山有りそうです。

CentOSでGO言語チュートリアルを実践してみた [Go言語]

再びgo言語を CentOS6.5 にダウンロードしてHow to write Go code をやってみた。
Mac では確認済なので、そのやり方で良いはずだと思い、マニュアル通りとはちょっと違った方法でです。ダウンロードしたファイルは、go1.2.linux-386.tar.gzでパソコンの機種はMacBook core2duo2.2GHで内蔵ハードディスクにマルマルCentOSが入っている状態です。
OSX はどこ行ったかですって?大丈夫、中古で買ったディスクを入れ替えただけです。

 解凍の仕方は、書かれてあった通りなのですが、もう一回ホームディレクトリに同じものを解凍します。
パスは.bash_profileに、export PATH=/usr/local/go/bin:$PATH としました。
これは、PATH=$PATH:/usr/local/go/bin と同じことのようです。
そうなると、$ mkdir $HOME/go は省略しなくてはなりません。
後違うところが、$ mkdir -p $GOPATH/src/github.com/user で、これだと、エラーで弾かれてしまうので、メッセージにある通り/src/pkg/github.com/と言う風にpkgを増やしました。OS によりけりだとは思うのですが、このチュートリアル通りで上手くいくのが Solaris11 でした。あくまで現時点での話で、先々は当然変わるのでしょうけど。
..... 中略 .....
[xxx@localhost hello]$ go build github.com/user/newmath
warning: GOPATH set to GOROOT (/home/xxx/go) has no effect
[xxx@localhost hello]$ go build
warning: GOPATH set to GOROOT (/home/xxx/go) has no effect
[xxx@localhost hello]$ emacs hello.go
[xxx@localhost hello]$ go install github.com/user/hello
warning: GOPATH set to GOROOT (/home/xxx/go) has no effect
[xxx@localhost hello]$ hello
Hello, world. Sqrt(2) = 1.414213562373095
..... 後略 .......
こんな感じでターミナルからは警告は出ますが、結果はちゃんとアウトプットしています。
できないのは、最後の$ go test なのですが、これは、その後の課題としてあるようなので、飛ばして、
ターミナルから$ godoc -help と打つとサーバが起動できるようなので、$ godoc -http=:6060 でブラウザで確認すると、ホームページと同じものが出てきました。つまり、ネットのサーバにあるものを、そのまま同じものをダウンロードしたようです。
その画面がこちら、
6060.png
と言うことは、このファイル類をいじっていれば、同じようなホームページが出きるということか?
でネット上を探していると、Sphinx cakephp とかに出くわしました。これらは、セットで学んだ方が良さそうなので、今そちらに集中しています。

MacでPostgreSQLチュートリアルを試してみた [データベース]

 再び PostgreSQL9.3.2 に付いてなのですが、あれから色々試しているのですがMac10.9 の場合、ネットで調べている情報、または付属のマニュアルとは多少食い違いがあるので、参考までにアップしてみました。まあ、使用している人は少ないでしょうけれども、なかなか誰も更新した情報を出してくれないので、これは使用したユーザの責務と思っています。
 インストールの条件としては、最低 9.3.2 は当然のことながら、phpPgAdmin, pgAgent, apachephp は選択の画面でインストールしなければならないようです。
筆者は取り敢えず全てインストールしたのでもしかしたら、足りないのかもしれませんが、指示通りインストールすれば、/Library/PostgreSQL/9.3/doc/postgresql/html/ に参考となるチュートリアルがありました。そのマニュアルには、$ cd …/src/tutorial と有り、探しましたが有る訳が有りません。探し物は今読んでいるそのものなので。なので、マニュアルはそこそこにして、Mac に合った使用に解読しながらいかなければなりませんでした。まず、postgres のユーザになってターミナルからデータベースを作るやり方です。
これは、ブラウザからもできるので、実際からいえば必要ないといえばないんだろうけれども、マニュアル通りにやっているとハマってしまうと思い、取り敢えず上げます。インストール時点の pgAgent でパウワード設定は終わっているものとして、ターミナルから、
$ sudo su - postgres でユーザを変更。アプリケーションで用意してくれている SQL Shell(psql)もありますが、同じことであり、どちらかというと \q でウインドウを閉じなければならなくなるのと、バックグラウンドカラーが効かないので、使わないようにしています。
$ bin/createdb mydb でデータベース作成。要求されるパスワードは、今度はpostgres のパスワード。これは、最初 bin に移動してやっていたので出来なかったのですが、移動しては駄目のようです。つまりこの方法がベスト。
$ bin/psql -s mydb でスーパーユーザに。でこう表示になりました。
~ postgres$ bin/psql -s mydb
Password:
psql (9.3.2)
Type "help" for help.

mydb=#
ここ迄の過程は、ブラウザからだと、localhost:設定したポート番号でアクセスしてログオンして、データベース作成でmydbとしたのと同じことです。違うといえば、ターミナルからだと日本語が使えないということです。何度か試しましたが、ダメでした。phpPgAdmin ではデータベース名テーブル名も日本語が使えます。
なので、カラム名は日本語でも問題なさそうです。なので、サンプルを日本語で作り直してみました。
mydb=# select*from tenkijouhou; で例えばこう表示になりました。
***(Single step mode: verify command)*******************************************
select*from tenkijouhou;
***(press return to proceed or enter x and return to cancel)********************
ここで、空エンター

都道府県 | 最低気温 | 最高気温 | 降雨雪量 | 日付
--------------+--------------+--------------+--------------+------------
山形県 | -5 | 3 | 10.5 | 2014-02-10
(1 row)

mydb=#
この表示だと、上の項目と下のデータ表示のカラム欄が位置として一致しませんでした。
ブラウザでは、すべて日本語はOKですが、シェルを使わない前提であれば、天気情報でテーブルは作れるし、表示もずれることは有りませんでした。
私が前に言ったpostgresql の使いやすさはここの部分が有るからです。勿論 MySQL でも phpMyAdmin でできますが、コレイトで数ある中からUTF-8 を選択するのが面倒なので、逆にターミナルを使いたくなるのですが、sql 文をインポートする場合であれば、どっちも同じかもしてません。
 それで、過去を10.6の頃を思い出したのですが、MacではMySQL をターミナルから日本語を使うのが厄介でした。ラテンとutf8との切り替えがなかなか出来ず、直すとブラウザで表示できなくなったりと、大部悩まされました。10.7になってからも悩みたくなかったので、パソコン自体余使わなくなったのですが、たまたまインターネットをまた繋げてみたら、10.9が無料でアップグレードできるようになったということで、その問題は無くなったようです。つまり、10.6.8で同じことをやると、上の都道府県とかもエラーになるのでした。
Mac ではやっとバイナリファイルをマトモに扱えるようになったということなのでしょうか。
この点ではWindows より10年溝を開けられていたことになるのでしょうか。私が Mac を使う理由は、ハード、ソフトが一体化しており、何と言ってもキーボードが打ち安く変換も他に比べてもスムーズなことです。
最近Linux を使って知ったのですが、量販店で売っているマウスの真ん中にあるボッチは、ペーストする時に使うものだとか。長年のMacユーザとしては、Linux を使わない限り必要では有りません。では何故Windows を使わないのかと言うと、有料だから。単純明快です。
 Linux というと、ubuntu14.04 がpostgresql に対応とか有ったので、インストールしようと思ったのですが、Mac の様にはいきません。Solaris11 でも試しましたが、やり方が悪いのかもしれませんが、どちらもpostgres ユーザを追加することがそもそもできませんでした。Windows ではMac と同じ仕様のようなので
問題ないとは思いますが、Linux はなぜこうなのでしょうか。ちなみにオラクルの最新版MySQLをネットのホームからダウンロードしてSolarisにインストールしようと思ったのですが、結局それも出来ませんでした。???
パソコンにゲームソフトとか似たような環境が付いていますが、使う気がしないのは私だけでしょうか。それならプレーステーションとか専門機買った方がパソコンも喜ぶと思うのですが、どんなもんですか?

MySQL5.7.3をインストールしてみた? [データベース]

Mac10.9でMySQLデータベースをバージョンアップしようとする人は、ほとんど居ないとは思いますが、MySQLの場合腑に落ちない事と、相変わらず Mavericks 用のバージョンが出ないなと思い、しょうがないので、10.6 用の5.7.3DMG をダウンロードしてインストールしてみました。
当座は MySQL5.6のバージョンで済む話かもしれませんが、バージョンアップしたい時に、過去のデータをどうすればよいのかとか、今現在では brew コマンドでインストールした5.6を使っているのですが、5.7の対応は若干遅れるだろうと思い、予め、失敗したとしても今なら大した問題にならない内に、試してみようと思った訳です。
 まずは、brew でインストールしたMySQLをアンインストールし server stop させました。が、ブラウザは、phpMyAdmin とか表示していますので、サーバーは生きているという事か?ってこの辺から不自然なのですが、無視してMySQLのパッケージをインストール。bash にパスを通して、bin ディレクトリにサポートファイルの中にある mysql.server, scripts の中の mysql_install_db をオプションキーを押しながらコピー。ターミナルから $ sudo mysql_install_db —basedir=/usr/local/mysql を実行。
今までのデータは /usr/local/var/mysql にあるわけですが、pid ファイルうんぬんのエラーが出るので、過去のデータ保存ができないのかなと思い、一旦, var/mysql の中身をゴミ箱に退避。
するも、次もダメ。?この間違いのパターンは何通りか有るのですが、面倒なので試しに先に、$ sudo mysqld_safe を実行。サーバを起動してパスワードをセットしてルートでログインできるので、mysql.sock は存在しています。しかし、この方法は良くない例だと思い、何度か試すも、5.6 の時のように、pid ファイルはできません。強行思考として、サーバーが動くのであれば、pid が無くても良いじゃないか、ということで諦め、再起動でテスト。
普通であれば $ mysql.server start で良いのですが、所詮ダメです。何度か試しているうち、sudo でやると成功するようなので、やってみると普通に使えます。データも保存しています。
ということは、my.cnf とかの設定をしなくても良いという事で、これだと、次のバージョンアップもデータをなくす事はなさそうです。もっとも、この方法はローカルのテストケースであり、実際サーバー管理をやっている場合(人)には、通用しないのか知れません。また、これは MySQL 自体のバグなのかも知れません。ちなみに、これは phpMyAdmin のバージョン情報からの一部です。
MySQL5.7.3.png

NetBeansでPostgreSQLを使ってみた [NetBeans]

 NetBeans で MySQLデータベースを使ったWebアプリケーションの作り方は、大体分かったので、今度は、RESTful Webサービスアプリケーションのひな形で、postgresql でやった時の記録です。
localhost で色々試して今のサーバーの使用可能状態を確認しているのですが、mysql を使ったwordpress の3.8.1バージョンで、何故か日本語変換した時にログイン画面に戻ってしまうという不具合が発生して、なんか変なことをやったんだろうかと考えてみても思い当たる節が無いので、まあそんなものか?と諦め、postgres に挑戦することにしました。
元々PostgreSQLはネットビーンズでサポートしているし、postgresql-9.3-1100.jdbc4.jar はインストールの時点で、入っていました。日本語翻訳の解説を見ながら先にデータベースを作っておけばよいらしいので、ターミナルからpostgresでログインして、drupal の例を参考に、作りました。
:bin postgres$ ./createuser --pwprompt --encrypted --no-createrole --no-createdb nbuser
:bin postgres$ ./createdb --encoding=UTF8 --owner=nbuser NBDB
Password:
1056:bin postgres$ exit
logout
$
これだけです。このプロジェクトのサンプルがあるのですが、起動してデプロイの最中なんだか、データベースが無いというようなエラーメッセージが出ますが、無視。それで、データベースをMySQLの時と同様登録しようとしても、ないので新規でpostgresqlを選択。ウイザード画面で下の図のように入力して接続をテストで成功のメッセージが出れば、後は指示通り。パスワードはpostgresのパスワードでした。
netbeans_postgresDB.png
そこで、ちょっと迷ったのがひな形のテーブルをダウンロードするのかもしれませんが、pg は無いだろうし一つだけでもいいということで、ブラウザからphpPgAdminを使って適当に作りました。最初プライマーキーがないというメッセージが出ましたが、ならば、dropしてプライマリとなる id を追加して、後は何も触れずデプロイ。一応データベースには繋がっているみたいです。出てきた画面がこれ。
nb_postgres_wsa.png
その時の、サービスタブのデータベースの階層はこうなっています。
nb_pg状況.png
今のところ顧客管理まで行っていませんが、後はケースバイケースでしょうから、参考まで。
 後 wordpress なのですが、前にやった時は慣れないせいだったのか、一度は諦めましたが、データベースを予め postdb 名で作っておいて、今度は普通にダウンロードしたplugin の pg4wp を指示通り配置したら、接続できました。同じバージョンのはずですが、何とか書き込みも普通に保存できました。
何と言っても、phpMyAdmin に出てくる警告と、mcrypt がありません、のメッセージが Pg の場合出てきませんので、どうなっているのか知れませんが、鬱陶しさがないだけいいかなと思います。この mcrypt.so なんですが、ダウロードしてmake してもエラーになってインストールできない状況なので、brew でもだめ?(これは、依存関係が分からないという自分の問題もある。)なので、MacPorts でwordpress をインストールすると一緒に mysql.so とかインストールしてくれるのを知っていましたので、同様に mcrypt もインストール。php.ini の中に書き込むところがあるので、オブジェクトとパスを書き込む。ただ、この時作られるんでしょうか、/extensions というディレクトリがありますから、そこにドロップしてもいいのか知れません。
それと、glassfish サーバはローカルの場合パスワードはセットするとLinux のように一々ログインしなければならなくなるので、セキュリティーに問題ないのであれば、しない方が健全だと思いましす。
以上でした。

netbeansでmysql接続に挑戦? [NetBeans]

 Mac10.9.1で NetBeans7.4 + GlassFish4.0 を使って、Webアプリケーションを試そうと思ってやってみた時の苦労話になるのでしょうか、ブログにアップしました。
これには、ネットビーンズで日本語の翻訳があるサンプル通り取り敢えずやってみるだけでしたので、あまり気にせずやれました。
今の使っている環境は、OS は10.6.0をインストールして10.6.8まで一気にアップグレードして、そのまま10.9にアップグレードしたもので、netbeans への環境はまだ余整っていません。localhost:8080 には PostgreSQL サーバーが起動してはいますが、気にせずにやるとそれが原因なのかマルっきりエラーです。グラスフィッシュサーバーは起動しているのですが、起動できないとのメッセージです。それで、まずは JDK1.6から1.8にバージョンアップしようとインストール。
netbeans は自動で1.8を認識するらしく1.8で実行(run)、やっぱりダメ。グラフィッシュサーバーは、何も無ければ:4848と:8080両方を表示するはずですが、postgres の方が表示されるところを見ると、コンフリクトで8080の方はダウンするようです。だとすると、迷ったあげくpostgres の方をアンイストールする事にしました。drupal が動いていましたが、mysql sqlite3 も同じく有りますから、しょうがありません。後でポート番号を変えてまたインストールし直すれば復活できますが、GlassFish の場合は変える方法が分かりませんから。
それで、今度こそと思いきや、まだダメです?何か他に設定項目があったかなと思いながら、8080はglassfish の画面が出てきます。つまりサーバーは起動しています。では試しに tomcat8 をダウンロードして、パスを bash にセットして起動、停止をやってみるとちゃんと表示して操作できます。なので、一旦このプロジェクトを捨てて、同じものを作り直し。やっぱりだめです。javaDB が壊れている?そんなバカな、何もいじってなんかまだいません。サーブレットの場合、3っつパスをまわして、アプリを作るのかなと思い、システムに JDK1.8 をまたコピーしようとしましたが、よく見るとシステムにはバーチャルマシーンが入っていませんでした。え〜?そうだっけ。
取り敢えずライブラリの方のバーチャルマシーンをそのままコピー。そのパッケージの中身の Home を逆にライブラリに方にシンボリックリンク。それで、glssfish サーバーを立ち上げて、実行するとやっと自動でこの画面が出てきました。
NetBeansでサーブレットを試す.png
説明では掛かっても10分位の行程ですが、3時間ぐらい悩みました。これから得られる経験則は、データーベースはシステム同様そう容易く動かせないので、特に8080ポートを使う場合は、あらかじめ、計画を練らないと後で苦労するという事でした。このことは、tomcat でも試しているのですが、この場合は、Derbyデータベースでプライベートポリシー何とかかんとかのエラーでどうしても前に進めなかったのですが、netbeans では同じメッセージが出てくるもののエラーにはなりません。違いがはっきり分かりませんが、プロパティーの設定がこちらの方がしっかりしていて、その分時間がかかるようですが、起動できないのでは話になりません。
 
この後この解説では mysql に接続する方法が有るのですが、これもうっかりでした。解説にある通り、mysql パスワードセットに’nbuser’なんて入力してしまったもんですから、root のパスワードが変わってしまったことに、だいぶ経って気づきました。つまり、次のパソコンの起動でmysql にログインできない事に気づきました。最初何がおこったか分かりませんでしたが、試しにnbuser でログインするとできたので、あちゃ〜!です。そうなれば、このパスワードで動くアプリが動かなくなってしまいますので、netbeans の方をまたやり直す事にして、パスをセットし直しです。
私的には、mysql ではなく、postgresql データベースを使いたいのですが、これからの課題という事で。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。