window 検索結果

検索件数 : 11

21

こんにちは。明月です。 この投稿はapache-tomcatでロードバランシング(load balancing)する方法とセッションクラスタリング(セッション共有)に関する説明です。 以前の投稿で私がapacheとtomcatを連携する方法に関して説明したことがあります。link - [centos] apacheとtomcatの連携 その時にはapache-tomcatの1:1の連携だったんですが、今回はapacheから数多くのtomcatを連結してトラフィックを分散する方法です。運用中でウェブサイトで接続者が多くなると始めに構成することがapache-tomcatとの分散です。動的なウェブサイトなら以外にこのweb servletで処理トラフィックが多くなります。なぜならservletでデータベース接続もしなければならないし、様々な設定ファイルを読み込し、複雑な仕様だったらservletで処理することが多くなります。これを数多くのサーバで運用してapacheでトラフィックを集まってロードバランシング、つまり、トラフィックに合わせてservletを分散してサイトがトラフィックにより遅くなることを少しでも改善することではないかと思います。apache段階でのトラフィックが多くなるとdns段階でapache分散するべきですね。私もそこまでの作業をしたことがないので、正確に言うことは難しいです。 apacheでmod_jkを連携するためにはworkers.propertiesを修正しなければならないです。httpd.confにはworker listを設定すれば良いでしょう。上の例をみればjkmanagerを別途に設定しました。jkmanagerはapache - tomcatを連結する時にロードバランシングの状態を確認できるページです。apache-tomcatで数多くのサーバを管理する時、しっかり連携されているかを確認するページです。もし、一つのtomcatが問題になると状態ページでその結果を知らせてくれます。ここまで設定すっればロードバランシング設定は完了です。でも実際にウェブサーバを運用すればロードバランシングだけ設定する場合にセッション共有がしなかったので、変な現象が発生します。。代表的に急にログアウトされる場合があります。なぜ

Devlopment note / Window

#apache,#tomcat,#loadbalancing,#sessionclustering

作成日付 : 2021/11/05 16:58:45       修正日付 : 2021/11/05 17:00:24

22

