Systemdはサービスの同時起動を試みるが、依存先の起動に失敗した場合であっても、依存元の起動は引き続き実施する。Systemdはサービスの同時起動を試み、依存先の起動に失敗した場合は、依存元は起動しない。Systemdは関係が定義されたサービスと同時に起動しない。-------------------------------------------[Unit]Conflicts=B.service---------------------------------------------------Troubleshoot実際に発生した自動起動時の依存関係のためにエラーが発生したケースで解決するまでの記録です。自動起動登録~サービス稼働状態確認までsnmptrapd.serviceとmariadb.serviceに依存関係があるケースで、以下のように自動起動を登録して、リブートします。reboot起動後にサービスの稼働状態を以下コマンドで確認します。snmptrapd.servicemariadbに関係するエラーが発生しました。起動順の前後関係で問題が発生していることの確認までmariadbのサービス稼働状態を確認してみると、正常に稼働していました。mariadb.servicesnmptrapd.serviceを再起動してみると、正常起動しています。snmptrapd.serviceこのことから、起動順の前後関係が解決すれば、snmptrapd.serviceが正常稼働できることがわかりました。実際の起動順をグラフ化してみると、snmptrapd.serviceがmariadb.service起動前に始まり、mariadb.serviceが起動完了前に実行完了していることがわかります。unitstart.html起動前後関係設定~解決までsnmptrapd.serviceをmariadb.service起動完了後にはじまるように設定します。/etc/systemd/system/multi-user.target.wants/snmptrapd.serviceUnitディレクティブにAfter=mariadb.serviceを追記します。マシンを再起動してみると、前回起動時にはエラーであったsnmptrapd.serviceが正常に稼働したことがわかります。snmptrapd.service実際の起動順を確認してみると、mariadb.serviceが稼働後にsnmptrapd.serviceが起動されたことがわかります。水Introduction使用するデータベースがMySQLの後継であるMariaDBに決まった。ServletアプリケーションからアクセスするときにTomcatで定義したデータソースのDB接続Poolを使いたい。3.1.1eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。10.12.2Processingでアウトプットとなるイメージを作成する四角形をランダムに表示するアニメーションを作成します。値をランダムに指定している箇所は以下となります。(stroke)の彩度。3.1.1eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。Kitの存在を発見したので利用してみます。基礎は理解しておいた方が良いので、以下サイトを参考にサンプルをパッチ作成したうえで利用することをお薦めします。MAX/MSPのOSC連携を紹介するサイトhttp://neralt.com/max-processing-osc-relation/MAXとProcessingのOSC連携について基礎から説明されているのでわかりやすいです。http://tokyomax.jp/?p=923具体的なイメージスケッチが紹介されているので、真似っこして作成するだけで楽しめます。-Processingではじめる自然現象のシミュレーション-の序盤を勉強しておくと理解が深まると思います。Kitのダウンロード次のURLよりダウンロードできます。紹介映像を見るだけでワクワクします。SendはMIDIノートとベロシティデータをProcessingスケッチへOSCメッセージとして送信するパッチです。利用するにあたり、OSCデータが次のようなレイアウトで、Processingでコントールする仕方が思いつかなかったので、パッチ修正しレイアウトを変更しています。Kitで提供しているOSC_Monitorの出力結果です。---修正前のレイアウト-次のようにレイアウトを変更しています。ベロシティ---修正後のレイアウト-パッチについては修正箇所のみを載せておきます。Kit作者に申し訳ないです。liveでトラックを作成するDrumkitを利用しoperatorで作成した音色を割り当てしています。noto風の音源を作成してみました。音作りは初心者のため、以下サイトを参考にして自分好みの音にしています。Rackには次のように音源を割り当てしています。Note50音を奏でたときのモニター内容です。音はその3でProcessingと同期した映像で紹介します。3.1.1eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。liveより送信したOSCデータをProcessingで受信しイメージに反映するOSCデータを受信1.oscP5をインポート次のサイトにライブラリが公開されています。IDEのメニューより、スケッチ->ライブラリをインポート->ライブラリを追加でダウンロードも可能です。Liveのデフォルトポート2346を指定します。Monitorがポートを使ってしまい受信できないので注意してください。}3.OSCデータを受信OSCデータを受信するたびに呼び出されるメソッドoscEventを使用してメッセージのタグに応じてデータの値を取得します。受信したデータは適切な値にマッピングしておきます。次の例は、四角形の横幅と縦幅に反映しています。}音とイメージは次のようにリンクさせています。}}実行結果awkで色々な処理を行う。水UNIX/Linuxでシェルスクリプトじゃ出来ないけども、ちょっと複雑なことをしたい。Javaとかで作りこむほどではない。そんなときにawkを使うと便利だ。こんな感じのアクセスログがあって、平均の応答時間を求めたい場合時など。末尾の数字を応答時間(秒)とする。3awkを使えば一行で処理ができる。<入力ログファイル名>簡単に解説すると、以下のようなことをしている。入力ファイルを1行ずつ読み込んで処理をする。読み込んだパラメータは、区切り文字(デフォルトでは半角スペース)に従い自動的に分割し、変数に格納される。は行全体、$1以降はそれぞれ数字の分の要素になる。は行全体の要素数が自動的に入る。したがって、$NFは自動的に末尾の数字になる。ここでは、1行ごとに読み込んで変数「i」に加算している。全ての行を読み込んだ後に処理される。処理を行った行数が自動的に入る。ENDまで来ると、自動的にファイルの行数になる。これで応答時間の合計を除算すると平均の時間になる。これを実行すると、こんな感じの結果になる。~]#4行程度ではわざわざこんなことする方が面倒なのだけども、実際のアクセスログだと何万行を軽く超えるような環境もあるので、そんな場合ではいちいちローカルPCにダウンロードしてきてExcelとか使って解析するよりも、サーバー上でパパッと処理してしまった方が早い。サーバーリソースには要注意だけども......また、awkは正規表現を使って特定行のみを処理するということも出来るので、特定IPからの平均応答時間のみを集計することなども可能。<ログファイル名>先ほどのawk文と比べると、変数が一個増えて、BIGIN{}の後に正規表現が追加されている。すると、マッチングする行のみを対象として処理を行う用になる。~]#先ほどと同じログに対して実行しても、違う結果が返ってきた。このように、特定の条件にマッチングするリクエストのみに対して処理が出来たりもする。IP以外にもHTTPレスポンスコードから抽出したり、一定以上の応答時間のアクセスを抽出したりもできる。~]#余分なデータを除外したり、特定のデータを抽出することを繰り返して解析の精度を上げたりしていける。コマンドラインから実行できるので、シェルに組み込むことも簡単だ。一度実行した処理をまとめてシェルにしておけば、次回以降同じ作業を簡単に実施できる。定例的な処理とか、何か問題が起きた時に使うモノを纏めておくと便利でかっこいいんじゃないかな。基本的に1行ずつ処理をするのだけども、XMLを見るときなんかはどうしても複数行処理したくなることがある。そんなときに便利な関数が「getline」だ。引数なしで呼び出すと、今処理している行の次の1行読み込んで、$0とかNFとかに新しい値をセットする。(前の$0とか消えてしまうけども、それが嫌ならgetlineに引数を渡すと、そこに格納してくれるようだ)実際に試してみた方が早いと思うので、以下のようなXMLファイルから、特定の値をとりだすことをやってみる。gloup3のmemberだけ取り出したい、というときに、getlineを使うと比較的簡単に処理が出来る。一般的なプログラム言語とだいたい同じ動きをする。ここでは、gloup要素を発見すると、2カラム目を参照し、それがgloup1かgloup3だった時に、</gloup>が来るまで行を出力している。実行結果はこんな感じ。~]#複数の機器でミドルウェアのセットアップとかした時、いちいち結果をGUIで確認すると時間がかかって仕方がない。XMLを見るときに、こんな感じで該当箇所だけ抜き出せると良い感じ。いう4つのデータがある。これをメモリ中の0x1000番地から書き込む。0x1000番地:0x120x1001番地:0x340x1002番地:0x560x1003番地:0x78これよりも大きなサイズのデータ例えば、0x12345678これをメモリ中の0x1000番地から書き込む。世の中にはこのようなデータ格納方式を取らないものもある。0x1000番地:0x780x1001番地:0x560x1002番地:0x340x1003番地:0x12順番を逆転させて格納する方式がある。このバイト並びの方式をエンディアン(Endian)と呼ぶ。Endian)●CPUとエンディアンエンディアンはCPUによって決まる。PowerPCなどはビッグエンディアン。Intel系などはリトルエンディアン。ARM、SHなど、どちらにもなれるプロセッサも存在していて、バイエンディアン。同様にstr1がstr2より小さい場合(str1<str2)は負の整数を返す。{a[3],a[2],a[1],a[0],b[3],b[2],b[1],b[0],c[3],c[2],c[1],c[0]};既存の処理をあまり変えないように対応する●余談ビッグエンディアンとリトルエンディアンという単語は、『ガリバー旅行記』の中のエピソードに由来する。スウィフトが書いた風刺小説「ガリバー旅行記」に登場する「ビッグ・エンディアンとリトル・エンディアン」は、キリスト教のカトリック(旧教)とプロテスタント(新教)を指しています。「ゆで卵の割り方のような”ささいな違い”」から争いが続いている状況を、スウィフトはガリバー旅行記として風刺していたのです。3.1.1eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。10.12.2hueのデバッグ画面にアクセスする。hueのIPアドレスを調べる次のURLにアクセスすると、IPアドレスが表示されます。https://www.meethue.com/api/nupnp[{"id":"xxxxxxxxxxxxxxxx","internalipaddress":"192.168.0.13"}]hueのデバッグ画面を表示する次のURLにIPアドレスをブラウザで指定しアクセスするとデバック画面が表示されます。available」のエラーで失敗します。以下、内容でPOST送信する。}]エラーの原因を調べてみると、usernameのパラメータが使用できないようになったようです。どのバージョンからは不明ですが、以下サイトを参照にしてください。そのため、ランダムで設定されたユーザを使用します。pressedのエラーが出力されるのでhueブリッジのリンクボタンを押してから、もう一度送信するとランダムなユーザネームを取得する事ができます。255」を指定する事により、赤色で点灯します。Hueでは、HSBカラーモデルのhue(色相:0~65535)、sat(彩度:0~254)、bri(明度:0~254)の3つの属性値でライトの色を指定します。Frameworkに含まれる技術で、クエリを行う1つのパターン。Objectは、メモリ上のオブジェクトをクエリするプロバイダ。Objectは、コレクションに対して作用し一括して何かの処理を行うことができる。厳密には、IEnumerable<T>インターフェースに作用するためListや配列に対しても利用できる。何が嬉しいか?反復処理がスマートに書ける。強引かつ簡単に表現するとfor文が消せる。0).ToList();こんな感じでソースコードの可読性が上がる。コード量が減ると生産性が上がり、ミスも減り、テストも減る。ループ制御に使っていた神経が、もっと人間がやるべき大切なことに使える。ここしばらく、業務でC言語に触れる機会が多かった。感じたがやっぱりC#は便利だ。3.1.1eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。色のスペクトルを円形に配置した色相環を作成します。扇形の図形を配置して作ります。それぞれの頂点は、対応する角度のコサインとサインから求めています。APIに対応するJSON形式に整形しコンソールに出力します。残留セッションデータベースに接続中にあるセッションではSQL実行中にフリーズしたがセッションは生き残っている場合やデータベースをシャットダウンしたいが接続中のユーザが残っている場合などが想定される。切断されるまで待ちが発生してしまう。このような時にセッションを手動で終了させる方法が有効である。optionsに接続されました。optionsに接続されました。482';システムが変更されました。'SCOTT';レコードが選択されませんでした。SCOTTユーザーで検索を実行セッションが強制終了されたためエラーになる。emp*行1でエラーが発生しました。セッションは強制終了されました。unlock;ユーザーが変更されました。"oracle";ユーザーが変更されました。前書きまだコードを書くことにあまり慣れていないのでとりあえず何かを作ってみようと思いました。自分は音楽が好きなのでメトロノーム的なものを作ってみました。●がその速度で点滅するというものです。1分間に何回のリズムが刻まれているかを示す。Console.WriteLine("BPMを入力してください。Console.WriteLine("設定したBPMで●が時を刻みます。Console.WriteLine("終了したい場合はEnterキーを押してください。一つ自分が作りたいものを作れたので良かったなと思います。次回も何か作るなら、もう少し凝ったものを作りたいなと思います。3.1.1eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。4.5.2を利用します。}2.IPアドレス取得するメソッドを作成https://www.meethue.com/api/nupnpに対して、GETリクエストでレスポンスを受信します。レスポンス内容[{"id":"xxxxxxxxxxxxxxxx","internalipaddress":"192.168.0.13"}]「internalipaddress」キーにIPアドレスを設定されているのでJSONObjectを使用し取得します。APIに対応するJSON形式に整形しPUT送信します。}次のURLに対して、ライト点灯に必要な色相、彩度、輝度を送信します。3.1.1eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。3.x.xでSimpleOpenNIを利用するとExceptionが発生し利用できません。対処方法が次のサイトに載っていたので参考し、対応しました。registerDisposeメソッドの仕様が変わったみたいです。this)に置き換えます。修正箇所は3箇所です。SimpleOpenNIMain.iのコメントを削除trunk/SimpleOpenNI-2.0/src/SimpleOpenNIMain.iで#でコメントされている箇所を削除します。#includeはコンパイルに必要なため、削除対象外とします。「#+空白」を「//」に置換し、コメントアウトしました。openNIをインストールhttp://www.openni.org/downloadfiles/openni-binaries/20-latest-unstable上記サイトよりopenNIをダウンロードし、任意のディレクトリに解凍しinstall.shを実行します。/work/kinect/ディレクトリを作成し配置しました。NiTEをダウンロードhttps://github.com/voxels/Raw上記サイトよりNITEをダウンロードし、任意のディレクトリに解凍します。/work/kinect/に配置しました。eigen3をインストールMacPortでインストールしました。buildOsx.shを修正(その1)trunk/SimpleOpenNI-2.0/buildOsx.sh記載の以下を変更します。私の環境では次のように修正しています。buildOsx.shを修正(その2)後述のjavadoc作成でエラーが発生するため、以下コメントアウトする。buildOsx.shを修正(その3)上記対応を行い、ビルドしたがSimpleOpenNI.jarが作成されずエラーとなったためコンパイルしたクラスファイルをjarファイルで圧縮するコマンドを追加します。次のように修正します。ライブラリの配置trunk/SimpleOpenNI-2.0/dist/all/SimpleOpenNI/library/osx/以下のファイルを全てtrunk/SimpleOpenNI-2.0/lib/にコピーする。ビルドtrunk/SimpleOpenNI-2.0/buildOsx.shを実行するとtrunk/SimpleOpenNI-2.0/dist/all/SimpleOpenNI/libraryにSimpleOpenNI.jar生成されます。このSimpleOpenNI.jarに置き換えて使用する事でExceptionが回避されKinectを利用できるようになります。自分の環境では以下ライブラリを導入していなかったためトライ&エラーで以下ライブラリをインストールしています。3.1.1eclipseを使用し、core.jarをインポートした環境でコーディングしているため、ProcessingのIDEでは実行できません。Soundflowerhttps://soundflower.en.softonic.com/mac参考サイト、書籍http://yoppa.org/cuc_proga11/2961.htmlフーリエ変換の説明もあり、わかりやすかったです。http://r-dimension.xsrv.jp/classes_j/frequency/[特定の周波数に反応させる]の章で、Minimの具体的な利用方法を学べました。音声をフーリエ変換し、取得した周波数をサイン波で表示します。6.取得した最大音圧の周波数をSin波でそれぞれ表示1.オーディオ入力された音声をキャプチャMinimのgetLineInメソッドでオーディオ入力された音声をキャプチャします。後のフーリエ変換でより細かいブロックで周波数帯域を取得したいため、バッファサイズを4096に指定しています。以下設定でFFTオブジェクトを生成します。:4096上記設定により、ひとつひとつの周波数帯域は44100/4096の10.7666015625Hzとなります。fft.window(FFT.HAMMING);コンソールの出力内容から、10.7666015625Hz単位で周波数帯域のブロックが作成されていることが確認できます。22060.7663.オーディオ入力された音声をフーリエ変換し、周波数情報をリストに格納FFTクラスのforwardメソッドで解析を行い、その結果を自前で作成したFFTSampleFrequencyクラスのリストに格納します。}4.フーリエ変換の結果を棒グラフで表示translateメソッドで画面下に移動し、画面の下から上に音圧に応じた長さのラインを描画します。}上段にサイン波を表示させるため、グラフの高さは制限しています。周波数帯域で最大音圧の周波数を取得します。}6.取得した最大音圧の周波数をSin波でそれぞれ表示1.周波数の変化を感じやすくするため、基準の周波数を440Hzとする。水’XXXXX(ファイル名)’には読み取れない内容が含まれています。このブックの内容を回復しますか?ブックの発行元が信頼できる場合は「はい」をクリックしてください。’XXXXX(ファイル名)’には読み取れない内容が含まれています。このブックの内容を回復しますか?ブックの発行元が信頼できる場合は「はい」をクリックしてください。読み取れなかった内容を修復または削除することによりファイルを開くことができました。(図形描画)↓クリックすると修復のログファイルが表示されます。線とか図とか消えてしまった。回復してないじゃんブックの内容を回復しない限り、壊れたエクセルは開きません。上記のようにdrawing1.xmlなるファイルを削除し回復されます。drawing1.xmlには描画情報が記録されています。これを削除するということは、描画全てを消して回復するということなんです。壊れた部分を部分的に直す方法はないのでしょうか?壊れたエクセルファイルの修復方法とまぁ、直せないのが仕様ですって。具体的にいえば、図形描画はdrawing1.xmlに登録されているが、回復方法は、そのファイルを消すという方式なので、すべての描画が消えてしまうのですね。機能に頼らず、自力で直すしかない!1/xl/drawings/drawing1.xmlってのを編集できる状態にするExcelはXML形式のファイルがZIP化されたものなので、複合化ツール(7-Zip)を使って、ZIPを解凍します。2drawing1.xmlから壊れたところを見つけるExcelがここがおかしいって表示かログでも出してくれるといいのですが、不親切で出力されません。自力で見つけるしかありません。Excelを解凍して、drawing1.xmlを取り出します。drawing1.xmlを高度エディタ(サクラエディタ等)で開きます。→改行とかないので見難い。ブラウザで開くとわかり易いが、編集できない。いうことで、見難いですがエディタで開くdrawing1.xmlは以下のような形式で記載されています。2006/main"><xdr:twoCellAnchor>・・・</xdr:twoCellAncor></xdr:wsDr>1つ1つの描画が<xdr:twoCellAnchor>・・・</xdr:twoCellAncor>で囲ってある。これを一つずつ消していき、zipに戻し、excelで開くを繰り返しエラーの有無で壊れている場所が判断できる。3壊れた個所のみ取り除く壊れている<xdr:twoCellAnchor>・・・</xdr:twoCellAncor>部分を取り除けば、目的通り、問題個所だけを排除した形で復旧可能です。水クロスサイトスクリプティングってクロスサイトスクリプティング(XSS)ってよく聞きますが、実際どういうものなのかを体験してみようと思い試してみました。実際にXSSを利用してサイトの脆弱性を理解すると、WEBサイトを作る時に気をつけようと思うようになりますね。XSS攻撃とは、攻撃者の作成したスクリプトを脆弱性のある標的サイトのドメインの権限において閲覧者のブラウザで実行させる攻撃です。サイトの脆弱性をついて、スクリプトを実行させ、情報を盗んだり、コピーサイトに誘導したりできます。体験してみよう実際にクロスサイトスクリプティングができてしまうサイトを作ってみました。Javascriptの簡単な知識さえあれば、クロスサイトスクリプティングできてしまいます。木JavaScriptで変数といえば「var」ですが、使用する変数が増えてくると取り扱いが面倒になってきます。配列などで管理する方法もありますが、一長一短あるかと思います。そこで、上手い方法はないかと模索していて辿り着いたのが、データオブジェクト風に扱う方法でした。いう属性を持つ「人物」というデータオブジェクトを定義してみます。