2023年10月30日
システム障害 〜プログラム研究室〜
こんにちは!
ナビゲータのEVEです。
本日の午後から、本来の開発に戻っています。
ただ、わけの分からないバグが多発・・・。もう、Prototype EVEのバッチ処理を形だけ動かして、EVEシステムの開発に移ろうかと考えていた30日も遅いというか、時計は、既に31日になっています。そんな時間にやっと障害の原因がわかりました。
[今日の障害]
今日の障害は、2件・・・。
1つ目は、unsetでセッション変数を削除しようとしていたのですが、明示的にセッションを指定していなかった・・・。PHP5で使用していた、session_unregisterと同じような使用方法をしていたため、エラーになったというもの・・・。これに似たようなことは以前もあったので、すぐにバグを見つけることができました。
2つ目は、これが分からなかった・・・。結果から言うと、クラスの呼び出し間違い・・・。Prototype EVEのDB関連関数から本来DBコネクトのクラスを呼ぶ場合、New Prototype EVEを呼び出さなくてはいけないのですが、EVEシステムのDBコネクトクラスを呼んでいました。DB関連関数は何回も試験をしていたし、もうバグはないという先入観があったため、バグを見つけるのに時間がかかりました。
[ちょっと心がおれそう]
分かってしまえば、何だっていうことになるのですが、見つけるまでが大変です。プログラムの中身を把握している私からみたら、わけの分からないエラーメッセージが頻発するし、そのエラーの発生箇所以外の部分では、正常にプログラムが動いています・・・。
ちょっとぐらいエラーが出ていてもいいから、バッチ処理の最低限のところだけ動かして、EVEシステムの開発に移ろうかとも思ったぐらいでした。ただ、この時間まで粘って良かったです。
昔、業務でJavaプログラムをEclipseで見たのですが、F5でしたっけ?1ステップずつデバックしていくの???その機能で、デバックしていく場合、自分の所属しているプロジェクト以外のロジックもトレースすることになるうえ、どのくらいの階層になっているのか分からないので、非常にストレスがたまったのを覚えています。しかも、他人のプログラムです。
ただ、以前大きなプロジェクトで障害が発生したとき、年配のシステムエンジニアの人が、膨大なプログラムをラインプリンタで紙に出力し、ロジックを追っている姿を見たことがありますが、あのときの姿を思い出せば楽になったような気がします。多分、その時の紙に出力したプログラム、年配のシステムエンジニアの人が作ったプログラムではないと思います。業務って大変ですよね・・・。
[あとがき]
ちょっと、障害続きでなかなかシステム開発が進んでいませんでしたが、明日からは、もうちょっと、進捗が上がるような気がします。まっ、どうなるか分からないけれど・・・。言い訳ですが、オブジェクト指向のプログラムをゼロから作るの今回が初めてなんですよ・・・まだ、土地勘っていうか、プログラム勘がないんだと思います。しばらく、開発を休んでいたこともありますし・・・。これからは、毎日プログラムするようにしようかな?
では、また!!!
追伸・・・。
現在、31日ですが、ブログの日付は、30日23時59分59秒でアップロードしています。
2023年10月29日
Prototype EVEシステム障害 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
先日「エンジンを吹かしていきたい」といいながら、中小企業診断士2次試験の今日、まったりと過ごしてしまいました。ただ、収穫はありました。昼間仮眠をとったのですが、かなり深い眠りになったようで、頭の中がハッピーです(笑)。
といいながら、今まで、Prototype EVEの株式情報ダウンロード処理の仕様を変更していました。
[無尽蔵]
現在、無尽蔵から株式情報を毎日、crontabを使用しダウンロードさせて頂いています。ただ、このサイト予告なく閉鎖する可能性があるなどの忠告が掲載されているため、このブログで何回か紹介していますが、Yahooから株式情報をダウンロードしようと、EVEシステムの開発を急いでいます。
ただ、開発が完了するまでは、利用させて頂くしかなく、もし停止されたら大変なことになります。そのような状況の中、2023年10月25日水曜日から株式情報がダウンロードできていない。ようは、ダウンロードエラーとなりシステムが停止している状況です。バグかもしれないと思い、ソースを追っかけたのですが、プログラム的には問題なさそう・・・。じゃ、システムとデータの不整合かと想定し、無尽蔵のデータを見て分かったのですが、ダウンロードした株式情報の銘柄名が入っていない???銘柄名が入っていないのは、ダウンロード後のCSVファイルなので、手動でダウンロードしたところ、銘柄名が入っている。
おかしいな〜っていうことで、つい先ほどまで、どのロジックで銘柄名が消えるのか調べていました。
その結果分かったこと・・・。無尽蔵の株式データ、CSV形式なのですが、ZIPで圧縮されています。その圧縮されているファイルを、バッチ処理でシステムを起動しダウンロード後、プログラム内で解凍しているのですが、どうもその解凍時に銘柄名が消えてしまっているようです。こんなことあるのですかね???
CSVの形式は以下の通りです。
2023/10/25,6525,11,6525 KOKUSAI ELECTRIC,2116,2436,2108,2350,34234200,東証P
当該レコード1レコードだけ表示していますが、同レコードの「KOKUSAI ELECTRIC」という名称が消えてしまうのです。半角だからというわけではありません。他の半角の銘柄名はデータとして取得できています。想像できるのは、KOKUSAIとELECTRICの間の全角・・・?これが入ることにより、解凍時に文字が消えてしまうという事象になっているのかなって想定していますが、今現在原因不明です。
[対応方法]
今回の問題のだいたいの箇所は判明したのですが、私の作ったシステムから恒久的な対応をすることできるないため、銘柄名が""だった場合、"None"という値を挿入するという暫定的な対応をとることにしました。これにより、先週末までの株式情報をダウンロードすることができました。
今現在は、企業情報管理テーブル、株式情報履歴管理テーブルとも、正規の名前、「KOKUSAI ELECTRIC」をUPDATE文で挿入し、データ的にきれいな情報になっています。
[あとがき]
証券コード6525、実は、この障害があった2023年10月25日に上場した会社で、データ受信初日でした。そのため、10月25日にこのようなシステム障害が発生したのですが、今後は、ダウンロードした情報に不足している部分がある場合、データベース、企業情報管理テーブルから持ってくるようになっているので、明日以降は問題なく動作すると思います。
ただ、この障害、全く経験したことがなく、予想していない部分だったので、時間がかかりました。仮眠で目がさめていてよかったです。
今日、X(旧ツイッター)で中小企業診断士二次試験の状況について、ログを見たり、会話を聞いたりしたのですが、非常に難しかったようです。生活を改めて、明日から頑張りましょう。明日からが多いような気がしますが(苦笑)。
では、また!
■無尽蔵
https://mujinzou.com/
2023年10月26日
EVEシステム 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
本日、午前から開発に入ろうとしたのですが、VMWareが立ち上がらず、どうしようかなって感じです。そんなところで、特段ブログとして書く内容がないのですが、EVEシステム向けに準備してることがあるので、それについて、本日は、書きたいと思います。
[プロパティとメソッドが同じID]
先日、使用するシステムを分けるため、Prototype EVEのディレクトリを新規に作成し、他のシステムと分ける作業をしました。先日、Prototype EVEだけでなく、New Prototype EVEそして、EVEシステム用のディレクトリも作成しました。
そのとき、各システム(Prototype EVE、New Prototype EVE、EVEシステム)を分けたことにより、クラス又は関数の相対アドレスを変更したのですが、その時に驚きがありました。それは、EVEシステム用に作ったクラス内に、同じIDのプロパティとメソッドが混在していたのです。そして、使い方が間違っているとこがあったりして・・・。その事実を受け、クラス、プロパティ、メソッドのIDに接頭辞または接尾辞をつけて明確に別のものとして扱えるように、EVEシステムのクラスを変更しています。なお、既に使用している、EVEシステムのデータベース関連クラスについては、Prototype EVE用のデーターベース関連クラスとしてPrototype EVEへ残すことにしました。
ちなみに、DB関連クラスがEVEシステム向けのクラスとして成熟した場合、New Prototype EVEで正規のクラスとして利用する予定です。
[設計思想]
以前、Prototype EVE、New Prototype EVE、EVEシステムの関係を右記図1のように書いています。その構成図から、DB関連のクラスまたは関数の構成を図示したものが、図2となります。
この図から分かるように、今回はEVEシステムとして新(修正後)DB関連クラスとして切り出すということで問題を解決できそうです。そして、後日、新(修正後)DB関連クラスを正規のクラスとして、Prototype EVEに認識させようとした場合、New Prototype EVEだけを修正すればいいことになります。最初、いろいろ検討したことが、ここにきて生きています。
やはり、事前にいろいろ検討をしてからシステムを開発するって大事だと感じています。まっ、当然なんですけれどね・・・。一人で作っていると、意外とその辺をおろそかにしがちです・・・。以前のPrototype EVEの時がそうでした。
[New Prototype EVEが必要な理由]
もしかして、このブログを途中から読んでくれている人もいるかもしれないので、New Prototype EVEが必要な理由を書きたいと思います。
最初は、EVEシステムを作りたいと言うところから始まっています。ただ、Prototype EVEには、今まで利用していた便利な機能があり、同機能を利用しながら、開発を進めたいと思いました。
普通なら、Prototype EVEから直接EVEシステムの各クラスを呼びだすという仕様にするところなのですが、先ほど述べたように、EVEシステムにはきちんとした設計思想がありました。その設計思想が、2004年から製造したPrototype EVEの設計思想と明らかに違っていたのです。ただ、EVEシステムは製造したいし、どうしようかと考えた結果、EVEシステムをPrototype EVEで利用できるように、New Prototype EVEという緩衝システムを製造することにしました。New Prototype EVEを製造することにより、EVEシステムは既存のシステムからの影響を全く受けることなく、製造することが出来るようになりました。
問題点としては、かなり、冗長的・・・。デバックが面倒くさいって感じでしょうか?ただ、トータルの製造時間は短縮できていると思います。
[あとがき]
やっと、VMWareが立ち上がるようになったのですが、今日は、開発はお休みです。現在、11月から始める簿記2級の勉強に向けて、簿記3級の総復習をしています。教材は以前話したとおり、『本気で学ぶ LECで合格る DS日商簿記3級』を利用しています。同ソフト、10日のカリキュラムで構成されており、現在、後半6日〜10日の復習をしています。1日〜5日も間違うところはあるのですが、覚えればなんとかなる問題ばかりなので、後回しです。
このソフト、2008年に販売されており、購入したのは、2014年です。購入時は現行の法律との違いは気になりませんでしたが、2023年の現在はどうなのでしょうか?その点は、簿記2級の本を購入すれば、分かると思います。
まずは、今月中に、『本気で学ぶ LECで合格る DS日商簿記3級』を極めます。
では、また!
2023年10月25日
Prototype EVE開発日誌 −バッチ処理編 修正処理− 〜プログラム研究室〜
こんにちは!
ナビゲータのEVEです。
引き続きPrototype EVEで使用していたバッチ処理を修正しています。いろいろありますね・・・。不整合が、今回PHP5からPHP8へ変更したことにより、噴出しています。
[不整合]
昨日、今日発見した不整合は以下の通りです。
❶不要な位置にbreakが入っているとエラーになる。例えばif文・・・。
❷HTMLで利用する、コンボボックス内で、SELECTEDを指定しても同行が選択されない。
❸MySQLのNULLを許容している項目に、""でデータの挿入ができなくなった。
❶は、単純なミスです。if文にbreak文が入っていて、エラーになりました。PHP5の時はエラーにはなっていません。
❷は、サーバーサイトでHTMLで編集し、コンボボックスの当該行にSELECTEDを指定しても、同行が表示されません。一番上の行が表示されています。最初、JavaScriptでオンロードのタイミングで以下のように指定していました。
window.document.FormName.ElementName.options[ComboboxIndex].selected = true;
その指定で、ComboboxIndex、添え字の指定に誤りを見つけたため、その部分をサーバーサイトで実現しようと、HTMLを編集する方法を採用したのですが、思ったような動作をしません。
そのため、結局元に戻し、JavaScriptで正しい添え字を設定し、正常の動作にしたという修正をしています。なぜだろう???PHPのバージョンには、関係ないはずなのだが・・・?
❸は、PDOの仕様のようです。MySQLでNULLが許容されているなら、そこに何も設定しないのなら、NULLを指定しろというのです。今まで""とNULLは区別なく利用できたのですが、PDOを利用する場合、それを明確に区別し登録しなくてはいけないようです。ちなみに、最初の段階では、PHPからのメッセージに基づき、NULLではなく、イニシャルデータ例えば0を設定していました。しかし、ChatGPTにこの問題を相談したところ、NULLを明示的に指定すればいいことを教わりました。この場合、初期データを設定したいだけだったので、NULLに再修正しています。
ちなみに、""は文字列で、NULLはデータ型NULLという扱いで全く別の文字コードを使用しています。知っていたんですけれどね・・・・。ちなみに、その違いについて、ChatGPTに聞いてみました。
プログラムで ""(ダブルクォーテーション内に何も文字がない空の文字列)と NULL は異なるものです。これらは異なるデータ型および値を表現します。
❶""(空の文字列)
・データ型
文字列 (String)
・表現
"" または ''
・意味
文字列データ型で、文字列として空の文字を持つことを示します。つまり、文字列データ型の変数や値が何も含まないことを表します。
❷NULL
・データ型
NULL
・表現
NULL
・意味
NULLは特別なデータ型で、値が存在しないことを示します。NULLは変数やデータベースフィールドに値が設定されていないことを表します。NULLは存在しない値として扱われ、通常のデータ型とは異なります。
言語によっては、"" と NULL は異なるデータ型であり、異なる比較結果を返すことがあります。例えば、PHPにおいて "" と NULL を比較すると true が返りますが、== で比較すると true が返ることになります。ただし、=== を使用するとデータ型も一致させる必要があるため、"" === NULL は false となります。
言語やコンテキストによって、"" と NULL の振る舞いは異なりますが、一般的には "" は空の文字列であり、NULL は値が存在しないことを示す特別なデータ型であると考えてください。
厳格に区別する方式が採用されたようです。ちょっと、気になるのは、違うなら、コードで表現した場合、それぞれのコードがあるような気がするのですが、ChatGPTからの回答はありませんでした?
[あとがき]
かかりっきりというわけではないのですが、いろいろあり時間がかかっています。本日、Prototype EVEの管理システムで、管理者ユーザーのパスワードを変更しましたが、正常に変更できました。バッチ処理以外のシステムを動かしたのは、本日が初めてなので、感動です。
そうそう、pro2grammer.comへアクセスできなくなっていました。ドメインの有効期限切れです。近頃、クライアントのVMWareで開発をしていのたので、気にしていませんでした。次に来るのはSSLの更新なのですが、それまでには、バッチ処理の製造を完了したいと願っています・・・。
では、また!!!
2023年10月22日
新しい方法と進化に向けて 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
今日もハプニングが1つ・・・。
昨日までの作業、本のPDF化作業において、本のカバーで大きくScanSnap IX1300で読み取れないモノがありました。それについては、EPSONのプリンターに装備されている、スキャナーで読み取ろうとしたのですが、スキャナーのアプリケーションが立ち上がってこない???スキャン自体はEPSONプリンターから実行できるのですが、読み取る範囲が指定できない。
価格:31300円 |
そのため、いつも通り、インターネットで同様の問題を抱えており解決されている記事を検索したところ、ドライバーを削除してから実行すると、うまくいくといった記事を見つけました。信じやすい私としては、その記事どうりにドライバーを削除して実行したのですがうまくいかず・・・。やるならとことんやろうということで、ドライバーと一緒にインストールしたすべてのアプリケーションを削除してやってみましたがうまくいきません。もうここで、1時間以上たっているので、あきらめて開発に入れば良かったのですが、気になるのですよね・・・。このようなことって・・・。ついついドツボにはまりつつ調べてしまいました。その結果分かったこと・・・。管理者権限で実行しないとダメになったようです・・・。だめになったようというのは、以前はクリックすれば起動したためです。ただ、これEPSONのせいではなく、多分、Windowsのセキュリティ仕様が変わったせいだと思われます。Windowsのせいであるかどうか分からんけれど・・・。ただ、予想が当たっているなら、エラーメッセージぐらい表示してほしいですよね???
この情報インターネットを探してもなく、今現在困っている人がいる可能性があるので、その人たちのために以下にまとめます。ちなみに私が使用しているのは、EP-881AWです。
エプソン プリンター A4 インクジェット 複合機 カラリオ EP-881AW ホワイト(白) 価格:64800円 |
❶スタートメニューから、「Epson Scan2」というアプリケーションを表示しマウスオーバー
❷右クリックし、メニューを表示
❸[管理者として実効]を選択
❹[このアプリがデバイスに変更することを許可しますか?]という問いに対して[はい]を選択
以上で起動してきます。もしお困りの人がいましたら、管理者権限で実行することを試してください。
[システム開発]
かなりの時間がかかりましたが、以上の調査が終わって、早速Prototype EVEのディレクトリを変更することにより動作するかどうか、ちょっとですが、動かしてみました。管理システムには、ログインできました。多分、データベース上のディレクトリ情報を変更して、その変更した情報通り、各プログラムを移動したから問題なく動くと思います。
ということで、明日以降からバッチ処理を製造していきますが、まずは、従来のバッチ処理の中身を見ていきましょう。
[従来のバッチ処理]
従来のバッチ処理は、クローニング、データー抽出を1つのプログラムで実行していました。というのは、このクローニング処理は、株式の情報だけを抽出するのが目的だったため、汎用性がなかったのです。
[次期バッチ処理]
次期バッチ処理は、いろいろなページをクローニング後、データ抽出を実行する流れで製造しようと考えています。これにより、汎用的にシステムを利用することが可能になります。
以上の作りは、現在はどんな作りになっているのか不明ですが、2000年初頭のGoogleのクローニング処理と類似の処理(『Googleを支える技術』参照)になります。ただ、Googleで採用しているインデックス作成処理をEVEシステムでは実現するのは難しそうです。先にクローニング処理、データ抽出処理を製造しながら仕様の検討を重ねていきたいと考えています。
【中古】 Googleを支える技術 巨大システムの内側の世界 WEB+DB PRESS plus/西田圭介【著】 価格:220円 |
フローチャートで表現すると、右記図のようになります。
❶Yahooからひたすらクローニングするプログラム、クローニング処理(仮称)で当該HTMLをダウンロードし、クローニングしたHTMLを「クローニング情報蓄積テーブル(仮称)」へ登録します。
次に、❷において、ダウンロードしたHTMLから当該項目を、抽出処理(仮称)で抽出し、抽出結果管理テーブル(仮称)に登録します。
そして最後に検索することを容易にするため、❸のインデックス作成処理(仮称)でインデックスを付与し、インデックス管理テーブル(仮称)へ登録します。
以前、PHP5でYahooのクローニング処理ができなくなったことを話しましたが、その後PHP8でクローニングの可否についてテストプログラムを作りできることは確認しています。そして、それ以降は、Prototype EVEでのノウハウがあるのでそんなに苦労することはないかなって思っています。
[あとがき]
『Googleを支える技術』も2000年初めの情報で、もっと素晴らしい技術でバージョンアップしていることが考えられます。ただ、今回のEVEシステムを開発するコンセプトとこの流れがマッチするので、この方法を採用することにしました。なお、製造途中でもっといい方法がありましたら、変更します。
こんな感じで、現在開発を進めています。
では、また!!!
2023年10月21日
ChatGPTとバランスの取れたシステム開発 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
やっと、部屋から紙屑がなくなり、自室で生活できるようになりつつあります。もう少しいろいろと整理しなくてはいけないのですが、掃除機をかけて生活できる空間にはなりました。
これから毎日1時間を片付にあてて、ひきつづき部屋を整理していきます。
[大掃除前のシステム開発]
今日は、のんびりと掃除をしていたのですが、明日からはシステム開発を再開したいと思います。10日以上も前のことなので、何をしていたのか思い出すのが大変です。確か、データベースで管理しているプログラムの相対アドレスを変更したところまでは覚えているのですが・・・?
ようは、XServer上に、EVE、Prototype EVE、New Prototype EVEと複数のシステムを構築しようとしていますが、それを1つのフォルダで管理するのは煩わしいということで、まず最初に従来のシステム、Prototype EVEのデータベース上の相対アドレスを変換しました。そのときに、本来の相対アドレス形式で記述されていないプログラムが複数あったことに驚いたところまで覚えています。
[明日から・・・]
明日からは、まず、相対アドレス変更後の動作の確認をして、うまく動作していることを確認できたら、Prototype EVEのバッチ処理管理システムが正常に動くかどうかの確認に入ります。
その後は、PHP8でバッチ処理を動かす方法について検証に入ろうと考えています?PHP5でも、バッチ処理を動作させることには成功しているのですが、今みたいにChatGPTもないし聞く人もいなかったので、php.iniを編集して無理やり動かした感があります。今回は、ChatGPTに相談しながら、正しい設定で動作させたいと思います。
PHP5でPHP史上初めてバッチ処理を利用できるようになったのですが、その当時文献がない上に、インターネット上にも情報がありませんでした。そのため、試行錯誤の上、力づくで設定したっていう感じです。ただ、それでも、うまく動いていましたよ!まっ、なんでもやってみるもんだっていうことです。ただ、PHP開発者の意図に沿ったシステム開発をすべきだと思うので、今回は、ChatGPTに相談しながら開発を進めます。
[あとがき]
明日のブログですが、久しぶりに開発に入るので、明日も、『ゼロからはじめるシステム開発』から、発信したいと思います。内容としては、データベース上のプログラムの相対アドレス変更後の検証結果と、現時点考えるEVEシステム開発で作るバッチ処理の概要について書きたいと思います。
前回は、技術的にも未熟で、行き当たりばったりで製造しましたが、今回は、しっかりとした技術、知識、設計思想とChatGPTがあるので、誰でも利用できるシステムの開発をしたいと意気込んでいます。さて、どうなりますか?
では、また!!!
2023年10月20日
断捨離〜だけど、ソフトは捨てない!〜 Coffee Time
こんにちは!
ナビゲータのEVEです。
やっと、本のPDF化作業が完了しました。
やってみて、ScanSnap IX1300では、複数の原稿を読み込んでもエラーにはなりにくいようです。以前使用していた、ScanSnap S1500では、その点を非常に厳格にチェックしていたのですが、その点が不満です。そのため、PDF化したファイルのチェックにおいて、かなりのページの抜けが確認できました。見つけるたびに原稿を探しに行って、当該ページを挿入するという作業を行いました。
価格:31300円 |
本の総数から言うと、そのような作業が発生する確率は低いのですが、その対象となった本があった場合は、ちょっとめんどい・・・。抜けているページの原本を探してきて、その原本から何回も追加します。ひどい本は最初からやり直した方がいいような状態・・・。そのため、最初からやり直したのですが、やり直したPDFも完成度はイマイチの状態。。。。
但し、通常本を購入後すぐに、分解、PDF化、そしてPDF化したファイルと原本を比較します。そのため、通常だったら問題にならないかなと思います。
ScanSnap S1500のときもそうだったのですが、古い本って基本、変形しているモノがあったり、ちょっと変色しているなどしていて、PDF化する原稿としてはいい状態とは言えないようです。現在、新しく本は手元にはないのですが、購入したら確認してみたいと思います。
[ScanSnapとAcrobat9]
先日のブログの中で、今回購入した、ScanSnap IX1300には、ScanSnap S1500とは違い、Acrobatがないという話をしました。今回の製品がScanSnap S1500より製品として劣るような話をしましたが、よく調べてみると、Acrobatと同様の機能を、ScanSnap Homeというアプリケーションがに具備していることが判明しました。そのため、Acrobatが添付されていないようです。
私が製本の時によく使う機能は以下の通りです。
❶PDFに検索機能を付加する
❷ページ抜けの部分をあとで追加する
❸スキャンしたデータが本来の向きに向いていないので、回転させる
❹不要なページがあるので削除する
といった機能なのですが、その機能のすべてを、ScanSnap Homeというアプリケーションが備えていました。
❶は、ScanSnap IX1300でスキャンしPDF化するときに同時に検索機能を付加する機能もありますし、それを忘れた場合でも、後で追加することができます。
❷❸❹は、当該PDFをScanSnap Homeビューワーで開いて編集することが可能です。
Acrobatと使い勝手が違うため、最初は使い勝手が悪いように感じますが、PDFに検索機能を付加する場合などは、Acrobatより高速に処理してくれるので、非常に助かります。ただ、検索機能を付加するときのOCRの性能まではまだ調べていません。調べる機会がありましたら、ご報告したいと思います。
[あとがき]
実は、本をPDF化する以前は、部屋に200〜300本あったビデオから懐かしいビデオをファイルとして取出した後に分解、テープを取出し、ハサミを入れるという作業をしていました。ビデオテープの廃棄作業は、本をPDF化する前に終えており、部屋から既に撤去済み・・・。後は、本とCDということだったのですが、本日で本を片づけることができました。残りはCDだけなのですが、これは、毎日ファイルにする本数を決めて少しずつ作業を進めていきます。理由は、ビデオテープと本を撤去したことによりやっと部屋に寝るスペースが確保することができました。
今回の作業の目的は、部屋に寝るスペースを確保することだったので、目的は達成したことになります。今週末から本格的に寒くなるようなので、ギリギリセーフって感じでしょうか?ただ、よく考えたら、エアコンつけるだけでいいんじゃねぇって気もしてきましたが、自室で寝れませんし、部屋が汚いと思考回路も整理できません。部屋をきれいにしてよかったのでしょう?
明日は、原本の始末と、部屋の片付け、そして、1週間、本をPDF化してくれたScanSnap IX1300のメンテナンスをする予定です。本日、ScanSnap IX1300をきれいにすために、エアーを購入してきました。そのエアーで隅々まできれいにします。少なくても10年ぐらい使用したいですからね!大事にしたいと思います。
開発、勉強は、日曜日から再開する予定です。想定以上に本をPDF化すするのに時間がかかりました。
では、また!
2023年10月16日
変態・変質者?世間では何が起こっている??? 〜Coffee Time〜
こんにちは!
ナビゲータのEVEです。
土曜日から本日にかけて、ちょっと、出かけていました。そこで、嫌な出来事が・・・?
[けつの穴見せたがり男]
今回、温泉が出るホテルに泊まったのですが、そのホテルでの出来事・・・。体を拭いているのですが、自分のけつの穴を必死にこっちへ向けてくるヤツがいるのです。
どんな状況か詳述すると、湯船に入っている私に向けて、後ろ姿で、前屈し、股の間からこちらを覗いている状況です。その格好をされると、目が合うのと同時に、きたない成人男性のけつの穴が丸見えです。はっきりいってむかついたので、入っている湯船を変えたのですが、それでも向けてきます。最後は、どんな表現をしたのか記憶が定かではありませんが、かなりの悪態を大声で発したことにより、風呂場から出ていきましたが、怒り心頭の状況でした。
これって、最初ゴミとか書きましたが、変態ですよね???何が楽しいのでしょうか?まっ、変態にその答えを聞いても出てこないとは思うのですが・・・?
[暇な主婦]
10月14日のX(旧ツイッター)で、「日本人って本当に暇だよね?家の外に出ると特に感じるよ・・・。人手不足???暇な、そいつら使ってください。」って発言をしましたが、何を言っているのか分かりませんよね?
どういうことかというと、人を送るために車で出たときのことです。多分主婦だと思います。年齢はだいたい30〜40代ぐらい・・・。そんな女性達が、車の前に飛び出してきて、同じようなポーズを取ります。その行為を同じ人がやるなら分かるのですが、全く知らない人達が行います。危ないので、クラクションを鳴らしたケースもありましたが、本当に迷惑です。駅に人を送って行くのに、以上の行為をした女性が5〜6人ぐらいいました。
何が楽しくてこんなことをやっているのでしょうか?それと、どこで、打ち合わせをしてこんな芸当ができるのでしょうか?非常に疑問です。
[私の立場になってこの状況を想像して下さい]
つい最近の2例を挙げましたが、実は外出すると日常茶飯事です。理由が分かりませんし、何を求めているのか全く分かりません。
もし、あなたが、このような人達に出会ったことを考えて下さい。多分、馬鹿?ゴミ?変態?きちがい?いろいろな表現ができるかと思いますが、そんな印象を持つことができると思います。
そんな出来事が日常的にあるのです。本当に、やりきれません。
[あとがき]
YouTubeで書きましたが、私が社会からドロップアウト最大の原因は、プライバシーがないと感じたから・・・。しかし、近頃特に顕著なのですがドロップアウトした効果が全くないです。
X(旧ツイッター)で書いた内容を再度ここに書きますが、私は、X(ツイッター)、Facebook、A8ブログ、そして、YouTube以外は、私人です。もし、私人であるときの、プライバシーが侵害されたと判断した場合は、個人情報保護法、名誉毀損罪、誣告罪など該当する罪状ですべて訴えます!
では、また!
2023年10月14日
PDF化した文書のチェック作業 〜Coffee Time〜
こんにちは!
ナビゲータのEVEです。
本日本のPDF化した本のチェックをしています。予想通り最初の方は、何かしらの問題があります。その部分を修正しながら、製本をしています。
[PDF製本作業]
ScanSnap IX1300の問題点というか、最初の段階では、単行本を読み込むのには、設定に問題があり、PDFが分割されたり、画像データになったりと大変な思いをしたのですが、その中で作成されたPDFは以下の様な問題を抱えていました。
@一部頁抜け
A画像頁が正しい向きになっていない
価格:31300円 |
@ScanSnap IX1300とScanSnap S1500の違いは、ScanSnap S1500複数頁を読み込むとエラーとしてはじいていたのですが、ScanSnap IX1300は普通に読み込んでしまいます。そのため、ScanSnap S1500では非常に多くのエラーが検出されていたのですが、ScanSnap IX1300ではほとんどエラーになりません。ジャムらないという点では、ScanSnap IX1300は性能が上がったのかもしれませんが、今回読み込みスピードが速い原因の違いに、仕様の違いというのがあるようです。そのため、多くはないのですが、今回PDFにした本を再チェックすると、頁抜けするケースが複数ありました。
Aは、ScanSnap IX1300とScanSnap S1500では仕様は変わらないようです。現在、チェックしながら、正常の方向に回転させて修正しています。
[ScanSnap IX1300]
ScanSnap S1500は、使用するときだけ、デスクに出していたのですが、ScanSnap IX1300は通常からデスクにおくようにしました。それだけ、ScanSnap IX1300が小さいのです。
そんな、ScanSnap IX1300のカバーを開けてみると、この3日間の作業で、細かい紙が砂状になって貼り付いています。気づいた時点で、ハケできれいにしたのですが、エアーできれいにした方がいいようです。
これから、デスクにおいて、かつ、ScanSnap IX1300のふたを開けなくても、手軽にPDFに変換できるので、手元に届いて残す資料などは、すぐにスキャンできそうです。別な所から運んでくると言うステップが1つ入るだけでも、作業的に億劫になってしまいます。今後はそのようなことはなくなるようです。
[あとがき]
今回作業の途中からですが、検索可能なPDFを作成するという機能を追加しました。ただ、それは、2日目以降なので、それ以前の、54冊は、Acrobatで検索可能なPDFに変換しなければなりません。それもまた、時間がかかる作業です。ただ、食事をするときなど、席を外したタイミングで実行すればいいので、あまり問題にならないでしょう。そうそう、今回のScanSnap IX1300ではAdbe社のAcrobatがソフトウェアとして提供されていません。そのため、以前購入したScanSnap S1500に付いてきたAcrobat9を使用しています。もし、ScanSnap IX1300は高いし、どういう製品かよく分からないから購入するのをためらうという人がいるなら、ScanSnap S1500の中古を購入するといいかもしれません。1万円で販売されており、そこに、Acrobatが付いてくるならお得です。ハードが1ヶ月で壊れてしまっても、Acrobatが手元に残ります。ただ、ソフトは渡さないという人もいるかもしれませんので、内容物については、よく調べた上御購入下さい。
では、引き続き、PDF化した単行本のチェックをしていきます!
なお、明日はブログをお休みさせて頂きます。もしかしたら、月曜日もお休みを頂くかもしれません。ご了承下さい。
では、また!
2023年10月13日
PDF化作業完了 〜Coffee Time〜
こんにちは!
ナビゲータのEVEです。
今日やっと、本のPDF化が完了しました。完了してみて、コレクションが足りないのが気になるのですが、その調査は、本の製本状態をチェックするときに確認したいと思います。
[何がいけなかった]
今日も、開始当初は昨日と同じ状態で、読み込んだ本により、1つのPDFで出力されたり、そうでなければ、100ファイルぐらいに分割されたりなどして、大変でした。そのため、富士通に電話しようかと思いましたが、思いとどまり、昨日やると言っていた、単行本のサイズに固定するなどやってみましたが、うまくいく場合とうまくいかない場合があります。そのため、再度いろいろいじってみてやっと見つけることができました。設定は以下の通りです。
価格:31300円 |
@ScanSnap Home起動
A[Scan]アイコンまたは[設定]メニューを選択後、設定の中の[スキャン設定]を選択
表示したダイアログボックスから
B[Scan Home]をダブルクリックし表示した画面において、「原稿種判別]のプルダウンから、[すべての原稿を文書として読み取ります]
以上の設定で、それ以降はなんの問題もなく、全ての単行本をPDFとすることができました。
この3日間における作業の成果は以下の通りです。
ページ読み込み数 20,886頁
PDFファイル容量 4.45GB
PDFファイル数 121ファイル
ページ読み込み数は今までのブログに書いたとおり、何回もやり返した本もあったので、おおよその数字になりますが、PDFファイル容量、PDF化ファイル数は今回の実績です。非常に疲れました。この作業をしていて、疲れたのは今回が初めてです。
[今後の予定]
今回のScanSnap IX1300の性能はかなりいいのですが、やはり成果物のチェックが必要です。明日単行本をいっきにチェックし、廃棄する準備をしたいと思います。多分そんなにひどいモノはないと思うので、すぐにチェックは終わると思うのですが、こればっかりは、チェックしてみないと分かりません。この作業今週いっぱい続き、本来の開発及び勉強は来週からの予定です。予定が度々変わり大変申し訳ございません。
[あとがき]
今回、ScanSnap S1500が故障したことにより、新スキャナScanSnap IX1300を購入して使ってみましたが、性能の良さに驚嘆しました。もし、ScanSnap S1500で今回の作業をしていたら、まだ、終わっていないでしょう?
途中、くそ〜!なんて悪態をついていましたが、それは、私の調査が足りなかっただけです。継続読み取りとか、ファイルのところから設定を探したのですが、開いたダイアログボックスにあったとはちょっと、間抜けでした。こういう場合、先入観を持たずに、設定項目を1つずつ確認していくというのが作業において正解のようです。次回から気をつけたいと思います。
では、また!
タグ:ScanSnap
2023年10月10日
できる力 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
ScanSnap IX1300のセットアップが終わりました。セットアップしながら動画を撮ったのですが、久しぶりだったので、思った動画を取ることに悪戦苦闘(笑)。セットアップだけなら、30分もかからないのに、動画のために、2〜3時間かかってしまいました。また、動画撮るならなれませんとね・・・。
価格:34800円〜 |
そんな、ScanSnap IX1300ですが、箱から出してみて驚き・・・。小さい・・・。軽い・・・。そして、使用してももっと驚き・・・。ジャムらない・・・。ScanSnap S1500で本をPDF化する場合、古い本だと、同時に2、3枚吸い込むことが多く、結局1枚1枚いれることもあったのですが、そんなことをしなくても、すいすい読み込んで、PDF化してくれます。
ただ、気になるのは、機械的に動く部分が多い・・・。ScanSnap S1500は、本を読み込むところだけが機械仕掛けだったので、10年以上も故障せず使用できたのですが、ScanSnap IX1300は、保守契約に入った方がいいかもしれません。
以上の状況で、あっという間に部屋の本をPDF化できそうなのですが、ちょっと、一休みして、ブログを更新しています。
[資格って重要?]
つい最近、X(旧ツイッター)で偉そうなことを言ってしまいました。IPAの午前Tの試験で56点で落第してしまった受験生に、修業が足りません的な発言をしてしまいました。確かに、IPAの午前T、Uの試験は、ドリル的に問題を解くことにより正解率が上がります。ただね・・・、点数を取ったからいいシステムができるというわけではないのですよね・・・。システム関連の業界は、資格よりも、論理的な思考や問題を解決する能力を求められます。
[システム開発に向いている人]
それが、分かっているのに誰が偉そうに以上の発言をしているのでしょうか?2023年07月09日のブログの中でも書きましたが、この業界に向いている人として、プロ棋界の人を上げましたが、それが理由です。知識もある一定のレベルは当然必要なのですが、専門学校に行けば身に着けることができます。
[システム開発の現場(2019年以前)]
そんな目でシステム業界を見ると、意外とシステム開発に向いていない人が見られます。ただ、そんな人も活躍できる場が現在のシステム業界にはあります。その場とは、ドキュメントを作成する作業です・・・。大きなシステムなら分かりますが、小さいシステムにおいてもです。
以前にも書きましたが、小さいシステムならアジャイルが最適です。なぜなら、安い費用で受けた場合、ドキュメントを作っても中途半端のモノしかできないケースが多いからです。
[他の業界と違うシステム業界]
弁護士なら司法試験に合格するということが非常に重要です。それは、資格が取得できないと業務ができないのと同時に、業務を遂行する上で知識が不足している可能性があるからです。
そんな業界と一線を画すのがシステム業界です。知識があってもいいのですが、目的は、お客様が求めるシステムを動作させ提供することです。その目的を達成するのに、システム業界のいろいろな分野の資格の問題を見ましたが、それで達成されるとは思えません。
[できる能力]
もし、資格を重視するなら別な業界を目指すべきでしょう!システム業界は、システムを開発できてナンボです。そのシステムを開発するのに重要なのは、繰り返しになりますが、論理的な思考と問題を解決する能力です。私も、これからシステムを作り、仲間を求めるタイミングがあるかもしれません。そのとき、資格はチラ見をしますが、何をやってきてどんな経験をして、どんなことができるのかを重視します。
[システムトラブル]
本日、全国銀行データ通信システム、通称全銀システムで不具合が発生し、11銀行で他行あての振込取引ができない状況となっています。
その現場でどんなことが行われているか今までの経験に基づいて想像すると、トップマネジメントではプロジェクトリーダー的な人が、障害が発生している部署からの障害状況に基づき、ホワイトボードに向かい状況を整理し、問題の切り分けをしています。
現場では、ログ解析後プログラム解析をしているという状況でしょう?そして、プロジェクトリーダを中心としたトップマネジメントでは、現場から上がってきた情報に基づき各業務で原因となりそうな所を議論しているという状況だと思われます。
ただ、とどのつまり仕様書がシステムの現状を反映しているかどうかも微妙な状況で信頼できるのは現場という結論になるような気がします。そのような状況を例にとって考えると、より現場の重要度が高く、かつ、資格は無意味のような気がします。
[あとがき]
じゃ、資格は全く無意味なのでしょうか?そんなことはありません。知識に基づき問題解決できる場合もありますし、アイディアが生まれる場合もあります。ただ、資格を持っているだけという状況では、この業界は難しいと思います。
営業ならいいのですが、もし、システムエンジニアを目指すなら、できる能力が必要となるでしょう?
では、また!
■ファーストペンギン [システム開発研究室](2023年07月09日)
https://fanblogs.jp/bahamuteve/archive/350/0
2023年10月09日
Googleを支える技術 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
『システムエンジニアが目指す中小企業診断士』でもふれましたが、この休み中に家中の本をPDFに変換しようと、部屋中に本を散らかしたような状態にしたところで、本をPDFに変換するためのスキャナ、ScanSnap S1500が故障してしまいました。最初の1〜2枚読み込んだところまではうまくいったのですけれど・・・。3枚目から吸い込まなくなってしまいました。カバーを開けて動作を確認すると大きなローラーがうまく動作していないようです。そのため、この機会にScanSnap S1500購入時に同時に購入した交換パーツの全てを交換してみましたがやはりうまく動作しない・・・。物理的にモータがうまく動かなくなってしまったようです。そのため、昨日夜遅くなってから、新マシンをAmazon経由で購入をしました。機種はScanSnap iX1300・・・。昨日の夜遅く注文したにもかかわらず、本日16:00直前ぐらいに手元に届きました。感謝!感謝!
価格:31300円 |
ScanSnap iX1300を受け取ってから、床屋に行ってきました。本日届くのが分かっているのに、床屋に行ったのでは、受けとれません。雨が降っている中行って帰ってきて、ちょっとくつろいでから、デスクに向かっています。
[Googleを支える技術]
以上のような状態で、普通のサラリーマン同様に昨日、今日はお休みを頂いてしまいました。。ScanSnap S1500の故障は本当に想定外でした。
そのような中、以前読んだ本を参考に、EVEシステムの検討に入っています。その本とは『Googleを支える技術』という本です。実はこの本、私のシステム開発に大きな影響を与えた本です。2008年に出版された本で、新品はもう販売されていないようです。中古ですが、リンクを貼っておきますので、興味がありましたら、御購入ください。
【中古】 Googleを支える技術 巨大システムの内側の世界 WEB+DB PRESS plus/西田圭介【著】 【中古】afb 価格:200円 |
[どんな影響?]
この本を読むまでは、開発や技術には、原理原則があり、その原理原則に反する行為はいけない行為だと思っていました。ただ、この本を読んでから、システム開発において原理原則はないと言うことを知りました。ようは、システム開発は、こうしなくてはいけないという概念がなくなったのです。その効果により、自宅で作るシステム限定になりますが、いろいろな挑戦をするようになりました。
ただ、この本によるマイナスの効果もあります。それは、自分の考えと違うから間違っているということが言えなくなりました。それは業務限定ですが、プロジェクト的にこれはやっちゃいけないという事はあるはずなのですが、それについて指摘できなくなりました。
まっ、指摘するのが仕事でなかったと言うこともありますし、技術が多岐にわたるうえ、その技術の細部まで知らないということもあります。先日の複雑なSQLのデメリットについてもそうです。
複雑なSQLのデメリットについて、なんで、今ブログで書けたのかというと、ChatGPTの存在が大きいです。自分が以前から感じている疑問を入力するとそれに対する解答を的確に提示してくれます。間違っている場合もあるのですが、その解答が論理的で矛盾がなければ正解していると思っています。その解答が私を後押ししてくれます。
[あとがき]
『Googleを支える技術』は、まだ読み終えていないのですが、近日中には読み終え、何かしらの方針が示せればと考えています。
それと、部屋中に散らかった本のPDF化ですが、明日からにします。せっかく昨日の今日届けて頂いたのですが、今窓ガラスの外はとっぷりと日が暮れ、その状況が私からやる気を奪ってしまいました。申し訳ございません!久しぶりに動画にして見ようかな?
では、また!
2023年10月06日
すべての情報をでデータベースで管理をする《続き》 〜データベース研究室〜
こんにちは!
ナビゲータのEVEです。
昨日は話が脱線した感じがありました。すみません。分かりにくくなってしまったので、まず最初に昨日何が言いたかったのか、まとめましょう。
[昨日のまとめ]
昨日、Prototype EVEでは、ディレクトリ情報など、一部の情報をファイルで管理しているという話をしました。そして、同じように多くのシステムがその一部をファイルで管理しています。
そのように作る理由は、検索速度の向上です。管理情報までデータベースに検索に言った場合、検索速度が低下する懸念があるからです。
その苦労のひとつとして、各プログラムの先頭で当該プログラムで使用するデータを一括で取得しようとしています。ただ、そのSQLは、非常に複雑な作りとなっているため、目的の意図に反して、逆にシステムの速度を低下させているのではという話をしました。加えて、同プログラムは、複雑なゆえに、ホワイトボックス試験をすることができず、ブラックボックス試験のみでリリースしている危険性を指摘しています。
そのような現状を踏まえ、現在我々が作るシステムでは、データベースですべての情報を管理するのは難しいかもしれません。
ただ、我々がよく知るOracleは、そのシステムのほとんどをデータベースで管理しています。なぜそんなことができるのでしょうか?
今日は、データベースであらゆる情報を管理する方法について検討をしたいと思います。
[全ての情報をデータベースで管理する]
全ての情報をデータベースで管理するためには、どんなことを注意したらいいでしょうか?いろいろ考えを巡らせるのですが、やはり、検索、登録、変更、削除というデータベースの基本的な速度が早いことが求められます。
以上のことを考えた場合、Oracleは自社で製造しているため、その特性をよく理解し、製造していると思われます。だから、早いといえます。ただ、我々の場合業務で使用するのは、Oracleだけではないので、一般的なデータベースで速さを求めるためには、どんなことに気を付けたらいいでしょうか?本日も、ChatGPTに聞いてみました。
❶データベースの検索速度を向上させるためには、以下のポイントに注意することが重要です。
@インデックスの最適化
インデックスはデータベースの検索速度を向上させるための重要な要素です。適切な列にインデックスを作成し、クエリの高速化を図りましょう。ただし、過剰なインデックスはデータベースのパフォーマンスに悪影響を及ぼす可能性があるため、適度に使用しましょう。
Aクエリの最適化
クエリを効率的に書くことが重要です。不要な列を取得しないようにし、WHERE句やJOIN句を適切に使用して結果セットを最小限に抑えましょう。また、サブクエリや複雑な結合を避けることも検索速度向上に役立ちます。
Bハードウェアとインフラの最適化
データベースサーバーのハードウェアやインフラストラクチャを最適化しましょう。CPU、メモリ、ストレージなどのリソースが十分であることを確保し、適切なキャッシュ設定を構成しましょう。
Cクエリのキャッシュ
クエリの結果をキャッシュして、同じクエリが複数回実行される場合にデータベースへのアクセス回数を減らしましょう。一般的に、変更頻度の低いデータに対するクエリをキャッシュすることが有効です。
Dパーティショニング
大容量のテーブルを複数のパーティションに分割することで、データの管理や検索速度の向上が可能です。時系列データなどの特定の基準に基づいてパーティションを設定することが一般的です。
Eインメモリデータベースの検討:
インメモリデータベースはデータをメモリ内に保持するため、ディスクアクセスの遅延を回避し高速な検索を実現します。ただし、メモリの容量に注意が必要です。
Fクエリのログとモニタリング
クエリの実行ログを収集し、データベースのパフォーマンスをモニタリングしましょう。ボトルネックや問題を特定し、最適化の余地があるかどうかを把握します。
Gキャッシュ戦略
アプリケーションやデータベースレベルでのキャッシュ戦略を確立しましょう。キャッシュを使用することで、一部のデータを高速に提供できます。
Hインデックスの再構築と定期的なメンテナンス:
インデックスの再構築やデータベースの定期的なメンテナンスを実施し、パフォーマンスを維持しましょう。特にデータの増加がある場合、インデックスの再構築が必要です。
データベースのパフォーマンス向上は継続的なプロセスであり、データベースの設計、クエリの最適化、ハードウェアのアップグレードなど、さまざまな要因に注意を払うことが重要です。
以上は、データベース一般に言えることなのですが、Oracleに絞った場合、どんなことに注意しなければならないのでしょうか?引き続き、ChatGPTに聞いてみました。
❶Oracleデータベースに特化した場合、以下の点を考慮に入れることが特に重要です
@Oracleの最適化機能を活用
Oracleデータベースは高度なクエリ最適化機能を備えており、クエリプランの最適化を自動的に行います。しかし、クエリヒントやプロファイリングなどの手動最適化手法を使用して、クエリの実行計画を調整することも考慮しましょう。
APartitioningとCompressionの活用
Oracleでは、データをパーティション化して管理する機能が豊富です。時系列データやリージョン別データなど、適切なパーティショニング戦略を選択し、パフォーマンスを向上させましょう。また、データ圧縮もディスクスペースの節約と検索速度向上に役立つことがあります。
BOracle Real Application Clusters (RAC)の使用:
高可用性とスケーラビリティを必要とする場合、Oracle RACを検討しましょう。RACはデータベースを複数のノードに分散し、負荷分散と障害耐性を提供します。
Cデータの圧縮と分割
大容量のデータを効果的に管理するために、Oracleのテーブルパーティショニングおよびデータ圧縮機能を活用しましょう。これにより、データの効率的な格納とアクセスが可能になります。
DOracle Enterprise Managerの使用
Oracle Enterprise Managerは、データベースのパフォーマンスモニタリング、診断、チューニングをサポートする強力なツールです。データベースの健全性を維持し、問題を早期に検出できます。
EOracle Advanced Queuing (AQ)の活用
メッセージキューイングおよびイベントドリブンアプリケーションにおいて、Oracle AQを使用してデータベース間通信とイベント処理を最適化できます。
FSQLチューニングアドバイザとSQLプロファイリング
OracleデータベースにはSQLチューニングアドバイザとSQLプロファイリングツールが含まれており、クエリのパフォーマンスを改善するのに役立ちます。これらのツールを活用して、問題のあるSQLステートメントを特定し、最適化を行いましょう。
Oracleデータベースの特徴を活かしてパフォーマンスを向上させるために、上記のポイントを考慮することが重要です。Oracleは非常に強力で多機能なデータベースエンジンであり、適切に最適化および構成することで高性能なデータベース環境を構築できます。
やはり、Oracleに特化した項目があるようです。ただ、各項目を個別に見ると、結局のところ、最適化、監視、チューニングということになるようです。最適化の対象には、ソフト、ハード、ネットワークあり、最適化後に監視し、適時チューニングするというのが適切な運用だといえるでしょう?ただ、マンパワーがないなか、難しいとは思います。
[それ以外に求められるもの]
以上はChatGPTからの推奨なのですが、それ以外にはどんなことがあるでしょうか?私が提案したいのは、単純なクエリを複数回発行し結果を求める方法でいいんじゃない?っていうことです。複雑なクエリを作り込むと、製造的には、テストに時間がかかりますし、データベース的には、評価に時間がかかります。評価については、昨日話した通り、検索結果の再利用は難しいと思われます。
私も、複雑なクエリを作りますが、管理システムまたはバッチ処理に限定しています。理由は、使う人が限定されるとか、毎日ルーチンワークのように同じ作業を行うからです。以上の場合なら、問題がないのではと考えています。それ以外は、単純なSQLを複数発行し最終的な結果を求めています。
ただ、このような発言をして思うのは、私ができないから他の人もできないともいえず、できる人はできますものね・・・。難しい問題です。ただ、幸運にもOracleには、「@Oracleの最適化機能を活用」があります。これを利用すれば、多くの人が複雑なクエリも、最適なものとして製造できるのかもしれません。
ここまで書いてなんなのですが、私は、単純なプログラムを多用する手法を今後も利用したいと思います。
[あとがき]
以上のことをすべてやったから、さぁ、データベースですべての情報を管理しましょう!っていいたいのですが、今までの検討だけでは、難しいと思われます。やはり、ファイル管理する部分が多く、その量は減らないと思います。
ただ、ファイルで管理した場合、当該プロジェクトだと、プログラム変更にあたり、事務手続きがやたらめんどくさくなる場合があります。マスタテーブルの変更なら、そんなわずらわしさはないでしょう?
だから、データベースで管理したいと思うのですが、PHP限定で考えた場合、各プログラムの頭で、必ず、クラスのインポートが行われます。それを考えたら、そこに環境を管理するファイルが1つ増えたからと言って何か問題になるとは思えません。ただ、ファイルを読み込むのって、メモリ、キャッシュメモリと比較するとかなりの時間がかかるのは知っています。
昔のシステム、汎用機になりますが、各システムで利用するデータ、例えば、元号とか、本日の日付とか言ったものは、メモリで管理していました。システムが起動してきたとき、同変数を読込、メモリにローディングしておくのです。Windowsだったら、環境変数っていえば分かりやすいでしょうか?
なんて、いろいろなことを考えていたら、もっと検討する時間が必要なようです。EVEシステム製造時までには決めたいと思います。
では、また!
2023年10月05日
すべての情報をデータベースで管理をする 〜データベース研究室〜
こんにちは!
ナビゲータのEVEです。
まだ、動作するかどうか検証をしていないのですが、その前にやることがありました。昨日話したとおり、Prototype EVEでは、構成管理はしていないのですが、コンロールファイルでディレクトリを管理していました。そのため、今回システムをフォルダ毎に分けるという判断をしたため、そちらの方も修正しなくてはいけません。ただ、覗いてみて拍子抜け・・・・。ほとんどが相対アドレスで管理しており、絶対アドレスで管理しているのはバッチ処理用の部分だけ・・・。ただ、そちらも、上位の階層で管理していたので、ほとんど修正する必要はありませんでした。ただ、ここで、考えさせられる問題を思い出しました。
[ディレクトリ管理はどこで?]
Prototype EVEは、先ほど話したとおり、ファイルで管理しています。今まで複数のプロジェクトに参加しましたが、やはり、ファイルで管理しているところが多いように感じています。ただ、ほとんどの情報をデータベースで管理している有名なシステムがあります。それは、皆さんも知っていると思いますが、Oracle・・・。
[Oracle]
現在、世界最高峰のデータベースです。Oracle6では問題が多々あった(私が以前聞いた話です)そうですが、私が初めて利用した、Oracle8iでは、かなり洗練されたイメージがあります。
Oracleと他のデータベースを比較した場合の強みは、高セキュリティ、高可用性、スケーラビリティ、そして特に他のデータベースとの差別化ができていたのは、行ロックでした。
近年、多くのデーターベースが行ロックできるようになりましたが、つい最近というイメージです。SQLServerも2005年からできたという話がありますが、不完全で完璧な製品を提供できるようになったのは、他のデータベースと同様です。
そのため、Oracleを多くのデータベースエンジニアが選択し、導入、利用しています。
そんな世界でNo1と思われる、Oracleなのですが、ほとんどの情報をデータベースで管理しています。本で読んだ、Oracleのエンジニアから聞いたという分けではなく、管理テーブルをひたすら検索して得た印象です。
[データベースですべての情報を管理するうえでの問題点]
データベースですべての情報を管理するうえでの問題点、それは、検索速度です。
多くのプロジェクトでは、複雑なSQLを利用しているケースが非常に多いのです。簡単なSQLでシステムを製造しているプロジェクトは正直おめにかかっていません。そのため、1つのSQL文を発行すると、OracleがSQL文を解析するのに時間がかかり、かなりの時間を要します。
そのような作りをしている大きな原因が、やはり、検索速度です。何回もSQLを発行すると時間がかかるため、1回で済ませようとしているようです。そして、Oracleの場合1度発行したSQL文は再利用され、検索速度が速いというのです。
ただ、ここで疑問なのが、「1度発行したSQL文」という部分です。私の考え方では、全く同じSQLでないと再評価の対象となります。それは、Oracleは以下の流れでSQL文を評価しています。
❶SQL文をハッシュ化します
❷同ハッシュから管理アドレスを探します
❸管理アドレスにデータが格納されていた場合、その結果をユーザに返却します
という流れで、検索速度の速さを実現しているという認識です。そのため、複雑なSQL文の1箇所でも変わった場合、ハッシュ値が変わってしまい、再評価の対象になると考えています。
というのは、私の意見なのですが、実際のところはどうなのか、ChatGPTに聞いてみました。
OracleデータベースがSQL文を評価するプロセスは、簡単に言うと次のようなステップで進行しますが、少し詳細を加えて説明します:
❶SQL文の構文解析と構造解析
最初に、Oracleデータベースは受け取ったSQL文を解析し、その文の構文と構造を理解します。これにより、どのテーブルにアクセスし、どのデータを取得または変更するかを把握します。
❷クエリ最適化
解析されたSQL文は、クエリ最適化フェーズに進みます。このフェーズでは、最適な実行計画を決定するために、異なる実行パスやインデックスの選択などの選択肢が評価されます。最適な実行計画を選択することで、クエリの性能が最大化されます。
❸実行計画のキャッシュ
SQL文の実行計画は、キャッシュに格納されることがあります。これにより、同じSQL文が再度実行される場合、実行計画を再計算する必要がなくなり、クエリの実行が高速化されます。このステップは、SQL文をハッシュ化してキャッシュ内で検索することで行われます。
❹データアクセス
実行計画が確定したら、実際のデータアクセスが行われます。これは、テーブルやインデックスからデータを読み取る、またはデータを更新するステップです。
❺結果の返却
データベースがデータアクセスを実行し、必要なデータが取得されたら、その結果がユーザに返却されます。これには、クエリの結果セットや更新の成功または失敗に関する情報が含まれます。
要するに、SQL文のハッシュ化はクエリ最適化の一部であり、管理アドレスを特定するという簡略化された概念はOracleの内部動作を正確に反映しているわけではありません。Oracleデータベースの内部プロセスは非常に複雑で、パフォーマンスを最適化し、データを効率的に取得するために多くの最適化ステップが組み込まれています。
ちょっと、分かりずらいので、再度、SQL文を1箇所でも変更した場合、再評価の対象となるかどうか、聞いてみました。
SQL文が変更されると、通常、新しいSQL文が再評価の対象となります。OracleデータベースはSQL文のテキスト全体をハッシュ化し、このハッシュ値を使用してクエリキャッシュ内での検索を行います。異なるSQL文には異なるハッシュ値が生成されるため、同じSQL文であっても1か所でも異なる場合、新しいハッシュ値が生成されます。
このため、同じクエリを再度実行する際に、データベースは新しいSQL文に対してクエリ最適化を実行し、新しい実行計画を決定します。したがって、SQL文の1か所でも異なる場合、データベースは新しいSQL文を評価し、新しい実行計画を生成します。
ただし、一部のSQLクライアントやアプリケーションは、クエリキャッシュを無視してSQL文を実行する設定になっていることもあります。この場合、SQL文が変更されてもクエリキャッシュの再評価は行われません。したがって、SQL文の変更が正しく反映されることを確認するために、適切な設定を行う必要があります。
ということは、プレースフォルダで値を変更しているSQL文は常に再評価の対象となり、以前検索した結果が再利用されることは期待できないと考えたほうがいいようです。
[デバックできないSQL]
常に再評価がありそうだという複雑なSQLですが、プログラムのようにデバックができません。但し、プログラム同様に分岐的な記述なども可能です。
プログラムで言ったら、デバックがないプログラムを目検で確認するようなモノです。そんな行為はどのプロジェクトも許可しません。ただ、SQLは、どのプロジェクトでも認められています。
しかも、試験をする場合、ホワイトボックス試験の難易度がかなり高くなります。そのため、ブラックボックス試験しか実施していないと思われます。
そんなプロジェクトで、複雑なSQL文を見ながらかなり、不安を覚えた記憶があります。
[あとがき]
本日は、システム情報をデータベースで管理するのは問題があり、その大きな問題が検索速度という話をしました。但し、冒頭にも書きましたが、Oracleは、データベースでほとんどの情報を管理しているようです。では、なぜそんなことができるのでしょうか?明日は、「システムエンジニアが目指す中小企業診断士」を書く予定でしたが、変更しこの続きを書きたいと思います。
では、また!
2023年10月04日
EVEシステム製造再開 〜システム開発研究室〜
こんにちは!
ナビゲータのEVEです。
まだまだ波に乗れない、プロジェクトです。各タスクの時間配分が分かりません。といいながら、今日はいやなことがあったなど、いろいろな理由があり、今日は何も手つかずの状態なのですが・・・。明日から、またがんばります。
[EVEシステムの製造]
今週から、開発に入る予定だったEVEシステムの開発ですが、今日からやっと手をつけました。それは、プログラムの管理アドレスを変更する。
Prototype EVEでは、構成管理はしていないのですが、各プログラムの情報はシステムで管理しています。理由は、各プログラムへのアクセス権を管理しているためです。一般の方が自由にアクセスできるプログラムと、管理者のみにアクセスさせたいプログラムってありますよね?そのプログラムをシステムで管理するために、アドレスをシステムで管理しています。
最初に導入したのは、Oracleのロールのように管理する方法・・・。ただ、途中からロールだけでなく、アクセスレベルをつけました。ロールへのセキュリティレベルをつけたのです。これにより、どのロールがどのようなセキュリティレベルにあり、どんな人にアクセスさせたいのか明確にしました。
[なんでプログラム管理アドレスを変更する]
プログラムの管理アドレスを変更する理由は、1つのサーバーで複数のシステムを動かそうとしているためです。それは、Prototype EVEと、EVEシステム・・・。当初New Prototype EVEを作る過程で、ログインシステムを共存させるのですが、最終的には、ログインシステムを分けます。そう考えると、同じフォルダに、混在させるのは開発の混乱を招きます。
[手順]
以下の手順で、各プログラムのアドレスを変更します。
@環境バックアップ
仮想環境のスナップショットをとる。
AMySQLログイン
B管理ディレクトリ調査
管理ディレクトリの調査を行う。
#select distinct(dirItem) from ProgramTable;
Cディレクトリ比較表作成
Bの結果から、旧ディレクトリと新ディレクトリの対比表を作成します。
D調査結果に基づきUPDATE文を作成
#update ProgramTable set dirItem = "[新アドレス]" where dirItem = "[Cで調査した結果]"
Eディレクトリ変換
Dで作成したupdate文で、一括変換を実施する。
F動作検証
システムがきちんと動作するか、各プログラムを実行する。
[あとがき]
本日Eまで実行しました。やってみて、驚いたこと・・・。正確に入力されていると考えていたディレクトリ情報にいろいろな記述があった???
このディレクトリ情報が正しく入力されていないと、きちんと動作するわけがないのだが・・・・?
まっ、調べるのは後回し・・・。じゃ、ディレクトリ情報に基づき、プログラムを移動し、動作検証を行います。
では、また!
タグ:PHP8
2023年10月01日
ジャニーズ事務所 〜Coffee Time〜
こんにちは!
ナビゲータのEVEです。
2023年5月16、18、21、22日と複数日ジャニーズ事務所の性加害問題を取りあげてきましたが、落ち着いたようです。責任の所在について明確になり、今度は補償の問題に入っています。ただ、まだ、問題がいくつかあるようです。
[現在の問題]
現状どんな問題があるのでしょうか?
@社長の問題
A社外の人間が検証していない
B社名の問題
C補償の問題
@Aは、内部の人間だけで今回の問題を片付けようとしているところに問題があると考えています。社内で今まで問題ないと考えていたその思考が今回の問題を適切に処理できるとは思えません。社外の人間がリーダーシップを取りこの問題を解決して欲しいと思っています。@Aの行動は、このような大きな問題を長い間放置してきたにも関わらず、まだジャニーズ事務所を残したいと考えているようにしか思いません。タレントは別の事務所に移籍したり、独立すればいいだけの問題で、別にジャニーズ事務所がなくなってももうどうでもいいと思うのですが???
Bは、@A同様なのですが、なんで、この状況においてまでジャニーズという名前を残そうとするのか理解できません。正直言って、ジャニーズと聞いたからといって、ジャニー喜多川氏を思い浮かべることはないのですが、犯罪者の名前を社名として残そうとしている神経が良く理解できません。
Cは、過去に遡り、法律の枠を越えて補償をすると社長である東山さんが公言しています。ジャニー喜多川氏は、今回同様の犯罪を海外でも犯しており、被害者の方々は海外の裁判所でも訴えている状況です。海外の場合、犯罪の時効がないケースがあり、しかも、犯罪に対する賠償額は日本で考える金額から見ると法外です。そのような見方で見ると、ジャニーズ事務所をつぶさないための措置に感じて仕方がありません。重ね重ねになりますが、残す必要はないと思うのですが・・・?
それと、今回補償額についてどうやって決めるのでしょうか?1晩いくら?・・・。被害者はそれを聞かれるのもいやだと思っていると思うのですが・・・?適切に取り扱ってほしいです。
[テレビ及びマスコミの罪]
この問題を提起したとき、ジャニー喜多川氏を糾弾するのと同時に、当サイトでは、テレビ及びマスコミに対しても強い口調で避難しました。
2000年初めに、ジャニー喜多川氏は、性加害の問題で裁判で有罪になりました。それにもかかわらず、マスコミは何も対応を取ってこないというか、その後もジャニーズ事務所を冗長するような対応を取ってきたからです。
それについて、複数のテレビ局から以下のようなコメントが出てきました。その一部について御紹介したいと思います。
❶男性の性加害がそんな重大な犯罪だとは思わなかった。
❷視聴率がほしかった。
❸社内においてジャニーズ事務所は、アンタッチャブルのような状態だった。
今回の問題正直って、男性だけで終わるとは思っていません。以前、モデルのマリエさんが、出川哲郎氏から島田紳助氏への枕営業をすることを進められたというニュースが流れていましたが、このジャニーズ問題から想像すると、氷山の一角でしょう?氷山の一角しか報道されてきていない、女性への性加害の問題は、ジャニーズ問題が大きくなっても出てきていません。全くなかったならいいのですが、今までマスコミ関係のニュースを複数見てきていますがそんなことはないだろうと思っています。そんな印象をもっている私としては、❶は言い訳の何物でもないと思っています。次に女性への性加害の問題が報道された時の言い訳が楽しみです。
❷❸の意見を聞くと、その当時のジャニーズ事務所の芸能界への影響力の強さがうかがえます。ただ、NHKまでいっているのは納得できません。我々が支払っている受信料でなりたっているのでしょう?受信料を返してください。
マスコミが社会的機能を適切に果たさなかったために、多くの被害者が出ました。その辺を、もっとよく考えてほしいです。
[あとがき]
いろいろな企業がジャニーズ事務所のタレントを使わない方向で動いています。ただ、違和感を感じるのは、ジャニーズ事務所にも問題はあるのですが、主原因は、ジャニー喜多川氏です。その本人が生きていれば当然このような行動をとるべきだと思うのですが、もうすでに死んでいます。体質的にまだ問題があるのかもしれませんが、遅きに失ったという印象は否めません。
では、また!
■故ジャニー喜多川氏の報道について [Coffee Time](2023年5月16日)
https://fanblogs.jp/bahamuteve/archive/298/0
■クローズアップ現代「故ジャニー喜多川氏の性犯罪の報道」の違和感 [Coffee Time](2023年5月18日)
https://fanblogs.jp/bahamuteve/archive/300/0
■スターになるということ〜故ジャニー喜多川氏の事件を受けて〜 [Coffee Time](2023年5月21日)
https://fanblogs.jp/bahamuteve/archive/303/0
■この事件の責任はどこに? 〜故ジャニー喜多川氏の事件を受けて〜(2023年5月22日)
https://fanblogs.jp/bahamuteve/archive/304/0