カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2017年08月29日(火)

javascript で jpeg アニメーション

もうそろそろ、Flash コンテンツとは
おさらばしといた方がよさそうですね。

私のホームページでは、ミルノ PC フォトフレーム とかで
使用しているアニメーションが Flash (swf) なので、
javascript で実行可能な形式に書き替えました。
(ローカルでの話。まだ、公開してません)

javascript がオフの場合は、先頭フレームが正常に表示できること。
できれば、img タグを使用したいってな要件で作りました。

ココ とかでも使われているように、
動画はフレームを横方向に連結した
普通の画像をスクロールさせることで実現すれば OK ですね。

ちなみに、画像を横方向に連結する方法はこちら に書いてあります。

で、最初のフレームだけを表示するには、
画像を html でトリミングすることで実現できます。

調べてみると、css の object-fit プロパティを使うと
img タグのみでできそうなのでよさそうですが、
IE とかが対応していないみたいなので却下です。

あんまり美しくないですが、img を 親要素で
トリミングする方法を採用しました。

やり方はここ にありますね。

で、あとは、img の位置 (left) を javascript の
タイマー処理で左方向にずらしていけば OK です。

とりあえず、img タグの onload プロパティで javascript
オジェクトのインタンスを作成して実行してみましたが、
このサイトで HTML を検証 してみると、
there is no attribute "ONLOAD"
っていわれるから、あんまよくないのかも。

・・・

IE でも chrome でもちゃんと動くけど、どしよっかな。

ブログ著者のホームページはこちら です。


2017年08月28日(月)

コマンドラインで画像を連結する方法、ImageMagick

ImageMagick というツールを使うと
コマンドラインで、画像を加工できます。

使用したバージョンは、ImageMagick-7.0.5-Q16 です。

典型的な使い方としては、C:¥Program Files¥ImageMagick-7.0.5-Q16
にパスを通して、コマンドウィンドウからコマンドを発行します。

で、画像を連結するためのコマンドの使い方は、

magick.exe *.png -append tate.png

で縦連結。

magick.exe *.png +append yoko.png

で横連結です。

append オプション引数を入力画像リストと
出力画像リストとの間に挟む必要があるようです。

ちなみに、append オプションを最初の引数として
実行すると下記のようなエラーが発生しました。

magick: no images found for operation `+append' at CLI arg 1 @ error/operation.c/CLIOption/5246.
magick: no image to apply a property "%w" @ warning/property.c/GetMagickPropertyLetter/2561.
magick: unknown image property "%w" @ warning/property.c/InterpretImageProperties/3499.
magick: no image to apply a property "%h" @ warning/property.c/GetMagickPropertyLetter/2449.
magick: unknown image property "%h" @ warning/property.c/InterpretImageProperties/3499.
magick: no image to apply a property "%m" @ warning/property.c/GetMagickPropertyLetter/2480.
magick: unknown image property "%m" @ warning/property.c/InterpretImageProperties/3499.

謎のエラーですね。

あ、上記コマンドを繰り返して実行すると *.png
に出力画像 (tate.png とか yoko.png) が
マッチしちゃうので、注意してください。

ブログ著者のホームページはこちら です。


2017年08月17日(木)

phpseclib、RSA の sign、verify の使い方

今日も、こつこつコーディングしてたのですが、
特に、書くことも無いので、php のサンプルでも。

phpseclib で、sign、verify するときの注意点。

RSA で、電子署名するときには、秘密鍵、
署名が正しいか検証するときには公開鍵を使います。

とはいえ、秘密鍵には、公開鍵の情報も含まれているので、
秘密鍵で署名し、秘密鍵で検証することもできそうですが、
phpseclib では失敗するようです。

<?php
require '../lib/vendor/autoload.php';
use phpseclib¥Crypt¥RSA;

$rsa = new RSA();
extract($rsa->createKey());

$data = 'abc';

$sk = new RSA();
$sk->loadKey($privatekey);
$sign = $sk->sign($data);

echo 'verify by same: ';
echo $sk->verify($data, $sign) ? 'verified' : 'not verified';
echo '<br>' . "¥n";

$pk = new RSA();
$pk->loadKey($publickey);

echo 'verify by public: ';
echo $pk->verify($data, $sign) ? 'verified' : 'not verified';
echo '<br>' . "¥n";
?>

ちょっち、面倒だけど、
そういう仕様もありかな。

ご意見・ご要望連絡窓口


2017年08月04日(金)

Composer で、phpseclib をインストールするには?

最新版の phpseclib をインストールするには、
Composer とかいうやつを使うのが標準っぽいので
それで、インストールしてみました。

で、 コンポーザーの使い方はココ にあるのですが、
色々、表現が足りてないので補足します。

まず、最初の方にあるように、Composer は
プロジェクト毎に、ライブラリーを管理します。

例えば、あるプロジェクトと別のプロジェクトで
同じバージョンの phplibsec を利用する場合は、
2 個所に同じファイルをダウンロードすることになります。

ディスク容量は無駄になりますが、プロジェクト
ごとに、利用するバージョンが異なる場合に
対応するためでしょうね。

まぁ、シンプルでいい仕様だと思います。

Composer のインストール

Windows では、ココ にリンクがある Composer-Setup.exe
を実行すればインストールできます。

最初に、忘れたけど as developer みたいな
チェックボックスがでますが、ディフォルトで
オフみたいなので、そのままで行きました。

たぶん、Composer の開発をする人用の
チェックボックスだと思います。

次に、php.exe のパスを聞かれるので入れます。
自分の場合は、xampp でインストールされたやつ
を指定しましたが、何の問題も無さそうです。

インストールが終わったら、環境変数が更新されるので、
ログオフ / ログイン などして反映させます。

で、Composer がインストールされたかチェックするには、
コマンドプロンプトから、composer とか、
composer -V とか打ってみればわかります。

Composer で、phpseclib をインストール

最初に書いたように、Composer は
プロジェクト毎にライブラリーをインストールします。

具体的には、インストールしたいフォルダーに、
composer.json ファイルを作成します。

composer.json は、普通のテキストファイルで
phpseclib をインストールするには、↓ のような内容にします。

{
    "require": {
        "phpseclib/phpseclib": "2.0.*"
    }
}

あとは、composer.json のあるフォルダーから、
コマンドプロンプトで、composer install すれば OK です。

ちなみに、エクスプローラーで json のあるフォルダを
開いて、Shift を押しながら、右クリックすると、
「コマンドウィンドウをここで開く(W)」
メニューコマンドが表示される場合は、
それを使うと簡単ですよ。

現在のバージョンでは、json のフォルダーの下に
vendor¥phpseclib¥phpseclib¥phpseclib¥Crypt¥RSA.php
がインストールされました。(RSA は例です)

phpseclib を使う

json の下にできた vendor フォルダーにある
autoload.php を require すれば使用できます。

require '/vendor/autoload.php';

↑ こんな感じですね。

RSA クラスを使うには続けて、

use phpseclib¥Crypt¥RSA;

すると便利でしょう。

Composer の実体は、

"C:¥ProgramData¥ComposerSetup¥bin¥composer.bat"
にありました。バッチファイルですね。

中身は、php "%~dp0composer.phar" %* みたいな感じです。

なので、composer ... は
php composer.phar ... みたいに
展開されて実行されるわけですな。

phar は php のプログラムをまとめたものなので、
composer の実体は、composer.phar となります。

ご意見・ご要望連絡窓口


2017年08月01日(火)

PayPal IPN のコーディング終了

一応、PayPal 即時支払い通知(IPN) 用の
php コーディングが終わりました。

最後にテーブルの構造を見直したり、
コードを適切な場所に再配置したり、
関数名に一貫性をもたしたりしたのですが
ローカルウェブサーバーによる
開発の効率化がきいたおかげで、
すみやかに終了したような気がします。

やっぱり開発サイクルを可能なかぎり短かくすると
モチベーションが維持しやすくなっていいですね。

ご意見・ご要望連絡窓口


2017年07月31日(月)

PayPal IPN の開発効率を改善

先日から、PayPal 即時支払い通知(IPN) 用の
php コードを書いているのですが、
いちいち PayPal Sandbox で購入してみて
結果をメールで確認とかしてると
効率が悪すぎるので、改善することにしました。

改善のポイントは 2 つ。

1 つは、php を更新するたびに、
サーバーにアップする作業を
スキップするために、ローカルに
ウェブサーバーを立ち上げます。

2 つめは、いちいち Sandbox で
購入してみるのは大変なので、
Sandbox で購入したかのような
post データーを php に与えることで
シミュレートしちゃいます。

とはいえ、ローカルの php を
PayPal sandbox の IPN として
指定するのは無理なので、1 つめの
ポイントを達成するのにも必要な作業ですね。

PayPal Sandbox から IPN を呼びだしてもらう
場合、php の出力を見ることができないので、
メールで結果を送信して確認していましたが、
普通の html フォームから IPN を呼び出せば、
画面出力で結果を確認できるようにもなります。

2 つめのポイントの方が説明は
長かったですが、実装は、簡単です。

普通に、IPN に送られてくるデーターを
ポストする html フォームを書くだけです。

この場合、Sandbox にポストデーターを送って
verify することはできないのでスキップしますが、
もちろん、デバッグが終わったらスキップを
やめないと、まずいので注意が必要ですね。

PayPal sandbox から送られてきた ポストデーターの名前と値の組から
html を作成するには、HTML 自動生成するノ を使用しましたが、
手作業で変換しても、それほど大変ではないでしょう。

1 つめのポイントである、
ローカルにウェブサーバーを立ち上げる作業は
なんだかんだで、必ずはまるので
あんまりやりたくはなかったのですが、
やっぱり今回もはまりました。残念。

とりあえず、インストールは、前に使ったことのある
XAMPP てのを使いました。XAMPP は、Apache、PHP、MySQL
をセットでインストールできるパッケージだったのですが、
現在は、MySQL のかわりに、MariaDB がインストールされるみたいです。

Web で調べてみると、MariaDB は MySQL の派生で
今のところはかなりの互換性があるみたいなので、
とりあえずは気にせず使ってみることにしました。

httpd.conf の変更

ドキュメントルートの書き替え。 DocumentRoot とかその下にあった、 <Directory> のパスを変更しました。

php.ini の変更

結論だけかきますが、Mercury での メール送信はうまくいかなかったので、 xamppのfake sendmailを使ってローカル開発環境からメールを送信する
を参考に、Fake Sendmail を設定しました。

my.ini の変更

my.iniファイルの確認と修正 を参考に、sql の文字コードを utf-8 に変更。

よくわかりませんが、コメントアウトされていた
init-connect=¥'SET NAMES utf8¥'
を生かすと、phpmyadmin でエラーが発生します。

また、データーベースのユーザーを作成して
ログインした場合も、MySQL server has gone away
のエラーが発生するように。← ここではまる。

¥ をはずさないといけないようです。しまった!

でもなー。そのエラーメッセージは不親切だよー。
全然、わからんかったわ。

ご意見・ご要望連絡窓口


2017年07月28日(金)

Excel の表を SQL の CREATE TABLE 文に変換

今日は、エクセルの表を
SQL の CREATE TABLE 文に変換して、
データーベースの表を作成しました。

変換には、 HTML 自動生成するノ を使いました。

基本的には HTML 出力用なのですが、
エクセルの表を簡単なテキスト形式に
変換することもできます。

エクセルの表を CREATE TABLE 文に
変換するには、以下のような
目次用HTMLテンプレートファイルを用意します。

-------------------------------------------------------------------------------
CREATE TABLE 【名前】 (

-------------------------------------------------------------------------------
  【名前】 【型】 【オプション】〔|名前==update_date||,〕

-------------------------------------------------------------------------------
);

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

1 行目 (----たくさん) は区切り記号として使われます。

2 行目が最初に 1 回だけ出力される部分です。
5 行目はデーターの分だけ繰り返し出力されます。
8 行目は最後に 1 回だけ出力される部分です。

3, 6, 9 行目は空行です。2, 5, 8 行のデータの後に
改行コードを出力したい場合に必要になります。

エクセルの 1 行目では、展開に使う変数名を定義します。
「名前」「型」「オプション」列を用意すれば OK です。

自動生成するノの「最初のデータを目次用に使う」
をチェックすることで、エクセルの 2 行目のデーターを
目次用テンプレートのデーターとして使えます。

今回の例では、CREATE TABLE の後の【名前】は
エクセル 2 行目の「名前」列の値が展開されます。

エクセルの 3 行目以降のデーターは、
繰り返し出力される部分に使用されます。

今回のテンプレートでは、
【名前】 【型】 【オプション】〔|名前==update_date||,〕
の部分です。

〔〕 は if 文で、名前が update_time じゃなかったら、
, を出力するという意味になっています。

今回用意したテーブルでは、必ず最後に
update_date カラムを用意することにしたので、
最後の行かどうかの判定に利用しています。

保存先のファイル名では、
1 番目の項目 + 追加の文字列: .sql
みたいな感じにします。

1 番目の項目が「名前」の場合は、
テーブル名.sql みたいなファイル名になって都合がいいでしょう。

お試しは、 HTML 自動生成するノ ダウンロード からどうぞ。

・・・

なんとなく難しそうですが、
慣れれば簡単ですよ~。

HTML 自動生成するノ
HTML 自動生成するノ ダウンロード
HTML 自動生成するノ 更新情報
ご意見・ご要望など


2017年07月27日(木)

PayPal 購読ボタンには消費税を適用できない

先日から、Paypal Sandbox 上でいろいろとテスト中ですが
今日は、次のようなことが、わかりました。

「購読」タイプの PayPal ボタンには
「個人設定に保存されている値」
による消費税が適用できないということです。

少なくとも、PayPal のマイアカウントページから、
個人設定 > 販売ツール > PayPal ボタン
とたどっていって作成する方法では無理なようです。

根拠としては、他のボタンの種類で表示される
「PayPal個人設定に保存されている値を使用します。」
のオプションが「購読」タイプでは消えるからです。

他のボタンの種類を試してから「購読」ボタンを
試していれば、すぐに気づいたと思いますが、最初、
「購読」ボタンだけをテストしていたのではまってしまいました。

このページ にあるように「購読」では、
最初の契約金額を勝手に変更できないようにするため
消費税の設定変更で金額が変わる機能も
使えないようになっていると思われます。

「PayPal個人設定に保存されている値」を使えると
消費税が変わったときに便利だし、海外からは
消費税なしで買えるのでいいと思ったんですが、残念。

となると、日本向けの消費税「あり」のボタンと
海外向けに「なし」バージョンのボタンを設けると
難しくなっちゃうから、同じ価格で、海外からの購入の場合は
消費税分、もともと高いことにするしかないかなぁ。

・・・

まだまだ、Web 上の PayPal 情報は足りてない気がする。

ご意見・ご要望連絡窓口


2017年07月25日(火)

lolipop レンタルサーバーのプランをエコノミーからライトに変更しました

今日は、lolipop レンタルサーバーのプランを
エコノミーからライトに変更しました。

https (ssl) を使いたくなったからです。

転送量とかアップロード容量なんかは
エコノミーで全然問題無かったですね。

プラン変更にかかる費用

は、普通に残り期間分の差額を払えば OK
という理解で大丈夫だと思います。2017/7 現在。

エコノミーの契約期間があと 4 ヶ月残っていて
ライトとの差額が 150 円 なので
600 円+税 でプラン変更できました。

下位プランには変更できないので、
ちょっと慎重にならざるを得ません。

下位プランにすると、DB が利用できなくなったりするし、
いろいろ、面倒だから、しょうがないかな。

プラン変更の完了通知

は、メールで着ました。

完了前に、https のトップ URL を開いても、
index.html が表示されなかったので、??
でしたが、完了後は、問題なく表示されました。

完了通知がメールでくる旨
どっかに書いてあるのかな?

自分の場合は見つからなかったから、
完了がどこでわかるのか不明だったわ。

https での閲覧テスト

移行前に、絶対 URL で他のページを参照してるところは
相対 URL に変更したつもりだったのですが、1 つだけ
見落としていて、ウェブブラウザーに警告が表示されました。

情報を保護するために、安全でない接続経由で
送信されたコンテンツをブロックしました。
(Microsoft Edge の場合)

みたいなやつです。

google AdSense の javascript
src が http:// ではじまっていたので、
// に修正したら直りました。

まだ、テスト中で正式にアップロードしてませんが、
まぁ、それほど厄介な問題は起こらないっぽいですね。

・・・

よーし、これで DB と https が
使えるから、何でもできるぜw。

ご意見・ご要望連絡窓口


2017年07月24日(月)

ウェブページの文字コードをシフトJIS から utf-8 に変換

今日は、ウェブページの文字コードを
シフトJIS (shift_jis) から、UTF-8
に変換する作業をしました。

ローカルでの作業はだいたい終わりましたが、
ウェブページは、まだシフトJIS です。
(まだ、アップロードしてないので)

文字コードの変換

まずは、ファイルの文字コードを変換します。

NonSoft さんの、 文字コード判定&変換ツール.NET
を使ってみました。バージョン 1.0.1.0 ということは
あまり、アップデートしていないと思われますが、
今のところ、特に不具合は見つかっていないので、
かなり優秀な気がします。すばらしい。

とはいえ、自動判定は完全じゃないだろうから、
入力文字コードは「SJIS」にして使いました。

対象拡張子は「html,css,php,js」で実行です。
あらかじめ、バックアップはとってあるので、上書きしちゃいます。

もちろん、出力文字コードは、UTF8
BOM は無い方がいいみたいなので「無し」で実行。

特に問題なく終了しましたが、英語のページは
もともと utf-8 だったので文字化けしました。
(正確には英語出力用のテンプレートHTMLで日本語あり)

ま、当然です。英語用の HTML はバックアップを
利用して、元に戻しました。

文字コードの指定を変更する

HTML には、
content="text/html;charset=shift_jis"
みたいな感じで文字コードを指定するところがあるので
content="text/html;charset=utf-8"
に変換です。

INASOFT さんの、複数行置換 を使ってみました。
これも、今のところ問題なく使えているので、優秀です。

置換内容は、コンテンツによるので何ともいえませんが、
自分の場合は、shift_jis とか Shift_JIS みたいな文字列を
utf-8 に一括変換でだいたいうまくいきました。

とはいえ、あてずっぽうに変換するわけにもいかないので、
まずは、どう変換されるかを予想してから一括変換しました。

複数行置換には、置換結果を予想する機能は無いので、
HNXgrep というツールで shift_jis を検索、結果を予想しました。
これも、なかなか優秀なうえに、多機能です。

HTML 自動生成するノの設定ファイルを書き替え

HTML 自動生成するノ のテンプレート HTML を
シフト JIS から、utf-8 に変換したので、
生成するノの設定ファイルを書き替えます。

まぁ、普通に画面で、文字コードを
「日本語 (シフトJIS)」から「utf-8」
に変更すればいいのですが、たくさんあって面倒
だったので、設定ファイルを一括変換しました。

自動生成するノの設定ファイル (拡張子 htg)
は、utf-8 BOM 無しの普通のテキストファイルなので、
複数行置換 で置換できちゃいます。

具体的には、
<TemplateCodePage>932</TemplateCodePage>

<IndexTemplateCodePage>932</IndexTemplateCodePage>
を、それぞれ
<TemplateCodePage>65001</TemplateCodePage>

<IndexTemplateCodePage>65001</IndexTemplateCodePage>
に変換すれば OK です。

<DataCodePage> はデータ用の文字コードで、
私は xls ファイルを使っているので、 932 のままで OK です。

最後に、HTML 自動生成するノ
で HTML を生成しなおして終わりです。

・・・

ふぅ。一件落着。

ご意見・ご要望連絡窓口


<< | 5/16PAGES | >>