お金とかソース管理とか何も考えなくていいスクレイピングbotを作りたい 「SlackにStackShare.ioからトレンドランキング拾って投稿するbot作って」「ほいきた」 Slackのbotってhubotとかいう奴の事でしょ?皆作ってるし余裕だろ、と何も考えずに引き受けたら何やらサーバが必要だわyo hubotしたらファイルが2000個自動生成されるわ、で速攻ぶん投げたくなりました。目的が単純ならその実装も運用も管理も可能な限りシンプルにしたいものです。探してみたところ、Google Apps Scriptが一番手軽そうだったので早速やってみました。 Google Apps Script PaaSやIaaS系のサービスとかでは全然無いです。ざっくり言えばGoogleドライブにスクリプトをアップしておくだけ。 新規⇢アプリを追加⇢Apps Scriptを検索、追加しておきます。 プログラ
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
JavaScript is a general purpose programming language that was introduced as the page scripting language for Netscape Navigator. It is still widely believed to be a subset of Java, but it is not. It is a Scheme-like language with C-like syntax and soft objects. JavaScript was standardized in the ECMAScript Language Specification, Third Edition. JSON is a subset of the object literal notatio
2008-01-29 カテゴリ: Client Side タグ: Tips JavaScript Perl 正規表現 CSV 正規表現を使ったCSVパーサの続き。 トークン化したCSVを解釈するコードをJavaScriptとPerlで書いた。二つのロジックはほぼ同じ。 それぞれ、第一引数には解釈するCSVテキストを渡し、第二引数ではfield間の区切り文字を指定する。デフォルトはコンマ(,)。戻り値は、CSVを解釈した2次元配列(Perlの場合はリファレンス)。 function parseCSV(text, delim) { if (!delim) delim = ','; var tokenizer = new RegExp(delim + '|\r?\n|[^' + delim + '"\r\n][^' + delim + '\r\n]*|"(?:[^"]|"")*"', 'g');
ちょっと前にjavascriptで構文解析とかがはやった気がするので、javascriptのリハビリがてらかいてみた。 ググってみると Jsparsec - JavaScriptパーザコンビネータライブラリ HaskellのMonadをJavaScriptで実装するとしたら あたりがあるのだが、まぁ勉強ということで。javascriptらしく書いてみようかと。 ということで、モナドがどーたらとか難しい話はまぁおいておいて、簡単に値がとりだせますよ、という見栄え重視で作ってみた。基本的な機能しかない。けど拡張するのは簡単。せめて相互再帰くらいは実装したほうがよかったかな。まぁ、こんなの真剣に使う人もいないと思うので、要望があればってことで。ちなみに依存するライブラリはありません。 ダウンロード : Inforno.Parsec たとえばこんな感じにCSVのパーサが定義できる。withを使って
JavaScriptなでしこもどき http://nadesico.bz2.jp/ を見てて、字句解析器生成ツール作ってくれないかなぁと書いてあったので、シンプルな字句解析器ジェネレータを作ってみました。 JavaScriptは正規表現オブジェクト利用すれば結構楽に出来ました。 function generateLexer(tokens, name, r) { function escape2(str) { return str.replace(/\n/mg, "\\n") .replace(/\r/mg, "\\r") .replace(/\t/mg, "\\t") .replace(/\"/mg, "\\\"") } function escape(str) { return escape2(str.replace(/\\/mg, "\\\\")) } for(var s in nam
Narcissus - JS implemented in JS. Lexical scanner and parser.
_ 花見 (00:14) 昨日は会社の花見だったんだけど、ここのところ花粉症がひどいし、いつもの渋谷近辺ではなく上野会場ってことでいまいち土地勘もないし、面倒くさいなーと思いつつも、終わる時間頃を狙ってちょっとだけ顔を出しに行った。けど、場所取り予定地近辺にそれらしい集団は見つからず。携帯に電話してまで合流すると二次会に連れて行かれそうな気がしたんで、上野公園内を散歩して偶然であったら合流しようと思いつつ1時間ほどうろうろしたけど、結局出会えず。まあいいかってことでそのまま帰ってきた。ちなみに桜は1割くらいが咲いている感じ。一分咲きとかではなく、1割の木がほぼ満開になっている、って感じね。 _ JavaScriptでpreg_replace_callback 2 (11:14) 『JavaScriptでpreg_replace_callback』の続き。replaceの第2引数で関数が呼べ
かなり、適当ですが、Io風味のパーサを作ってみました。 a(b,c,d[][]) e f{} []といった式をパースして、以下のような構造を作ります。 call{ call{ call{a(b,c,call{d[],[]}), e}, f{} }, [] }Ioと互換ではなくて、拡張したり、手を抜いたりしてます。 Ioはかなり強力だということがわかりました。 <script> function cparse (str) { var pop = function () { str = str.replace(/^[ \t\r\n]+/, ""); var s = str.charAt(0); str = str.substring(1); return s; }; var peek = function () { str = str.replace(/^[ \t\r\n]+/, ""); r
Bluish Coder Programming Languages, Martials Arts and Computers. The Weblog of Chris Double. Cleaning up my hard drive I came across some old libraries I'd written. One of them was a simple set of parser combinators written in Javascript. I put it in a git repository in case they prove useful to someone: git clone git://github.com/doublec/jsparse.git The library pulls ideas from parser combinators
ほぼ、C言語の演算子が定義できてて+αの演算子がついてる言語です。 最初構文木を作って、それをインタプリタで動くいう。 なにが、新しいのかというと、プログラムは数値や識別子以外は演算子でつながってるってこと。 演算子でつながってるだけなので、構文木もそんな風になってます。 あとは、説明めんどくさいので。いいや。 とにかく、S式に代わると言い張っていいんじゃないのかなぁと思えるくらいになってきたんじゃないかと思います。 いつも、そう思ってるのだけど、これ以上シンプルで分かりやすくってのは難しいと思います。 ってところまで来たと思いますけど、どうでしょうか。 このインタプリタ部分をもっと拡張すると俺的に理想に近い言語になりそうです。 1+2*3;4 が ["xox",["xox",1,"+",["xox",2,"*",3]],";",4] となる〜っていう言語です。xoxは左結合の2項演算子の
式ベースのパーサとインタプリタを作ってみました。 {a:(a,b){a+b};b:(a,b){a*b}(5,2);c:(a(10,20)+b)*5;d:{a:a;c:c}}.d このような、式をパースして、実行すると、 {a:Lambda([a,b],XOX(a,+,b)),c:200} のような、式が帰って来ます。 今までは、括弧は特別扱いしようとしていました。 しかし、今回のものは式をパースするときに、 特別扱いしているものがありません。括弧や、セミコロン、カンマも 只の演算子です。 そこが、今までのものと一番違う点です。 実際に動くサンプルは以下にあります。 http://sakurai.s59.xrea.com/diary/c2.html 追記: なんか、前回と同じことを書いてるなぁ。 関数が使えるようになったところと、オブジェクトで振り分けるようにした点が違うはずなのだけど。。。
C++ の特徴のひとつである演算子オーバーロード、その粋を極めたのが Boost Lambda (無名関数) と Boost Spirit (構文解析) ではないかと思っています。JavaScript では無名関数が使えるので Lambda に関しては間に合っているとも言えますが、Spirit はそうも行きません。JavaScript 2 で演算子オーバーロードがサポートされるのならチャレンジしてみようかななどと思ってそれきりになっていました。 しかし、一部でパーサブームが起こっているというのを受け、Perl 6 Rules をつらつらと眺めているうち、正規表現のメタ文字を使えば文法定義をきれいに書けるのではと思い至りました。そこで実際に JavaScript でパーサジェネレータを作り、Spirit にあやかって Gin (ジン) と名づけてみました。 文法定義 正規表現リテラルを使うこ
function parseHTML(text) { var createHTMLDocument = function() { var xsl = (new DOMParser()).parseFromString( ['<?xml version="1.0"?>', '<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">', '<output method="html"/>', '</stylesheet>'].join("\n"), "text/xml"); var xsltp = new XSLTProcessor(); xsltp.importStylesheet(xsl); var doc = xsltp.transformToDocument( document.implementati
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く