SQLの窓

2014年07月31日

手書きブログ : 人形




ファンタジー的に言うと、人間は骨格に肉が絡みついた不確かな存在ですが、その点人形は確実にそこに存在する形だったりするんですよね。長い年月を経ると、そこになんらかの意思が棲みついて外部に影響を与え始めるというか。このセカイでは、人間ってしょーもないですね。

この絵を描いたのが2009年。もう4年以上経ってるというか、視点を変えると当時から5つ年とってる勘定。5年もいったい何してたんだろう・・・と思い返しても仕方無いので、5年後はどうなってるのだろう・・・

と考えてなんか泣きそうになって来た。



posted by at 2014-07-31 22:26 | Comment(0) | 手書きブログ | このブログの読者になる | 更新情報をチェックする

PHP で cURL はオプションが全て。いろいろあるので、ちょっとまとめ

2014/7/31 現在、さくらインターネットの標準の PHP バージョンが 5.4.29 で、cURL が 7.36.0 ですが、このバージョンもオプションの意味合いに関係があります。

curl_setopt

上のリンクは、cURL のオプションの一覧です。

CURLOPT_BINARYTRANSFER が必要無くなっています

PHP 5.1.3 以降では、このオプションは何の効果も無いとあります。 CURLOPT_RETURNTRANSFER を使うのみでいいそうです。

CURLOPT_RETURNTRANSFER

TRUE を設定すると、curl_exec() の返り値を 文字列で返します。http で WEB ページを呼び出した結果が必要な場合に設定します。FTP の処理などでは、特に何も結果はありません。

CURLOPT_SSL_VERIFYHOST で値1 は使え無い

『値 1 は、cURL 7.28.1 以降では使えなくなりました』とありますが、通常今まで PHP では false を指定して処理しています。テストでは、仮に true や 2 を指定しても動作しているようですが・・・。

この値は、SSL を使用する時に設定しますが、対となる CURLOPT_SSL_VERIFYPEER というオプションがあり、これこそ false にしないと動作しません。

CURLOPT_SSL_VERIFYPEER

SSL を使用する際に設定します。

FALSE を設定すると、cURL はサーバー証明書の検証を行いません。cURL 7.10 以降、デフォルト値は TRUE なので、false に明示的に設定する必要があります。

CURLOPT_POSTFIELDS

http でファイルをアップロードする際に使用します。ファイルを送信するには、ファイル名の先頭に @ をつけてフルパスを指定します

