Picasaサムネイル抜きBookmarklet

2009年10月21日

電式ブログに掲載した、
Picasaウェブアルバムのサムネイルのみを抜き出し表示するブックマークレット
のコード説明。

PicasaウェブアルバムはGoogleのWebアルバムサービスです。

コード(ブックマークレットなので実際は1行):

javascript:
// 結果格納用配列の生成
var r=[];

var d=document;

// imgタグを全部抜き出す
var e=d.getElementsByTagName(“img”);

// imgタグのうち該当するクラス(CSS)がある要素のsrcを抽出
for(var i=0;i<e.length;i++)
if(e[i].className==”goog-icon-list-icon-img”)
r.push(e[i].src);

// 抽出したsrc(サムネイル画像のパス)のみ表示
for(i=0;i<r.length;i++)
d.write(” <img src=’”+r[i]+”‘>”); //

// document.writeの後は忘れずに。(無いとずっと読込中になる)
d.close();

(jQueryなどではない)Javascript自体にはクラス名からDOM要素を取得する方法がないようなので、タグ名で取得した要素からクラス名を取得し該当するかチェックしている。

以下メモ

・配列の生成:

val  = [];
// または
val = new Array();

・タグ名から要素取得:

document.getElementsByTagName(タグ名(img,a など));

// 他には
// ID名での取得。id=”○○”
document.getElementById(ID名);
// name値での取得。name=”○○”
document.getElementsByName(ID名);

・配列の個数:

array.length
// PHPなんかだと「count($array)」ですね

・配列への追加代入:

array.push(val)

・documentのクローズ。これが無いとずっと読込中になる。

document.close();


[メモ] 日付と曜日の覚書

2009年10月7日

日付関係の確認用に

●重要な日付の曜日

1年1月1日 月曜日 // 西暦1桁最初の日

99年1月1日 木曜日
99年12月31日 木曜日
100年1月1日 金曜日
1999年1月1日 金曜日
1999年12月31日 金曜日
// JavaScriptのDateオブジェクトでは
// 西暦99年以前はプラス1900年されてしまう。(例:99年→1999年)
// http://www.hoge256.net/2007/08/64.html
// http://pc11.2ch.net/test/read.cgi/hp/1242782347/64-66
// PHP等は未確認。

999年12月31日 火曜日
1000年1月1日 水曜日

1899年12月31日 日曜日
1900年1月1日 月曜日

1969年12月31日 水曜日 // 前日
1970年1月1日 木曜日 // UNIXエポック

1999年12月31日 金曜日 // 前日
2000年1月1日 土曜日 // 2000年問題

2000年2月28日 月曜日 // 前日
2000年2月29日 火曜日 // 2000年問題(うるう年処理)

2000年12月31日 日曜日 // 20世紀最後の日
2001年1月1日 月曜日 // 21世紀最初の日

2001年9月8日 土曜日 // 前日
2001年9月9日 日曜日 // 2001年9月9日問題

2036年2月5日 火曜日 // 前日
2036年2月6日 水曜日 // 2036年問題 同日6:28:15(UTC)。NTP等
2036年2月7日 木曜日 // 翌日

2038年1月18日 月曜日 // 前日
2038年1月19日 火曜日 // 2038年問題 同日3:14:7(UTC)
2038年1月20日 水曜日 // 翌日

2112年9月3日 土曜日 // ドラえもんの誕生日

9999年12月31日 金曜日 // 西暦4桁の最後の日

●曜日のずれ
・うるう年  366=7*52 +2 // 翌年同日は後ろに2日ずれる
・普通の年 365=7*52 +1 // 翌年同日は後ろに1日ずれる

・うるう年 1月1日と12月31日は後ろに1日ずれる
・普通の年 1月1日と12月31日は同じ曜日

1年1月1日 月曜日
2年1月1日 火曜日

100年1月1日 金曜日 // 100年はうるう年ではない
100年12月31日 金曜日
101年1月1日 土曜日

1000年1月1日 水曜日 // 1000年はうるう年ではない
1000年12月31日 水曜日
1001年1月1日 木曜日

1900年1月1日 月曜日 // 1900年はうるう年ではない
1900年12月31日 月曜日
1901年1月1日 火曜日

1969年1月1日 水曜日
1970年1月1日 木曜日 // UNIXエポック
1970年1月2日 金曜日

2000年1月1日 土曜日 // 2000年はうるう年
2000年12月31日 日曜日
2001年1月1日 月曜日

2004年1月1日 木曜日 // 2004年はうるう年
2004年12月31日 金曜日
2005年1月1日 土曜日

2009年1月1日 木曜日 // 今年の元日
2009年12月31日 木曜日 // 今年の大晦日

