まさしく、『 全個皆完 』。
10月18日はWindows8.1のリリース日!!
あと1週間、楽しみです☆
…弊社ソフトの全システムチェック作業が待っているんですけどね…f^-^;うちのMacちゃんは「Mountain Lion」と「Snow Leopard」の2台。
こっちもアップデートしなきゃなぁ~と悩んでいます。
Mac向けにソフトは提供していないので、こちらはお気楽なもんです。
AndroidとiOSも最新にしたいなぁ~。
あ、うちの自宅サーバ( CentOS [Linux] )もバージョンアップしなきゃ!!
…って、どんだけOSあるんだ!!!!!! (職業柄仕方ないですね…w)
この前、経営者が集まる法人会の幹部勉強会がありました。
私、今期の広報委員長になってしまったので、初めて参加したんですが
その時の講話テーマが「 全個皆完 」
「物事をすべて良しとした見方の原理」というやつです。
長いものも短いものも、それぞれ完全だと考え、
不平不満を減らしましょう。
リーダーならば、どんなことが起きても皆が喜べる方向へ導いていきましょう!
という勉強会の内容でした。
なるほど~。
じゃあ全個皆完の精神で、『 システムの不具合も良し 』としてくれませんか(笑)
…と思ったのは内緒w
さて、現在そのシステム不具合の渦中にいるわけです。
先月、弊社システムの通信部分に不具合があることが発覚。
といっても滅多なことでは起きないトラブルなのですが、
通信に利用しているソケットライブラリというソフトウェアの部品の問題のようです。
この際なので、弊社製品のすべての通信部分を見直すことにしました。
日本にはあまり情報がなかったのですが、
海外はロシアやインドに、同じような問題で悩んでいる企業や
エンジニアの方がいましたので、そこからアドバイスを頂きました。
オープンソースである、Indyというソケットライブラリが
なかなか優秀だということで、簡単なテスト用ソフトを開発しチェックしてみました。
作ったソフトはこんな画面。
ちなみに、開発環境BCB5を利用している方で、
64bit開発環境の方は、bplの配置先が違うので注意して下さいね。
うまくコンパイルできませんので。
前回利用していたTNMFtpをある程度意識した作りになっているようで、使いやすそうです。
サーバのディレクトリ構造を取得するロジックを載せておきます。
私と同じように悩んだ方の参考になれば幸いです。
だいぶ端折ってますが…f^-^;
KM_FTPという自作通信ライブラリ(NMFTPのラッパー)の修正だけで
ほとんどの弊社製品の通信部分の不具合修正が完了します。
ちょっとホッとしました☆
これからはこんな問題が起きても、対処していけるでしょう。
まさに「トラブルは人生の肥やし」。
なるほど、「全個皆完の精神」は社長だけでなく、仕事やプライベートにも当てはまる
物事の真理、と言えましょう。
こういうことが学べる「経営者モーニングセミナー」、是非参加しませんか?(笑)
facebookで言って下されば、日時や会場までご案内いたします(^-^)
【 FTPサーバのディレクトリ構造を取得するロジック(超簡易版) 】
接続(タイムアウト指定) -> Listメソッドで一覧取得 -> DirectoryListingの個数分ループして取得
っていう流れになるかと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
TStringList *pList = new TStringList; // ディレクトリ構造用に動的生成 TStringList *pSize = new TStringList; // ファイルサイズ(B) 用に動的生成 ListView1->Items->Clear(); // 出力先クリア TListItem *pItem; // ListViewの行ポインタ try { try { IdFTP1->Connect(true,10000); // TimeOut IdFTP1->List(NULL,"",true); for (int i=0; i < IdFTP1->DirectoryListing->Count; i++) { if(IdFTP1->DirectoryListing->Items[i]->ItemType == ditFile){ pList->Add(IdFTP1->DirectoryListing->Items[i]->FileName); pSize->Add(IdFTP1->DirectoryListing->Items[i]->Size); } else { // Directory pItem = ListView1->Items->Add(); pItem->Caption = IdFTP1->DirectoryListing->Items[i]->FileName; pItem->SubItems->Add(""); pItem->ImageIndex = 0; } } // File for (int i=0; i < pList->Count; i++) { pItem = ListView1->Items->Add(); pItem->Caption = pList->Strings[i]; pItem->SubItems->Add(pSize->Strings[i]); pItem->ImageIndex = 1; } }catch(...){ ShowMessage("エラーっす!"); } }__finally { delete pList,pSize; // メモリ解放 ShowMessage("一覧表示しました"); IdFTP1->Disconnect(); // 切断 } |