日曜日, 1月 17, 2016
Arduino: リレー回路を組む
今週リレーが届きました。Arduino ではリレー単体で動かすことはできないので、トランジスタを使って回路を組む必要があります。週末まで放置してあったわけですが今日組んでみました。
モジュールもいいですが、リレー単体だと安くまとめ買いできます。トランジスタひとつで動くわけなので、やる気があればモジュールでなくても動きます。逆流防止のためのダイオードと抵抗を使います。
作ったモジュールはこれ。
作ってみて便利だと思ったのはこのデュポン・ジャンパー線。短く切って端子をカシメると便利です。
クリップをつけることもできます。
あと、部品の足がブレッドボードのピッチと合わない場合があります。こんなときはユニバーサル基板を切ってピンヘッドをつけるといいです。しっかり固定することができます。
月曜日, 1月 11, 2016
Arduino: 距離センサーを使ってみる
超音波距離センサモジュールが届きました。さっそく使ってみます。Arduino の出番です。
モジュールとなっているこのセンサーはトリガー・ピンへパルス信号を送り、反射して帰ってくる超音波をエコーから取得します。
取得した値から距離を計算します。
計算してみるとなかなか正確な距離が出ています。
ここでは近づくとブザーで警告するよう設定してみました。
モジュールとなっているこのセンサーはトリガー・ピンへパルス信号を送り、反射して帰ってくる超音波をエコーから取得します。
取得した値から距離を計算します。
計算してみるとなかなか正確な距離が出ています。
ここでは近づくとブザーで警告するよう設定してみました。
日曜日, 1月 10, 2016
Arduino: 赤外線リモコンでランプを点灯する
リレーを使った Arduino タイマー回路はちゃんと動いてくれました。使える回路ってのはいいですね。動機とか目的とかいうものがあって使うたびうれしいものです。
このたび赤外線センサーを使って遠隔操作できるよう組み直してみました。なかなか便利です。
リモコンはカメラのものを転用しました。まず、コードを取得します。 IRremote というライブラリで信号を解析します。
このライブラリが曲者で、zip ファイルを登録するわけなのですが、もとある RobotIRremote なるライブラリとぶつかるらしく、そのままではコンパイルできません。
こいつはデフォルトのライブラリなので、Program Files (x86) 下の Arduino フォルダの RobotIRremote を取り除く必要があります。もしライブラリをインストールしてしまっていれば、Arduino ドキュメントフォルダ下のローカル・ライブラリの Arduino-IRremote-master を削除し、IDE を再起動です。
ここでライブラリを再インストールすると動きます。サンプルコードの IRecvDump など使い、リモートの信号を解析し、コードを取得します。
コードを取得すればあとは条件分岐でリレーを作動させます。
回路・プログラムが正しければ「カチッ」という音がして、ランプが点灯するはずです。100Vを扱うわけなので注意が必要です。あと、赤外線センサーの足の極性はそれぞれ異なるのできちんと調べる必要があります。
さっそくブレッドボード版 Arduino で組んでみました。
電源を組んで、Atmega328P を配置して、リレーモジュールを組んで、100V 電源から線をとってきて、赤外線センサーをつなぎます。
いつもの百均ケースでぴったりです。
![]() | |
極性があります |
このたび赤外線センサーを使って遠隔操作できるよう組み直してみました。なかなか便利です。
リモコンはカメラのものを転用しました。まず、コードを取得します。 IRremote というライブラリで信号を解析します。
このライブラリが曲者で、zip ファイルを登録するわけなのですが、もとある RobotIRremote なるライブラリとぶつかるらしく、そのままではコンパイルできません。
こいつはデフォルトのライブラリなので、Program Files (x86) 下の Arduino フォルダの RobotIRremote を取り除く必要があります。もしライブラリをインストールしてしまっていれば、Arduino ドキュメントフォルダ下のローカル・ライブラリの Arduino-IRremote-master を削除し、IDE を再起動です。
ここでライブラリを再インストールすると動きます。サンプルコードの IRecvDump など使い、リモートの信号を解析し、コードを取得します。
コードを取得すればあとは条件分岐でリレーを作動させます。
回路・プログラムが正しければ「カチッ」という音がして、ランプが点灯するはずです。100Vを扱うわけなので注意が必要です。あと、赤外線センサーの足の極性はそれぞれ異なるのできちんと調べる必要があります。
さっそくブレッドボード版 Arduino で組んでみました。
電源を組んで、Atmega328P を配置して、リレーモジュールを組んで、100V 電源から線をとってきて、赤外線センサーをつなぎます。
いつもの百均ケースでぴったりです。
土曜日, 1月 09, 2016
Arduino: 赤外線で動きを感知するセンサー PIR HC-SR501 を使ってみる
赤外線で動きを感知するセンサー PIR というものがあります。手を振るとスイッチがはいるやつですね。赤外線の変化を察知して FET で増幅するという部品です。その信号を増幅する回路が Arduino モジュールとなっています。
これ HC-SR501 届いたのはいいんですがなかなか動いてくれない。動かない回路っていうのはなんかものすごくショックなものです。気落ちするというかトーンが下がるというか。
![]() |
HC-SR501 ピン配置はカバーを外さないと見えません。 |
電源を通してアナログ出力を見てみると目の前で手を振ってみても値がぜんぜん変わらない。デジタル出力してみると HIGH となったまま、LEDがついたまま。
絶望の末しようがないのでネットをあたりました。フォーラムを見てみれば「これは動くはず」「難しくない」「壊れない」「丈夫」と書いてあったり(笑
これって安定するまで時間がかかるんですね。
つないでみて手を振って動かない、じゃあ回路を変えてみて手を振って動かない、なんてことを繰り返していくともう絶対動かない。安定化するまで数分待たねばなりません。
あとこれ可変抵抗がついていて、電圧が下がるまでの時間とか、感度とかいうのが調整できるわけでした。設定次第ですぐ ON となり電圧がなかなか下がらない。
このへんをクリアするときちんと動きました。アナログじゃなくてデジタル入力で組む必要があります。なかなかいいものです。手を振ると点灯してくれます。
あとあと考えてみると「動くはず」と信じてトライしたのがよかったわけですね。ネットでそう書いていなかったらあきらめてしまうところでした。
せっかく動いたので消すのが惜しくなりました。そこでチップを取り出してブレッドボード版 Arduino で動かしてみました。Arduino ならではの利点ですね。
この大きさだとこのあいだ見つけた百均のケースがぴったりです。
プラスチックケースは大きさを油性マーカーで印をつけて、ホットナイフを使うとスイスイと切れます。
電源ソケットをエポキシ樹脂で固めて、電源を供給してやると…
動きました。うまく収まってます。手を振ると点灯してくれます。なかなかいいものです。
火曜日, 1月 05, 2016
Arduino: ホール素子を使ってみる
今日ホール素子が届きました。
ホール素子ってのはホール効果を利用して磁場を感知するセンサーです。
iPad のケースとか、閉じると電源が切れてくれますよね。ケースのカバーの磁石の磁場をホール素子が感知してるわけです。
さっそくホール素子を使ってみよう!電圧の変化を調べてみよう!と思えば Arduino が大活躍です。ブレッドボードで回路を組んで、Arduino を USB ケーブルで接続してプログラムを転送すればいい。
Arduino がなかったら死蔵しちゃうんじゃないかと思ったわけでした。忙しいし。Arduino だとサンプル・プログラムがそのまま使えます。電圧を調べてみました。磁石を近づけると電圧が下がります。
あとはLEDを光らせてみました。動画でどうぞ。
あとはモジュール化するだけですね。
ユニバーサル基板の切れ端を使って Arduino 用ホール素子モジュールを作ってみました。
モジュールだと回路や規格など調べ直す必要がありません。
その分、使ってみようという敷居が低くなります。
ホール素子ってのはホール効果を利用して磁場を感知するセンサーです。
iPad のケースとか、閉じると電源が切れてくれますよね。ケースのカバーの磁石の磁場をホール素子が感知してるわけです。
さっそくホール素子を使ってみよう!電圧の変化を調べてみよう!と思えば Arduino が大活躍です。ブレッドボードで回路を組んで、Arduino を USB ケーブルで接続してプログラムを転送すればいい。
Arduino がなかったら死蔵しちゃうんじゃないかと思ったわけでした。忙しいし。Arduino だとサンプル・プログラムがそのまま使えます。電圧を調べてみました。磁石を近づけると電圧が下がります。
あとはLEDを光らせてみました。動画でどうぞ。
あとはモジュール化するだけですね。
ユニバーサル基板の切れ端を使って Arduino 用ホール素子モジュールを作ってみました。
モジュールだと回路や規格など調べ直す必要がありません。
その分、使ってみようという敷居が低くなります。
月曜日, 1月 04, 2016
PowerBuilder 12.6: 関数を削除・コピー・リネーム
PowerBuilder での関数・イベントの扱いってのが微妙です。
一覧で出てくるのはいいんですが、右クリックで編集とプロパティしか出てこない。
プロパティでいじれるのかと思えばこれが書き込み不可。
こういう常識を軽く裏切ってくれる世界が展開してますが、関数やイベントを削除、コピー、リネームの機能はタブを切り替えないと出てきません。
このタブってのはウインドウの下のスタブをクリックすると出てきます。
ここで出てくるリストでは右クリック・メニューで関数の削除やコピーが可能です。ただし、リネームは別名でコピーする必要あり。
一覧で出てくるのはいいんですが、右クリックで編集とプロパティしか出てこない。
プロパティでいじれるのかと思えばこれが書き込み不可。
こういう常識を軽く裏切ってくれる世界が展開してますが、関数やイベントを削除、コピー、リネームの機能はタブを切り替えないと出てきません。
このタブってのはウインドウの下のスタブをクリックすると出てきます。
ここで出てくるリストでは右クリック・メニューで関数の削除やコピーが可能です。ただし、リネームは別名でコピーする必要あり。
土曜日, 1月 02, 2016
Arduino のための「電子サイコロ・モジュール」
モジュール化ってのは大事ですよね。構造化・抽象化することが大事なわけです。
でもハードウエアでモジュールってのはよっぽどの構想がないとあり得ないです。PCとか。
Arduino はその点でも優れています。センサーからディスプレイまでさまざまなモジュールが利用できます。
休みを利用して、くだんの Arduino 版・電子サイコロをユニバーサル基板で作り直して「モジュール化」してみました。LEDでさいころの目を表現します。
部品はいたってシンプルなものです。
Arduino とはデュポン・ジャンパ・ワイヤで接続します。
回路は同じです。プログラムのほうは、リセットボタンを押すと一定時間サイコロを回し、停止するよう改良を加えておきました。
ちょっと裏側はお見せしたくない悲惨な光景が繰り広げられてますが、この電子サイコロ、きちんと動きます。
Arduino のための「電子サイコロ・モジュール」が完成です。
百均ケースでまとめてみました。
割り込みスイッチをつけてあります。押すとさいころが回ってくれます。 時間がたつと消えてくれます。
でもハードウエアでモジュールってのはよっぽどの構想がないとあり得ないです。PCとか。
Arduino はその点でも優れています。センサーからディスプレイまでさまざまなモジュールが利用できます。
休みを利用して、くだんの Arduino 版・電子サイコロをユニバーサル基板で作り直して「モジュール化」してみました。LEDでさいころの目を表現します。
部品はいたってシンプルなものです。
Arduino とはデュポン・ジャンパ・ワイヤで接続します。
回路は同じです。プログラムのほうは、リセットボタンを押すと一定時間サイコロを回し、停止するよう改良を加えておきました。
ちょっと裏側はお見せしたくない悲惨な光景が繰り広げられてますが、この電子サイコロ、きちんと動きます。
Arduino のための「電子サイコロ・モジュール」が完成です。
百均ケースでまとめてみました。
割り込みスイッチをつけてあります。押すとさいころが回ってくれます。 時間がたつと消えてくれます。
金曜日, 1月 01, 2016
Arduino: デュポン・ジャンパ・ワイヤ
みそかの大掃除で部品など整理して在庫表など作って新年を迎えました。たくさんの部品をながめて、ほくほくしながら年を越すってのもオツなもんです。
ジャンパ線など整理していると、先端の壊れたのとかがあるわけですね。
このジャンパ線ってのが直せるってご存知でしょうか。
デュポン・ジャンパ・ワイヤというのがあって、この先端部分が自作できます。
金属部分のコネクタ、プラスチック部分のハウジングがあればいいわけです。
http://www.ebay.com/
はんだ付けは必要ないです。 はんだ付けするといいというサイトもあるようですが、ここではそのままで使っています。挟み込んでペンチで締め付ければいい。ハウジングをつければそれで元通りです。
再利用可能ってのはいいですよね。このハウジングが角ばってるのも並べたとき使いやすくていいです。
デュポン・ジャンパ・ワイヤ
http://www.ebay.com/
そこかしこつけまくっておくとかなり便利ですよー
時間が経つと鳴るブザーがこれで完成です。
ジャンパ線など整理していると、先端の壊れたのとかがあるわけですね。
このジャンパ線ってのが直せるってご存知でしょうか。
デュポン・ジャンパ・ワイヤというのがあって、この先端部分が自作できます。
金属部分のコネクタ、プラスチック部分のハウジングがあればいいわけです。
http://www.ebay.com/
再利用可能ってのはいいですよね。このハウジングが角ばってるのも並べたとき使いやすくていいです。
デュポン・ジャンパ・ワイヤ
http://www.ebay.com/
そこかしこつけまくっておくとかなり便利ですよー
時間が経つと鳴るブザーがこれで完成です。
水曜日, 12月 30, 2015
PowerBuilder 12.6: 要素をリネーム
PowerBuilder ってのはクセのあるソフトで、気をつけないと半日を潰してしまう「仕様」があります。バグだと思うんですが
なぜか要素をリネームできないんですよ。右クリックしてもリネームなるメニューがない。
リネームなんて「別名でコピーして元のを消せばいい」、と思うかもしれませんが、PowerBuilder だとこれしかない。別名でコピーするしか方法がないんですね。
Save といっても右クリック→Copy ... とするとその要素はもうあるよ、とエラーを出してきます。
ここは File メニューから Save as とするのが正解です。
これがですね、そのままじゃ出てこない。Window を開かないとダメなわけなんです。
この思いがけない癖ってのが PowerBuilder の特徴です。ってことで
ここで一言: PowerBuilder は不安定ですぐクラッシュします。どうにかしてほしいです
こんなときは Regenerate です。
なぜか要素をリネームできないんですよ。右クリックしてもリネームなるメニューがない。
リネームなんて「別名でコピーして元のを消せばいい」、と思うかもしれませんが、PowerBuilder だとこれしかない。別名でコピーするしか方法がないんですね。
Save といっても右クリック→Copy ... とするとその要素はもうあるよ、とエラーを出してきます。
ここは File メニューから Save as とするのが正解です。
これがですね、そのままじゃ出てこない。Window を開かないとダメなわけなんです。
この思いがけない癖ってのが PowerBuilder の特徴です。ってことで
ここで一言: PowerBuilder は不安定ですぐクラッシュします。どうにかしてほしいです
こんなときは Regenerate です。
自作ブレッドボード版 Arduino
作ってみました。自作ブレッドボード版 Arduino です。
Arduino UNO を使ってブートローダーを焼いたので、プログラムのアップロードは完了していたわけなんですが、内部クロック(8MHz)だとそのままで動かないので16MHzのクリスタルが届くまでお預けとなっておりました。
で、昨日届いたわけなのでさっそく動かしてみました。
まず5V電源をつくります。ここではLM317を使いました。こいつは可変型のレギュレーターで、抵抗値で電圧を変えることができます。
Atmega328P チップと電源をつなぎ、クリスタルをつないで、と
動きました。感動です。13ピンのLEDが点灯しています。電源とクリスタル、これだけで動くんですね。
電源モジュールです。
これで作ったプログラムを保存することができます。
Arduino UNO を使ってブートローダーを焼いたので、プログラムのアップロードは完了していたわけなんですが、内部クロック(8MHz)だとそのままで動かないので16MHzのクリスタルが届くまでお預けとなっておりました。
で、昨日届いたわけなのでさっそく動かしてみました。
まず5V電源をつくります。ここではLM317を使いました。こいつは可変型のレギュレーターで、抵抗値で電圧を変えることができます。
![]() |
基本これで動きますが |
![]() |
発振防止、逆流防止ダイオードなどつけるとこうなります |
Atmega328P チップと電源をつなぎ、クリスタルをつないで、と
動きました。感動です。13ピンのLEDが点灯しています。電源とクリスタル、これだけで動くんですね。
電源モジュールです。
これで作ったプログラムを保存することができます。
木曜日, 12月 24, 2015
Arduino: リレーを使って明かりを消す
Arduino ってのはよくできたシステムです。
Arduino がどれだけすばらしいかって「発想から実現へ」の直截さが違うわけです。
例えばですね、明かりを消したいとします。つけた明かりが消えてほしい。一定時間たったら消えてほしいと思ったとします。
どうするかっていうとまず100V電源をいじらないといけないので、リレーを使います。5V回路で100Vを操作すると壊れるのでリレーで隔離するわけです。
このリレーですが、一定以上の電流が必要となります。Arduino 出力端子そのままだと心もとないので、こういうときはたいていトランジスタなどを使って電流を操作します。信号を増幅するわけですね。
まあ面倒なわけです。トランジスタ回路を組むというだけでなんか「仕事から帰ってきてこれって」とかいう気分が襲ってくる。
でそこは Arduino の世界なわけです。これがホントよくできててリレー・モジュールなるものが売っている。しかもいい値段で売っている。
(これです→http://www.ebay.com)
早い話がこれをつなぐとそれだけで明かりが消せます。そのままつなげばいい。タイマーをプログラムし、信号線をつなぐだけです。
え、これだけ?これだけで動くんだ、という感動があったわけなんですが、これちょっと考えてみてください。このモジュールの利点です。部品が少ないってことは、つまりそれだけ安全だってことです。100V使うんですから安全第一です。
まあしっかり懐中電灯など用意して動かしてみたわけなんですが、大丈夫でした。リセットボタンなど押すと明かりがついて、一時間たつと消えてくれます。
*)整数型では上限を超えてしまうので時間は long 型である必要があります。
Arduino がどれだけすばらしいかって「発想から実現へ」の直截さが違うわけです。
例えばですね、明かりを消したいとします。つけた明かりが消えてほしい。一定時間たったら消えてほしいと思ったとします。
どうするかっていうとまず100V電源をいじらないといけないので、リレーを使います。5V回路で100Vを操作すると壊れるのでリレーで隔離するわけです。
このリレーですが、一定以上の電流が必要となります。Arduino 出力端子そのままだと心もとないので、こういうときはたいていトランジスタなどを使って電流を操作します。信号を増幅するわけですね。
まあ面倒なわけです。トランジスタ回路を組むというだけでなんか「仕事から帰ってきてこれって」とかいう気分が襲ってくる。
でそこは Arduino の世界なわけです。これがホントよくできててリレー・モジュールなるものが売っている。しかもいい値段で売っている。
(これです→http://www.ebay.com)
早い話がこれをつなぐとそれだけで明かりが消せます。そのままつなげばいい。タイマーをプログラムし、信号線をつなぐだけです。
まあしっかり懐中電灯など用意して動かしてみたわけなんですが、大丈夫でした。リセットボタンなど押すと明かりがついて、一時間たつと消えてくれます。
*)整数型では上限を超えてしまうので時間は long 型である必要があります。
土曜日, 12月 12, 2015
Arduino Uno を使ってブートローダーを焼く
Arduino を使うと書いたプログラムで外部装置を動かすことができます。いくらJava/C++/Android でプログラムを書いても所詮ソフトウエアってだけです。家電、LED やセンサーを動かすことはできないですよね。Arduinoなら可能です。USBでつないで外部装置をつなぎ、アップロードすると動きます。このスムーズな流れが「よく考えられたシステム」であるArduinoの特徴です。
このArduino、つないで動くというだけではありません。使える装置を作る方向へ発展させることができます。プログラムの書き込まれたCPUを取り出して使えばいい。
本家Arduino のボードのCPUは取り換えがききます。取り出せばそのまま同じ回路を独立して使うことができます。素晴らしいと思います。
このCPUですが、Atmega328のチップを使っています。ebayなど覗くとこのチップがまとめていい値段で販売されています。ありがたいです。
http://www.ebay.com
これらのチップはブートローダーが書き込まれていない場合があります。自分で書き込む必要があるわけですね。書き込みができると安いチップが使えます。挑戦する価値ありますよね。
どうやって書き込むのか、ですが、ネットではブレッドボードで回路を組む、専用のシールドを作る、専用ライターを使うなどいう手間のかかる方法が語られています。
でもですね、Arduino Unoを使うと手間いらずです。手間いらずということはつまり成功率が高いということです。是非お勧めしたい方法です。
どうするかというと、プログラムしたいチップを載せたArduino UnoとArduino本体をつなぎます。
では焼き込みの手順です。まず ArduinoISPをアップロード。
![]() |
ArduinoISPをアップロード |
そしてArduino Uno をつなぎます。電源5VとGNDをそれぞれ接続し、ピン11, 12, 13をArduino本体と接続します。あとはピン10とリセットとつなぎます。
新しいAtmega328Pチップを載せて、Board, Port, Programmerを設定します。それぞれArduino UnoとUSBポート(ポート番号は環境で異なります)、Arduino as ISPを選択します。
![]() |
ボード Board の設定 |
![]() |
ポート Port の設定 |
![]() |
プログラマ Programmer の設定 |
そして Burn Bootloader を選択してブートローダーを焼きます。
![]() |
いよいよ書き込み |
この方法でなんの問題もなくブートローダーを焼き込むことができました。チップをとりかえてLチカとかアップロードすると動くわけですね。これでArduinoマシンを量産できます。なんだろうこの安心感は(笑
#Arduino 基板を使わない場合はクリスタルで外部からクロックを供給してやる必要があります。
写真は自作のAVR-ISP・シールドです。
土曜日, 12月 05, 2015
Arduinoの流行るわけ・電子サイコロ
電子サイコロというものを見たことがあるでしょうか。LED回路などでサイコロの目をつくり、電子回路で操作・表示するものです。
乱数を生成し、各LEDを点灯させるというのはもし回路を自分で組むとしたら面倒な話です。
こんな作業も Arduino があるときちんと組めます。乱数はライブラリを利用し、各LEDへの出力をプログラムで操作します。
Arduinoが外部インターフェースとして便利な件
フォトレジスタというセンサーがあります。明るさを探知します。でもこれをどうやって利用したらいいでしょうか。電源を与え、抵抗値を読み取る装置をどうやって作ったらよいでしょうか。

あとは読み取った値を利用して装置を動かすなどという作業をリレーなど通じてArduinoで行えばいい。
この一連の作業がUSB接続できるArduinoならスムーズかつ危険なく行うことができます。考えてもみてください。旧態然とした開発過程だと、マイコンチップを用意し特殊な装置でプログラムを焼き、電源装置を用意して動かすなどという手間が必要です。このハードルをArduinoがあると楽々と超えられるわけです。
金曜日, 11月 20, 2015
EPUB形式で電子本を作る
アドビ社の迫害をものともせずオープン規格EPUB電子本を作るとここで宣言。
mimetype
META-INF/
container.xml
OEBPS/
content.opf
toc.ncx
xhtml file
できた。が自前のJavaアプリで圧縮する必要があった。こんな感じです。
mimetype
META-INF/
container.xml
OEBPS/
content.opf
toc.ncx
xhtml file
できた。が自前のJavaアプリで圧縮する必要があった。こんな感じです。
木曜日, 10月 08, 2015
PowerBuilder 12.6, C#: データベースへの接続方法
PowerBuilder でデータベースへ接続する方法を示します。
DataObject が機能していることが前提です。
C# でいうと以下のようなコードとなります。
DataObject が機能していることが前提です。
C# でいうと以下のようなコードとなります。
月曜日, 10月 05, 2015
PowerBuilder 12.6: 画像ファイルを読み込む
PowerBuilder で画像ファイルを読み込む方法を示します。というか、そのままじゃだめなんですね。
PictureControl とかがあって、じゃあ置いておけばあとで そのまま読んでくれとかファイル名を渡す、そういう形式だと思っておりました。
C# だとかそうですよね。
ところが FileRead() だと 32KB しか読まないらしいわけです。手元の情報だとそれだけしかないんですが、どこか見てるところが間違えてるんでしょうか。
…
まあいいんですが、バッファが必要なら書くまでです。
こんな感じで書くと画像ファイルが読み込めます。blob で読み込んで渡してやれば表示してくれます。
PictureControl とかがあって、じゃあ置いておけばあとで そのまま読んでくれとかファイル名を渡す、そういう形式だと思っておりました。
C# だとかそうですよね。
ところが FileRead() だと 32KB しか読まないらしいわけです。手元の情報だとそれだけしかないんですが、どこか見てるところが間違えてるんでしょうか。
…
まあいいんですが、バッファが必要なら書くまでです。
こんな感じで書くと画像ファイルが読み込めます。blob で読み込んで渡してやれば表示してくれます。
PowerBuilder 12.6: UTF-8 ファイルを読み込む
ひょんなことで PowerBuilder プロジェクトの案件を扱うこととなりました。ので、関連情報など載せていきたいと思います。
まずは IDE など勝手が違うので、多少の忍耐が必要です。
日本語のファイルを扱うのでまずはまってしまったので、まずはファイルの読み書きから書いていきたいと思います。
UTF-8 ファイルを読む方法です。
UTF-8 ファイルはこれで読み込めます。
書き込みは以下の通りです。
FileOpen で文字コード EncodingUTF8! を指定します。
まずは IDE など勝手が違うので、多少の忍耐が必要です。
日本語のファイルを扱うのでまずはまってしまったので、まずはファイルの読み書きから書いていきたいと思います。
UTF-8 ファイルを読む方法です。
UTF-8 ファイルはこれで読み込めます。
書き込みは以下の通りです。
FileOpen で文字コード EncodingUTF8! を指定します。
木曜日, 9月 24, 2015
C#: ハッシュテーブルをXML形式で書き出す・読み込む
C#でHashtableのデータをXML形式で読み書きするためのコードです。
忙しい貴方のため(将来の自分ですね)コピペできるようそのまま置いておきます。
出来上がったXML形式のファイルです。
忙しい貴方のため(将来の自分ですね)コピペできるようそのまま置いておきます。
writeXML(Hashtable directory, string fileName):
Hashtable のデータをXML形式で保存します。
readXML(string fileName):
XML形式のデータをHashtable 形式で読み込みます。
出来上がったXML形式のファイルです。
金曜日, 7月 03, 2015
配列をムダなく並び替える
ここでは配列をムダなく並び替える方法を提案します。
提案というより、いつもの「ループをまわして違う値が出るまで繰り返す」という方法をやめようという提案です。
何度もまわしていれば終わる作業ではあるはずですが、当然のごとくこのアルゴリズムだと終わるという確証がありません。
カウンタなどつけていれば無限ループという最悪の事態は防げるわけですが、ここでは「乱数は配列の大きさだけ計算すればいいはず」というアルゴリズムの提案です。
大げさなことはないわけなのですが、計算しなければならない乱数ってのは「まだ選択されていない数からのみ」なわけなので、その方法を示します。
まずはコード permute() をご覧ください。
… というわけです。選択されていない中から選ぶので乱数の計算が配列の大きさで済むというわけです。
どうでしょうか。
permute() の応用で、重複しない要素を選択する関数 withoutDuplicate(int n, int max) というのも作れます。
selectWithout(int n, int max, int excluded) は選択すべき要素から一定要素を除いた重複しない要素を選択する関数です。
よく使うアルゴリズムだと思います。
提案というより、いつもの「ループをまわして違う値が出るまで繰り返す」という方法をやめようという提案です。
何度もまわしていれば終わる作業ではあるはずですが、当然のごとくこのアルゴリズムだと終わるという確証がありません。
カウンタなどつけていれば無限ループという最悪の事態は防げるわけですが、ここでは「乱数は配列の大きさだけ計算すればいいはず」というアルゴリズムの提案です。
大げさなことはないわけなのですが、計算しなければならない乱数ってのは「まだ選択されていない数からのみ」なわけなので、その方法を示します。
まずはコード permute() をご覧ください。
… というわけです。選択されていない中から選ぶので乱数の計算が配列の大きさで済むというわけです。
どうでしょうか。
permute() の応用で、重複しない要素を選択する関数 withoutDuplicate(int n, int max) というのも作れます。
selectWithout(int n, int max, int excluded) は選択すべき要素から一定要素を除いた重複しない要素を選択する関数です。
よく使うアルゴリズムだと思います。
火曜日, 6月 23, 2015
コマンドラインでシカゴの気温を調べる(C# で JSON データを読む)
先日 Java での JSON データの読み方を紹介しました。
ここでは C# で JSON データを読む方法を紹介します。
DataContractJsonSerializer を使った方法です。
DataContractJsonSerializer.ReadObject() を使うと JSON データを読み、オブジェクトとして出力してくれます。
オブジェクトへの変換が「宣言」となっているところがいくらか分かりやすいといえるでしょうか。
まず、読み込みたいデータ構造をクラスとして宣言し、DataContract 属性を付加します。JSON データは DataMember 属性を付加します。ネストされているデータはクラスとして宣言しDataContract 属性を付加します。コードを参照してください。#配列データは配列として宣言します。
出来上がったデータクラスを DataContractJsonSerializer のコンストラクタの引数として渡します。
準備が出来たらHttpWebResponse として読んできたデータを、DataContractJsonSerializer.ReadObject() で読み込みます。
と、この手順を踏むとめでたく JSON データが読み込めます。あとは出力するだけ。
ここの気温の表示はデフォルト設定でなんとK(ケルビン)です。ので 273.15 を引いてやります。
#華氏(℉)か摂氏(℃)か迷ったんでしょうか(もめたんですかね)。
ここでは C# で JSON データを読む方法を紹介します。
DataContractJsonSerializer を使った方法です。
DataContractJsonSerializer.ReadObject() を使うと JSON データを読み、オブジェクトとして出力してくれます。
オブジェクトへの変換が「宣言」となっているところがいくらか分かりやすいといえるでしょうか。
まず、読み込みたいデータ構造をクラスとして宣言し、DataContract 属性を付加します。JSON データは DataMember 属性を付加します。ネストされているデータはクラスとして宣言しDataContract 属性を付加します。コードを参照してください。#配列データは配列として宣言します。
出来上がったデータクラスを DataContractJsonSerializer のコンストラクタの引数として渡します。
準備が出来たらHttpWebResponse として読んできたデータを、DataContractJsonSerializer.ReadObject() で読み込みます。
と、この手順を踏むとめでたく JSON データが読み込めます。あとは出力するだけ。
ここの気温の表示はデフォルト設定でなんとK(ケルビン)です。ので 273.15 を引いてやります。
#華氏(℉)か摂氏(℃)か迷ったんでしょうか(もめたんですかね)。
木曜日, 6月 11, 2015
コマンドラインでシカゴの気温を調べる(Java で JSON データを読む)
なんと、近々発表されるはずの Java 9 から JSON ライブラリが外されてしまいました。
これは、政治ですね?(笑・XML派の妨害ですね。)
JSON ってコンパクトですよね。名前なしの{}(中括弧)を使うところが XML 形式より多少なりとも不確実ではあっても記述が短くて済むわけです。
openweathermap サイトのデフォルト設定は JSON 出力です。
このサイトは天気情報を提供してくれます。都市名とかを URL で送ってやると天気情報を返してくれます。
そこで、「ねえ、パーサーを書いたら?」とかいう余計な手間をかけたくない忙しいプログラマのため org.json.simple ライブラリの使い方を紹介します。
まず JSON.simple JAR ファイルをダウンロード。
データを読み込むプログラムの手順を示します。
あとは、JAR ファイルとコンパイルするだけ。
これは、政治ですね?(笑・XML派の妨害ですね。)
JSON ってコンパクトですよね。名前なしの{}(中括弧)を使うところが XML 形式より多少なりとも不確実ではあっても記述が短くて済むわけです。
openweathermap サイトのデフォルト設定は JSON 出力です。
このサイトは天気情報を提供してくれます。都市名とかを URL で送ってやると天気情報を返してくれます。
そこで、「ねえ、パーサーを書いたら?」とかいう余計な手間をかけたくない忙しいプログラマのため org.json.simple ライブラリの使い方を紹介します。
まず JSON.simple JAR ファイルをダウンロード。
データを読み込むプログラムの手順を示します。
- まず、JSONParser オブジェクトをインスタンス化。
- URL オブジェクトから InputStreamReader、BufferedReader をインスタンス化。
- JSONParser.parse() でパース。
- あとは JSONParser.get() で要素を読んでいくだけです。
- ネストされている要素であれば、JSONParser オブジェクトとして扱う。
あとは、JAR ファイルとコンパイルするだけ。
javac -classpath "JARファイルのあるディレクトリ;." WeatherApp.javaこれで、コマンドラインからシカゴの気温が検索できます。
月曜日, 4月 20, 2015
水曜日, 2月 25, 2015
Java: データ・マイニング ECLAT変換
データ・マイニングなんぞでデータ変換など需要がありましたので、プログラムなど置いておきます。
変換といっても縦のものを横にするという種類のもので、こんな感じです。
アルファベットが項目で、数字がIDです。
走らせるとアルファベットからIDを列挙します。
変換といっても縦のものを横にするという種類のもので、こんな感じです。
アルファベットが項目で、数字がIDです。
走らせるとアルファベットからIDを列挙します。
火曜日, 2月 24, 2015
Java: 楕円銀河
銀河系ってのはさまざまな形をしていますが、楕円形ってのがもっとも多いわけです。
楕円形のつぶれかたで記号までついてるわけですね。
E0 から E7 まであるわけですが、E0 がもっとも丸い。E7 がつぶれた形をしている。
こんなのを Java でインタラクティブで動かせたらいいかな、というんで書いてみました。
そのままコンパイルすると動くはずです。です。
楕円形のつぶれかたで記号までついてるわけですね。
E0 から E7 まであるわけですが、E0 がもっとも丸い。E7 がつぶれた形をしている。
こんなのを Java でインタラクティブで動かせたらいいかな、というんで書いてみました。
そのままコンパイルすると動くはずです。です。
火曜日, 1月 13, 2015
Java: BigInteger で階乗を計算する
自然数ってのは限りがありません。もし上限 n があったと仮定すると、 n+1 が整数、これは矛盾します。よって上限はない。数学ってのは証明ができていいですね。
ところがいざプログラムで実装となるとガラスの壁ってのがあるわけです。ご存じのとおり整数型の上限は64ビット long で -9223372036854775808 から 9223372036854775807。
これだともっと大きな整数は扱えません。そこで、Java では整数を抽象化し、BigInteger として制限のない整数を表現します。
この BigInteger、四則演算は揃っているのですが、演算メソッドが限られていて、階乗がありません。いちいち定義すればいいわけですが、こんなところで立ち止まっていては世界が見えてこない。
そこで、BigInteger で階乗を計算するコードを載せておきます。
この階乗を使うと、組み合わせなど計算ができます。階乗で定義されるやつですね。
実はこの組み合わせ、再帰で定義できます。パスカルの三角形といわれるやつです。
証明はこちら。
ところがいざプログラムで実装となるとガラスの壁ってのがあるわけです。ご存じのとおり整数型の上限は64ビット long で -9223372036854775808 から 9223372036854775807。
これだともっと大きな整数は扱えません。そこで、Java では整数を抽象化し、BigInteger として制限のない整数を表現します。
この BigInteger、四則演算は揃っているのですが、演算メソッドが限られていて、階乗がありません。いちいち定義すればいいわけですが、こんなところで立ち止まっていては世界が見えてこない。
そこで、BigInteger で階乗を計算するコードを載せておきます。
この階乗を使うと、組み合わせなど計算ができます。階乗で定義されるやつですね。
実はこの組み合わせ、再帰で定義できます。パスカルの三角形といわれるやつです。
証明はこちら。
金曜日, 11月 21, 2014
NetBeans+Maven: JARファイルが起動しない
NetBeans+Maven で書いた Java アプリを、いざ起動しようと思うと動かないわけですね。
動作環境は NetBeans 8.0.1 です。快適な Java 開発環境です。Maven も入っている。おすすめです。
補完機能もあるし、フォーマットからコメントアウトまで編集機能も万全。JUnit なんかもテンプレートで作成できます。
さくさくとプログラムを書いて、コンパイル。無事テストも通って、できた JAR ファイルを起動。JAR ファイルなら Windows 上で実行形式ファイルとしてそのまま起動できるはずです。
さっそくというのでアイコンをクリックをクリックします。で、動かない。
できてないですね。NetBeans。なんなんですかね。
コマンドラインで動かしてみれば理由はあきらか。Main-Class が設定されていない。
肝心なところでなぜなんだと悩みました。だってできたプログラムをいざ実用化っていう大切な瞬間ですよね。なぜでしょう。意図的としか思えませんね。
まあ陰謀論はいいんですが、結論から言うと解決は簡単で、pom.xml ファイルで Main-Class を設定します。
こんなコードを加えてやります。
#タグの大文字小文字が違っていたので訂正します。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>easai.treeeditor.TreeEditor</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
JARファイルを追加するには以下のように記述します。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>easai.db.DB</mainClass>
</manifest>
<manifestEntries>
<Class-Path>mysql-connector-java-5.1.6-bin.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
動作環境は NetBeans 8.0.1 です。快適な Java 開発環境です。Maven も入っている。おすすめです。
補完機能もあるし、フォーマットからコメントアウトまで編集機能も万全。JUnit なんかもテンプレートで作成できます。
さくさくとプログラムを書いて、コンパイル。無事テストも通って、できた JAR ファイルを起動。JAR ファイルなら Windows 上で実行形式ファイルとしてそのまま起動できるはずです。
さっそくというのでアイコンをクリックをクリックします。で、動かない。
できてないですね。NetBeans。なんなんですかね。
コマンドラインで動かしてみれば理由はあきらか。Main-Class が設定されていない。
肝心なところでなぜなんだと悩みました。だってできたプログラムをいざ実用化っていう大切な瞬間ですよね。なぜでしょう。意図的としか思えませんね。
まあ陰謀論はいいんですが、結論から言うと解決は簡単で、pom.xml ファイルで Main-Class を設定します。
こんなコードを加えてやります。
#タグの大文字小文字が違っていたので訂正します。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>easai.treeeditor.TreeEditor</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
JARファイルを追加するには以下のように記述します。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>easai.db.DB</mainClass>
</manifest>
<manifestEntries>
<Class-Path>mysql-connector-java-5.1.6-bin.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
月曜日, 9月 08, 2014
Java: 標準入力から値を得る
Java で標準入力から値を得るのは C++ より面倒です。
C++ では cin を使いますよね。 標準入力ストリームを使うわけです。
Java では標準入力は System.in です。しかし、です。このままでは使えないんですね。
以下の F1 Score 計算プログラムでは Scanner を使用しています。
C++ では cin を使いますよね。 標準入力ストリームを使うわけです。
Java では標準入力は System.in です。しかし、です。このままでは使えないんですね。
以下の F1 Score 計算プログラムでは Scanner を使用しています。
木曜日, 7月 10, 2014
3Dプリンターを使ってみての考察
3Dプリンターを使ってみての所感です。
- ルーターは必須。バリや凹凸はもちろん、サイズを合わせるため必須。
- プラスチック樹脂の種類によって強度、加工しやすさが違う。色もメーカーによって違う。
- ABSは曲げられない。折れる。硬さはそれぞれの樹脂の質による。
- フィラメントが引っかかると層がずれて悲惨な作品が出来上がる。フィラメントのフィードが遅いマシンでは "Extrusion multiplier" の値を低くする。フィラメントの太さを指定する必要がある。
- アセトンで壊れたパーツを修復できる。フィラメントを溶かしたアセトン溶液を使うといい。アセトンはすぐ蒸発するのでガラス瓶など使うと容器内で蒸発する。目薬の容器は小さくて少量ずつ出すことができて便利。
- 糊をたっぷり使わないと作品がはがれる。ブリム brim をつけると倒れにくくなる。ラフト raft をつけると底面からはがせる。
- 糊はコーンスターチと水を電子レンジで加熱すると大量生産できる。夏場は糊が腐るので酢を少量混ぜるといい。
- よく監視しておかないとフィラメントを無駄にする。
- 糊が乾燥するので水道水をスプレーするといい。
- 冷えるまで触ってはならない。柔らかいので無理に外すと壊れる。
- 解像度は低い。
- 時間がかかる。
- 削るのは時間のかかる作業である。
- 思いのまま作品ができる。「今まで何してたんだろう」的な気分になる。カスタマイズも自由。
金曜日, 6月 20, 2014
火曜日, 5月 13, 2014
Javascript (jQuery) から PHP の関数を呼び出す
ボタンを押したときに、PHP の関数を呼び出したいとします。
Form を使って PHP ファイルを読み込み、ページ全体を書き直すという手段もありますが、ある関数だけを呼び出したいときなど、ajax を使うと PHP 関数を呼び出してページ側で返り値を得ることができます。
このように、url でファイル名を指定して、success で返り値 results として引き渡してやります。
PHP ファイル側では、渡したい値を echo などで表示します。
これで PHP の関数をページから呼び出すことができます。
Form を使って PHP ファイルを読み込み、ページ全体を書き直すという手段もありますが、ある関数だけを呼び出したいときなど、ajax を使うと PHP 関数を呼び出してページ側で返り値を得ることができます。
このように、url でファイル名を指定して、success で返り値 results として引き渡してやります。
PHP ファイル側では、渡したい値を echo などで表示します。
これで PHP の関数をページから呼び出すことができます。
木曜日, 5月 01, 2014
HTMLエディターを1行で書く
HTMLエディターを1行で書いてみました。
要するに、書いたHTMLがそれっぽく見えればWYSIWYGってわけですよね。
じゃあ、書いたものをそのままブラウザ表示すりゃいいわけじゃないですか。
これを動かすと、何もないテキストボックスが下のほうに表示されます。
適宜 HTMLコードを入力してみましょう。
画面上部に結果が表示されます。
リアルタイムでHTMLコードが編集できます。
ちょっとしたプレビューにも使えます。
要するに、書いたHTMLがそれっぽく見えればWYSIWYGってわけですよね。
じゃあ、書いたものをそのままブラウザ表示すりゃいいわけじゃないですか。
これを動かすと、何もないテキストボックスが下のほうに表示されます。
適宜 HTMLコードを入力してみましょう。
画面上部に結果が表示されます。
リアルタイムでHTMLコードが編集できます。
ちょっとしたプレビューにも使えます。
水曜日, 4月 30, 2014
g++ の内部コード
g++ の内部コードは UTF16 で、wchar_t も当然のことながら16ビットです。
なんなら日本語のファイルを読んで、コードを出力してみればいいわけですね。
ロケールを設定する必要があります。
なんなら日本語のファイルを読んで、コードを出力してみればいいわけですね。
ロケールを設定する必要があります。
火曜日, 4月 29, 2014
C++ でバイナリで表す
C++ でバイナリで表すには、自分で書かねばならないようです。
べつにたいした手間ではないですが、書かされるという気分が知性に対する挑戦のように思えるわけですね。
こんなことをやらされるために頭脳があるんじゃない!みたいな。
もしそんな教師がいたら最悪ですね。でも現実は頭脳に厳しい。
というわけで書きました。
なんか頭にくるのでここに載せときます。
注意点として、(int16_t)0xff などとキャストすると結果は 1111111111111111 と表示されます。
当然そうなるわけなんですが、0000000011111111 とはなりません。
注意しましょう。
べつにたいした手間ではないですが、書かされるという気分が知性に対する挑戦のように思えるわけですね。
こんなことをやらされるために頭脳があるんじゃない!みたいな。
もしそんな教師がいたら最悪ですね。でも現実は頭脳に厳しい。
というわけで書きました。
なんか頭にくるのでここに載せときます。
注意点として、(int16_t)0xff などとキャストすると結果は 1111111111111111 と表示されます。
当然そうなるわけなんですが、0000000011111111 とはなりません。
注意しましょう。
火曜日, 4月 22, 2014
eshell (Emacs) と .website (IE) , time (実行時間の計測)メモ
本日の収穫:
M-x eshell
Emacs エディタの話です。
M-x shell を愛用していたわけなんですが、M-x eshell なるものがあるんですね。
ずっと便利じゃないですかこれ。早いし。なんだったんだ今までの苦労は(笑
コマンドの結果が別ウィンドウで表示されます。
.website
IE の話です。
サイトのファビコンをクリック・ドラッグすると、サイトのリンクを作れます。
サイトのリンクと同じようなものですが、IEを指定できます。
time
time ./a.exe で実行速度が計測できます。
M-x eshell
Emacs エディタの話です。
M-x shell を愛用していたわけなんですが、M-x eshell なるものがあるんですね。
ずっと便利じゃないですかこれ。早いし。なんだったんだ今までの苦労は(笑
コマンドの結果が別ウィンドウで表示されます。
.website
IE の話です。
サイトのファビコンをクリック・ドラッグすると、サイトのリンクを作れます。
サイトのリンクと同じようなものですが、IEを指定できます。
time
time ./a.exe で実行速度が計測できます。
水曜日, 4月 09, 2014
水曜日, 3月 19, 2014
Java 8: ストリーム
Java 8 では文字列をストリームとして扱うことができます。
ストリームにフィルターを追加し、要素を選択することもできます。
下記のコードでは要素の文字長を指定し、表示するものです。
下記のコードは要素の頭文字を指定し、表示します。
ストリームにフィルターを追加し、要素を選択することもできます。
下記のコードでは要素の文字長を指定し、表示するものです。
下記のコードは要素の頭文字を指定し、表示します。
Java 8: ラムダ式
Java 8 が正式にリリースされました。
ラムダ式が導入されるということで、さっそく試してみました。
ラムダ式とは関数を抽象化したもので、コンパクトにコールバック関数の引渡し・定義ができます。
ラムダ式のフォーマットですが、
(引数) -> 定義
となります。Lisp などとは異なる形式ですが、内部クラスなどと比較して簡潔にコールバック関数が定義できます。
ラムダ式が導入されるということで、さっそく試してみました。
ラムダ式とは関数を抽象化したもので、コンパクトにコールバック関数の引渡し・定義ができます。
ラムダ式のフォーマットですが、
(引数) -> 定義
となります。Lisp などとは異なる形式ですが、内部クラスなどと比較して簡潔にコールバック関数が定義できます。
火曜日, 2月 25, 2014
MySQL: テーブル構造を取得し、SQL文に変換する
MySQLでテーブル構造を取得するには、DESCRIBE (テーブル名) などのSQL文を使用します。
これをSQL文に変換するには、テーブルの情報をSQL文の形式でそれぞれ記述してやる必要があります。
ここで気をつけねばならないのは、timestamp値をとるコラムです。
デフォルト値に CURRENT_TIMESTAMP をとるコラムは、TIMESTAMP 値をとるコラムより前に記述しなければなりません。
コラムを並べ替える必要があります。
ここでは array_unshift() という関数を使用し、CURRENT_TIMESTAMP をとるコラムを配列の最初に格納するという方法をとりました。
ソースコード: GitHub: tablestructure.php
これをSQL文に変換するには、テーブルの情報をSQL文の形式でそれぞれ記述してやる必要があります。
CREATE TABLE IF NOT EXISTS `notes` ( `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `id` int(11) NOT NULL AUTO_INCREMENT, `title` text COLLATE utf8_unicode_ci NOT NULL, `description` text COLLATE utf8_unicode_ci NOT NULL, `videoid` text COLLATE utf8_unicode_ci NOT NULL, `imagefile` text COLLATE utf8_unicode_ci NOT NULL, `docnum` text COLLATE utf8_unicode_ci NOT NULL, `shortdesc` text COLLATE utf8_unicode_ci NOT NULL, `onhold` int(11) NOT NULL, `registered` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=61 ;
ここで気をつけねばならないのは、timestamp値をとるコラムです。
デフォルト値に CURRENT_TIMESTAMP をとるコラムは、TIMESTAMP 値をとるコラムより前に記述しなければなりません。
コラムを並べ替える必要があります。
ここでは array_unshift() という関数を使用し、CURRENT_TIMESTAMP をとるコラムを配列の最初に格納するという方法をとりました。
ソースコード: GitHub: tablestructure.php
登録:
投稿 (Atom)
PHP: 定数を扱う
プロジェクトごとの定数を扱うクラス Config\Constants の紹介です。 <?php namespace Config; class Constants { public const DB_USER = "linguist...
-
Qt はまってます。Mac でも書いたアプリがコンパイルできて、しっかり動くのを確認しました。このあいだ Chitubox が Qt 使ってるのを知ってうれしかったです。 Mac でもそのまま動くんですが、アプリのアイコンの設定はプラットフォーム依存です。 公式マニュアルでも設定...
-
コンデンサマイク 極性があります コンデンサマイクがようやく届きました。モジュールではないのでそのままでは信号が弱いので使えません。信号を増幅する必要があります。 ちょっとした手間ですが、首尾よく動いてくれました。この回路の応用で、使えるマイクが出来ます。 ...
-
Flask/SQLAlchemy 使ってる方、jinja で困ってませんか? 本体で Python の関数を書いてもいいんですが、テンプレートでも関数が呼べます。 日付を出したい場合、フォーマットなら strftime() が使えます。 わざわざ文字列を作って渡す必...