ファンタジー的に言うと、人間は骨格に肉が絡みついた不確かな存在ですが、その点人形は確実にそこに存在する形だったりするんですよね。長い年月を経ると、そこになんらかの意思が棲みついて外部に影響を与え始めるというか。このセカイでは、人間ってしょーもないですね。
この絵を描いたのが2009年。もう4年以上経ってるというか、視点を変えると当時から5つ年とってる勘定。5年もいったい何してたんだろう・・・と思い返しても仕方無いので、5年後はどうなってるのだろう・・・
と考えてなんか泣きそうになって来た。
|
2014年07月31日
手書きブログ : 人形
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 : リモートのファイルサイズを取得する
手書きブログ : 魔人
もう、手書きブログでは全く描いて無いですが、資産としての絵は相当あります。なんで時々掘り出して GIMP でちょっと手を加えたりしてます。
2014年07月28日
DAZ3D : 魔王
SubSurface チューニングしまくって、思ってたイメージに近づけました。もう、これ以上はテクスチャ変えるか、二つのフィギュア結合するかです。あ、そうだ。ロボットフィギュアと融合してやろうかしら。 関連する記事 GIMP 水滴スクリプト 魔王に水滴重ねてみました。![]()

2014年07月25日
Excel 横棒グラフの縦軸の表示順反転と、横軸の表示位置を上下反転
Excel のセルの左上を基準にするので、最初の項目が縦軸の一番下になります。ですが、この順序を逆にする事ができ、『軸を反転する』にチェックを入れます。但し、このままだと、横軸の表示も反転されて上へ移動するので、これを下に戻す為に、『横軸との交点』を『最大項目』にします
![]()
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"
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
2014年07月20日
GIMP FX-Foundry : ロモ風スクリプト
ロモ風と言っても、解らない人にはピンと来ないです(自分もそうです)が、カメラの事で、それで撮るとノスタルジックで印象的になるそうです。 実際画像に対して行ってみると解りますが、茶系統の色を付加して、画像を濃くしてから中央に白をオーバーレイして明るくしています。 LOMO 前
LOMO 後
結構簡単にいい雰囲気になるのは解りますが、実際はもっといくつかレイヤーを加えて加工していくといいと思います。
以下は、一発でいい感じになった例です。 LOMO 前
LOMO 後
※ Bercovich Lomo... の情報 関連する記事 GIMP FX Foundry release for GIMP 2.6
タグ:GIMP
GIMP FX Foundry release for GIMP 2.6
GIMP FX Foundry 3年ぶりに見に行ったんですが、特に変わってはいませんでした。でも、GIMP のほうがとても安定している今日このごろ、あらためていろいろ使えるかどうか試していきたいと思います。 ( GIMP を使うなら、GIMP ポータブル ) インストール タウンロードして解凍したフォルダを GIMP に登録します。解凍されたフォルダをここでは、『C:\GIMPPortable\gimpfx』とします。
1) 設定用のダイアログを表示 2) 設定用のダイアログ 3) フォルダを選択 4) スクリプトを選択 5) 新規登録ボタン 6) フォルダ参照 7) 登録完了登録後は、以下の場所から、スクリプトを再読み込みさせますメニューに登録されます
という事でまず水滴効果。 ( 水滴に関しては、改造したのがこちらにあります ) そのままでは使え無いですが、後から画像をロードして使いました。
新規画像作成
水滴スクリプト
パラメータ設定 Water drops Amount で水滴量が変わりますが、標準でたいてい OK他はあまり変えないほうがいいかもしれません( 試すのに時間かかるので )
初期状態
なんか、こんなふうになるのでいらないレイヤーを非表示にして、一番下を選択。
後は、画像表示部分に水滴効果を付けたい画像をドラッグ&ドロップ
![]()
タグ:GIMP
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。 Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。 また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。 ※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです 対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。※ エキスパートモードで表示しています アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります
<% if:page_name eq 'archive' -%> アーカイブページでのみ表示される内容 <% /if %> <% if:page_name eq 'category' -%> カテゴリページでのみ表示される内容 <% /if %> <% if:page_name eq 'tag' -%> タグページでのみ表示される内容 <% /if %>この記述は、以下の場所で使用します![]()
|