唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

javascript

FizzBuzzダンジョンに挑戦した

挑戦者求む!クロノス・クラウン合同会社 柳井 政和@FizzBuzzダンジョンさん|CodeIQ 結構前の話ですが↑に挑戦しました JavaScriptでFizzBuzzのコードゴルフ(できるだけコードを短く)する問題です 以下の空欄を埋めるような1行の式を入力します [i, "fizz", …

JavaScriptでテキストファイルに名前を付けて保存(Chromeのみ)

テキストデータをテキストファイルとして名前を付けて保存したい時用. a要素のdownload属性を使っているのでたぶんChromeのみ(?)です. 具体的にはa要素を作ってAlt + Clickのイベントを発生させることで保存させています. テキストはData URIスキームの…

知り合いのサイトでXSSを探してみた

知り合いのサイト(承諾済み)にいろんな入力を投げてXSSを探してみました. まず手始めにユーザー名にscript要素を入れておくと,ユーザー登録画面でスクリプトが動作しました. 他の画面だとタグは全てフィルタされていたので,あまり使わない登録画面だけ見…

jQueryのDeferredオブジェクトを使ってみた

Chrome拡張を作っているとchrome.extension.sendRequest()によるbackground pageとの通信の結果を利用して動作させることがよくあります. しかしコールバック関数による非同期処理がいくつもある場合には,以下のようにネストが深くなったり順番を考えない…

クリックするとjQueryを現在のページにロードしてくれるChrome拡張"jquery-injector"を入れてみた

Chrome Web Store - jquery-injector クリックしてjQueryをロードした後にJavaScriptコンソールでjQueryの関数が使えます. ブックマークレットでもいいような気もしますが,拡張になっているので更新に追随してくれるのではないかと期待. Greasemonkeyを超…

CoffeeScriptのnotでミスったorz

CoffeeScriptでは論理否定演算子"!"は"not"で表されるんですが,カッコをつけないでいたらバグって困りました. JavaScriptでも起きるのでCoffeeScriptの問題ではないといえばないのですが,CoffeeScriptなら適切にカッコを足してくれるのかなと思ったら,そ…

node.jsでファイルの削除

node.jsでファイルを削除しようとして標準モジュールのファイルシステムにrm関数がなくて困りました. よく調べてみるとunlink(Sync)が削除のための関数みたいです. いつもLinuxでファイルを削除するときにはrmコマンドを利用していたのですが,unlinkコマ…

CoffeeScriptのクラスでのメンバへのアクセス制御とか

CoffeeScript勉強中です. JavaScriptのクラスの面倒な部分が隠蔽されていてわかりやすいです. 以下のコードを例にして説明します. class Test constructor: (@hoge) -> #publicな変数 public: 1 #public staticな変数 @publicStatic = 2 #private static…

CoffeeScriptの勉強中

ベターなJavaScriptとして最近名前を聞くようになったCoffeeScriptに手を出してみました. まだ始めたばかりですが,Pythonライクなインデントによる構造と省略記法が充実しているのがいいですね. 以下のようなよく使うキーワードが簡単に書けるようになっ…

「Pixiv Tag Suggest」に学習機能を追加しました

Pixiv Tag Suggest Pixiv Tag Suggest - Chrome ウェブストア pixivでブックマークタグをサジェストするGreasemonkeyスクリプトpixiv-tag-suggestを書きました - 唯物是真 @Scaled_Wurm pixivでブックマーク時にタグ推薦を行うChrome拡張を作っています. 今…

JavaScriptでファイルを任意の名前で保存する(ただしChromeに限る)

Chromeではa要素にdownload属性というものを指定することができます. これを利用するとhref属性で指定したファイルをdownload属性で指定した名前で保存することができます. <a href="http://k.yimg.jp/images/top/sp/ylogo_n.gif" download="TEST">TEST<a> バックグラウンドで生成したhref, download属性を指定したa要素にクリックイ</a></a>…

ファイルを任意の名前で保存するjavascript(ただしドラッグ・アンド・ドロップが必要)

Chrome拡張で,あるURLのファイルを別名で保存したいときにどうしたらいいのかわからなくて続けてる試行錯誤の一貫. 一つのファイルに限ればドラッグ・アンド・ドロップを利用すると可能. ドラッグをしてもらう要素.addEventListener("dragstart", functio…

Chromeでドラッグ・アンド・ドロップでファイルを保存するときにapplication/octet-streamを指定すると拡張子が付かない

正しい動作の気もするのですが,ファイル名に拡張子を指定するか,MIME Typeで指定しないとダウンロードしても拡張子なしになるみたいです. a.addEventListener("dragstart", function (e) { e.dataTransfer.setData("DownloadURL", "application/octet-str…

Javascriptで画像のファイルタイプを調べる(同一ドメイン内)

拡張子がない画像ファイルの種類(png, jpg, etc.)を調べる方法がわからなかったので,XMLHttpRequestを使って無理やり調べた記録.具体的にはContent-typeヘッダを調べるだけです. もっと簡単なやり方をご存じの方がいたら教えて頂ければ幸いです. xhr = n…

Chrome のユーザースクリプト(user.js)を拡張機能にする

拡張機能にするまでよりも,Chromeウェブストアで公開するのが大変です. とりあえずまだ公開しないでいます. 必要なもの ユーザースクリプト マニフェストファイル(manifest.json) 画像 アイコン(128x128, 48x48) スクリーンショット(1280x800) Small Tile…

Google Chrome のユーザースクリプトで名前やバージョン番号が反映されない

なぜかユーザースクリプトの名前(@name)やバージョン(@version)や@includeなどの情報が反映されない現象が発生して困っていました. 原因はメモ帳で編集してしまったことでした. メモ帳のUTF-8エンコードのテキストファイルは先頭にBOMが付加されていて,こ…

pixivでブックマークするときに同時に10点評価するGreasemonkeyスクリプトを書きました

TINAMIで似たようなのを書いたのでついでに. 動作環境 Firefox + GreasemonkeyとGoogle Chromeで動作を確認. インストール pixiv_bookmark_with_star for Greasemonkey 上のサイトからInstallをクリックしてください. 動かないとき まずはアンインストー…

TINAMIでコレクションに追加したときに同時に支援を行うGreasemonkeyスクリプトを書きました

動作環境 Firefox + GreasemonkeyとGoogle Chromeで動作を確認. インストール tinami_add_collection_with_star for Greasemonkey 上のサイトからInstallをクリックしてください. 動かないとき まずはアンインストールしてから再インストールしてみる. TI…

pixiv-tag-suggest version 1.6

以前作成したpixiv用のGreasemonkeyスクリプトpixiv-tag-suggestをバージョンアップ. 小説の方ではスクリプトが動いていなかったのを修正. pixivはイラストの方と小説の方で微妙にHTMLの構造が異なってるのが謎.

pixiv-tag-suggest.user.js Version 1.2

pixiv-tag-suggest アップデートついでにuserscript.orgで公開. 機能 pixivでブックマークタグをサジェストするGreasemonkeyスクリプトpixiv-tag-suggestを書きました - 唯物是真 @Scaled_Wurm 修正内容 スタックフィード経由でブックマークしたときのバグ…

pixivでブックマークタグをサジェストするGreasemonkeyスクリプトpixiv-tag-suggestを書きました

Download pixiv-tag-suggest.user.js Version 1.1 pixiv-tag-suggest 最新版 Chrome拡張版も作りました.いずれは保存時のフォルダ指定やファイル名の置き換えなどに対応する予定. Chrome拡張版には学習機能が追加されています. 「Pixiv Tag Suggest」に学…

Javascriptで文字列比較関数

ソートするときに必要だったので. function strcmp(a, b) { if ( a.key < b.key ) { return -1; } if ( a.key > b.key ) { return 1; } return 0; }

Javascriptで最長共通部分列,Longest Common Subsequence(LCS)の長さを計算

Common Subsequence 解説を素朴に実装. function LCS(a, b) { var sizea = a.length + 1; var sizeb = b.length + 1; var table = new Array(sizea); for(var i = 0; i < sizea; i++) { table[i] = new Array(sizeb); } for(var i = 0; i < sizea; i++) { f…