2023年11月30日
開発体勢の変更 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
お休み中いろいろ考えたのですが、開発の体制を変更したいと思います。
今まで、毎日決めた時間ではないのですが、 隙間時間に開発 をしてきました。しかし、それでは、なかなか進捗が得られません。そこでですが、開発を週末に集中的に行います。ようは、 土、日曜日を開発の日 にするということです。
先週まで開発の進捗が得られなかったのは、エンジンがかかってきたと思ったところで、開発をやめて次のことをやることが多かったためです。
なお、現在週末と限定していますが、中小企業診断士の勉強の方が進み、1次試験の見通しがたった段階で、週末だった開発を、金曜日、木曜日といった感じで、 週に開発する日数を増やしていきたい と思います。
[システム開発方針〜画面系・HTML〜]
画面のデザインなのですが、Prototype EVEでは、クライアント、サーバーサイト両方で行っています。それは、開発当初は、サーバーサイトのみでやっていたのですが、HTMLのタグの属性の多くを廃止し、画面の表現をCSSで統一すると言う方針が W3C から示されたことによります。そのときは、示されただけであって、確定したわけでもないし、廃止されるとも決まっていなかったので、新規開発分から徐々に移行していたのですが、不徹底だったため、混在するようないびつなシステムとなっています。
[廃止されたHTML5]
HTML5 が 2021年1月28日に廃止 されました。それに伴い、HTML5の仕様の変更に消極的だったW3Cが、 WHATWG が策定する HTML Living Standard を採用しました。 デファクトスタンダード が、 デジュリスタンダード へ格上げされたといった感じでしょうか?
これにより、アナウンスしていたとおり、画面の表現をCSSで行うことが明確になり、ウェッブページのデザインとコンテンツが分離されました。
実は、このブログを付けるまでこの事実は知らなかったのですが、デザインをクライアント側で実施するという決断は間違っていなかったようです。
但し、W3Cからのアナウンスでは、HTML Living StandardはHTML5だといった発言もあり、大きな変更はないようです。そのため、仕様を変更する猶予は与えられているようです。
[あとがき]
週末は、Knowlegeシステムの動作確認から始めます。それが終わったら。データベースにインデックスを付与して、バッチシステムの製造の準備に入ってと盛りだくさんです。週末、開発中心にすることにより、どのくらいの進捗があるのかたのしみです。
では、また!
■HTML5の廃止の影響は?知識を無駄にしない仕様変遷を紹介!(アンド エンジニア)
https://and-engineer.com/articles/YWfi7BIAACEADd6C
2023年11月22日
JavaScript 〜プログラム研究室〜
こんにちは!
ナビゲータのEVEです。
JavaScript って知っています?名前から Java とつくので、何となく親戚のような雰囲気を出していますが、実は全く関係がありません。ただ、今まで知りませんでしたが、以前からオブジェクト指向という扱いだったらしいです。プログラミングしていてオブジェクトもどきという気がしていましたが・・・。
JavaScriptって他のプログラミング言語と違って、クライアント側で動作する(サーバーサイトで動作するモノもありました)ため、ユーザーがそのプログラムを見ることができます。たまたまアクセスしたサイトで面白い動作をするサイトがあったので、そのソースを見たのですが、自分が作ったことがないような作りになっていました。それがどうも オブジェクト指向 のJavaScriptと言われるモノだったらしいのです。それが分かった、今でも、難解複雑なそのようなプログラミングをするつもりはありません。
PHP 5は過去に、オブジェクト指向言語ではないとインターネットでは言われてきました。多分オブジェクト言語だと言っていたのは、私が運営しているサイトぐらいです。ただ、そのPHP5と比較してもオブジェクト指向とは言えないような言語体系にもかかわらずオブジェクト指向として扱われてきたのは非常に疑問です。
2015年に、JavaScriptの標準化バージョン ECMAScript 2015 がリリースされたことにより、本格的に普通の人が知っているオブジェクト指向言語になったようです。
[ECMAScript 2015]
ECMAScript 2015の公開は、2011年で、その4年を経て正式リリースとなったようです。標準化団体は、 欧州電子計算機工業会 (ECMA: European Computer Manufacturers Association)で、その団体の略称を頭につけているようです。
標準化と言われると、統一された言語なのに何かおかしな気がしますが、そもそも、JavaScriptは、 Netscape 社のNetscape上で動作するプログラムでした。それが、 Internet Explorer などのいろいろなブラウザでもサポートされるようになりました。そうです。JavaScriptは ブラウザ によりその動作を異にします。顕著なのが文字コードの扱い方です。NetScape系は文字列を1バイトで認識しますが、IE系は、1文字は1文字として認識します。これ以外にもいろいろな違いがあるのですが、とりあえず、ブラウザにより動作が違い、その動作の違いを標準化しようとした団体があったと言うことです。
[ECMAScript 2015]
実は、PHPをオブジェクト指向言語として書き換えようとしている現在、JavaScriptもオブジェクト指向言語に書き換えようかと考えています。今 とほほ のサイトで言語仕様を確認しているのですが、JavaとかPHPを見ているような、なじみのある言語体系となっています。 インターフェース とか 抽象クラス とか言った部分については限定的で、本格的なオブジェクト指向言語となるのにはまだ、時間がかかりそうです。ただ、方向性としては、同機能もサポートする方向にあるようなので、その機能が導入されることを意識してプログラミングした方がいいようです。
[あとがき]
明日からしばらく、ゼロからはじめるシステム開発、システムエンジニアが目指す中小企業診断士ともに更新をお休みします。たまには休みを取りませんと・・・。
この休み中、休み明け何をするのかじっくり考えながら過ごしたいと思います。
では、また!
■JavaScript って何?(とほほ)
https://www.tohoho-web.com/js/what.htm#ECMAScript
2023年11月21日
セッションタイムアウト 〜プログラム研究室〜
こんにちは!
ナビゲータのEVEです。
今日中に、Knowlegeシステムの改修を終える予定でしたが、あきらめました・・・。これから予定も入っていますし、この辺にしたいと思います。
[今日の問題点〜mktime〜]
Knowlegeシステム を動かしながら改修作業を進めていくと、 セッションタイムエラー になります。なんでだろう〜〜〜〜っということで、フレームワークに突っ込んで調査してみて分かったこと・・・。date関数のmaketimeがうまく動作していない・・・。
Prototype EVEでは、厳格にセッションタイムを管理したいという構想があったため、セッションタイムの管理は、フレーム側でやっています。
以下が、今回の問題のロジックなのですが、まず、文字タイプエラー・・・。
以下の$By、$Bm、$Bd、$Bh、$Bi、$Bsは、substrで文字列を切り出しているので、文字列として各変数に格納されています。その文字列を date関数 に引数として渡すとエラーになります。
//セッションタイムアウト時間を算出する
//基準日の分離(現在日付を取得する。)
$By = substr($AccessTime,0,4);
$Bm = substr($AccessTime,4,2);
$Bd = substr($AccessTime,6,2);
$Bh = substr($AccessTime,8,2);
$Bi = substr($AccessTime,10,2);
$Bs = substr($AccessTime,12,2);
//現在時間(秒)にセッションタイムアウトの秒数を加算する
$Bs = $Bs + $SessionTimeOut;
//セッションタイムアウトの時間を算出する
$getTime = date ("YmdHis", mktime ($Bh,$Bi,$Bs,$Bm,$Bd,$By));//
//セッションタイムアウトかどうか判定する(現在時刻とセッション
タイムアウト時間の比較)
if ( $nw > $getTime ) {
//セッションタイムアウトの場合、エラーステータスを設定し
呼び出し元へ制御を移す
return "E0018";
}
それでは、ということで、 integer型に数値変換 して渡すと、今度は、日付が1990xxxxxxxxxxxxxxって表示される・・・。現在日付に、想定しているセッションタイムの時間を加算しているのだから、1990年という日付は考えられない・・・。
ちょっと、粘ったのですが、解消される見込みがなかったので、ChatGPTに相談して以下のように変更しています。
// 現在の日時を取得
$currentDateTime = new DateTime();
//現在時間(秒)にセッションタイムアウトの秒数を加算する
$secondsToAdd = (int)$Bs + (int)$SessionTimeOut;
// 現在の日時に秒を加算
$currentDateTime->add(new DateInterval("PT{$secondsToAdd}S"));
// 加算後の日時を取得
$getTime = $currentDateTime->format("YmdHis");
//セッションタイムアウトかどうか判定する(現在時刻とセッションタイム
アウト時間の比較)
if ( $nw > $getTime ) {
//セッションタイムアウトの場合、エラーステータスを設定
し呼び出し元へ制御を移す
return "E0018";
}
これで、セッションタイムエラーは解消されました。
ただ、オブジェクト指向で作っていないプログラムに、1箇所だけオブジェクト指向のロジックを入れるのは、あまり好きではないのですが・・・。ただ、このロジックが後日問題になるとは思えませんし、このロジックで改修作業を進めます。
[あとがき]
外部キーを設定するためにはじめたシステム改修作業なのですが、途中ですがやめたくなりました。ただ、改修後は、現在自宅で更新しているKnowlegeシステムをインターネット上に公開して更新したいとか思っていたりして・・・。そのため、つい最近、「 Webデザインの基本 」という本を図書館から借りてきました。システムまわりには強いつもりなのですがデザイン系がイマイチです。そのため、1から勉強しようと考えていたのですが・・・?
いちばんよくわかるWebデザインの基本きちんと入門[第2版] レイアウト/配色/写真/タイポグラフィ/最新テクニック [ 伊藤 庄平 ]
価格: 2640円
(2023/11/21 12:17時点)
感想(3件)
数日で改修できないという状況になりましたら、途中で放棄し、Yahooのクローニングシステムの製造に入ります・・・。もったいないけれどね・・・。
では、また!
2023年11月20日
Knowlegeシステム 〜プログラム研究室〜
こんにちは!
ナビゲータのEVEです。
外部キーの設定により、検索の速度が速くなったことを確認したいと考えています。その対象のシステムとして、 Knowlgeシステム で確認しようとしたのですが、動かすまでが思った以上に大変のようです。
[関数認識できない]
今まで、管理システムを動かすことだけを想定しシステムを改修していたため、他のシステムを先日まで動かしていませんでした。動かす前までは、すぐに何とかなるだろうと思っていたのですがうまくいきません。
その最大の要因は、違う階層のアプリケーションから関数を呼び出すとエラーになる。ようは、ルートディレクトリから2階層目のアプリケーションでは動作は正常に動くのだが、3階層目のアプリケーションから呼び出すとエラーになります。エラーとは、定義した関数またはクラスが認識できないらしいのです。
調べていくと、今回から関数内で、関数を呼びだすと言うことを実施しています。今までは、関数を含めて、イベントにより起動するアプリケーションで使用する関数は、呼び出し元ですべて定義するという仕様だったのですが、オブジェクト指向言語にすることによりそれをやめました。それにより、各アプリケーションでは、関数またはクラスを使用するアプリケーション側で require から require_once に変更しています。
requireでは、1イベントで起動する関数、クラスまたはアプリケーション内で、重複する関数またはクラスを定義するとエラーになります。但し、require_onceを使用すると、どこの関数、クラスまたはプリケーションで同じものを定義してもエラーになりません。
仕様の違いについてChatGPTに聞いてみました。
■require
requireは、指定されたファイルを読み込みます。
ファイルが存在しない場合や読み込みに失敗した場合、致命的なエラー(Fatal Error)が発生し、スクリプトの実行が停止します。
同じファイルが複数回requireで読み込まれた場合、その都度再度読み込まれます。これにより同じコードが複数回実行される可能性があります。
■require_once
require_onceも指定されたファイルを読み込みますが、そのファイルがまだ読み込まれていない場合にのみ、一度だけ読み込みます。
ファイルが存在しない場合や読み込みに失敗した場合、致命的なエラーが発生し、スクリプトの実行が停止します。
同じファイルが複数回require_onceで読み込まれた場合、最初の一回のみが実際に読み込まれ、それ以降は無視されます。
どちらを使用するかは状況によります。通常、同じコードが複数回実行されて問題が生じる場合はrequire_onceを使用し、複数回実行されない場合はrequireを使用します。
[あとがき]
以上のような状況のため、require_onceで定義するアドレスを相対アドレスから絶対アドレスに変更しました。但し、すべてのものを変更するのは工数がかかるので、今回は、関数、クラスだけを絶対アドレスに変更しています。
以上の対応により、require_onceによるエラーがなくなったのと同時に、その他のエラーも減っています。但し、その他にも、いろいろとありました。しかし、今日、一通りのバグをつぶしたので、明日から、Knowlegeシステムでの検証作業に入ることができそうです。
バージョンアップって大変ですね・・・。早くやりたいという気持とは真逆にどんどん遅れていきます。
システム開発に集中できる環境が整えばいいのですが・・・?
では、また!
2023年11月17日
情報セキュリティ10大脅威 2023 〜セキュリティ研究室〜
こんにちは!
ナビゲータのEVEです。
今日は、雨・・・。憂鬱な金曜日です。
お約束通り、午前中にブログを更新しています。ただ、昨日帰りが遅くなったこともあり、朝は早く起きれませんでした。予定の生活リズムになるには時間がかかりそうです。今日は夜遅くなるような要因はないので、早く寝るというところから始めましょうか?
[情報セキュリティ10大脅威 2023]
去年も御紹介した、情報セキュリティ10大脅威について、今年も見ていきましょう。
本情報は、IPAから提供されており、以下のようになっています。
情報としては、個人と組織で分けて紹介しています。
【個人】
1位 フィッシングによる個人情報等の詐取(前年は1位)
2位 ネット上の誹謗・中傷・デマ(前年は2位)
3位 メールやSMS等を使った脅迫・詐欺の手口による金銭要求(前年は3位)
4位 クレジットカード情報の不正利用(前年は4位)
5位 スマホ決済の不正利用(前年は5位)
6位 不正アプリによるスマートフォン利用者への被害(前年は7位)
7位 偽警告によるインターネット詐欺(前年は6位)
8位 インターネット上のサービスからの個人情報の窃取(前年は8位)
9位 インターネット上のサービスの不正ログイン(前年は10位)
10位 ワンクリック請求等の不当請求による金銭被害(圏外)
【組織】
1位 ランサムウェアによる被害(前年は1位)
2位 サプライチェーンの弱点を悪用した攻撃(前年は3位)
3位 標的型攻撃による機密情報の窃取(前年は2位)
4位 内部不正による情報漏えい(前年は5位)
5位 テレワーク等のニューノーマルな働き方を狙った攻撃(前年は4位)
6位 修正プログラムの公開前を狙う攻撃(ゼロデイ攻撃)(前年は7位)
7位 ビジネスメール詐欺による金銭被害(前年は8位)
8位 脆弱性対策の公開に伴う悪用増加(前年は8位)
9位 不注意による情報漏えい等の被害(前年は10位)
10位 犯罪のビジネス化(アンダーグラウンドサービス)(圏外)
[個人の情報セキュリティ10大脅威]
基本的に脅威は変わっていません。1位〜9位までは不動って言う感じです。去年から今年にかけて消えた項目は、9位だったインターネットバンキングです。昔と違って現在銀行のシステムがインターネット上に公開されている状況です。セキュリティ的に防御されているとは言え、まだまだ多いと思われます。ランキングには掲載されていませんが、気をつけて下さい。
ざっと見た印象ですが、2つの要因に分類できます。1つ目は ITリテラシーの不足 ・・・。2つ目は 法律の知識不足 です。
ITリテラシーの不足では、ソーシャルエンジニアリングなどの手法により狙われていると言った印象があります。
法律知識の不足という部分では、2位のネット上の誹謗・中傷・デマ(前年は2位)と10位のワンクリック請求等の不当請求による金銭被害(圏外)の状況からそう感じます。
もし、脅威を減らそうとするなら、ITリテラシーを高め、かつ、法律を知れば、脅威が弱まる、またはなくなるのかもしれません。
[組織の情報セキュリティ10大脅威 〜セキュリティホール〜]
組織の情報セキュリティは、4つに分類できます。 セキュリティホール 、 内部犯行 、 ソーシャルエンジニアリング 、そして 犯罪のビジネス化 という4つです。
セキュリティホールは、情報処理安全確保支援士などの力を借りて、なくす方向で考えるしかないようです。興味深いのは、 サプライチェーンの弱点を悪用した攻撃 (前年は3位)が2位にはいっているということ・・・。
どんな攻撃か解説すると、一般的なモデルと言うことになりますが、子会社から親会社のネットワークにアクセスし攻撃します。なぜ、子会社なのか?それは、規模の小さい子会社は、セキュリティにお金をかけることができず、脆弱性を抱えている現状をうかがい知ることができます。ようは、お金をかければセキュリティを高めることができます。
ゼロ・トラスト 、ようはすべての通信を疑うと言った考え方が主流となってきている現在セキュリティ費用は高くなることはあっても、安くなることはないでしょう?このような状況は、これからず〜っと続くのかもしれません。
[組織の情報セキュリティ10大脅威 〜内部犯行〜]
内部犯行を語る場合、 不正のトライアングル という言葉で解説されることがあります。
不正のトライアングルとは、3つの要素が揃ったときに、人は不正行為を働くとしています。それは、
動機
機会
正当化
です。
アメリカの犯罪学者 ドナルド・クレッシー 氏が提唱した、組織内の要員が不正を起こすメカニズムを分析した理論です。
それでは、以上の動機、機会、正当化という犯罪メカニズムの脅威を減らす方法について考えてみましょう。
動機を減らすには、部下とのコミュニケーションを密にし、公私においてどんな悩みを抱え、その悩みを軽減してあげる努力が必要なのかもしれません。
機会を減らすには、業務運用、システムで軽減する方法が考えられます。
そして、正当化を減らすには、SPC( サービスプロフィットチェーン )を高めることにより軽減する方法が考えられます。SPCについては、解説すると長くなるので、解説しているサイトを下記に記します。なお、この SPC は中小企業診断士における企業経営理論の試験範囲です。機会がありましたら、ブログに書きます
[組織の情報セキュリティ10大脅威 〜その他〜]
ソーシャルエンジニアリングは、ITリテラシーを組織として高めるしかないでしょう?セキュリティの考え方を教え、その考え方で行動するということを心がけるしかないです。
そして、犯罪のビジネスですが、一般社会で騒がれている、オレオレ詐欺とか組織的強盗などの犯罪が、ITの世界にもはいってきた印象があります。今後、注視していきたいと思います。
[あとがき]
文中にお金をかければ、セキュリティが減るという話をしてますが、 残念ながらゼロにはなりません 。お金をかけても、知識を持っていても、セキュリティインシデントに遭遇するケースはあります。
ただ、セキュリティリスクが減るということは事実なので、今までのセキュリティインシデントを分析し、どうしたらいいのかということを、考えていかなければいけません。そして、このようなランキングを見ることにより、限りあるリソースを割り振る比重を考える機会にしてください。
では、また!
■情報セキュリティ10大脅威 2023(IPA)
https://www.ipa.go.jp/security/10threats/10threats2023.html
■サービスプロフィットチェーン(SPC)とは?顧客と従業員の満足度が企業収益に繋がる仕組みを解説(EmotionTech)
https://emotion-tech.co.jp/column/2019/what_is_service_profit_chain/
2023年11月16日
外部キーの導入を検討する 〜データベース研究室〜
こんにちは!
ナビゲータのEVEです。
何やってもうまくいかない日が続いています。そこで、ちょっと、生活リズムを変えようと考えています。
まず、このブログですが、現在、16:00ぐらいから書きはじめて、17:00ぐらいにアップロードしようとしていますが、それを午前に行います。
それに加えて、午前中は、簿記と開発をしようかなって考えています。今、起きる時間を7時に設定しているのですが、なかなか実現できません。寝る時間が増えれば増えるほど、この2つの割り当て時間が減ります。逆に早く起きれば、時間が増えるので、早く起きるようになると思うのですが・・・?それと、ブログの公開時間を17:00ぐらいに設定していても、なかなかその時間にできません。遅い場合は、午前様になることがあります。そうなると寝る時間が減るので、悪循環になっています。この生活リズムの変更により好循環になるかなって考えていますが、どうでしょうか?明日から試してみます。
[Prototype EVEのデータベース変更]
以上のような状況で、なかなか開発の進捗がない状態なのですが、明日からやってみたいことがあります。それは、 外部キーを設定 すること・・・。今まで、すべてのレコードに主キーは設定しているのですが、外部キーは今まで設定していませんでした。理由は、当初、私の開発環境では、利用できなかったから・・・。そのため、導入せずに開発を進めました。その後環境を手に入れたのですが、処理速度に問題を感じなかったため、今まで導入していませんでした。開発当初、 主キーが1項目しか指定できなかった り、 トランザクション が利用できなかったりいろいろと不都合があり、業務で開発するシステムと比較すると、かなりチープな印象がありました。
ただ、ChatGPTに以上の改善がいつ行われているのか聞いてみると以下のような回答がありました。
トランザクション → 2002年1月
主キーに複数の項目を指定 → 2005年3月
開発が2004年からなので、少なくともトランザクションのほうは利用できたはずです。実は、標準MySQLという本に開発環境が一式入っていてそれを利用していたのですが、その本に添付されていたソフトが古かったようです。
【中古】 標準MySQL RDBの理解からWebアプリケーションの開発と運用 / 田中 ナルミ, 阿部 忠光, ソフトエージェンシー / ソフトバ [単行本]【メール便送料無料】【あす楽対応】
価格: 743円
(2023/11/16 14:57時点)
感想(0件)
今から考えるとトランザクションを利用できないとか、主キーが複数指定できないとか、かなり間抜けな開発をしていたものだと思います。
なお、現在は、 最新のソフト を利用することを心がけています。
[外部キーの指定の仕方]
具体的にはどうしたらいいのでしょうか?ChatGPTに聞いてみました。
#子テーブル名
ALTER TABLE orders
#外部キーの制約名
ADD CONSTRAINT fk_orders_customer
#/子テーブルの外部キーカラム
FOREIGN KEY ( customer_id )
#親テーブル
REFERENCES customers (
#親テーブル主キーカラム
customer_id );
以上の通りです。なお、外部キーの制約名なのですが、任意で指定できますが、データベース内で一意に命名する必要があります。利用方法は、後日外部キー制約の変更または削除する際に使用します。データベースの保守やデータベース設計の追跡のために、わかりやすくかつ一意な名前を付けることが一般的だそうです。なお、この外部キーの制約名は必ず付与しなければならないというわけではなく、管理という面から付与するのが普通です。
[あとがき]
以上により、まずは、Knowlegeシステムから外部キーをしていきたいと思います。以前から遅い遅いと思っていました。その主因として考えていたのは、SQL文そのものです・・・。そのSQL文を見直すという作業は時間がかかるため、安直にできる方法として、外部インデックスを付与する方法を考えつきました。現在、サーバーではなく、WindowsXPが動いていたパソコンでKnowlegeシステムを動かしているのですが、
今どき、外部キーを指定していないデータベースシステムなんてないですよね?EVEシステムでは、適切に外部キーを設定していきたいと思います。
では、また!
2023年11月13日
WinSCPで更新したプログラムの更新日付が変わらない 〜プログラム研究室〜
こんにちは!
ナビゲータのEVEです。
本日 憂鬱 なことがあり、だらだらと過ごしてしまいました。
まっ、こういう日もあります。
[障害報告]
ということで、今日は、Studyingの問題数問解いただけで、あまり、開発のほうは手付かずなのですが、ここ数日やっていて問題があった点について報告します。
Prototype EVEでは、データベースだけでなく、ディレクトリ及びファイルについても管理システムから直接アクセスできるようなインターフェースを用意しています。分かりやすく話すと、Windowsにインストールされている、 エクスプローラーのWeb版 です。
それを、今回データベース管理システムを修正するついでに動かしてみたのですが、 動かない 。アクセス権エラーになります。そういえば、現在のテスト環境をVMWare上で構築したとき、WinSCPでただアップロードしただけでした。それでは、 アクセス権エラー になるはずです。
そのエラーの対応策として、フォルダ・ファイルの所有権をApacheに変更し、アクセス権を所有者及びグループに属するユーザーにフルアクセスできるように変更しました。
これで、問題がなくなったと思ったのですが、WinSCPでサーバーのファイルを直接修正しようとするとエラーになります。エラーになった後、ファイルを閉じて再表示すると内容が変わっているところからどうも更新はできているようです。
メッセージをよく見ると、 タイムスタンプエラー となっています。
[インターネットで調べてみると・・・]
とりあえず、どうしてなのか知識がないので、インターネットで調べまくりました。そして、分かったこと・・・。Linuxってタイムスタンプの更新は所有者しかできないらしい???ただ、ChatGPTに質問すると、そんなことはありませんという解答がありました???現に、ファイルに対する権限を所有者と同じものを持っていて、WinSCPではタイムスタンプを更新しない設定にしてくださいという案内がきています。
じゃ、ということで、WinSCPでroot権限でログインできないのか調べたところ、できないようですね・・・。セキュリティ的には合格ですが使い勝手が悪すぎます・・・。
[ChatGPTとの対話]
原因が分からないので、引き続きChatGPTと対話をしてみました。ChatGPTが考える原因に、以下の3つを上げています。
?ファイルシステムの設定の問題
?WinSCPの設定の問題
?ファイルの所有者や権限の問題
?について調査をすると、WinSCPからは「ファイルのタイムスタンプの更新をしない設定にすればエラーになりません」っと回答がありました。現在は?の設定で運用しています。手順としては、以下の通りです。
1)[メニュー]をクリックする
2)表示したメニューから[オプション]を選択
3)表示した画面から[環境設定]を選択
4)(左画面)[転送]を選択
5)(右画面テキストボックス)[デフォルト]を選択
6)(右画面)[編集(E)]を選択
7)[共通設定]を選択
8)タイムスタンプを保存する(M)からチェックボックスを外す
以上の操作によりエラーメッセージは出力されなくなります。但し、タイムスタンプは変更されません。
?については、ログインするユーザーに、Apacheの権限、Ubuntuでは、 www-data なのですが、そのグループを追加しています。
では、問題は?でしょうか?
[タイムスタンプを更新したい]
やはりタイムスタンプを更新したいということで、?について深掘りしてみました。問題は、 ext4 というファイルシステムを採用していないとこのような可能性があるようです。では、ext4とはどういうファイルシステムなのでしょうか?ChatGPTに聞いてみました。
ext4(Fourth Extended Filesystem)は、Linuxにおいて広く使用されているファイルシステムの一つです。以下は、ext4 ファイルシステムに関する主な特徴や概要です:
?拡張性と性能向上
ext4 は、前身である ext3 からの進化により、ファイルシステムの拡張性と性能が向上しています。特に、ファイルシステムのサイズの制限が増加し、大容量のディスクやファイルに対応しています。
?ジャーナリング
ext4 はジャーナリングファイルシステムであり、ファイルシステムの安定性と復旧性を向上させます。ジャーナルにより、予期せぬシステムクラッシュや電源の突然の切断などからの回復が迅速に行えます。
?バックワード互換性
ext4 は ext3 とのバックワード互換性があります。そのため、ext3 ファイルシステムからアップグレードすることができます。これにより、既存のシステムを ext4 に移行する際の手続きが簡略化されています。
?大容量サポート
ext4 は非常に大きなファイルシステムをサポートしており、数エクサバイト(1エクサバイト = 1億ギガバイト)のサイズのファイルシステムを処理できます。
?データの保存形式
ファイルやディレクトリのメタデータはBツリー構造を使用しています。これにより、検索や更新の効率が向上しています。
ext4 は多くのLinuxディストリビューションでデフォルトのファイルシステムとして使用されており、信頼性と性能のバランスを取ったファイルシステムです。
以上です。ただ、以上のファイルシステムを採用しているだけではだめで、 mount コマンド等で設定が有効かどうか確認してみます。
# mount | grep ext4
/dev/mapper/ubuntu--vg-ubuntu--lv on / type ext4 (rw, relatime )
/dev/sda2 on /boot type ext4 (rw,relatime)
mountコマンドから見ると、Ubuntuではタイムスタンプの更新に制限をかけていないようです。ちなみに「cat /etc/fstab | grep ext4」で実行した結果からは判断できませんでした。
[あとがき]
これ以上調べるのは時間の無駄なので、不都合が生じたら深掘りしたいと思います。 暫定的な対応として、WinSCPを使用してプログラムファイルを更新する場合、クライアント側にダウンロードして、修正しタイムスタンプが変わったものをサーバーサイトへアップロードするという運用 にします。
Prototype EVEを自宅で開発していた時は、 Samba を使用していました。しかし、今回は、Xserver上にシステムを構築するため、Sambaというわけにはいきません。そこで、採用したのが、WinSCPです。 TeraTerm だといちいちコマンド打たなきゃいけないし、効率性が失われるので、WinSCPでの開発はマストです。
ちょっと、うだうだしていて、気分が晴れました。明日からはがんばりましょう!ただ、開発に軸足を置くのか、勉強に軸足を置くのか現在考えています。システムに軸足を置いた場合、一日ってあっという間に過ぎてしまいます。多分勉強する時間は取れないのでしょうね?どうしようかな???
では、また!!!
■Samba [ソフトウェア研究室](2023年7月02)
https://fanblogs.jp/bahamuteve/archive/343/0
2023年11月12日
WordPress移行作業 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
開発を進めるのと同時に現在、Xserverの受入準備を進めています。
第1段・・・。 WorldPress の文書を全てPrototype EVEの Knowledge システムへ移行しようとしたのですが、そこでまた問題が・・・。
[パスワードが残っていない?]
早速、pro2grammer.comのWorldPressへログインをしようとしたのですが、ログインできない・・・。いつもだったら、WorldPressにアクセスすると右上部に、「こんにちは、○○さん」というリンクタグが表示され、そのリンクタグをクリックすることによりログインできるのですが、 表示されていない ・・・。そういえば、WordPressインストール以来、管理者のログイン画面を見たことがありませんでした。しかも、管理者のログインするためのページのURLを忘れている・・・。
早速インターネットで管理者画面のURLについて調査・・・。
それにより、ブログのホーム画面のURLに/wp-admin/または/wp-login.phpを付加することにより表示されると判明・・・。
その通りにしたところ、管理者のログイン画面が表示されたのですが、 ユーザIDが表示されていない ・・・。
そのため、以前メモしておいたユーザIDとパスワードを入力してログインを試みるのですが、ログインできない・・・。
仕方がないので、パスワードを変更しようと、pro2grammer.comの管理者ユーザーのメールアドレスにパスワード更新の依頼を送信したのですが、ここでも問題が・・・。
2022年12月21日でした。普段利用しているノートパソコンから「 システムがスタックベースのバッファーのオーバーランを検出した 」というメッセージが表示されました。このバッファオーバーランというメッセージからハッキングの可能性もあると判断し、即刻、OSからインストールしました。普通だったら、バックアップを取っていたのですが、 バックアップミスにより、以前のパスワードの情報などは残っていません 。ショックです・・・。shareholder.tokyoだったら残っていたのですが・・・。shareholders.tokyoのWordPressの構築に関する記事をブログで調べると、2023年1月に構築していました。OSを再インストールした後だから、情報が残っていたのですね・・・。
それではということで、pro2grammer.comの管理者ユーザーのメールユーザーをメールクライアントに登録し、WordPressからのメールを受信しようとしたのですが、ここでも問題が・・・。pro2grammer.comでは、SMTP-AUTHを利用しています。SMTP-AUTHを利用するためには、 Postfixで管理しているパスワードが必要 です・・・。それも現在は分からない・・・。ないない、づくしです・・・。
最後にたどり着いた方法・・・。それは、WordPressの情報を管理している MySQLにログインしWordPressの管理者のパスワードを更新するという方法 ・・・。Apache、MySQLは普段から利用しパソコンのOS再インストール後に情報をすぐに整理し、分かっていたので、これによりWorldPressのパスワードを変更しログインすることができました。
手順的には以下の様な感じです。
//?MySQLへ管理者権限でログインする
$ mysql -u root -p
//?MySQLの管理者ユーザーのパスワードを入力する
Enter password: PassWord
//?MySQLへ登録されているデータベースを確認する
mysql>show databases;
//?多分WordPressのデータベースだろうデータベースを指定する
mysql>use wordpress
//?指定したデータベースのユーザーを調べる
mysql>select user, host from mysql.user;
//?WordPressのユーザーだと思われるユーザーのパスワードを変更する
mysql>update wp_users set user_pass=md5(' New PassWord ') where user_login=' WordPress User ';
WordPressだろうデータベース名とか、WordPressのユーザーだろうユーザー名を忘れていたらアウトでした・・・。まっ、これで、なんとかログインし、公開している情報だけでなく、下書きの情報もWordPressから引き抜くことができました。
[あとがき]
WordPressのパスワードの管理方法がPrototype EVEと同じような仕様だったらアウトでした・・・。Prototype EVEでは、パスワードのハッシュ値を登録しており、直接更新できません。ただ、システムでハッシュ値を求めてからそれを登録すれば何とかなりますか・・・。EVEシステム公開後、もしかしたらこんなことで悩むユーザーが出てくるのかもしれませんね・・・。ユーザーID、パスワードを忘れたけれど、システムへログインできるハイセキュリティの方法を考える必要があるようです・・・。
失敗は成功の素 !勉強します!
では、また!
追伸・・・。
本ブログ公開後、pro2grammer.com及びshareholders.comを 停止 します。
■WordPressのログインパスワードを忘れてしまい、リセットメールも飛ばないときの対処方法(CPI)
https://cloud5.jp/wordpress-password-reset/
■反省会!Windowsの再インストール作業! [ソフトウェア研究室](2022年12月21日)
https://fanblogs.jp/bahamuteve/archive/172/0
2023年11月07日
DB検索ツール 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
本日、バッチ処理の各処理、登録、修正、削除処理が正常に動作するかどうか確認していました。その時に、確認するツールとして、Prototype EVEのテキストボックスから、SQL文を実行するツール、 DB検索ツール を使用するのですが、そのツールが動かないことが判明・・・。
通常、 TeraTerm を使用するのですが、TeraTermで実行した結果は非常に見にくい・・・。きれいに整列していませんからね・・・。ただ、Prototype EVEのツールから実行した結果は、テーブル形式できれいに表示され、何がうまくいっていて、何がうまくいっていないのか、一目で判別することが可能です。ただ、そのツールが動かない・・・。
[DB関連Classがおかしいのか検証]
まずは、DB関連関数またはClassをまず疑いました。あらかじめどこが悪いのか想定してから、DB検索ツールからの呼び出し元から順番に追っかけてみてみましたが、その想定と違う・・・。
いろいろな関数、Classを通して検索しその結果を取得しているので、何が何をしているのか忘れていました。
[呼び出し元のDB検索ツールで不整合が・・・]
まずは、誤解していたところ、忘れていたところの知識を補完してから再度検証した結果、呼び出し元と、新たに作ったDB関連関数、Classとの不整合だということが判明しました。
DB検索ツールって、SQL文を発行するのですが、発行するのは検索だけではありません。時には、データを追加、更新、削除するときにも使います。そのため、DB検索ツールは、どんなSQL文でも利用できるようにしたのですが、それを忘れていました。ようは、 PHP5 から PHP8 へ移行するに際し、 MySQL の検索を PDO にさせているのですが、そのための対応をPrototype EVEのフレームワークで実施しています。DB検索ツールは、汎用的に作ったために、Prototype EVEフレームワークと同様の修正をしなくてはいけなかったのですが、それを忘れていました。
[あとがき]
基本、バッチ処理の追加、更新、削除処理は正常に動作するようになったと思われます・・・。そのための確認のDB検索ツールなのですが、このツールを使用するのは念のためです。プログラム修正せずに、次に行ってもいいような気がしますが、きちんと確認したいですし、普段使っているツールが使えないのは気分が悪いので、この件は明日修正します。
意味不明の主要因のバグを改修したので、もう平穏無事にプログラム修正ができるから、セキュリティの話でもしようと考えていましたが、いろいろとあるものです・・・。
セキュリティの話は、バグ修正とバグ修正の間の 平穏無事 なときにさせていただきます。
では、また!
2023年11月06日
多言語に対応する 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
近頃、昼間暖かいし、朝方は寒いしと体調を維持するのが大変です。今朝起きて、 簿記2級 の学習をしてしばらくして頭痛が・・・。寝れば直るだろうとちょっと寝たら頭がガンガン!午後に頭痛薬を服用して、コーヒーを飲んでから回復しました。
回復後の午後は、昨日ダメダメだった、企業経営理論の「 組織と人材 」の情報を一太郎でまとめていました。本日実施予定だった、企業経営理論の「人的資源管理」と「労働関連法規」については明日に繰越します。ということで、本日はまだ開発をしていないのですが、これからやる予定です。
[多言語に対応する]
今週から何も書くネタがないので、『ゼロからはじめるシステム開発』では、セキュリティについて書くといっていましたが、1つ検討したいことがありました。それは、 英語などの多言語に対応させるかどうか ?
以前多言語に対応する方法を考えていた時期がありました。Webサイトで多言語に対応させるならこんな方法ならいけるのではって感じです・・・。
JavaScriptを使用している人だったら、言っていることが分かると思いますが、HTMLで構成されるWeb画面は、画面の頭からエレメントにインデックスが付与されています。同時に、エレメントにインデックスを付与することも可能です。
その対応と似たような方法を採用し、日本語を英語表記したい項目について、データベースまたはファイルで情報を保持し、ユーザーがダウンロードしたそのイベントで挿入するという方法を考えていました。
[近頃のトレンド]
ただ、複数のサイトを見ると、ポータル画面でユーザーを特定し、特定したユーザーが使用している言語のURLに飛ばしているようです。これは、厳格に調査した結果に基づいたものではなく、表示したHTML画面のソースをチラ見して結果得た印象です。
このような方法を考えなかったわけではないのですが、管理しなければいけない資源が「資源の数×言語数」に膨らみます。考えただけでも大変な気がして仕方がありません。
では、なぜこのような大変な方法を他のサイトでは採用をしているのか考えてみると、画面の 美観 を考えてだと思います。それは、同じ意味の言葉でも、言語により文字数が変わります。日本語で素晴らしいは、英語では"Wonderful"といいフランス語は"merveilleux"(男性形)または"merveilleuse"(女性形)です。字数が違うため、画面が開発者の意図したデザインで表示されないということがあるかもしれません。そういう 品質重視 で考えた場合、言語ごとに画面を用意するというのが正解なのかもしれません。
[EVEシステムでは?]
以上の検討から、EVEシステムでは、ディレクトリにより言語を変えるという方法で開発を進めていきたいと思います。ただ、データベースでディレクトリ、プログラムを管理するのに、ディレクトリが違うからと言って、プログラムに関する情報を複数登録するなんてのはちょっと冗長的すぎますね? 構成管理システム を製造する場合は、ちょっと、一考が必要なようです。
[あとがき]
本日は、もう時間もあまりないので、雑用的な作業をして、時間が余ったら開発をします。なかなかうまくいきませんね?
ところで、フランス語・・・。素晴らしいにも、男性と女性という形があるのですか?LGBTの人の人権を認めるために、垣根をとりはらい、同性結婚を認めたりしているようですが、言語のほうは男性、女性の区別が甚だしい状況のようです。
ちなみに、Bingに「性別が分からないフランス人に、WEB画面を提供する場合、すばらしいと表示する場合、どうしたらいいですか?」と聞いたら、主語に中性的な意味をもってきて、「Vous êtes formidable」と表現すればいいようです。製品のクオリティを高めるためにそこまでやるとしたら、かなりの工数が必要なようです。フランス語の検討はなかったことにしましょう(笑)!
では、また!!!
2023年11月03日
セキュリティ情報 〜セキュリティ研究室〜
こんにちは!
ナビゲータのEVEです。
Studyingでは、1次の学習は11月いっぱいで終了し、簿記は、商業簿記が11月、工業簿記が12月目標で勉強を終えようとしているのですが問題が・・・。それは、起きる時間が遅いので、どうしても、期限がきられているタスクを優先してしまい、期限がきられていないタスクが全くできない日が発生してしまう。
そうです・・・。今日は遅い時間に起きてしまったので、期限を切っていないタスク、システム開発が全く手つかずでした・・・。 早起きは三文の得 といいますが・・・?
平日は、株式の取引があるので、9:00には起きるのですが、今日は休日・・・。世間一般は休みというわけで、そんな世間の皆様と一緒の生活になってしまいました。
[セキュリティの話題]
ただ、システム開発も難題に取り組んでいるとか、いろいろ調査しているとか言った話題があるならいいのですが、バッチ処理の机上デバック及び書式を次期システムのプログラム規約へ修正しているレベルです。そんな状況だと、なかなか、ブログを書くネタがございません。ということで、しばらくの間は、 セキュリティ の話題をしようかな、っと考えています。
[クローニングシステム]
それと、Yahooのクローニングを作ると以前から話していますが、セキュリティ情報を収集するクローニングシステムも同時並行的に作ろうかとも考えています。私のセキュリティに関する技術力って既存のセキュリティ対策については知っていますが、ただそれだけです。そんな私と違って、会社に所属しているエンジニアは、実際の攻撃を体験するなど技術的にもっと先進的なことをしているようです。そんなエンジニアと私とを比較した場合、見劣りがします。そんな優秀なエンジニアとの開きを縮める方法が何かないのか考えたのですが、それは、 情報 ではないかと思うのです。どこで、どんなセキュリティインシデントが発生していて、どのセキュリティインシデントはどんな影響があるのか、1画面でみることができたらいいと思いませんか?そんなインターネット上のセキュリティインシデントを1画面で見ることができれば、優秀なエンジニアの人達と肩を並べることができるかもしれません。
ただ、そのセキュリティ情報については、独り占めするつもりはなく、 幅広く公開 していく予定です。そして、多くの情報処理安全確保支援士の方々の役に立てればと考えています。
インターネットを調べて見ると、 Scan Net Security というサイトがあります。このサイトニュースを主体に情報をまとめていますが、情報処理安全確保支援士の方々への情報提供なので、技術に近い情報にしようかなって、現在は、考えています。
[あとがき]
なんて、かっこいいことを書いていますが、このタスクには 期限がありません ・・・。ようは、いつできるか分かりません・・・。
期限があるタスクは、1日にどのくらいの時間があれば達成できるか分かっているので、その予定のあるタスクをやり終えた後、時間があればあるほどシステムが完成する期間が短くなります。そのように考えた場合、早く起きなければならないようです・・・。
そうそう、今まで寝付きが悪かったのですが、早く寝る方法を見つけました。それは、布団に入ってから本を読むこと・・・。普通の本だと、30分あれば50ページぐらい読めます。その30分後ぐらいに眠気がやってきます・・・。ただ、昔から起きるのは苦手なのですよね・・・。ニンジンがあれば起きれると思うのですが・・・。ニンジンどこかにないですかね?
では、また!
■Scan Net Security
https://scan.netsecurity.ne.jp/
■Security NEXT
https://www.security-next.com/category/cat191/cat25
■Tokio Cyber Port
https://tokiocyberport.tokiomarine-nichido.co.jp/cybersecurity/s/anews
■SECURITY HOT TOPICS
https://www.itmedia.co.jp/news/subtop/security/
■Cyber Security .com
https://cybersecurity-jp.com/
■サイバーセキュリティ総研
https://cybersecurity-info.com/category/news/
2023年11月02日
Prototype EVE プログラム改修 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
先日の、Prototype EVEにおいて、EVEシステムのDB関連クラス>DBコネクトメソッドを呼びだしていた部分を、New Prototype EVEへ変更してから、製造は凪の状態です。淡々と、予定の作業をこなしています。
予定の作業について話していなかったので触れると、以下の様なスケジュールでシステム改修を行っています。
?@バッチ処理の机上デバック及び書式を次期システムのプログラム規約へ修正
?Aデバック
?Bシステムインテグレーション
っで、今までPHPから出力されている 意味不明のエラーメッセージ に対応しながら、ちびちびと?@をしていましたが、問題が解決されたため、本日から?@の本格対応を行っています。
そして、?Aですが、実際に動かしてみてどうかって感じです。
?Bは、管理用システムから呼び出す、一連の流れの動作確認を行います。
[システム再構築]
以上の作業が完了後、XServer上のシステムの再構築をします。構築当時No ideaだったので、とりあえずUbuntuでシステムを構築して、Webサーバー、データベース、メールなどを動かしてみましたが、それを再構築します。その後、Prototype EVEをインストールしバッチ処理の運用を開始したいと思います。それと同時に、Yahooクローニング処理の製造に入ります。
Prototype EVEの机上デバック及びプログラムの清書も順調ですし、片手間でやっている、?Aのデバックも現時点問題ありません。そして、XServerでのシステム構築も、一度は構築し、ブログに記録として残しているので、他の予定が順調なら、開発の方も順調に進捗しそうです。
[今日のバグ]
今日のバグは、以前あった、 PDO を使ったデータベースの登録の部分です。
今回使用している、DB接続コネクタPDOは、MySQLのレコード定義でNULLをOKとしている場合、""はNGで、NULLを挿入しなればならない仕様となりました。
このバグは一度経験して、対応方法が決まっているので早速NULLを挿入し修正を完了しています。
[Prototype EVEバッチ仕様]
このようなエラーが発生する原因は、バッチ処理をいろいろな条件を1つの処理で実施しようとしているためです。Prototype EVEでは、画面から以下の条件で登録できるようにしています。
?@毎分(1〜1440)
?A毎時間(1〜59)
?B毎日
?C毎週
?D毎月
?E毎年
?F特定日
以上の種別を、PHPプログラムとかコマンドの分類で利用するケースがあったりします。例えば、毎日だったら、曜日は必要はありませんし、毎週だったら、曜日だけ指定すればいいことになります。っということは、画面上に存在しますが、使用しない項目が必ず発生します。その場合、使用しない項目を今までは、""で対応していたのです。
[あとがき]
今、システムを見ながら、ブログを書いているのですが、?@の毎分(1〜1440)ってなんでしょうか?製造した本人が忘れてしまいました。毎分だったら、1〜59の間で表現するような?リリースするまでにはどんなことをしているのか、ソースから確認をしたいと思います。
ってな状況です。
では、また!!!