9999年1月1日 金曜日
9999年12月31日 金曜日
10000年1月1日 土曜日 // 前日が金曜日なので

計算は#!電式DateCalcの「年・月・日→曜日」による。(手前味噌)
http://www.denshiki.net/datecalc/ymd2w.php

間違っている曜日がありましたらご連絡下さい。


[メモ] divブロックのセンタリング

2009年10月6日

<html>
<head>

<style>
#parent {
border: solid 1px blue;  /* 説明用 */
text-align: center;
}

#child {
border: solid 1px red;/* 説明用 */
width: 200px;
margin: 0 auto 0;
}
</style>
</head>
<body>

<div id=”parent”>
<div id=”child”>センター</div>
</div>

</body>
</html>

確認:
Windows XP SP3
Firefox 3
IE 8
IETester (5.5-8)
safari 4.0.3


[JS] デフォルト引数でtrue/falseを使う時の注意点

2009年9月26日

JavaScriptの関数でデフォルト引数を実現するには通常下記のようにする。

var1 = var1 || “デフォルト引数”;

例:

<html>
<head>
<title>[JS] 関数のデフォルト引数</title>
<script type=”text/javascript”>

function default_param1(var1)
{
v1 = var1 || “デフォルト引数”;
document.write(“引数:["+ var1 +"] 結果:["+ v1 +"]<br><br>\n”);
}

</script>
</head>

<body>
default_param1()<br>
<script type=”text/javascript”>default_param1()</script>

default_param1(“引数設定”)<br>
<script type=”text/javascript”>default_param1(“引数設定”)</script>

</body>
</html>

結果:

default_param1()
引数:[undefined] 結果:[デフォルト引数]

default_param1(“引数設定”)
引数:[引数設定] 結果:[引数設定]

しかしデフォルト引数をtrueにすると使えなくなる。
例:

<html>
<head>
<title>[JS] 関数のデフォルト引数</title>
<script type=”text/javascript”>

function default_param2(var2)
{
// デフォルト引数をtrueにしたい
v2 = var2 || true;
document.write(“引数:["+ var2 +"] 結果:["+ v2 +"]<br><br>\n”);
}

</script>
</head>

<body>
デフォルト引数をtrueにしたい<br><br>

default_param2()<br>
<script type=”text/javascript”>default_param2()</script>

default_param2(true)<br>
<script type=”text/javascript”>default_param2(true)</script>

default_param2(false)  // trueになる<br>
<script type=”text/javascript”>default_param2(false)</script>

</body>
</html>

結果:

デフォルト引数をtrueにしたい

default_param2()
引数:[undefined] 結果:[true]

default_param2(true)
引数:[true] 結果:[true]

default_param2(false) // trueになる
引数:[false] 結果:[true]

falseだと引数が存在すると見られるようだ(当たり前といえば当たり前)。

なのでこの方法だと、trueではなくfalseをデフォルト引数にしないとダメみたい。

例:

<html>
<head>
<title>[JS] 関数のデフォルト引数</title>
<script type=”text/javascript”>

function default_param3(var3)
{
// デフォルト引数をfalseに変更
v3 = var3 || false;
document.write(“引数:["+ var3 +"] 結果:["+ v3 +"]<br><br>\n”);
}

</script>
</head>

<body>
デフォルト引数をfalseに変更<br><br>

default_param3()<br>
<script type=”text/javascript”>default_param3()</script>

default_param3(true)<br>
<script type=”text/javascript”>default_param3(true)</script>

default_param3(false)<br>
<script type=”text/javascript”>default_param3(false)</script>

</body>
</html>

結果:

デフォルト引数をfalseに変更

default_param3()
引数:[undefined] 結果:[false]

default_param3(true)
引数:[true] 結果:[true]

default_param3(false)
引数:[false] 結果:[false]

引数なしの場合のundefinedは空文字「”"」ではなくnull判定すればいいみたい。
例:

<html>
<head>
<title>[JS] 関数の引数の確認</title>
<script type=”text/javascript”>

function default_param4(var4)
{
if(var4 == “”)
document.write(“var4:空文字<br>\n”);
if(var4 == null)
document.write(“var4:null<br>\n”);
if(var4 == undefined)
document.write(“var4:undefined<br>\n”);
}

</script>
</head>

<body>
引数の確認<br><br>
default_param4()<br><br>
<script type=”text/javascript”>default_param4()</script>

</body>
</html>

結果:

引数の確認

default_param4()

var4:null
var4:undefined


[JS,PHP] FizzBuzz

2009年9月26日

Fizz Buzz – Wikipedia
http://ja.wikipedia.org/wiki/Fizz_Buzz

