タグ

2016年12月3日のブックマーク (15件)

  • heterocephalus - Haskellとフロントエンドが仲良くできるテンプレートエンジン - Qiita

    問題提起 近年、フロントエンドElm1 や React.js などで実現することが多くなり、Webサーバに求められる役割は、JSON形式のAPIを提供するだけでよい例も増えてきました。 しかし、規模によってはHTMLにサーバサイドで変数を埋め込んでそのまま表示したい案件も多く存在します。 JSON形式で良ければaesonなどの恩恵にあずかれば良いのですが、Haskellで書かれたWebサーバで、バックエンド側の変数を埋め込んだHTMLレスポンスを返すにはどうしたらよいでしょうか? Yesodの解決策と課題 HaskellのWebフレームワークとして歴史のあるYesodでは、Shakespeareを推奨しています。 Shakespeareは、Haskellっぽいインデントベースの文法を強制されるというデメリットがありますが、Template Haskellによってコンパイル時にテンプレー

    heterocephalus - Haskellとフロントエンドが仲良くできるテンプレートエンジン - Qiita
    igrep
    igrep 2016/12/03
    さりげない自社のステマがにくいねぇ
  • Haskellクイックソート計測大会2016 - Qiita

    このエントリは、Haskell Performance Advent Calendar 2016 3日目の記事です。 導入 偉い人は言いました。パフォーマンスについて云々する前に、まず測れ。 という訳で記事では、クイックソートを例に取り、Haskellでのパフォーマンス計測を実施してみます。 Haskellのパフォーマンス改善をするなら、ITProの物のプログラマはHaskellを使うという連載記事がためになります。クイックソートの改良をはじめ、記事で扱われている内容のほとんどは該当連載に既に書かれているのですが、ものによってはだいぶ昔の記事だったりするので、2016年現在の状況を踏まえて、as_capablが実際にやった事を書いていこうと思います。 TL;DR Haskellコードのパフォーマンス計測にはcriterionを使おう やっぱりリストより配列が速い やっぱりC++の方が

    Haskellクイックソート計測大会2016 - Qiita
    igrep
    igrep 2016/12/03
    list/improved のdivideのところをpartitionでもっとシンプルに書いてみたら割と遅くなった。なるほどなぁ、という感じ。
  • Vim 8.0 Advent Calendar 3 日目 ジョブ - Qiita

    この記事は Vim 8.0 Advent Calendar の 3 日目の記事です。 ジョブ機能を使うことで、外部プロセスを非同期で実行することができます。 ジョブを使う この例では、ジョブを使って外部コマンド git grep -n word を実行し、結果を 1 行ずつ非同期で処理し、quickfix に追加しています。 function! s:handler(ch, msg) abort caddexpr a:msg cwindow endfunction call setqflist([]) let s:job = job_start( \ ['git', 'grep', '-n', 'word'], \ {'out_cb': function('s:handler')}) このように、ジョブを使うことで外部プロセスをバックグラウンドで実行し、チャンネルとコールバック関数を使うこと

    Vim 8.0 Advent Calendar 3 日目 ジョブ - Qiita
    igrep
    igrep 2016/12/03
  • String_random.jsをHaskellへ移植した - Qiita

    このエントリは Haskell Advent Calendar 2016 の N 日目ではありません。1 String_random.js をHaskellへ移植しました。こいつの元ネタは 10年以上前からあるPerlの実装 だと思うのですが、なぜかいろいろな言語へ日人が移植をしています。 PHP Java golang その中でも JSへの移植 である String_random.js は300行未満のコードで \1 のような後方参照にも対応していているというとんでもない実装だったので、これをベースにHaskellへ移植して string-random というパッケージを作りました。 Haskellへ関数型じゃない言語のコードをどうやって移植するの? Haskellでは基的にイミュータブルなデータを使ってプログラミングすることになりますので、アプリが持つ状態は 1). 関数に引数とし

    String_random.jsをHaskellへ移植した - Qiita
  • Elm 0.17~0.18版 NativeModuleの書き方 - Qiita

    ElmでNativeモジュールを扱う方法は公式に公開されていません。 (個人的な予想ですが、将来的にも公式に承認されることは無いと考えています。) 利用する時は自己責任の元に利用するようにして下さい。 Elm0.17~0.18では従来のElm.Nativeモジュールが提供されなくなったようです。 これに伴って従来のElm.Nativeにモジュールを追加していくような書き方が出来なくなり、よりシンプルにNativeModuleを定義出来るようになっています。 この投稿では、Elm0.17でのNativeModuleの書き方について見ていきます。 モジュールをセットするための変数 Elm0.17では、モジュールを拡張するためにあるルールにそって命名されたjavascriptの変数にモジュールをセットすることでElmからアクセス出来るようになっています。 あるルールというのは、elm-packa

    Elm 0.17~0.18版 NativeModuleの書き方 - Qiita
    igrep
    igrep 2016/12/03
    早く公式に認めてほしい。。。じゃないと、Elmで書いたlovely-communeの移植ができない
  • elm-css で PostCSS も使える CSS in Elm - Qiita

    (筆者は今では積極的にはこの手法を使っていません。詳しくは追記をご覧ください。) elm-cssライブラリのCSS生成機能とelm-css-webpack-loaderを用いることで、CSS in Elm のさまざまな恩恵にあずかれます。 はじめに なぜ CSS in Elm が必要か CSS in JS という言葉が、React界隈で使われるようになっていくらか経ちました。 CSS in JS は、CSS で記述するスタイルを JavaScript で書いてしまうことで、名前空間やネスト構造が使えない不便なCSSから解放されることを目的にしています。 ElmCSS in JS (Elm) を採用することで、従来のCSSによるスタイルにおける以下の問題を解決できます。 a. スタイルの記述が Elm コンポーネントとは別のファイルになって、配布しづらい b. CSS に名前空間

    elm-css で PostCSS も使える CSS in Elm - Qiita
    igrep
    igrep 2016/12/03
  • Yesodのテンプレートから生成されるファイルの役割 - Qiita

    Yesodを使ってWebアプリケーションを作るとき、よほどのことがなければYesodのベストプラクティスが詰まったテンプレートをベースに開発するのが、無難な選択です。 HaskellのビルドツールであるstackにはYesodのテンプレートが提供されています。 このエントリではテンプレートが生成するファイルの中でも、特に重要なものを解説します。 各ファイルの役割を知ることで、独自のカスタマイズや拡張を施したいときに、どうすればいいか当たりが付けやすくなります。 stackでYesodプロジェクトを作る 例えば、データベースがPostgreSQLのYesodプロジェクトをテンプレートから生成するコマンドは次のようになります。

    Yesodのテンプレートから生成されるファイルの役割 - Qiita
    igrep
    igrep 2016/12/03
    yesod使う日が来るか知らんけど
  • task-blog.net is a custom short domain

    task-blog.net is a branded short domain If you are here by mistake, you can go back

    task-blog.net is a custom short domain
    igrep
    igrep 2016/12/03
    がんばれ!私もwithをもうちょっと頑張ろうか。。。どうしようか。。。
  • yamlを千切り「sengiri_yaml」 - Qiita

    sengiri_yamlとは? 巨大なyamlファイルを1要素単位に分割したり、逆に分割されたyamlファイルを連結して1つの Hash や Array として扱うためのgemです。 https://github.com/sue445/sengiri_yaml https://rubygems.org/gems/sengiri_yaml キャベツの千切りみたいにyamlを細切りにすることをイメージしたgemです。1 使い方 yamlの分割 元ファイル

    yamlを千切り「sengiri_yaml」 - Qiita
    igrep
    igrep 2016/12/03
    /etc/hoge/みたいなディレクトリー以下にある設定ファイルを全部読みたい、みたいなよくあるケースにも使えるんでしょうね。
  • Vim 8.0 Advent Calendar 2 日目 チャンネル - Qiita

    この記事は Vim 8.0 Advent Calendar の 2 日目の記事です。 Vim 8.0 では、外部リソースとのやりとりを行う機能としてチャンネルが追加されました。 記事では、チャンネルの基的な使い方として、ソケット通信を行う方法について簡単に説明します。 詳細については Vim 付属の help を参照してください。 チャンネルを使う この例では、ローカルホストの HTTP サーバに対して ch_sendraw() 関数を使ってリクエストを送り、結果をハンドラで受け取って表示しています。 " リモートからのレスポンスがあった際に呼ばれるハンドラ関数を定義します function! s:handle(ch, msg) abort " レスポンスを表示します。実際にはタイミング次第ではレスポンスが分割される可能性もあり得ます echo a:msg " ch_close() 関

    Vim 8.0 Advent Calendar 2 日目 チャンネル - Qiita
    igrep
    igrep 2016/12/03
    JSのXHRとかに渡すコールバックと似たような振る舞い、という理解でよいのかしら?
  • とあるHaskellアプリでプレゼンする方法

    この記事はHaskell Advent Calendar 2016の一日目の記事みたいです。 こんばんは。12月ですね。週末に車で旅行に行くことになっているので雪がふらないとうれしいです。なぜならウチの車、雪がつもったときの装備が貧弱だからです! ところで、近年は草の根の勉強会がたくさん開催されています。そんな勉強会で発表される機会のある方も多いと思うんです。問題はどんなプレゼンツール使うか悩むことではないでしょうか?また、プレゼン資料を作るのにやけに時間をったりしないでしょうか?今日はそんなときのために便利かもしれないHaskell製のツールCarettahのご紹介です。 あと重要なことを忘れてました。記事はLinuxユーザ向けです。WindowsMac OS XではCarettahは使えません。これは、このアプリケーションがWiiリモコンに対応するためにcwiidというライブラリ

    とあるHaskellアプリでプレゼンする方法
  • Writerを使ってはならない - Qiita

    2022-05-20追記: mtl-2.3, transformers-0.5.6以降においてリークの起こらないCPS版Writerが提供されているのでそちらを用いてください: https://hackage.haskell.org/package/mtl-2.3/docs/Control-Monad-Writer-CPS.html https://hackage.haskell.org/package/transformers-0.5.6.0/docs/Control-Monad-Trans-Writer-CPS.html Writer Monadの問題点 Haskell スペースリーク アドベントカレンダーX日目(X ~ 360)です。 Writer Monadを使ってはならないという話があります。 理由は単純で、スペースリークが発生するためです。 以下の単純なアクションを評価してみま

    Writerを使ってはならない - Qiita
    igrep
    igrep 2016/12/03
    はぁ、改めて去年のやつも読み返したけどやっぱめんどうくさいなー。まぁ、実際気にしなくても普通に動くときは普通に動くんでしょうけどね。
  • Yesod のインストールとサンプルプログラムの実行 - Qiita

    今回のゴール Scaffolded Site によるサンプルプログラムの実行。 以下のようなカッコイイサンプルが動きます。 Yesod とは Yesod は Pure Haskell で記述されるフルスタック Web フレームワークです。MVC アーキテクチャを採用しています。 簡単に説明すると、Web サイトや Web アプリケーションが Haskell で作れます。 Yesod で動いている Web アプリケーションや Web サイト Front Row Education haskellers FP Complete School of Haskell Yesod のメリット 実行時のバグ (XSSやリンク切れなど) をコンパイル時に検出可能 Haskell で Web 開発ができる Yesod のデメリット 学習コストが非常に高い コンパイル時間が長い 情報が非常に少ない Yeso

    Yesod のインストールとサンプルプログラムの実行 - Qiita
  • IntelliJ IDEAは実はJavaだけでなくPHPなども書ける無敵開発環境

    こんにちは。福田です。この記事はIntelliJ IDEA Advent Calendar 2016の2日目の記事として投稿します。さて、僕はまずはっきり言うとPHPerでありJavaニャンを書くような人ではありません。ですがIntelliJ IDEAを使っています。なぜならばPHPなども書けるから。 今回は多言語(プログラミング言語)対応についての方法をざっくり記述しておきます。 これはMacを前提として書いてあります。ご注意ください。また、以下はUltimate版について主に言及しております。 先ずはプラグインを入れる IntelliJ IDEAを起動したら⌘(command) キー+,(カンマ)キーを同時に押します。そして設定画面を出し、左側のPluginsを選択。その後、Install JetBrains Pluginを選択しましょう。 ここでプラグインを探します。標準搭載のJav

    IntelliJ IDEAは実はJavaだけでなくPHPなども書ける無敵開発環境
    igrep
    igrep 2016/12/03
    そうか、またRuby書く機会があったらRuby plugin使ってみようかな。
  • Worker-Wrapper transformationについて軽く - Qiita

    Worker-Wrapper transformation(Worker-Wrapper変換)について簡単に説明したいと思います。数年前は調べてもあまり資料見つからなかったのですが、現在は幸いにも簡単に見つかります。 http://www.cs.nott.ac.uk/~pszgmh/wrapper.pdf http://www.cs.nott.ac.uk/~psxjlha/wwmf.pdf 全部を読んではいないんですがどうやらfixを用いたような最適化手法の一種のようです。 まず準備を行います。 fact関数の遅さ 例えばfact関数を単純に再帰を使ってナイーブに書いてみます。 import Data.Function (fix) fact :: Int -> Int fact 0 = 1 fact n = n * fact (n-1) 負数の引数はここでは無視します。 さてGHCでは基

    Worker-Wrapper transformationについて軽く - Qiita
    igrep
    igrep 2016/12/03
    "再帰部ではUnboxedな値を用いて高速に計算しつつ、コンストラクタのつけ外しは最初と最後の一回ずつのみ"