「xml」を含む日記 RSS

はてなキーワード: xmlとは

2017-12-01

学科教員ブロックされた話

この記事いい話Advent Calendar1日目の記事です。

AdventCalendarに名前があるのにわざわざここで書いているのはハイコンテクストネタです。分かる人には分かります

突然ですが、先日僕の行く大学教員Twitterブロックされていました。

からなんだという話ではあるのですが、いい話っぽいのでまとめたいと思います

原因

いつからブロックされていたかが分からないので原因が詳細には分かりません。

色々と日々Twitterで僕が言っていることに反応したんじゃないかと思います

よっぽど構って貰える人がいないのか、中年おっさんTwitter学生空リプしまくったり、学生同士の会話のコンテクスト無視してクソリプをしているのを見ると悲しくなります

その人の講義はやれXMLデータベースだのJava Appletだのを言っていたので頭が痛くなって履修をやめました。

おそらくこういったことをインターネットバカスカと書いてクソクソ言っていたのでブロックされたのでしょう。

学科教員ブロックされないためには

同じ大学の皆様には教員との良好な関係を築くためにも上記のような心がけが必要だと思います

僕はインターネットクソ野郎なので無理でした。

2017-11-25

anond:20171125002759

いや、普通にJava案件ならどこでもXML読み込みなんてやってるから

 

しろPythonAI利用以外はJavaよりかなり遅いか

AIとか統計学時代に俺はJavaxmlファイルの読み書きをするプログラム

悲しい

しかもうまく動かないでやんの

2017-11-23

「何を勉強すればいいんだろう」から半年経った

anond:20170504171337

あれから半年、分からないながら自分なりに頑張って、Excel VBAVB.NETバッチ勉強した。いくつかアプリを作って、業務自動化し、会社の割と偉い人に認知され、評価もしてもらえた。今月からN予備校プログラミング講座を受講している。

で、半年前に書いた自分日記を読んで思ったのだが、これExcel使うの辞めればよくね?

検査表は、検査項目の文章や合否判定や値の入力欄なんかはWebで構築して、検査結果だけをXMLcsvで延々吐き出す。作業時間だってそうだ。

現場のすべてのPCExcel入ってる必要は無いんだ。どうせグラフにしたり傾向をつかんだり、そんなことをするのは一部の管理者に限られる。いざって時にだけ閲覧できればいいんだ。なんなら閲覧画面もWebでこしらえてしまおう。

Office購入費用も抑えられるし、PC環境依存しないし、なんだ、いいことづくめじゃないかセキュリティだけは不安から気を付けないといけないけど。

とにかく、迷いながらも勉強を進めてきてよかった。これからも続けていこう。

メタナントカ

例えば「AB」という概念があった時, 「ABAB」「ABのAB」「ABに関するAB」という概念も成立しうる場合, その概念は「メタAB」と呼べそうである.

あたりがぱっと思いつくけれど, 身近な例でも応用できないだろうか.

意外と難しい.

2017-11-03

Windows10メモリリーク

23日間ほどスタンバイを利用しながら、Windows使用し続けるとメモリリークになる。

物理メモリ 8 GB

コミットチャージ 32 GB

警告のダイアログが出る。

コンピュータメモリが不足しています

プログラムを正しく動作させるのに必要メモリ復元するにはファイルを保存してから、開いているすべてのプログラムを終了または再起動してください。

このダイアログテキストコピーできない。

イベントビューアを見ると、chromeウイルスバスターメモリを消費していた。

chromeを閉じてMicrosoft Edge を起動してみると、

イベントビューアではEdgeウイルスバスターメモリを消費しているとのこと。

なのでウイルスバスターアンインストール

Windows Defender に変更して様子を見た。

chromeメモリを消費しているとのこと。

物理メモリの利用可能な空き領域はあるけれども警告がでる。

イベントビューアのログWindowsログシステム→警告

Windows仮想メモリの不足状態を診断しました。仮想メモリを多く消費したのは次のプログラムです: coreServiceShell.exe (2848) は 1477959680 バイトを消費し、chrome.exe (12928) は 499216384 バイトを消費し、chrome.exe (18092) は 243965952 バイトを消費しました。

Windows仮想メモリの不足状態を診断しました。仮想メモリを多く消費したのは次のプログラムです: coreServiceShell.exe (2848) は 1521418240 バイトを消費し、MicrosoftEdgeCP.exe (5936) は 921763840 バイトを消費し、MicrosoftEdgeCP.exe (6960) は 575160320 バイトを消費しました。

Windows仮想メモリの不足状態を診断しました。仮想メモリを多く消費したのは次のプログラムです: chrome.exe (5220) は 658739200 バイトを消費し、chrome.exe (5908) は 238960640 バイトを消費し、chrome.exe (10488) は 235864064 バイトを消費しました。

ソース: Resource-Exhaustion-Detector

イベント ID: 2004

タスクマネージャーメモリ

使用中(圧縮) 4.6 GB( 398 MB)

利用可能 3.2 GB

コミット済み 31.8/31.9 GB

キャッシュ済み 1.4 GB

ページプール 741 MB

非ページプール 398 MB

ハードウェア予約済み 91.8 MB

リソースモニターメモリ

ハードウェア予約済み 92 MB

使用中 4822 MB

変更済み 53 MB

スタンバイ 1376 MB

空き 1833 MB

利用可能 3216 MB

キャッシュ済み 1434MB

合計 8100MB

インストール済み 8192 MB

イベントビューアのログXML

省略。

WEB検索しているとWindows 7 からある不具合なのだろうと私は認識している。

長期間使用によるメモリリークが他の方の環境でも再現すると推測しているので、ここに情報を共有する。

2017-10-16

Markdownは使いにくい

Markdownはただのマークアップ言語

HTMLに「画像を挿入」できないのと同じ


で、まあ、Markdownはその出自上「テキストファイルで見たときにそれなりの構造を反映した見た目であること」を重視してる

Markdown文書さらHTMLPDFに変換することをあまり目的としていないのだ

からそもそもグラフィカルな編集サポート機能画面があるならその編集画面内での記述方法Markdownである必要はないというかむしろ害悪なんだよね

画面の内側でXMLなりHTMLなりバイナリで保持してから変換してユーザーリアルタイムに見せればいい

いまのMarkdownは使いどころ間違った使い方をされてることが多いのだ、君は被害者といえる

あとマイクロソフト関係ないぞ!

2017-06-12

CSVテロ

上司accessCSVを取り込めないと騒いでいる。

そりゃそうだ。ファイル名にドットが入っているからな。

"定義XMLによるスキーマ確認が失敗しました。XMLドキュメントの行 | にエラーがあります。"というエラーメッセージが出るからな。

ふふ。苦しめ苦しめ!わしは帰り増田

2017-04-19

動画関係で今朝早朝行った事柄

動画関係でやったことを振り返る!

Makebdavで、忠臣蔵の恋・孤独のグルメ博士数式を焼き付けた。

焼き付けたのはBDAV ではなくImgバーンだけどね。てへぺろ

視聴した。小一時間コマーシャル飛ばしたから少し短時間ですんだい。

h265エンコードエラー発生問題解決された。

良かった。Durationを30メガまで延長!これが奏功!した

あとアップローダー試してみたけど( ^ω^)・・・これは

やっぱり現実的じゃない。ディスクに焼き付けよう 仕方ないね

DvdstylerでTEDをいくつかオーサリングした。これは今日活用予定。

ガッツだぜ!しか字幕Xmlで別々になってるツベ動画があるんやな。

あれは不便。なぜハードコーディングせえへんねや?

もうもう。牛

2017-04-11

オライリーに出てくるフレンズ

参考:http://www.oreilly.com/animals.csp

2017-03-19

http://anond.hatelabo.jp/20170319132149

日本のお役所PDF大好きなのは、知っている。霞ヶ関から吐き出される有効資料は、ほぼpdf

