インテルCPU、リモート操作される脆弱性

GIGAZINEの記事

  • Intelのここ10年内に登場したCPUに潜むリモート操作される脆弱性。
  • この脆弱性はIntel Coreプロセッサーの第1世代から第7世代までで、Intel Active Management Technology(AMT)、Intel Standard Manageability(ISM)、Small Business TechnologyでIntel manageability firmwareのバージョンが6からの11.6のマシンに含まれており、権限を持たない攻撃者によるローカルやネットワーク経由の攻撃を許すものだ。
  • 脆弱性はコンシューマー向けPCでは存在しない。

(ttp://gigazine.net/news/20170502-intel-code-execution-bug/ Intelのここ10年内に登場したCPUに潜むリモート操作される脆弱性に緊急パッチがリリースされる - GIGAZINE)

 

上記の脆弱性の1つであるAMTは、システム管理者が組織および従業員が使用するマシンをリモートで制御するための管理機能です。AMTは多くのIntelチップに搭載されている「Management Engine(ME)」にインストールされた状態で出荷されますが、MEはユーザー側で管理することができないそうです。(←ビジネス向けPCに、ユーザー側で管理できない管理機能をCPUに載せるってw 従業員の情報が経営者に駄々漏れだw

(ttp://gigazine.net/news/20170515-intel-management-engine-security-hazard/ IntelのCPUのセキュリティ問題について電子フロンティア財団が指摘 - GIGAZINE)

 

AMDの廉価版CPUで良かった。ざまぁwww

数日前の記事でインテルのCPUでないためにエルモを動かせないことを明らかにした。これはまさにイソップ童話のすっぱい葡萄。

posted at 2017年05月15日 21:27 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

【Firefox】URL偽装対策でPunycodeの自動変換をOFFに

人間の目で見抜けないURL偽装がフィッシング詐欺に悪用される可能性、Firefoxでの対策はPunycodeの変換OFF

  • https://www.xn--80ak6aa92e.com/を開いたらURLがPunycode変換されてURL欄にhttps://www.аррӏе.com/と表示される。
  • このURL偽装は人間の目で見抜けない。
  • about:config>network.IDN_show_punycodeを初期設定値のfalseからtrueに変更すればPunycodeの自動変換がOFFになる。

(ttp://gigazine.net/news/20170418-fake-domain-homograph-attack/ 人間の目で見抜けないURL偽装がフィッシング詐欺に悪用される可能性、Firefoxでの対策はコレ - GIGAZINE 2017年04月18日)

Punycodeの自動変換をOFFにする欠点としては、日本語ドメイン名が「xn--xxxxx」と表示され日本語でURL欄に表示されなくなることだが、詐欺サイトにひっかかるよりマシ。

posted at 2017年04月19日 06:29 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

【Firefox】Ghostery 使えないアドオン

Styishに続いて使えないアドオンが増えた。メモ書き。

Dont use it anymore (今後使ってはならない)

A media cooperation from Germany (Burda) bought the rights from this add-on. So your privacy is clearly not secure anymore since the main income of this cooperation are user-data.

ドイツの企業(Burda)がこのアドオンから権利を購入した。 この企業の主な収入はユーザーデータであるため、プライバシーは明らかに安全ではない

So once again - if you dont want to be the product, dont use this piece of software...

(and of course shame on you developer!)

(ttps://addons.mozilla.org/ja/firefox/addon/ghostery/ Ghostery :: Add-ons for Firefox February 15, 2017)

posted at 2017年02月16日 01:44 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

【Firefox】プッシュ通知が出ないようにService Workerを無効化する方法

産経のプッシュ通知を受け取ると

about:debugging#workersの画面がこうなった。

登録解除を押すとService Workerが消え、産経のページを開いて産経のプッシュ通知を再び受け取ると、再びService Workerが登録された。

youtubeはページを開くと確認なしでService Workerを強制的に登録してくるので、産経はgoogleよりも良心的だと言える。

右端に切れて写ってないがある開始>デバッグを押すことで登録されたスクリプトを見れた。また、ttps://sankei.pushcrew.com/ffsw-pushcrew.jsを開くことでも同じスクリプトを見れた。このスクリプトはfetch(URL)という関数で定期的にhttps通信し、通知したいニュースがあったときに画面表示する?(謎)

筆者が勝手に予断すれば(正確でない可能性があるが)、Service Workerはサーバーからクライアントにオフラインでも動き続けるスクリプトを強制的に送り込むことができる新機能。

勝手に通信してスパイウェアになるかもしれない(ならないかもしれないけど疑念が残る)。

なので

about:configでdom.serviceWorkers.enabledをfalseにして再起動したらこうなった。

プッシュ通知以外のサービスも無効化してしまうのでやりすぎてしまったかもしれない。

なので

Service Workerを使った便利なサービスが出てきたら教えて下さいw

Service Workerを無効化してもyoutubeの動画を閲覧できた。それならgoogleはどんなスクリプトを送り込んで来たのだろうか? 登録されたスクリプトのttps://www.youtube.com/sw.jsはMinifyされており、fetch関数があるくらいしか分からなかった……

posted at 2017年02月08日 12:47 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

ブラウザ上でマーカーを引きながら効率的に読む方法

  1. ページナビゲーションのあるページは、FirefoxのアドオンuAutoPagerizeを使ってページを全部開く。ページを全部開けないページはこの記事の方法を参照してページを全部開く。
  2. 拙作のブックマークレット もしくは FireGesturesのスクリプトを使ってリンクを解除する。必須ではないが間違ってリンクをクリックするのが鬱陶しいので作った。
  3. FirefoxのアドオンTextMarker Goを使ってブラウザ上にマーカーを引きながら読む。範囲を選択してショートカットキーF9でマーカーを引ける。
  4. ズーム調整すると読みやすくなる。Ctrl-+(拡大)とCtrl--(縮小)がショートカットキー。 FirefoxのアドオンNoSquint Plusでサイトごとの拡大率を記憶させることができる。
  5. WordもしくはLibreOfficeのWriterにマーカーごと文章をコピペしファイルとして保存する。

以前の記事でWordもしくはLibreOfficeのWriterにコピペして文書を編集しながら読む方法を紹介していたが、読んだ後で保存したくならない記事もあり、この方法は気軽にマーカーを引けて良い。元のレイアウトや配色のまま読めるのも良い。

FireGesturesはFirefoxのアドオンである。FireGesturesのスクリプトはブックマークレットより無駄に高機能である。具体的にはフレーム内のリンクやイベントも解除する。<a>のhrefを削除すると:link擬似クラスが適用されなくなってリンクの配色が変わるページがあったので、hrefにvoid(0)を設定する機能も用意した。Mozilla Japan ブログで従来型アドオンのサポート終了が発表されて騒ぎになっており、せっかく作ったFireGesturesのスクリプトは2017年11月のFirefox 57リリースまでしか動かない。

ブックマークレットは、ブックマークのURL欄にスクリプトを記述して、開いてるページに対してスクリプトを動かすことができる機能を使ったのブックマークのことである。拙作のブックマークレットは、従来型アドオンのサポート終了以降も動く。

※ ブックマークレットが動かないように制限されているサイトでも動かしたい場合、about:config から security.csp.enable を false にして再起動すれば動く。(ttp://self.blog.so-net.ne.jp/2014-04-10 Firefoxのブックマークレットが使えないサイトがある)

 

コメントへの回答

  • アドオンのTextMarker Goにおいてページの再読み込みでマーカーが消えるのは仕様です。アドオンの競合ではなくシンプルな機能しかないアドオンなのです。テキストを選択してWord(リッチテキストエディター)にコピペして保存すればマーカーも保存できます。
  • ブックマークレットは新しいブックマークを作り空のURL欄にスクリプトをコピペすればいいでしょう。適用したいページにおいてブックマークレットを開くことで、そのページに対してURL欄に記入されたスクリプトが動きます。
posted at 2017年02月03日 16:48 | Comment(2) | パソコン | このブログの読者になる | 更新情報をチェックする

【uAutoPagerize】設定データの登録方法

uAutoPagerizeは、ページナビゲーションを自動的に行なってくれるFirefoxのアドオンである。「次のページへ」をクリックしなくて済むようになるのでウェブ閲覧が非常に捗る。

uAutoPagerizeの良い点は2つある。

  • ローカルファイルにページ送りの設定データを記述することができる。共有レポジトリを直接記述することに抵抗がある人が好きなだけ練習できる。
  • 他の人が使えるように、設定データを共有レポジトリに登録することができる。
それから、XPath Checkerを使えばXPathの記述法を簡単に学習することができる。筆者はXPath Checkerを使わないで始めたので苦労した。

※アドオンのユーザーレビューを見たら、「not e10s compatible and not working with Firefox for Android」と書いてあったので、uAutoPagerizeはパソコンでしか動かないかもしれない。

 

設定データ(SITEINFO)の登録方法

1. _uAutoPagerize.jsを準備する。

アドオン作者のページから_uAutoPagerize.jsのサンプルをダウンロードして、chromeフォルダに配置する。

firefoxのプロファイルフォルダはabout:supportをブラウザのURL欄にタイプして、プロファイルフォルダの「フォルダを開く」で開ける。firefoxのプロファイルフォルダに「chrome」という名前のフォルダを作成する必要がある。

_uAutoPagerize.jsの中身は画像のようになっている。MY_SITEINFOに{url(正規表現)、nextLink(XPath表現)、pageElement(XPath表現)}の設定データを記述すればいいことが読み取れる。

筆者は、EXCLUDEと入れ替えはしないと思ったのでEXCLUDE行を削除した。筆者はfalseにしたが、USE_MICROFORMATはtrueでもfalseでもどちらでもいいと思う。たぶん、MICROFORMATはclass="autopagerize_page_element"と書いてあるautopagerizeに対応したページ用の設定データを使うかどうかを示すフラグで、そんなページは存在しないと思う。

 

2. FirefoxにアドオンのXPath Checkerをインストールする。

アドオンXPath Checkerの場所はここ

XPathはCSSセレクタとは異なる文書要素の記述方法である。XPath Checkerを動かして慣れておこう。「ページ右クリック>View XPath(X)」で起動する。記述したXPathの結果がインタラクティブに表示されるのでXPathの記述法を非常に学習しやすい。

XPath Checkerに次のものをタイプして結果がどうなるかを試してみよう。

  • //a ←すべての<a> 。CSSセレクタの「a」。
  • //a[contains(.,"文字列")] ←innerTextが"文字列"を含む<a>。[]内が条件式になる。
  • //a/@class ←<a>のclass名を表示させる。
  • //a[@class="文字列"] ←<a class="文字列"> 。CSSセレクタの「a.文字列」。
  • //body/div ←<body>の子の<div>すべて。CSSセレクタの「body>div」。
  • //body//p ←<body>の子孫の<p>すべて。CSSセレクタの「body div」。
  • //body/* ←<body>の子要素すべて。CSSセレクタの「body>*」。
  • id("xxx") ←id="xxx"の文書要素。CSSセレクタの「#xxx」。
  • (//div)[last()] | (//p)[last()] ←最後の<div>と最後の<p>の和集合

次に共有レポジトリWedataをみてどのようなXPathが使われているかを見ることを勧める。

 

3. 対象のURLが共有レポジトリに既に登録されているか確認する。

共有レポジトリはここ(Wedataのデータベース:AutoPagerize)。URLの一部で検索し、登録状況を調べる。

  • 登録がない → 次へ進む。
  • 登録がある → 既にある登録データを修正するか新しく登録するかの判断が難しいが、基本的には既にある登録データに和集合(|)で付け足せば良いと思われる。

 

3. 設定データをローカルファイル(_uAutoPagerize.js)に記述して動作確認する。

firefoxで「ページを右クリック>要素を調査(Q)」を使えば文書要素のHTMLが見れる。これに加えてXPath Checkerを使えば、設定データを記述できるはず。

<設定データに必要な3要素>

  • url: urlの正規表現
  • nextLink: 次のページを示す<a>の文書要素のXPath表現
  • pageElement: ページに挿入される文書要素(複数可)のXPath表現

※pageElementの文書要素をどこに挿入するか記述していないが、記述しなくていい。何も指定しないとpageElementの文書要素の直後(最後の要素の後ろ)に挿入される。insertBeforeを指定してる設定データを見たことがない。

※nextLinkの文書要素が複数ある場合、一番最初の文書要素が使われる。(ttp://autopagerize.jottit.com/details_of_siteinfo_%28ja%29 AutoPagerize Wiki)

<正規表現の簡単な解説>(これくらいしか使わないはず)

  • ^ ←行の先頭。
  • . ←任意の1文字。「\.」とエスケープすればピリオドにマッチする。
  • ? ←直前の文字と0回もしくは1回マッチ。https?はhttpもしくはhttpsとマッチする。

※AutoPagerize Wikiは「\\.」と書いてるがwedataは全部「\.」なのでこっちでいいと思う。

「uAutoPagerizeのアイコン>設定ファイルの再読み込み」、でローカルファイルから設定データが読み込まれる。「loaded setting fille」のポップアップが出ない場合は、ローカルファイルの読み込みに失敗している。その場合、ローカルファイルの記述が間違っていると思われる。

最後のページまで読み込み、uAutoPagerizeのアイコンがからに変わることを確認する。最後のページでnextLinkが値を返さないように(になるように)記述するのがいい。

 

4. 設定データを共有レポジトリに登録し、最後の動作確認をする。

  • Wedataにデータを登録するにはOpen ID(yahoohatenalivedoorなど)が必要。どのOpen IDを使うかによってOpen IDの形式が異なる。

設定データの登録は、Openi IDでログインしてアイテムを追加するだけ。

設定データの登録後、「uAutoPagerizeのアイコン>SITEINFOの手動更新」で共有レポジトリから設定データが読み込まれる。「loaded siteinfo from http://wedata.net/databases/AutoPagerize/items_all.json」のポップアップが出てこない場合、共有レポジトリの読み込みに失敗している。

「ローカルファイルの設定データを削除(コメント化)→設定ファイルの再読み込み→動かないことを確認→SITEINFOの手動更新→共有レポジトリの設定データで動くことを確認」という風に動作確認する。

これで登録完了である。

 

(番外編)googleの検索結果に関連キーワードを表示させる設定データ(追記)

autopagerのキーワードで検索順位8位のクソ記事(この記事は圏外なのに)に、googleの検索結果に関連キーワード表示が必須だと書かれていたので、この記事の方法で対応できるというこうとを紹介したい。該当するwedataの設定データのpageElementに|id("extrares")を追加した設定データをローカルファイル_uAutoPagerize.jsのMY_SITEINFOに追加するだけ。uAutopagerizeは個人用の設定データを反映できるのが良い。googleがHTML構造を変えることがあるのでこの設定データの動作保証はしない。

{
url: '^https?://[^./]+\\.google(?:\\.[^./]{2,3}){1,2}/(?:c(?:se|ustom)|search|webhp|m|#|)',
nextLink: 'id("pnnext")|id("navbar navcnt nav")//td[span]/following-sibling::td[1]/a|id("nn")/parent::a',
pageElement: 'id("res")//li[div]|//div[@class="gsc-webResult gsc-result" or @class="psli"]|id("rso")//div[contains(concat(" ", normalize-space(@class), " "), " g ") or contains(concat(" ", normalize-space(@class), " "), " g _cy ")]|id("extrares")',
},
(2017/02/05に動作確認)

 

(番外編)使用される設定データを調べる

Firefoxの開発ツールのデバッガでdata/uautopagerize.jsにあるentry_point() launchAutoPager(list)のlistを見ればいい。再読み込み(Ctrl-R)すれば左ペインに@uautopagerizeが出現する。

とある例で、wedataに設定データがあって間違ってるのかなと思って見てみたら間違ってなさそうだった。そこで、この方法で"list"を見てみたら原因が判明した。そのサイトがhttps化したためurl=http://にマッチしていなかった。この場合はデバッガを使わないと原因が判明しなかった。

posted at 2017年02月03日 16:47 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

javascriptのrequire()を調べて多大な時間を無駄にした件

何故時間を無駄にしたか

  • 検索結果がゴミ
    (2ちゃんのSEOスレをヲチしてるせいで検索に悲観的な思いを抱くようになったのかもしれない)
  • node.jsのrequire()とRequireJSのrequire()はまったくの別物でまぎらわしい。

 

時系列で語っていく

忘れないうちに時系列で語っていく。

GreaseMonkeyについて調べだした。

「FirefoxにGMのアイコンがある。押してみよう」という軽い気持ちで、Webサイト>ユーザースクリプトの入手をクリック。

一番上のGistをクリック。「なんだこれ?何も表示されねえ……」。Searchにキーワードをタイプすることに気づかず「ユーザースクリプトが欲しいのに作れってことか」と勘違いして立ち去る。

次のGreasy Forkをクリック。最初のページで公開されているスクリプトに興味を引かれなかったので、「さらに表示 」をクリックして、唖然とした。「中国語のスクリプトばっかりなんだけど……」。読めない中国語をスキップしてGBookDown - Download Google Booksに興味を惹かれる。Google Booksをダウンロードするなんて考えもしなかった。

GBookDownについて調べだした。

「スクリプト作者による説明」によると、FirefoxとGreasemonkeyでしか動作しない。「閲覧不可」と表示されているプレビューページはダウンロード可能だが、再度同じ本を保存する前に2~6日待つべき(ページがグローバルにブロックされるのでIDを変えても無駄)と書いてある。

// @require      https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2014-11-29/FileSaver.min.js

「外部スクリプトを3つ読み込んでるけどウィルスだったら嫌だなー」と思ってFileSaver.jsを調べだした。またFileSaver.jsの取得元になっているcdnjs.cloudflare.comは何かと思って調べた。

  • 大量のJSライブラリがまとめられたCDN
  • CDNとは、ファイルサイズの大きいデジタルコンテンツをネットワーク経由で配信するために最適化されたネットワークのこと。

(ttp://akiok-jp.hatenablog.com/entry/2013/04/17/163155 その数300以上!大量のJSライブラリを配信する「cdnjs」がすごい - Noise of Web Programming  2013-04-17)

「cloudflareにウィルススクリプトを仕込むのは難しそうだな」と思った。@requireを読みこんでも大丈夫かもしれないと思ったのは後のほうになってからだが、ウィルスを恐れるあまりスクリプトを解析していく。

FileSaver.jsについて調べだした。

GitHubでスクリプトが公開されている。最近CSSなどのWeb技術にハマっているので、FileSaver.jsを動かしてみようと思った。

var FileSaver = require('file-saver');
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
FileSaver.saveAs(blob, "hello world.txt");

動かしてみたら動かない。javascriptにrequireなんてものはなかった。

requireについて調べだした。

「javascript require」で検索した。結論から先に申し上げると、検索結果がゴミだった。

検索結果の一番に表示される「require()とは何か?何が便利なのか - Qiita」を見てみた。

  • 最近のJSのサンプルコードは、だいたい文頭にrequire()などとついていますが、このrequire()ってよくわからない。(←分からないなら書くなw 検索結果の一番目に分からない人が書いた記事が表示されるのだが?書いた人が悪いのではなく検索エンジンが悪い
  • commonJS (←その時はよくわからないのでスキップした。
  • node.js ServerSideでJavascriptを使えるようにしたもの。 (←なぜサーバー?クライアント側で使いたい
  • RequireJS ClientSideでもrequire()を使いたい、ということで作られたライブラリ。(←ライアント側で使えるのか。筆者が求めていたのはこれに違いない」とその時は思った。いま読めば「嘘つくなw」であるが。

(ttp://qiita.com/uryyyyyyy/items/b10b012703b5396ded5a require()とは何か?何が便利なのか - Qiita 2015年01月13日)

RequireJSについて調べだした。

RequireJSのページは英語だ。ダウンロードしてrequire()を動かしてみたが、動かない。さらに言えば動く気配がまったくしない

結論から先に申し上げると、require('file-saver')はnode.jsの書き方で、RequireJSの書き方はrequire(['file-saver')])だった。いくら頑張ってもrequire('file-saver')をRequireJSで動かすことができない。しかもRequireJSがやってることが非常に難解だったので泥沼にはまってしまった。

[test.html]

<script data-main="js/main" src="js/require.js"></script>
<div id="d1">---</div>
  • js/main.jsを最初に読みに行くという書き方。 data-mainはお約束のようなものなので気にしない。考えたら負け。

[js\main.js]

function debug(text){d1.innerHTML+="<br>"+text;}
require.config({
    baseUrl: './js/mymod/',
    paths: {
        "test": "mymod2/test2",
    },
});
require(["test"], function(test3){
    test3.test2();
});
  • 関数debugを作ってデバッグのコードを入れまくるのがおすすめ。少し違うだけで動かないというのに原因を特定できるようなエラーメッセージが全く出ない不親切設計である。
  • baseUrlを使わなくても動く。パスを変えなければならないが。
  • pathがスクリプトファイルを読みに行くと思ってmymod2/test2.jsと書いたら動かない。このようにRequireJSは直感的な書き方で動かないのが残念。 製作者のセンスが疑われる
  • 初めにrequire.config()でスクリプトの定義を行う必要がある。ここではrequire(["test"])がjs/mymod/mymod2/test2.jsを読みにいくと定義しただけ。ここでは使ってないがshimというオプションでスクリプトの依存関係を定義できるらしい。
  • 「RequireJSでのrequire/define関数の関係(ttps://codezine.jp/article/detail/9011)」の最初のページの図1が分かりやすくておすすめ。requireに対してdefine([], function(){return})が対応していて、returnされた値がtest3という引数として使えることがよく分かる。

[js\require.js] RequireJSからダウンロード

[js\mymod\mymod2\test2.js]

define([], function(){ 
    var o=new Object(); 
    o.test2 = function(){ 
        debug("test2()"); 
    } 
    return o; 
}) 

推測ではあるが、<script>タグによる外部スクリプトの読み込みが同期待ちで順番に読み込んでいくので遅いのに対して、RequireJSはスクリプト間の依存関係を定義できて、複数の外部ソースを非同期で並行して読みに行くことができるからスクリプトの読み込みが速くなる。ttp://1010real.hateblo.jp/entry/2014/05/09/182811にスクリプトのローディングがかなり早くなったと書かれている。スクリプトの読み込みを早くしたいだけであれば、外部スクリプトを同時並行で読む技をパクってそこだけ自分で書けばいいと思った。

RequireJSのThe Problemのところだけ読んだら(英語を全部読むのがきつい)、モジュール管理をしたいと書かれている。こちらは、wikiによればCommonJSとECMAScriptでModulesの仕様が定められているとあるのでそっちのほうを使いたい。requireに配列を渡さないはずw

大規模なスクリプトでファイルを分けて開発したいが、インターネットに公開する際はファイルを1つにしたいという需要はあると思う。そのためにRequireJSを使ってる人が多いのかもしれない。r.jsというOptimizerを動かせば1つのファイルにしてminifyしてくれるらしい。node r.jsというコマンドの記述があるのは、require(文字列)がnodeの関数を呼び出して、require(配列)がRequireJSの関数を呼び出すように分岐しているのではないかと思った。

次にnode.jsについて調べだした。

node.jsはすんなりと動いて泥沼にはまらなかった。node.jsを調べたときの検索結果は満足のいくものであった。Node.jsをインストールしないといけないのがハードルになるくらい。

[test1.js]

var test = require('test2');
var http = require('http');
http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(80);
console.log("test4()="+test.test4());
  • コマンドプロンプトから$ node test1.js とタイプすれば「test4()=11」と表示される。また、ブラウザでhttp://localhostを開くとHello Worldが表示される。この体験からnode.jsがjavascriptのスクリプトを動かすコマンド(コマンド名はnode)ということが分かる。node.jsはnode.jsというスクリプトファイルではない。非常に紛らわしい
  • node.jsではrequire()の引数が配列になっていないことに注目。

[node_modules\test2\package.json]

{ 
  "name": "test2", 
  "version": "0.0.0", 
  "description": "", 
  "main": "test3.js", 
  "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
  }, 
  "author": "", 
  "license": "ISC" 
} 
  • ttp://qiita.com/nextfactory/items/476c5150268e2c7db4ec 最初、Qiitaのこの記事をみて、package.jsonに "main"だけ書いたら動かなかった。
  • ttp://qiita.com/hosomichi/items/149b28c89a012ead26aa こっちのQiitaの記事のやり方でpackage.jsonに"main"以外にたくさん書いたら動いた。
  • var test = require('./test3.js');というようにして同じフォルダに置いて相対パスで指定すればnode_modulesという特別なフォルダ名を使わなくても動くのだが、require('名前')からの関連付けをやりたかったのでこのようにした。

[node_modules\test2\test3.js]

exports.test4=function(){return 11}; 
  • exportsという特別な変数を経由すればtest1.jsのrequireの返り値から呼び出せる。

どう見てもrequire('file-saver')がやりたかったのはnode.jsでした。どうもありがとうございました。

GBookDownはjszip.min.jsも@requireしているので、JSZipについても調べてみた。

JSZipからダウンロード。ファイルの数が多いが必要なのはjszip.jsの1つだけ。

<script src="jszip.js"></script>
<script src="FileSaver.js"></script>
<script>
window.onload=function(){
    var zip = new JSZip();
    zip.file("hello.txt", "Hello World\n");
    zip.file("nested/hello.txt", "無味\n乾燥\n");
    zip.generateAsync({type:"blob"}).then(function (blob) {
        saveAs(blob, "hello.zip");
    });
}
</script>

調べたというより動かしてみた。サンプルプログラムをコピペするだけで動いた。jszip.jsはzipファイルを作るところまでしかできないので、FileSaver.js(関数saveAs)と一緒に動かしてzipファイルを保存させる必要がある。「百聞は一見に如かず」ならぬ「百見は一体験に如かず」である。zip.generate()がサポートされなくなって使えなくなっていることはネットの情報を見ても分からないであろう。

やっとのことでGBookDownを動かしてみた。

GBookDownは行数も少なくウィルスは入ってなさそうに思えた。インストールしてgoogle booksで本をてきとーに検索してページを開いたら、スタートボタンが出た。押してみたら動いた。FileSaver.jsを自分で動かしてみたときは保存ダイアログが出たのにこっちでは出なかったので気になって調べてみたら、拡張子.zipでは保存ダイアログが出なくて拡張子.txtでは出ることが原因だった。

 

感想

  • GreaseMonkeyのユーザースクリプトの1つを動かしてみただけなのに多大な時間を無駄にした。
  • javascriptの各種ライブラリを勉強できたのが不幸中の幸い。
posted at 2017年02月03日 10:34 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

日本はアジアの中でIT後進国だった 日本最大のハッカー大会

日本最大のハッカー大会で韓国と中国に敗北

  • サイバー攻撃対策に役立つ技術を競う日本最大のハッカー大会「SECCON(セクコン)2016」が東京電機大(東京)で開かれた。
  • 1位と2位が韓国のチーム。3位が中国のチーム。日本勢は5位が最高だった。

(ttp://www.sankei.com/photo/daily/news/170129/dly1701290014-n1.html 韓国チームが優勝 日本最大のハッカー大会 - サッと見ニュース - 産経フォト 2017.1.29)

 

このニュースの2ちゃんのコメント

119 :名無しさん@1周年 :2017/01/29(日) 21:43:47.08 ID:WSWs/rKl0
ハッキングは重要な軍事能力だからな。
この方面で負けると戦争になったらコロリとやられる

585 :名無しさん@1周年 :2017/01/29(日) 22:46:44.98 ID:plYuylpR0
チョンに情報ダダ漏れ疑惑のLINE使うとか、日本人はCIAのメディア戦略にまんまと嵌められた平和ボケの土人だよね〜

769 :名無しさん@1周年 :2017/01/29(日) 23:26:33.07 ID:k0C28SV/0
日本は不正アクセス防止法とかできたし
winneyの製作者逮捕とかあった
からね
ハッキング技術を使えることを公言するような大会なんて
その後の人生が公安のマーク対象にされるだけじゃん、リスクありすぎ
出るやつらはバカだろw

784 :名無しさん@1周年 :2017/01/29(日) 23:29:16.45 ID:XeXY5JR20
ITの台頭ですっかり後進国になったな日本は

958 :名無しさん@1周年 :2017/01/30(月) 00:12:13.79 ID:mM1+UuMP0
で、次は共謀罪か?
ハッカーが勉強会開いただけで逮捕されるって訳だ。
頭おかしいわ。

(ttp://daily.2ch.net/test/read.cgi/newsplus/1485692615/ 【IT】日本最大のハッカー大会、優勝は韓国チーム 2位も韓国、3位は中国…SECCON2016)

 

日本はハッカーを逮捕しすぎなんだよ。B-CASのハッカー少年スマホゲームのハッカー大学生が逮捕された。

VR(バーチャルリアリティ)は成長産業の1つになっているが、あんなものエロがなければ誰も見向きもしない。ハッカーもエロと同じで、IT産業を発展させる原動力の1つである。

日本がIT先進国になるには、上の例で逮捕の根拠となっている不正競争防止法や著作権法や2ちゃんのコメントにある不正アクセス防止法を改正する必要がある。

このままサイバー戦争になったら日本はアジア勢に侵略されてしまうだろう。上で挙げた法律以外でも共謀罪とか日本の政治家が犯罪をゼロにしようと法律を量産するのは働き者で素晴らしいと思うが、そうやって多すぎる政治家に多額の税金を使って国民の自由を縛る法律を量産させ、産業の成長を抑制していて果たして日本に未来はあるのだろうか?

posted at 2017年01月30日 07:18 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

Windows 8/10ではMicrosoft以外のアンチウイルス製品は使用すべきではない

Windows 8.1/10ではサードパーティーのアンチウイルス製品を避けるべき?

  • 安全なブラウザーを出荷する最大の障害はアンチウイルスだとGoogleの開発者が指摘。
  • Microsoft以外のアンチウイルス製品がセキュリティーを改善するとの証拠はほとんどなく、むしろセキュリティーを低下させるとMozillaの元開発者が主張。
  • 多くのアンチウイルスベンダーがFirefoxのプロセスにASLRを無効化したDLLをインジェクトして台無しにした。
  • アンチウイルスソフトウェアはFirefoxのアップデートを 何度もブロックしており、開発者はアンチウイルスに起因する問題に対処するために多くの時間を無駄にしている
  • Windows 7やWindows XPの場合はサードパーティーのアンチウイルス製品を使用することで、少しはましになるかもしれない。

(ttps://srad.jp/story/17/01/28/1819226/ スラド)

スラドのコメント

  • オンラインバンキング保護』とかいうクソみたいな機能が使い物にならない。裏でわけわからんことやってるらしく、送金処理の途中でいきなりクラッシュしたり、『応答なし』になったりする。
  • 俺の今の職場ではシンクライアント環境にMcAfee入れてるけど、オンアクセススキャンのプロセスがほぼ常時CPUの9割以上使ってて頻繁にExcelやOutlookが応答なしにされる。

(ttps://srad.jp/story/17/01/28/1819226/ スラド)

筆者はWindows7でMicrosoftのSecurity Essentialsを使ってるから関係ない。

かつて無料期間にWindows10にしてみたことがあるのだが、Realtekのネットワークドライバが対応してなかった。Windows10に更新できなくて良かった。

無料期間が終わる頃に駆け込みでWindows10に更新しようとしてRealTekはドライバを何度か更新していてその度に最新のドライバをダウンロードしてWindows10に更新したのだがRealtekのドライバがすべてダメだったと申し上げておく。

posted at 2017年01月29日 15:03 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

Firefoxの履歴を最後に表示した順に並べていた時に、開いた履歴を一番上にスクロールさせない方法

Firefoxの履歴を順番に開けなくて困った

Firefoxの履歴(Ctrl-H)を「最後に表示した日時順に並べる」で表示していた時、履歴の1つをクリックすると一番上にスクロールしてしまう。この為、左画像の斜線部の3つの履歴を順番に開いていくことができない。過去に開いたどれかのページにある情報を探す時に複数の履歴を一気に開きたいという場合がある。

 

履歴をスクロールさせずに履歴を開く方法

Firefoxのプライベートウィンドウ(Ctrl-Shift-P)で履歴を開けばいい。プライベートウィンドウでは履歴が保存されないので、履歴が一番上に移動することがない。

これに気づく前はplaces.sqliteから履歴を書き出すスクリプトを作るという無駄なことをしていたという……

posted at 2017年01月22日 09:48 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

Styish ユーザーデータの収集疑惑

Webブラウザアドオン「Styish」、ユーザーデータの収集を始めて騒動に

  • アドオンの「Stylish」がユーザーデータの収集を開始したとしてレビューに批判が集まる状況になっている。
  • Tech News Directoryによると、2016年10月にStylishはJustin Hindmanなる人物にその所有権が移っている。
  • 1月12日には公式フォーラムでSimilarWebという調査会社に対し収集したデータを提供することを表明している。

(ttps://it.srad.jp/story/17/01/19/0634248/  2017年01月19日)

SimilarWebはSEOで有名なサイト。サイトの閲覧者がどらくらいでどこから来たかなど何故こんなことが分かるのか不思議に思ったことがある。Stylishだけで分かるとも思えない。ユダヤ人つながりでグーグルとつながってるのでは? 怪しい……。

 

SimilarWeb

  • 本社は英国のロンドン。
  • 2009年3月3日、イスラエルのテルアビブにおいて、オアはニール・コーエンとSimilarWeb株式会社を設立した。
  • ttps://www.similarweb.com/

(ttps://ja.wikipedia.org/wiki/SimilarWeb wiki)

  • Stylish, which is part of the SimilarWeb product family, is a user-generated content product. (StylishはSimilarWebの製品群の1つであると、Stylish公式ページのプライバシーポリシーに書かれている)

(ttps://userstyles.org/login/policy STYLISH PRIVACY POLICY Last modified: January 1st, 2017)

posted at 2017年01月20日 10:27 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

期間を指定してgoogle検索する方法

あれ……ツールボタンなんてあったんだ?

 

なぜ気づいたか

別件でGreasemonkeyについて調べていたら、初めてのGreasemonkeyというページ(ttp://qiita.com/toshihirock/items/1b8cc54f732de49bc836)を見つけた。スクリプトを眺めると、検索URLの末尾に'&tbs=qdr:'とh(1時間以内)/d(day)/w(week)/m(month)/y(year)を追加していることが分かった。数値を加えて'&tbs=qdr:w2'を追加すると「2週間以内」という指定になることも分かった。

早くも2014年にこのことを書いているページを見つけた。Googleで期間を指定して検索する方法(ttp://www.useful-notes.com/others/google-term/)。

 

今までツールボタンに気付かなかったのは何故?

「google 期間指定」の検索ワードに対するサジェストに「消えた」が出てくる。気付かなかったのは筆者だけではないのでは?

posted at 2017年01月19日 03:30 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

jqueryで何ができるかテストするページ

videoとアニメーション

  • <video>タグでwebmを背景で再生
  • クリックで再生/一時停止を切り替え
  • 画面右下から飛び出る画像をアニメーション (jqueryのanimateを使ってるだけ)
  • (注)IE11ではwebmが再生できなかった。mp4も置けばよいがサイズが大きいので。

 

audioとアニメーション

  • <audio>タグでmp3の音楽を再生
  • クリックで再生/一時停止を切り替え
  • 回転しながらランダムに浮かび上がってくる多角形をアニメーション(<canvas>で回転する多角形を描き、さらにcanvasをjqueryでanimateさせてる)
  • アニメーションはsetIntervalやsetTimeoutではなくrequestAnimationFrameを使えということを知ったのでsetIntervalからrequestAnimationFrameに書き換えたらアニメーションがずれた動きをしないようになった。jqueryのanimateと相性が悪かったらしい。requestAnimationFrameは描画タイミングで呼び出されるというまさにアニメーションのための関数。

 

cssだけでアニメーション

  • animation:と@keyframesを使ってcssだけでアニメーションが作成可能
  • クリックで再生/一時停止を切り替え
  • 歯磨き画像を多重影分身、右端に来た時に吹き出し
  • IE11は微妙な動きをする。opacity:0 !importantが効いてないのでdisplay:noneにした。-ms-のベンダープレフィックスを付けなくてもいい。left:80%は動くが、transform:translate3d(80vw)やtransform:translate3d(80%)が動かない。transform:perspective(150px) rotateX(45deg)とやった時に下部が切れる。IE11はWindows7で最新版なのにバグだらけだ。MS仕事しろw
  • firefoxとchromeの最新版では動作確認できた。
歯を磨こう!

 

svgだけでアニメーション

  • <svg>タグを使ってベクタ形式の画像を作成できる
  • <svg>内で<animate>タグでアニメーションができる
  • クリックで表示/非表示を切り替え(一時停止は多分できない)
  • 下のsvg画像の中でマウスオーバー時に縦と横の線を描きクリック時に円と線を書く
  • svgはjqueryと相性が悪いのでjavascriptで記述
  • IE11で動かない

 

ajax test

  • $.ajax({ url:http://xxx })で取得できるurlは同じサーバー内のみ。他のサーバーのurlを指定してもFirefoxのクロスドメイン制約に引っかかって取得できない。特にエラーメッセージが返ってくる訳でもなく"error"としか出てこないので分かりにくい。
posted at 2017年01月03日 21:28 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

googleにダメ出しされないようにgimpでjpeg画像を保存する方法

gimpで保存したjpeg画像を貼ったウェブページをPageSpeed Insightsにかけると、画像を最適化するように提案されてしまった。「画像を圧縮すると 31.4 KB(40%)削減できます」だとか。googleにダメ出しされないようにするにはどうすればいいだろうか?

PageSpeed Insights(ttps://developers.google.com/speed/pagespeed/insights/)は読み込み時間を短くするための方法を提案するGoogleのツール。ウェブページのURL入力すると問題を報告してくれる。gimpは画像編集用のフリーソフト。

 

目次 []

 

googleにダメ出しされないようにgimpでjpeg画像を保存する方法

保存オプションを図のようにしてjpeg画像にエクスポートすればいい。

  • 品質: 80
  • サブサンプリング: 4:2:0(1/4クロマ)
  • DCT変換方法: 浮動小数

 

gimpの保存オプションとPageSpeed Insightsの結果の関係

  サイズ 品質 サブサンプリング DCT変換 google判定
オリジナル 81KB - - - 圧縮すると40%削減可
Compressor.io 43KB - - - 問題なし
gimp 100a 170KB 100 4:4:4最高品質 整数 圧縮すると73%削減可
gimp 70a 42KB 70 4:4:4最高品質 整数 圧縮すると25%削減可
gimp 30a 22KB 30 4:4:4最高品質 整数 圧縮すると20%削減可
gimp 70b 35KB 70 4:2:2水平 整数 圧縮すると12%削減可
gimp 70c 36KB 70 4:2:2垂直 整数 圧縮すると13%削減可
gimp 70d 32KB 70 4:2:0(1/4クロマ) 整数 問題なし
gimp 80d 42KB 80 4:2:0(1/4クロマ) 整数 問題なし
gimp 90d 57KB 90 4:2:0(1/4クロマ) 整数 圧縮すると17%削減可
gimp 80d1 42KB 80 4:2:0(1/4クロマ) 高速整数 問題なし
gimp 80d2 41KB 80 4:2:0(1/4クロマ) 浮動小数 問題なし

Compressor.io(ttps://compressor.io/)は画像のサイズを小さくしてくれるオンラインサービス。

サブサンプリングを4:4:4最高品質にするとどれだけ品質を下げてもダメ。

サブサンプリングは4:2:0(1/4クロマ)の時が一番ファイルサイズが小さい。

Compressor.ioで圧縮したときのサイズと同じくらいなのが品質80のとき。

DCT変換方法を浮動小数にしたときのサイズが一番小さい。

 

使用画像

オリジナル画像

 

gimp 80d2の画像

画像切り替え法でじっくり念入りに見比べれば食パンの表面がオリジナル画像よりシャープになってることに気づく。しかし、通常ウェブページを見てる分には差に気がつかない。

posted at 2016年12月27日 03:03 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

google クロームのSPYウェア疑惑

Windows10アップグレードスレを見ていたら、個人情報関連で気になることが書いてあったので、抜粋して載せておく。

googleが収集する個人情報

355 名無しさん@1周年 []
Win10はSPYウェア
個人情報を収集してマスゴミや企業に売り込むツール

363 :名無しさん@1周年 :2016/05/23(月) 16:09:09.28 ID:1n156zmO0
クロムさんも〜
パケ監視してるとググルさんの鯖に
アイドル状態でもちょこちょこパケ送り付けてる

371 :名無しさん@1周年 :2016/05/23(月) 16:13:21.04 ID:SG5SbM+u0
その通り
G-mailも内容を監視して、内容に応じた広告がG-mailに入ってくる

376 :名無しさん@1周年 :2016/05/23(月) 16:15:35.73 ID:Tl0s99Z60
クロームはアクセスしたサイトやブックマークを自鯖に勝手に保存する
パスワードをクロームに覚えさせればパスワードも

(ソース 【IT】マイクロソフト、「Windows10 アップグレードのキャンセル方法」を公開★2
ttp://daily.2ch.net/test/read.cgi/newsplus/1463979774/)

検索結果に使えるデータなので、googleはアクセスしたサイトやブックマークを見たくて仕方ないのだろう。

googleの無料サービスが便利なので使う。しかし、googleは個人情報を加工して広告に変えて売って商売をしている。

Google本社を襲撃 Googleに見張られているから

  • カリフォルニア州の男。
  • マウンテンビュー警察は6月30日、Google本社そばに車を停めていたラウル・ディアス容疑者(30)を逮捕。
  • ディアス容疑者は3件の襲撃について「Googleに見張られていて腹が立ったから」と説明しており、「監視されている証拠を日記に書いている」とも述べている。
  • 地元警察によれば、容疑者は3回にわたってGoogleを襲撃しています。1度目は5月19日の午後11時頃で、Google本社の駐車場に停められていたストリートビュー撮影車にビール瓶2本を投げつけました。

(ttp://iphone-mania.jp/news-123898/ 「Googleに見張られている!!」Google本社を襲撃した男が逮捕  2016年7月5日)

検索語句とIPがgoogle外部に漏れている

NSA(アメリカ国家安全保障局)が、Linuxユーザー向け雑誌「Linuxジャーナル」の購読者や匿名通信システム「Tor」、Linuxベースで匿名性の高いOS「Tails」について、検索フレーズとして用いたIPアドレスを監視対象にしていたことが判明しました。
(ttp://gigazine.net/news/20160711-nsa-surveillance-tor-tails/ NSAが匿名性を保つためのネットサービスのことを検索した人を監視対象にしていたことが判明 2016年07月11日)

これを回避するためには、googleに送る検索を中継する別鯖を立てればいい。と考えていたら、既にStartpageやDuckDuckGoというサービスが存在していることが判明した。DuckDuckGoは、複数の検索エンジン・サイトから情報を収集しているのに対し、Startpageは、googleの検索結果のみを取得している点が異なる。

posted at 2016年05月31日 18:54 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする