並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 1120件

新着順 人気順

DSLの検索結果1 - 40 件 / 1120件

  • cURL as DSL — cURL as DSL 1.0 documentation

    cURL as DSL¶ github repository Target: Curl Command: Generate Code Reset Result code is printed here. Usage¶ Select target envirionment and type curl command in above text box. You get source code that works as same as curl command. Enjoy! Supported Options¶ It doens’t support fully options of cURL. It supports only options for http 1.x in the following list: [supported options:] --basic Use HTTP

    • 「駅すぱあと」を支える技術とDSLの話 - だいくしー(@daiksy)のはてなブログ

      「駅すぱあと」を支える開発 〜9262の可能性を繋げ!〜(DevLOVE関西Ver) というイベントが開催された。 ぼくも会場係としてスタッフ参加。 「駅すぱあと」の歴史から技術、開発のマネジメント手法に至るまで、幅広い話が聞ける良いイベントだった。 いろいろな話が聞けたのだけれど、僕は特に佐藤さんの「『駅すぱあと』新しい開発基盤の研究」がおもしろかった。 まだ開発途中で、実際の駅すぱあとには組み込まれていないそうなのだけれど、佐藤さんは「駅すぱあと」の運賃計算のDSLを研究・開発しているという。 曰く、鉄道の運賃計算は泥沼である。単純に距離や、目的地までの駅数などで運賃が算出できればよいが、鉄道の運賃計算には無数の特例がある。 下記リンク先に、JRの運賃の特例計算が列挙されているので、ちょっと見ていただきたい。 ……お分かりいただけただろうか。現在の「駅すぱあと」では、これらの特例がすべ

        「駅すぱあと」を支える技術とDSLの話 - だいくしー(@daiksy)のはてなブログ
      • 【Rubyが好き】微積分や統計解析を快適に扱う言語(DSL) rubyで作ったヨ! - Qiita

        Rubyで微積分や統計解析を快適に扱うDSL作ったヨ!↓ github バグ報告を頂ければ24時間以内に直します. このDSLで一番大事にしたのは、 微積分や極限、対数や三角関数などを紙上で数学をする感覚と同じ感覚で取り扱える事. わざわざRubyでやる必要、あったの...?(;゜0゜) 僕がこのDSLをRubyで作ったのにはいくつか訳があります. Rubyが好き MATLABが苦手 Rubyが好き mathmaticaが苦手 Rubyが好き pythonが苦手 Rubyが好き ... とにかくRubyが好きです. 少しマジレスすると僕の大好きなRubyは数学色が薄いのが少し悲しかったのです. (蛇足ですが、この想いからrubyのMatrixクラスにシコシコcommit してます. ex. https://github.com/ruby/ruby/pull/568 Matrixを成長させ組

          【Rubyが好き】微積分や統計解析を快適に扱う言語(DSL) rubyで作ったヨ! - Qiita
        • Rack解説 - Rackの構造とRack DSL - Qiita

          Rackとは RackはRubyによるWebアプリケーション開発のHTTP送受信処理を担当するモジュール(gem)で、Ruby on Railsを始めとする多くのWebフレームワークの一番下のレベルで利用されています。 本稿ではRackの基本的な部分を中心に説明します。 簡単なRackアプリケーション まず基本を理解するため説明用の簡単なアプリケーションを作成します。 最初にrack gemのインストールが必要ですが、Ruby on Railsをインストールしている場合はすでに必須モジュールとして入っています。単独でインストールする場合は次を参考にして下さい。 次にconfig.ruという名前の小さなファイルを作ります。これはRackのサーバ起動コマンドrackupの設定ファイルで、中身はRubyで記述します。 class ShowEnv def call(env) [ 200, # ステ

            Rack解説 - Rackの構造とRack DSL - Qiita
          • ねえRuby、どこまでが君でどこからが内部DSLなの?

            Rubyは内部DSL(Domain Specific Language)に向いている言語と言われます。Rake, RSpec, Rack, Sinatraなどは内部DSL on Rubyの代表的なサンプルです。Rubyの構文のユルさとメタプログラミングが内部DSLを容易にするんですね。 しかし正直僕は、何が内部DSLで、何が内部DSLでないのかがわかっていません。人が何をさして「これは内部DSLである」と言っているのかがよくわかりません。 そんなわけで… 以下では、Userクラスの設計を通して内部DSLらしきものを作ってみます。このイテレーションに対して「ここからが内部DSLだよ」「これは内部DSLとは呼ばないよ」と、誰か僕に優しく教えてくれませんか? Userクラスの作成 Userクラスはユーザ情報を管理するクラスです。ファイル名はuser.rbとします。 まずはユーザの登録機能を作りま

            • Rubyで自然なDSLを作るコツ:値を設定するときはグループ化して代入 - ククログ(2014-02-13)

              最近、fluent-plugin-droongaという分散データストリームエンジンを書いています。その中で、RubyでDSLを実現するときに工夫していることに気づきました。それは、値を設定するときは代入する字面にするということです。代入する字面にするために、グループ化用のオブジェクトを作っていました。 これだけだとどういうことかわからないので、具体例を示しながら説明します。 RubyとDSL Rubyを使っているとRubyで実現されたDSLに触れることが多くあります。RubyのMake実装であるRakeの設定ファイルもそうですし、ライブラリー管理ツールのBundlerの設定ファイルもそうです。 Rakeの場合:

                Rubyで自然なDSLを作るコツ:値を設定するときはグループ化して代入 - ククログ(2014-02-13)
              • Haskell の Monad とは言語内DSLのフレームワークである - あどけない話

                この記事は、Haskellを勉強してある程度分かったけど、Monadで挫折した人のための記事です。10分間で、Monadに対する納得感を得ることを目的としています。他の言語でいう「モナド」にも通用する内容ですが、Haskell の文法や用語を用いますので、他の言語の利用者に分かるかは不明です。 Haskellを勉強したのですから、 代数データ型 型クラス は分かっていることにします。Monad は、単なる型クラスの一つで、それ以上でもそれ以下でもありませんから、この二つが分かってないと話になりません。 また、言語内DSL(以下、DSLと略記)という考え方を知っていることも仮定します。Monad とは、DSLのフレームワークという直感を与えるのが、この記事の主眼ですからね。 さらに、構造化定理をいう単語を聞いてもビビらない人を想定しています。逐次、反復、分岐があれば、計算しうる計算はすべて記

                  Haskell の Monad とは言語内DSLのフレームワークである - あどけない話
                • ITmedia エンタープライズ:第3回 話題騒然! 「言語内DSL」の概念とRake【前編】 (1/2)

                  第3回 話題騒然! 「言語内DSL」の概念とRake【前編】:Ruby on Rails究極指南(1/2 ページ) 近年、特定の領域に存在する問題の解決に特化してデザインされたコンピュータ言語「DSL」が注目を集めている。本稿では、RubyとDSLの関係について解説していく。Railsによって注目を浴びたRakeを取り上げて、DSLの概念やRakeの特徴、その使い方などを説明する。 RubyとDSLの関係 近ごろ、DSLという考え方が注目を集めています。DSLとは、特定の領域(ドメイン)に存在する問題の解決に特化してデザインされたコンピュータ言語のことを指します。 DSLの考え方*は新しいものではありません。例えば、awkは「テキストをフィルタリングする」という問題を解くことに特化したDSLと考えられます。そのほか、自分で特定の問題を解くためにミニ言語を設計・実装された経験のある方もいるで

                    ITmedia エンタープライズ:第3回 話題騒然! 「言語内DSL」の概念とRake【前編】 (1/2)
                  • GitHub - ridgepole/ridgepole: Ridgepole is a tool to manage DB schema. It defines DB schema using Rails DSL, and updates DB schema according to DSL. (like Chef/Puppet)

                    Note ridgepole v2.0.0 Support Trilogy (cf. #447) Support Rails 7.1 (cf. #441) Drop support AcriveRecord 6.0 (cf. #440) Drop support ActiveRecord 5.x in ridgepole v1.2.0. Partitioning is no longer supported in ridgepole v1.1.0. ActiveRecord 7.x has some incompatible changes. If you get unintended differences in datetime columns consider changing precision: Add precision: nil for columns that previo

                      GitHub - ridgepole/ridgepole: Ridgepole is a tool to manage DB schema. It defines DB schema using Rails DSL, and updates DB schema according to DSL. (like Chef/Puppet)
                    • DSLでAPIを書きたい!!APISchemaでらくらくAPI生活をはじめよう - hitode909の日記

                      この記事は,はてなエンジニアアドベントカレンダー2015の5日目です. 前日はこの記事でした.スクリーンショットで振り返る・はてなブログ記事編集画面デザインの歴史 - Hatena Developer Blog 最近作った(といっても去年から作っている…),APISchemaというライブラリをご紹介します. APISchemaとは BMIを計算しよう スキーマを書こう メタデータ リソースの定義 エンドポイントの定義 スキーマを使う スキーマのパース ルーターを生成して,ルーティングをおこなう リクエストのバリデーションをおこなう レスポンスのバリデーションをおこなう APIのドキュメントを配信する 採用実績 関連 JSON Schema 便利グッズ まとめ APISchemaとは APISchemaは,DSLでHTTP APIの定義を書けるものです.以下のような機能を持っています. AP

                        DSLでAPIを書きたい!!APISchemaでらくらくAPI生活をはじめよう - hitode909の日記
                      • 連載企画 第1回 Perl で DSL する方法 - tokuhirom's blog

                        昨年の YAPC の頃に書こうと思ってたネタを id:cho45 さんのひとことで不意に思いだしたのでここに記す。 まず、DSL とはなにか。この連載企画では↓こういうのを DSL とよぶことにします。 session 'testuser' => run { flow 'log in and out' => check { flow 'log in' => check { get 'http://localhost/'; fill form 'login' => { username => 'testuser', password => 'drowssap', }; content should contain 'log out'; }; flow 'log out' => check { get 'http://localhost/'; click href 'log out'; };

                        • DSL作りたいんだけど何もわからないので識者に教えてもらいたい - Lambdaカクテル

                          トランスパイルするDSLを作りたいが何を読んだらいいのかまだよくわかっていないので、誰か教えてほしい、という記事です。 あらすじ DSL作りたい あらすじ 最近色々な技術を勉強している。具体的にはロガーの実装を読んだりRefinement Typesの勉強をしたりしている。仕事で必要というのが半分、興味半分といった具合で、素振りも兼ねてやっているので結果的に仕事で役立ったりしている。 個人的には、こういう暮らしの勉強みたいなところだと、本業で勉強しなければならないものに加えて、シナジーが生じるような勉強をしたり購買をすると良いのだろうなと思っている。 たとえばラズパイとかN100のマシンを買ってちょっとしたk3sクラスタを作ってみたりするとクラスタ技術の良い勉強になる。さらに電子工作の勉強をしておくとラズパイと組み合わせてIoT的なこともできるようになる。 そんな中、ずっと自分が勉強したい

                            DSL作りたいんだけど何もわからないので識者に教えてもらいたい - Lambdaカクテル
                          • Fluentd Config DSLについての話 - たごもりすメモ

                            Fluentd に Config DSL を導入しろや! つまり設定をRubyのコードで書かせろや! という声は前から多かった。が、なんかいろいろ面倒な思惑が交錯し、あと「設定ファイルにrubyのコードでcallbackとか書いてプラグインの挙動を制御したい!」とか更に面倒なことを言いだした人がいたせいでDSL以外の設定書式でそれどうすんの……とコミッタの精神状態がどん底まで落ち込み長らく放置されていた。 みんなもOSSプロジェクトにfeature requestするときはあんまりステキすぎる機能のリクエストをする前に少し考えてみよう。まじで。 https://github.com/fluent/fluentd/pull/97 で、そんな数ヶ月ののち、ちょうど Fluentd v11 ハッカソンなるものがあったので、生ハム食べつつワイン飲んでたらConfig DSLのことを思い出した。まー

                              Fluentd Config DSLについての話 - たごもりすメモ
                            • SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ! - hp12c

                              ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ! : melborne.github.com - Sinatraのサイトを開くとSinatraはDSLだと書いてある Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort: (SinatraはRubyで手早くWebアプリケーションをつくるためのDSLです) DSLというのはDomain-Specific Language つまり特定の目的に特化した言語のことだ 確かにSinatraはWebアプリケーションという 特定の目的のために作られたものだけれども それは言語じゃない

                                SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ! - hp12c
                              • 第1回 DSLとは? | gihyo.jp

                                第1回目は、DSLの基本的な概念について説明します。 DSL概要 DSL(Domain Specific Language)は、ドメイン固有言語と訳されてます。DSLは、Java、C#などの汎用言語とは違い、ある特定の種類の問題に特化したコンピュータ言語です。 今回の連載では、DSLの世界を解き明かします。そして、実際にDSLをつくることで、よりDSLの理解を深め、「⁠用法・用量を守って使える」ようになるのが、今回のゴールです。 DSLの必要性 なぜ、DSLを学ぶ必要があるのでしょうか。 Ruby on Railsの登場以降、メタプログラミングという言葉を良く聞くようになりました。メタプログラミングというと、マクロ、コードの自動生成、テンプレートを上げることができます。 DSLは、メタプログラミングで使われます。メタプログラミングは、一般的なプログラムとはまったく違った方法をとっているので

                                  第1回 DSLとは? | gihyo.jp
                                • 第61回 Ruby/Rails勉強会@関西 で DSL について話してきた - ちなみに

                                  参加 二年ぶりくらいに Ruby/Rails勉強会@関西 に参加してきた。61回目ということでどうせなら前回の60回目に行くべきだったと変な悔しさを覚えた。 http://rubykansai.doorkeeper.jp/events/10392 久しぶりの初級者レッスン 当日は僕にしては珍しく40分前には最寄り駅について、お昼ごはんまで食べて意識高い感じだった。勉強会のときはだいたい面倒くさくてお昼を抜くことが多い。 JR新大阪 東口 北側から出るといいみたい #rubykansai @ Shin-Ōsaka Station http://t.co/YNlcepjUK7— HIGAKI Masaru (@higaki) 2014, 5月 31 しかし @higaki さんのつぶやきを見ていたにも関わらず、残念なことに南側から出てしまっていて、見てきていた地図と全然違うし、歩いても全然それ

                                    第61回 Ruby/Rails勉強会@関西 で DSL について話してきた - ちなみに
                                  • ブロックによるRuby内DSLの起源 - 世界線航跡蔵

                                    時代とともにRubyの使われ方は変わってきましたが、いつの頃からか発生したDSLのホスト言語としての役割にはずっとお世話になってます。人に優しく、故にプログラマ以外にも優しく、これがとてもRubyらしくて好きな点です。 #ruby25th— Yuki Yugui Sonoda (@yugui) 2018年2月24日 僕にとってRubyはfluentdやchefのための言語ですが、プラガブルなOSSエコシステムであったり、強力なDSLを作りやすかったりするところにその魅力を感じます。特にfluentdは大好きなOSSで、Mackerel運営でもかなり参考にさせてもらっています。 #ruby25th おめでとうございます!— songmu (@songmu) 2018年2月24日 DSLは本当に感動したところなんだけど、DSL開発ツールとしてのRubyが「発見」されたものなのか意図されたものな

                                      ブロックによるRuby内DSLの起源 - 世界線航跡蔵
                                    • Go言語からmrubyのDSLを読み込んでよしなに使う - ローファイ日記

                                      Go言語便利だけど、文法をこねくり回して内部DSLを作るとかには向いていないので、ルビー風にDSLを読み込ませて設定と替えさせていただきます、と言うのが少し難しい。 いっそGo内部でRubyを組み込んで実行したい。mrubyならできるんじゃね? と思ってやってみたらそれっぽいのができた。 Vagrant、Packer、Consulなど、DevOps対応界隈でその名を知らない者はいない mitchellh さんの mitchellh/go-mruby · GitHub をつかう。 多分だけど、ハシモト氏も同じようなこと考えてたんじゃないだろうか。結局 hashicorp/hcl · GitHub を使われてるけれど。 完成したそれっぽいの.go package main import ( "fmt" "io/ioutil" "os" "github.com/mitchellh/go-mrub

                                        Go言語からmrubyのDSLを読み込んでよしなに使う - ローファイ日記
                                      • speed.io - Internet DSL Speedtest

                                        Speed.io is a modern DSL speedtest to analyze your broadband internet access. You find that your internet connection is too slow or you are just curious how fast you are - speed.io is a perfect tool for a fast speed check - worldwide. speed.io measures your current internet speed to the nearest server (we have almost 50.000 server worldwide). We test your download (speed with which you receive da

                                        • Inside of Asakusa DSL

                                          Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc... Hadoop / Spark Conference Japan 2016 キーノート講演資料 『Project Tungsten Bringing Spark Closer to Bare Metal』 Reynold Xin (databricks) ▼イベントページ http://hadoop.apache.jp/hcj2016-program/ http://hcj2016.eventbrite.com/

                                            Inside of Asakusa DSL
                                          • DSLについて語るときに僕の語ること

                                            Rubyが社会に浸透したいまだからこそDSLについてもう一度考えてみた

                                              DSLについて語るときに僕の語ること
                                            • 人間とウェブの未来 - リクエスト単位でApacheのリソースを制御するためのmrubyを使った制御DSLコードの紹介

                                              人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 IOT研究会やコンテナ勉強会で発表した内容を制御コード例を交えて具体的なリソース制御の書き方を紹介したいと思います。 詳しい内容は上の行のエントリへのリンクを見て頂くとして、簡単にまとめると、Apacheへのリクエスト単位でCPUやDISK I/O等のコンピュータリソースを制御しようという話になります。今回はその仕組(mod_mrubyでcgroupを制御)の導入から具体的な制御DSLコードのサンプルを紹介します。 導入 導入はこれまでに何度も紹介していた内容とかぶるのですが、mod_mrubyのインストールと同様です。まずはgithubからmod_mrubyをcloneして、mod_mrubyディレクトリにあるbuild_config.rb

                                                人間とウェブの未来 - リクエスト単位でApacheのリソースを制御するためのmrubyを使った制御DSLコードの紹介
                                              • RSpec ruby DSL for spec driven

                                                • JavaScriptで型が書けるDSLを提供するdeftypes.js作った - mizchi log

                                                  こじらせJavaScriptシリーズです。 mizchi/deftypes.js https://github.com/mizchi/deftypes.js 主にcoffee-script用のDSLです。以下すべてcoffee。 ブラウザ <script src="https://raw.github.com/mizchi/deftypes.js/master/deftypes.js"></script> Deftypes(); //provide DSLNode npm install deftypes 概要 型が書けます。残念ながら動的チェックです。 Point = {x: Number, y: Number} p1 = def Point, {x:1, y:2} #=> {x: 1, y:2} p2 = def Point, {x:1, z:2} #=> type error def

                                                    JavaScriptで型が書けるDSLを提供するdeftypes.js作った - mizchi log
                                                  • javascript - λ表記をDSLに : 404 Blog Not Found

                                                    2010年10月02日05:00 カテゴリMathLightweight Languages javascript - λ表記をDSLに 計算論 計算可能性とラムダ計算 高橋正子 クロージャーがある言語には、λ演算がすでに含まれています。 が、たいていの場合、その言語の流儀で書かねばなりません。たとえばこんな風に。 var Z = function(f) { return (function(g) { return function(m) { return f(g(g))(m); }; })(function(g) { return function(m) { return f(g(g))(m); }; }) }; ふつーに Z := λf. (λx. f (λy. x x y)) (λx. f (λy. x x y)) と書けたらよいと思いませんか? λscript(笑) できるようにし

                                                      javascript - λ表記をDSLに : 404 Blog Not Found
                                                    • DSL information

                                                      What is DSL? Damn Small Linux is a very versatile 50MB mini desktop oriented Linux distribution. Damn Small is small enough and smart enough to do the following things: Boot from a business card CD as a live linux distribution (LiveCD) Boot from a USB pen drive Boot from within a host operating system (that's right, it can run *inside* Windows) Run very nicely from an IDE Compact Flash drive via a

                                                      • Shibu's Diary: cURL as DSLとは何だったのか。あるいは細かすぎて伝わらないcURL as DSL。

                                                        渋日記@shibu.jp 渋川よしきの日記です。ソフトウェア開発とか、ライフハックを中心に記事を書いていきます。 By Jeremy Brooks under CC BY-NC 先日、cURL as DSLというツールを公開しました。その後、何度も同じような質問を受けたりしたので、ブログにまとめてみます。 なぜこのツールを作ったの? RESTfulというものは大分一般的になってきました。HTTPでAPIを提供というのもよく見かけます。ですが、僕はこのRESTfulというやつが嫌いです。 GETのURLをシェアすればいつでも同じページがある(変な状態を持たない)、みたいな思想はいいんですが、HTTPのAPIはどうも使いにくい。ドキュメントのHTTPのサンプルを見て、ドキュメントをじっくり読み込んで、パラメータをJSONやらXMLで組み立ててボディに乗っけて(しかも大抵パラメータがアホのように

                                                        • Rubyでアドベンチャーゲーム用DSL(ドメイン固有言語)を作る | クリエイターのための総合情報サイト CREATIVE VILLAGE

                                                          新しくプロダクト開発を始める時、あなたはどの言語でコードを書くことを選ぶでしょうか? シンプルに、スピーディーに開発が行える言語?メモリ効率や実行速度に優れた言語?はたまた一生使い続けると愛を誓った言語でしょうか。 今回は、そんな言語選定における選択肢としてのDSL(ドメイン固有言語)とその作り方について、Rubyを用いたコードを通して紹介していきます。 大和 拓朗(おおわ たくろう) 株式会社メンバーズ メンバーズエッジカンパニー Webエンジニア 2018年中途入社。SNS分野でのフィード広告運用システム・キャンペーン管理システムの開発に従事。 最近のブームは、リモートワーク定着を口実にしたホームオフィス環境の整備やスマートホーム化。お寿司とドーナツが好き。 GPLとDSL 言語選定は、プロダクトに求められる要件(保守性やパフォーマンス、セキュリティなど)を基準に、言語自体の性質、業界

                                                            Rubyでアドベンチャーゲーム用DSL(ドメイン固有言語)を作る | クリエイターのための総合情報サイト CREATIVE VILLAGE
                                                          • neue cc - LINQ to BigQuery - C#による型付きDSLとLINQPadによるDumpと可視化

                                                            と、いうものを作りました。BigQueryはGoogleのビッグデータサービスで、最近非常に脚光を浴びていて、何度もほってんとりやTwitterに上がってきたりしてますね。詳細はGoogle BigQuery の話とかGoogleの虎の子「BigQuery」をFluentdユーザーが使わない理由がなくなった理由あたりがいいかな、超でかいデータをGoogleパワーで数千台のサーバー並べてフルスキャンするから、超速くて最強ね、という話。で、実際凄い。超凄い。しかも嬉しいのが手間いらずなところで、最初Amazon RedShiftを検討して試していたのですが、列圧縮エンコードとか考えるのすっごく大変だし、容量やパワーもインスタンスタイプと睨めっこする必要がある。それがBigQueryだと容量は格安だから大量に格納できる、チューニング設定もなし、この手軽さ!おまけにウェブインターフェイスが中々優れ

                                                            • 米Foursquare、MongoDBクエリのScala DSL「Rogue」など社内技術をオープンソースで公開 | OSDN Magazine

                                                              米Foursquareが、Webフレームワーク「Lift」で利用できるMongoDBクエリのScala DSL「Rogue」など、社内で開発した2種類のツールをオープンソースとして公開した。Githubでコードを公開している。 Foursquareは、ロケーションベースのソーシャルネットワーキングサービス「foursquare」を開発・提供するベンチャー企業。iPhoneをはじめとする各種スマートフォン向けアプリケーションとして提供されており、位置情報を記録したり友人と共有できる。 RogueはScalaで書かれたDSLで、ScalaベースのWebフレームワーク「Lift」で利用できる。タイプセーフで、Lift内でMongoDBに対してコマンドの構築と実行が行えるという。同社によると、当初社内利用向けに開発され、現在ほとんどのMongoDBクエリで利用されているという。 同社はまた、「Fu

                                                                米Foursquare、MongoDBクエリのScala DSL「Rogue」など社内技術をオープンソースで公開 | OSDN Magazine
                                                              • InfoQ: 複雑な外部DSLを開発する

                                                                Railsフレームワークは、Rubyで書かれたWebアプリケーションを管理するための、RubyベースのDSLと呼ばれています。RailsがDSLと呼ばれる理由の一つは、汎用的な目的のRuby言語とは対照的にRailsがプログラミングでは無いように思えるのに対して、Ruby言語の機能のいくつかがプログラミングをするのに利用されているからです。言語として考えたとき、その基盤がそれ自体で言語となるのにとても有利なスタートであるとして、RailsはRuby上で作られました。 Dave Thomas (PragDave)が、Rails全体をDSLとして考えているのかは私にはわかりません。しかし、Railsのいくつかの機能が異なるDSLによって支えられていると彼は言っています。彼が示す例は、DSLとしてのActive Record宣言です。ドメインモデルのエンティティの関連に特有な、いくつかの単純な専

                                                                  InfoQ: 複雑な外部DSLを開発する
                                                                • GitHub - rails/jbuilder: Jbuilder: generate JSON objects with a Builder-style DSL

                                                                  You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                    GitHub - rails/jbuilder: Jbuilder: generate JSON objects with a Builder-style DSL
                                                                  • HaskellとDSL - あどけない話

                                                                    LL Planets の「メタプログラミングの光と闇」で Haskell について話してきました。Perl、Python、Ruby が概ね内部 DSL を作る話だったのに対し、Haskell では外部DSLを内部に埋め込むという話をしました。短い時間で説明不足になった感があるので、この記事で二点ほど補足します。 Haskell では文法がうまく設計されており、コードを書けば自然とDSLっぽくなるので、わざわざ内部DSLなんて言わない。それよりもコンビネータという考え方を学ぶ方が新しい視野がひらけてよい。 Haskell ではパーサーを作るのが簡単。だから自分で言語を作るのも簡単。その言語を外部ファイルから読み込んでもいいし、HERE DOCUMENT のように内部に貼付けることもできる。 関数を二項演算子として扱う Haskell では関数をバッククォートで囲むと二項演算子になります。 i

                                                                      HaskellとDSL - あどけない話
                                                                    • SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ!

                                                                      Sinatraのサイトを開くとSinatraはDSLだと書いてある。 Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort: (SinatraはRubyで手早くWebアプリケーションをつくるためのDSLです) DSLというのはDomain-Specific Language、つまり特定の目的に特化した言語のことだ。確かにSinatraはWebアプリケーションという特定の目的のために作られたものだけれども、それは言語じゃない。 それが言語といえるためにはオブジェクトのように独立していて閉じてなきゃいけない1。でもSinatraは独立も閉じてもなくて、Rubyに寄生することで存在している。 いやSinatraは言語どころか、Rubyの上の専門用語ですらない。 それが用語といえるために

                                                                      • ラムダ式で学ぶクロージャとDSL - Qiita

                                                                        はいこんにちはこんにちは! 今日はラムダ式でクロージャとDSLの解説をします。 ガチなラムダ計算の話ではまったくないのでご安心ください。函数型プログラミング言語の話でもないので怯える必要はありません。 それと、実用なDSLそのものではなく、どちらかといふと ふざけたDSL をシンプルに作ってみました! といふ例題なのでその点はご承知おきください。 謎のコピペとDSL まづはこちらのソースコードをお読みください。 # -*- Coding: utf-8 -*- scripter = ->(*args){->{puts args.join("\n")}} title = ->(text){"『#{text}』\n"} paragraph = ->(*args){args.join("\n")+"\n"} chara = ->(name){ ->(text){"#{name}「#{text}」"

                                                                          ラムダ式で学ぶクロージャとDSL - Qiita
                                                                        • 言語内 DSL を考える。

                                                                          kmizu @kmizu いきなりだけど言語語り。自分の理想とする言語は、ユーザによる抽象化の試みを可能な限り邪魔しないと同時に、「破れにくい」抽象化層を簡単に構築できる言語であって欲しい。 2010-10-23 13:30:41 kmizu @kmizu 「破れにくい」というのはどういうことかというと、いわゆるマクロを持っている言語の多くに共通する話だと思うのだけど、定義されたマクロを間違った、あるいは想定外の使い方をした場合に、その中身、つまり展開結果がユーザに漏れてしまうのは駄目だと思うのだ。 2010-10-23 13:32:16

                                                                            言語内 DSL を考える。
                                                                          • Elixir の DSL がどう実装されているか、マクロの展開順を追ってみた(Plug.Builder を例に) - Qiita

                                                                            use Plug.Builder したモジュール内で plug :atom, [optional args] と書くことで、モジュールに他の plug を組み込むことができる。 マクロを駆使して実装された plug の中身がどうなっているのか、 Plug.Builder を再実装しながら追ってみることにした。 マクロの参考資料 Elixir Docs - Kernel Getting Started - Macros MyPlugBuilder の概要 Plug.Builder を丸ごと再実装するのは骨が折れるので、 plug マクロだけを提供するように単純化したモジュール MyPlugBuilder を作ることにする。 MyPlugBuilder は以下のように使う:

                                                                              Elixir の DSL がどう実装されているか、マクロの展開順を追ってみた(Plug.Builder を例に) - Qiita
                                                                            • GitHub - mig1984/bashible: Simple bash DSL framework for writing shell scripts safe and agile.

                                                                              Bashible is a deployment/automation tool written in Bash (DSL). Inspired by Ansible. Simplifies things and prevents usual mistakes. Features: improved readability unhandled failures prevention skipping already done tasks command chaining working directory always as expected variable checking dependencies; calling sub-scripts delayed tasks executed on finish child termination handler; no processes

                                                                                GitHub - mig1984/bashible: Simple bash DSL framework for writing shell scripts safe and agile.
                                                                              • GADTによるHaskellの型付きDSLの構築 - プログラミングの実験場

                                                                                GADTについて、この解説が分かりやすい(英語)。 http://en.wikibooks.org/wiki/Haskell/GADT 背景 Haskell(というか関数型言語一般)の素晴らしい機能の一つ、代数的データ型を使うと、抽象構文木(AST)をHaskellの枠組みの中で表現できる。 例えば、整数の足し算・引き算ならば、 data Exp = Const Int | Add Exp Exp | Subtract Exp Exp さらにこのASTを数値一般に使いたいので型パラメータrをつけて多相にしてみる。 data Exp r = Const r | Add (Exp r) (Exp r) | Subtract (Exp r) (Exp r) これを使えば、例えば(3 + 4) - 2という数式は、Subtract (Add (Const 3) (Const 4)) (Const

                                                                                  GADTによるHaskellの型付きDSLの構築 - プログラミングの実験場
                                                                                • FreeモナドとTagless FinalによるDependency InjectionのためのDSL - Qiita

                                                                                  前回の記事では、ReaderモナドやFreeモナドを使ってDependency Injectionを行うための小さなDSLを組み立てた。今回の記事では、まず前回組み立てたDSLの課題であるExpression Problemと、それを解決するための機能Injectと、さらにはTagless Finalを用いたDSLについて述べる。 この記事は前回の記事の知識を前提としているので、分からない言葉などがある場合はまず前回の記事を参照して欲しい。また、文章について不明なことや意図が分かりにくい部分があれば気軽に指摘して欲しい。 注意: 記事の中にあるコードは読みやすさのためにimportなどを省略しているので、このままでは動かない。動かしたい方はGithubのリポジトリを使うとよい。 Expression Problem Expression Problemとは、こちらのサイトを引用すると次のよ

                                                                                    FreeモナドとTagless FinalによるDependency InjectionのためのDSL - Qiita