一方で、e-statなどでは、ネ申エクセルや方眼エクセルとは、別の方向でcsvデータを公開している。

今、株価が上昇しているIT企業様は、PDFhtmlとを比べるような使い方はしていないのでは?

世界は、IT企業htmlPDFとを比べたらどちらを重用しているのか?

  

googlejava script 推しのJQueryを良く使ってるし、これからは、人工知能時代からxml形式とか、マークアップ言語は、良く出てくると思うよ。

Facebookphpなんでしょう?リア充御用達で、Twitterよりも株価資本も安定している。

これからは、you tubeとかLINEみたいなツールがどんどん出てくるから、先のことは分からないよね。

オープンソースでもGit hubみたいなツールが使われているんだし。。  

そう言えば、perlcgiは、ほぼお亡くなりになりましたね。

2017-03-02

大手SIerの現状

Excelマクロなんて使ってないんだけど、Excel保存するときxmlがなんとかってエラーが出るなぁ」

大手SIerプロパー2名の会話が漏れ聞こえてきた。


それxmlじゃなくて、xlsmのことですか?

xlsxファイルの中身がxmlということを知らないんですか?

というか、xml自体知らないんですか?


こんな人達が、基幹系システム新規構築しようとしていることが恐ろしい。

こんな人達が作ったシステムを、使わされる人たちが哀れでならない。


完全に呆れてしまった。

2017-02-23

.iniファイル

このまえSIerPHPプロジェクトで、パラメーターを設定ファイルに外だししようって話になって「.iniファイルの読込ルーチンはどうする? だれか作れる? ○○さんがもってるかも」って話になってたから、PHPなら標準でxmljsonの読込関数がありますよって言ってみたけど「あ、こいつまた小難しいこと言ってる」みたいな空気になって流されたな。

ホットエントリ内閣府CSVやばいって記事で思い出した。

2016-11-06

http://anond.hatelabo.jp/20161105032504

かなり時代錯誤を感じる。ネタであって欲しい。もしかしてITリテラシー低すぎ?というか、好きなソフトウェアは何なんだよ。ノーカンプラ???

高い

"Excel" なら安い。アプリの数百円からデスクトップ版の1.5万程度。ていうか、¥14,526で売ってる。

https://www.amazon.co.jp/dp/B015SMNVAK/

重い

Excelが重いとかどれだけ糞スペ。

Windowsしか動かない

Mac, iOS, Android, ブラウザでOK。

よくバグる

それはExcelに限った話ではない。ソフトウェアである以上多少のバグはしゃーない。つかリソースが糞なせいじゃねーの?滅多に落ちないが。

検索性が悪い

イミフ普通に検索出来るだろ。

共有PCとかだと高確率で使えない(Excelが導入されてないから)

ブラウザでOK。

Markdown表現できるレベル資料とかもはや何のためにExcel使ってるのかわからない

それはExcelのせいじゃなくて使う人間馬鹿なんだろ。

タブ表示が面倒臭い

ショートカットご存知無い?馬鹿?ページスクロールも面倒臭そうだな。見なくていいよ。

バージョン管理システム管理した場合Diffが見にくい

それはそのバージョン管理システムが糞なんだろ。Diffを見るだけならWinMerge+xdocdiff普通にやすいが。馬鹿なの?

セル結合死ね

嫌ならマクロで一括解除&復元でもしろマクロからでも普通に扱えるし、イミフ。罫線も死んじゃうの?

Excel製ワイヤフレームとか手書きの方が多分まだ保守やす

知らんがな。使い方の問題だろ。ExcelじゃなくてWordならいいのか?馬鹿

お節介な補完がうざい

嫌ならOFFにしろよ。馬鹿

方眼紙死ね

Excel方眼より良いものがあれば使わないだろ。普及度、使い勝手トータルでExcel方眼より良いものがあればぜひ教えろ。

学生相手Office持ってる前提でいろいろ求める風潮

しろ、今の大学Office使わないところあるの?マジ?普通総合大学ならITの授業あるだろ??レポートOffice使うだろ???

それとも持ってるけど使えない脳足りん系?F欄なのかな。

つか、Excelの話じゃないのか?

AシートとBシートで別々の人が全く関係ない作業しててもマージするとコンフリクト起こる

形式(.xlsx)はXMLZIPで固めただけだから分解して好きにしろ

2016-10-25

gmailフィルタードメイン一括変更

会社メールドメインが変わることになって山のようなフィルターも全部変更しないといけなくなった

最初のいくつかは手動でやってたけどあまりにもめんどくてぐぐったらいいほうほう見つけた

フィルターxmlエクスポートしてドメイン部分を一括置換してそれをインポートすりゃいいらしい

脳汁出た

2016-10-20

RSSって何?

なんかどこのサイトいってもフォーマットであるとか更新されてるかどうかわかるとか購入とか色々書いてあるけどさっぱり分からん

例えばFacebookボタンとかならFacebookシェアするボタンとか用途と共に書いてある、ツイッターも同じだけど

RSS活用してる用途とかは全然書いてくれてない

一体設置したらどうなのかとかどう使われるのかとかそこんところ抜け落ちてフォーマットだとか言われてもまるで理解できない

Wikiでさえ3パターン意味の揺らぎがしょっぱなにあってさらに混乱する

 

RSSアールエスエス)は、"Rich Site Summary"の略で、サイト概要記述する為のXML形式文書です。 このRSS提供したり、提供されたRSSのことをRSSフィードRSS feed)といいます。」

いやこの説明じゃ全然分からんから

なんでこの説明説明できた気になってんの?

RSSが何らかのサービスによって使われる要素ならそのサービスの内容と運用方法も照らし合わせて説明してくれよ。

なんでITってたまにこういうとんちきな説明だけで済ませようとすんのかね。

ひょっとして頭悪いんじゃないの?

2016-07-18

Vimフィルタコマンドで使うUNIXコマンド

http://vim-jp.org/vimdoc-ja/change.html#filter

Vimにはフィルタコマンドといって、テキスト任意UNIXコマンドで処理するExコマンドが用意されている。

用意されていて、実際強力なんだけど、Vim組み込み機能で間に合うことも多くて、下記以外はあまり使っていない気がする。

以前はVim正規表現に慣れないからとPerlを使ってたりもしたけれど、Vim正規表現も悪くないかなとなって。こう。

何かおすすめUNIXコマンドがあったら教えてください。

bc

簡単計算をするときに使う。1行に計算式を書いて「:.!bc<CR>」あるいは「!!bc<CR>」とすると計算ができる。

(小数を扱いたいときは-lオプション指定する)

「<C-r>=」で代用できる。

sh

長めのコマンドを実行するときに使う。「:%!sh<CR>」とすると書いたシェルスクリプトを実行できる。

最近Bashの<C-x><C-e>で良い気がしてる。こちらだとヒストリで戻って<C-x><C-e>として再編集することもできるので。

column

簡単な整列をするのに使う。ビジュアルモード選択して「!column -t<CR>」とすると整列ができる。

(デフォルトのセパレータがスペース二つなので、一つにしたければ-oオプション指定して「!column -to' '<CR>」という風にする)

vim-easy-alignやvim-aligntaが入っているならそれでいいかも。

jq, xmllint, pup

それぞれJSONXMLHTMLを整形するのに使う。JSONは「:%!jq .<CR>」、XMLは「:%!xmllint --format -<CR>」、HTMLは「:%!pup<CR>」。

ただ「jq . <JSONファイル> | vim -」としていたりして、直接Vimの中で使ってない場合が多いかも。

awk

連番を振る時、重複行を削除する時、指定した列を抜き出す時、などなど、色々なことに使える。

それぞれ「:%!awk '{printf"\%-6d \%s\n",NR,$0}'<CR>」、「:%!awk '\!a[$0]++'<CR>」、「:%!awk '{print$2}'<CR>」といった風にする。

