タグ

JSXに関するgfxのブックマーク (92)

  • zlib.js の Inflate 実装を JSX-lang に移植しました : document

    5月1 zlib.js の Inflate 実装を JSX-lang に移植しました はじめに JSX 速いという話を聞いたので、zlib.js を移植したらどうなるのか興味があったので試しました。 https://github.com/imaya/zlib.jsx お詫び JSXがリリースされた直後に少し触ってみたのですが、最初期のバージョンでは素のJSとの連携が取りにくかったので、自分の用途には少しマッチしないなと敬遠気味でした。 その認識は最近まで続いていたのですが、現在は export なども出来るようになっているのでライブラリなんかも簡単に作れるようになってます。 (おそらく実装されたのは 2013-04-30 にリリースされた v0.9.27 ?) 何度か飲み会などで「素のJSとの連携が取りにくいからなー」とか言ってしまって誤解を与えてしまったのをここでお詫びします。 (exp

    gfx
    gfx 2014/05/01
  • JSX誕生秘話

    ※この記事は、JSX Advent Calendar 2013の一部です。 今日は12月24日、クリスマス・イヴです。それにちなんで、JSXがいかにして生まれたのか、というお話をしましょう。 元々は、2012年2月17日にさかのぼります。私は翔泳社開催の「Developers Summit 2012」の講演が終了し、登壇者の皆様と控え室で歓談しながら10周年コラボパーティの開場を待っておりました。そこでJenkinsの生みの親である川口耕介さんとお話をする機会がありまして、もう付き合いが20年近くになるんですかね、まあ会うたびにお互いに歯に衣を着せないで相手を容赦なくディスるんです。 で、そのとき私は川口さんに「お前まだJavaScriptなんて書いてんの?型がない言語を使うとか正気か?(意訳)」というツッコミを受けまして、もう完敗だったわけです…。 というわけでその場(控え室)で川口さん

    gfx
    gfx 2013/12/24
  • JSXテストチュートリアル - from scratch

    2013/12/23追記: gfxから頂いた下記のフィードバックにより、修正しました。 TestCase強化しました · Issue #1 · yosuke-furukawa/jsx_test_tutorial · GitHub gfx++ JSXでテストどう書くのか、という話。 このエントリは、JSXアドベントカレンダーの21日目の記事です。 JSX書く時、あらびき的チュートリアルとuupaa的チュートリアルが非常に参考になりますが、テストに関してはもう少し深堀りしておいてもいいのかなと。 JSXテストでHelloWorld JSXは組み込みでユニットテストの機能があります。 HelloWorldクラスがあるとします。 import "js/nodejs.jsx"; class HelloWorld { // 同期的なメソッド function hello(arg : string) :

    gfx
    gfx 2013/12/22
  • Shibu's Diary: Qt + JSXあるいはJSの状況

    渋日記@shibu.jp 渋川よしきの日記です。ソフトウェア開発とか、ライフハックを中心に記事を書いていきます。 JSXアドベントカレンダーのエントリーです。 2年ぐらい前から、QtをJavaScriptから使うというのをやっています。その延長でJSXから使うというのもずーっと、細く長くしぶとくチャレンジしています。12月12日に出たばかりのQt 5.2でうまくいきそうな感じなので、その成果を紹介します。コード片とかいっぱい書くのはめんどいので、コード片やサンプルはリンク先を参照してください。 Qt + JSの歴史 QtをJavaScriptから使うというのはかなり昔から先人たちによって行われてきたものの、今は誰も気で取り組んでいなくて、ロストテクノロジーになりかけています。Qtは2007年5月リリースの4.3でQtScriptという名前でECMAScriptのエンジンを搭載しました。当

    gfx
    gfx 2013/12/20
  • socket.io.jsxを作りました。 - from scratch

    このエントリは、JSX Advent Calendar 2013の18日目です。 socket.ioの1.0が出ると言われて、出ないまま早一年半経ちました。早いですね。 まぁでもsocket.ioはNode.jsのムーブメントを起こしたモジュールの一つであることに疑いはなく、 socket.ioをJSXから使いたいというニーズもそろそろ弊社から上がる頃ではないかと思い、socket.io.jsxを作りました。 socket.io.jsx https://npmjs.org/package/socket.io.jsx https://github.com/yosuke-furukawa/socket.io.jsx 使い方 何はともあれ npmのインストールから。 $ npm init $ npm install socket.io socket.io.jsx --saveあとは、こんな感じで

    socket.io.jsxを作りました。 - from scratch
  • Shibu's Diary: JSDuckからコードの情報を生成する

    当初、ドキュメントアドベントカレンダーに登録した時にこちら用に書いた記事でしたが、Doc-jaという似たアドベントカレンダーを見て、「あれ?登録したはずなのにないや、JSXの方に流用しちゃえ」とそっち向けに公開しました。その後間違えに気づいたので、元のアドベントカレンダーの方にも登録しました。関係者のみなさん、ごめんなさい。原稿は11月中に書いて12/8時限公開設定してたよ、落としたわけじゃないよ。

    gfx
    gfx 2013/12/18
  • とあるプログラミング言語処理系のセルフホスティング化に携わった - wasabizの日記

    2013-12-15 とあるプログラミング言語処理系のセルフホスティング化に携わった (この記事はJSX Advent Calendar 2013の一部として書かれました。) 僕がJSXというプログラミング言語の開発に携わってこの冬で早1年半になります。コンパイラとしてのjsxにはこの1年半で幾多の出来事がありましたが、その中でも一番巨大なものがセルフホスティングでしょう。つまりJSXのコンパイラをJSX自身で書きなおすということです。 メインラインのコードをまるまる入れ替えるこのセルフホスティングは大きな苦労を伴いました。実際、通常のポーティングとは違いコンパイラそのものを入れ替えてしまうわけですから、バグの出方などもなかなか味わい深いものです。 JSXセルフホスティングを行ってから既に1年が経過しようとしています。今までこの作業の苦労について外で話したことは無かったのですが、「プログラ

  • jsx-linker - Qiita

    jsx-linker というのは、JSXが生成するJavaScriptを後処理して、いろいろごにょごにょするツールです。将来的には他に吸収されて消えてなくなるかもしれないけど、安定するまではガンガン変更できるように独立したツールとして作りました。「コンパイルの後はリンカーだよねjk」ということでlinkerという名前にしたけど、何もリンクはしません。できることは、いろいろな環境用の起動用コードを追加したり、export部を拡張したり、といった感じです。 内部的にはesprimaを使ってJSXコンパイラで生成されたJSをパースして情報を収集し、JSXの出力したJSコードや収集した情報をhogan.jsxのテンプレートに渡すという仕組みになっています。テンプレートを書けばいろんな処理を追加できるようになっています。JSXで --minify をしていても問題なく動くようになっています。 exp

    jsx-linker - Qiita
    gfx
    gfx 2013/12/12
    “いろいろな環境用の起動用コードを追加したり、export部を拡張したり”
  • Profiling JSX App

    JSX Advent Calendar のひとつです。 JSX コンパイラの生成する Javascript コードは、玄人の叡智により最適化されており速い。 しかし、じっさいにアプリを速くするためには、その前にやることがある。 コンパイラの最適化は、コードの表面を削る。それは紙やすりのようなものだ。美しい木のテーブルに最後の表面仕上げをするように。 しかし、まずはテーブルをきちんと組み上げないといけない。足の長さが違っていたら、のこぎりでギコギコ切ることになる。それには紙やすりだと日が暮れる。 コードの意味を吟味し、構造的な改革、 O(n^2) -> O(n) にできないかとアルゴリズムを考え直す。そういうことをまず一通りやり尽くすこと。のこぎりでぎこぎこ。 とはいえ、速くすべき箇所がわからないとなんとも考えようがない。どこを磨くといちばんきれいになるのか? そこでプロファイラの出番になる

    Profiling JSX App
    gfx
    gfx 2013/12/10
  • [JSX] JavaScriptバインディングの書き方 - kazuhoのメモ置き場

    ※この記事はJSX Advent Calendar 2013の一部です。 JSXでは、JavaScriptで定義されているオブジェクトをJSXのクラスとして簡単に取り込めるようになっています。やりかたは簡単。「native」属性を付与してクラス定義を書くだけです。たとえばJavaScriptの組み込みオブジェクトであるRegExpのバインディングは、以下のように定義されています。 native final class RegExp { function constructor(pattern :string, flags :string); function constructor(pattern :string); function constructor(pattern :RegExp); function exec(str :string) :string[]; function t

    [JSX] JavaScriptバインディングの書き方 - kazuhoのメモ置き場
    gfx
    gfx 2013/12/03
  • JSX + npm - Qiita

    JSXそのものにはPyPIやCPANのようなモジュールリポジトリはありません。ですが、npmを使って管理することができます。JSXではJavaScriptのコードのラッパーを定義したりもするので、npmで対象となるJSモジュールも一緒に管理できるようになるので、npmを使うのが一番理にかなっています。このエントリーでは、npmを使ってモジュールを管理する方法について説明します。JSXを対象に説明しますが、npmを使いたいaltJS全般、あるいはスのnode.jsでも役に立つかもしれないお話です。 やり方は簡単です。package.jsonを使って必要なモジュールを書いていくだけです。

    JSX + npm - Qiita
    gfx
    gfx 2013/12/02
  • JSXのカレンダー | Advent Calendar 2013 - Qiita

    About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)

    JSXのカレンダー | Advent Calendar 2013 - Qiita
    gfx
    gfx 2013/11/08
    完走した!
  • jsx-mode.el において非同期で補完候補を取得するようにしてみた - あらびき日記

    この記事は abicky.net の jsx-mode.el において非同期で補完候補を取得するようにしてみた に移行しました

    jsx-mode.el において非同期で補完候補を取得するようにしてみた - あらびき日記
    gfx
    gfx 2013/09/16
    bicky++
  • jsx-mode.el に補完機能を実装しました - あらびき日記

    この記事は abicky.net の jsx-mode.el に補完機能を実装しました に移行しました

    jsx-mode.el に補完機能を実装しました - あらびき日記
    gfx
    gfx 2013/09/09
  • JSXでダックタイピング(型消去)が出来るようになった話 - wasabizの日記

    2013-08-18 JSXでダックタイピング(型消去)が出来るようになった話 JSXにユーザーテンプレート関数と型パラメータ推論が入り、Type Erasureが出来るようになりました。これでJSXで型安全なダックタイピングができるようになりました。 Type Erasureとは 以下の様なDuckクラスとDogクラスを考えます。どちらもfunction say () : voidというメソッドを持ちますがそれらに一切の継承関係はありません。 class Duck { function say () : void { log "quack"; } } class Dog { function say () : void { log "bow"; } } ここでfunction say () : voidを持つクラスをすべてAnimalだとみなし、そのインスタンスをメンバ変数として格納した

    gfx
    gfx 2013/08/18
  • JSXを触ってみた | Fourth Plant

    ちょっとJSXを触ったよー。 いろいろ気づいた点をメモしていきます。 interfaceのメソッドを実装する場合でもoverride修飾子が必要 interface Flyable { function fly(): void; } ↑こういうinterfaceがある場合、 ↓これではエラー。 class Bat implements Flyable { function fly(): void { // エラー! log "A bat is flying!"; } } ↓こう。必ずoverrideをつける。 class Bat implements Flyable { override function fly(): void { // OK! log "A bat is flying!"; } } null/undefined ふつーに型付きで宣言した変数にはnullを代入できない。

    gfx
    gfx 2013/07/04
  • W3C Developer Meetup in Tokyo - June 2013

    Developer Meetup - Tokyo Saturday, 8 June 2013, 17:30-22:00 Roppongi Hills Mori Tower Tokyo, Japan What a great event! Super interesting talks and great interaction with the Japanese developer community! We won't miss another opportunity to gather all of you again in Tokyo! Read the Tokyo developer meetup reports (in English and Japanese), featuring a few pictures taken during the event (thanks to

    gfx
    gfx 2013/06/07
  • JSXでコンパイルしたJavascriptをmongo shellで動かしてみるテスト - As a Futurist...

    確実にメリットは全くないんですが何を血迷ったか、JSX でコンパイルした javascript を mongo shell にわせて実行してみようかとふと思いついたのでやってみました。mongo shell は SpiderMonkey を使っているので、javascript が普通に動きますとのことなので、まずは試してみました。 $ mongo > console.log("hello") Tue Feb 12 02:20:25 ReferenceError: console is not defined (shell):1 動きませんでした。。。print()関数しかないそうなので、とりあえずこういう逃げ。 > var console = { log : function (args) { print(args); } }; > console.log("hello") hello

    JSXでコンパイルしたJavascriptをmongo shellで動かしてみるテスト - As a Futurist...
  • JSX で生成されたコードを動的ロードしてみた - あらびき日記

    この記事は abicky.net の JSX で生成されたコードを動的ロードしてみた に移行しました

    JSX で生成されたコードを動的ロードしてみた - あらびき日記
    gfx
    gfx 2012/12/23
  • JSXでグローバル変数を扱う際に気をつけること

    MeSHは、Multimedia e-Learning based on Simulator for Higher educationの略です。シミュレータをベースとしたe-Learning環境構築のためのフレームワークを開発しています。 ここで言うグローバル変数 一口にグローバル変数と言っても言語や環境によって意味が異なりますが,ここではWebブラウザ上でJavaScriptを扱う場合のグローバル変数を指すこととします.もう少し具体的に言えば,JavaScriptに於いてvarを付けずに利用した変数で,内部的にはwindow.変数名です.そして,JSXでグローバル変数を扱う場合には「js.jsx」をインポートした上で「var foo = js.global["foo"] as number;」のようにして使います(使用するグローバル変数がfooで,その型がnumberの場合).なので,グ

    gfx
    gfx 2012/11/27