新規記事の投稿を行うことで、非表示にすることが可能です。
2015年02月05日
腕時計が届きました。
2015年02月04日
パスワード変更画面を追加
xHis(Excel履歴管理ツール)のログイン画面に
「ログイン後にパスワード変更」チェックボックスを追加しました。
チェックしてログインに成功した場合に、パスワード変更画面を表示します。
パスワード変更画面をログイン直後にのみ表示させることで、
旧パスワードの入力は、ログイン時の1回のみとしました。
「ログイン後にパスワード変更」チェックボックスを追加しました。
チェックしてログインに成功した場合に、パスワード変更画面を表示します。
パスワード変更画面をログイン直後にのみ表示させることで、
旧パスワードの入力は、ログイン時の1回のみとしました。
2015年02月03日
古いlog4netのログファイルを削除
xHis(Excel履歴管理ツール)のクライアントモジュールのログは、
log4netで次のように、ファイル名に年月日を付けて出力しています。
xHis_cl.20150203.log
使い続けるとログファイルがいっぱいできます。
そこで、古いログファイルを削除する指定を
log4netの設定でしたかったのですが、やり方がわからないので、
クライアントモジュールで1ヶ月以上前のログファイルを削除することにしました。
ログファイルの削除自体は簡単ですが、
難題はlog4netの出力先を、クライアントモジュールから取得する方法です。
何等かの障害発生時に原因調査のために、
ログファイルをサーバに送信するツールにも応用できると思ったので
今回のプログラミング内容をアップしておきます。
■ App.config
■ C#ソースコード
log4netで次のように、ファイル名に年月日を付けて出力しています。
xHis_cl.20150203.log
使い続けるとログファイルがいっぱいできます。
そこで、古いログファイルを削除する指定を
log4netの設定でしたかったのですが、やり方がわからないので、
クライアントモジュールで1ヶ月以上前のログファイルを削除することにしました。
ログファイルの削除自体は簡単ですが、
難題はlog4netの出力先を、クライアントモジュールから取得する方法です。
何等かの障害発生時に原因調査のために、
ログファイルをサーバに送信するツールにも応用できると思ったので
今回のプログラミング内容をアップしておきます。
■ App.config
<configuration>
<configSections>
<section name="log4net" type=" log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<appender name="DayRollingLogToFile" type="log4net.Appender.RollingFileAppender">
<File>ap_log\xHis_cl</File>
:
</appender>
:
</log4net>
</configuration>
■ C#ソースコード
// 古いlog4netのログファイルを削除
try
{
XmlElement log4netCollection =
(XmlElement)ConfigurationManager.GetSection("log4net");
XmlNodeList nodeList = log4netCollection.SelectNodes("appender");
foreach (XmlNode appender in nodeList)
{
XmlNodeList childList = appender.ChildNodes;
foreach (XmlNode child in childList)
{
if (child.Name == "File")
{
string fileValue = child.InnerText;
string fileName;
string fileHeder = fileValue;
string path = ".";
// '\\' でフォルダを指定している場合に、フォルダとファイルヘッダを分離
int idxBS = fileValue.LastIndexOf('\\');
if (idxBS >= 0)
{
if (idxBS == 0)
{
path = "\\";
}
else
{
path = fileValue.Substring(0, idxBS);
}
fileHeder = fileValue.Substring(idxBS + 1);
}
// '/' でフォルダを指定している場合に、フォルダとファイルヘッダを分離
int idxS = fileValue.LastIndexOf('/');
if (idxS >= 0)
{
if (idxS == 0)
{
path = "/";
}
else
{
path = fileValue.Substring(0, idxS);
}
fileHeder = fileValue.Substring(idxS + 1);
}
string fullPath = System.IO.Path.GetFullPath(path);
// 1ヶ月以上前のログファイルを削除
DateTime dateToDel = System.DateTime.Today.AddMonths(-1);
string fileToDel = string.Format("{0}.{1}.log",
fileHeder, dateToDel.ToString("yyyyMMdd"));
string[] listLogFile = System.IO.Directory.GetFiles(path, fileHeder + ".*");
int len = listLogFile.Length;
for (int i = 0; i < len; i++)
{
fileName = System.IO.Path.GetFileName(listLogFile[i]);
if (fileName.CompareTo(fileToDel) < 0)
{
System.IO.File.Delete(listLogFile[i]);
}
}
break;
}
}
}
}
catch {}
2015年02月02日
サーバからの処理結果にurlを追加
xHis(Excel履歴管理ツール)のサーバからの処理結果として、
エラーコードとエラーメッセージを返していましたが、
クライアントでメッセージボックスを表示するとともに、
必要に応じてWebページを表示できるようにurlを追加しました。
(表示したくないときは未指定)
例えば、クライアントモジュールが古いときに更新ダウンロードを促したり、
有償サポートが切れたときに、復活手続きを促したりする用途で使用します。
今日のワンポイント
【C#】
・相対パスから絶対パスを取得
・自分のバージョンを取得
【PHP】
・ディレクトリの存在確認
エラーコードとエラーメッセージを返していましたが、
クライアントでメッセージボックスを表示するとともに、
必要に応じてWebページを表示できるようにurlを追加しました。
(表示したくないときは未指定)
例えば、クライアントモジュールが古いときに更新ダウンロードを促したり、
有償サポートが切れたときに、復活手続きを促したりする用途で使用します。
今日のワンポイント
【C#】
・相対パスから絶対パスを取得
string fullPath = System.IO.Path.GetFullPath(@"tmp\data");
・自分のバージョンを取得
System.Reflection.Assembly as
= System.Reflection.Assembly.GetExecutingAssembly();
System.Version version = as.GetName().Version;
【PHP】
・ディレクトリの存在確認
file_exists($dir)
腕時計を購入しました。
楽天でソーラー電波腕時計(CITIZEN Q&Q ブラック×オレンジ)を購入しました。
6,300円の出費で、収入のない私には辛いところですが
これも就活のためです。
退職日の翌日に、10年以上使っていた腕時計が壊れていました。
退職後に退職手続きのために、もとの会社に出向いた際に、
壊れていることに気づかずに、電車で外出してとても苦労しました。
次の就職先が決まってから、自分へのご褒美に買おうとも思いましたが、
やはり、就活にも支障をきたすので思い切って買いました。
時計が届いたら、また、詳細をアップします。
6,300円の出費で、収入のない私には辛いところですが
これも就活のためです。
退職日の翌日に、10年以上使っていた腕時計が壊れていました。
退職後に退職手続きのために、もとの会社に出向いた際に、
壊れていることに気づかずに、電車で外出してとても苦労しました。
次の就職先が決まってから、自分へのご褒美に買おうとも思いましたが、
やはり、就活にも支障をきたすので思い切って買いました。
時計が届いたら、また、詳細をアップします。
2015年02月01日
ログイン先の切替え機能を制作
先週金曜日1/30に、ハローワークに登録してきましたが、
3×2.5cmの写真が2枚、次回までに必要と言われたので
今日、近所のコイデカメラで焼増ししてきました。
履歴書用の4×3cmは既に撮ってあったので、今回は焼増しです。
就活は出費がかさみます。
コイデカメラに単1アダプターが売っていたので、ついつい買ってしまいました。
家のガスレンジに単1電池が必要で、ここだけエネループじゃなかったためです。
次回電池交換への投資です。
趣味のプログラミングでは、暗号化した個別設定情報を復号化して、
画面上でハンドリングする機能を制作し、
xHis(Excel履歴管理ツール)に追加しました。
(1)ログイン接続先の切替え機能(名称とURL)
(2)パスワード忘れ接続先(URL)
ちなみに、Excelシートデータの保存先は、また別の接続先で、
ログイン接続先のデータベースに保存先を保持しています。
また、パスワードの暗号化は別の方式です。
3×2.5cmの写真が2枚、次回までに必要と言われたので
今日、近所のコイデカメラで焼増ししてきました。
履歴書用の4×3cmは既に撮ってあったので、今回は焼増しです。
就活は出費がかさみます。
コイデカメラに単1アダプターが売っていたので、ついつい買ってしまいました。
家のガスレンジに単1電池が必要で、ここだけエネループじゃなかったためです。
次回電池交換への投資です。
趣味のプログラミングでは、暗号化した個別設定情報を復号化して、
画面上でハンドリングする機能を制作し、
xHis(Excel履歴管理ツール)に追加しました。
(1)ログイン接続先の切替え機能(名称とURL)
(2)パスワード忘れ接続先(URL)
ちなみに、Excelシートデータの保存先は、また別の接続先で、
ログイン接続先のデータベースに保存先を保持しています。
また、パスワードの暗号化は別の方式です。
2015年01月31日
暗号化アルゴリズムを強化
今日は土曜日なので直接的な就活はお休みにして
趣味のプログラミングに集中します。
50過ぎで転職回数も多い私は
普通に面接受けても間違いなく落とされるので
趣味のプログラミングも間接的な就活です。
xHis(Excel履歴管理ツール)は、
サーバサイドに、Apache + PHP + MySQL
クライアントサイドに、.NET WPF(C#) + Excel
通信方式に、https
の構成で、Excelのシート単位に更新履歴を管理します。
これまでの職場では、
データベースは、Oracle、PostgreSQL、SQL Server
サーバサイドは、Apache(C++)、Tomcat(Java)、ASP(C#)のWebアプリケーション
クライアントサーバアプリケーションは、MFC(C++)
Webアプリケーション以外の通信方式は、Windows socket
での開発が主体でしたので
これまでの職場では経験していない技術を中心に
趣味のプログラミングで磨いて
就活にも活かすつもりです。
タイトルの暗号化アルゴリズムは、独自方式で個別設定情報を
暗号化するもので、クライアントサイドのC#モジュールに組み込みました。
(パスワードの暗号化は一般的な方式で別になります)
文字列をバイナリデータとして暗号化して、
バイナリモジュールの中に埋め込みました。
特にオンプレミス化で重要になると考えています。
汎用化のために思った以上に時間がかかりましたが、
xHis以外アプリケーションでも使えるので良しとします。
明日は、暗号化した個別設定情報を復号化して(アルゴリズムは今日作成済)、
画面上でハンドリングする機能を制作します。
趣味のプログラミングに集中します。
50過ぎで転職回数も多い私は
普通に面接受けても間違いなく落とされるので
趣味のプログラミングも間接的な就活です。
xHis(Excel履歴管理ツール)は、
サーバサイドに、Apache + PHP + MySQL
クライアントサイドに、.NET WPF(C#) + Excel
通信方式に、https
の構成で、Excelのシート単位に更新履歴を管理します。
これまでの職場では、
データベースは、Oracle、PostgreSQL、SQL Server
サーバサイドは、Apache(C++)、Tomcat(Java)、ASP(C#)のWebアプリケーション
クライアントサーバアプリケーションは、MFC(C++)
Webアプリケーション以外の通信方式は、Windows socket
での開発が主体でしたので
これまでの職場では経験していない技術を中心に
趣味のプログラミングで磨いて
就活にも活かすつもりです。
タイトルの暗号化アルゴリズムは、独自方式で個別設定情報を
暗号化するもので、クライアントサイドのC#モジュールに組み込みました。
(パスワードの暗号化は一般的な方式で別になります)
文字列をバイナリデータとして暗号化して、
バイナリモジュールの中に埋め込みました。
特にオンプレミス化で重要になると考えています。
汎用化のために思った以上に時間がかかりましたが、
xHis以外アプリケーションでも使えるので良しとします。
明日は、暗号化した個別設定情報を復号化して(アルゴリズムは今日作成済)、
画面上でハンドリングする機能を制作します。