今回は ubuntu 11.10 server を使うため
http://releases.ubuntu.com/11.10/
から
64-bit PC (AMD64) server install CD
をダウンロードしてインストール
今回は web3層システムで行うということなので
ちょっとこの仕組みについて調べてみました
http://blog.livedoor.jp/del_yu/archives/591755.html
に解説が載っていました
まずは実験ということで、VMware Player で実験していきます
最初に PostgreSQL インストール
sudo apt-get update
sudo apt-get install postgresql
次に動作確認
sudo su - postgres
psql -l
これでDB一覧が表示されればOK
続いて、データ投入ユーザとDB作成
これは、日経Linux 2012 6月号の補足事項からダウンロードしたものを
使用します
http://itpro.nikkeibp.co.jp/article/MAG/20120507/394743/?ST=oss
からダウンロードできます
ファイルをダウンロードしたら
unzip toku3.zip で解凍し
この中にある
createDB.sql
を使って作成します
DB関連はSQLをまとめて sql ファイルにすれば効率がよくなります
ダウンロードしたファイルを転送して
cd /tmp
psql -f createDB.sql
でDBが作成されます
ついでにユーザも作成
createuser -s syslog
次にDB接続
psql syslog syslog
ログインできると
syslog=#
となるので、テーブル一覧をみたいので
\dt を実行
一覧の一番上にあるテーブル
systemevents の内容を確認するため
\d systemevents
を実行
これで
テーブルの項目名である Column
データのタイプである Type
が一覧表示される
確認できたら
\q
でDBを抜ける
続きはまた明日以降になります
スポンサーサイト
一般的なDBMSでは
一旦格納してコミットしたデータは
ディスク破壊などを除き、何があっても消失しないような仕組みになっている
この
コミットした結果を消失しないようにするには負荷が伴う
アクセスログのように消失が許容されるログ管理では
永続性を維持しないことで処理負荷をおさえられる
PostgreSQL では
テーブル作政治に
CREATE UNLOGGED TABLE コマンドを使うことで
永続性を維持するための
トランザクションログを特定のテーブルだけ書かないように指定できる
他のテーブルの永続化には影響しない
この状態でDBMSがクラッシュすると該当するテーブルデータが強制的にクリアされる
そ他割、更新処理はかなり高速になる
DBに格納した log はいずれ削除することになる
ログを削除するときには
指定の時間より古いというような条件を指定して実行する
見かけはDELETE コマンドの実行
しかし
実際の処理は削除対象データを検索してから削除
こういった行単位の削除では検索処理をするので
削除対象が大量になるログで実行するとすさまじい時間になってしまう
また、ログ管理サーバーでは
新しいログデータ投入という、挿入処理
古いログデータ削除という、削除処理
これを繰り返すためデータの断片化が起こりやすく
検索性能が徐々に低下していく
これは windows をつかったことがあるとよく行う
デフラグしないと遅くなるというもの
このため、ログの格納の問題を解決するために
つかわれるのが
テーブルパーティショニング
日付情報をもちいた
レンジパーティショニングを施せば
削除単位がテーブルの一部
から
テーブルそのものになる
こうなれば
DROP コマンドや TRUNCATE コマンドが使えるので
ほぼ一瞬で処理可能
それに、テーブル単位のほうがアーカイブもしやすい
ちなみに、
DROP TRUCNCATE コマンドは
SQLなので、
SQLコマンド で検索するといろいろでてくる
今回は
PostgreSQLのコマンド
http://www.postgresql.jp/document/8.1/html/sql-commands.htmlにコマンドが載っていました
テーマ : Linux
ジャンル : コンピュータ
不要なデータを除去することをクレンジングという
クレンジングのポイントは不要な情報の除去
文字コードの変換
個人情報削除
タイムスタンプの整理など
テーマ : Linux
ジャンル : コンピュータ
性能解析につかわれるログ
/var/log/sysstat/
に格納されている
注意点としては、テキスト形式ではないので
参照するときに sar コマンドを使うということ
指定するオプションにより、様々な性能情報を得られる
Ubuntu ではデフォルトではインストールされていないため
sudo apt-get install sysstat
でインストールします
次に
sudo vim /etc/default/sysstat
で設定ファイルを開き
ENABLED="false"
を
ENABLED="true"
へ変更
sudo /etc/init.d/sysstat start
で起動します
sar コマンド導入には
Ubuntuでシステムリソース情報を取得するには?を参考にさせていただきました
テーマ : Linux
ジャンル : コンピュータ
postfix などメール関連アプリが
/var/log/mail.log
に出力するログのこと
不正メールの監視、
メールの配送処理の解析など
用途はいろいろ
解析時には
エラーの記録を参照することがおおいけど
mail.log は非常に大量に記録されているので
エラーを調べるには
/var/log/mail.err
を調べる
cat /var/log/mail.err
でファイルをみたり、この中から grep で絞り込みかけるとよりやりやすくなります
テーマ : Linux
ジャンル : コンピュータ
linux 統合認証モジュールの
PAM
Pluggable
Authentication
Modules
のこと
を使っているアプリが出力するログ
syslog が扱うログだけど
認証ログだけはsyslog に出力されない
認証ログは監査で利用するログなので
解析用途のおおい syslog とは混在させないように設計されているのが理由
認証ということで
今回は
cat /var/log/auth.log
を実行してみました
書籍によれば
sshd のログで
authentication failure
なら認証失敗
の痕跡となるようです
テーマ : Linux
ジャンル : コンピュータ
linux のコアプログラムである
kernel が出力するログ
/var/log/kern.log
に蓄積される
kernel は様々なアプリを制御するため
ログにも様々なアプリの動作が記録される
特に活用するときは
故障時の記録で
システムトラブルの解析に利用される
解析対象を kernel に絞ったケースでは非常にみやすいログになる
これと同じログが syslog にも出力される
ちなみに、書籍にはサンプルが載っていたけど、自分でも確認したかったので
コマンドを実行してみました
Linux ファイルシステムは
EXT4 なので
cat /var/log/kern.log| grep EXT4
を実行することで確認できました
テーマ : Linux
ジャンル : コンピュータ
dhclient のログは
タグにプロセスIDの記載がなく
dhclient というプログラム名だけを記録する
DHCPREQUEST はIP要求
DHCPACK は確認応答
remewall はIP更新を意味する
ログデータフォーマットは
サービスごとに異なる
Linux で出力できるログは
syslog サービスが出力するログ
アプリが個別に出力するログ
の2つ
まずは、syslog サービスが出力するログについて
syslogのログは
各種アプリが出力するログを処理する
syslog の出力ログは
一般的には
/var/log
にまとめて配置される
syslog が扱うすべてのログが集まるファイルが
syslog ファイル
で
/var/log/syslog
に記録されていく
今回は、日経Linux を参考に
cron コマンドのログを出してみました
今回は
cat /var/log/syslog | grep cron
を実行しました
以下は実行結果です
snowpool@snowpool-Prime-Series:~$ cat /var/log/syslog | grep cron
Nov 28 18:51:27 snowpool-Prime-Series anacron[1029]: Job `cron.daily' terminated
Nov 28 18:51:27 snowpool-Prime-Series anacron[1029]: Normal exit (1 job run)
Nov 28 19:17:01 snowpool-Prime-Series CRON[6889]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Nov 28 20:17:01 snowpool-Prime-Series CRON[7740]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
画像をつけると

まず、ログの読み方ですが
基本的なフォーマットは
タイムスタンプ ホスト名 タグ: メッセージ本体
となります
今回のタイムスタンプなら
Nov 28 19:17:01
つまり11月28日 19:17のログ
です
ホスト名は
snowpool-Prime-Series
つまりマシンのホスト名
タグですが
ここにはプログラム名とプロセスIDになりますので
CRON[6889]:
なら
cron がプログラム
6889 はプロセスIDとなります
メッセージ本体は行ったことです
(root) CMD ( cd / && run-parts --report /etc/cron.hourly)
が実行されたということになります
ログを調べるには
必要な情報に絞り込むフィルタリングが必要になる
一般的なシステムではフィルタリングをサーバーごとに実行している
ログをリアルタイムに監視するソフト
ログ監視エージェントをサーバーで動作させておき
このソフトが事前に設定指定板基準と照らし合わせ、
運用管理者に通知する情報だけをメールサーバーや
運用監視サーバーに通知している
管理するサーバーが少ないうちには
フィルタリングで充分だけど
サーバーが複数になってくると
サーバー個別フィルタリングでは
複数サーバーをまたがった分析に手間がかかってしまう
もし、複数のサーバーへ不正アクセスされた場合、
侵入された時刻、使われてしまったIDの情報をもとに
ここのサーバーのログを分析することになってしまう
また、すべてのログが」
ここのサーバー上に蓄積されていくが
基本的に不必要なログがほとんどなので
一定時間後に圧縮、削除するという
ログ管理が必要になるし
サーバーの台数だけ増えていくので
現実的ではない
このため、対策としては
すべてのサーバーのログを
1ヶ所に集約してフィルタリングすること
これなら、サーバー台数が増えていってもログ管理対象のサーバーは増えない
さらに、最初の方にあった問題点である複数サーバーのログ分析も
この方法で解決できる
これらの情報が記載されていたのが
日経 Linux (リナックス) 2012年 06月号 [雑誌]
最近では、不正アクセスなどでログ解析もすることがおおそうなので
この機会に勉強していきます
テーマ : Linux
ジャンル : コンピュータ
FXプライムが1000通貨取引を
再び手数料を取るようになりました
今回は、デイトレ割引がないため
往復で6銭分の手数料になります
細かく取引する場合、手数料の分を考慮しないと
マイナスになるのだ注意が必要です
停止ボタン、巻き戻しボタンの処理
まず、停止ボタン
オーディオを停止するには
pause()
を呼び出す
pauseは一時停止
実は、HTML5では、一時停止はあるけど
停止はない
なので、次にplay()を呼び出すと
一時停止した場所から再生が始まる
次に、巻き戻しボタンについて
これも、意外かもしれないけど
HTML5 Audioには、巻き戻しがない
対処として
HTML5Audioでは、再生ヘッドの位置を示す
currentTimeプロパティを使う
プロパティの値は、再生している秒数
つまり、
currentTime=0;
なら
再生ヘッドがオーディオデータの最初似戻り、巻き戻しとおなじになる
さらに、pause()で一時停止すれば、
巻き戻して止まったように見える
ゲームとかでもよくあるけど
当たり判定とか、ライフが減るのは
ある意味見せかけ処理なので
処理がわかると応用かできるので、便利
次に、再生速度のコントロール
について
DVDとかで、よくある
標準再生、倍速再生、スロー再生とかが
このコントロール
再生速度の制御には
playbackRateプロパティと
defaultplaybackRateプロパティの
両方へ
再生速度をあらわす数値を入れる
等倍速度なら 1.0
2倍速なら 2.0
スロー再生なら 0.5
とする
ちなみに、1.2とかもできるけど
指定した速度で動くかは、ブラウザ次第
なので、正確な指定は難しい
HTML5Audio再生関連イベント
loadstart
データの読み込み開始
loadedmetada
情報(メタデータ)を読み込んだ
progress
情報読み込み中
loadeddata
データを読み込んだ
error
エラーが発生した
stalled
通信が停止した
abort
読み込みが中断された
suspend
一時読み込みを停止
canplay
再生が可能になった
canplaythrough
スムーズな再生が可能になった
JavascriptでHTML5Audio制御
まず、何度もAudio要素の呼び出しを書くのは面倒だから
var audioObj = document.getElementById("myAudio");
というように、変数に格納したほうが楽
そして、オーディオ再生だけど
これは
play()を呼び出すだけで使える
今回なら
audioObj.play();
もし、再生ボタンを押したら
オーディオ再生
ていうようにするなら
document.getElementById("playButton").addEventListener("click",function(){
audioObj.Play();
},true);
ただし、実用的なプログラムにするなら
これだけだとダメ
それは、HTML5Audioは
まず、ページを表示してから音楽を再生する
つまり、ストリーミング再生じゃない
これは、YouTubeをネット回線の遅いとこで再生した時によくある再生してるけど
ネットからの画像ダウンロードが追いつかないという状態になる
このため、clickじゃなくて
canplaythrough を指定する
ちなみに、canplaythroughは
スムーズな再生が可能になったとき
という意味
JavascriptでHTML5 Audio対応かチェック
古いブラウザとかで、HTML5 Audio非対応ブラウザだと
エラーになり、scriptが停止する
これでは困るから
HTMLAudioElementオブジェクトの
有無を
ifを使って調べるようにする
つまり、HTMLAudioElementオブジェクトがないなら
処理を行う関数から抜け出るようにする
ソースにすると
if(!HTMLAudioElement){
return;
}
こうすれば、非対応ブラウザでは以下の処理が行われずにすむ
HTML5入力チェック無効化
Javascriptで入力チェックしたいときには
HTML5の入力チェックを無効化する
これを行うには
HTMLなら
form要素にnoValidate属性を追加する
Javascriptなら
formオブジェクトの
noValidateプロパティにtrueを設定する
もし、元通りに標準の入力チェックをしたくなったら
noValidateにfalseを指定すればいい
プログレスパーの値の変更
プログレスパーを使い、予約状況がみれるようにする
これなら視覚的にわかりやすくなる
ちなみに、、応用すればゲームでHPが減るのをみたりできる
とりあえず、今回は、ボタンがクリックされるたびに、10人ずつ予約が埋まるというもの
まぁしつこいようだけど
一撃くらうごとにHPが減るとかにも使える
まぁ処理を書き換えればだけどね
では、解説
プログレスパーの値は、
progress要素のvalueプロパティに入っている
このvalueプロパティの値を読み出して
計算を行い、結果をvalueプロパティに書きこめばok
格ゲーのあたり判定がでたら
ライフが減る計算して、それをライフサイクルパーに反映しているとかんがえればわかりやすい
とりあえず
今回は、予約状況を調べるボタンのソース
document.getElementById("resCheck").addEventListener("click",function(){
基本的に、ボタン作成処理は
ボタンIDを
document.getElementById()へ設定して
判別させて
addEventListener()で動作を追加する
var n=document.getElementById("resSTatus").value;
このresSTatusは
progress要素のID
なので
.valueでその値を読み出しているということ
これで、変数nにこの値が代入される
これを10ずつ増やしたいなら
n=n+10;
そして、再度、値を書き換えたいから
document.getElementById("resSTatus").value=n;
これで、10足した状態に上書きされる
あとは、HTMLへ反映するため
ele.innerHTML=n;
},true);
エラーチェック
Javascriptで入力した場合、入力した値が、指定した範囲を超えている
このため、Javascriptで入力チェックをリアルタイムでする必要がある
ただし、HTML5 で作成されたformなら
checkValidity()
で調べることができる
HTML5でないなら
従来どおりに
空欄チェック、型チェックをするscriptを何行もかかないとならなくなる
checkValidity()の使い方は
input要素のidを指定して、
checkValidity()を呼び出す
もし、input要素のid="resNumber"なら
var flag = document.getElementById("resNumber").checkValidity();
となる
checkValidity()は
入力が正しいならtrue
不正ならfalseを返す
これを使い
if文と合わせれば、エラーチェックの出来上がり
if(flag == true){
okだったときの処理
}else{
不正だったときの処理
}
というかんじになる
内容を数値として読み出す
Javascriptでは
テキストフィールドに入力された数値は
文字列として読み出されるため
値を、加算しようとしても
文字列の連結になってしまう
このため、parseInt() とか parseFroat()
などを使い、数値型に変換してから
計算していたけど
HTML5では
内容を数値として読み出せるプロパティの
valueAsNumber
が使えるため、効率がよくなった
ちなみに、valueAsNumberで
読み出すと、数値型になっているから
そのまま演算することができる
内容を数値として読み出す
Javascriptでは
テキストフィールドに入力された数値は
文字列として読み出されるため
値を、加算しようとしても
文字列の連結になってしまう
このため、parseInt() とか parseFroat()
などを使い、数値型に変換してから
計算していたけど
HTML5では
内容を数値として読み出せるプロパティの
valueAsNumber
が使えるため、効率がよくなった
ちなみに、valueAsNumberで
読み出すと、数値型になっているから
そのまま演算することができる
ドスパラ ウルトラブックの設定
ドスパラで購入し
Ubuntu 12.04 をインストールしたウルトラブックですが
インストール先をSSDにして
500GBのHDDは
Gparted を使い、Linux用に
ext4にフォーマットしました
しかし、このままでは、
root 権限でないと、書き込みができません
このため権限を変更します
権限を変更するには
root権限で chown コマンドを使います
まず、内蔵HDDのパスを調べます
これには
ファイルシステム500GBで
端末を開き
pwdコマンドで、フルパスを調べます
今回は
/media
にありました
パスが確認できたら、次に権限変更です
snowpool@snowpool-Prime-Series:~$ ll /media/bdec1869-7820-4557-a76e-a8b130293019/
合計 24
drwxr-xr-x 3 root root 4096 7月 21 22:25 ./
drwxr-xr-x 3 root root 4096 11月 21 22:34 ../
drwx------ 2 root root 16384 7月 21 22:25 lost+found/
snowpool@snowpool-Prime-Series:~$ ll /media/
合計 12
drwxr-xr-x 3 root root 4096 11月 21 22:34 ./
drwxr-xr-x 25 root root 4096 10月 21 08:17 ../
drwxr-xr-x 3 root root 4096 7月 21 22:25 bdec1869-7820-4557-a76e-a8b130293019/
snowpool@snowpool-Prime-Series:~$
となっているので
sudo chown snowpool:snowpool /media/bdec1869-7820-4557-a76e-a8b130293019/
を実行し、所有権を変えます
これで、ファイルやディレクトリ作成なとができるようになります
この500GB には
仮想マシンの置き場とする予定です
スクリプトによるコントロール
フォームをJavascriptでコントロールする
input要素のtypeにnumberを指定すると
値を増減できるスピンボタンができる
スピンボタンの値の増減は
Javascriptでもできる
この処理は
stepUp()
stepDown()
を使うことで再現できる
例えばstepUp(2)なら
値が2増える
注意点としては
min,maxで指定した範囲外の数値でも入力てまきてしまうこと
これは、
入力チェックされるので、対処は可能
名古屋の地下鉄やあおなみ線で使える電子マネー
manaca についてです
現在、Android アプリの mobile Suica の無料のほうを使っているのですが
これだと、現在 名古屋の地下鉄に乗ることができません
ちなみに、TOICA はOKです
休日は、一日切符を使えば600円で市バスと地下鉄が一日載り放題になるため
使うことはなかったのですが、平日にのるときに毎回切符を購入するのは
とても面倒なうえ、料金を調べるのもかなり面倒です
さらに、切符を購入するときに並ぶこともあるし、そんな手間を省けるので
manaca を1つつくってみました
このmanaca ですが
実は2種類あります
一つは
名古屋鉄道・名鉄バス・豊橋鉄道など発行される
㈱エムアイシー発行の記名式manaca
もうひとつは
地下鉄、あおなみ線などで発行sれる
株式会社名古屋交通開発機構 manaca
機能に違いはありません
ただし、たまるんというポイントサービスを使うには
名古屋鉄道・名鉄バス・豊橋鉄道など発行されるmanaca であることが条件です
ちなみに、地下鉄で無記名のものを購入し
これをあとで、記名式のほうに変更できるといわれていましたので
地下鉄で発行したものを たまるん対応にしようとしたのですが
この場合、記名式にするには、一度解約し
再度 あたらしい manaca をつくる必要がありました
ちなみに、この時の変更手数料は210円でした
面倒なので、ポイントをつけたい時には最初から
名古屋鉄道・名鉄バス・豊橋鉄道など発行されるmanaca
これを購入したほうがよさそうです
Android アプリなどの開発環境として
ドスパラでウルトラブックを購入し、これに Ubuntu 12.04 をインストールしました
最初の状態では、内蔵無線LANが認識しませんでしたが
カーネルアップデートにより、内蔵の無線LANが使えるようになりました
ちなみに、私が購入したのは、メモりが8GBのタイプです
メモりを多めにしたのは、VMware Player や VirtualBox などの仮想マシンを
使うためです
プリンストールされていた Windows 7 は消してしまいましたが
インストールディスクや、デバイスドライバはディスクとして
最初から用意されているため、後でも戻せそうです
ただ、欠点としては、ubuntu にしたためか、ディスクのトレイの開閉が上手くいかなくなり
SSD部分にインストールしたものの、もう一つ搭載されている500GBのHDDが
権限が root になっているので、書き込みができません
このあたりを解決したら、まとめてみようと思います
DVDとりだしなどに不便さはありますが、アプリ開発のためのエミュレータ起動は
問題なく起動するのであまり不満には感じません
最近は、HTC J を使って BlueTooth などを使ったアプリを勉強中
GPS、Bluetooth 音声入力、AIRなどは、実機検証でないと使えません
Google Nexus 7 も届いたので、スキルをあげてアプリ開発をすすめていこうと思います
日時の同時設定
HTML5での日時の設定には
datetimeとdatetime-localが使える
この違いは
datetimeは
協定世界時、別名グリニッジ標準時を使い
datetime-localでは、現地時間になる
送られるデータにも違いがあり
datetimeは
2012-11-18T12:15Z
datetime-localでは
2012-11-18T12:15
というように、最後にZがつくかつかないかの違いがある
HTML5て強化されたフォーム機能
これまでのフォームは
テキストフィールドやラジオボタン、チェックボックスなど
シンプルだったが、現在はJavascriptで
フォーム入力機能の向上できるライブラリが多々ある
例えば、日付を入力するときに
カレンダーを表示して、クリックして選択できるとか
入力するテキストフィールドに
入力する例が薄い文字でかかれているとか
などなと
HTML5ではこういった機能が標準搭載されるようになった
HTML5で強化された例として
日付入力やカラー選択などのUIのほかに
必須項目の設定
入力文字を正規表現で制限
メールやURLの入力を行うもの
進行状況を示すprogress要素
割合を示すmeter要素
などがある
かなり便利になったけど
それでも
サーバ側では入力チェックが必要
これは、ブラウザにより
HTML5の実装が違うため
HTML5て強化されたフォーム機能
これまでのフォームは
テキストフィールドやラジオボタン、チェックボックスなど
シンプルだったが、現在はJavascriptで
フォーム入力機能の向上できるライブラリが多々ある
例えば、日付を入力するときに
カレンダーを表示して、クリックして選択できるとか
入力するテキストフィールドに
入力する例が薄い文字でかかれているとか
などなと
HTML5ではこういった機能が標準搭載されるようになった
HTML5で強化された例として
日付入力やカラー選択などのUIのほかに
必須項目の設定
入力文字を正規表現で制限
メールやURLの入力を行うもの
進行状況を示すprogress要素
割合を示すmeter要素
などがある
かなり便利になったけど
それでも
サーバ側では入力チェックが必要
これは、ブラウザにより
HTML5の実装が違うため
よくあるJavascriptのエラー
一番よくあるのは入力ミス
これは、デバッガで簡単に見つかる
つぎに、該当するはずの行に間違いが見あたらない場合
HTMLのほうにエラーがあるパターンもある
例えば、取得する要素が存在しないとか
追加する場所を間違えて、
存在しないというエラーがデバッガででるなど
対応策は、HTMLもみてみるぐらい
際限なくエラーがでまくりの場合
ブレークポイントを設定する
これをつければ、その行の直前で、一時停止するので
そこまでの状態からデバッグできる
ちなみに、終わったら
ブレークポイント解除を、わすれずに
そして、アルゴリズムエラー
例えば
getMonth()は
実際の月より1つ少ない表示になるため
1月をだすときには
getMonth()+1
にしないと、0月になってしまう
今回は、Javascriptのメモ
赤字のところだけ赤くする方法のメモ
テーブル内のスタイル変更
テーブル内の売上金額マイナスの場合に
文字を赤色にする処理
var td=document.querySelectorAll("#main table td");
for(var i=0;i
var text=td[i].innerHTML;
if(text.indexOf("-") > -1){
td[i].style.color="red";
}
}
この処理を解説すると、
まず、td要素内の売上金額がマイナスかとうか調べる必要があるので
document.querySelectorAll()で
テーブル内の売上金額を示すtd要素だけピックアップする
これがソースにすると
ar td=document.querySelectorAll("#main table td");
そして、forを使い、読み出したtd要素の数だけ繰り返す
それが
for(var i=0;iのとこ
td要素の内容を読み出すには
var text=td[i].innerHTML;
として、次に赤字かどうかを調べる
赤字かどうかを調べるには
指定した文字列があるか調べる
infexOf()
を使う
infexOf()は
文字列が見つかれば、見つかった文字の位置を返す
もし、見つからないときには
-1を返す
infexOf()の、この機能を利用して
赤字のときなら
-がついているので
infexOf("-")
とすれば
調べることができる
さらに、赤字ならどうかんがえても
-1より大きい値になるから
styleオブジェクトの
colorプロパティに、赤色になる
redを指定する
これをソースにすると
if(text.indexOf("-") > -1){
td[i].style.color="red";
}
となる
米国大統領選挙が終わり、オバマ大統領の再任が決定しました
しかし、その後株価がさがりつづけています
これについて考えてみました
あくまで、私の推測ですけど
オバマ大統領は今回、富裕層の増税と
ポルカールールとバーゼル3の適用をするはずです
ポルカールールは金融機関の貸出業務以外での
リスクをとることを規制すること
たぶん、株やリスク商品の取り扱いについて
規制がかけられると思います
どこまで規制されるかはまだわかりませんが
保有する株などの売却が行われることも考えられます
バーゼル3は自己資本比率をあげることで
貸出の余力がなくなりやすく
さらに、自己資本比率をあげるためには
持っている株などを売却し、現金化する可能性がでてきます
金融関連の規制は欧州でも動きがあり
金融取引税の導入の検討や資産税の検討もあるため
全体的にリスク資産は売られる傾向が続きそうです
Web連携アプリを作成するときの勉強として
スマートにプログラミング
Android実践編
を購入し、YouTube検索アプリのサンプルを
実際にコードを打ち込み、試してみました
本来なら、起動確認して、その後Yahoo!動画などの
アプリを作成したり、ブログ記事読み込みなども考えていましたが
エミュレータでは起動するものの
実機では検索すると、エラーを起こし強制終了シてしまいます
書籍では、エミュレータでは動画再生できないため
実機検証するように書かれていますが
実機検証すると、エラーになります
ここで、気になるのが、対応しているOSのバージョンです
現在、使用している端末は
au の HTC J
Android 4.03です
もしかしたら、バージョンが対応していないのかもしれません
最近購入した Nexus7はさらにバージョンが新しいため
検証には不向きなので古い端末で実験する必要がありそうです