PHP 5.2.0 以降、このオプションに @ プレフィックスつきでファイルを渡したときは value が配列でなければならなくなりました
$data = array( 'target' => '@' . realpath("./lightbox_a.jpg") );
curl_setopt($curl, CURLOPT_POSTFIELDS, $data );
PHP 5.5.0 以降、@ プレフィックスは非推奨になりました。 また、ファイルを CURLFile で送信できるようになりました。 @ プレフィックスを無効化して、 @ で始まる値を安全に渡せるようにするには、 CURLOPT_SAFE_UPLOAD オプションを TRUE と設定します。 CURLOPT_VERBOSE デバッグトレースしたい時に使用。CURLOPT_STDERR で指定したファイルに出力されます
$handle = fopen("./debug.txt", "w");
curl_setopt($curl, CURLOPT_STDERR, $handle);
CURLOPT_WRITEHEADER 転送のヘッダ部分が書き込まれるファイルを指定します
$handle = fopen("./ret_header.txt", "w");
curl_setopt($curl, CURLOPT_WRITEHEADER, $handle);
CURLOPT_CONNECTTIMEOUT 接続の試行を待ち続ける秒数。いつも、30 ぐらいでテストしています。 ( 0 だと、タイムアウトなし ) CURLOPT_FTP_SSL マニュアル本文には無いけれど、投稿部分に記述があり、実際にそれで動作する事を確認しました。
curl_setopt($ch, CURLOPT_FTP_SSL, CURLFTPSSL_ALL);
CURLFTPSSL_NONE、CURLFTPSSL_TRY、CURLFTPSSL_CONTROL、CURLFTPSSL_ALL があるようです。 CURLOPT_HEADER TRUE を設定すると、ヘッダの内容も出力します。ですが、通常必要無いので false にします。 CURLOPT_URL 呼び出す対象です。http:// であったり、https:// であったり、ftp:// であったりします。ftp で SSL を使用する場合は、CURLOPT_FTP_SSL で指定して動作しています。https:// の場合は、CURLOPT_SSL_VERIFYPEER と CURLOPT_SSL_VERIFYHOST だけで動作します。(FTP でも指定します) CURLOPT_POST TRUE を設定すると、HTTP POST を行います。POST は、 application/x-www-form-urlencoded 形式で 行われます(一般的なものです)。データは、CURLOPT_POSTFIELDS で連想配列にして設定します CURLOPT_HTTPHEADER 設定する HTTP ヘッダフィールドの配列。 array('Content-type: text/plain', 'Content-length: 100') 形式です。 CURLOPT_FILE FTP で、転送内容が書き込まれるファイル。
$fp = fopen("./target.zip","w");
curl_setopt($ch, CURLOPT_FILE, $fp);
CURLOPT_PUT http の PUT コマンドや、FTP のアツプロード時に使用する( true にする )。ファイルアップロードは、CURLOPT_INFILESIZE と、CURLOPT_INFILE が必要になります
$file_path = "./winofsql.png";
curl_setopt($curl, CURLOPT_INFILESIZE, filesize ( $file_path ));
$handle = fopen($file_path, "r");
curl_setopt($curl, CURLOPT_INFILE, $handle);
CURLOPT_FOLLOWLOCATION TRUE を設定すると、サーバーが HTTP ヘッダの一部として送ってくる "Location: " ヘッダの内容をたどります (これは再帰的に行われます)。よって、リダイレクトを自動化したい場合、つまり最終的な結果だけ欲しい場合に使用します。 関連する記事 PHP の cURL でファイルアップロード PHP : cURL で FTP + SSL ダウンロード PHP の cURL で ftp サーバーにファイルをアップロードする(SSLなし) PHP + cURL で、Twitter API 1.1 の search/tweets を呼び出して、RSS に変換する ローカルの PHP を使ってコマンドプロンプトより簡単にバイナリファイルをアップロードする PHP : リモートのファイルサイズを取得する
posted by at 2014-07-31 21:04 | Comment(0) | PHP | このブログの読者になる | 更新情報をチェックする

手書きブログ : 魔人



もう、手書きブログでは全く描いて無いですが、資産としての絵は相当あります。なんで時々掘り出して GIMP でちょっと手を加えたりしてます。


posted by at 2014-07-31 02:27 | Comment(0) | 手書きブログ | このブログの読者になる | 更新情報をチェックする

2014年07月29日

Google MAP で『サハラの目』



超巨大な目です。やはり 『Eye of the Sahara』とあります。

直径は約50kmに及び、宇宙空間からでないと、その全容は掴めないですが、隕石とは関係無いそうです。
( リシャット構造 )

さすがにストリートビューは無かったです。


posted by at 2014-07-29 16:16 | Comment(0) | Google MAP | このブログの読者になる | 更新情報をチェックする

2014年07月28日

Google MAP でナスカの地上絵のスパイダーとハチドリ



こんなのできるようになったんですね。

最初の倍率では良く解らないですが、+ で寄ると蜘蛛が見えます。

左下のアイコンで地図に変えると、Nazca Spider って書いてあります。

以下は、Hummingbird です



posted by at 2014-07-28 01:28 | Comment(0) | Google MAP | このブログの読者になる | 更新情報をチェックする

DAZ3D : 魔王



SubSurface チューニングしまくって、思ってたイメージに近づけました。もう、これ以上はテクスチャ変えるか、二つのフィギュア結合するかです。あ、そうだ。ロボットフィギュアと融合してやろうかしら。 関連する記事 GIMP 水滴スクリプト 魔王に水滴重ねてみました。
posted by at 2014-07-28 01:17 | Comment(0) | DAZ3D DAZStudio イラスト 2014 | このブログの読者になる | 更新情報をチェックする

昔描いた、次元と工藤(探偵物語)の絵




この間、『マツコ&有吉の怒り新党 新・3大〇〇調査会』で久々に松田優作を見て思い出しました。

当時、最初に次元を描いて、その日か次の日の夜中に探偵物語やってて、あらためて観察すると、帽子と服装はほぼ同じと言う事に気が付いて描いたもんです。




なんか、『次元大介の墓標』ってのを見つけた。今上映中らしい(【特別興行】一律¥1,300)。



posted by at 2014-07-28 00:35 | Comment(0) | 手書きブログ | このブログの読者になる | 更新情報をチェックする

2014年07月25日

Excel 横棒グラフの縦軸の表示順反転と、横軸の表示位置を上下反転



Excel のセルの左上を基準にするので、最初の項目が縦軸の一番下になります。ですが、この順序を逆にする事ができ、『軸を反転する』にチェックを入れます。但し、このままだと、横軸の表示も反転されて上へ移動するので、これを下に戻す為に、『横軸との交点』を『最大項目』にします





タグ:EXCEL グラフ
posted by at 2014-07-25 17:36 | Comment(0) | Microsoft Office | このブログの読者になる | 更新情報をチェックする

Ruby(mechanize) で PHP からの JSON 経由で値を取得

以下は、MySQL にアクセスして json_encode で連想配列を JSON に変換して text/plain で返しています。

json.php(MySQLにアクセスして JSONを返す)
<?php
header( "Content-Type: text/plain; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

$server = 'localhost';
$db_name = 'lightbox';
$user = 'root';
$password = 'パスワード';

// 接続
$connect = @ new mysqli($server, $user, $password, $db_name);
if ($connect->connect_error) {
	die('Connect Error (' . $connect->connect_errno . ') '
	. $connect->connect_error);
}

// クエリ
$result = $connect->query("select * from 社員マスタ where 社員コード = '0001'"); 
if ( !$result ) {
	die('クエリーに誤りがあります : ' . $connect->error );
}

// 読み出し
$row = $result->fetch_array(MYSQLI_BOTH);

// 開放
$result->close();

// 接続解除
$connect->close();

print json_encode($row);

?>

MYSQLI_BOTH で行データを読み込んでいるので、結果には 数字をキーとした配列と 文字をキーとした配列が混在しています。

Ruby で パースした場合、JSON 文字列なので、数字のキーは文字列扱いになるので、Ruby でループ処理する場合は、to_s が必要です。

force_encoding("utf-8") は、mechanize で返される文字列が、バイナリなので Ruby に対して文字コードを理解させる必要があります。これは、文字列自体には変更は起こらず、Ruby 内で問題が解決されるようにする処理です。

ここでは、実際の日本語コードは使用されていませんが、一般的に mechanize で返されるページは日本語が含まれたバイナリデータです。ページが UTF-8 ならば、force_encoding("utf-8") を実行します。

※ json_encode で、JSON_UNESCAPED_UNICODE を使うと、日本語が含まれます
json_get.rb
#JSON 経由でデータベースの値を取得

require 'mechanize'

agent = Mechanize.new

agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'

page = agent.get("http://localhost/web/various/db_json/json.php")
obj = JSON.parse((page.body).force_encoding("utf-8"))

i = 0
while i < obj.length / 2
	print obj[i.to_s], "\n"
	i += 1
end

print obj["社員コード"],"\n"
print obj["氏名"],"\n"
print obj["フリガナ"],"\n"
print obj["所属"],"\n"
print obj["性別"],"\n"
print obj["作成日"],"\n"
print obj["更新日"],"\n"
print obj["給与"],"\n"
print obj["手当"],"\n"
print obj["管理者"],"\n"
print obj["生年月日"],"\n"




posted by at 2014-07-25 13:01 | Comment(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2014年07月24日

Ruby(mechanize) でバイナリファイルをアップロード

WEB 側で、php を使用して、Ruby(mechanize) からは put メソッドを実行します
#バイナリ PUT

require 'mechanize'

agent = Mechanize.new

agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'

st = File.stat("winofsql.png")

page = agent.put("http://winofsql.jp/put/put.php",File.open("winofsql.png").read(st.size), {"Content-Length" => "#{st.size}" })
print page.body

# コンソールに日本語を表示したい場合は、以下のように記述します
# print (page.body).force_encoding("utf-8")

関連する記事

VBscript(または JScript) で簡単にバイナリファイルをアップロードする

PHP のコードは以下のようになっています
<?
session_start();
$id = session_id();


$fp = fopen( "php://input", "r" );
$wfp = fopen( "image/$id.png", "w" );

while( $ret = fread( $fp, 4096 ) ) {

	fwrite( $wfp, $ret );

}

fclose($wfp);
fclose($fp);


print $id . ".png\n";
?>
で画像が保存されました
PHP 側は、utf-8n ですが、コマンドプロンプトは shift_jis なので、以下のようにして実行します

ruby upload.rb > result

そうすると、result は、UTF-8N になるので、エディタで正しく結果を知る事ができます


関連する記事


タグ:ruby
posted by at 2014-07-24 22:40 | Comment(0) | Ruby | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX