2011年1月15日土曜日

android(ドコモ:lynx 3d sh-03c)メモ

3G回線使わないようにしてたのに3日でパケット量が60000(7.7MB)ぐらい使ってた。
スマートフォンおそろしい子
どこでそんなにつかったのやら


なんか裏でいろいろ通信するみたいですね。スリープ状態でも…
アプリを停止させても、たいてい裏で動いている、またメモリ上に残っている。
そして、アプリを完全に停止させるにはタスクマネージャで消す必要がある。
しかしながら、アプリをタスクマネージャで停止させても、いつのまにか復活していたりする。


3G Watchdog使って1日の通信量しらべてみた。
丸一日3G回線使うと、メール待ち受けだけでも100,000バイトぐらいつかうみたい。
つまり、1ヶ月で3000,000バイトは使うことになる。
パケホーダイでは、1パケットが0.084円、1パケットが128バイトなので、
1日あたり65.625円、1ヶ月で1968.75円分のパケット代を使うことになる。
ちなみに、パケホーダイの上限は5985円=71250パケット=9,120,000バイト


次に、OSMoniterというアプリでなにが通信してるのか見てみた。
EffectService、com.google.android.syncadapters.contacts、Googleトークストレージ、System、カレンダー、アカウントと同期の設定、というのが勝手に通信してたみたいです。(確認できたものだけ)
そこで、アカウントの同期の設定で、バックグラウンドデータの通信をできないようにすると、これらの通信が一部なくなる。(EffectService、com.google.android.syncadapters.contactsは残る)
しかしこれをすると、スリープ状態でのSPモードメール受信ができなくなる。

スリープ状態でのSPモードのメール受信は、アカウント同期の設定のアカウントを管理で、Gmailの同期を許可する必要があるみたいで、これをするとGmailも自動的に受信することになる。


また、これらとは別に3G接続時に約1500バイトの通信量が発生してたりする。


パケット使いたくない人はスマートフォンはやめた方がいいですねー。マジで、、
私の場合、パケットは極力使いたくないので今はガラケー使ってます(笑)
wifiでメール受信できるようになったらスマートフォン使うかもねww


spモードメールについて
1/15日現在、3G回線のみでの通信なので回線切ったり、wifiにつなぐと受信できなくなる。(そのうち対応するみたいです…)
スリープ状態における受信は可能。(wifi時は無理)
なので、現段階ではwifi切り替えアプリが必須かも
もしくは、「メール通知」というアプリを使えばwifi状態でも通知だけは確認することはできる。

wifi状態で、スリープ状態にすると無線が切れて3G回線を使ってる?
でもメールは受信できない?
よくわからん


ファイアウォールアプリ
これがあれば、アプリごとに通信の許可、不許可を設定できる。でもrootものは自己責任。
DroidWall(AndroidのFireWall、root(su)必須なのがちょっと…)
andfire(AndroidのFireWall、root(su)権限に設定してくれる?…)



裸眼3D機能について
3Dコンテンツはあまり期待しないほうがいいかと。
地球防衛軍3D(目がつかれて長時間は遊べないけど、まあ面白いと思います)
jetVD(youtubeの動画視聴ソフト、外部プレイヤーが使えるので3D再生できる、3D検索ワードは「yt3d」)


メモリについて
内部メモリが290MBしかないので、本体にアプリをあんまりインストールできない。
システムメモリは596MBあるので、アプリをたくさん起動しなければ十分快適です。


PromiceMailのバグについて
なぜか「PromiceMailが強制終了しました」と、ポップアップがたびたび出てきてイラッとします。
削除したくてもプリインストールアプリだから削除できない。(rootを取れば削除できる)



プロバイダーについて
NTTドコモのISPは、「spモード」「iモード」「mopera U」「ブラックベリーインターネットサービス」の4つがある。
「spモード」:3G回線、スマートフォンで利用可能。spモードメールアドレス。
「iモード」:iモード回線、ガラケーで利用可能。iモードメールアドレス。
通常この2回線を契約することになり、メールアドレスを2つ所持することになる。メールアドレスは両回線で入れ替えることが可能、ただし入れ替え作業はスマートフォンからしか行えない。



2011年1月10日月曜日

ブログのアクセス解析してみた

以下、解析結果

全ページビュー:2,187
1位:overlayweaverの使い方(eclipse) - overlayweaver 2010/07/08:426 ページビュー
2位:Socketの勉強をしよう - Java 2010/07/11:154 ページビュー
3位:分散環境エミュレータを使ってみよう - overlayweaver 2010/07/10:123 ページビュー
4位:Linux on VMwarePlayer - 仮想OS、仮想LAN、OverlayWeaver 2010/09/01:108 ページビュー
5位:標準入出力コンポーネントを作ろう - Java - GUI 2010/07/27:104 ページビュー

記事は、OverlayWeaver、Javaネタがよく見られてるみたいですねー
参考になっていれば幸いですが、間違ったことを書いてる可能性もあるので、鵜呑みにはしないようお願いします。


ブラウザ別のページビュー
1位:Firefox:773 (35%)
2位:Internet Explorer:690 (31%)
3位:Chrome:336 (15%)
4位:Safari:89 (4%)
5位:FireTorrent:87 (3%)

Chromeが伸びてるみたいですねー。
あと、上位の4つはブラウザってわかるけど5位のFireTorrentってなんだよ。これってFirefoxのTorrentダウンロード用のアドオンだよなー(笑)


オペレーティング システム別のページビュー
1位:Windows:1,845 (86%)
2位:Macintosh:141 (6%)
3位:Other Unix:119 (5%)
4位:iPad:14 (<1%)
5位:iPhone:9 (<1%)

iPad、iPhoneからこのブログが見られてたのは正直驚きました。これからは、タブレットとかスマートフォンでのネットサーフィンが増えてくるのでしょうね。
しかし、Windowsがダントツ(笑)


国別のページビュー
1位:日本:1,936
2位:アメリカ合衆国:73
3位:オランダ:35
4位:カナダ:34
5位:マレーシア:26

意外と海外からのアクセスが多くてびっくりです。
国際化だね(笑)


はじめてアクセス解析してみましたが結構面白かったです。
また気が向いたらやろうかなー

ノシ

2011年1月2日日曜日

JavaScript勉強中

あけましておめでとうございます。


年末は、友達とボーリングをやって、そっから徹夜でモンハン。
正月は、初詣に行き昼飯食って、解散という流れでした。

モンハンは全クエストをクリアしてしまい、あとは新たな配信クエストをこなすだけとなってしまいました。ちなみに、プレイ時間は200時間越えた(笑)


卒論の方は、とりあえず30ページ書けました。ただ飛ばし飛ばしなので、これから埋めていくかんじです。あとは、付録のプログラムの最終調整です。
とりあえず終わりそうだけど、問題は教授に見せてからどれだけ直されるかなんですけどねー… (; ̄ー ̄川


………


さてさて

私の2011年の目標は、

「新しいプログラミング言語を習得する!!」


ということで、JavaScriptを勉強しようと思います。
なぜかというと、流行ってそうだから…


やったこと

1. マンガで分かるJavaScriptプログラミング講座を読んだ。
初心者向け。絵はともかくとして、すらすら読めて内容もよかったです。
そして、マンガだけでなく補足説明もちゃんと書いてあるのがいいですねー。

2. イヌでもわかるJavaScript講座を読んだ。
復習+ちょい実践向け?いきなり実行例、ソースから入るのがいいです。そっからその解説。
いろんなソース乗ってるのでいいかも
しかし、まだ読み途中です。

3. 開発環境の整備
EclipseにAptanaのプラグインを入れた。
FireFoxにFireBugのプラグインを入れた。
正直使いこなせてないです。初心者にはメモ帳で十分かもね…


今日は、勉強ばっかでしたけど
明日はなにかしら作ってみたいと思います。

以上。


参考資料
1.マンガで分かるJavaScriptプログラミング講座
2.イヌでもわかるJavaScript講座

2010年12月15日水曜日

Javaでグラフを作る方法 - Java

あるデータをプログラムで解析するときにグラフで表示できたらいいよなー

というわけでJavaでグラフを作る方法です。


eclipseとJFreeChartを使います。

JFreeChartのプロジェクトページ(http://www.jfree.org/jfreechart/)から最新版のものをダウンロードして解凍します。(今回はjfreechart-1.0.13で説明します)

解凍したら、jfreechart-X.X.X\lib の中にあるjfreechart-X.X.X.jarとjcommon-X.X.X.jarをeclipseのJavaプロジェクトのフォルダ直下に入れておきます。
プロジェクトを右クリックし、Properties → JavaBuildPath → Libraries → AddJARs をクリックし、jfreechart-X.X.X.jarとjcommon-X.X.X.jarを選択し、OKをクリックします。

これで、JFreeChartを使ってグラフが書けるようになります。


さてどう使うかというと、プログラムを見たほうが早いと思います。

参考資料に簡単なのが乗っててわかりやすかったです。


参考資料
1.ThinkIT「JFreeChartでグラフ作成(前編)様々なグラフ 」

2010年12月1日水曜日

近況

ついに、12月1日になりました。

ついに、待ちに待ったモンハンPSP3rdが発売しました。まだ買ってないけどーORZ

龍馬伝が終わりました。


そして、卒論の期限があと2ヶ月くらい…
そろそろ本腰入れていかないとまずい時期ですね。
とりあえず、タイトル、目次(暫定)が完成し、これから中身を埋めていこうというところです。
うちは卒論の総ページ数が30ページですので15分の1ができたとこ…ORZ

付録のプログラムは、7割がたできてるのでなんとかなりそうかな?
しかし、プログラムの評価とかも考えていかなければならないの大変です。

2010年11月21日日曜日

Concurrency Utilities - Java

OverlayWeaverのIterativeRoutingDriverクラスのrouteメソッドを読んでいて思ったこと。
java.util.concurrent.ExecutorServiceってなんだ?

ってことで調べてみました。


まず、並行プログラミングをするとき、よくThreadクラスを使って行いますね。しかし、これを使いこなすのはちょっと難しい。ってことで、J2SE 5.0からは並行プログラミングを容易にするのためのライブラリConcurrency Utilitiesが導入されました。これで、スレッドを簡単に?操れるみたい。
(ライブラリは、java.util.concurrentに含まれています。)


そんでExecutorServiceというのは、そのライブラリの中に含まれているタスクの非同期実行を担当するExectuorインターフェイスの派生インタフェースです。
そして、実際に使用するのはその実装クラスであるThreadPoolExecutorクラスで、これを利用するとスレッド・プール方式での処理が実行可能となる。(参考資料2のイグゼキュタの仕組みの項目を見るとわかりやすいです。)

詳しい説明は、参考資料を見てください。

いや、別に説明するのがめんどくさいわけではないんだからね。ξ゚⊿゚)ξ


とりあえず、勉強がてら作ってみたプログラムを載せときます。

import static java.util.concurrent.TimeUnit.MILLISECONDS;

import java.util.Date;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class ThreadPoolExecutorTest {

 public static void main(final String[] args) {
  new ThreadPoolExecutorTest().start();
 }

 public void start() {
  System.out.println("開始");

  // Runnableを使う場合
  final BlockingQueue queue = new LinkedBlockingQueue();
  for (int i = 0; i < 10; i++) {// タスクをqueueに事前に積んでおき実行することができる
   queue.add(new Task(1));
  }

  System.out.println("タスク実行その1");
  final ExecutorService executerService = new ThreadPoolExecutor(3, 3,
    500, TimeUnit.MILLISECONDS, queue,
    new ThreadPoolExecutor.CallerRunsPolicy());
  
  System.out.println("タスク実行その2");
  for (int i = 0; i < 10; i++) {
   executerService.execute(new Task(2));// タスクの実行
  }
  
  // Callableを使う場合
  System.out.println("タスク実行その3");
  int timeout = 1000;
  for (int i = 0; i < 10; i++) {
   if (i == 5) {
    timeout = 50;
   }
   Future future = executerService.submit((Callable) new Task(3));// タスクの実行
   try {
    // タスクの結果を取得する。ただし、設定した時間までに処理が終わらなかったらタイムアウトする。
    Date time = (Date) future.get(timeout, TimeUnit.MILLISECONDS);
    System.out.println("タスク終了時間: " + time);
   } catch (InterruptedException e) {
    e.printStackTrace();
   } catch (ExecutionException e) {
    e.printStackTrace();
   } catch (TimeoutException e) {
    System.err.println("タスクがタイムアウトしました");
    e.printStackTrace();
   }
  }

  // 必ずshutdownを実行する。実行しないとスレッドが開放されない。
  System.out.println("ShutDown実行。");
  executerService.shutdown();
  System.out.println("終了");
 }

 private static class Task implements Runnable, Callable {
  int taskNumber = 0;

  Task(int taskNumber) {
   this.taskNumber = taskNumber;
  }

  @Override
  public Date call() {
   try {
    System.out.println(taskNumber + "タスク開始");
    MILLISECONDS.sleep(100L);// 100 ミリ秒のスリープ
    System.out.println(taskNumber + "タスク終了");
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
   return new Date();
  }

  @Override
  public void run() {
   try {
    Date time = this.call();
    System.out.println(taskNumber + "タスク終了時間:" + time);
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 }
}

参考資料
1. 「Java SE 6完全攻略」第49回 Concurrency Utilitiesの変更点 その1 
2. 第6回 並行プログラミング用ライブラリ(1)――Excecutorの仕組み

2010年11月20日土曜日

プロセス、スレッド、タスクの違い - Java

ちょっと気になったので、メモっときます。

プロセス(Process:手順、処置)
 プログラムの実行単位です。プロセスは1つ以上のスレッドと、ファイル、ヒープメモリなどのリソースで構成される。マルチプロセスと言うと、1つのOS上で同時に複数のプログラムを並行して動かせる機能。

スレッド(Thread:糸)
 プロセス(プログラム)内の処理単位です。マルチスレッドと言うと、1つのプロセス内で同時に複数の処理を行える機能。

タスク(Task:仕事の単位)
 プロセス内の実行単位です。(←推測です。Timerクラスのドキュメントを見ると、「タスク実行スレッド」という言葉が使われているからという理由、(゚_゚i))
 ちなみに、Timerクラスでは、TimerTask(implements Runnable)型のインスタンスをscheduleメソッドに入れて、何秒後に実行とか、何秒ごとに実行とかができるみたいですね。


参考資料
1.プロセス、スレッド、ファイバ、タスク、ジョブ、違いを整理してみようAdd Star