FizzBuzz問題のためでなく、テスト用に縦や横に大量の文字を表示する必要があると思うので書いてみた。

PHP:

<?php
function fizzbuzz($start,$end,$vertical=true)
{
if($vertical) $eol = “<br>”;
else          $eol = “,”;

for($i=$start; $i<=$end; $i++){
$str = “”;
$m3 = $i % 3 ;
$m5 = $i % 5 ;
if($m3==0) $str .= “Fizz”;
if($m5==0) $str .= “Buzz”;
if($m3!=0 && $m5!=0) $str .= $i;
print $str . $eol . PHP_EOL;
}
}

fizzbuzz(1,100);  // 縦方向に表示
fizzbuzz(1,100,false); // 横方向に表示
?>

JavaScript:

<html>
<head>
<title>FizzBuzz</title>
<script type=”text/javascript”>

function fizzbuzz(start, end, vertical)
{
if(vertical==true || vertical==null) eol = “<br>”;  // vertical=true or none
else                                 eol = “,”;  // vertical=false

for(var i=start; i<=end; i++){
var str = “”;
var m3 = i % 3 ;
var m5 = i % 5 ;
if(m3==0) str += “Fizz”;
if(m5==0) str += “Buzz”;
if(m3!=0 && m5!=0) str += i;
document.write(str + eol +”\n”);
}
}

</script>
</head>

<body>
<b>fizzbuzz(1,100)</b> 縦方向<br>
<script type=”text/javascript”>
fizzbuzz(1,100);
</script>

<hr>
<b>fizzbuzz(1,100,false)</b> 横方向<br>
<script type=”text/javascript”>
fizzbuzz(1,100,false);
</script>

<hr>
<b>fizzbuzz(1,100,true)</b> 縦方向<br>
<script type=”text/javascript”>
fizzbuzz(1,100,true);
</script>

</body>
</html>

JavaScript書いてて気付いたのがデフォルト引数の処理。別記の予定。


[メモ]IETester (IE5.5~IE8)導入

2009年9月26日

現在ブラウザはFirefox(ver.3)がメインだけど動作確認などでIEを使う事がある。
入れてるのはXP標準のIE6なのでIE7やIE8でも確認できるようにしたいと思い,
IEの共存を試してみる。

調べてみるとスタンドアローン版、VirtualPC、IETesterなどがあるらしい。

秒刊SUNDAY:一番良いIE6~IE8の共存方法はコレだ!
http://www.yukawanet.com/sunday/2008/10/ie6ie8.html

はじめはIE6はそのままにスタンドアローン版のIE7&8を入れるつもりだったが上記サイトを見るとアンインストールでエラーなど微妙とのこと。
どうせ自己サイトの動作確認にしか使わないのでIETesterを入れることにした。

IETester
http://www.my-debugbar.com/wiki/IETester/HomePage

インスコして無事起動できたけどIE5.5~IE7までしか動作せず、IE8は使えない云々と出る。
どうも標準のIEがVer6なのがダメらしい

ochanoco blog ?  IETesterはIE6をデフォルトにしてると動かないみたい
http://blog.ochanocosaisai.com/?p=368

しょうがないので元々のIE6をIE8にバージョンアップしたらIETesterでもIE5.5~IE8まで動作した。

環境
Windows XP SP3
IE6 → IE8にバージョンアップ
IETester ver.0.4.1


[メモ] PHPエディタを閉じる際のエラー

2009年9月14日

PHPエディタstandoaloneを使用していますが、突然ファイルを閉じる際にエラーが表示された。
「モジュール’ntdll.dll’のアドレス 7C952A2C でアドレス 00404BE9 に対するの書き込み違反がおきました。」が2度出る。

ググったら、PHPエディタのフォルダ内のphp_editor_std.iniの「RWord」行を変更すれば直るとこのこと。

修正前:

RWords=”",

修正後:

RWords=”11″,

中に入れる文字は何でもいいらしい。

参考:
「旧」なまがきの味 :: PHPエディタのエラー解決
http://namagaki.net/taste/index.php?id=1175 のコメント欄


[メモ] PHP5でDB操作(PDO)

2009年9月14日

PDO(PHP Data Object)

CodeZine  PDOでサクサクDB開発
データベースへのアクセスを抽象化するPHP Data Objectの利用
http://codezine.jp/article/detail/433

公式マニュアル:PHP Data Objects
http://www.php.net/manual/ja/book.pdo.php

従来のSQLite関数 (多分SQLite2系統になる)
http://jp.php.net/manual/ja/book.sqlite.php


[メモ] XAMPP:複数サブドメインとhtdocs以外への配置

2009年9月10日

