タグ

プログラミングに関するnon_117のブックマーク (22)

  • All About Monads モナドのすべて

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • プログラミングで変数名や関数名のネーミングに迷ったときに便利なカンニングペーパーまとめ

    僕は、プログラムをする上で変数や関数に良い名前を付けるのはとても重要と考えています。 というのも、良い名前を付ければ、それだけでそのコードがしたいことの説明になり、コメントと同等の働きをすることもあるからです。 自分がちゃんとそれをできているのかはさておき、僕は普段から、できれば読みやすくて分かりやすい名前を付けたいと思っています。他の人も読むコードであれば、できればプログラムでよく使われるような単語を利用して書いた方がより分かりやすいです。 ただ、よい名前を考えるのって、ちょっと面倒くさいんですよね。僕はこれまで、英語の辞書を利用して、考えたりしていたのですが、「何か、プログラムでよく使われる単語をまとめたものはないか?」と探したら、ドンピシャのものがいくつかあったので、それらをまとめて以下で紹介します。 photo by Michael Coté codic codic – デベロッパ

    プログラミングで変数名や関数名のネーミングに迷ったときに便利なカンニングペーパーまとめ
  • 言語処理100本ノック 2015

    言語処理100ノックは,実践的な課題に取り組みながら,プログラミング,データ分析,研究のスキルを楽しく習得することを目指した問題集です 実用的でワクワクするような題材を厳選しました 言語処理に加えて,統計や機械学習などの周辺分野にも親しめます 研究やデータ分析の進め方,作法,スキルを修得できます 問題を解くのに必要なデータ・コーパスを配布しています 言語はPythonを想定していますが,他の言語にも対応しています

  • JavaのTimSortがバグってる件について | さにあらず

    Python で実装され、その後 Java にも移植されたソートアルゴリズムである TimSort が盛大にバグっていることが発見されました。 このバグがどのようにして発生するのかについては、以下のドキュメントを精査して下さい。 TimSort fails with ArrayIndexOutOfBoundsException on worst case long arraysOpenJDK’s java.utils.Collection.sort() is broken: The good, the bad and the worst caseどんなことが起こるのか#通常の利用では想定しえない場所でArrayIndexOutOfBoundsExceptionが発生します。 例えば、以下のようなスタックトレースになります。 Exception in thread "main" java.l

    JavaのTimSortがバグってる件について | さにあらず
  • Future と Promise

    Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn, Vojin Jovanovic 著 Eugene Yokota 訳 概要 Future は並列に実行される複数の演算を取り扱うのに便利な方法を提供する。それは効率的でノンブロッキングな方法だ。 大まかな考え方はシンプルなもので、Future はまだ存在しない計算結果に対するプレースホルダのようなものだ。 一般的に、Future の結果は並行に計算され後で集計することができる。 このように並行なタスクを合成することで、より速く、非同期で、ノンブロッキングな並列コードとなることが多い。 デフォルトでは、Future も Promise もノンブロッキングであり、典型的なブロッキング演算の代わりにコールバックを使う。 コールバックの使用を

  • 勝利のためのD言語 | POSTD

    私は転向しました。新たな言語を見出したのです! そうそう、ぜひ パート2 も読んでくださいね。 さて、ご存知のとおり、Pythonには様々な良いところがあり、非常に多くの分野で目覚ましい働きをします。しかし増え続けるこの業界の需要を満たすように作られたものではありません。もちろん、Pythonで大規模なプロジェクトを構築することはできます(私も構築したことがあります)。しかし検討段階から実際の開発段階に入ると、ものすごくコストがかかります。当に高いのです。CPUの1サイクルあたりの仕事で換算すると、途方もない額になります。 C10M問題 は、 C10K問題 の繰り返しです。つまり、現在のコモディティ・ハードウェアは1秒に数百万パケットの処理が可能となっていますが、実際にそんな数字に達することはめったにありません。例えば、私が一時期働いていた会社はAWSを使用しており、要求を受け入れログを

    勝利のためのD言語 | POSTD
  • ssig33.com - よく分からない人のためのセキュリティ

    いろいろと原則論はあるんですが。昨今のアプリケーションは複雑化し、扱う情報はよりセンシティブになり、そしてより幅広く使われるようになっています。よって「安全な」アプリケーションを作るために必要な知識はますます増える傾向にあります。 よく分かってない人は以下のことにとりあえず気をつけましょう 1. なるべく自分で作らない これは最も重要なことです。検索する、他人に聞く、自分で考えない。これは重要です。大抵の問題は他人が作ってくれた解決策を適用できます。 例えばセキュアな問合せフォームを作ることにしましょう。気をつけるべきことは以下のことぐらいでしょうか。 送信内容の確認画面を表示する場合、ユーザーの入力した値は適切にエスケープするように 送信内容をアプリケーションの DB に格納する場合には SQL インジェクションを防がなければならないので、プリペアドステートメントを用いる CSRF 対策

  • 「充足可能性問題(3-SAT)を解く乱択アルゴリズム」 by Julia - Qiita

    前置き 元ネタは、結城浩氏著の「数学ガール 乱択アルゴリズム」。 新しい言語を覚えるとき、慣れるために「充足可能性問題(3-SAT)を解く乱択アルゴリズム」(p.353)を実装するという癖をつけていま1す。 ということで。前回の Egison版 に引き続き。勉強開始約1ヶ月の Julia ( http://julialang.org/ ) で実装してみました2。 開発環境・動作確認環境 Mac OSX 10.9.5 Julia 0.3.5 コード # Rw3sat.jl sample(a::Array) = a[rand(1:end)] immutable Literal index::Int not::Bool end literal(index, not) = Literal(index, not) # issatisfied(l::Literal, x::BitArray{1}) =

    「充足可能性問題(3-SAT)を解く乱択アルゴリズム」 by Julia - Qiita
  • PHPとしても実行できるRubyの書きかた - Qiita

    p <<PHP_VERSION <?php PHP_VERSION ;print "\033[1F\033[1M"; //.tap{ define_method :range, -> s,e { s.upto e } } //.tap{ define_method :array_map, -> f,seq { seq.map{ |x| f.(x) } } } //.tap{ define_method :function, -> x,&b { -> x { $x=x;b.call } } } array_map(function($x){ print $x % 15 == 0 ? 'FizzBuzz' : ($x % 3 == 0 ? 'Fizz' : ($x % 5 == 0 ? 'Buzz' : $x)); print "\n"; }, range(1,100)); ruby php.

    PHPとしても実行できるRubyの書きかた - Qiita
  • Writing A Virtual Machine In Excel

    [Ádám] participates in a competition called KöMaL. It’s a 9-times-a-month journal for junior high and high school students featuring math and physics problems. [Paul Erdős], one of the most published mathematicians of all time, was a huge participant and by far the most notable student to crack open a copy of KöMaL in its hundred-year history. [Ádám] was trying his hand at a problem in Excel, but

    Writing A Virtual Machine In Excel
  • [Java, JavaScript] Nashorn Architecture and Performance Improvements in the Upcoming JDK 8u40 Release

    Oracle Blogsの主としてテクノロジー製品のエントリを日語でご紹介します(オリジナルのエントリを投稿することもあります)。厳密性をご所望の方は原文をどうぞ。よい内容でしたら原文に対し、"Good Entry, thanks!"でもいいので、是非コメントお願いします(Typoや誤訳はコメント欄からどうぞ)。なお、このエントリは個人の見解であり、所属する会社の公式見解ではありません。また、エントリ内でご紹介している製品・サービスは国内導入時期が未定の場合もありますのでご了承下さい。 Good entries on Oracle Blogs are put into Japanese. Mainly this blog covers technology products. Opinions expressed in this blog is my personal one and d

    [Java, JavaScript] Nashorn Architecture and Performance Improvements in the Upcoming JDK 8u40 Release
  • OCaml入門の手引 | POSTD

    OCamlを学ぶには、まず何から手を付けたらいいでしょうか? あなたなら何をしますか? 私はこれまで、恐らく10数回はOCamlを覚えようとしました。そして手を付けては諦め、また付けては諦めの繰り返しで、ついには数えるのをやめてしまったくらいです。 でも、今回は続いています。ひょっとすると、コミュニティそのものに何か根的な変化があったのかもしれません。 私にとって功を奏したのが実際は何だったのか、以下に考察してみたいと思います。 役に立つは? 『 Real World OCaml (以下、RWO)』がお勧めです。というよりも、 それ以外にお勧めはありません 。RWOは、私の生涯の中でも1、2を争うことができるくらいのコンピュータ言語解説書です。 ちなみに、その他にも解説書はありますが、大体が不正確な内容を含んでいるか、あるいはフランス語で書かれているかなので、 読まない 方がいいでしょ

    OCaml入門の手引 | POSTD
  • Haskell基礎文法最速マスター - think and error

    見ていただけるのは嬉しいですがこのエントリは十分古いため、新しい情報へアクセスをしてください。以下のをお勧めします。 すごいHaskellたのしく学ぼう! 作者: MiranLipovaca出版社/メーカー: オーム社発売日: 2017/07/14メディア: Kindle版購入: 4人 クリック: 9回この商品を含むブログを見る 関数プログラミング実践入門 ──簡潔で、正しいコードを書くために (WEB+DB PRESS plus) 作者: 大川徳之出版社/メーカー: 技術評論社発売日: 2014/11/14メディア: 単行(ソフトカバー)この商品を含むブログ (8件) を見る みんなHaskellやろうぜ!! ということで書きました。 CやJavaRubyなど他言語を知っている人は、これを読むことでHaskellの大抵のことはマスターでき…ません。 特殊な構文が多すぎて他言語との類

    Haskell基礎文法最速マスター - think and error
  • モナド入門以前 - Qiita

    前書き これはモナドチュートリアルではない、だろう。 この文章を書く動機は、モナドを知らない人がモナドという未知の概念に期待しているものが根的にずれているかもしれないという懸念である。 命令型言語でプログラミングを覚えた人がモナド、もしくはHaskellや関数型言語(と言われる言語)を学習する際にしばしば受ける助言はこうだ: 「命令型言語で今まで習ったことを全て忘れて取り組むと良いよ」 この助言はそこまで外していないかもしれないが、雑である。 いつか僕の友人がこのようなことを言った: 「プログラマがチームで働く時、必要なのは相手を思いやる気持ちだよね」 この発言は恐らくそこまで外れてはいないが、思いやりで全てを解決しようとすると、全てのコストが非常に高くなる。個々の問題へ目を向け、それぞれの解法を知っておくことによってコストは低くすることが出来ると僕たちは知っている。まあ友人はそんなこと

    モナド入門以前 - Qiita
  • スタック・オーバーフロー

    python × 134 javascript × 53 python3 × 43 c++ × 32 linux × 30 html × 27 c × 24 java × 22 c# × 20 android × 18 vscode × 16 google-apps-script × 16 typescript × 16 ruby × 15 windows × 15 ruby-on-rails × 14 pandas × 14 swift × 13 php × 13 mysql × 13 css × 13 postgresql × 12 ios × 11 bash × 11 shell × 11 macos × 10 docker × 10 r × 10 rust × 10 aws × 9 ubuntu × 9 アルゴリズム × 9 laravel × 9 正規表現 × 9 network

    スタック・オーバーフロー
    non_117
    non_117 2014/12/16
    質問・解答の質が担保されるといいな
  • 関数型プログラミングとは結局何なのか | 黒曜の吹き溜まり

    この記事はドワンゴ Advent Calendar 2014の14日目です。 ちなみに前日は@erukitiさんでした。 他の方は「こんなもの作ってみた!」系の記事が多いのですが、技術系の話題であれば特に縛りはないようなので、今回はひたすら文章をつらつらと綴っていきたいと思います。 ここ数年、「マルチコア時代の主流は関数型だ」とか「Javaはもう古い! 時代は関数型!」といった記事をよく見かけるようになった気がします。 大学でOCamlを学んできた自分としては嬉しい限りなのですが、なんだか関数型という言葉がバズワード的な使われ方をしている気がして、まるで「現在起こっている全ての問題を解決する銀の矢だ!」といわんばかりの雰囲気を感じるのが気になっています。 最近うちの部署でもにわかに「関数型っぽく書こう」みたいな機運が高まってることもあるので、この機に関数型プログラミングとはなにか、どのよう

    non_117
    non_117 2014/12/16
    良い記事。現実に対応するには中庸が一番良いよね。
  • .NET 2015とは何か

    オンラインイベント「Connect();」で、マイクロソフトが明らかにした.NET 2015構想。稿では、.NET 2015を構成する主要素について概観していく。 連載目次 マイクロソフトが先日開催したオンラインイベント「Connect();」では、.NET関連の発表が多数行われた。Visual Studio(以下、VS)の最新バージョン、VS 2015 Preview、VS 2013 Communityなど、注目すべきトピックは多々あるが、ここでは.NETの新バージョン「.NET 2015」にフォーカスを当て、そのPreview版を基に.NET 2015の構成要素を概観していく。 もう1つの大きなトピックであるVS 2015については、山康彦氏による記事「VS 2015の新機能をプレビュー版で見てみよう」を参照していただきたい。 .NETとは何だったのか .NET 2015の話をする

    .NET 2015とは何か
  • Go言語によるCLIツール開発とUNIX哲学について - ゆううきブログ

    この記事ははてなエンジニアアドベントカレンダー2014の8日目です。 今回は、Go言語でサーバ管理ツール Mackerel のコマンドラインツールmkr を作るときに調べたこと、考えたこと、やったことについて紹介します。(mkr は現時点では開発版での提供になります。) コマンドラインツールについて コマンドラインツールを作るにあたって、@deeeet さんの YAPC Asia 2014 での発表資料が非常に参考になります。 書籍 UNIXという考え方ーその思想と哲学 の内容をベースに、コマンドラインツールはどうあるべきかということが丁寧に説明されています。 上記資料から引用させていただくと、コマンドラインツールにおいて重要なポイントは以下の7つであるとされています。 1つのことに集中している 直感的に使える 他のツールと連携できる 利用を助けてくれる 適切なデフォルト値を持ち設定もでき

    Go言語によるCLIツール開発とUNIX哲学について - ゆううきブログ
  • 覚えておくと便利!Python標準ライブラリ10選 - Qiita

    Pythonで,知っておくとちょっと便利になる組み込み関数や標準ライブラリを紹介してみようと思います! そこそこメジャーなものからニッチなものまでいろいろありますが,知らないものはぜひチェックしてみて下さい. 組み込み関数 allとany all( )は引数の要素が全てTrueならばTrue,any( )は引数の要素のいずれか1つでもTrueならTrueを返す. In [1]: all(_ % 2 == 0 for _ in [1, 2, 3]) # 全て偶数 or not Out[1]: False In [2]: any(_ % 2 == 0 for _ in [1, 2, 3]) # いずれか1つでも偶数 or not Out[2]: True

    覚えておくと便利!Python標準ライブラリ10選 - Qiita
  • Go言語の便利情報 - ゆううきブログ

    ここ1年ぐらい収集した便利 Go 言語情報を並べただけです。 http://b.hatena.ne.jp/y_uuki/golang/ https://github.com/stars?language=go オフィシャル 言語機能解説を中心にピックアップ。 Effective Go - The Go Programming Language Go's Declaration Syntax - The Go Blog Share Memory By Communicating - The Go Blog Defer, Panic, and Recover - The Go Blog Go Concurrency Patterns: Timing out, moving on - The Go Blog Go Slices: usage and internals - The Go Blog

    Go言語の便利情報 - ゆううきブログ