tee

保存するために管理者権限必要場合sudoと一緒に使う。「:%!sudo tee %<CR>」とすると保存できる。

編集中のテキストを何処かに残すため……と思ったけど:wで事足りる。

2016-07-03

Javaしかwebアプリ作ったことなかった俺がphp入門したんだけど

すげー楽でワロタ

つーかなんだよ、JSPって

なんだよ、ストラッツって

大体デプロイするのになんでwarの中に参照ライブラリ入れてくれないんだよ

なんでクラスファイル漏れることがあるんだよ

xml地獄ってなんだよ。

今は2016年だぞ。未来なんだぞ。いつまでもくだらねー仕事やらせんなや。もうJava案件やりたくねーんだよタコ。バーカバー

2016-06-11

初心者にはSaStrutsは難しすぎた

前回、JSP?を軽く勉強たから今回は、フレームワークを導入した。

とりあえずチュートリアルサンプルをimportした。

前回の教訓もあって、プロジェクトをimportしたあとプロジェクトのファセットから動的Webモジュールとして設定。

Warデプロイで動くかと思ったら

HTTPステータス 404 - /sa%dstruts%dtutorial/と文字化けっぽいエラー

困った。。。

プロジェクトのファセットの隣にランタイムってやつを発見Tomcatにチェックを入れてみたら

HTTPステータス 404 - /sa-dstruts-dtutorial/

文字化けが直った。

あとは、デプロイメントの記述子の設定を確認。ウェルカムページのweb.xmlが見当たらない…

プロジェクトの中にあるはずだけど、仕方ないから参照してるページにコピペ

Eclipseリフレッシュして、動かすと・・・

チュートリアルページきたああああああ!!!

Javaってのは難しい言語だ。なんで環境設定こんな複雑なんだろう

http://anond.hatelabo.jp/20160608115003

2016-05-29

富士通退職した話」に言及とついでに自分の話でも。

自分も前に富士通に居て既に退職してます。後で詳しく書くけど、ソフトウェア開発職に居たです。

富士通を退職した話

彼のへの感想

富士通はクソでっかい会社なんだし、サイト見ればメインフレームやってるのだって判るんだから、開発職を希望したらメインフレーム関連の開発やる可能性あるのは当然予見出来るだろうし、それを想像してなかったのなら情弱とかブコメで言われてしまうよね。あと何も記述が無いか想像だけど、「それほど有能ではない」と判断された可能性もある。と言っても学生が思う「開発者として有能かどうか」ってのと会社でのそれってのは別物で、要するに学生自身自分が実績もあって優秀だと思っても、会社的にはそうでないのよね。そうなると(後述の富士通入社して10年が経った人の話にもあるのだけど)新人能力客観的判断材料って大学資格応用情報レベル以上)程度なのよね。資格に関しても基本情報なんてMARCHクラス以上の人間なら受けたら取れて当然だから、「有能かどうか」の判断材料にならない。就活の際に本気でIT業界に入りたいかどうかの判断材料にはなる程度。自分の同世代富士通本体に入ってソフトウェア開発関連に配属された人のプロフィールを見たけど、確か偏差値的には少なくとも神戸大学とか千葉大学あたりの修士しか居なかった覚えがある。あと確か2~3人がソフ開持ってた気がする。だから、この増田がどの程度だったのかなと。

ただ、20人月案件が具体的に何かは判らないのだけど、自分の在籍していた当時でも炎上巨大案件というのはあって、(自分が知ってるのは確かデジタルテレビがどうのこうのとか言ってた)、そういうのに入社して間もなく入ってしまうと自身勉強等が出来なかったり潰されたり最悪死んだりするんで、そういう意味でも逃げるのは正解の一つ。(自分炎上案件に放り込まれ新人が寮で死んでたとか話を聞いたことある

上司対応はまあこれだけ見ればクソだわな。

富士通を退職して思うこと

はあ、としか。この人がこう判断した際の判断材料にするであろう自己体験を具体的に書いてないので、意識高い系がフカしてるようにしか見えない。あと、たった3年しか居なくてあの巨大企業経営とか体制とか理解出来るんかね?と思わないでもない。自分とは部署が違うだろうから当然かもしれないけど、自分体験とは違うなーって感じ。自分は、外から見たら馬鹿みたいな事やってるように見えるかもしれないけど、経緯や目的巨大企業特有問題があってそうなってるんだなって思う事が多々あった。

富士通に入社して10年が経った - blog

近い時期に入社したと思われる。具体的な話が自分経験と一致してる。特に富士通ソフトウェア開発と言えばミドルウェアの開発が主だというのは、富士通内部じゃないとなかなか(特に学生なんかじゃ)判らないかなと。

それでこれらの話を見てどんな人が富士通(というか大企業)に向くのかなと考えたんだけど、「やりたいこと」そこまで明確じゃないけどコンピュータは嫌いじゃないって感じで、地頭がまあまあ良くて勉強に関しても要領よくやれる(要するにそこそこの大学に行って卒業した人)、それでそこそこ安定した職・収入目当てな人かなと。ってコレ書いててふわふわしてる人みたいであまり良い印象の人物像じゃないな。マッチングミスはどうしても起きると思うし、学生の頃に思う「やりたい事」って往々にして変わったり間違いだったりするし、そもそも学生の頃に明確な「やりたい事」がある人の方が少数派でしょ。だからこういうそこそこ優秀だけどふわふわしてる人の方が良いんじゃないかなとか。逆に、ちゃんと「やりたい事」が明確にあるけどまあ安定はしたいって人はどうしたらいいのかって言うと、自分みたく大企業の子会社を狙うと良いんじゃないかなと。子会社ならその会社がやってる事が理解やすいし、入った後の配属の希望も大きく違ったものにはなりにくいし。まあ子会社子会社で色々アルかもしれないけど。

で、自分入社から退社までの話。

入社10年ぐらい前。入ったのは富士通の子会社で主にミドルウェアの開発をやっている所でした。入社して1~2年したら子会社の統廃合とのことで富士通本体連携してる部署自分がそうだった)は富士通本体になりますとのことで富士通本体の方に移ったという経緯ですね。別に待遇とか元々本体と同じだったから変わらず、事務関連が小回りきかなくなったぐらい。入社してから退職までは5年ぐらいでした。辞めた理由実家事業を継ぐ事にしたため。

入社して数ヶ月の時にある温泉地にある某所でその手の開発をやってる子会社沢山と

富士通本体ソフト開発配属の人達研修をやったのだけど、その際に富士通本体人達と知り合った。(この際に全員のプロフィール冊子が配られた)そのときは流石子会社に入る人達本体とじゃレベルが違うな~と思いましたね。(ちなみに自分MARCHより下の院卒。)

自分が配属されたのは某製品部署API部分チーム。その製品C言語Java言語からも使えるように出入り口を用意する部分。中でやってる事は指定されたIPポートプロトコルに沿ってデータ投げるだけなんだけどね。ちなみに配属希望の際は「そこそこの忙しさの所がイイ」と言っていました。「バリバリに働きたい」と言ってた同期は多忙ヤバい所に配属されてました。他にもチームがいくつかあったけど、それらのうちの一つは例の「山奥の工場」でしたね。自分が配属された当時はC言語APIリニューアルするって開発してたのだけど、設計担当Javaしかやったことない人で色々とC言語流儀に反してて後々のメンテが大変でした。まあそれでもリニューアル前よりは遙かに良くて、以前はユーザに見せてる関数名が ○○search1 ○○search2 ○○search3 とかでしたね(ちなみに機能はそれサーチか?思うのもあった)。もっと酷かったのが初期製品Javaの公開メソッドで、マニュアルには「このメソッド引数○○を□□を指定した場合戻り値Objectを△△にキャストしてください。××を指定場合は…」という「これ製品にして売ってたんだ…」と思うレベル。もちろんコレがダメだったってのは開発側も認識していて当時は既にリニューアル済みだったけど。リニューアル済みでも少し微妙だったけどね。

