東京電力から電力の使用状況が公開されましたが、これをJSON形式で扱えるAPIを公開しているサイトがありました。
東京電力の電気使用状況 API
これを試してみます。
JSON形式なのでJavaScriptで簡単に使うことができます。
データ例は次の通りです。
{"hours":[2990,2850,2770,2710,2700,2830,3100,3350],"capability":3850,"updated":"2011-03-25 08:05:00"}
hoursは午前0時から1時間毎の電力です。現時点までの情報が配列で得られます。単位は万キロワット。
capabilityは電力の最高限度です。
updatedは更新時刻です。
サンプル
サンプルは次の通りです。
なおJavaScriptの部分についてはjQueryを使っています。
HTML
<html>
<body>
<div id="main"></main>
</body>
</html>
JavaScript
var td = new Date();
var ymd = td.getFullYear() * 10000 + (td.getMonth() + 1) * 100 + td.getDate();
$.getJSON("http://denki.cuppat.net/data/" + ymd + ".json", function(json){
$("#main").append("<p>" + td.getDate() + "日</p>");
var hrs = json.hours;
var cap = json.capability;
var upd = json.updated;
$("#main").append("<ul>");
var temp;
for(var i = 0 ; i < hrs.length ; i++){
temp = i + "時 " + hrs[i] + "万kW (" + Math.floor(hrs[i] * 100 / cap) + "%)";
$("#main ul").append("<li>" + temp + "</li>");
}
$("#main").append("<p>" + upd.replace(/.* (..):(..):.*/,"$1:$2 更新")+"</p>");
});
Googleマップは、位置情報をプロットして、自分の地図(マイマップ)をつくることができます。
このデータはKMLという形式でエクスポートすることができます。
これをCSVに変換するためのツールを作りました。
Googleマップ KML/CSV相互変換
CSVに変換し、Excelなどで編集した後、またKMLに変換して、マイマップにインポートすることもできます。
インポートで不具合が起きることがあります。
レコードが1件しかインポートされないケースがあります。
このような場合は再度インポートを行うとうまくいくようです。
初詣に行ったところ、すでに厄年を過ぎていたことに気付いた次第。
何が分かりにくいかというと「数え年」の意味。
生まれたときに既に1歳、年を越すと1歳プラス、というのが数え年。
Wikipediaの説明は次の通り。
元日から誕生日前日午後12時までは「満年齢+2」、それ以降は「満年齢+1」で計算する。
これは間違いではないのですが、本質が分かっていないような気がします。
数え年の特徴は「同じ年に生まれた人は同じ数え年」というところなのです。
となると生まれた日はどうでもよくて、生まれた年だけを考えればよく、
「数え年=今年-生まれた年+1」
で求まります。
これを踏まえて「厄年早見表」を作りました。
厄年早見表
「その年に厄年を迎えるのは西暦何年生まれの人か」
「その年に生まれた人の厄年は西暦何年か」
が求まります。
Yahoo!知恵袋にこんな質問がありました。
「駅の発車標をJavaScriptで再現させたい」
次の電車を案内する表示のことを「発車標」と呼ぶのだそうです。
これをJavaScriptで作りたいとのこと。
随分、漠然とした感じで一言では答えられませんが、面白そうなテーマなので、サンプルを作ってみました。
発車標
全体のコードは直接見ていただくことにして、ポイントだけ、書いておきます。
recs = [
["06:50", "各駅停車 東京 16両"],
["25:30", "快速 東京 10両"]
];
この部分に時刻表のデータを書き込みます。実際には外部ファイルを読み込むような使い方になるのでしょう。
dayminute = 3.5 * 60; //日付が変わる時刻(例、3:30のとき「3.5」)
日付が変わっても電車が走っているようなケースを想定しています。
この部分に書き込んだ時刻を実際の日付の変わり目とします。
終電の時刻を過ぎ、この時刻より前ならば、”本日の運行は終了しました”と表示します。
コードの中では時刻は0:00から何分経過したか、で表しているので、このような表現になります。
VBAやJavaScriptなどには文字列を置換するための関数があります。
「これはペンです」の「ペン」を「鉛筆」に置換して「これは鉛筆です」に変換するようなケースで使います。
言語によって微妙に書き方が異なるので注意を要します。
私がよく使う、Excel、VBA、JavaScript、PHP、MySQLについて、比較してみました。
| 言語 |
関数 |
| Excel |
SUBSTITUTE(文字列,置換前,置換後) |
| VBA |
Replace(文字列,置換前,置換後) |
| JavaScript |
文字列.replace(置換前,置換後)※正規表現が使える。 |
| PHP |
str_replace(置換前,置換後,文字列)または preg_replace(置換前,置換後,文字列)※正規表現が使える。 |
| MySQL |
REPLACE(文字列,置換前,置換後) |
言葉の意味は次の通りです。
文字列「これはペンです」の置換前「ペン」を置換後「鉛筆」に置換
Excelのワークシート関数に「ROMAN」があります。整数をローマ数字に変換します。
これをJavaScriptで書いてみました。
Excelと同様に3999まで対応しています。 続きを読む…
JavaScriptのコードを整形してくれるサイトを探していて見付けたのが「Online javascript beautifier」です。
Online javascript beautifier
コードを貼り付けてボタンを押すだけで改行やスペースなどを調整してきれいにしてくれます。 続きを読む…
JavaScriptを使って、次の作業をしたいと思います。
文字列の中の「a」と「a」に挟まれた「b」を「z」に置換する。
「abababa」という文字列ならば「azazaza」となるようにします。 続きを読む…
あらかじめ用意しておいた言葉をランダムに表示させる場合は乱数を使います。JavaScriptの場合です。
ws=["大吉","吉","末吉","凶","大凶"];
i=Math.floor(Math.random()*5);
alert(ws[i]);
乱数はMath.random()で得ます。0から1までの間の数が返ります。
したがって大吉から大凶までの5種類に振り分けるためには5倍して端数を切り捨てることで0,1,2,3,4の整数を得ます。
この場合、0から4までの整数が均等に出ます。
「大吉が5分の1なのは少なすぎる。2分の1にしてほしい」となった場合のやり方を考えます。
次のような関数「bias」を作ります。
確率rについては値s以下が返り、確率(1-r)については値s超が返ります。
例えばr=0.5、s=0.2とすると、確率1/2については0.2以下の値(0<=値<=0.2)が返ります。上の例ではこれが「大吉」に相当します。
残りの1/2については0.2超の値(0.2<値<1.0)が返ります。0.2から1.0までは均等な値が返ります。上の例では「吉」から「大凶」までに相当します。
ws=["大吉","吉","末吉","凶","大凶"];
i=Math.floor(bias(Math.random(),0.5,0.2)*5);
alert(ws[i]);
function bias(num, r, s){
//値s以下となる確率をrとする。
if(num < r){
b = num * (1 / r) * s;
}else{
b = s + (num - r) / (1 - r) * (1 - s);
}
return(b);
}
前に「3桁÷2桁=2桁あまり2桁」で1から9までの数字をすべて使うというパズルを取り上げましたが、今回の次の通り。
「4桁÷4桁=1桁(あまりゼロ)」となる計算で、1から9までの数字をすべて使う場合を見つけろ。
そしても今回もしらみつぶし法で解いてみました。
続きを読む…
最近のコメント