2013年6月22日土曜日

C言語で入出力がとばされる


C言語で入出力がとばされる事態が起きたので対処方法を記す。

scanf(),getchar()を使わない。

入力したときの改行が残ってしまうことがある。
なので、fgets(char*,int,FILE*)を使うべきだ。

そして、入力バッファが残る可能性があるので、のちのちに気づきにくいバグを産むかもしれない。
よって、fgets()のあとにはfflush(FILE*)を入れてやればよい。

2013年6月13日木曜日

HTC Jで開発するさいに起きたエラー

なぜだか、デバックができないので、HTC SyncMangerのプロセスを止めたらうまくいった

2013年6月1日土曜日

Scalaをeclipseでやる上で

Scala IDEをEclipse 4.2 Junoに導入しようと思ったが相性が悪そうだったので3.7 Indigoにした。
相性の問題とか、ほかのプラグインと干渉するみたいなことがどこかに書いてあったので別々に分けるのもいい手なのかもしれない。
まあ、ソースがないので信頼性皆無の手である。

以下から日本語のEclipseを前提で説明する。
ヘルプ->新規ソフトウェアをインストールを選ぶ
作業対象に以下のURLを入力
http://download.scala-ide.org/nightly-scala-ide-3.0.x-210x/site.xml

そしたら、Scala IDEの選択肢が出てくるのでインストール。
ガンガンすすめる。
たぶん悩むことはないと思う。
再起動してから、エラーっぽいのがでるからScalaの設定をいじる。
適当にチェックを入れておけばいいと思う。
わからなければエラーよめ。

アンインストールの方法は、
ヘルプ->Eclipseについてを選ぶ。インストール詳細をクリック。
インストールした一覧がでてくるので、Eclipse for Scala IDEだったかをアンインストール。
以上








2013年5月28日火曜日

Scala

面白い
関数をオブジェクトとして扱えるのがよかった

2013年5月3日金曜日

ServletでBase64を扱う際に

BASIC認証がやりたくて調べていたのですが、サンプルコードにBase64をデコードするメソッドが大抵書いてあるのですが、そのメソッドがGAEではつかえない。。。

それ以外の部分は動きそうだったのでその部分だけ自分で書くかネットのを流用しよう。
と思った。

maru sourceさまの
http://blog.h13i32maru.jp/entry/20110116/1295187291
を使わせてもらった

ただ、デコードの部分にバグがありbyte配列に後ろに0が入っているのでnew String(byte[]);としたときに変な文字列が後ろにつくことになる。

方法としては、後ろの0がある配列を取り除く繰り返し文を書くか、0 byteの文字列を取り除くコードを書くか(幸いJAVAのStringとても便利だ!)
あとは、新しく自分で作るだがめんだくさい

今回はファイル操作などせずに単純に文字列をデコードしたいだけなので0 byteの文字列を取り除くことにする
もし、仮にmp3などをデコード、エンコードしたい場合は一度バイナリファイルを見てみるといいだろう
自分でつくるか他に探し出すという結果しか出てこないだろう、

   String result = decodeToString("エンコードされた文字列");
   byte[] zerobyte={0};
   result = result.replace(new String(zerobyte),"");

もしくは一番後ろの文字列
   String str = encode("abcde".getBytes());
   byte[] result=decode(str);
   int length=result.length-1;
   while(true){
      if(result[length]!=0){
         break;
      }
      else{
        length--;
      }
   }
   str=new String(result).substring(0,length+1);

あとは有効そうなのはもともとの文字列の長さを他に持たせておきそのサイズだけ取り出すとかかなあ

2013年4月27日土曜日

Androidでネットワークアプリケーションを作るさいに

まず、ネットワークの通信を行う際には別のスレッドで通信しないといけない。
Exceptionがでる。。。

つぎにAndroiManifestにインターネットのパーミッションを許可しないといけない