ローカルの開発・動作確認環境であるXAMPP for Windowsを使いやすいように設定する。
1.開発と動作確認の2つのURLを使いやすいようにサブドメイン化する。
2.動作確認から公開レンタルサーバへ移しやすいようにディレクトリパスを同じにする。

参考:
[XAMPP]WinXPローカル環境で複数ドメイン管理 – Like@Lunatic

http://likealunatic.jp/2008/05/16_xampp.php

作成から公開までの流れ

開発 @ローカルXAMPP
バックアップやテスト、メモ等でごちゃごちゃ

動作確認 @ローカルXAMPP
整理の意味もあり、必要なファイルのみ移動。
開発→動作確認はディレクトリパスの変更やむなし。

公開 @レンタルサーバ
動作確認したファイルを手直し無し・UPのみで公開したい

レンタルサーバのユーザディレクトリ
/virtual/xxxxx/

現状:
ローカルでの配置(配下にpublic_html等を置く)
開発:C:\xampp\htdocs\xxxxx\develop
確認:C:\xampp\htdocs\xxxxx\preview
ローカルでのURL
開発:http://localhost/xxxxx/develop/
確認:http://localhost/xxxxx/preview/

変更後:
ローカルでの配置(配下にpublic_html等を置く)
開発:C:\virtual\develop
確認:C:\virtual\xxxxx (レンタルサーバと同構成)
ローカルでのURL
開発:http://devel.xxxxx/
確認:http://pre.xxxxx/

環境
Windows XP SP3
XAMPP for Windows Ver.1.6.7
インストール先:C:\xampp

・バーチャルホスト設定
C:\xampp\apache\conf\extra\httpd-vhosts.conf

htdocsに置いたままサブドメイン化

<VirtualHost *:80>
DocumentRoot “C:/xampp/htdocs/xxxxx/develop/public_html”
ServerName develop.xxxxx
</VirtualHost>
<Directory “C:/xampp/htdocs/xxxxx/develop/public_html”>
order deny,allow
allow from ALL
</Directory>

<VirtualHost *:80>
DocumentRoot “C:/xampp/htdocs/xxxxx/preview/public_html”
ServerName preview.xxxxx
</VirtualHost>
<Directory “C:/xampp/htdocs/xxxxx/preview/public_html”>
order deny,allow
allow from ALL
</Directory>

必要なドメイン/サブドメイン分だけ上記をコピー&修正。
htdocs以下に置くなら<Directory ~>はなくても動いた。
htdocs以外への配置は<Directory ~>必須。
ファイル一覧表示させたい場合は「Options Indexes」を追加。

<VirtualHost *:80>
DocumentRoot “C:/virtual/deveolp/public_html”
ServerName devel.xxxxx
</VirtualHost>
<Directory “C:/virtual/deveolp/public_html”>
Options Indexes
order deny,allow
allow from ALL
</Directory>

レンタルサーバのユーザディレクトリ「/virtual/xxxxx」に合わせる

<VirtualHost *:80>
DocumentRoot “C:/virtual/xxxxx/public_html”
ServerName pre.xxxxx
</VirtualHost>
<Directory “C:/virtual/xxxxx/public_html”>
Options Indexes
order deny,allow
allow from ALL
</Directory>

・hosts設定
C:\WINDOWS\system32\drivers\etc\hosts
VirtualHostの ServerNameをコピペ

127.0.0.1       localhost
127.0.0.1       develop.xxxxx
127.0.0.1       preview.xxxxx
127.0.0.1       devel.xxxxx
127.0.0.1       pre.xxxxx

http://pre.xxxxx/ 等でアクセス可能

・PHPでのディレクトリ・ファイル指定

下記のどちらでも動作した。

$basedir = “C:/xampp/htdocs/xxxxx/preview”;
$basedir = “/xampp/htdocs/xxxxx/preview”;

レンタルサーバに合わせる

$basedir = “/virtual/xxxxx”;


Hello Future!

2009年9月1日

今まで、すべての話題を#!電式ブログに書いていましたが、
開発関係のものを開発ブログとしてこちらに分割しました。

●サイト群の構成

#!電式 公式サイト  ・・・開発したモノの設置場所
http://www.denshiki.net
#!電式ブログ      ・・・開発したモノの紹介や役立つモノ・情報のブログ
http://denshiki.blog33.fc2.com
#!電式開発ブログ   ・・・開発関係のブログ
http://denshiki.wordpress.com

以前に#!電式ブログに掲載した開発関係のもの(コードや開発メモなど)は時期を見て、こちらの開発ブログに移行したいと思います。

これからもよろしくお願い致します。


フォロー

Get every new post delivered to your Inbox.