FC2ブログ

log server 構築

今回は 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を抜ける

続きはまた明日以降になります
スポンサーサイト



log サーバーの永続性について

一般的なDBMSでは
一旦格納してコミットしたデータは
ディスク破壊などを除き、何があっても消失しないような仕組みになっている

この
コミットした結果を消失しないようにするには負荷が伴う

アクセスログのように消失が許容されるログ管理では
永続性を維持しないことで処理負荷をおさえられる

PostgreSQL では
テーブル作政治に
CREATE UNLOGGED TABLE コマンドを使うことで
永続性を維持するための
トランザクションログを特定のテーブルだけ書かないように指定できる

他のテーブルの永続化には影響しない

この状態でDBMSがクラッシュすると該当するテーブルデータが強制的にクリアされる

そ他割、更新処理はかなり高速になる

log を管理するDB設計について

DBに格納した log はいずれ削除することになる

ログを削除するときには
指定の時間より古いというような条件を指定して実行する

見かけはDELETE コマンドの実行
しかし
実際の処理は削除対象データを検索してから削除

こういった行単位の削除では検索処理をするので
削除対象が大量になるログで実行するとすさまじい時間になってしまう

また、ログ管理サーバーでは

新しいログデータ投入という、挿入処理

古いログデータ削除という、削除処理

これを繰り返すためデータの断片化が起こりやすく
検索性能が徐々に低下していく
これは windows をつかったことがあるとよく行う
デフラグしないと遅くなるというもの

このため、ログの格納の問題を解決するために
つかわれるのが
テーブルパーティショニング

日付情報をもちいた
レンジパーティショニングを施せば
削除単位がテーブルの一部
から
テーブルそのものになる

こうなれば
DROP コマンドや TRUNCATE コマンドが使えるので
ほぼ一瞬で処理可能

それに、テーブル単位のほうがアーカイブもしやすい
ちなみに、
DROP TRUCNCATE コマンドは
SQLなので、
SQLコマンド で検索するといろいろでてくる

今回は
PostgreSQLのコマンド
http://www.postgresql.jp/document/8.1/html/sql-commands.html
にコマンドが載っていました

テーマ : Linux
ジャンル : コンピュータ

クレンジング


不要なデータを除去することをクレンジングという

クレンジングのポイントは不要な情報の除去
文字コードの変換
個人情報削除
タイムスタンプの整理など

テーマ : Linux
ジャンル : コンピュータ

sysstat のログ

性能解析につかわれるログ

/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
ジャンル : コンピュータ

mail log

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 kenel log

linux のコアプログラムである
kernel が出力するログ

/var/log/kern.log
に蓄積される

kernel は様々なアプリを制御するため
ログにも様々なアプリの動作が記録される

特に活用するときは
故障時の記録で
システムトラブルの解析に利用される

解析対象を kernel に絞ったケースでは非常にみやすいログになる

これと同じログが syslog にも出力される

ちなみに、書籍にはサンプルが載っていたけど、自分でも確認したかったので

コマンドを実行してみました

Linux ファイルシステムは
EXT4 なので

cat /var/log/kern.log| grep EXT4

を実行することで確認できました

テーマ : Linux
ジャンル : コンピュータ

DHCP log

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)

画像をつけると
Screenshot-2012-11-28 21:09:30


まず、ログの読み方ですが
基本的なフォーマットは
タイムスタンプ ホスト名 タグ: メッセージ本体
となります

今回のタイムスタンプなら
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)

が実行されたということになります

Linux のログの勉強

ログを調べるには
必要な情報に絞り込むフィルタリングが必要になる

一般的なシステムではフィルタリングをサーバーごとに実行している

ログをリアルタイムに監視するソフト
ログ監視エージェントをサーバーで動作させておき

このソフトが事前に設定指定板基準と照らし合わせ、
運用管理者に通知する情報だけをメールサーバーや
運用監視サーバーに通知している

管理するサーバーが少ないうちには
フィルタリングで充分だけど

サーバーが複数になってくると
サーバー個別フィルタリングでは
複数サーバーをまたがった分析に手間がかかってしまう

もし、複数のサーバーへ不正アクセスされた場合、
侵入された時刻、使われてしまったIDの情報をもとに
ここのサーバーのログを分析することになってしまう

また、すべてのログが」
ここのサーバー上に蓄積されていくが
基本的に不必要なログがほとんどなので
一定時間後に圧縮、削除するという
ログ管理が必要になるし
サーバーの台数だけ増えていくので
現実的ではない

このため、対策としては
すべてのサーバーのログを
1ヶ所に集約してフィルタリングすること

これなら、サーバー台数が増えていってもログ管理対象のサーバーは増えない

さらに、最初の方にあった問題点である複数サーバーのログ分析も
この方法で解決できる

これらの情報が記載されていたのが
日経 Linux (リナックス) 2012年 06月号 [雑誌]




最近では、不正アクセスなどでログ解析もすることがおおそうなので
この機会に勉強していきます

テーマ : Linux
ジャンル : コンピュータ

FXプライムの手数料

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関連イベント

HTML5Audio再生関連イベント

loadstart
データの読み込み開始

loadedmetada
情報(メタデータ)を読み込んだ

progress
情報読み込み中

loadeddata
データを読み込んだ

error
エラーが発生した

stalled
通信が停止した