こんにちは。明月です。 この投稿はapacheでmod_jkとmod_proxyの差異、apacheでtomcatのwebsocketのプロキシフォーワードする方法に関する説明です。 以前にtomcatとapacheを連携する方法に関して説明したことがあります。link - [centos] apacheとtomcatの連携link - [php] apache環境の同じホスト中でphpとjava(servlet)を同時に起動、運用する方法 上のリンクを見るとapacheとtomcatを連携する方法に関してmod_jkを利用する方法があるし、mod_proxyを利用する方法があります。始めのリンクはmod_jkでapacheとtomcatを連携する方法で説明したし、二つ目はmod_proxyでapacheとtomcatを連携してcomplex languageを使う方法に関して説明しました。 二つの連携方法に関して各の特徴がありますが、mod_jkで連携する方がapacheとtomcatを完全に連結することです。つまり、仮想ディレクトリを作成するならapacheだけ設定することではなく、tomcatにも設定をしなければならないです。もちろん、apacheにも仮想ディレクトリを設定することが可能ですが、様々な問題が発生する可能性があります。mod_jkで連携したvirtualhostですが、ここで私が「jkmount /* websocketex」を「jkmount /java/* websocketex」に設定を変わると「localhost/java」や「localhost:8009/」をフォーワードすることではなく、「localhost:8009/java」を指すことになります。つまり、tomcatにも仮想ディレクトリを合わせなければならないです。このように設定するとかなり複雑になります。なぜならルートは仮想ディレクトリに使うことができなくなったからです。でも、complex languageにはルート(/)をphpで使って「proxypass /java ajp://localhost:8009/」を使う場合は「localhost/java」が「localhost:8009/」にフォーワードすることになります。つまり、tomcat

Devlopment note / Window

#window,#apache,#mod_jk,#mod_proxy,#tomcat

作成日付 : 2021/11/05 16:55:05       修正日付 : 2021/11/05 16:56:55

24

こんにちは。明月です。この投稿はc#のウィンドウフォーム(window form)でスレッド(thread)を使い方、クロススレッド問題解決に関する説明です。以前の投稿でc#のスレッドに関して説明したことがあります。link - [c#] 37. スレッド(thread)を使い方、thread.sleep関数を使い方スレッドはプログラム内で並列処理することの意味です。まずウィンドウはシングルスレッドの無限ループで動いています。でも、我々がボタンのクリックイベントでループを実行するロジックを作りましょう。プログラムを実行してボタンを押下するとループが終わるまでウィンドウフォームは動きません。時間が流れたら応答なしになってプログラムが凍っている時もあります。つまり、ウィンドウはシングルスレッド状況なのでその関数のスタックに掛けると処理が終わるまで動きません。そうするとボタンを押下する時、複雑な処理をすると思えばどのように処理するでしょう?スレッドを利用すれば良いでしょう。ボタンをクリックしてコンソールに1ずつに出力してもウィンドウが凍らないことを確認できます。そうすると今回はコンソールに出力することではなく、ウィンドウのコントロールで出力するように作成しましょう。ボタンをクリックするとすぐエラーが発生します。理由はwindowで動いているスレッドとスレッドプールで動いているスレッドが同期化されてないからです。スレッド間に同期化しようと思えば、お互いにlockを設定して同期化すればよいのに、ウィンドウメッセージを動いているスレッドにlockを掛ける方法がありません。これをc#ウィンドウ開発ではクロススレッド問題と言います。これを解決する方法が各コントロールにあるinvoke関数を利用してvisitorパターン、つまりコールバック関数という方法で処理ができます。ソース上にstatic utilクラスを作成してcontrolクラスの拡張関数を作成しました。そしてスレッドプールの中でlabel1インスタンスにinvokecontrol関数を呼び出してラムダ式でコールバック関数を作成しました。ボタンをクリックするとlabelに数字が1秒単位で更新することを確認できます。ここまでc#のウィンドウフォーム(window form)でスレッド(thread)を使い方、クロススレッド問題解決に関する説明でした。ご不明なところや

Study / C#

#C#,#window,#thread

作成日付 : 2021/11/04 19:29:51       修正日付 : 2021/11/04 19:30:43

27

こんにちは。明月です。この投稿はc#のウィンドウフォーム(window form)のイベント設定する方法に関する説明です。以前の投稿でウィンドウフォームにコントルールを追加してcontrolクラスを継承してコントロールを作成する方法に関して説明しました。link - [c#] 59. ウィンドウフォーム(window form)にコントロール(control)を使い方法コントロールというのはフォームで動的に動いているオブジェクトという意味ですね。ユーザから入力を受け取るか(textbox)、マウスからクリックのアクションを受け取るか(button)、データを表示する(gridview)などの様々なコントロールがあります。このコントロールの状態が更新する時に発生する処理をイベントと言います。基本的にコントロールのイベントを受け取る方法が二つの方法があります。始めはオブジェクトの再定義(override)する方法があります。ボタンをクリックするとコンソールにclickの値が出力されます。でも、上みたいにイベントを設定することになったら基本的に提供するコントロールを使うためにはすべてのコントロールクラスを継承して再定義しなければならないですね。二つ目はeventキーワードを利用するイベント設定です。eventを利用してクリックイベントを追加する方法です。eventキーワードに関しては以前の投稿で説明したことがあるのでご参考してください。link - [c#] 25. イベント(event)キーワードを使い方二つの方法ではどの方法が良いかというと仕様別で差異があります。一応、overrideとeventキーワードを利用するイベントでどの流れで動いているかを説明します。実行順番を見ると再定義したonclick関数が呼び出されます。その後でeventキーワードのイベント関数が呼び出されます。そしてまた、onclick関数のコンソールに出力が実行します。つまり、外部クラスのイベントを発生する前には再定義したonclick関数が呼び出されるし、base.onclickを通って外部eventキーワードの関数を実行して、再定義した関数に戻ってスタックが終了します。もし、base.onclick関数をコメントしたらどうでしょう?外部に登録したeventキーワードの関数が実行されません。そしてbase.onclickの呼び出すと

Study / C#

#C#,#controlevent

作成日付 : 2021/11/02 21:18:08       修正日付 : 2021/11/02 21:18:08

31

こんにちは。明月です。この投稿はc#のウィンドウフォーム(window form)にコントロール(control)を使い方法に関する説明です。以前の投稿でwindow formを作成する方法に関して簡単に説明しました。link - [c#] 58. ウィンドウフォーム(window form)を作成する方法、そしてウィンドウメッセージとキュー一般的に我々がウィンドウプログラムを作成するとよく使うクラスはたぶんコントロール(control)オブジェクトです。このコントロールオブジェクトは基本的に.net frameworkから提供しています。実はこの基本的なコントロール(control)だけ使ってもほぼすべてのウィンドウプログラムを作成することができます。仕様により必要なコントロール(control)を開発することができますが、私の考えで多いプロジェクトが基本的に提供するコントロールだけで十分に開発ができると思います。まず、フォームにコントロールを追加する方法はデザイン画面でドラッグアンドドロップ(drag and drop)を利用して追加することがあるし、form1.designer.csページでソースを作成して追加することができます。様々な簡単なコントロールを追加する部分はやはりデザイン環境で作業することが便利ですが、デザインで追加すると精密な設定は大変な部分があります。そうならform1.designer.csで追加する方法です。私がwindowフォームでコントロールを作成する方法はいったんdesignerソース画面で使うコントロールメンバー変数とインスタンス生成、そしてname設定(これが一番重要)、text設定、そしてcontrols.addを通ってwindowフォームにコントロール設定を追加します。次はまた、デザイン`モード画面に戻ってコントロールをウィンドウフォームに合わせて配置、サイズ設定をします。そしてまた、ソースに戻って精密な設定をします。なぜ、このように複雑に作るかなと思いますが、率直にvisual studioに提供するデザインモードはすごく便利です。でも、自動設定が多すぎるので気づかなくソースが作成されてしまうことも多いです。例えば、name項目です。このname項目はwindow formで別に要らないとみえますが、実は識別ですごく重要な部分です。我々がメンバー変数を宣言してメン

Study / C#

#C#,#windowform,#control

作成日付 : 2021/10/29 19:45:43       修正日付 : 2021/10/29 19:45:43

33

こんにちは。明月です。この投稿はc#でウィンドウフォーム(window form)を作成する方法、そしてウィンドウメッセージとキューに関する説明です。c#という言語はms社で開発した言語でwindow osに環境で特化されています。つまり、c#言語で我々がよく使うウィンドウ環境でウィンドウプログラムを開発することができます。javaやその以外のpythonなどを通ってウィンドウプログラムを作れないということではありませんが、でも、ウィンドウがms社の製品なのでc#からwindow apiを使うのがもっとしやすいです。実は、c#言語を勉強することはウィンドウプログラムを作るためというのも間違ってありません。最近、ゲームエンジンでよく使うunityも基本的に使う言語もc#です。それなら簡単にウィンドウフォームを作成しましょう。visual studioを起動してプロジェクト作成します。そうするとwindow forms app項目が二つが出ます。一つはcore用だし、もう一つは.net framework用です。core用を使っても構いないですが、window formは基本的にwindow環境で実行するプログラムなのに、coreを選択する必要はありません。最近に使うwindow 10には基本的に.net frameworkがインストールされていますね。そしてプロジェクト名を入力してプロジェクト作成します。それならvisual studioに基本的にwindow formが生成されています。そのままにf5(starting debugging)を押下するとウィンドウにウィンドウプログラムが実行されていることを確認できます。実はここまでしてもウィンドウプログラムを一つ作ったことと同じ意味ですね。ここで我々がウィンドウフォームにボタンを一つ追加しましょう。visual studioの隣を見るとtoolboxがあることを確認できます。そこでbuttonを探してフォームにマウスを押下しながら引き付けます。(drag-and-drop)そうするとフォームにボタンが生成されたことを確認できます。そうするとボタンをダブルクリックしましょう。そうなるとソース画面に変わったことを確認できます。何かを知らないですが、button1_clickという関数がありますね。ここでクリックする時に動作するソースを実装するらしいです。but

Study / C#

#C#,#windowform

作成日付 : 2021/10/27 20:35:44       修正日付 : 2021/10/27 20:35:44

61

こんにちは。明月です。この投稿はwindowにmariadbをインストールする方法に関する説明です。我々がプロジェクトを設計してプログラムを作成して一番よく使うプログラムがデータベースです。データベースの種類はすごく多いですが、その中で無料だし、性能が良いrdbmsプログラムのmariadbをインストールしましょう。以前の投稿でcentos(linux)環境でインストールしたことがあります。link - [centos] mariadb(mysql)をインストールwindow環境にはlinux環境ほど、複雑ではありません。ただ、インストールファイルをダウンロードしてインストールしたら良いです。link - https://go.mariadb.com/download-mariadb-server-community.htmlウェブページに接続すると名前と職業などの基本情報を入力しますが、正確に入力する必要なしで、簡単に作成してダウンロードしたら良いです。そうするとosのバージョンを選択する画面が出ますが、我々はwindow環境でインストールするので、window 64を選択してダウンロードしましょう。ダウンロードが完了すると下記とおりにインストールファイルができます。インストールファイルをダブルクリックして実行しましょう。ライセンスを同意選択をしましょう。インストールするドライブを選択しましょう。次はrootの基本初期パスワードを設定します。そしてservices.mscに表示するサービス名とポート設定ですが、特に設定することではなければdefaultで設定してnextボタンを押下します。mariadbはオープンソースなので、使用するところでフィードバックが必要ですね。私はチェックボックスを選択せずにnextボタンを押下しました。これからインストールが始まります。インストールが完了するとウィンドウメニューでmariadbフォルダが作成されました。この中でmysql clientをクリックして接続します。そしてmysqlデータベースに接続してuser情報を確認します。そしてユーザを一つ生成して権限を与えます。これからsql queryの探索機を利用して接続してみましょう。私はdbeaverというクエリ探索機を使います。link - [tools] dbeaver(無料sql queryブラウザツール)プロ

Devlopment note / Window

#mariaDB,#window

作成日付 : 2021/10/08 18:56:05       修正日付 : 2021/10/08 18:56:05

147

こんにちは。明月です。この投稿はwindowでftpサーバを構築する方法に関する説明です。最近、cloud driveというクラウドストレージがあり、どんなパソコンでも簡単にファイルを共有、バックアップなどをできますが、わずか10年前には大勢の人がメールやusbなどでファイルを共有やバックアップをたくさんしました。メールの短所はインタネットができるところならファイルを共有できますが、ファイルバージョン管理が難しいし、データサイズのリミットがあります。usbの場合は常に所持しなければならならない不便があるし、データサイズのリミットもあります。それでサーバを扱うデベロッパーやseなら家やデータセンターにnasサーバを構築してftpでファイルを共有しました。でも、先に説明した通りにcloud driveがあるので最近はftpを使用する頻度がたくさん低くなったし、社内ではftpよりサンバーサーバ(samba)というネットワークドライブが楽なので最近はよく使いません。しかし、個人的にプログラム開発上ではcloud drive apiを使うことでは少し負担があるし、社内ではサンバーサーバ(smb)よりもっとセキュリティ的だし簡単に開発できるプロトコールなのでftpが良いではないかと思います。window環境ではftpサーバを構築するために別にプログラムをインストールする必要がないし、windowの基本パッケージであるのでインストールだけでよいです。コントロールで「プログラムと機能」を開きます。そして「windowsの機能の有効化または無効化」を選択しましょう。そしてftpサーバーとiis管理コンソールなどを選択しましょう。確認ボタンを押下すればインストールが開始します。そして数分をお待ちしたらインストールが完了します。そしてプログラム検索に「iis」というコマンドを打ったらインタネットインフォメーションサービス(iis)マネージャーのプログラムが検索されますが、それをクリックして実行します。そしてサイト項目でマウス右をクリックすればftpサイトの追加項目があります。サイトの名前を入力してftpサーバーでファイルアップロード及びダウンロードするパスを設定します。もしかして別にホスト設定があればip設定でホストドメインを入力します。でも別に制限がなければ指定しなくてもよいです。また、ssl設定が必要なら証明書を入れるしな

Devlopment note / Window

#window,#ftp

作成日付 : 2020/03/19 03:27:22       修正日付 : 2020/03/19 03:27:22

241

こんにちは。明月です。ウェブサーバということで代表的なミドルウェアは「apache」と「iis」があります。「iis」の場合はwindowサーバの専用のウェブサーバです。iisで使えるプログラム言語は「asp」と「asp.net」があります。追加モジュールをインストールすると「php」や「java」も出来ないことではないですが、普通で使わないです。「apache」の場合はwindowサーバやlinuxサーバで別にosの関係なくて運用できるウェブサーバです。「apache」の場合はアプリサーバではないので「apache」ままでは静的ウェブページと「perl」、「python」だけを使えますが、「tomcat」や「php」を拡張すると「java」や「php」まで使えます。link - https://www.apache.org実は上の公式ホームページでは「apache」サーバをダウンロードができません。いや、正確にいうとコンパイル前のソースがあるのでダウンロードしてもコンパイルをしなければならないです。その手続きが簡単ではないですね。それでコンパイルされたファイルをダウンロードしなければならないですが、それは別のアドレスで提供しています。link - https://www.apachelounge.com/download/この間まではバージョン2.2も提供しましたが、もう、提供しないらしいですね。それなら「2.4」バージョンをダウンロードしましょう。ダウンロードして適当なところで解凍しましょう。そして「conf」フォルダの中で「httpd.conf」ファイルがありますが、メモ帳で開きます。その中で「server root」を変更しなければならないです。上の37行目で「serverroot」が「c:\apache24」で設定されていますね。私の場合はdドライブでインストールしましたので、「d:\apache」で設定しました。2.2バージョンでは置換子がなかったので修正する項目が多かったが、2.4バージョンは置換子(define)があるのでそこだけ修正すれば良いですね。コンソールに当該なディレクトリに移動して「bin」フォルダの「httpd」を実行しましょう。後、ブラウザに「localhost」を打って接続しましょう。「it's work」という文言が出ればきちんとインストールがされていることです

Devlopment note / Window

#window,#apache

作成日付 : 2019/10/18 07:36:51       修正日付 : 2019/10/18 07:38:38

260

こんにちは。明月です。この投稿はwindowでmariadbをインストールする方法に関する説明です。我々がプロジェクトを設計してプログラムを作成することで一番よく使うプログラムはデータベースです。データベースの種類はすごく多いですが、その中で無料でパフォーマンスがいいし、rdbms系のデータベースのmariadbがあります。mariadbの特徴に関して説明するとoracleとmssql(sql-server)と同じタイプのrdbms系だし、ライセンスが無料になります。なのでsqlクエリでテーブルやデータを入力、検索が可能です。それならmariadbをインストールしましょう。以前にlinux(centos,ubuntu)でmariadbをインストールしたことがあります。link - [ubuntu] mariadb(mysql)をインストールする方法link - [centos] mariadb(mysql)をインストールwindow環境でmariadbをインストールすることはlinuxみたいに複雑ではありません。link - https://go.mariadb.com/download-mariadb-server-community.html上のアドレスリンクで接続すればnameや様々な情報を入力してっていいますが、簡単に入力してdownloadを押下してダウンロードしましょう。それならosのversionを選択してっていいますが、window環境でインストールするからwindow64を選択してダウンロードします。インストールファイルをダブルクリックしてインストールしましょう。ライセンスの同意しましょう。インストールするドライブを選択しましょう。次は初期rootのidのパスワードを設定しましょう。そしてservices.mscに表示するラベル名とポート設定ですが、特異事項がなければdefaultでnextボタンを押下しましょう。使用中でフィードバックを可否ですが、チェック解除してnextボタンを押下しましょう。これからinstallが始まります。インストールが完了すればスタートメニューでmariadbフォルダが生成されます。この中でmysql clientをクリックして接続します。そしてmysqlデータベースで接続してuser情報を確認しましょう。そしてユーザを一つ生成して権限を与えます。これでsql

Study / Java

#java

作成日付 : 2019/09/25 19:58:30       修正日付 : 2021/04/28 19:12:44

333

こんにちは。明月です。我々が「window」を使う間に「context」メニューをカスタムマイズや編集ができれば「window」運用中でもっと楽になるではないかと思ったことがあります。その前に「window」の「context」メニューが何かと言うと「window」の画面のバックグラウンドにマウスの右クリックすると出るメニューです。上のイメージのメニューが「context」。メニューです。(ここで「context」メニュを知らないなら説明が続けられないので、「window」のバックグラウンドでマウス右クリックしてみて確認してください。)そうするとこれから「context」メニューに命令語を登録して編集してみます。「window」の環境設定は「regedit」というところに「window」の全て設定があります。例えば、拡張名が「.xxx」の場合に何のプログラムを連携することや、「window」が始動する時にバックグラウンドで実行するプログラム設定などの様々な設定があります。(そのため「regedit」を間違って設定すると「window」が可笑しくなる可能性があるので気をつけてください。)※「ファイル名を指定して実行」は「window」マークボタン(左の下のaltキー隣)+「r」キーを押下すると開けられます。上のイメージが「regedit」の「window」です。「regedit」の「window」が開いたら様々な「key」があると思いますが、我々はcontextのmenuの設定だけ編集するなので「hkey_classes_root」の群だけ確認します。参考に「hkey_classes_root」のキーは拡張子別で連携されるプログラムの環境設定です。「hkey_classes_root」のキーを開くと様々なサブキーが見えると思います。そのキーの中で我々は「directory」キーを編集するつもりです。「directory」キーは「explorer」の「directory」と関係があるキーです。ここで我々が「context」-「menu」を編集することができます。下記のイメージは「context」メニューを編集した結果になります。「examplemenu」のメニューをクリックすると我々が「command」キーに設定した命令語が実行させ、コマンドウィンドウが開けられます。ここまで「context」のメニューを編集

Devlopment note / Window

#window

作成日付 : 2019/07/01 01:42:41       修正日付 : 2019/10/18 07:31:58