2017/10/06

Androidアプリ

ようやくAndroidアプリの第1弾日記帳と小遣帳、第2弾雄踏町祭典運行表を公開しました。

  • パソコン版について
    日記帳のパソコン版は、BCC用クラスライブラリのサンプルプログラムとして、公開しています。雄踏町祭典運行表のパソコン版はありません。
  • バージョンについて
    小遣帳のバージョンは、新規公開なのにかかわらず、Ver1.30です。これは、パソコン版のバージョンと合わせるためです。パソコン版のVer1.3xで作成されたデータをAndroid版のVer1.3xで読むことができます。逆に、Android版のVer1.3xで作成されたデータをパソコン版のVer1.3xで読むことができます。他のアプリでも、同様です。
  • ファイルについて
    Androidアプリは、ファイル保存せず、内部のデータベースに保持するのが普通ですが、私のアプリは、基本ファイル保存するようにしています。
  • ストレージアクセスフレームワーク
    Android4.4(Kitkat)以降では、セキュリティが厳しくなって、ファイルを保存できる場所が少なくなっています。ストレージアクセスフレームワークによって、アプリごとにファイルへのアクセスを許可するようになっています。file:///より上の階層に移動することでストレージアクセスフレームワークを利用できるようにしてあります。しかし、小遣帳は、フォルダのアクセス許可が必要ですが、Android4.4(Kitkat)では、ファイル単位の許可のため、利用できません。(Android5.0(Lollipop)以降では、利用できます)
  • リリースタイミング
    雄踏町祭典運行表を、祭典に間に合わせるため、少し見切り発車気味にリリースしています。なので、まだまだ、バグがあるかもしれません。

| | コメント (0) | トラックバック (0)

2017/09/01

Windows95対応

4月11日にリリースされた、Windows10の大型アップデートCreators Updateを適用すると、一時期日付コントロールの表示がおかしくなる現象が起こりました。6月の定例アップデートにより、現在は改善されているようですが、日付コントロールを自作しました。

この自作日付コントロールの動作確認に、久々にWindows95パソコンを起動したら、公開しているソフトが起動しなかったり、動作がおかしかったりすることが判明しました。各ソフトの状態は、以下の通りでした。

  Windows95 Windows95+IE3 Windows95+IE4 Windows98
BMP Viewer ・ファイルダイアログが開かない
日記帳 ・起動しない ・ファイルダイアログが開かない
・ツールバーが大きい
・編集画面が開かない
・ファイルダイアログが開かない
・編集画面が開かない
小遣帳 ・金額欄が左寄せ ・正常
toto管理 ・ダウンロードダイアログが開かない
・終了時にエラーになる
・ダウンロードが失敗する
・金額欄が左寄せ
・終了時にエラーになる
・ダウンロードが失敗する
・金額欄が左寄せ
・正常
リーグ戦順位表 ・起動しない ・ファイルダイアログが開かない
・ツールバーが大きい
・印刷ダイアログが開かない
・日程登録、結果登録(日別)が開かない
・ファイルダイアログが開かない
・印刷ダイアログが開かない
・日程登録、結果登録(日別)が開かない
トーナメント表 ・ファイルダイアログが開かない
・ツールバーが大きい
・ファイルダイアログが開かない
スケジューラー
データダンプ
UMLエディター

起動しない主な原因は、HtmlHelpの対応バージョンがInternet Explorer 4(IE4)以降だったことでした。そこで、私のソフトの対応バージョンをIE4以降にしました。
でも、HtmlHelp以外の部分は、IE4未満でも、なるべく動作するように修正しました。現在の各ソフトのHtmlHelp以外の状態は、以下の通りです。

  Windows95 Windows95+IE3
BMP Viewer ・正常 ・正常
日記帳 ・起動しない
小遣帳 ・正常
toto管理 ・ダウンロードダイアログが開かない
リーグ戦順位表 ・起動しない
トーナメント表 ・環境設定/チーム名設定のチーム色のセルの色が変わらない
スケジューラー ・起動しない
データダンプ ・正常
UMLエディター ・クラス情報ダイアログのオーバーライド関数タブでチェックボックスがないため関数を選択できない
・印刷ダイアログでチェックボックスがないため対象ダイアログを選択できない

以下、備忘録も兼ねて、技術的側面を記事にしておきます。

  • 日付コントロール
    自作のクラス名は"DTP"、使用する前には、Bcl_dtpicker::set_registerで登録が必要です。
    システムの日付コントロールを使用するには、コンパイルオプションUSE_SYSTEM_DTPICKERをつける。日記帳をコンパイルする場合は、diary.rcの8行目のコメントも有効にする必要があります。

  • ツールバー
    TBBUTTON構造体を0クリアしないと、ツールバーが大きくなる場合がある。

  • タブコントロール
    リソース・スクリプトにWS_EX_CONTROLPARENTを記述しても、Windows95,98では反映されない。タブ内でShift+Tabキーを押すとフリーズしてしまう。起動後、SetWindowLongでGWL_EXSTYLEを設定する必要がある。
    IE3未満では、タブコントロールの子コントロールのWM_NOTIFYを、タブコントロールの親コントロールに通知しない。サブクラス化して、通知するようにする必要がある。

  • コモンコントロールの初期化
    InitCommonControlsExで初期化しないと、日付コントロールやカレンダーコントロールを使用しているダイアログが、Windows95,98で開かない。ただし、InitCommonControlsExは、IE3以降用のため、リストコントロールなどの時は、InitCommonControlsで初期化しないと、IE3未満で起動しなくなってしまう。

  • ファイルダイアログ
    OPENFILENAME構造体のメンバlStructSizeをsizeofで設定すると、Windows95,98でファイルダイアログが開かない。OPENFILENAME_SIZE_VERSION_400を設定する必要がある。または、コンパイラオプションに_WIN32_WINNT=0x0400を設定する必要がある。

  • ドライバのリンク
    ドライバがない場合、ドライバのリンクを静的にしていると、起動すらできない。ライブラリ内で静的にドライバをリンクしている場合は、使用しているクラスを使っている場合、起動できない。ドライバを使用するときのみエラーとするには、動的にリンクするようにする必要がある。

  • ツリービュー
    TreeView_GetChildの引数hitemにTVI_ROOTを設定すると、IE4未満で異常終了する。NULLを設定する必要がある。

  • 文字コード変換
    MultiByteToWideCharの引数CodePageの設定値CP_UTF8はWindows98以降対応。Windows95で変換する場合は自作する必要がある。

  • リストビュー
    行選択、グリッド線、チェックボックス、カスタムドローはIE3以降、カスタムドローのサブアイテムの描画、CDDS_SUBITEMはIE4以降


  • VBのテキストボックス
    Windows95では、Alignmentを1-右揃えにしても、MultiLineをTrueにしないと右寄せにならない。1行で右寄せしたい場合は、KeyPress関数などで改行を無効にする必要がある。

| | コメント (0) | トラックバック (0)

2016/12/09

公開データのソフト対応バージョンについて

今まで、基本Ver.1.00のソフトで読めるデータを公開してきましたが、これから公開するデータは、最新のソフトでないと読めないデータにしたいと思います。

現在Android版のソフトは、開発中でまだ公開していませんが、今後公開した時、Windows版より古いバージョンになっている場合があると思います。その時には、旧バージョン対応のデータも一緒に公開したいと思います。

PC98x1のMS-DOS版のソフトは、現在開発していませんので、データの対応もいたしません。

| | コメント (0) | トラックバック (0)

2016/09/08

minidlnaのインストール(Puppy Linux)

DLNAとは、ホームネットワーク(家庭内LAN)に接続された機器やコンテンツの相互接続 方式です。サーバをインストールすることで、DLNAに対応したテレビなどで動画が画像を見ることが出来るようになります。そのためのアプリ、minidlnaをインストールします。

デスクトップ上の「インストール」アイコンインストールアイコンをクリックします。

インストールダイアログ

「パッケージマネージャを実行するにはこのボタン:パッケージマネージャアイコン」をクリックします。

パッケージマネージャ

検索ボックスに「minidlna」と入力し、「実行」をクリックします。

パッケージマネージャ:検索場所選択

「すべてのレポジトリ内を検索」側の検索ボタンをクリックします。

パッケージマネージャ:minidlna検索

「minidlna_1.0.21+dfsg」をクリックします。

パッケージマネージャ:依存チェック

依存しているパッケージ全てをインストールするために、「依存パッケージを調べる」をクリックします。

パッケージマネージャ:依存チェック結果

「ダウンロードしてインストール」をクリックします。

パッケージマネージャ:ダウンロード(サブ)