abort
読み込みが中断された

suspend
一時読み込みを停止

canplay
再生が可能になった

canplaythrough
スムーズな再生が可能になった

JavascriptでHTML5audioの制御

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は
スムーズな再生が可能になったとき
という意味

HTML5Audio対応のチェック

JavascriptでHTML5 Audio対応かチェック

古いブラウザとかで、HTML5 Audio非対応ブラウザだと
エラーになり、scriptが停止する

これでは困るから
HTMLAudioElementオブジェクトの
有無を
ifを使って調べるようにする

つまり、HTMLAudioElementオブジェクトがないなら
処理を行う関数から抜け出るようにする

ソースにすると
if(!HTMLAudioElement){
return;
}

こうすれば、非対応ブラウザでは以下の処理が行われずにすむ

HTML5入力チェック無効化

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で入力した場合、入力した値が、指定した範囲を超えている

このため、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で
読み出すと、数値型になっているから
そのまま演算することができる

内蔵HDD権限変更

ドスパラ ウルトラブックの設定

ドスパラで購入し
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で指定した範囲外の数値でも入力てまきてしまうこと

これは、
入力チェックされるので、対処は可能

2種類ある manaca のカード

名古屋の地下鉄やあおなみ線で使える電子マネー
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で強化されたフォーム入力機能

HTML5て強化されたフォーム機能

これまでのフォームは
テキストフィールドやラジオボタン、チェックボックスなど
シンプルだったが、現在はJavascriptで
フォーム入力機能の向上できるライブラリが多々ある

例えば、日付を入力するときに
カレンダーを表示して、クリックして選択できるとか
入力するテキストフィールドに
入力する例が薄い文字でかかれているとか
などなと

HTML5ではこういった機能が標準搭載されるようになった

HTML5で強化された例として
日付入力やカラー選択などのUIのほかに
必須項目の設定
入力文字を正規表現で制限
メールやURLの入力を行うもの

進行状況を示すprogress要素
割合を示すmeter要素

などがある

かなり便利になったけど
それでも
サーバ側では入力チェックが必要

これは、ブラウザにより
HTML5の実装が違うため

HTML5て強化されたフォーム機能

これまでのフォームは
テキストフィールドやラジオボタン、チェックボックスなど
シンプルだったが、現在はJavascriptで
フォーム入力機能の向上できるライブラリが多々ある

例えば、日付を入力するときに
カレンダーを表示して、クリックして選択できるとか
入力するテキストフィールドに
入力する例が薄い文字でかかれているとか
などなと

HTML5ではこういった機能が標準搭載されるようになった

HTML5で強化された例として
日付入力やカラー選択などのUIのほかに
必須項目の設定
入力文字を正規表現で制限
メールやURLの入力を行うもの

進行状況を示すprogress要素
割合を示すmeter要素

などがある

かなり便利になったけど
それでも
サーバ側では入力チェックが必要

これは、ブラウザにより
HTML5の実装が違うため

よくあるJavascriptのエラー

よくあるJavascriptのエラー

一番よくあるのは入力ミス
これは、デバッガで簡単に見つかる

つぎに、該当するはずの行に間違いが見あたらない場合
HTMLのほうにエラーがあるパターンもある
例えば、取得する要素が存在しないとか
追加する場所を間違えて、
存在しないというエラーがデバッガででるなど
対応策は、HTMLもみてみるぐらい

際限なくエラーがでまくりの場合
ブレークポイントを設定する
これをつければ、その行の直前で、一時停止するので
そこまでの状態からデバッグできる
ちなみに、終わったら
ブレークポイント解除を、わすれずに

そして、アルゴリズムエラー
例えば
getMonth()は
実際の月より1つ少ない表示になるため
1月をだすときには
getMonth()+1
にしないと、0月になってしまう

テーブル内のスタイルの変更

今回は、Javascriptのメモ

赤字のところだけ赤くする方法のメモ

テーブル内のスタイル変更

テーブル内の売上金額マイナスの場合に
文字を赤色にする処理

var td=document.querySelectorAll("#main table td");
for(var i=0;ivar 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は自己資本比率をあげることで
貸出の余力がなくなりやすく
さらに、自己資本比率をあげるためには
持っている株などを売却し、現金化する可能性がでてきます

金融関連の規制は欧州でも動きがあり
金融取引税の導入の検討や資産税の検討もあるため
全体的にリスク資産は売られる傾向が続きそうです

YouTube検索アプリの起動失敗の理由について考える

Web連携アプリを作成するときの勉強として
スマートにプログラミング
Android実践編
を購入し、YouTube検索アプリのサンプルを
実際にコードを打ち込み、試してみました

本来なら、起動確認して、その後Yahoo!動画などの
アプリを作成したり、ブログ記事読み込みなども考えていましたが
エミュレータでは起動するものの
実機では検索すると、エラーを起こし強制終了シてしまいます
書籍では、エミュレータでは動画再生できないため
実機検証するように書かれていますが
実機検証すると、エラーになります

ここで、気になるのが、対応しているOSのバージョンです

現在、使用している端末は
au の HTC J
Android 4.03です

もしかしたら、バージョンが対応していないのかもしれません

最近購入した Nexus7はさらにバージョンが新しいため
検証には不向きなので古い端末で実験する必要がありそうです
最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック