Translate

2015年11月21日土曜日

javaでコンパイル した際の.classファイルの数

めもめも。

public class Outer {
}

コンパイル:
Outer.class
---------------------------------------------------
public class Outer {
  private class Inner{}
}

コンパイル:
Outer.class
Outer$Inner.class
---------------------------------------------------
public class Outer {
  private class Inner{} //privateなコンストラクタができている

  private void hoge(){
    new Inner(); //privateなコンストラクタ持ちの内部クラスをコンパイルすると・・・
  }
}

コンパイル:
Outer.class
Outer$Inner.class
Outer$1.class
---------------------------------------------------
public class Outer {
  public class Inner{} //publicにすれば Outer$1.classはできない

  private void hoge(){
    new Inner();
  }
}

コンパイル:
Outer.class
Outer$Inner.class
---------------------------------------------------
public class Outer {
  public class Inner{
    private Inner(){} //クラスはpublicだけどコンストラクタはprivate
  }

  private void hoge(){
    new Inner();
  }
}

コンパイル:
Outer.class
Outer$Inner.class
Outer$1.class
---------------------------------------------------

public class Outer {
  public class Inner{
    private Inner(){}
    private Inner(String arg){}
  }

  private void hoge(){
    new Inner();
    new Inner(""); //複数private コンストラクタを作っても変わらない
  }
}

コンパイル:
Outer.class
Outer$Inner.class
Outer$1.class

2015年11月19日木曜日

IO DataのUSB-RGB2 ドライバメモ

いままで、Mac Book Airを家で使う時はデュアル画面で作業していたのだけど、
つい、3画面にしたいなぁ・・・と思って調べてみると、

IO DataのUSB-RGB2を使えば解決しそうってことでさっそく買ってみたものの・・・
無反応(10.10 Yosemite)。

そこで、最新のドライバいれればなんとかなるだろ。
ってことで、
http://www.iodata.jp/lib/product/u/3361.htm

からダウンロードしてみたものの、これを入れても解決せず・・・


ネットを徘徊していたら、下記のドライバを入れたら解決!
って話があったので、
http://www.displaylink.com/support/mac_downloads.php



Version 2.4をダウンロードしていれてみる。

再起動を要求されるので、再起動。

そして、接続してみると無反応・・・
と、思ったところ、数秒したら表示してくれましたとさ。

2015年10月4日日曜日

nginxメモ

■インストール
Homebrewで入れました
$ brew install nginx

■コマンド
% nginx
% nginx -s stop
% nginx -s reload

■設定ファイル
max os x
/usr/local/etc/nginx/nginx.conf


読み解いてみる
--------------------------------------------------
#user nobody;
worker_processes 1;
--------------------------------------------------
・user
Nginxワーカプロセス実行時のユーザーアカウントとユーザーグループを指定可能
第一引数:ユーザーアカウント
第二引数:ユーザーグループ

・worker_processes
ワーカー数を複数指定することで、処理を分散させることができる。
CPUのコア数に応じて増やすとよいらしい



--------------------------------------------------
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
--------------------------------------------------
・error_log
エラーログの出力。エラーレベルを分けて出力できる
第一引数:パス
第二引数:levelを指定。levelに応じてファイルを分けることが可能
debug, info, notice, warn, error, crit



--------------------------------------------------
#pid logs/nginx.pid;
--------------------------------------------------
・pid
pidファイルパス



--------------------------------------------------
events {
worker_connections 1024;
}
--------------------------------------------------
Eventsモジュール
・worker_connections
ワーカプロセスの同時接続数を指定