これは、ミドルウェアの開発をやってる人達って基本的C言語が主でJavaとかをやってる人がほぼ居なかったからだと思う。上司もそういうのは良くないってのは認識してた。対象OSWindowsLinuxSolarisだったけど、そんなにたいした事やってなかったからほぼ同じコードだったような。ソケットの一部だけ違ってたっけかな。

それでそのバージョンの開発が終わったあたりで、.NET Frameworkが出始めてきたので次バージョンでは.NET FrameworkAPIを作る事になりまして、自分が少し勉強していたのでそれの設計から担当する事に。当時は.NET Framework 1.1で今思えば少し時期が早かったと思う。2.0Genericが出てからやった方が良かったと思うんだけど、そういうの政治的判断だし結果論だしなー。それまでにRubyとかオブジェクト指向言語に触れてその辺の勉強もしていたので、.NET用のAPIに関しては設計実装結構良い感じに出来たと思う。ああ、そういえばRuby用のAPI効率化の開発ツールとかの名目仕事中に勝手に作ってたなあ。他にもC言語APIも内部実装がクソすぎ!とキレてユーザ公開関数インターフェースだけ同じで中身をフルスクラッチした事も。もちろん絶対LDしてるんで完全に趣味なんだけどな。これでAPIC言語Java.NETになった訳だけど、現場案件で使われたのってほぼ全てJavaだったと思う。(開発中のサーバテストアプリC言語だけど)。要するに自分が数年関わったコードが世の中ではほぼ使われてない訳でして、取りそろえとして必要だったとはいえ世の中の役に立ってないってのは嬉しくは無かったですね。まあ、大企業仕事なんてそういうもんです。.NETに関してはそのバージョンが出る頃はその製品があまり売れてなかったんだか使われたって話は聞かなかったですね。ほほほ。大企業に勤めるのならこういう覚悟必要かもね。

で、.NETAPIが出来たあたりに開発ネタがなくなって保守気味になってきたので、人員整理作業整理との事でインストーラと切りたいけど一度やったからには切れない補助製品担当が増える事に。インストーラWindowsがInstallShieldというクソみたいな言語上で作られたものLinuxSolarisシェルスクリプトのもので、InsallShieldの方のコードはあまりにクソなのでリファクタリングさせてもらった。この辺の開発は少なかったのだけど新OS対応(Vistaとか)とか保守作業が大変だった覚えある。

んで、これらの作業が終わったあたりでこの製品でやることが無くなってきたのと同時に、この製品派生製品の話が出てきてて、それは1機能1exeで提供されてて、それらを纏めるバッチ処理機能部分を担当することに。バッチ処理の内容・順番を記述するのにXMLを使う事になったのでXMLのパーサが必要なのだけど、色々調べたら富士通内部でパーサ作ってたのでそれをもらって使う事に。そのパーサはC++からじゃないと使えなかったのだけど、趣味C++勉強してたので何とかなった。あと、結構OSの知識(プロセスとか)が必要WindowsLinuxSolarisで動くコードを書く必要があってまあまあ大変でした(と言ってもifdefで切り分けるだけなんだけど)。けど、これらの開発は自分が一から設計してコードを書いていたので楽しかったですね。それでこれが完成するかしないかあたりで、このバッチ処理機能が他の開発中の製品バッチ処理に使えないかとか話が出てきたあたりで自分退職する事に。(退職の話は1年ぐらい前に話し合って決定済み)引き継ぎをして退職ということになりました。最後は溜まった有給を使う予定でまだ在籍中だけど部屋を引き払って実家に帰ってたのだけど、打ち合わせに来て欲しいって言われてしま実家から何日か通ったのは良い想い出。というかまさか実家から朝8時に間に合うとは思って無かった。

振り返ってみて残業時間は月40~60時間が多かったかな。100時間超えた時は上司に怒られた。あと退職前の1年ぐらいはうちの事業本部(だったかな?)単位残業禁止になってホント残業0時間になった時期があった。他の部署の人の話で、どう考えても狂ってる上司の話とかを聞いてると上司とかの運は良かったと思う。あと、やっぱり仕事でみっちりプログラミングが出来たのは運が良かったと思う。富士通ソフト開発で C C++ C# Java シェルスクリプト InstallShieldとか(そんなに深くはないけど)色々やれた人間はそうそう居ないんじゃないかな。同期とかの仕事は年上の人の派遣の人に指示出したり取り仕切ったりする仕事とか、保守サポートみたいな開発じゃない仕事の話も良く聞いていたので、ソフト開発のキモ体験出来たのは良かったです(こなみ)。

2016-04-26

anond:20160426145507 の続き

anond:20160426124418anond:20160426145507 の続きだゾ。てか長えよ

(略: トークンが定期的に期限切れになるので可用性が下がる。たとえばビデオカメラから複数動画アップロードしている途中で切れたらムキーってなる。再認証して途中からできるのもそれはそれで CSRF の温床。AFCP のような場合は期限切れがあってはならないので、パスワード等を預かる認証プロキシSaaS アプリを筆者は作った。好評だったが、これはもちろん本来あるべきでない欠陥のexploitのはず。)

(略: 個人ユーザ向けのAPI設計ばかりで、雇用者上司アカウント管理するという観点がない。SAMLでは普通にできるのに、OAuthとなるとセキュリティ的に云々と言って拒むサービスばかり。別のUIで既にできてることをAPIにしても意味がない。これまでできなかったことをAPIで可能にするのではなく、単なるシングルサインオンでよければ他にある。実際Googleは個人向けにはOAuth活用しているが、Google Apps for BusinessはOAuth以外のシステムを使っている。)

(略: 主要な設計ミスは、外部サービスすべてを同等に疑うところ。管理者が各サービスの信用性を判断して権限を調節できるようにしないところ。これまでどれほど多くの製品OAuthの面倒さのために失敗してきたことか。)

普通実装における」OAuth代替

適切な OAuth ベース設計とはどのようなもの

ここまでで「普通実装における」OAuth がまったくおかしいということはわかりましたが、OAuth が実際うまくいくのはどういうときでしょうか。

初期の OAuth 規格および概念におおよそ付き従っているシステム一般的に言って、新しい規格ベースのよりもセキュアで、マシです。OAuth 1.0 の実装がすべてセキュアだというのではありませんが、たいてい問題は少ないです。こうしたシステムは通常、次のふたつのアプローチのどちらかに従っています:

はいえ、このように設計されている OAuth ベースシステムはごくごく希少で、しか一般的にこうしたシステムは、他のところで使われている OAuth とは似ても似つかぬものです。OAuth 1.0 規格の方に寄って頑張っていますが、公式には 1.0 は非推奨ですから、こうしたアプローチを使っているシステムはそのうち「アップデート」されて OAuth 2.0概念や追加機能すべてを加えて再構築され、セキュリティユーザビリティをだめにしてしまうことになります。これこそ筆者があらゆる OAuth ベースのものを見逃したくない理由です。もっと古く、もっと機能的な形式OAuth を使っていても、システムに「改善」が必要だという素敵な考えを管理者のだれかが閃いて台無しにしてしまうからです。ご迷惑をおかけしてすみませんと言うぐらいなら、まったく別のものを使うほうが良いですよね。

他の選択肢

