アドビ社の迫害をものともせずオープン規格EPUB電子本を作るとここで宣言。
mimetype
META-INF/
container.xml
OEBPS/
content.opf
toc.ncx
xhtml file
できた。が自前のJavaアプリで圧縮する必要があった。こんな感じです。
金曜日, 11月 20, 2015
木曜日, 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 とはなりません。
注意しましょう。
登録:
投稿 (Atom)
Flask の Blueprint のテンプレート問題
Flask の Blueprint は、ルート、静的ファイル、テンプレートをまとめて管理できます。しかし、テンプレートが指定できません。 ここでは、Blueprint の template_folder の問題点と回避策を説明します。 Blueprint のテンプレート問題...
-
Qt はまってます。Mac でも書いたアプリがコンパイルできて、しっかり動くのを確認しました。このあいだ Chitubox が Qt 使ってるのを知ってうれしかったです。 Mac でもそのまま動くんですが、アプリのアイコンの設定はプラットフォーム依存です。 公式マニュアルでも設定...
-
コンデンサマイク 極性があります コンデンサマイクがようやく届きました。モジュールではないのでそのままでは信号が弱いので使えません。信号を増幅する必要があります。 ちょっとした手間ですが、首尾よく動いてくれました。この回路の応用で、使えるマイクが出来ます。 ...
-
今日ホール素子が届きました。 ホール素子ってのは ホール効果 を利用して磁場を感知するセンサーです。 iPad のケースとか、閉じると電源が切れてくれますよね。ケースのカバーの磁石の磁場をホール素子が感知してるわけです。 さっそくホール素子を使ってみよう!電圧...