--------------------------------------------------
http {
include mime.types;
default_type application/octet-stream;
--------------------------------------------------
httpモジュール内
incledeでmimeタイプを読み込み
何が書かれているかは、下記を開いてみれば良いと思います
/usr/local/etc/nginx/mime.types
80行ほどいろいろ設定してありました

default_typeは、mime.typesの設定で解決できなかったとき何で解決するかという話ですね
application/octet-streamとなっていますね。



--------------------------------------------------
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;
--------------------------------------------------
httpモジュール内
・log_format
ログの出力形式を指定 第一引数は、書式の名前

・access_log
アクセスログの出力設定
第一引数でファイルパス
第二引数で書式の名前


--------------------------------------------------
sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;
--------------------------------------------------
httpモジュール内
・sendfile
カーネルのsendfileを使うかどうか。使えないとnginx自身がファイル転送をする
第一引数 on/off

・tcp_nopush
ソケットオプションを有効/無効にする
sendfileが有効な時だけ適用される
第一引数 on/off

・keepalive_timeout
キープアライブを切るための待ち時間
第一引数 秒数

・gzip
コンテンツを圧縮するかどうかの設定
第一引数 on/off



--------------------------------------------------
server {
listen 8080;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;
--------------------------------------------------
httpモジュール内 > serverモジュール内
サーバーの設定を行うモジュール

・listen
リクエストを受け付ける設定

listen [address] [:port] [additional options];
addressを省略すると全てのアドレス
portは省略すると80番

・server_name
ホスト名の設定
server_name host1 [host2…]

server_name www.example.com;
server_name www.example.com example.com;
server_name *.example.com;
などなど



--------------------------------------------------
location / {
root html;
index index.html index.htm;
}
--------------------------------------------------
httpモジュール > serverモジュール > locationモジュール
・root
ドキュメントのルートを指定する

・index
指定されなかったときのデフォルトのページを指定
ここでは、省略されているときは、index.html, index.htmを探す


--------------------------------------------------
#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
--------------------------------------------------
httpモジュール > serverモジュール
・error_page
エラーページの設定
error_page code1 [code2…] [=replacement code] [=@block | URI]

例)
error_page 404 /not_found.html
error_page 500 501 502 503 504 /server_error.html
error_page 403 http://www.example.com/;
error_page 404 =200 /index.html; #404エラーは200を返しindex.htmlを開く 存在しないパスに飛んだら特定のページに返すみたいなことね


ひとまずここまで、また何かあれば追加する

2015年7月12日日曜日

Android Studio インストールメモ

OS X(10.9.5)に入れようとして例の場所で苦労したのでメモ。
結局なぜ入ったのか不明ですが・・・

まずはダウンロード
https://developer.android.com/sdk/index.html

DOWNLOAD ANDROID STUDIO FOR MACをクリック
ダウンロード完了するの待ちます。


ダウンロード完了したら、ファイル(android-studio-ide-141.1980579-mac.dmg)をクリック
ドラッグ&ドロップでApplicationフォルダにコピーします。


ApplicationにあるAndroid Studio.appを実行します。
開くを選択


以前の設定をimportするか聞かれるのですが、初めてなので I do not have a~を選択


Nextを選択


インストールタイプはStandardでNext


ライセンス同意のページですね。
android-sdk-licenseとintel-android-extra-licenseのそれぞれをクリックして
Acceptを選択します。するとFinishが選択できるようになるので選択

さて、ここからが戦いの始まりです。
Cancel/Retryの画面が出て先に進めなく成ります

The following SDK components were not installed: sys-img-x86-addon-google_apis-google-22 and addon-google_apis-google-22

ネットで調べてみるとGoogle APIs, Android 22が鬼門となっている話をちらほら見かけます。
解決方法として見かけたのは
・Android Studioの環境設定で Appearance & Behavior→System Settings→HTTP ProxyでAuto-detect proxy setttings
を選択するというもの。これはプロキシ設定のある環境にてインストール使用としている場合これが有効という話が・・・
→該当しないものの、念のためためすだけためしてみたものの自分には関係ないっすね。

・コンソール画面で、cd /Applications/Android\ Studio.app/Contents/MacOS
sudo studio で起動するというもの。これは最初っから権限のある状態でインストールすればいけたという話。
→やってみたものの何も影響無し

・Instrall TypeをStandardではなくCustomでやるとインストールできる説
 
Android SDK Platform, API 22 を共にチェックしてさて 次の画面へ・・・
と思っても

An existing Android SDK was detected. と怒られるわけで・・・


あきらめてもう一回Standardを選択して実行したら普通にインストールできました。。。
というお話。

2014年11月16日日曜日

いろいろメモ

独自例外
class AppException:Exception {
        public AppException() { }
        public AppException(string message) : base(message) { }
        public AppException(string message, Exception inner) : base(message, inner) { }
    }



using System.Reflection;

// アセンブリファイル名 の 取得
string fileName = Path.GetFileName(this.GetType().Assembly.Location);
 
// クラス名 の 取得
string className = this.GetType().FullName;
 
// メソッド名 の 取得
string methodName = MethodBase.GetCurrentMethod().Name;


SQLiteのSelectについて
//indexでアクセス
 while (reader.Read()){
  for(int i=0; i< reader.FieldCount; i++){
    Console.WriteLen(reader[i].ToString());
  }
}

//Colum名でアクセス
while(reader.Read()){
  Console.WriteLen(reader["Col1"]).ToString();
  Console.WriteLen(reader["Col2"]).ToString();
  Console.WriteLen(reader["Col3"]).ToString();
}

//GetStringでアクセス
 while (reader.Read()){
  for(int i=0; i< reader.FieldCount; i++){
    Console.WriteLen(reader.GetString(i));
  }
}