他に手はないかと探すとき、人々はよく他の「フレームワーク」にはどんなものがあるかを知ろうとします。しかし、考え抜かれたセキュアな設計を実現するためには必ずしもフレームワーク必要というわけではありません。現状、OAuth とはどのようなものかについての意見サービスごとに異なっていますので、承認の具体的な動作の仕組みもまったく一定ではありません。そんな中でフレームワークを探しまわるのは、簡単にできることをいたずらに複雑化しているだけのことが多いです。唯一ほんとうに難しい要素、しっかりした規格の必要な要素は、使用する鍵パラメータ改竄を防ぐため変数署名する方法だけであり、この点に関して、ほとんどの OAuth ベース実装は一切何もしてくれません。

ウェブサービスの最大手である Amazon は、世界中企業サービス提供する一流プロバイダで、合計 30% 以上という途方もない市場シェア他者を圧倒していますAmazonアプローチは、自分アプリ認証情報を生成できるコントロールパネルへのアクセスを、すべてのアカウントおよびアカウント管理者提供することです。この認証情報で、どの Amazon サービス作業できるか、そのサービスでどの操作を実行できるか、どの権限作業しなければいけないかを指定できます。この認証情報必要に応じて「アカウントホルダ」の人が破棄することもできます

AmazonAPI における認証承認技術には、本質的制限が多く潜在的危険性のあるリダイレクトを一切必要しません。Amazonプロトコル認証情報は、直接送ることは一切なく、データ署名に使うのであって、これでブラウザを通してパラメータを送る必要のあるときにも改竄不可能にすることができるのです。

Amazon設計アカウントの利用状況を API の利用まで適切に把握できますし、API認証承認もすべて Amazonからスタートし、その際のアプリ認証情報も「Amazon の」コントロールパネルから生成されます。この認証情報はその後、いかなるトークン交換システムも使わず直接 API プロセスで使われます。この設計なら「普通実装における」OAuth が達成している真のセキュリティ目標をすべて達成し、かつ前述したセキュリティ上およびユーザビリティ上の問題をすべて回避しています

ひとつ言及せざるをえない短所は、Amazon権限システムが幾分わかりにくく、あまりユーザに優しくないということです。ただし、このことは何故かほとんどのコントロールパネルにも言えることで、いずれにせよ UI 設計問題であって、承認プロセス自体の失点ではありません。さらに、Amazonコントロールパネルはかなりキビキビ使えて、それ自体API でも使えます。この点たとえば Google場合のように、筆者の知る限りメタ API もなく、何をするにも何十もの手順が必要なのとは大違いです。

Amazon認証および承認メソッドは他のサービスプロバイダにも幾つかコピーされていますGoogle 自身企業向け製品の一部でこれを利用できるようにしていますGoogle 自身純粋OAuth 設計企業サービスに向いていないことを認めており、企業サービスには JSON Web Tokens (JWT) の利用を推奨しています

JWT はサービス間の SSOAPI 利用を可能にする規格です。多くの点で JWT は SAML に似ていますが、SAML はややこしくて、XML Security (名前と違って、まったくセキュアではない) の上に構築され、API 利用に向いていないのに比べ、JWT は SAML の主要な目標を、単純かつ使いやす方法で一切の面倒なく達成しています。HMAC 実装ひとつ用意し、JSON の構築と解析の方法を知っておけば JWT は使えます既製品をお求めでしたら、膨大な JWT ライブラリが既に存在していますよ。

ただ Google場合典型的な JWT 利用法よりも高度で、HMAC のかわりに、もっと高度ですがこの分野では人気の低い RSA デジタル署名を利用するよう要求していますGoogleコントロールパネルではアカウント管理者自分企業サービス用に新しい鍵ペアを生成でき、API ログイン署名するために使う秘密鍵ダウンロードできます。こちらのほうが HMAC よりセキュリティは高いですが、Googleプロセス全体を本当に無駄に複雑化していますコントロールパネルしょっちゅう完全に再設計して、前と同じことをしたいのに使い方が違っていて混乱する点は言うまでもありません。JWT 利用の実例必要なら他をあたるようお勧めします。

他に使われている技術は、サードパーティがどんな権限必要としているかをある種の XMLJSON ファイル定義してウェブサイト送信できるようにするサービスのものです。ユーザがあるページを自分アカウント訪問し、ファイルURL (あるいは中身) をそこに貼り付けると、その外部サービスあるいはアプリが求めている権限の一覧やそこに含まれ説明などが表示されるようになっています。それを見て認可したいと思うユーザは、認証情報を生成してそのサードパーティアプリあるいはサービスに貼り付けますユーザは後で無効にしたくなったら認証情報を破棄することができます。これも、開発者おかし負担を強いることなく、すべてのアカウントAPI サービスがあり、権限管理を備え、サービス自体からフローが始まる、実にセキュアな設計です。

承認管理のためにサービスから提供してもらう必要が本当にあるのは、適切な役職 (管理者アカウント所有者など) を持つユーザ自分に割り当てられた権限や (望むなら) 期限を持つ認証情報API 利用のために生成できる何らかのパネルだけです。こうした認証情報はその後、お好みのセキュアな認証システムを通して利用することができます。たとえば HTTP Basic Authentication over HTTPS のような単純なもの、これは事実上どの HTTP ライブラリにも入っていますし、HTTP Digest Authentication、これはもっとセキュアでありながらほとんどの良質なライブラリサポートされていますし、その他 HMAC, RSA, 楕円関数など認証情報ネットに通す必要のない暗号学的テクノロジー活用した認証プログラムに基づくものなら何でも使えます特に HMAC は、承認認証実装するほとんどすべての人 (Amazon や、一部の OAuth 実装も含む) によって既に使われています

こういった種々の実績あるテクニックは、セキュアなプラットフォームを作るために CSRF 対策など複数フレームワーク同士の相性を勉強する必要があるという重荷を軽くしてくれますし、一般的に、既存アーキテクチャワンタッチで装着できるようなモジュール化の実装が可能です。ユーザアプリ認証情報が盗まれる可能性をなくしてくれます。ややこしい CSPRNG を常に使用する必要もありません。このようなシステムOAuth の生まれるずっと前から存在しており、現在でも一般的です。OAuth は、ユーザ認証情報要求したり他に弱点があったりするような一部の劣悪な設計システムよりはセキュリティが良いかもしれませんが、既にある真の設計を置き換えるものではありません。OAuth が解決すると主張する問題点は実のところ、既存の良く設計されたシステムには存在していませんし、「普通実装における」OAuth は実のところ、解決すると主張する問題の多くを招き入れるばかりか、最初存在していなかった問題まで生じさせています宣伝文句と違って、OAuth にすれば自然と驚くほどセキュアになるというわけではなく、むしろ数々の短所実装の困難さを考えれば、他の考え抜かれた選択肢のほうがはるかに優れています

これからサービス設計をして API アクセス提供することになっている方はどうか、ご自分が実現しようとなさっているのが何なのかを本当に考えてください。他の人がやっていることをコピーするだけで済ませたり宣伝を丸呑みしたりしないでください。どうしてもコピーしなければいけないなら、Amazon (これが最善です) や Rackspace, IBM SoftLayer, Linode, VULTR, Zoho, Zoom ほか、API の素直で健全認証システムを構築する方法について現時点で多少なりとも理解のあるところをコピーするようにしてください。

2016 年 4月 Insane Coder

http://no-oauth.insanecoding.org/

2016-03-04