ダウンロードするサイトを選択し、「パッケージをダウンロード」をクリックします。

パッケージマネージャ:ダウンロード(メイン)

さらに、ダウンロードするサイトを選択し、「パッケージをダウンロード」をクリックします。

パッケージマネージャ:インストール終了

OKをクリックします。もし、インストール先を節約したい場合は「ダイエット」をクリックします。

パッケージマネージャ:依存不足確認

Okをクリックします。

パッケージマネージャ:インストール完了

インストール済みパッケージに「minidlna_1.0.21+dfsg」および依存しているパッケージが追加されました。「パッケージマネージャを終了」をクリックします。

次にminidlnaの設定ファイル/etc/minidlna.confを編集します。

  • media_dirを修正し、メディアのあるディレクトリを指定します。複数のディレクトリを指定する場合は、複数行記述します。
  • db_dirのコメントを外し(先頭の#を削除する)、データベースを出力するディレクトリを指定します。
  • log_dirのコメントを外し、ログを出力するディレクトリを指定します。
# port for HTTP (descriptions, SOAP, media transfer) traffic
port=8200

# network interfaces to serve, comma delimited
#network_interface=eth0

# set this to the directory you want scanned.
# * if have multiple directories, you can have multiple media_dir= lines
# * if you want to restrict a media_dir to a specific content type, you
#   can prepend the type, followed by a comma, to the directory:
#   + "A" for audio  (eg. media_dir=A,/home/jmaggard/Music)
#   + "V" for video  (eg. media_dir=V,/home/jmaggard/Videos)
#   + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)
media_dir=V,/mnt/data/movie/mpeg

# set this if you want to customize the name that shows up on your clients
#friendly_name=My DLNA Server

# set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache
db_dir=/var/cache/minidlna

# set this if you would like to specify the directory where you want MiniDLNA to store its log file
log_dir=/var/log

# this should be a list of file names to check for when searching for album art
# note: names should be delimited with a forward slash ("/")
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg

# set this to no to disable inotify monitoring to automatically discover new files
# note: the default is yes
inotify=yes

# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO
enable_tivo=no

# set this to strictly adhere to DLNA standards.
# * This will allow server-side downscaling of very large JPEG images,
#   which may hurt JPEG serving performance on (at least) Sony DLNA products.
strict_dlna=no

# default presentation url is http address on port 80
#presentation_url=http://www.mylan/index.php

# notify interval in seconds. default is 895 seconds.
notify_interval=900

# serial and model number the daemon will report to clients
# in its XML description
serial=12345678
model_number=1

# use different container as root of the tree
# possible values:
#   + "." - use standard container (this is the default)
#   + "B" - "Browse Directory"
#   + "M" - "Music"
#   + "V" - "Video"
#   + "P" - "Pictures"
# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root
#root_container=.

以下のコマンドを実行し、minidlnaを開始します。

minidlna

minidlna開始

Windows Media PlayerでWindowsから接続してみます。Windows Media Playerは、DLNAのサーバにもクライアントにもなります。

Windows Media Player

接続され、画像が見えました。

戻る

| | コメント (0) | トラックバック (0)

ファイアーウォールの設定・プライベートIPアドレス(Puppy Linux)

最初、ポート毎に開ける方法で設定していました。(設定方法)しかし、この方法だと、ネットワークを使用するアプリをインストールするたびに設定し直す必要がありました。そこで、プライベートIPアドレスなら全て接続出来るようにしました。

デスクトップ上の「設定」アイコン設定アイコンをクリックします。

パピーの設定

「ファイアーウォールの設定ファイアーウォールの設定アイコン」をクリックします。

ファイアーウォールの設定

「custome」をクリックし、OKをクリックします。

ファイアーウォール:ポート選択

上下カーソルで選択し、スペースキーで*をON/OFFし、全てOFFにし、OKをクリックします。

ファイアーウォール:プライベート

Noをクリックします。

ファイアーウォール:信用IP

「192.168.0.0/16」を入力し、OKをクリックします。

ファイアーウォール:テスト

Yesをクリックします。

ファイアーウォール:テスト実行

何かキーを押します。

ファイアーウォール:設定

Yesをクリックします。

ファイアーウォール完了

Enterキーを押します。

戻る

| | コメント (0) | トラックバック (0)

2016/07/08

自動起動の設定(Puppy Linux)

一般のLinuxの自動起動には、initdやxinitdなどのスーパーサーバを使用します。しかし、Puppy Linuxでは、/root/Startupに置いたファイルが自動起動されます。そこで、Samba、FTP、VNC、sshを起動するシェルスクリプト/root/Startup/startup.shを以下の内容で作成します。/root/.vnc/x11vnc_run.shは、VNCサーバの設定で作成したシェルスクリプトです。minidlnaは、起動タイミングによって、起動しないことがあるようなので、少しsleepしてから起動するようにします。

nmbd
smbd
vsftpd&
hiawatha
/root/.vnc/x11vnc_run.sh
/usr/sbin/sshd
sleep 10
minidlna

以下のコマンドを実行し、/root/Startup/startup.shに実行権限を加えます。

chmod a+x /root/Startup/startup.sh

実行権限設定

再起動してみます。

自動起動

全てつながりました。

戻る

| | コメント (0) | トラックバック (0)

マウントの設定(Puppy Linux)

sda1やsda2などをクリックすると自動的にマウントされるため、忘れがちですが、Puppy Linuxをインストールしたドライブ以外は、起動時にマウントされていません。試しに、sda1やsda2をクリックする前に/mntを見ると、sda1やsda2すらありません。

マウント確認

/etc/fstabにマウントしたいドライブの情報を追加します。例として、/dev/sda2を/mnt/dataにマウントしてみます。

none          /proc        proc     defaults               0 0
none          /sys         sysfs    defaults               0 0
none          /dev/pts     devpts   gid=2,mode=620         0 0
/dev/fd0      /mnt/floppy  auto     noauto,rw              0 0
/dev/sda2     /mnt/data    auto     defaults               0 0

/etc/fstabに記載されたドライブは、mount -aコマンドの実行でマウントされます。多くのLinuxでは起動時にこのコマンドが実行されるようになっていますが、Puppy Linuxでは、起動時に実行されません。そこで、/etc/rc.d/rc.localに追加して起動時に実行されるようにします。

#this file called from rc.sysinit
#you can edit this file
#When firewall is installed, will append lines to this file...

if [ -x /etc/rc.d/rc.firewall ]; then
  /etc/rc.d/rc.firewall start
fi
mount -a

戻る

| | コメント (0) | トラックバック (0)

ファイアーウォールの設定・ポート毎(Puppy Linux)

プライベートIPアドレスなら全て接続出来るように変更しました。(設定方法)ポート毎に開ける方法での設定を参考記事とします。

デスクトップ上の「設定」アイコン設定アイコンをクリックします。

パピーの設定

「ファイアーウォールの設定ファイアーウォールの設定アイコン」をクリックします。

ファイアーウォールの設定

「custome」をクリックし、OKをクリックします。

ファイアーウォール:ポート選択

上下カーソルで選択し、スペースキーで*をON/OFFし、ftp、ssh、http、otherをONにし、OKをクリックします。

ファイアーウォール:その他ポート

VNCとSamba用のポート「5900/tcp 137/udp 138/udp 139/tcp」を入力し、OKをクリックします。。

ファイアーウォール:FTP

「specify」をクリックし、OKをクリックします。

ファイアーウォール:IPアドレス指定:FTP

「192.168.0.0/16」を入力し、OKをクリックします。

ファイアーウォール:ssh

「specify」をクリックし、OKをクリックします。

ファイアーウォール:IPアドレス指定:ssh

「192.168.0.0/16」を入力し、OKをクリックします。

ファイアーウォール:http

「specify」をクリックし、OKをクリックします。

ファイアーウォール:IPアドレス指定:http

「192.168.0.0/16」を入力し、OKをクリックします。

ファイアーウォール:VNC

「specify」をクリックし、OKをクリックします。

ファイアーウォール:IPアドレス指定:VNC

「192.168.0.0/16」を入力し、OKをクリックします。

ファイアーウォール:Samba(137/udp)

「specify」をクリックし、OKをクリックします。

ファイアーウォール:IPアドレス指定:Samba(137/udp)

「192.168.0.0/16」を入力し、OKをクリックします。

ファイアーウォール:Samba(138/udp)

「specify」をクリックし、OKをクリックします。

ファイアーウォール:IPアドレス指定:Samba(138/udp)

「192.168.0.0/16」を入力し、OKをクリックします。

ファイアーウォール:Samba(139/tcp)

「specify」をクリックし、OKをクリックします。

ファイアーウォール:IPアドレス指定:Samba(139/tcp)

「192.168.0.0/16」を入力し、OKをクリックします。

ファイアーウォール:プライベート

Noをクリックします。

ファイアーウォール:信用IP

Cancelをクリックします。

ファイアーウォール:テスト

Yesをクリックします。

ファイアーウォール:テスト実行

何かキーを押します。

ファイアーウォール:設定

Yesをクリックします。

ファイアーウォール完了

Enterキーを押します。

戻る

| | コメント (0) | トラックバック (0)

2016/07/06

開発環境のインストール(Puppy Linux)

C言語をコンパイル出来るようにします。開発環境devx_XXX.sfsをインストールすると、gccが使えるようになるようです。(XXXはPuppy Linuxのバージョン)

  • インストール

    デスクトップ上の「インストール」アイコンインストールアイコンをクリックします。

    インストールダイアログ

    「公式レポジトリから追加SFSを選ぶにはこのボタン:追加SFSアイコン」をクリックします。

    SFSダウンローダ

    インストールしたPuppy Linuxと同じパージョンのdevx(Puppy Linux Precise-571JPなのでdevx_precise_5.7.1.sfs)を選択し、OKをクリックします。

    ホスト選択

    ダウンロードするホストを選択し、「Download SFS file」をクリックすると、ダウンロードを開始します。

    BootManager

    左ペインの「devx_precise_5.7.1.sfs」を選択し、「Add」をクリックすると、右ペインに移動します。

    追加

    OKをクリックし、Puppy Linuxを再起動します。

  • 確認

    以下のプログラムを、hello.cとして保存する。

    #include "stdio.h"
    
    int main(int argc, char** argv)
    {
        printf("Hello World\n");
    }
    

    デスクトップ上の「端末」アイコン端末アイコンをクリックします。コンパイルして、実行します。

    確認

    出来ました。

戻る

| | コメント (0) | トラックバック (0)

Webサーバの設定・起動(Puppy Linux)

Webサーバといえば、Apacheが有名ですが、Puppy Linuxには、hiawatha Webサーバがインストールされています。

/etc/hiawatha/hiawatha.confを編集します。

  • BindingのInterfaceを0.0.0.0にします。
  • 拡張子cgiのCGIを実行出来るようにCGIextensionにcgiを追加します。

ServerId = webuser
ConnectionsTotal = 150
ConnectionsPerIP = 10
SystemLogfile = /var/log/hiawatha/system.log
GarbageLogfile = /var/log/hiawatha/garbage.log

Binding {
	Port = 80
	Interface = 0.0.0.0
}

Hostname = 127.0.0.1
WebsiteRoot = /root/Web-Server
StartFile = index.html
AccessLogfile = /var/log/hiawatha/access.log
ErrorLogfile = /var/log/hiawatha/error.log

#add this stuff to get a perl script working (pplog)...
#QUISP has a binary executable CGI named 'quisp.bin'...
MimetypeConfig = /etc/mime.types
#CGIhandler = /usr/bin/perl:pl
CGIextension = pl,bin,cgi
ExecuteCGI = yes
#QUISP puts %0D, %0A (carriage-return, line-feed) chars in the url
#(v128), to allow chars below ascii 32 need this...
SecureURL = no

以下のコマンドでWebサーバを起動します。

hiawatha
hiawatha開始

起動しました。

Windowsパソコンからブラウザで接続します。URLにLinuxパソコンのIPアドレスまたは名前解決出来ていればホスト名で接続します。

ブラウザ接続

表示されました。

CGI実行の確認をします。以下の内容で/root/Weeb-Server/hello.cgiを作成します。

#!/usr/bin/perl

print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<title>test</title>\n";
print "</head>\n";
print "<body>\n";
print "hollo cgi\n";
print "</body>\n";
print "</html>\n";

以下のコマンドで実行権を追加します。

chmod a+x /root/Weeb-Server/hello.cgi
実行権追加

Windowsパソコンからブラウザで接続します。URLにLinuxパソコンのIPアドレスまたは名前解決出来ていればホスト名/hello.cgiで接続します。

CGI実行

実行されました。

戻る

| | コメント (0) | トラックバック (0)

«(参考)VNCサーバ(tightVnc)のインストール(Puppy Linux)