タグ

ioに関するkiyo_hikoのブックマーク (16)

  • Perlでファイルを丸呑みする3つの方法 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Perlでファイルを丸呑みする3つの方法 - Qiita
    kiyo_hiko
    kiyo_hiko 2018/08/20
    local $/; → Scalarに改行文字ごとドカ読み
  • The monad laws

    モナド則 三つの基則 「失敗」は付けたし 出口はない Zero と Plus 要約 このチュートリアルではいままで、技術的な議論を避けてきました。しかし、 モナドについて考えるべき技術的な要点が2、3あります。モナド演算は、 「モナド公理」として知られている、いくつかの法則群に従わなければ なりません。これらの法則は Haskell のコンパイラが強制するものでは ありません。したがって、すべての Monad のインスタンスと 宣言したものが、これらの法則に従うことを保証するのはプログラマ自身です。 Haskell の Monad クラスは、まだ見ていませんが、最小限の定義 以上にいくつかの関数を含んでいます。結局、多くのモナドは標準のモナド則 以外の規則にも従っています。Haskell のクラスにはこうした拡張されたモナド をサポートするためのものがあります。 三つの基則 モナドの概

    kiyo_hiko
    kiyo_hiko 2017/10/17
    "IOモナドから脱出することはできませんから…型構築子IO を含まないような関数の定義を書くことは不可能です… IOを含まないような結果を 返すあらゆる関数はIOモナドを使わないことが 保証されているということです"
  • rubyで出力のバッファリングをやめる

    rubyで以下のような感じのコードを書きます。 print "xxx" sleep 2 print "yyy" sleep 2 print "zzz" xxxと出てからyyyと出てzzzと出てくるのを期待したりするのですが、このように出力されないで 実際は、しばらく待って一気にxxxyyyzzzと出力されることになります。 これは標準出力する際に、バッファに一時的にためていてある程度たまってから出力しているせいなわけで これを期待するように動かすには、 STDOUT.sync = true print "xxx" sleep 2 print "yyy" sleep 2 print "zzz" のように STDOUT.sync = true を追加すればOKです。 バッファリングされるのは標準出力だけでなく自分で書き込み用に作成したファイルへの書き込みでも同様な感じになります。 動作ログをフ

    kiyo_hiko
    kiyo_hiko 2016/05/13
    出力のバッファリングを止めるのにf = File.open(fn, 'w') do; f.sync = true; endする話。
  • ノンブロッキングI/Oと非同期I/Oの違いを理解する

    English

    ノンブロッキングI/Oと非同期I/Oの違いを理解する
  • マネージリソースとアンマネージリソースの定義 - 周回遅れのブルース

    先日、MSDN のフォーラム、マネージリソースのみで構成されているクラスにIDisposeを実装するメリット を読んでいたら、いささか引っかかるまとめが書いてありました。 「いつものパン」があなたを殺す: 脳を一生、老化させない事 (単行) 作者: デイビッドパールマター,クリスティンロバーグ,David Perlmutter,Kristin Loberg,白澤卓二出版社/メーカー: 三笠書房発売日: 2015/01/16メディア: ハードカバーこの商品を含むブログ (12件) を見る リソースという用語は例えば次のように使われる。 ・double[],string等 → 通常リソースとは言わない。 ・Stream,Bitmap等  → マネージドリソース。 ・ポインター等    → 非マネージリソース。 マネージリソースのみで構成されているクラスにIDisposeを実装するメリット

    マネージリソースとアンマネージリソースの定義 - 周回遅れのブルース
  • class IO (Ruby 3.3 リファレンスマニュアル)

    [edit] 要約 基的な入出力機能のためのクラスです。 File::Constants は、File から IO へ移動しました。 多言語化と IO のエンコーディング IO オブジェクトはエンコーディングを持ちます。エンコーディングの影響を受けるメソッドと受けないメソッドがあります。 影響を受けるメソッドでは、IO のエンコーディングに従い読み込まれた文字列のエンコーディングが決定されます。また IO のエンコーディングを適切に設定することにより、読み込み時・書き込み時に文字列のエンコーディングを変換させることもできます。 エンコーディングの影響を受けるメソッドと受けないメソッド IO の読み込みメソッドは2種類存在します。テキスト読み込みメソッドとバイナリ読み込みメソッドです。 テキスト読み込みメソッドは IO のエンコーディングの影響をうけます。詳しくは「IO のエンコーディング

    kiyo_hiko
    kiyo_hiko 2015/09/30
    FileのAPIがIOを受け継いでる
  • 4.0 is the new 1.0

    The first fully converged io.js/node.js release coming soon. Last week was a typical San Francisco summer, sunny with occasionally hostile winds. This was the setting for 40 node.js contributors to gather for the first ever Collaborator Summit, organized by the new Node.js Foundation. A year ago we didn’t have 40 contributors to gather but today this represents only a fraction of the total contrib

  • 橋本商会 » Sinatra RocketIOというプラグイン作った、これでWebSocketとCometが使える

    nodeのSocket.ioっぽい物のRuby版を作った。 https://github.com/shokai/sinatra-rocketio 依存 EventMachineが有効なWebサーバー(thinとか)と、jQueryが必要。 Rubyは1.8.7〜2.0.0まで動く。 Sinatraで使う インストール gem install sinatra-rocketio ブラウザとか回線に応じてWebSocketとCometの使える方が自動的に選ばれる。 切断されても定期的に再接続を試みるようになってる。 sinatraに読みこむだけで使える。sinatraのプロセス内にwebsocketサーバーも組み込まれる。 require 'sinatra' require 'sinatra/rocketio' modular styleではclass内でregisterすればok class

  • オブジェクト指向&関数型言語でなぜつくるのか - IOモナドで副作用を実現する

    『IOモナドで副作用を実現する』 以下の文章は、第13章の一部として「関数型言語の7つの特徴」のあとの「関数型言語の分類」に続く節として書いたものです。 他の文章に比べてバランスが悪かったため、最終段階でボツにしました。 →『オブジェクト指向でなぜつくるのか第2版』のサポートページへ 純粋関数型言語であっても、プログラム全体としては画面やデータベースやネットワークなどとの外部入出力を実現する必要があります。このため、言語仕様として副作用を認めないとしても、なんらかの仕組みを用意して入出力を実現する必要があります。これはHaskellでは「モナド」と呼ぶ仕組みが相当します。今のところモナドを言語標準の仕組みにしているのはHaskellだけですが、わかりづらいことで悪名高い仕組みでもあるため、ここで概要を説明しておきましょう。突っ込んだ内容になりますので、Haskellやモナドに特別な関心が

  • ホワット・ア・ワンダフル・ワールド 本物のプログラマは do を恐れずに使う

    Author:あろは (alohakun) WAKATSUKI toshihiro 連絡先 : alohakun ___at___ gmail.com mixi : http://mixi.jp/show_friend.pl?id=182927 twitter : http://twitter.com/alohakun abstract プログラミングという人間の知的行為を体系化し,単なる職人芸ではなく,サイエンスにするための研究をしています. 具体的には,等価変換計算モデルに基づいた,仕様記述からのプログラム合成の研究をしています. もっと噛み砕くと,プログラムの正しさをどのように定式化し,どのような枠組みで,どのように変換を進めていけば,正しさを保証したまま,効率的なプログラムを手に入れることができるのか,ということについて研究しています. キーワード : equivalent tra

    kiyo_hiko
    kiyo_hiko 2012/12/03
    「不必要に goto を制限したり嫌悪したりすることは,プログラミングスタイルを不必要に狭めたり,歪めたりすることにつながる場合もある」
  • instance method IO#each - Ruby 1.8.7 リファレンスマニュアル

    each(rs = $/) {|line| ... } -> self each(rs = $/) -> Enumerable::Enumerator each_line(rs = $/) {|line| ... } -> self each_line(rs = $/) -> Enumerable::Enumerator IO の現在位置から 1 行ずつ文字列として読み込み、それを引数として 与えられたブロックを実行します。 ブロックが与えられなかった場合は、自身から生成した Enumerable::Enumerator オブジェクトを返します。 [PARAM] rs: 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。 空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。 [EXCEPTION] IOError: 自

    kiyo_hiko
    kiyo_hiko 2012/10/22
    返却値がselfということはメソッドチェーンで書ける? / →「open("|dir").each {|x| puts "> " + x}.close」 動いた
  • プログラミング言語 Ruby リファレンスマニュアル

    注: Rubyは2.1.0からSemantic Versioningを採用しています。 Ruby 2.1.1, 2.1.2等はバグ修正やセキュリティfixのみを含むため、リファレンスとしては2.1に統一しています。

    kiyo_hiko
    kiyo_hiko 2012/10/22
    読んだけど全部頭に入らない 忘れたとき用 / GCもcloseしてくれるがそれはやめようと→http://www.ruby-lang.org/ja/old-man/html/trap_IO.html
  • バッファリングとは - Perl入門ゼミ

    Perl › ファイル入出力 › here Perlの出力関数であるprint関数は、バッファリングを行います。バッファリングとは「データを貯めておく」という意味です。Perlのprint関数は実際に呼び出されても、即座にファイルに内容を書き出しません。書き込み内容をバッファリングしておいて、バッファがある容量をこえると実際にファイルに書き出します。 バッファリングを無効にしたいという場合は、以下の記事をご覧ください。 バッファリングを無効にする 以下はバッファリングを実感するサンプルです。すぐにはファイルに書き込まれないことがわかると思います。 use strict; use warnings; # 書き込み用のファイル( 上書きするので注意 ) my $file = "sample20080811.txt"; open(my $fh, ">", $file) or die "Canno

    バッファリングとは - Perl入門ゼミ
    kiyo_hiko
    kiyo_hiko 2011/11/26
    ハンドルを閉じると書き出される話など。このへんはたまに失念するのでメモ。 see:http://www.nishishi.com/blog/2006/05/perl_buffer_flu.html
  • 第14回 関数脳のつくり方 Second Season 〜モナドで悟りをひらく〜 - 刺激を求める技術者に捧げるScala講座:ITpro へのツッコミ - kmizuの日記

    ITProのScala連載「刺激を求める技術者に捧げるScala講座」の第14回 関数脳のつくり方 Second Season 〜モナドで悟りをひらく〜がはてなブックマークで150ブクマ超えるなど注目を集めていますが、読んで見ると初学者に誤解を与える箇所が散見されるので、一応、連載に関わってる者(といっても1回記事書いただけですが)の一人としてツッコミを入れさせていただきます。 「参照透明性を保持しながら手続き型的な記述をするための枠組み」?(p.1) モナドとは,関数型言語で,参照透明性を保持しながら手続き型的な記述をするための枠組みです。 早速ですが、これは、IOモナドやStateモナドには当てはまっても、全てのモナドについて当てはまるものではないですよね。たとえば、Maybeモナドではこれは当てはまりません。 「モナドがHaskellで必要な理由」? これはページタイトルの一部ですが

    第14回 関数脳のつくり方 Second Season 〜モナドで悟りをひらく〜 - 刺激を求める技術者に捧げるScala講座:ITpro へのツッコミ - kmizuの日記
  • SelfLoader - load functions only on demand - Perldoc Browser

    kiyo_hiko
    kiyo_hiko 2011/07/27
    Perlの特殊リテラル__DATA__の挙動について。1回読んだ後でcloseして再openの方法不明。再openだめならシングルトンで対応するかな
  • Perl入門

    kiyo_hiko
    kiyo_hiko 2011/03/15
    Perlでパイプ入出力。試しに書いてみた: open my $fh, 'dir |'; while (<$fh>) {print for map {$_.$_} $_} close $fh
  • 1