window.OBR = window.OBR||{};(function(OBR){window.OB_releaseVer="01000501";window.OBR=window.OBR||{};OBR.k=OBR.k||;OBR.La=OBR.La||{};window.OBR$=function(d){return document.getElementById(d)};OBR.d=OBR.d||function(){var d={},a={v:function(){return d},h:function(a){d.X=a;d.cb=;d.startTime=(new Date).getTime()},startTime:function(){return d.startTime},log:function(a){var e=((new Date).getTime()-d.startTime)/1E3;1E3>d.cb.length&amp;&amp;d.cb.push(e+" >"+a)},printLog:function(){if(d.X.c.dj)window.console.log(d.cb.join("\n"));else{var a=d.X.b.Ia();a&amp;&amp;(a.innerHTML=d.cb.join("
"),a.style.display="block")}return d.cb.join("\n")}};a.h(OBR);return a}();OBR.printLog=OBR.d.printLog;OBR.H=function(){this.J=[]};OBR.H.prototype.add=function(d,a){var c;"string"===typeof d&amp;&amp;"function"===typeof a&amp;&amp;(c={},c.name=d,c.ai=a,this.J.push(c))};OBR.H.prototype.Qf=function(d){var a,c;OBR.d.log("remove event :"+d);a=0;for(c=this.J.length;a<c;a+=1)if(this.J[a]&amp;&amp;this.J[a].name&amp;&amp;this.J[a].name===d)try{this.J.splice(a,1)}catch(e){OBR.d.log("rm evnt err: "+e)}};</p&gt;

OBR.H.prototype.o=function(d,a,c){var e,b,f,g;a=a||[];c=!!c;OBR.d.log("event fire:"+d);e=0;for(b=this.J.length;e<b;e+=1)if(f=this.J&amp;&amp;this.J[e]?this.J[e].name:"",g=this.J&amp;&amp;this.J[e]?this.J[e].ai:null,f===d&amp;&g)try{g.apply(this,a)}catch(h){OBR.d.log("fire event *"+d+"* error: "+h)}!0===c&amp;&amp;this.Qf(d)};OBR.H.prototype.sa=function(){this.J=[]};OBR.b=OBR.b||function(){var d={},a={},c=document,e=OBR,b=null;a.v=function(){d.X=e;return d};a.h=function(a){e=a};a.Ba=function(){return function(){}};a.Gi=function(){var a=window.jQuery;return void 0!==a?!(/1\.(0|1|2|3|4)\.(0|1)/.test(a.fn.jquery)||/^1\.1/.test(a.fn.jquery)||/^1\.2/.test(a.fn.jquery)||/^1\.3/.test(a.fn.jquery)):!1};a.F=function(a){return null===a||isNaN(a)?null:e.n("outbrain_widget_"+a)};a.Ia=function(){return e.n("ob_holder")};a.ne=function(f){var g=a.Ia();null===g&amp;&amp;(g=e.b.createElement("div",</p&gt;

"ob_holder"),g.style.display="none",f?e.b.insertBefore(g,f):document.body.appendChild(g));return g};a.Vc=function(){if(!e.n(e.c.Pb)){var f=e.b.createElement("iframe",e.c.Pb),g=f.style;g.display="none";g.width="1px";g.height="1px";f.src="about:blank";(g=a.Ia())||(g=a.Va());e.b.Q(f,g)}};a.Va=function(){if(c.body)return c.body;var a;a=e.b.K("","","body",!0);return 0>=a.length?c.lastChild:a[0]};a.createElement=function(a,g,b,e){var d;a=c.createElement(a);"string"===typeof g&amp;&amp;a.setAttribute("id",g);"string"===

typeof b&amp;&amp;(a.style.cssText=b);for(d in e)e.hasOwnProperty(d)&amp;&amp;a.setAttribute(d,e[d]);return a};a.G=function(a){if(e.c.$d===e.c.Od)try{c.createStyleSheet().cssText=a}catch(g){OBR.d.log(g)}else{var b=c.createElement("style"),d=c.body?"string"===typeof c.body.style.WebkitAppearance:!1;b.type="text/css";c.getElementsByTagName("head")[0].appendChild(b);b[d?"innerText":"innerHTML"]=a}};a.N=function(a,g,b,d){var m=c.createElement("script");m.type=e.c.wj;m.src=a;m.charset="UTF-8";m.async=!!g;m.defer=!1;b&amp;&amp;

e.b.s(m,"load",function(a){var f=a.target;f&amp;&amp;setTimeout(function(){f.parentNode.removeChild(f)},3E3)});d&amp;&amp;e.b.s(m,"load",d);return m};a.Cl=function(a,g){var b=e.b.createElement("link",a);b.setAttribute("rel","stylesheet");b.setAttribute("type",e.c.Eh);g&amp;&amp;b.setAttribute("href",g);return b};a.ih=function(a){var g=e.n("ob_iframe");g&amp;&amp;(g.src=a)};a.Hf=function(){var a;a=isNaN(a)?1E5:a;return Math.floor(Math.random()*a)};a.nk=function(a,g,b){return a.replace(g,b)};a.Ll=function(){var f;if(f=OBR.n("objsonpp"))if(a.kj())a.Ka(f.parentNode)&amp;&amp;

f.parentNode.removeChild(f);else return OBR.n("objsonpp");f=c.createElement("iframe");f.id="objsonpp";f.tk&amp;&amp;(f.tk="seamless");(f.frameElement||f).style.cssText="width: 0; height: 0; border: 0";f.src="";c.body.appendChild(f);return f};a.R=function(a){var g,b;b=c.getElementsByTagName("head");try{b&amp;&amp;0<b.length?b[0].insertBefore(a,b[0].firstChild):(g=c.getElementsByTagName("script"),g[0].insertBefore(a,g[0].firstChild))}catch(d){e.d.log("Err insertToHead:"+d)}};a.Kl=function(a){a=a||OBR;return"function"!==</p&gt;

typeof a.H?(OBR.d.log("namespace.EventManager not function"),null):new a.H};a.O=function(a){return encodeURIComponent(a)};a.Ka=function(a){return null!==a};a.pj=function(f){var b,c=!1;if(a.Zc(f))return!1;b=f.Oe().recMode||"";f=f.Oe().dynamicWidgetLayout||"";b=e.c.rk[b]||"";"2"===b&amp;&amp;"1"===(e.c.sk[f]||"")&amp;&amp;(c=!0);c||"1"!==b&amp;&amp;"3"!==b||(c=!0);return c};a.Zc=function(a){return void 0===a||null===a};a.tj=function(b){return a.Zc(b)||""===b};a.getElementsByClassName=function(b,g){g||(g=document);return g.getElementsByClassName?

g.getElementsByClassName(b):a.K("class",b,"*",!0,!0,g)};a.K=function(b,g,e,d,m,l){var p,q,n;p=[];e=e||"*";d=!!d;m=!!a.tj(m);e=l?l.getElementsByTagName(e):c.getElementsByTagName(e);l=0;for(q=e.length;l<q;l+=1)n="class"===b?e[l].className:e[l].getAttribute(b),null!==n&amp;&amp;(!1===m&amp;&amp;(n=n.toLowerCase(),g=g.toLowerCase()),(n=""===b?!0:d?-1<n.indexOf(g):n===g)&amp;&amp;p.push(e[l]));return p};a.Wb=function(a,b,c){a.detachEvent?a.detachEvent("on"+b,c):a.removeEventListener&amp;&amp;a.removeEventListener(b,c,!1)};a.s=function(a,</p&gt;

b,c){a.attachEvent?a.attachEvent("on"+b,function(){c.call(a)}):a.addEventListener&amp;&amp;a.addEventListener(b,c,!1)};a.Q=function(a,b){try{b.appendChild(a)}catch(c){e.d.log("Fail insert into Dom:"+c)}};a.lb=function(b){b=e.n(b);!a.Zc(b)&amp;&amp;a.Ka(b.parentNode)&amp;&amp;b.parentNode.removeChild(b)};a.insertBefore=function(a,b){return b.parentNode.insertBefore(a,b)};a.isArray=function(a){return a instanceof Array?!0:"[object Array]"===Object.prototype.toString.call(a)};a.sb=function(a,b){var c=/htt(p|ps)?:\/\/127\.0\.0\.1(:\d\d\d\d)?/i;

return/^htt(p|ps)?:\/\/([\w\-]*|[\w\-]*\.[\w\-]*)\.outbrain\.com(:\d\d\d\d)?/i.test(a)||c.test(a)?a:b};a.al=function(a){a=a.replace(/^(\s*)/g,"");var b=c.createElement("div");b.innerHTML=a;return b.childNodes};a.Ua=function(a,b){return a?a.getAttribute(b):null};a.xa=function(a,b,c){a&amp;&amp;a.setAttribute(b,c)};a.I=function(a,b){var c=RegExp("[ '\"|]"+b+"[ '\"|]");a&amp;&amp;!c.test("|"+a.className+"|")&amp;&amp;(a.className+=" "+b)};a.ma=function(a,b){a&amp;&amp;typeof b===e.c.$k&amp;&amp;(a.classList?a.classList.remove(b):a.className=

a.className.replace(RegExp("(^|\\b)"+b+"(\\b|$)","gi")," "))};a.$=function(a,b){a=a.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var c,e;try{return c=RegExp("[\\?&amp;]"+a+"=([^&amp;#]*)","i"),e=c.exec(decodeURIComponent(window.location.href.replace(/\+/g," "))),null===e?b:e[1]}catch(d){return b}};a.sh=function(a){"string"===typeof a&amp;&amp;0<a.indexOf("#")&amp;&amp;(a=a.substr(0,a.lastIndexOf("#")));return a};a.ie=function(a){var b=e.c.ga+"/strip_default.png";a.src!==b&amp;&amp;(a.alt="",a.title="",a.src=b)};a.Oh=function(){var a=</p&gt;

null,b,e,d=null;if("string"===typeof window.OB_MP_feed)a=window.OB_MP_feed;else if((b=c.getElementsByTagName("head"))&amp;&amp;0<b.length)for(e=b[0].getElementsByTagName("link"),b=0;b<e.length;b+=1)if(d=e[b],null!==d.type&amp;&amp;("application/rss+xml"===d.type||"application/atom+xml"===d.type)&amp;&amp;null!==d.href&amp;&amp;""!==d.href){a=d.href;break}return a};a.D=function(a,b){var c=null;a.currentStyle?c=a.currentStyle[b]:window.getComputedStyle&amp;&amp;(c=document.defaultView.getComputedStyle(a,null).getPropertyValue(b));return c};</p&gt;

a.xk=function(){var b=a.Ia(),g,c;a.Ka(b)&amp;&amp;(g=e.b.createElement("span","ob_a"),a.insertBefore(g,b),g.innerHTML=".",c=a.D(g,"color"),a.lb("ob_a"),g=e.b.createElement("a","ob_a"),g.setAttribute("href","void(0)"),g.innerHTML=".",a.insertBefore(g,b),b=a.D(g,"color"),a.lb("ob_a"),c="rgb(0, 0, 0)"===c||"#000000"===c?"#555":c,a.G(".ob-tcolor{color:"+c+"} .ob-lcolor{color:"+b+"} .ob-bgtcolor{background-color:"+c+"} .item-link-container:hover .ob-tcolor{border-color:"+c+"} "+(document.addEventListener?"":".odb_li:hover .ob-zapping-icon,.odb_div:hover .ob-zapping-icon,.item-container:hover .ob-zapping-icon,.ob-dynamic-rec-container:hover .ob-zapping-icon,.odb_li:hover .ob-textual-zapping-icon,.odb_div:hover .ob-textual-zapping-icon,.item-container:hover .ob-textual-zapping-icon,.ob-dynamic-rec-container:hover .ob-textual-zapping-icon{display:none !important;}")))};

a.Ke=function(b){var g=a.Ie("property","og:url","meta","content");null===g&amp;&amp;(g=a.Ie("rel","canonical","link","href"));null!==g||b||(g=window.location.href);null===g&amp;&amp;(g="");return g};a.Ie=function(b,g,c,e){var d=null;b=a.K(b,g,c,!1);null!==b&amp;&amp;0<b.length&amp;&amp;(d=b[0].getAttribute(e));return d};a.jh=function(b){var g,c,d;g=b.g("tracking",!1);c=b.g("comScoreEnabled",!0);d=e.c.je;!1===g&amp;&amp;(!0===c&amp;&amp;!1===d&amp;&amp;!b.Pe())&amp;&amp;(a.Vc(),g=b.q("pid",""),b=e.n(e.c.Pb))&amp;&amp;(b.src=e.c.ga+"/"+e.c.Ub+"3rd/comScore/comScore.htm#pid="+</p&gt;

g,e.c.je=!0)};a.Ei=function(){var b=a.Lb(8);"string"===typeof window.name&amp;&amp;(""===window.name||-1<window.name.indexOf("frame"))?(window.name=b,b=window.name):"string"===typeof window.name&amp;&amp;""!==window.name&amp;&amp;(b=window.name);return b=e.b.O(b.substring(0,9))};a.Lb=function(a){var b,c;b=[];a="number"===typeof a?a:8;for(c=0;c<a;c+=1)b.push("0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".charAt(Math.floor(61*Math.random())));return b.join("")};a.me=function(a){for(var b="",c=0;c<a.length;c++)b=</p&gt;

b.concat(a[c]?"1":"0");return parseInt(b,2)};a.Xc=function(b){var g=b.getElementsByTagName("a")[0];if(null===b.offsetParent||0===b.offsetHeight||0===b.offsetWidth||0===b.clientHeight||0===b.clientWidth||"none"===a.D(b,"display")||"hidden"===a.D(b,"visibility"))return!1;var c=parseInt(a.D(b,"padding-top"),10)+parseInt(a.D(b,"padding-bottom"),10);return 0===b.clientHeight-c||g&amp;&amp;"none"===a.D(g,"display")?!1:!0};a.Oc=function(a){for(var b in e.La)if(e.La.hasOwnProperty(b)&amp;&amp;e.La[b].l===a)return e.La[b];

return null};a.Rl=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0};a.Ga=function(a,b){return"function"!==typeof a?null:void 0===b?a():a(b)};a.kj=function(){return"Microsoft Internet Explorer"===navigator.appName};a.Fh=function(a,b){return a*b};a.Ge=function(a){if(!a||""===a)return[];a=a.replace("","").replace("http://","").replace("https://","").replace("www.","").replace("www2.","").split("/");a.pop();return 0<a.length?a:[]};a.ki=function(b,g){var c=a.Ge(b),e=[],d="";if(g>=c.length)d=

c.join(".");else{e[0]=c[0];for(d=1;d<=g;d+=1)e[d]=c[d];d=e.join(".")}return d};a.ti=function(){return"http"+("https:"===c.location.protocol?"s":"")};a.si=function(){var b,g;b=c.getElementById("widgetVersionSync");null===b&amp;&amp;(b=a.createElement("iframe","widgetVersionSync"),g=a.createElement("div",null,"display:none; height:0px; width:0px; border:none;"),g.appendChild(b),a.Va().appendChild(g));return b};a.ql=function(b){var g;g=window.OB_releaseVer;isNaN(g)||(isNaN(b)||g>=b)||(b=a.ti()+"://widgets.outbrain.com/external/sync/outbrainjs.html?needToBeVer="+

b.toString(),g=a.si(),g.src=b)};a.Sg=function(b){b=b.g("widgetVersionSync",0);isNaN(b)||""===b||(b=parseInt(b,10)||0,a.ql(b))};d.Rc=function(){if(b)return b;var a;try{var g=window.localStorage;g.setItem("OBtst","");g.removeItem("OBtst");a=g}catch(c){a={$b:{},setItem:function(a,b){this.$b[a]=b},removeItem:function(a){this.$b[a]=void 0},getItem:function(a){return"undefined"!==typeof this.$b[a]?this.$b[a]:null}}}return b=a};a.hg=function(a,b){d.Rc().setItem(a,b)};a.Qc=function(a){return(a=d.Rc().getItem(a))?

a:null};a.Gh=function(){d.Rc().removeItem("OB-USER-TOKEN")};a.h(OBR);return a}();OBR.ya=function(d,a,c,e,b,f,g,h,k){var m,l;m=this;l=0;k="function"===typeof k?k:OBR.b.Fh;m.start=function(){var p;l+=1;OBR.b.Ga(d,l)?OBR.b.Ga(a,l):(p=OBR.b.Ga(h,l))?OBR.b.Ga(e,l):(p=l===f&amp;&amp;1E3!==f)?OBR.b.Ga(e,l):(OBR.b.Ga(c,l),p=g?k(l,b):b,setTimeout(function(){m.start()},p))};m.start()};OBR.re=OBR.re||{fj:function(){return"complete"===document.readyState}};

OBR.Hc=function(){var d={},a=[];d.add=function(c){a.push(c)};d.remove=function(c){a.splice(c,1)};d.top=function(){return 0<a.length?a.shift():null};d.jj=function(){return 0>=a.length};d.Jl=function(){return a};d.qh=function(){a=[]};return d};

OBR.Ra=function(){function d(e,b){a.pb="resolve"===e?function(a){a&amp;&amp;a(b)}:function(a,g){g&amp;&g(b)};a.Pa=a.kk=function(){throw Error("Promise already completed.");};for(var f,g=0;f=c[g++];)f[e]&amp;&amp;f[e](b);delete c}var a={},c=[];a.pb=function(a,b){c.push({resolve:a,reject:b})};a.Pa=function(a){d("resolve",a)};a.kk=function(a){d("reject",a)};return a};

OBR.Ag=function(d){var a={},c=null,e,b;a.onClickOrAutoplay=void 0;a.onDisplayReady=void 0;a.onError=void 0;a.fetch=function(a){null===c?(c=a,b&amp;&amp;b(c,this),b=null):(c=a,OBR.Ja.of([this]))};a.shown=function(a){e=a;OBR.Ja&amp;&amp;OBR.Ja.pl(d.widgetId,d.playerId,e)};a.stopTimer=function(){if(this.tg){window.clearInterval(this.tg);var a=document.querySelector('[data-ob-player-id="'+d.playerId+'"] .timerNumber');a&amp;&amp;(a.textContent=a.parentElement.getAttribute("data-time"))}};a.placed=function(){OBR.Ja.ol(d.playerId)};

a.uj=function(a){b=a;c&amp;&amp;b(c,this)};a.Ue=function(){return d};a.Hl=function(){return e};a.Nl=function(){return d.when};return a};OBR.Fg=function(){var d={},a="00.000",c=null,e=null,b=0;d.start=function(){null===c&amp;&amp;(c=new Date);null!==e&amp;&amp;(b+=new Date-e)};d.stop=function(){var f=new Date(new Date-c-b),g=f.getUTCSeconds(),f=f.getUTCMilliseconds();e=new Date;return a=(9<g?g:"0"+g)+"."+(99<f?f:9<f?"0"+f:"00"+f)};return d};</p&gt;

OBR.rd=OBR.rd||function(){function d(){var a=window;a.googletag=a.googletag||{};a.googletag.cmd=a.googletag.cmd||[]}function a(a,g,c,e){var d=window;d.$revee&amp;&amp;d.googletag.cmd.push(function(){d.$revee.track({obpid:a,obsid:g,obdid:c,obpu:e});b.d.log("revee fire:"+e);b.d.log("revee fire id:"+c)})}var c={},e=!0,b;c.h=function(a){b=a;c.cc={}};c.Yb=function(f){if(f&amp;&amp;!1!==f.g("activateRevee",!1)){d();var g=f.q("pid",0),h=f.q("sid",0),k=f.q("did",0),m=f.ka();e||c.cc[k]?e&amp;&amp;(e=!1,f=b.b.N(b.c.U+"rva.outbrain.com/analytics-v1.js",

!0,!0,function(){m=document.location.href;a(g,h,k,m)}),b.b.R(f)):a(g,h,k,m);c.cc[k]||(c.cc[k]=!0)}};c.B=function(){e=!0;c.cc={}};c.h(OBR);return c}();OBR.c=OBR.c||function(){var d={},a={},c=OBR,e;a.Cg="opera";a.Od="msie";a.zg="firefox";a.xg="chrome";a.Eg="safari";a.Bg="mozilla";a.Al="boolean";a.$k="string";a.Vl="object";a.gl="undefined";a.Ul="number";a.Pb="ob_iframe";a.$e=!0;a.Ff=0;a.ec="outbrain_widget_";a.wj="text/javascript";a.Eh="このエントリーをはてなブックマークに追加ツイートシェア

2015-12-30

Excelが最強格闘技である

今、ちょうどExcelを使っている所でこれを書いている。

何故書いているかというと、XMLデータインポートを待っているからだ。

若い時は、Excelで全てをこなそうとする日系企業、はたまたドメ会社を心の底からバカにしていたのだが、年月が経ち、結果としてExcel最強説を私めが、提唱させていただきたい。

Excelが嫌いだった理由は、1 ダサい 2 ダサい 3 ダサい 4 経理じゃないんだから 5 これだけ洗練された仕組みがあるのにExcel使ってるの? 6 ダサい 7 重い

…などなどの理由である

昔の自分へ、反駁を試みたい。

Excelの素晴らしい所

・大抵の会社と人が使っている (若しくは互換性のある仕組みを使っている)

大学研究室であれば、実験的なものを使うことでもよかろう。しか社会はそうなっていないのだ。近所の八百屋も取り敢えず使い方は分からないまでも、Excelが入っているものなのだ

これは大きい。

逆に言うと、これだけ日本で浸透しているからこそ、ダサいとも言えるのだが。

Excel方眼紙

よくExcel方眼紙否定論者を見かける。こういう奴らは、Excel方眼紙の利点を理解していない。Wordでやってみろ。計算スムースに出来ないではないか。結果Excelで良いのである

・もはや表計算ソフトではなく、Officeのものである

Excel否定論者は、否定したいがあまり過去Excelイメージしか持っていない。実際長いこと使っていると、Excel表計算ではなく簡易的なデータベースとして大きく進化していたり、フォーマットの違うファイルを取り敢えず一回Excelに入れて吐き出しをさせるなど、文字列の扱いが遥かに得意になっていることに驚きを禁じ得ない。

VBAや数式など

以前はマクロ信者をただの狂信者だと思っていた。今でも一部はそうである。なぜならマクロ信者や数式教徒は、可読性を一切考えないオナニーしかしないからである

しかし中級程度まで熟達すると、多くのオフィスワーカーを不要にしてしまうすぐれものである

そろそろ30M程度のXML直感的に操作するためにインポートも終わる。もちろんこれだけ言ってもExcelダサいダサいがゆえに枯れている素晴らしい仕組みなのである

#加筆

しかし、逆に汎用的なツールになってきた事で、かなり重くなりつつあり、複雑な事をしないものGoogleスプレッドシート最近移管した。色々難しいもんである

2015-11-12

参考訳:拡散したJavaシリアル化の脆弱性についてApache Commons声明

原文:https://blogs.apache.org/foundation/entry/apache_commons_statement_to_widespread

原題Apache Commons statement to widespread Java object de-serialisation vulnerability

翻訳日:2015年11月12日(午後にタイトル日本語しました)

----

2015年11月1日 火曜日

Apache CommonsJavaオブジェクトのデシリアライゼーション脆弱性に関するステートメント

著者: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) 氏はWebSphereJBossJenkinsWebLogic、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]

コメント

OracleWeblogicセキュリティアラートを発行しています

http://www.oracle.com/technetwork/topics/security/alert-cve-2015-4852-2763333.html?evite=WWSU12091612MPP001

提供されている回避策は、T3プロトコルへのアクセス(とリバースプロキシーにおけるT3メソッドフィルタリング)です。

2015-11-04

一太郎ビューアが高性能

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)
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん