カーソルの位置を記憶する。記憶していたカーソルの位置に戻す。\033[u\033[を使って画面表示を消すこともできます。土オラクルデータベースの初期化パラメータの内容を確認してみよう。a.NAME='sga_max_size';初期化パラメータの内容を変更してみよう。変更する初期化パラメータはshared_pool_sizeにします。現在のパラメータを確認します。a.NAME='shared_pool_size';次のSQL文でshared_pool_sizeの値を変更します。memory;値が変更されました。次にログバッファの値を変更してみよう。現在の設定内容を確認する。memory;変更できませんでした。これはlog_bufferの値は動的に変更できないように制限されているからです。変更するには、初期化パラメータ―ファイルを変更しインスタンスを再起動する必要があります。どの初期化パラメーターが現行値を変更できて、どの初期化パラメータ―が変更できないのかは以下のSQLで確認できます。('log_buffer','shared_pool_size');ISINSTANCE_MODIFIABLEの値がFALSEの初期化パラメーターは動的に変更ができません。初期化パラメータファイルの値を変更しインスタンスを再起動する必要があります。次に初期化パラメータ―の値を変更したためインスタンスの起動に失敗した時の対処方法を実際に確認してみます。sga_max_sizeの値を変更してインスタンスの再起動に失敗するケースでみていきます。現在のsga_max_sizeの値を確認します。('sga_max_size');VALUE値はグラニュルという最小単位で変更します。sga_max_sizeが1GB以下の時はグラニュルは4MBになります。1GBより大きい場合、16MBになります。32ビットWindowsの場合は8MBになります。現在、sga_max_sizeは440MBに設定されているため、グラニュルは4MBです。4194304[Byte]sga_max_sizeを444MBに変更してみよう。初期化パラメータ―ファイルの変更は成功しました。データベースをシャットダウンして再起動してみます。初期化パラメータ―の変更が影響してインスタンスの再起動に失敗してしまいます。初期化パラメータ―ファイルの値を元の値に戻します。system文を使用することはできません。SPFILEはバイナリファイルのためテキストエディタ等で編集してもとの値に戻すこともできません。SPFILEからPFILEを作成します。PFILEはテキストファイルのためテキストエディタで内容の編集が可能です。間違えて変更してしまったSPFILEは不要のため別の名称に変更しておきます。いうファイル名をリネームすればよい。いうファイルを編集して、今回変更した初期化パラメータファイルPFILEをSPFILEに戻す。オラクルを再起動します。大規模なシステム更改の案件があり、その際にORACLEのバージョンを上げることになったのですが、その旧バージョンから次期バージョンの間に、実はメンバーの認識していなかった仕様変更が含まれていた事が発覚しました。BY句、DISTINCT句の暗黙的ソートが廃止になった』とのこと。ソート順序に影響はないか、全ソースの調査が必要になりました。10g以降で廃止になったようです。(この辺りを参照)http://otn.oracle.co.jp/forum/thread.jspa?threadID=2002356http://otn.oracle.co.jp/forum/thread.jspa?threadID=35004433知っている人にとっては、何を今更、な話題ではあると思うのですが、システムのバージョンを上げる時は注意しないと、予期しないところで仕様変更のあおりを受けることがある、という話でした。BY句をちゃんと書いていれば問題はない訳で、まあ念の為の調査という事で、実際影響は殆どなかったのですが。良い記事を見つけたのでメモ的に。分かり易く解説されています。どちらかのワードを含む検索結果がみたいとき右の画像からも分かるように、今度は複数の単語を含む検索がしたいときの方法を紹介します。しちゃえばいいですね!もちろん、ポケモン*だぜ!でもいいですし*ゲットだぜ!でもよいですよ。画像検索の色とか種類で絞りたいとき画像検索のプラス技が実はあったんです!検索窓に検索ワードを入力し、画像検索します。検索ツールというところをクリックするといろいろなオプションがでてきます。由来や語源といった情報、栄養成分表などが表示されます。それは食材なんかでも表示されるようになっているんです!トマトやきゅうりなんかの野菜や、右の画像ではキムチなんかも表示されていることが分かりますね!カロリー調べたい場合はぜひ使ってみてください(^^)/Google検索のプラス技を7個ほどご紹介しました。意外と知らないことも多かったのではないでしょうか情報検索のうまい人って仕事できるようなあ~というイメージから今回このような内容を記事にしてみました。いらない情報につかまって時間を無駄にすることなくスムーズに一発で情報が見つけられるようになりたいものです。ついて紹介したいと思います。入力していざ検索してみるとなんとまさしく、ページごと一回転してくれちゃいます。傾いてしまったGoogle1番でもご紹介したように、検索ワードに何かを入力するとページが微妙に傾いてしまいました。そのリンクをクリックすると重力に負けていろんなものが落ちてきちゃうという。パックマンで遊べちゃう2010年5月21日に「パックマン誕生30周年」を記念して公開された、パックマン。検索ワードにパックマンとして検索すると一番上にパックマンのDoodleが表示されます。Doodle公開期間が過ぎているのでもうできないと思いきやなんと今でも遊べるようになっているようです。かわいかったGoogleアレンジグーグル検索のページで「Google」のロゴが、その日を祝うデザインになっているときがあります。これに名前がついていることはご存知でしたか???グーグルは「Doodle(ドゥードゥル)」と命名しているようです。「doodle(ドゥードゥル)」には「いたずら書き」という意味もあって「Google」のつづりとも韻を踏んでいて遊び心に富んでますよね。見過ごしていた方も多いと思いますが、デザイン性も豊かでムービーバージョンなんかもあるので過去のも見たくなります。画像の編集をしようと思ったとき、Windows付属のペイントではやりたいことが出来なかったり面倒だったりします。画像の合成をしようと思えば、ペイントではいろいろと面倒です。ペイントの場合の手順は、まず下地にする画像を編集状態で読み込みます。合成したい画像(背景が透過されているpng画像)を貼り付けの「ファイルから貼り付け」を選択します。「ファイルから貼り付け」をした画像が選択状態のままで「透明の選択」を選びます。この時に、「透明の選択」を選ばなければ透過部分が白い背景となってしまうので注意が必要です。以上の手順でペイントでも画像の合成は可能なのだが、選択状態を解除してしまうと位置の調整が出来なくなってしまいます。それでは今回紹介するpaint.netでの画像合成の方法を紹介します。フリーソフト「paint.net」をインストールするところから始めましょう。インストールなどは、以下のURLからすることができます。合成する画像の準備では今回は、右の画像に適当なフリーの画像を合成してみようかと思います。paint.netにて下地にする画像を開きます。合成させる画像を開きます。今回使用した画像は、フリーで拾ってきた背景が既に透過されているpng画像ファイル。右の画像の右上にpaint.netで開いた画像の一覧が表示されます。下地用の砂漠画像と、合成するプテラノドンの画像ですね。次に、右上の開いているプテラノドンの画像を選択してアクティブにします。画像全体を選択して、コピーをしましょう。(左下の画像参照)コピーをしたら、下地画像をアクティブにして右下にあるレイヤーというサブウィンドウを操作します。レイヤーサブウィンドウの最下部にある「×」マークの左側にある選択項目をクリックすればレイヤーを追加することが出来ます。(中央の画像参照)そして、追加されたレイヤーにチェックが入っていることと、一番上に来ていることを確認したら、先ほどコピーしたプテラノドン画像を貼り付けます。合成した画像のサイズ調整さて、コピーした画像を貼り付けたものの、サイズが大きくて変な感じになっているので、サイズを調整しましょう。貼り付けた画像の右下の角にある○マークにカーソルを合わせてサイズを調整します。ここで普通にサイズを変更しようとすると、縦と横の比率がおかしくなってしまうのでshiftボタンを押しながら調整してみましょう。shiftボタンを押しながら調整すると、縦と横の比率を維持しながらサイズを調整することができます。することによって、右画像のように砂漠の上空を飛ぶプテラノドン画像の出来上がりとなります。画像の保存それでは最後に、合成した画像を保存してしまいましょう。保存を選択すると右のような画面になると思います。この「pdnファイル」というのは、paint.netで行った画像編集作業の編集状況を保存するというものです。1枚の画像として保存するのではなくてプロジェクトを保存するという感じでしょうか。このpdnファイルを開けば、編集作業の再開や修正を行うことが出来ます。いうわけで、編集した内容を1枚の画像として保存するには、保存をするときに「ファイルの種類」から保存したいファイル形式を選択します。ファイル形式を選択した後、保存ボタンを押す。すると、「構成の保存」というサブウィンドウが出てくるので、ここで「OK」を選択。最後に、「平面化」と「キャンセル」を選ぶ画面になるので、「平面化」を選択します。これにて、1枚の画像として編集した画像を保存することが出来ます。以上で、paint.netを使った画像の合成方法の紹介を終了します。他にもpaint.netには様々な機能があるので、試してみてはいかがでしょうか。移殖作業は、答えとなる稼働中システムがあるため作業難度は低いんですが、2つの言語仕様を理解していないとちょっとした勘違いではまってしまうことが、、、そんな移植作業(C言語からC#)で発見したちょっとしたネタを紹介。??>;見出しの処理はC言語で書かれたコード。なんだこれ、普通に読めない。??はC#ではnull合体演算子だけど、C言語でそんなのあったっけ?文字化けしたんかな?チーム内で誰も知らないし、ちょっと調べてみることに実はトライグラフという機能を使ってコーディングしたものだと判明。同じソースをトライグラフを使わずにコードすると次の通り。足りない範囲の文字を表現しようというもの。}実は上のコード、C言語とC#で結果が変わります。変換仕様が異なるためにこんな現象が発生しています。優先順位のため、intからuintに変換して判断されます。となり「真」と判断されます。C言語では、データ型の異なる変数同士の比較はやめておきましょう。VBAとは直接関係がない。Excel/Word/PowerPointを外部から利用する場合の話(オートメーション)。PowerPointだけ挙動が異なる。インスタンスへの)ポインタを返す。インスタンスへの)ポインタを返す。CreateObject("PowerPoint.Application")→既にPowerPointが起動されている場合、(新たにPowerPointを起動することなしに)既存インスタンスへのポインタを返す。インスタンスへの)ポインタを返す。してこうなるのか?→PowerPointは多重起動できない仕様とのこと。インスタンスをポイントします。これで困ることCreateObjectして最後にQuitするようなコードを書くと、最初から開いていたPowerPointまで勝手に終了されてしまう。事前にGetObjectを使って、PowerPointが起動しているかどうかを確かめる。起動していなかった場合のみ、Quitで終了させるようにする。Ifちなみに↓ここで「別のユーザーとして実行することでPowerPointを多重起動できる」という回答がある。教えて!goo頑張れば既に起動しているのとは別のPowerPoint上で処理を実行できるかもしれない。パスワード付きのファイルを開く(ここでいうファイルとは、Excelブック、Wordドキュメント、PowerPointプレゼンテーションのこと)単にファイルを開くだけならそれぞれWorkbooks.Open(FileName)Documents.Open(FileName)Presentations.Open(FileName)でいける。これだと、パスワードで保護されたファイルを開くときダイアログが表示される。ダイアログなしで開きたい場合はパスワードを指定する必要がある。パラメータを指定する。パラメータを指定する。WordドキュメントもExcel同様、読み取り用パスワードと書き込み用パスワードを別々に設定できる。それに加えて、Wordではドキュメントにテンプレートが紐付けられ、テンプレートにも読み取り用パスワードと書き込み用パスワードが設定される可能性がある。メソッドのパラメータを指定すればいいのかと思いきや該当するものがない。順に指定してやればいいとのこと。下図のようなネットワーク環境になっている環境でPCから直接アクセスできないWEBサーバーのWEBコンテンツを閲覧する方法を紹介しようと思います。例)・PCからWEBサーバーAはネットワークでつながっているのでWEBコンテンツの閲覧ができる。(図中青線)・PCからWEBサーバーBは異なるネットワークとなっており、直接WEBコンテンツは閲覧することができない。(図中赤線)・異なるネットワークの両方に繋がるマシンがある。(図中中央下にあるマシン)異なるネットワークの両方に繋がるマシンにPCからSSH(ポート22)で接続することが可能であれば、両方に繋がるマシンをトンネルにして、PCからWEBサーバーBのWEBコンテンツを閲覧することが可能になる。(図中橙線)今回使うのは「Putty」というフリーのTelnetツール。このツールはTelnetやSshという方法でリモート接続するツールです。http://hp.vector.co.jp/authors/VA024651/download.htmlStep1:まずは穴掘り(SSHトンネル)準備puttyを起動したら、左メニューからConnection>SSH>Tunnelsを選択します。portに適当なポート(自分のPCで使っていないネットワークサービスポート)を入力し、Addボタンをクリックします。Step2:穴掘り開始(SSH接続)次に左メニューよりSessionをクリックし、HostName欄に接続可能なIPアドレスを入力し、ポート欄に22を入力します。SSHのラジヲボタンにチェックし、下部のOpenボタンをクリックします。接続できた後、ログオンして放置してください。Step3:穴を使ってWEBサーバに接続する(Socks)次に、ブラウザを起動し、プロパティを開きます。:ツール>オプション>詳細>ネットワーク接続設定ボタンをクリックすると、以下の画面になります。SOCKSホスト欄にlocalhostか、127.0.0.1と入れ、ポートに先ほどPuttyで登録したポートを入力して、OKをクリックします。IE:ツール>インターネットオプション>接続LANの設定をクリック次にプロキシを使用するにして、詳細設定ボタンをクリックSocksにlocalhostか、127.0.0.1を入力し、ポートにputtyで登録したポートを入力後、OKをクリックし、登録します。Step4:ブラウザで閲覧するステップ3までできていれば、あとは、通常のWEB閲覧のようにURLを入力すれば、WEBアクセスができます。PC側ブラウザはPCがそのままWEB接続しているかのように処理をします。一方でWEBサーバー側ではトンネルしているサーバーがアクセスしてきているように処理します。水よく見かけるドラッグアンドドロップでファイルをアップロードする方法を試してみた。画面側での実装を記載しておく。サーバー側でアップロードのリクエストを処理する必要はあるが、ここでは割愛する。ファイルをドラッグアンドドロップしてください。複数ファイル同時も対応しています。メッセージ出したり、DOM構築したり。久しぶりにrewrite定義を追加してコンテンツのfailbackを考える機会がありました。rewriteをすると、いつもproxyキャッシュやブラウザキャッシュでトラブルなぁと苦い思い出があります。その際の対応として、キャッシュをさせない設定をHTMLに埋め込むのですが、毎回調べるので、メモしておきます。前置きとしてWEBのキャッシュとは。ブラウザからWEBサイトにリクエストを発行すると、コンテンツがレスポンスされます。この挙動によりWEBサイトを閲覧しているのですが、WEBサイトのコンテンツは大きいものから小さいものまであります。毎回大きいサイズのWEBコンテンツを表示するために通信を行うと、非効率です。そのため、Proxy(プロキシ)やブラウザは、過去にアクセスしたWEBコンテンツを一時保存しておいて、アクセスするたびにコンテンツを要求しないようにして効率的に通信します。これがWEBキャッシュ。WEBキャッシュはhtmlや画像(gif、jpg等)、静的コンテンツと呼ばれる、毎回アクセスする度に変化が起きないものを一時保存します。動的コンテンツ(asp、jsp、php等)は、毎回アクセスする度に変化が起きるためキャッシュされないようにアプリケーションサーバがキャッシュしない命令を埋め込んでくれています。このようにキャッシュは便利に思えるのですが、一時的にコンテンツを置き換えた時など、キャッシュされてしまうと困ることもあります。そのような場合、キャッシュをさせない方法があります。HTTPヘッダーで制御する方式キャッシュ制御の定義はRFC2616にて規定されています。RFC2616に従うと、HTTP通信のリクエストヘッダー、および、レスポンスヘッダーに以下の定義を加えることでキャッシュをコントロールできます。キャッシュを使うなHTTPのMETAタグで制御する方式(注意)METAタグにて制御する方式は広くWEBで公開されているが、効果が確実なものではありません。RFC2616によると、キャッシュの命令はレスポンスヘッダーにて定義するものと規定されているので、ここから紹介するMETAタグ方式はブラウザやProxyが独自に取り入れているものと言えます。この方式はブラウザやProxyに依存するもので、確実に効果があるとは言えません。この設定でキャッシュされたコンテンツの有効期限を即切れにする。HTTP1.0プロトコルでしか判別できない古いProxyに対応するために記載する。値はno-cacheにすることで、キャッシュされない。http-equiv="Cache-Control"はHTTP1.1プロトコルに対応したキャッシュ指定。値の候補は4種類あるが、キャッシュさせない設定はno-cacheとno-storeである。no-cacheは間違えて紹介されているサイトが多いので注意が必要。キャッシュさせないのではなく、キャッシュされるが、If-Modified-Sinceをリクエストし、コンテンツが有効でない限りキャッシュを利用してはならないという意味である。キャッシュさせないためにはno-storeを定義する。http-equiv="Expires"はブラウザキャッシュに対応するために定義する。ブラウザのキャッシュの有効期限を0にすることで、即有効期限切れにするため、キャッシュしていない状態とほぼ同等になる。これに対応されていないブラウザも存在するため、確実なものではない。属性は、キャッシュ対象にするすべてのページに指定する必要があります。属性が含まれていないと、キャッシュマニフェストファイルで明示されていない限り、ブラウザはそのページをキャッシュしません。いうファイルはキャッシュされ、それ以外のリソースはキャッシュせずにサーバーから取得させるようにしています。フォールバックリソースとして提供するようにしています。キーワードで、必ずこの文字列を1行目に記述する必要がある。キーワードのすぐ後にバージョン番号等を入れる。ワイルドカードは使用できない。こちらは、ワイルドカードを使用できる。リソースにアクセス出来ない場合のフォールバックページを指定する。ワイルドカードを使用ができる。フォールバック(代替)。現在、C→C#の移植作業をしています。手作業でちまちましている箇所を、自動化できたらいいなと思いました。そこで、構造体をクラスに移植する場合を考えます。テキストテンプレートを作成する。#><#>がない箇所はそのまま作成される。一行目に作成したいクラス名、以降の行は型,項目名,説明をタブ区切りで定義する。テンプレートを実行する。実行結果は下記のようになる。移植元ソースは独自の型が定義されているので、自分で確認して移植しないといけない。ディクショナリーであらかじめ定義しておけば、悩まなくてすむし、忘れていても問題ない。データが大量にある場合は、手作業で行うよりはミスが減るはず。移植元ソースをただ読み込むだけだと使用できないので、コピペしてファイルを作成しないといけない。(読み込みを工夫したらいけますかね?)結局そのひと手間が必要なので、自動化の道は遠い...。現状関係ないが、エクセルを読み込むこともできるらしいので、エクセルの大量データを定義する場合は多少は使えるかもしれない。・openSSL⇒オープンソースで開発・提供されるソフトウェア。Layer)はセキュリティ通信を行うプロトコル。Standard)⇒秘密鍵を用いた暗号方式。Mode)⇒平文の各ブロックは前の暗号文のXOR(排他的論理和)を取る形式で最も広く用いられている暗号利用モード。[outl]に設定される。連続するデータブロックを暗号化(復号)する際は当関数を複数回呼び出す。3最終ブロックの暗号化(復号)処理ブロック長に満たないデータをパディング処理し暗号化(復号)する。暗号(復号用)コンテキストを解放する。・補足ヘッダファイル[openssl/evp.h]をインクルードする。私のBIGIPとの付き合いは、BIGIPv4のセットアップから始めて今年でキャリア15年。v12をコツコツセットアップしながら過ごしている日々です。培ったスキルを紹介していこうと思います。通信パケットをサーバー屋さんが解析するのは一苦労。ネットワーク屋さんにお世話になるはめになりますね。サーバー屋さんは、Apacheのアクセスログみたいなの取りたいと思うことでしょう。実現してあげましょうと、作ってみたiRuleです。紹介内容html5で追加された「WebRTC」の機能を使えば、ブラウザからカメラを起動して、写真を写すことができます。今回はブラウザからカメラを起動して、写真を写して、jpeg画像としてダウンロードするところまで作ってみます。概要html5の「video」領域にWebカメラの映像を映し、それを「canvas」領域にコピーし、さらにそれを「img」領域に書き出します。canvasは見せる必要がないため、隠します。img領域を右クリックでダウンロードすれば、ファイルとして作成できるという流れです。WebRTCの「getUserMedia」というメソッドによってカメラにアクセスします。Chrome、Firefox、Operaなどが対応しています。IEやSafariは未対応となっています。ブラウザを使用しますが、http通信はlocalhostへのみ可能です。外部からアクセスして利用するにはhttps通信にしなければいけません。事象(Event)IE11でWEB通信が遅いっていう事象が発生。通信パケットを解析すると、ブラウザからのアクセスの初回だけ10秒くらいかかっていた。browser.原因(Cause)IE11のデフォルト設定では、どうやら発行証明書の取り消しを確認するようになっていて、インターネットに繋がっていないLAN環境での通信では、発行元に問い合わせ通信がタイムアウトする間遅延するようだ。これはアクセス先のドメインが変わらなければ、初回1回のみ発生する。OSなど)を試しに使ってみたいという時ってありますよね。いう時は仮想化技術を使ってWindowsマシン上で動く仮想マシンを作りましょう。今回はVirtualBoxを使います。ダウンロードVirtualBoxのサイトにアクセスし、「Downloads」画面からダウンロードします。インストールしてみるダウンロードしたexeファイルを実行し、インストールします。インストール後に起動すると、VirtualBoxが使えるようになります。GCの紹介C/C++では、mallocを使ったらfreeし、newしたら忘れずにdeleteしなければならない。ガベージコレクタを使うと、メモリを解放する手間を省いてくれる。GCはJava等と同じマークスイープ方式で、循環参照も開放してくれる。Collector)として、GitHub上に最新のソースがある。https://github.com/ivmai/bdwgc/VisualStudioでビルドする方法せっかくなので、最新のソースを取得しておきたい。現在(2016-11-10)の最新版は7.7.0。git://github.com/ivmai/libatomic_ops.gitビルドツールにはconfigureも使えるが、cmakeが便利。C++で使う場合は、以下のおまじないをしておくとよい。enable_cplusplus=ONgc.slnというソリューションファイルができるので、ビルドする。32bitと64bitを間違えた場合は、cmakeからやり直す。gcmt-dll.dllとgcmt-dll.libができれば完成。使ってみるまず、プロジェクトの設定を行う。libパスに、gcmt-dll.libの場所を追加する。依存するライブラリに、gcmt-dll.libを追加する。gcmt-dll.dllをコピーする。続いて、Cでサンプルプログラムを書いてみる。0;}動かしてみると、メモリ使用量が増えないことが分かる。続いて、C++でサンプルプログラムを書いてみる。gcを継承することで、ガベージコレクト対象となる。0メモリは解放されているが、デストラクタが動いていない。デストラクタを起動して欲しい場合は、gc_cleanupを継承するとよい。999420gc起動の閾値を超えない限り回収されないので、デストラクタが動く保証はない。実行されるかどうか分からないので、使いどころはあまりないのかもしれない。GCの動作原理を知っておかないと、思わぬところで回収済みの領域にアクセスしてしまうことがある。GCがマークスイープで探索する範囲は、以下の2つである。スタックにあるポインタをrootとして、GC_mallocやnew(GC)で確保した領域、gcやgc_cleanupを継承したクラスにあるポインタを辿っていく上の図でいうと、1と2は回収されないが、3はアクセス可能にも関わらず、回収されてしまう。普通のmallocと混ぜて使わないほうがよい。Serverでデッドロックの調査で苦労したので調査に使ったSQLなどをまとめておく。Serverにおいては、ロックの有無を確認するだけならsys.dm_tran_locksシステムビューですぐに確認できる。sys.dm_tran_locksしかし、sys.dm_tran_locksだけでは、テーブルロックや行ロックなどの情報がまとめて提供され、ロックされている対象もオブジェクトIDでの表記になるため非常にわかりにくいものになっています。単純にSELECTするのではなく、IDからオブジェクト名を取得したり、オブジェクトの種類によって別のシステムビューから情報を取得する必要があります。手を加えたSQLが以下のようになります。request_session_id実行結果は以下のようになります。他に必要な項目がある場合、SELECT文へ項目の追加を行ってください。主なロックステータスの種類として以下のものがあります。他のトランザクションからの読込は可能。他のトランザクションからの読込・更新が共に不可となる。INSERT、UPDATE、DELETEを実行するとこのロックになる。他のトランザクションからの読込は可能。)を指定するとこのロックになる。使用したシステムビューについて・sys.dm_tran_locks・・・ロック情報を参照できるビュー。MSDN>・sys.partitions・・・テーブルまたはインデックスで使用されているパーティション情報を参照できるビュー。MSDN>・sys.sysprocesses・・・接続されているProcess情報を参照できるビュー。異常系のテストを行いたい場合などで、テーブルのロックをかけたい場合の手順。--任意の時間スリープ。TRANまでにブレークしておけばよい。TABLEA⇒ロックタイムアウトの値を0にしているため、即時ロックエラーになる。暗号化通信を設定しようとするとcipher(暗号方式)について検討することになると思います。これ、しっかり検討しておかないと、暗号方式の脆弱性を狙った攻撃を受けます。IPA(情報処理推進機構)やセキュリティ会社もしょっちゅう、「この暗号方式について脆弱性が発見されました」というニュースを出していますね。今回はWEB通信の証明書のやりとりで使われるcipherについてまとめたので紹介します。簡単にcipherについてWEB通信の暗号化はapacheなどのWEBサーバーで設定します。暗号方式は、ミドルウェアのサポートしている範囲から有効にするcipherを定義します。クライアントとなる端末のブラウザが要求するcipherがサーバー側で有効ならば暗号化通信が成立する仕組みになります。流れ1.Client(ブラウザ)→ClinetHelloパケット(このcipherかこのcipherかこの・・・で暗号できますかー?)→Server2.Server→ServerHelloパケット(じゃあ、このcipherで暗号化しよう)→Clinetてな流れでClinetとServerはご挨拶(SSLハンドシェーク)をして、cipherを決めます。BigIP(F5社製ロードバランサ)で設定するcipherについて私はBIGIP(F5社)のロードバランサを扱うことが多いので、今回はBIGIPに特化して紹介します。cipher(暗号化方式)って何がサポートされていて影響受けるクライアントは何ってところを毎回調べています。cipherを細かく設定するとClinetとなるブラウザが利用できなくなったりするので、きちんと調べる必要があります。逆に大雑把に設定すると脆弱性をついた不正アクセスやアタックの原因になります。1回調べたら資料にしておけば、楽なのでまとめました。※BIGIPv12以降は対応していないのです。※Cipherセット名はGlobalな名称で、BIGIPの定義では専用の定義名を使います。添付の資料ではBIGIPでの定義名は記載していません。・・・別途つくろうかな。火はじめにBIGIP(F5社)というロードバランサを検証するために仮想環境に導入してみようと思ったのですが、VirtualBox(オラクル社)の仮想環境はサポートしていないようだ。なんとか動かしたい!やってやろうじゃないかと取り組むこと半日、やっと稼働させることができました。※VirtualBoxでの稼働をBIGIPはサポートしていませんので参考になさる場合は自己責任でお願いします。VEトライアル(とりあえず、v11.3.0トライアル)https://downloads.f5.com/esd/productlines.jsp※F5社のアカウントが必要です。VirtualBox用のOVAは無いため、今回はBIGIP-11.3.0.39.0-scsi.ova(VMWare用)を使いました。Technologyを有効化します。TechnologyをEnableにしてください。デフォルトはDisableになっているはずです。※この設定をしないとVirtualBoxで64bitOSを稼働できません。2OVAファイルを編集しておきます。OVAファイル内のcertファイル(証明書)の名前を編集します。※私は頭にアンダースコアを付けただけで済ませました。※この対応をしておかないと、OVAファイルをVirtualBoxにインポートするときに証明書エラーが発生します。OVAファイルを保存します。3VirtualBoxにOVAファイルをインポートします。4インポートが成功したら、設定>シリアルポートでポート1の「シリアルポートを有効化」にチェックを入れます。stage2..」と表示された後にフリーズします。5さっそくBIGIPを起動してみましょう。起動すると、CUIの画面が開きます。chmand」というエラーメッセージが出力しつづけます。rootユーザー、パスワード「default」でログインします。chmand」とコマンドを実行します。「/PLATFORM」というファイルをVIエディタで開き、以下のように編集します。platformの値とhostの値を「Z99」にします。familyの値を「0x80000000」にします。systypeの値を「0x71」を追記します。※この値にしないと、後のトライアルライセンスの適用に失敗します。ネット上にはZ100にする記載をよくみかけますが、私はこの設定にしなければ成功しませんでした。「/tmp/platform_info」というファイルを消します。(rebootコマンドを実行します。)※この対応をすることで、chmandのエラーが出なくなります。6管理コンソールへアクセスします。more」を実行し、IPアドレスを確認します。ブラウザを起動し、「https://[確認したIPアドレス]/」にアクセスします。管理コンソールのログイン画面が表示されれば成功です。※管理コンソールのログインユーザーはadmin、パスワードはadminです。※TeraTermなどCUIコンソールではsshで、上記で確認したIPアドレスに接続してください。CUIでのログインユーザーはroot、パスワードはdefaultです。7トライアルライセンス(90日)を取得します。https://www.f5.com/trial/secure/big-ip-ltm-virtual-edition.phpにアクセス※F5社のアカウントが必要です。Key」ボタンをクリックします。※30分くらい後に届きます。8ライセンスを適用します。CUIのコンソールで以下のコマンドを実行します。LICENSEステータスからACTIVEステータスに変わります。Utilityで初期設定をして、環境を整えます。VMを稼働させてみる前回の記事では、BIGIP(F5社)というロードバランサを検証するために仮想環境にフリーライセンスの11.3.0トライアル版を導入してみました。VirtualBoxにトライアル版を導入する時の記事しかし、トライアル版はv11.3.0で最新バージョンではありません。VMのv12.1.1を導入しようと試みました。※VirtualBoxでの稼働をBIGIPはサポートしていませんので参考になさる場合は自己責任でお願いします。HF2https://downloads.f5.com/esd/productlines.jsp※F5社のアカウントが必要です。VirtualBox用のOVAは無いため、今回はBIGIP-12.1.1.2.0.204.LTM-scsi.ova(VMWare用)を使いました。Technologyを有効化します。TechnologyをEnableにしてください。デフォルトはDisableになっているはずです。※この設定をしないとVirtualBoxで64bitOSを稼働できません。STEP2:VirtualBoxに仮想マシン作成VirtualBoxを起動します。新規のボタンをクリックします。仮想マシンの種類を設定します。名前は保存フォルダを指定します。タイプはOtherを選びます。バージョンはOther/Unknown(64-bit)を選びます。※64bitが選択できない場合はSTEP1からやり直してください。メモリサイズは2048MBにしてください。ハードディスクは「仮想ハードディスクを追加しない」を選択します。STEP3:仮想DISKをOVAファイルからコピーする7-ZipでOVAファイルを開きます。vmdkファイル(BIGIP-12.1.1.2.0.204-disk1.vmdk)をSTEP2で指定した保存フォルダにコピーします。STEP4:仮想マシンを設定するVirtualBoxで作成した仮想マシンを選び、設定画面を開きます。ストレージを選び、仮想ハードディスクを追加します。※STEP3で配置したvmdkファイルを追加します。※空のDISKを除去します。ネットワークの設定画面を開き、アダプター1タブで、「ネットワークアダプターを有効化」にチェックします。割り当ては、ブリッジアダプターを選択します。アダプター2のタブで「ネットワークアダプターを有効化」にチェックします。割り当ては、内部ネットワークを選択します。アダプター3のタブで「ネットワークアダプターを有効化」にチェックします。割り当てはブリッジアダプターを選択します。アダプター4のタブで「ネットワークアダプターを有効化」にチェックします。割り当てはブリッジアダプターを選択します。シリアルポートを選択し、ポート1のタブで、「シリアルポートを有効化」にチェックします。USBを選択し、「USBコントローラーを有効化」のチェックを外します。STEP5:仮想マシンを起動する以上で準備は整いました。あとは、VirtualBoxから仮想マシンを起動してみてください。上手くログインできる状態までいけば完了です。※ユーザーはroot、パスワードはdefaultでログインできます。※この後ライセンス適用を行えば、使うことが可能になると思います。私はコマンドと設定項目を知りたいだけなので、ここまでで作業をやめました。火はじめにBIGIPをLAN内のロードバランサとして使う時、https通信の暗号化につかう証明書は自己署名にしたいなーって思うことありませんか?そんな時、BIGIPのサーバー証明書は管理コンソール(WEB画面)で自己署名の証明書を作成できるから簡単ですね。クライアント証明書も使いたいぞってなると、どうやって作ろうかって考えてしまいますね。認証局をつくらなければとなり、どこかOpenSSLの使えるサーバーを探して。まてよ、BIGIPもOpenSSLがデフォルトで使えるじゃないか!じゃあ、やってみようと思って設定してみました。v11.3.0認証局をつくる1.BIGIPに管理ユーザーでログインする2.ワークディレクトリを作成するBIGIPには/sharedというワーク用ファイルシステムがあります。/sharedに認証局用のディレクトリを作成します。/shared/CA/index.txt3.openssl.cnfを用意するBIGIPで利用されているopenssl.cnfがあるのでコピーして使う方が手っ取り早いということで、コピーします。...912はパスフレーズを入力します。1と2は同じ値を入力します。3は国名を2文字のレターコードで入力します。4は国名/州名なのですが、日本なので都道府県でいいかな。5は都市名なので、市町村名や区名等。6は組織名なので、会社名とか部署名等。7は組織の単位名なので、部署名、チーム名等。以下が作成されていれば完成です。火ここまでの流れ前回までは認証局を作成しました。認証局を作ったので自己署名のサーバー証明書を作ってみます。v11.3.0認証局をつくる1.BIGIPに認証局を作成する前回の手順を参照してください。...212はパスフレーズを入力します。1と2は同じ値を入力します。/shared/CA/sample_server.keyが作成されたことを確認します。3.パスフレーズを解除するパスフレーズは設定したままでもいいのですが、私は忘れてしまうので覚えているうちに解除しておきます。key1はsample_server.keyを作成時に入力したパスフレーズを入力します。...91は国名を2文字のレターコードで入力します。2は国名/州名なのですが、日本なので都道府県でいいかな。3は都市名なので、市町村名や区名等。4は組織名なので、会社名とか部署名等。5は組織の単位名なので、部署名、チーム名等。6はFQDN7はメールアドレス(入力しなくてもいい)8はチャレンジパスワード(入力しなくてもいい)9は会社名(入力しなくてもいい)以下が作成されます。/shared/CA/sample_server.crt署名されたサーバー証明書が作成されていれば完了です。付録:こんな時は署名処理(6の手順)で再度実行すると、以下のエラーになります。/shared/CA/index.txtで作り直してから試してみてください。火ここまでの流れ前回までは認証局を作成して、サーバー証明書の自己署名をやってみました。ここで、やっと当初の目的であるクライアント証明書も自己署名してみました。v11.3.0認証局をつくる1.BIGIPに認証局を作成する認証局の作成手順を参照してください。...212はパスフレーズを入力します。1と2は同じ値を入力します。/shared/CA/sample_server.keyが作成されたことを確認します。3.パスフレーズを解除するパスフレーズは設定したままでもいいのですが、私は忘れてしまうので覚えているうちに解除しておきます。key1はsample_client.keyを作成時に入力したパスフレーズを入力します。...91は国名を2文字のレターコードで入力します。2は国名/州名なのですが、日本なので都道府県でいいかな。3は都市名なので、市町村名や区名等。4は組織名なので、会社名とか部署名等。5は組織の単位名なので、部署名、チーム名等。6はFQDN7はメールアドレス(入力しなくてもいい)8はチャレンジパスワード(入力しなくてもいい)9は会社名(入力しなくてもいい)以下が作成されます。/shared/CA/sample_client.crt署名されたクライアント証明書が作成されていれば完了です。付録:こんな時は署名処理(6の手順)で再度実行すると、以下のエラーになります。/shared/CA/index.txtで作り直してから試してみてください。状況Linux(今回はRedhat7.4)をインストール時にtomcat8を同時インストールさせてみたのだが、manager(http://IP:8080)がLocal以外からアクセスできないという事象が発生した。Linuxサーバには外部からsshでログインできる状態、pingも可能であった。原因はLinux-Firewall。1.firewallが稼働しているかも。8080/tcpが許可されていないから、許可しちゃおう。月IssueRedhatでSNMPTrapの受信サーバを作ろうとしました。Redhat7ではMySQLが標準DBから外され、互換性のあるMariaDBに変わっています。Net-SNMPの標準機能であるMySQL出力機能をMariaDBに置き換えて利用できるかなと試してみました。net-snmpnet-snmp-5.7.2-24.el7_2.1.x86_64Resolution1.Redhatのインストールインストール、インストール後の初期設定については割愛します。※インストール時に次のようにパケージを選択しておけば、後から追加パケージを導入しなくてもよいですね。2.snmpd.confを設定/etc/snmp/snmpd.confを以下のように編集します。Kyoto3.snmptrapd.confを設定/etc/snmp/snmptrapd.confを以下のように設定します。04.trapを発行、受信できるかテストsystemctlでsnmpdとsnmptrapdを起動します。snmptrapdテストトラップを発行してみます。test"システムログに出力されたことを確認します。test"※もし、上手く受信できない時はfirewallを確認ください。必要に応じて、162/udp、161/udpで通信ができるようにしてください。sec)※schema-snmptrapd.sqlがマシン上に存在しない場合Net-SNMPの本家からソースファイルをダウンロードして、zipファイル内から取得します。\qByeTroubleshoot1SELinuxを停止する以下で一時的にSELinuxを停止できます。火IssueLinuxでサービスの起動停止はsystemctlコマンドを使います。自動起動を登録した時に、サービスUnit同士の依存関係に起因するエラーが発生することがあります。この時、起動順序を制御する方法があります。list-dependenciesこのコマンドを実行すると、自動起動に登録したサービスUnitの起動順が一覧化されます。unitstart.htmlこのコマンドを実行すると、実際にサービスUnitがどういう順で起動してどれくらい時間がかかったをHTMLファイルで出力できます。unitstart.html2.サービスUnit同士の依存関係を設定する依存関係を設定するには、サービスの定義ファイルにパラメータを追加します。ディレクトリ内にあります。いうUNIT間の依存関係を設定するディレクティブがあります。このディレクティブに設定を追加することで、起動時のUnit同士の依存関係を設定できます。serviceファイルが見つからない場合は、/usr/lib/systemd/systemにインストール時のデフォルト設定のserviceファイルがありますから、そちらを探します。