はてなキーワード: xmlとは
原文:https://blogs.apache.org/foundation/entry/apache_commons_statement_to_widespread
原題:Apache Commons statement to widespread Java object de-serialisation vulnerability
翻訳日:2015年11月12日(午後にタイトルを日本語にしました)
----
Apache CommonsのJavaオブジェクトのデシリアライゼーション脆弱性に関するステートメント
著者:Bernd Eckenfels(コミッター), Gary Gregory(Apache Commons副責任者)
AppSecCali2015 でGabriel Lawrence (@gebl) と Chris Frohoff (@frohoff) によって発表された "Marshalling Pickles - how deserializing objects will ruin your day" は、信頼されないソースからシリアル化されたオブジェクトを受け取るときのセキュリティ問題をいくつか明らかにしました。主な発見は、Java オブジェクト・シリアライゼーション(訳注:seriarization/シリアル化/直列化=ネットワークで送受信できるようにメモリ上のオブジェクトデータをバイト列で吐き出すこと。シリアル化されたJava オブジェクトはRMIなどのリモート通信プロトコルで使用される。)を使用する際に任意のJava関数の実行や操作されたバイトコードの挿入さえもを行う方法の説明です。
Frohoff氏のツールである ysoserial を使って、Foxglove Security社のStephen Breen (@breenmachine) 氏はWebSphereやJBoss、Jenkins、WebLogic、OpenNMSといった様々な製品を調査し、(http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/) に各々の様々な攻撃シナリオを記述しています。
両者の調査活動は、開発者がJavaのオブジェクト・シリアライゼーションに信頼を置きすぎていることを示しています。認証前のシリアル化されていないオブジェクトにも。
Javaにおけるオブジェクトのデシリアライゼーション(訳注:de-serialization/非直列化=ソフトウェアで扱うことができるように、送受信されたデータを元に戻すこと)が行われるとき、大抵は想定された型にキャストされ、それによって、Javaの厳しい型のシステムが、得られた有効なオブジェクトツリーだけを保証しています。
不幸にも、型のチェックが起こるまでの間に既にプラットホームのコードが生成されて、重要なロジックは実行されてしまっています。そのため、最終的な型がチェックされる前に、開発者のコントロールを離れた多くのコードが様々なオブジェクトの readObject() メソッドを通じて実行されてしまいます。脆弱性のあるアプリケーションのクラスパスから得られるクラスの readObject() メソッドを組み合わせることで、攻撃者は(ローカルのOSのコマンドを実行するRuntime.exec()の呼び出しを含めて)機能を実行することができます。
これに対する最も良い防御は、信頼されていないピア(通信相手)とは複雑なシリアル化プロトコルを使うことを避けることです。ホワイトリストのアプローチ http://www.ibm.com/developerworks/library/se-lookahead/ を実装するように resolveClass をオーバーライドするカスタム版の ObjectInputStream を使うと、影響を制限することができます。しかしながら、これは常にできることではなく、フレームワークやアプリケーションサーバがエンドポイントを提供しているような時にはできません。簡単な修正方法がなく、アプリケーションはクライアント・サーバプロトコルとアーキテクチャを再検討する必要があるため、これはかなり悪いニュースです。
これらのかなり不幸な状況において、エクスプロイトのサンプルが見つかっています。Frohoff氏は、 Groovy ランタイムや Springフレームワーク、 Apache Commons コレクションからのクラスを組み合わせるサンプルのペイロードに gadget chains (ガジェット・チェーン)を見つけています(訳注:provided)。これはこの脆弱性のエクスプロイトのためにより多くのクラスを組み合わせられることは完全に確実なことで、しかし、これらは今日、攻撃者が簡単に得られるチェーンです。
(Twitter画像)https://blogs.apache.org/foundation/mediaresource/ce15e57e-94a4-4d7b-914c-8eb8f026659c
この脆弱性のために利用される(訳注:blamed)ことができない確かな機能を実装するクラスができ、安全性が信用できないコンテキストにおけるシリアル化を利用されないようにするような既知のケースの修正ができたとしても、少なくとも分かったケースだけでも継続的に修正していくことが要求されます。モグラ叩きゲームを始めるだけであるかも知れませんが。実際にはこれは、オリジナルチームが Apache Commons チームに警告が必要だと考えていない理由で、それゆえに比較的、活動開始が遅れました。
Apache Commons チームは InvokerTransformer クラスのでデシリアライゼーションを無効化することによって commons-collection の 3.2 と 4.0 のブランチにおける問題に対処するために、チケット COLLECTION-580(http://svn.apache.org/viewvc/commons/proper/collections/branches/COLLECTIONS_3_2_X/src/java/org/apache/commons/collections/functors/InvokerTransformer.java?r1=1713136&r2=1713307&pathrev=1713307&diff_format=h) を使っています。議論されているやるべきことのアイテムは、変化させる仕組み毎(per-transformer basis)に、プログラマティックに有効にするような機能を提供するかどうかです。
これには前例があります。Oracle と OpenJDK JRE の一部であったり、バイトコードを挿入して実行することを許したりする com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl クラスで、セキュリティマネージャーが定義されているとデシリアライゼーションを拒否します。
これはシステムプロパティ jdk.xml.enableTemplatesImplDeserialization=true とすることで無効にできます。Apache Commons Collection は、本来よりもこの実行モデルは一般化していないため、セキュリティマネージャーの存在と独立したこの機能を無効化することを計画しています。
しかしながら、明確化のために述べておくと、この便利な"ガジェット"は、唯一知られている方法でもなければ、特に未知のものでもありません。そのため、インストールされたものを強化されたバージョンの Apache Commons Collection に置き換えることが、アプリケーションをこの脆弱性に対抗できるようにするわけではありません。
このブログポストのレビューのために Gabriel Lawrence に感謝したいと思います。
Apache Commons Collection は、Java コレクションフレームワークに加えて追加のコレクションクラスを提供する Java ライブラリです。InvokerTransformer はコレクションにあるオブジェクトを(特にリフレクション呼び出しを通じてメソッドを呼び出すことで)変換するために使うことができる Transformer ファンクションインターフェースの実装の一つです。
一般のSallyによる2015年11月10日午前10字15分にポスト | コメント[1]
コメント:
http://anond.hatelabo.jp/20151104181322
どうやら、あるようだぞ。再現性次第では MS Word viewer も要らなくなる??
http://www.justsystems.com/jp/download/viewer/ichitaro/
一太郎ビューアで読み込めるファイル形式 ・一太郎Ver.2以上のファイル ・一太郎11以上の圧縮ファイル(jtdc,jttc) ・一太郎2004以上の電子署名セキュリティ文書(jtsd) ・Microsoft Word 2013~Ver5(doc/docx) ・Lotus 1-2-3(123/WK4/WK3/WJ3/WJ2、Ver98まで) ・リッチテキスト形式(rtf) ・テキスト形式(txt) ・XMLテンプレートクリエーターのファイル(jtdx) ・OpenDocument(odt)
見たいんだけど、今はまだ気持ちの整理がついてない。
って人の手助けになればいいと思います。
今見るのが辛かったら、あとから見てもいいじゃない。
http://ch.nicovideo.jp/nico-lab/blomaga/ar8759
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12134841282
この辺のページ見て?ってなってる人にわかりやすいようにまとめただけなので、すでにわかってる人は読んでもあんま意味ないと思います。すいません。
※注意
この話を読む大前提として「OSはWindows」で「ファイルの拡張子を表示する」設定にしてください。
Windows7の人
http://121ware.com/qasearch/1007/app/servlet/qadoc?QID=013547
Windows8/8.1の人
http://121ware.com/qasearch/1007/app/servlet/qadoc?QID=013988
あとこれどうしてもタイムシフト放送保存したい人のために手っ取り早いタイムシフト放送保存の仕方しか書いてないんで、生放送録画の仕方とかは他で調べてください。すいません。
http://www.microsoft.com/ja-jp/download/details.aspx?id=40779
行ってダウンロードボタンクリックして落ちてきたファイルを実行。
今コレ見てる人だったら多分、入ってないから迷わずインストールしてok。
すでにインストールされてる場合は自動でインストールを止めてくれるので多重インストールの心配とかはしなくていいです。
http://com.nicovideo.jp/community/co310049
ここ飛ぶとコミュニティに入りますかみたいなこと聞かれるんで、入る的なものをクリックすると「正式版ダウンロード配布先1」ってとこに
・kakorokuRecorder Ver.1.5.4 (2013/11/04)
って書いてあるんで、ページ上のメニューから掲示板に入って投稿6558番を探して(ちょっとがんばればすぐにたどり着けるよ)リンクを踏む→「3079099.zipをダウンロードします」っていうボタンをクリック→出てきたリンクをクリック。
(って思ったけど投稿7820にも同じリンク貼ってあったんでそこから行けます。すぐたどり着けるはず)
これでkakorokurecorder154.zipってファイルが取得できるので解凍。
からrtmpdump-2.4-git-20131007_20131123.zipをダウンロード、解凍して、出てきたrtmpdump.exeってファイルをkakorokurecorder154.zipを解凍したフォルダに突っ込んでrtmpdump.exeを上書き更新する。
取得したファイルを解凍すると中に「kakorokuRecorder.exe」ってファイルが出てくるんでダブルクリックするとソフトが立ち上がる。
ツール→オプション→アカウント設定→ニコニコ動画アカウントの共有ってとこで「次のブラウザとCookieを共有する」にチェックつけて自分が普段ニコニコ動画を見るのに使っているブラウザを指定する。
ここでChrome使ってる人だけはChromeの仕様変更のせいでそのままではブラウザのCookieを取得できないので、一回kakorokurecorderを閉じて、
https://github.com/namoshika/SnkLib.App.CookieGetter/releases
SnkLib.App.CookieGetter.Sharp.v2.3.0.zipというファイルをダウンロード、解凍して「NET45」ってフォルダに中に入ってる3つのファイルと2つのフォルダをkakorokurecorder154.zipを解凍したフォルダに入れて上書き更新(NET45フォルダじゃなくてNET45フォルダの「中身」を上書きすること)。すると「Chrome(自分のニコニコアカウント名)」っていうのが選択項目に出てくるようになるんでそれを選択。
あとツール→オプション→録画→録画保存先フォルダで録画する先を指定しとく。
あとは
・メイン画面に戻って「放送URL」ってとこに自分の録画したい番組のURLを入れる
・「録画リスト追加」ってボタンを押すとボタンの下の画面に放送IDとか変換とか状態 待機中 とか出てくるんで録画開始ボタンを押す
・画面右側に録画したい番組の画面とか出てきて録画開始されるので終了まで待つ
・終わった時に「権利者名_放送ID(放送タイトル)_timeshift1.xml」「権利者名_放送ID(放送タイトル)_timeshift1.flv」って2つのファイルが出来てれば任務完了です。
(放送時間によってはファイルが分割されてtimeshift2ってファイルがもう一組出来るかも。要は.xmlと.flvのファイルが一組ずつ出来てればいいってことです。.xmlはコメントの時間などを指定するファイルで、.flvが動画本体)
http://www.videolan.org/vlc/index.ja.html
とりあえずこいつ入れとけば見れるはず。ちゃんと録画出来てるかどうか確認するにはまずこいつで再生してみよう。音がちゃんと鳴るか、音ズレしてないかまず確認するのおすすめ。
同じアプリはiOS用もアンドロイド用もあるのでストアから落としてきてコピーすればスマホでもファイル見れるよ。VLCでアプリストア検索すると出てくるよ。
VLC Playerは上手く使うとファイルは家のPCやNAS上においたままWi-Fi経由でスマホでストリーミング再生とかできるから動画収集癖のある人には色々やってみるのオススメだよ。
あたしはこれのver0.2.1.2使ってます。
https://code.google.com/p/lavfilters/downloads/list
からLAVFilters-0.60.1.exeっていうの落としてきてインストールしてから使ってください。
同名の.xmlファイルと.flvファイルを同じフォルダに入れてから再生すればコメント付きで見られます。
スマホでコメント付きで見る方法はちょっとわかりません。ごめんなさい。
要は.flvのファイルさえ確保できればあとはmp4に変換してストリーミングしたりDVDに焼いて見るようにしたりはいつでもグーグル先生に聞けば教えてくれるんで、とにかく確保確保。
android メディアサーバーの暴走は、画像や音楽、動画ファイル等(メディアファイル)の破損
メディアファイルのデータベースが破損した場合は、データベースを削除すれば勝手に再作成されて問題は解決する。
メディアファイルの破損が原因の場合は、破損したファイルを取り除いてやる必要がある。
対象となるファイルは[本体/default-capability.xml]に記載されている。自分の場合は、拡張子が
jpg,jpeg,bmp,gif,png,3gp,wav,mp3,mp4,3gp,m4a,flac,ogg,m3u,m4v,mkv,avi,xvid のいずれかのものだった。
ネットの情報を見ると、動画ファイルが破損する場合が多いようだ。
破損ファイルを削除し、データベースを削除すれば問題は解決する。
ただし、ファイルの破損が保存媒体由来のものである可能性もあるため、保存媒体の寿命が来てないか留意する必要がある。
電源管理から、電池消費量を確認すると、メディアサーバーが異常に電池を食っていることを確認。
起動して放置しているだけでメディアサーバーが働いて本体が熱くなるため、今回の異常の原因は、メディアサーバーの暴走が原因と推測した。
ドコモに行くが、OSの初期化が必要と言われたので自力で解決することに。
ネットで調べると、SDカードの劣化によるメディアファイルの破損が主な原因として挙げられていた。
そこでSDカードを抜いて再起動してみるが暴走は収まらなかった。
データベースの破損が原因の可能性もあるとのことなので、メディアストレージの削除を試してみたが、暴走は収まらなかった。
yahoo ファイルマネージャーで画像、動画、音楽ファイルを除外してみるが、問題は解決しない。
何か取りこぼしているファイルがあると考える。
yahoo ファイルマネージャーの『新着』を見ると、default-capability.xml が更新されていることに気づく。
このファイル名で検索すると、SDカードマウント時に作成されるものらしい。
データベース再作成の際に更新されたものだと考えて中身を見てみると、メディアファイルの拡張子が散見される。
jpg,jpeg,bmp,gif,png,3gp,wav,mp3,mp4,3gp,m4a,flac,ogg,m3u,m4v,mkv,avi,xvid
■7:00 起床
最近使い始めたアラームアプリは簡単な計算問題を解く必要がある。
今日は27-13。
最初は良かったけど、最近は寝ながらでも問題を解けそうなので、
■7:05
■7:30 出社準備
またネットサーフィン。
未だにテスト駆動開発とか言ってるのを見つけて懐かしい気持ちになる。
去年死んだでしょ?
■8:40 家出
自宅を出て駅へ。
5分後ぐらいに別の交差点で会う。
数年かけて最短コースを探索したつもりだったけど、
まだ他に抜け道でもあるのか。
■08:57 電車に乗る
■09:30 会社最寄駅到着
09:15には出社する予定だったはずだけど気にしない。
コンビニでお昼ご飯を買う。
■09:45 会社到着
ネットサーフィンする。
相変わらず真面目で面白味のないやつだ。
2chも二次裏もニコ動もネトゲもはてなも発言小町も知らないらしい。
うむ、その生き方が正しい。
やっと雑用が終わってEclipseを立ち上げる。
起動を待ってる間にネットサーフィン。
木村岳史の極言暴論コラム、今度は「中国にも抜かれるIT後進国ニッポン、
この記事Facebookいいねランキング一位なんだけど…IT後進国だと実感するわ。
今日は早く帰るだろうと思い、残業用に残しておいた菓子パンも食べる。
■12:45
「達人プログラマー」を読み返す。本に書いてあるようには上手くいかない。
自分だけがDRY原則や割れ窓理論を守ってもしょうがないんや…
昼寝。
■13:00 午後の仕事再開
「この社内業務用のサイトがやたら遅いんだけどなんで?」
あーとりあえずF12押してからF5押してください。デバックできます。
…このサイト、ただプルダウン表示するだけでサーバと六千回通信してる…!?
■13:30
いつも思うけど、どうやったらあんなつくりにしようと思えるのか。
といっても朝だらだらしているうちにだいたい考えていたので、
あとはタイプするだけ。
■14:00
「去年君が作ったプログラム見てるんだけど、
一時期私の中ですべてXMLに書くのが流行った時期があるからですよ。
■14:30
本気で飽きたので業務と関係のない自動化プログラムを作って遊ぶ。
あとは上司にこのExcelを開かせれば楽しいパーティーの始まりだ!
だいたいこういう調子に乗っているときはよくないことが起きる。
■15:10
幸い運用は止まっていないけど今まで見たことのない挙動をしてる。
■15:30
「今日は様子を見るので遅くまで残っておいて」とのこと。
昼に菓子パン食べたの後悔。
■16:00~
記憶がない。
■21:00
帰宅準備。
落ちないかな、と思っちゃいます。」
古事記にもそう書いてある。
■21:30
スマホを取り出すとこの前の日曜に遊んだ女子大生からLineが来てた。
「ブラック企業って本当にあるんですか??」
もう一週間未読放置されてる。徹底的すぎるでしょ。
事務連絡っぽく送ったんだからせめて既読ぐらいつけてくれてもいいのに。
■22:00 晩御飯
■23:50
この日記を書き始める
要するに PackageInstaller が権限チェックするタイミングと、実際にインストールするタイミングの間に、対象の .apk を置き換えてしまうという手法となります。(Google Play ストアからのインストールの場合は、一時的な .apk は /sdcard などではなく端末内のセキュアな場所に置かれるために、書き換えることができません。)
また Android 4.3 以降は、権限チェック時に AndroidManifest.xml のチェックサムを記録しておき、インストール時にももう一度それを確認するように PackageInstaller が修正されているようです。(一部のベンダの端末では 4.3 でもこのチェックをしていないので脆弱性の影響を受ける)
さらには、4.4 以降であれば、上記のチェックサム確認の他に、そもそもアプリが自由に /sdcard を書き換えることができなくなっているので、.apk を書き換えること自体ができなくなっていますね。
ユーザにできる自衛策としては、Google Play からのみアプリをインストールする、といったところでしょうか。
あるいは、/data/local/tmp はアプリからは書き換え可能でしたっけ?
できないのであれば、PC で .apk ファイルをダウンロードしたのち、adb install でインストールする、という手もありなのかな。
あ、ちなみに Amazonアプリストアアプリ (ややこしいな) は既にこの問題に対処しているようなので、Amazonアプリストアは安心して利用しても大丈夫かと思います。
Javaで開発されたアプリケーションにはインストールにまつわる難点がある。
それによりせっかく興味をもってくれたユーザーも試す前に諦めてしまいがちである。
また、サーバーサイドアプリケーションもJava製である場合、デプロイや監視の際の難点が多く運用者を悩ませてきた。
javafxで導入されたパッケージャを用いることで各OSネイティブなインストーラーの作成が可能になり、この問題を解消・緩和できる。
SpringBoot などを用いた ExecutableJar を作成するアプリケーションであれば、サーバーサイドアプリケーションであっても一部制限があるもののパッケージングできる。
Javaで開発されたアプリケーションの配布には以下の問題点がある。
javafx-maven-pluginを使うとよい。javafxと冠しているが実態はパッケージングツール。
javafxの冠があるがためにスタンドアロンアプリ開発者以外を遠ざけている感あり。
Windows(msi/exe), Linux(rpm/deb), Mac(dmg) など各OS・ディストリビューション固有のパッケージングが行える。
公式ページ( http://zenjava.com/javafx/maven/ )では更新が止まっているが、Github( https://github.com/zonski/javafx-maven-plugin )とMavenRepository( http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.zenjava%22%20AND%20a%3A%22javafx-maven-plugin%22 )を確認するとちゃんと開発は続いている。
pom.xml に以下を追加する。
mainClassはSpringBootなら@SpringBootApplicationのついてるクラスですね。
vendor は適当に組織や個人の名前を入れておきましょう。
※ 以下の XML が化けるのは増田の不具合か仕様っぽい。 http://anond.hatelabo.jp/20100205210805
<plugin> <groupId>com.zenjava</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>8.1.2</version> <configuration> <mainClass>[main method class]</mainClass> <vendor>[Vendor Name]</vendor> </configuration> </plugin>
あとはそのままビルドすればよい。
maven clean jfx:native
ビルドが終わると target/jfx/native 以下に、ビルドしたOS/distributionに合わせて msi, exe, deb, rpm, dmg ができあがります。
本当であればクロスビルドできてしかるべきなのですが、まだ実現はされていないようです。
これらのパッケージは Widonws であれば Program Files(x86) に、Linux系であれば /opt/ の下にインストールされるようです。
/opt/app-name/ の下には app と runtime の2つのディレクトリがあります。
app の下にはビルドした jar ファイルや依存ライブラリが置かれています。
runtime の下には実行用の jre が配備されています。
実行ファイルにそのまま引数を渡せば jar 実行時の引数としてそのまま渡されます。(-Xmxなどはまだ未検証です)
skrsvideo
今回プログラミング言語はRubyを選択したため、基本的にはVPS・クラウド的なサーバーでLinuxが動作する環境を探しました。
エロサイトを運営するにあたって問題になるのがサーバー選びです。
基本的に日本のレンタルサーバーではアダルトサイトの運用を禁止しています。
普段使っているさくらのVPSが利用できず、AWSもなんだかグレーな感じ(東京リージョン以外なら・・・?)
そんなわけで探し、GMOグループのWebkeepersを使いました。
使っても良いよ〜というお墨付き、
そして価格も手頃だったためここに決定。
DB | MariaDB |
---|---|
Webサーバ | Nginx |
フレームワーク | Ruby on Rails |
MariaDBを選んだ理由はなんとなく、MySQLとの違いはほぼありません。利用するGEMもmysql2でいけます。
ちなみにJavaScriptは使わずすべてCSSで作る方針にしました。
スマホ・PC両対応のためにMedia Queryでレスポンシブにしています。
↓
↓
↓
という流れです
gem 'nokogiri'
フロントはhamlとsassで、難しいことはしていないのでcompassはいれませんでした。
あとはデバッグ用にrails_config、pry系が入っています。
skrsvideoでは動画のURLを取得するためにクローラーもどきでスケジューリングして収集しています。
コマンドはこんな感じ
Rakeタスクはnokogiriでxvideosへのリンクを集めています。
doc = Nokogiri::XML( open(URI.parse(url)).read )
urls = []
urls.push link[:href] if link[:href] =~ /xvideos.com\/video(\d+)/
end
Nokogiriのスクレイピングでaタグのリンクを取得し、URLがxvideosのものかチェックして保存って感じです。
動画を探し終えるとaタグからランダムでピックアップし次のページに進んでいきます・
動画が見つかったページはドメインをDBに記録して、しばらくしたら再びクローリングをするようにし、収集の効率化。
30分以上の表示はちょっと頑張ったところ
これはタイトルの文字列から部分一致で引っかかったものを表示しています。
AV女優の名前を表示するためにWikipediaからとってきたら、ちょっと膨大な数になってしまったため断念。
DMMのランキングに載っていた方だけをとりあえず入れています。
それなりに新しい(電話のできる)Androidか、それなりに新しいiPhoneが必要です。持ってないならGmailのアカウントを取得する必要があります。一度だけSMS認証が必要なので、電話のできない端末は向きません。
Gmailのアカウントは本名じゃなくていいです。Google+と連携する必要はありません。Google+の情報を作ってしまっても(https://support.google.com/plus/answer/1044503?hl=ja)ここら辺参照すると消去の手順があります。
IngressのCodenameはTwitterとかのアカウント名とは異なるものにしておいた方がいいです。
青か緑かについてはどっちでも構いません。もし友人と一緒に遊ぶことを考えているのならその人と合わせた方がいいです。違う色のユーザと(友好的な範囲で)一緒にできることは何一つありません。
初回ゲーム開始したらSMS認証を行う。手順は検索すればたくさん出てくるのでそれを参照。
人の交通が多い地域にあるオモシロ建造物、時計台、駅、郵便局のことです。
人の流れが少ない場合、つまり、あなたのおうちの近く、職場の近く、最寄り駅が絶対にポータルである保証はありません。
Portalに近づいて、スマホの画面に表示されているPortalをタップして、Hackボタンを押すことです。つまり、そのPortalの位置まで動かないと絶対にHackできません。
自分と同じ色のPortalをHackすればぼちぼちアイテムが手に入り、敵のPortalをHackすると、ある程度のアイテムと100APが手に入ります。APとは経験値のことで、これを集めるとレベルが上がります。
1つのPortalに対して、5分の休憩を挟んで4回までHackすることができます。再び同じ事ができるようになるためには4時間待つ必要があります。
プレイヤーは1000XM持ってます。このXMが減ります。0になるとHackとかできなくなります。回復するにはあちらこちら動き回ってください。スマホの画面に見えるキラキラしたものに近づくと回復します。
以上が一番簡単なルールで、敵のポータルを見つける→Hackしてアイテムと100APを取得する→ダメージを受けてXMが減ったらあちらこちら動き回ってXMを回復する、の流れが一番シンプルです。
厳密にはそんなことはありませんが、低レベルのうちはそう考えておくと楽です。
様々なケースがあります。まず、Hackする要領でPortalに近づき、画面に映る味方のPortalをタップします。その際に……
Ingressで遊ぶために、それに適した(人の多い)場所へ遠征する必要があります。生活圏内の空き時間・移動時間にちょこっと遊んでみたい、みたいな遊び方では何もできません。
自力で申請してPortalを作るというオプションもありますが、iPhone版ではその機能は未実装で、Android版だとしても、現在の所申請に3ヶ月程度かかることが珍しくないので、初心者にはお勧めできません。
Resonatorは攻撃を受けるか、時間が経過すると自動的にエネルギーが減っていきます。それを回復させる行為です。
ないです。
PortalをHackしたときに(そのHackしたPortalにちなんだ)Portal Keyと言うアイテムが出ることがあります。Portal Keyを所持している味方のPortalは、そこに近づかなくても、遠隔で回復をすることができます。XMと、RechargeできるPortalのPortal Keyがある限り、どこからでも10AP獲得できるチャンスがあります。
しなくていいです。一定以上レベルが高くならないとダメージが入らず無駄なので、しばらくは攻撃する必要はありません。
味方のPortalをタップしたあと、画面左下のResonatorが8つ全部埋まっている場合、Linkってボタンが見えるはずです。それを押して別の味方のPortalを指定すると、まだLinkが作成されてなければ、その指定したPortalに向かってLinkを伸ばすことができます。313AP獲得できます。しかしその際に、Link先となるPortalのPortal Keyを消費する事になります。
Linkで三角形を作ると、その範囲がControl Fieldと呼ばれる領域になります。そうなると1250AP入手できます。
遠すぎたり、途中で敵味方問わず他のLinkを横切るような感じになってたりすると無理です。また、Control Fieldの中に入ってしまったPortalはLinkボタンを押してもLinkできないと言われるようになります。
この、Resonatorを配置する作業、Linkを貼る作業、Control Fieldを作る作業が一般的に言われるAP稼ぎの手段ですが、そのどれも常にできるとは限らず、レベルの高い先客がいると初心者には入り込む余地がありません。
以上。初心者はとにかく敵PortalをHackすることでアイテムや経験値を稼ぐのが分かりやすいと思います。味方PortalはResonatorの配置やLinkの生成でAP取得ができるのですが、先客がいるとできないので、誰でもできるとは考えず、できる地域に住んでいる人だけが可能であると考えるといいです。
INSERT INTO TBL SELECT TBL.COL FROM OPENROWSET(BULK 'filepath', SINGLE_NCLOB) AS TBL(COL)
他の方法もいろいろあるだろう。ただ、文字コードに関して言及すると、SQL SERVER の内部データは UCS-2(UTF-16のサブセット)なので、合わせておいたほうが無難。UTF-16以外で取り込もうとすると、日本語付近で "XML 文字が無効です" などとエラーになる場合が多い(もちろん原因は何かあるのだろうが、調べてもさっぱり私には見当がつかない。時間の浪費はいやずら)。
'filepath'は、SQL SERVERのインスタンスが動いているマシンにとってのファイルパスね。'E:\???\???.xml'や'\\filesvr01\shared\data\???.xml'とか。
SELECT COL.query('/ELEM/NODE') FROM TBL など、あとはいろいろクエリーしてみてくれ。
(感謝)
発達障害者に向いていると言われる職業として、ほぼ必ず、真っ先に挙げられるものの一つがプログラマだ。
しかしこれ、本当にそうなのか?と思う部分がある。
興味があることについては過剰なくらい品質を追求するので、裏を返せば確実な仕事が約束される。
また問題を確かに理解したと納得できるまで、見積もりを出す段階から大きな抵抗を示す人達なので、彼の受け持ちが炎上する確率も低い。
視野が狭いから発想が貧困でシステムの元ネタになる企画が出にくいとか、計画は基本守られないとか、社会性の問題から客先に出せねーとか、色々欠点はあるけど、それでもハサミよりは使いようがあるだろう。
彼らの特徴はとにかく忘れやすい、他の事に手を付けると、それまでやっていた事を綺麗さっぱり忘れてしまう。
だからマルチタスクの塊である家事なんてやらせたら、最悪キッチンにかけた鍋のことを忘れて火事になる可能性も。
そこまで行かなくても、部屋の片付けを始めたらエンドレスになってジ・エンドとか、当事者なら確実に経験済みなはず。
そんな彼らにプログラマが務まるなんて、どうしても想像できない。
何しろ今どきの開発は、プログラムの前提になる知識が多岐にわたる。
例えば流行りのWeb系の場合、最低でもLinux、Apache、アプリケーションサーバ、DBなどのインフラ周りから、HTML、JavaScript、CSS、XML、SQL、サーバサイド言語(JavaとかPHPとか色々)まで、体系立てて覚えなければならない。
その上で、最終的には自分が作るシステムが稼働する環境を自力で組み立てられて、実装と稼働後の運用が楽になる設計が出来て、セキュアでシンプルかつ力強いコードが書けないといけない。
でも彼らは何か新しい知識を覚える段階で、覚えるそばからそれまで覚えた事をどんどん忘れてしまう可能性が高い。
更にコードを書いた日には、凄まじく書き散らかった、バグだらけの代物が出来るだろう。
そんなこんなでいつまで経っても半人前から抜け出せないんじゃね?と思ってしまう。
つまり高度な内容に踏み込む遥か手前で詰むのがオチではないかと思うわけで。
普通に出来るよ?
下のURLでOK。
http://feedly.com/index.html#subscription/feed/http://staff.hatenablog.com/rss
適当なRSSページで実行すれば登録してくれるブックマークレット:
javascript:void(d=document);void(el=d.getElementsByTagName('link'));void(g=false);for(i=0;i<el.length;i++){if(el[i].getAttribute('rel').indexOf('alternate')!=-1){ty=el[i].getAttribute('type');if(ty.indexOf('application/rss+xml')!=-1||ty.indexOf('text/xml')!=-1){g=true;h=el[i].getAttribute('href');break;}}};if(g){void(location.href='http://cloud.feedly.com/#subscription'+encodeURIComponent('/feed/')+encodeURIComponent(h));};if(!g){window.alert('Could%20not%20find%20the%20RSS%20Feed');};</p>
GOMPlayerのデフォルトスキンGOM 2.2が広告が多くで使いにくいので広告を表示しないようにする方法をメモ
まず以下のファイルを開きます (環境によって場所が違う場合があります)
C:\Program Files\GRETECH\GomPlayer\skins\gom2013\SKIN.XML
このファイルを編集していきます (元に戻すためバックアップは忘れずに♪)
中の以下の行を削除してください
122行目の ShowControl("CONTROLID_INFO", 1); を削除
124行目の ShowControl("ID_AD_HTML", 0); を削除
132行目の ShowControl("CONTROLID_INFO", 0); を削除
134行目の ShowControl("ID_AD_HTML", 1); を削除
154行目から ShowControl("BTN_CHANNEL_TOGGLE_R", 0);
160行目の ShowControl("STATIC_CHANNEL_TOGGLE", 1); までを削除
164行目から ShowControl("BTN_CHANNEL_TOGGLE_R", 1);
170行目の ShowControl("STATIC_CHANNEL_TOGGLE", 0); までを削除
319行目の <ButtonControl CMD="ID_CHANNEL_TOGGLESHOW"~~/> を削除
320行目の <ButtonControl ID="BTN_CHANNEL_TOGGLE_OPEN"~~/> を削除
363行目から <StaticControl ID="ID_AD_HTML_STATIC"~~/>
366行目の </StaticControl>までを削除
386行目の <ButtonControl CMD="ID_CHANNEL_TOGGLESHOW"~~/> を削除
387行目の <ButtonControl ID="BTN_CHANNEL_TOGGLE_R"~~/> を削除
395行目の <StaticControl CID="CONTROLID_LOGO"~~/> を削除
396行目の </StaticControl> を削除
以上の箇所の行を削除すれば広告を消えているはずです。
最近はやりのLOD(Linked Open Data)のデータフォーマットについてメモ。
例はWikipediaのコピペ。もっと違いが分かりやすい例があると良いのだが。
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn"> <dc:title>Tony Benn</dc:title> <dc:publisher>Wikipedia</dc:publisher> </rdf:Description> </rdf:RDF>
@prefix dc: <http://purl.org/dc/elements/1.1/>. <http://en.wikipedia.org/wiki/Tony_Benn> dc:title "Tony Benn"; dc:publisher "Wikipedia".
@prefix dc: <http://purl.org/dc/elements/1.1/>. <http://en.wikipedia.org/wiki/Tony_Benn> dc:title "Tony Benn"; dc:publisher "Wikipedia".
<http://en.wikipedia.org/wiki/Tony_Benn> <http://purl.org/dc/elements/1.1/title> "Tony Benn". <http://en.wikipedia.org/wiki/Tony_Benn> <http://purl.org/dc/elements/1.1/publisher> "Wikipedia".
<http://en.wikipedia.org/wiki/Tony_Benn> <http://purl.org/dc/elements/1.1/title> "Tony Benn" <http://en.wikipedia.org/wiki/Tony_Benn>. <http://en.wikipedia.org/wiki/Tony_Benn> <http://purl.org/dc/elements/1.1/publisher> "Wikipedia" <http://en.wikipedia.org/wiki/Tony_Benn>.
{ "@context": { "dc": "http://purl.org/dc/elements/1.1/" }, "@id": "http://en.wikipedia.org/wiki/Tony_Benn", "dc:title": "Tony Benn", "dc:publisher": "Wikipedia" }
http://d.hatena.ne.jp/nowokay/20130322#1363969460
以下の記述のまとめ:
お前の言っているソフトウェア工学は今のソフトウェア工学じゃねえよ.
端的に言うとそんだけ.
で,本題.
まず,書いてる内容が古すぎて救いがたい.iPS細胞の研究がノーベル賞取った現状で,「実験材料に受精卵を使う万能細胞の研究なんて許されませんよ!」と主張されても,その何だ,困る,とかそういうの.
1999年、なにがあったかというと、XPエクストリーム・プログラミング入門という本が発行されたのです。リンク先は2版ですが、日本語版でも初版は2000年12月になっています。
で,何?2000年以降ソフトウェア工学が何も進んでないと主張したいの?
って最初に書いてあんのに,そこから崩れて何も出てきてないって主張はどっから出てきたの?自分が知らないことが分かってるのにドヤ顔で提言とか大丈夫か?
しかし、結局統一設計手法は完成せず、UMLだけが残りました。実際に使われているのはその一部です。CORBAも普及せず、WebプロトコルにあわせてSOAPが出てきたものの、結局単純なRESTが定着しました。XMLはいまは毛嫌いされています。大成功したはずのオブジェクト指向も、Webアプリではうまく適用できませんでした。
だから何だ.提案されても使いにくかったり,状況自体が変化したら無用になるに決まってる.まさか「ソフトウェア工学分野で提案された手法はどれだけ開発環境が変わっても生き延びていなければならない」とかいう寝言じみた主張でもしたいのか?言語に流行廃りがあるように,手法にも流行廃りはあるに決まってるだろ.
あとSOAPとXMLに関しては,その衰退過程自体がよくある話すぎて話にならん.一番最初に厳格な重量級の様式が定められて,それをベースに運用レベルを考慮した軽量級の様式が定義されて駆動するってのはよくある話.言い換えると,学術から出てきた理論的に正しい手法が,産業界で必要なところだけつまみ食いされる形で運用されるとか,サンプルは死ぬほどそこらじゅうに転がってねえか?
ああ,CORBAはまあ,うん,そのなんだ.アレはフォローできない.
実際のところ,UMLが残っただけで十分じゃねえの?最初に提案された時の理念さえブレてなければ,つまみ食いしたモノがはやってても提案者的には本望だろ.
今はCMMIだ.CMMは2000年にCMMIに統合されてる.今更XPの本出してくるところといい,真面目に2000年より前で知識止まってんだな.
はぁ?動的型付言語が普及したらなんでソフトウェア工学と離れんのよ?静的型付言語で使えて,動的型付で使えなくなる研究分野なんぞ,完全にソースコードに寄り添った研究だけじゃねえか.
「この手法はC言語を対象としている」って書いてある研究は他の全ての言語には一切適用できないと主張してんのと一緒だ.はじめてのCあたりからやり直せ.
ここで、やはりCMMの失敗がソフトウェア工学にとっての痛手だったように見えます。
もちろん、プロセスを規定することが難しいということは当時からも言われていました。それであるから、CMMはプロセスそのものを規定するのではなく、プロセスの規定方法を規定するというメタプロセスになっていたのです。
そして、すべての組織で同じプロセスを採用することはできないということから、5段階のレベルを設けました。また、プロセスは変化し続けなければいけないということから、CMM成熟度レベル5では「最適化している」という成熟度になっていました。
これはなかなかいいかもしれないということで、期待は大きかったと思います。
でも、とにかく運用が大変だとか、CMM成熟度レベル5でも品質がいいわけじゃないとか、そういう話がきこえてくるようになりました。
まず失敗を定義しろ.で,失敗したってんなら,CMMIで未だに新たな認定がなされてる(http://cmmiinstitute.com/assets/presentations/2012SepCMMI.pdf)理由を説明しろ.
で,運用が大変?当たり前だ.品質確保すんのに運用が楽とかあり得んだろ.従業員に好きにやらせてもアウトプットが高品質ならそもそもCMMIなんぞ必要無い.順序が逆だ.「CMM成熟度レベル5でも品質がいいわけじゃない」ってのも当然だ.アレは組織の成熟度を評価する指標であって,中で働く人間の能力を評価してるわけじゃない.というか流動すんのに評価なんぞできねえけど.
そもそも,CMMIレベル5ってのはおおむね高品質なものが出てくるだけで,人間が関わっている以上ある程度のばらつきは存在する.つーかさー,CMMIレベル5なら必ず高品質のモノが出てくるとか思ってんの?まさかまだ銀の弾丸の存在を信じてんの?「ISO9001に準拠してればリコールなんて発生しない!」と思い込むくらい残念すぎねえか,その思考回路.
ああ,「CMMI」じゃなくて本気で「CMM」の話をしてるんなら申し訳ない.もう無いんだから,CMMの話を最近全く聞かないのは当然で,勘違いしても仕方ない.悪いもしくは古いのはアンタの頭だ.
もともとソフトウェア工学に対しては「がっこーで現場しらない人が研究してる手法なんて使えない」のような声があったのですが、XPやアジャイルによって「現場から生まれた手法のほうが使えるよねー」というのが決定的になりました。
前半は正しい.ソフトウェア工学の最初期からずっとその手の意見はあって,未だに言われてる.が,後半は話にならん.
真面目に聞くんだけど,アジャイルソフトウェア開発宣言に名前が入ってる17人のうち,何人知ってる?何人が開発寄りで,何人が研究寄りか分かる?まさかKent Beck1人を見て「アジャイルは現場から!」とか寝言垂れて無いよな?そもそもKent Beckはコンピュータサイエンスで博士号持ってるし,開発寄りと主張していいのかどうかすら微妙なんだけど.
あとアジャイルも突発的に出てきたわけじゃなくて,プロトタイピングとかあの辺(とそれ以前)からの流れがあると思うんだけどなあ.
ソフトウェア工学が何を失敗しているかというと、その学問自体の認知度が低すぎることです。
ソフトウェア工学がどのような問題を扱う学問かが知られていない。どのような問題を扱う学問か知られていないので、その問題に直面している人がソフトウェア工学の成果を積極的には利用できない。
問題に直面してる人がソフトウェア工学の成果を積極的に利用できないうんぬんについては,最近の国際会議でもその辺を扱った研究が出てきてたりする.ICSE2012のDistingished paperのうちの1本がそんなん.Eclipseの検索ツール使わずに,テキストエディタにコピペしてCtrl+F使ってる人の話とか出てきてた覚えが.
ただ,ソフトウェア工学の認知度なんぞどうでもいいと思うんだけどなあ,別に.そっから出てきたモノが使われさえしてりゃあ.ソフトウェア工学研究の成果が,それと分からずに使われてるんならそれ以上に望むべきモノは無いだろうに.「これがソフトウェア工学様の研究成果でござーい」と大上段に振りかぶって,「ありがたや」の言葉と共に使われることを望んでる研究者なんぞいねえだろ.
就職活動で「半年でプログラムは覚えれるし専門は必要ない」のようなことを言われるという話があります。たしかにアルゴリズムなど実装技術の研究をしていた人をSIの開発現場で生かすのは難しいと思います。でも、ソフトウェア工学の専門知識は、半年で覚えれるものではないし、SIでの開発現場に必要になるはずです。
うん,そうですね.だがそれを学術側を知ろうともしてない人間が言うな.
ソフトウェア開発がある限り、ソフトウェア工学は必要なので、XP・アジャイルを織り込んで再構築して、認知度を高めていってほしいなーと思います。再構築とかは他力本願になってしまうけど。
ソフトウェア工学を再構築しよう,という動きとしては http://semat.org/ あたりがあるのでそっち参照.
あとさー,そもそも論として,ソフトウェア工学の研究内容を「現場」と「学術」に2分することが不可能だって分かってる?工学ってそういうもんだろ?その2分は「工学」と「理学」というレベルでは可能なのであって,既に工学にカテゴライズされてるソフトウェア工学を分けるのは不可能だ.それくらいは語の定義レベルの話なんで,分かっててくれ,頼む.
まあ暇ならトップ会議であるところのICSEのプログラム(https://files.ifi.uzh.ch/icseweb/fileadmin/downloads/ICSE2012_conference_program.pdf)でも眺めてみて,ソフトウェア工学の定義について悩んでみるのもいいかと思います.
実際のところトピックは割と流動的.最近はOSS周りが流行.gitのおかげで開発者の行動とか取りやすくなってる関係もあって.
つまりさー,なんでか知らんけど,この人の頭ん中では「ソフトウェア工学は静的型付言語を利用したウォーターフォール型開発でしか使えない」てことになってんだよな.