PR: 私たちの暮らしを守る 自衛隊の活動-政府ネットTV
wget,crul ~ コマンド
wgetとcurlについてのメモ。wgetはmacに入っていなかった。
■
・Macでwgetコマンドを使えるようにするの書
・Mac(Lion)に"wget"をインストールする
・macはwgetがないので、curlを使う。
新規ソフトウェアのインストールのリポジトリを削除
で、キーワードのURLでgrepをかけたら、下の二つのファイルがヒットして、直接削除したらうまくいった・・・
C:\pleiades\eclipse\p2\org.eclipse.equinox.p2.engine\profileRegistry\epp.package.jee.profile\.data\.settings\org.eclipse.equinox.p2.artifact.repository.prefs(663,61) [SJIS]: repositories/http\:__eclipse.seasar.org_update_3.2/nickname=seasar_org_3_2
C:\pleiades\eclipse\p2\org.eclipse.equinox.p2.engine\profileRegistry\epp.package.jee.profile\.data\.settings\org.eclipse.equinox.p2.metadata.repository.prefs(579,61) [SJIS]: repositories/http\:__eclipse.seasar.org_update_3.2/nickname=seasar_org_3_2
VirutualBox
virtualBoxについてのメモ。インストールは省き。
■macにubunutu64bitをインストール
refs:MacでLinuxを動かす!VirtualBox及びubuntuのインストール方法
ubuntuのisoイメージファイルはUbuntu Desktop 日本語 Remixのダウンロードから、64bit盤のubuntu-ja-13.10-desktop-amd64.isoをおとして、それを使った。
PR: 9の日はQUICPayの日!キャンペーン実施中!
shell script(シェルスクリプト)メモ
shellスクリプトメモ
■コマンド名だけで実行できるようにする
例えば、hogeというスクリプトを作って実行権限を付与する。この状態だとカレントディレクトリで./hogeで実行できる。すべてのディレクトリにおいて、hogeで実行できるようにしたい。
とりあえずの方針としては、環境変数のPATHに/bin/myshディレクトリを追加してそこの自作してシェルをおくようにする。
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ export PATH="${PATH}:/usr/mysh"
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/mysh
$mv hoge /usr/mysh/
$hoge
実行できた。ただ、これだとターミナルをログアウトして再ログインしたときに実行できなくなってしまうので、~/.bash_profileあたりのファイルに「export PATH="${PATH}:/usr/mysh"」の一行を書く。
refs
・bashシェルスクリプト入門~シェルスクリプトのいろは
・環境変数を書き込むの
に.bash_profileとかなにを使えばいいか迷う
ERROR: JDWP Transport ~ mac,eclipseでデバッグ実行
macのeclipseで通常の実行は出来るけど、デバッグ実行しようとすると下のエラーが発生した。
ERROR: transport error 202: recv failed during handshake: Connection reset by peer
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:750]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
関係ないと思いつつ、環境変数のJAVA_HOMEを設定し、PATHに$JAVA_HOME/binを追加してみたけど、やっぱり解決しない。
refs
・eclipse debug/faq i can run a program but not debug it???
[2013/11/26 add]
ネットで色々調べてみたけどやっぱり解決できない。ただ、macにeclipseをインストールするときに最初にkepler単体を入れて、その後にpleiadesを入れた訳だけと、kepler単体のeclipseを起動してみたら、デバッグモードでも実行できた…
refs
・mac memo eclipse
[2013/11/26 add 2]
再度、pleiadesのplugins,dropins,featuresディレクトリをkeplarのeclipseにコピーしたらデバッグもできた。ただ、英語のまま
本「hadoop徹底入門」キーワード
- Hadoop徹底入門 第2版 オープンソース分散処理環境の構築/翔泳社
- ¥3,990
- Amazon.co.jp
レスポンスタイム(レイテンシ,latency)
スケーラビリティ(拡張性)、スケールアップ、スケールアウト、スループット
Hadoopマスタサーバ(JobTracker,NameNode)、Hadoopスレーブサーバ(TaskTracker,DateNode)
HDFS:分散ファイルシステム、MapReduce:クラスタ環境で並列分散処理、Hive、Pig、Sqoop,HBase,ZooKeeper
IAサーバ、1U、2U、ラック
透過性、拡張性、HA構成(冗長化)、多重度、メタ管理、インデックス
シーケンシャル(連続的)、Map,Shuffle,Reduce
運用事例、Posデータ解析によるフィードバック、webアクセスログ解析、全文検索転置インデックス、統計的機械翻訳、フォーマット・画像変換、機械学習:金融市場の同席分析、遺伝子解析、気象予測、渋滞予想、音声認識、文字認識のパターン認識
不正要求のフィルタリング()、重複除去
形態素解析、CDH(Clouderas distribution in cluding Apache Hadoop)
ローカルモード、疑似分散モード、完全分散モード
javaチューニング、gcのメモ(Xms,Xmx)
javaチューニング、gc、fullGCについてのメモです。
起動オプション
_JAVA_OPTIONS, JAVA_OPTIONS,xms, xmx
refs
・JVMのちゅーにんぐ
・ガベージコレクタの仕組みを理解する。
・JAVAパフォーマンス改善。Full Ccの原因とその解決法王について。
awkこまんど、
行思考プログラミング
PR: スマホ・タブレットが何倍も楽しくなる「ポケドラ」
大容量hiberfil.sysとpagefile.sysファイル~windows7
使っているノートPCの容量が残り10Gを切った。du -hs *でディレクトリ毎の容量を調べたところ、cドライブ直下にhiberfil.sysが6G、pagefile.sysが8G・・・なんだこのファイルは。ちなみにexplorerでは標示されてない。隠しファイル、ディレクトリを表示に設定したのに。で、調べた見たら、コンパネ⇒フォルダオプション⇒表示タブ⇒保護されたオペレーティングシステムファイルを表示しない(推奨)のチェックも外さなければ見れないことを初めて知った・・・windows・・・
refs:windows7tips:hiberfil.sysとpagefile.sysを削除する
で、上の参考サイトを見て、hiberfil.sysだけ削除。
powercfg /hibernate off
ssl/tls
SSL(Secure Socket Layer)について。 ■CA認証のしくみ SSL対応のサイトにするときに証明書をCAに発行してもらう。利用者がサイトにアクセスしたら、サイトは証明書をブラウザに返す。ブラウザは自身が持っているCAの情報をもとに、送られた情報が正しいかどうかを確認する。初めてのリクエストでブラウザに登録されていないCAが発行した証明書の場合、ユーザにその証明書を信用するかどうかの確認ダイアログを出す。 このため、まずはCAに自分のサイトを登録し、本物のサイトである事を証明してもらう必要がある。 webサイトの鍵を自分で証明する自己署名という方法がある、自己署名でテスト用の小名称を作れば、CAへの登録をせずにSSL対応のサイトが作れる。が、自己署名ではサーバの認証ができないため、本格運用のときはCAへの登録が必要。 *ってことは、例えば社内で使うようなサイトで暗号化だけが目的なサイトなら自己署名のssl,httpsで十分? 信頼できるサイトにするためにCAに有料で証明書を発行してもらう。主なCAは、ベリサイン、グローバルサイン、サイバートラスト。他にも色々あるけど、違いはただ値段。あとは対応しているブラウザ。マイナーのブラウザには対応していないCaもある。 手順としては、CSR(certificate signing request)ファイルをcaに送る。webサイトの鍵は自己署名で使ったテスト用の鍵でもおっけ。証明書が送られてくる。apacheの場合、この証明書をcsrファイルと同じディレクトリにおき、ssl.confのSSLCertificateFileという項目に証明書のファイル名を設定する。 自己署名を自分のmacでやってみた。結論から言うと、試してみたけどできなかった・・・ apache2 $ pwd ・webサーバの鍵を作る server.keyファイルができた。 apache2 $ ls ・証明書をつくる。国、location、ホストとかは適当に入力。 apache2 $ sudo openssl req -new -days 3000 -key server.key -out server.csr ・server.csrができた。 apache2 $ ls ・テスト用に自己署名する apache2 $ sudo openssl x509 -req -signkey server.key -days 3000 -in server.csr -out server.crt ・このままだとapacheを起動するとパスフレーズを要求されるので、鍵のパスフレーズを解除する。 apache2 $ sudo openssl rsa -in server.key.bak -out server.key ■
refs book
sslの新しいバージョンはTLS(Transport layer security)という名前で標準化されたため、SSL/TLSといわれる事もある。単にSSLといえば、SSL/TLSの事を指す。
■機能
相互認証。CA(Certificate Authoriy 認証局)を介す。相互認証だけど、サーバ側だけ証明する事が多い。
完全性。改ざんされていないか?電子署名。暗号化で盗聴防止。
■
OpenSSL。SSLを利用するための必要なソフトウェア。
mod_ssl。OpenSSLを使ってApacheをSSLに対応させるモジュール。
mod_sslは、OpenSSLによりApacheでhttpsを使えるようにするモジュール。mod_sslを使う事でOpenSSLとApacheを連携させることができる。
■本格運用
■自己署名
/etc/apache2
apache2 $ ls
extra magic original users
httpd.conf mime.types other
apache2 $ sudo openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
....++++++
..................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
apache2 $
extra magic original server.key
httpd.conf mime.types other users
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:tokyo-dayo
Locality Name (eg, city) []:shibuya-dayo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:hoge company
Organizational Unit Name (eg, section) []:hogehoge unit selection
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:hoge@hoge.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
extra magic original server.csr users
httpd.conf mime.types other server.key
apache2 $
Signature ok
subject=/C=JP/ST=tokyo-dayo/L=shibuya-dayo/O=hoge company/OU=hogehoge unit selection/CN=www.example.com/emailAddress=hoge@hoge.com
Getting Private key
Enter pass phrase for server.key:
Enter pass phrase for server.key.bak:
writing RSA key
apache2 $ ls
・これでapacheを再起動すれば、httpsでリクエストできるはずなのに、今まで通りhttpでしかアクセスできなかった。なぜだ・・・/etc/apache2/extra/httpd-ssl.conf ファイルの中身をみてもデフォルトのままでいけるはずなのに。ここでギブ
refs
・鍵交換方式によりssl接続
ps,killコマンド
psコマンドとkillコマンドについて
$ps aux
a:自分以外のユーザプロセスを表示する
u:ユーザ名などの詳細を表示する
x:デーモンなどのプロセスを表示する
work $ ps aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
hogeuser 1551 15.4 4.4 1607400 368596 ?? S 金03AM 68:38.48 /Applications/Google
_coreaudiod 284 3.1 0.1 2522888 9340 ?? Ss 木12AM 32:38.11 /usr/sbin/coreaudiod
hogeuser 538 1.9 1.3 3088532 105128 ?? S 木02AM 99:58.00 /Applications/Firefox
hogeuser 1537 1.5 2.5 1669584 208284 ?? S 金03AM 32:08.64 /Applications/Google
hogeuser 2766 1.1 2.6 1119788 220360 ?? S 2:22PM 2:42.90 /Applications/Google
hogeuser 1553 1.0 0.7 969092 62888 ?? S 金03AM 9:14.19 /Applications/Google
hogeuser 276 0.7 9.7 5241788 811384 ?? S 木12AM 77:13.25 /Applications/Firefox
hogeuser 275 0.2 1.0 2819844 85276 ?? R 木12AM 2:05.99 /Applications/Utiliti
hogeuser 1546 0.1 2.9 1247364 240532 ?? S 金03AM 11:10.63 /Applications/Google
hogeuser 320 0.1 0.8 3855552 69608 ?? S 木12AM 1:23.96 /System/Library/Input
hogeuser 2918 0.0 0.5 954624 44968 ?? S 3:23PM 0:01.39 /Applications/Google
_www 2917 0.0 0.0 2463684 740 ?? S 3:23PM 0:00.00 /usr/sbin/httpd -D FO
_www 2916 0.0 0.0 2473924 736 ?? S 3:23PM 0:00.00 /usr/sbin/httpd -D FO
_www 2915 0.0 0.0 2463684 924 ?? S 3:23PM 0:00.00 /usr/sbin/httpd -D FO
USER:実行しているユーザ名
PIDプロセス番号
STAT:プロセスの状態
COMMAND:コマンドの名前
・STATについて
S:スリープ
D:I/Oまち
R:CPUまち
T:停止中
Z:終了中
STATや%CPU,%MEMあたりを観察して、常にSTATがRの状態だったり、CPUの利用率が99%になっていた、メモリ使用率が増大している場合、プロセスが暴走している可能性がある。そんなプロセスを強制終了したい場合、PID欄にあるプロセス番号を指定して「kill プロセス番号」のようにkillコマンドを実行する。それで終了しない場合、「kill -KILL プロセス番号」で強制終了する。
rubyとjava
ruby,javaの言語間の違い、同機能の別名とか、混乱した事につて。
■破壊的メソッド、mutable,immutable
rubyには破壊的メソッドという者がある。例えばStringオブジェクトの場合、メソッド名に!をつけると破壊的メソッド。破壊的メソッドの場合、Stringオブジェクトの中身が変わる。mutableね。
ただ、Object#freezeを呼び出せば、破壊的メソッドを使用不可のfreeze状態にできる。freeze状態かどうかは#frozen?で確認できる。
■インスタンス変数、attr_accessor: hoge , setter,getter
rubyのインスタンス変数は、外から参照、更新する事はできない。必ずあくせさが必要。javaのpublicフィールドとは違う。
attr_accessorにインスタンス変数の値を渡せば、アクセサ(setter,getter)が自動的に定義される。hogeの場合、hoge=がセッタ、hogeがゲッタ。attr_reader,attr_writerで片方だけの定義もできる。attr_accessor:hoge1, hoge2のように複数インスタンス変数を指定できる。
■インスタンス変数、@、クラス変数、@@
rubyのインスタンス変数は@、暮らす変数は@@を前につける
■クラスメソッド、staticメソッド、self
rubyでクラスメソッドを定義する場合、メソッドの定義でメソッド名に前にself.をつける。また、クラスメソッドを複数定義したい場合、class << self ~ endの~にまとめてかける。
■メソッド呼び出し、変数、定数アクセス
rubyは.(ドット)だけじゃなく、::でもおっけ。
■コンストラクタ,initialize
■呼びだし制限、private,protected,public
rubyの呼び出し制限の書き方は、private :method_name public:method_name2
method_name,method_name2は省略してまとめてかく事もできる。
呼び出し制限を書かない場合、defで定義したメソッドはpublicになる。
javaと比べてprotectedだけ意味が異なる。rubyのprotectedは、そのメソッドが定義された同じ暮らす、またはそのサブクラスしかから呼び出せない。
initialize,トップレベルで定義したメソッドはprivate。
■特異メソッド
rubyにはクラスでメソッドを定義できるだけじゃなくて、特定のオブジェクトにメソッドが定義できる。これを特異メソッドという。特異メソッドは、クラスで定義したメソッドをオーバーライドできる。
■モジュール
javaは完全なオブジェクト指向言語だけど、rubyは違い。rubyにはクラスだけじゃなく、モジュールというものがある。モジュールはnewしてオブジェクトを作成できない。トップレベルやクラス内でモジュールをincludeし、オブジェクト名.メソッド名で呼び出す。cのライブラリみたいなもの。ちなみにクラスからincludeする事をmix-inと言うらしい。
あと継承はできない。名前空間を作れる。名前空間が作れるってことで、モジュール内でモジュールやクラスの定義はできる。
あとextendを使って、オブジェクトの特異メソッドに取り込む事も出来る。クラス内でincludeでmoduleをmix-inせず、moduleをextendsするとモジュールのメソッドをクラスメソッドとして取り込む事ができる。このあたりはjavaと比べて自由すね・・・
■import,require,autoload
javaのimportに対する物は、rubyのrequireやatuoload。
■継承ツリー,Object
irb(main):027:0* class MyClass
irb(main):028:1> end
irb(main):035:0> MyClass.ancestors
=> [MyClass, Object, Math, Kernel, BasicObject]
irb(main):036:0> MyClass.superclass
=> Object
irb(main):039:0* String.superclass
=> Object
irb(main):040:0> String.ancestors
=> [String, Comparable, Object, Math, Kernel, BasicObject]
■オブジェクトのコピー
Object#dup,Object#cloneは浅いコピー(shallow copy)
覚えられないよく使うlinuxコマンド
$ whatis ls
$ whereis ls
$ wc hoge.txt
$ sort
$ uniq
$ tee
$ type ls
ls is hashed (/bin/ls)
$ man -k hogeword
$ ls -F
置換
$ tr a-z A-Z
hoge
HOGE
$ dmesg
$ man bash
$ man csh
$ man zsh
これでシェルの説明を見れたり、それぞれのシェルのコマンド一覧を見れるのは目から鱗だった。
$ dig www.yahoo.co.jp
$ dirname
$ set , env, printenv
$ useradd, userdel, passwd,groupadd,usermod,groups,chgrp,chmod
$ . hoge.sh
hoge.shをカレントシェルで実行
$ :
ルコマンド。必ず実行終了ステータス0を返す。while分の条件文に使うと無限ループになる。または何かコマンドを書かなければいけないけど、何もしたくない場合とか。
$ eval
$ uptime $ w $ top
CPUの負荷を調べる
$ sudo du -xS / | sort -n開始ディレクトリ(/)以下のディレクトリをサイズの小さいディレクトリ順に表示
PR: 月々980円から始められるスマホのパケット代
linux,macのログ関連(/var/log/, logger)
linux,macのログ関連のメモ
/var/log/ディレクトリ以下にログファイルが出力される。
macの場合、loggerコマンドは/var/log/system.logに出力される。linuxの場合、/var/log/messages。
・Linuxのログ
/var/log/boot.log デーモンの起動や終了のログ
/var/log/cron cronのログ
/var/log/dmesg カーネルのメッセージ
/var/log/messages bind,カーネルなどのシステム一般のログ
/var/log/secure ログイン記録、TCP Wrapper、suのログ
/var/log/yum.log yumのインストールログ
syslogdを使っているなら、rsyslog.confに出力パスが設定されている。
・サーバログ
/var/log/maillog postfix,devecot
/var/log/samba/log. smb
/var/log/httpd/access_log apacheのアクセスログ
/var/log/httpd/error_log
/var/log/mysqld.log mysql
logrotate,logwatch
linuxのログはrsyslogdによって記録される。rsyslogdの設定ファイルは/etc/rsyslog.conf。サーバの種類やログの深刻度によって、ログの出力先を振り分けている。ただ、apache,sambaなどはアプリ独自にログ出力している。
yum、yumのリポジトリepel,remiの導入
yumコマンドについて
$ yum -y install httpd
パッケージをインストール。全てyes。
$ yum remove
パッケージをアンインストール。
$ yum update
$ yum list
インストール可能なパッケージリストを一覧表示。
$ yum list installed
インストール済みのパッケージリストを一覧表示。例えば、apache(httpd)がインストール済みかどうかを確認したい場合は、「yum list installed | grep http」
$ yum search http
指定したキーワードでパッケージを検索する。
$ yum info php
パッケージの詳細情報を表示する。バージョン情報なども解る。
$ yum --enablerepo=epel,remi,rpmforge info fio
リポジトリを指定してパッケージの情報を表示する。
$ sudo yum --enablerepo=epel,remi,rpmforge install fio
リポジトリを指定してパッケージをインストールする。
$ ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
■epel,remi
yum infoでみたパッケージが古い場合、yumのリポジトリを追加する。リポジトリで有名な物にはepel,remiがある。remiを使うためにはepelが必要
refs:
・epel,remiリポジトリを導入しよう
・cenosにyumのリポジトリを追加
centos
にepel,remiのリポジトリを追加。パッケージのバージョンが古いときなどの解決策になるかも。epel,remiをwgetで落としてきて、
/etc/yum.repos.d/epel.repo,/etc/yum.repos.d/remi.repoファイルを新規作成して編集。
$ ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel.repo remi.repo
リポジトリを指定して、fioパッケージの情報を確認。これであればおっけ。
$ yum --enablerepo=epel,remi,rpmforge info fio
ただし、インストールするときも--enablerepoが必要。設定かえれば必要なくなると思うけど・・
$ sudo yum --enablerepo=epel,remi,rpmforge install fio
インフラ関連めも
インフラ関連のメモ書き。
refs
・必要なストレージを見極めるには。
・wiki帯域幅
■帯域幅と通信速度の関係について
・・・
まぁ道路の幅が太ければ転送容量は増える事が感覚的にわかる。
refs:周波数帯域と伝送速度の関係性について
■用語
帯域幅(bandwidth):MB/sec。秒間の転送量。
IOPS:秒間のI/Oアクセス回数
bps(bit per second)
ベストエフォート
スケールアウト、スケールアップ
フェイルオーバー
RAIO
ストライピング
■コマンド
$free -m
メモリ
$df -h
ディスク容量
$ mount -v
$ fdisk -l
■ツール
fio
refs:fioを用いたディスクI/Oのパフォーマンスの測定