タグ

programmingに関するshirebitoのブックマーク (68)

  • 未来のプログラミングについて再考(機械学習とソフトウェア2.0、配管工プログラマ、オープンソースでは十分でない?) - YAMDAS現更新履歴

    昨年のエントリだが、その後現在までマイク・ルキダス(Mike Loukides、O'Reilly Media のコンテンツ戦略担当副社長)の文章を追って、これを書いていた当時ワタシが理解していなかった文脈、そしてそれに対応するニュースや問題意識が見えてきたところもあるのでつらつらと書いておきたい。 こちらは2019年末に、マイク・ルキダスが O'Reilly Media のチーフ・データサイエンティストである Ben Lorica と共に書いたエントリだが、2020年3月に開催される O'Reilly Strata Data & AI Conference に向けた露払いである。 ワタシはタイトルだけ見て、「ソフトウェア2.0? 今さら〇〇2.0は古いだろー」と思ったのだが、これは Tesla で AI 部門長を務める機械学習の専門家 Andrej Karpathy が2017年11月に公

    未来のプログラミングについて再考(機械学習とソフトウェア2.0、配管工プログラマ、オープンソースでは十分でない?) - YAMDAS現更新履歴
  • 本日12月1日より、プログラマ有志による2014年の技術系Advent Calendarが各所ではじまる | gihyo.jp

    日12月1日より、プログラマ有志による2014年の技術系Advent Calendarが各所ではじまる 日12月1日より、プログラマ有志による2014年の各技術系Advent Calendar(アドベントカレンダー)が一日目を担当する人のblogではじまっている。技術系Advent Calendarの数の増加傾向は今年も続いており、Qiitaを利用したものがとても多くなっている。 一般的なAdvent Calendarは、12月25日のクリスマスを楽しみに待つために、12月1日から24日までのカレンダーの日付それぞれの部分が扉になっており、1日ずつその日の日付の部分を開くと天使や動物の絵などが見えるという仕組みになっている(もちろん、様々なバリエーションがある⁠)⁠。 これに発想をえて、技術系Advent Calendarでは基的に、12月1日から25日までの25日間、特定のプログラ

    本日12月1日より、プログラマ有志による2014年の技術系Advent Calendarが各所ではじまる | gihyo.jp
  • Rx で Koan した - steps to phantasien

    Android 入門にあわせて Java も勉強しなおすかと Effective Java を読みはじめたらすっかり疲れてしまった。Java… 昔 Effective Java 初版を読んだ頃は結構好きだった気がするけれど、いま二版を読むとこれ Bureaucratic Java じゃないのという気がしてしまう。まあ Effective C++ を読んだ人も多くは Wicked C++ だと感じるだろし Effective JavaScript は Ridiculous JavaScript だろう。文句は言うまい。何事も慣れるには時間がかかる。Java 8 はだいぶマシと伝え聞くものの、Effective Java の三版がでるのはいつになることやら。 そんな日々の現実逃避に @Scale Conference のビデオを眺めていたところ、Netflix が RxJS でクライアントサイ

  • C#で作るPEGパーザコンビネータ - kmizuの日記

    id:tad0さんのコメント: C#版きぼんぬ http://d.hatena.ne.jp/kmizushima/20090226/1235619468#c1235739906 ということで、C#版も書いてみました。C#については時々調べたりするものの、ほとんど全くと言っていいほど使っていないので(たとえば、今回、C# 3.0のラムダ式を初めて使った)、なんか変な点があればご指摘ください。 using System; using System.Collections.Generic; public class Pair<A, B> { public A _1 { get; private set; } public B _2 { get; private set; } public Pair(A _1, B _2) { this._1 = _1; this._2 = _2; } publi

    C#で作るPEGパーザコンビネータ - kmizuの日記
  • 状態モナド遊び - あどけない話

    状態をモナドで実現する方法を考えます。 リスト 例は簡単な方がいいので、データ構造として Lisp 風のリストを定義しましょう。 data List a = Nil | Cons a (List a) deriving Show リストは、こんな風に表せます。 Cons "c" (Cons "b" (Cons "a" Nil)) Lisp 風の cons も定義してみましょう。 cons :: a -> List a -> List a cons x xs = Cons x xs cons "c" $ cons "b" $ cons "a" Nil → Cons "c" (Cons "b" (Cons "a" Nil)) 状態を持つリスト さて、この Lisp 風のリストに、要素の数を覚えさせておきたいとしましょう。もちろん、数えれば分りますが、数えなくても一瞬で分るようにしたいのです。

    状態モナド遊び - あどけない話
  • Facebook の決断:MVCはスケールしない。ならば Flux だ。

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Facebook の決断:MVCはスケールしない。ならば Flux だ。
  • プログラミングの生産性を上げるには - 聞かれてもいないことを喋る

    Yak Shaving の誘惑に打ち克つ ソフトウェアを作っている途中で、「これを作るのを効率化するためには ○○ が必要だ」と思い、来やっていた作業の手を止めて ○○ を作り始めてしまうことは往々にしてある。 しかしその作り上げた ○○ が最終的に当に(長期的にみて)効率化に役立ったケースは、自分の経験からいって 10 個のうち 1 つくらいではないかと思う。 効率化のための努力をするなということではない。大事なのは、アイデアを寝かせることだ。 人はゴミみたいなアイデアでも、気付かずにこれこそが素晴らしいアイデアだと信じこんでしまう。自分の考えたアイデアには愛着が湧くものだ。 そのアイデアが当に優れているかどうか客観的に判断するには時間が必要だ。最低でも 1 晩、できればもう 2, 3 度は同じ必要性を感じてから作るのがいい。 1 回しか必要性を感じたことのないものをその場の勢いで

    プログラミングの生産性を上げるには - 聞かれてもいないことを喋る
  • Shibu's Diary: コードを書くときに心がけていること

    渋日記@shibu.jp 渋川よしきの日記です。ソフトウェア開発とか、ライフハックを中心に記事を書いていきます。 コードを書き続けるためにやってること(by Voluntas) なんか流行っているので乗ってみます。 趣味コード 趣味とはいっても、暇つぶしだったり、流行りもののチュートリアルに触って「おれ新しい◯◯やってみたぜ」みたいなのは極力しないようにしてます。仕事で必要になった時に、仕事の時間の中で集中的に学ぶ方が学習効率が高いので、趣味時間の活用という意味ではもったいないですよね。幸い、まったく未知の基礎的な内容というのはほとんど出会わなくなってきて、新しい技術といっても、既存の知識を土台にして、軽く検索すればOKなことがほとんど。ということで、趣味といっても、将来の仕事で役に立ちそうな種となる可能性のあるものを作るように心がけています。実際に種になるかどうかは運次第なので、命中率に

  • Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」

    Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」

    Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
  • Java の語彙で Maybe を説明してみる - ぐるぐる~

    java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー を読んで。 Maybe は値があるかないかを型で表すことができます!そう、直和型なんです!とか言われてもイミフだと思うのです(リンク先のエントリがそう説明してるわけではないですが)。 Java の語彙で Maybe の説明をできたら嬉しい人もいるんじゃないかなぁ、とかなんとか。 ただし、書いてたら結構長くなりました。時間がある人はどうぞ。 Maybe? null より安全に「値がないこと」が扱えるものだよ スタート地点としてはこれでいいでしょう。 以降で、「なんで安全なの?」という全うな疑問に答えてみたいと思います。 問題点 int で説明すると煙に巻いてしまうような気がしたので、User クラスを見てみます。 import java.util.*; class User { final String name;

    Java の語彙で Maybe を説明してみる - ぐるぐる~
  • デバッグの6段階 (Six Stages of Debugging)

    ありえません 私のマシンでは再現しません それは起こるべきじゃありません なんで起こるのかな? あー、なるほど なんで今まで動いてたんだろう? あるある。サポート担当者として1や2の返答をしてしまうと、あとでバツの悪い思 […] ありえません 私のマシンでは再現しません それは起こるべきじゃありません なんで起こるのかな? あー、なるほど なんで今まで動いてたんだろう? あるある。サポート担当者として1や2の返答をしてしまうと、あとでバツの悪い思いをしちゃいますね。 少なくとも2003年には流通していた文章を、発掘した人のブログから via HackerNews

    デバッグの6段階 (Six Stages of Debugging)
  • いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記

    私はつい最近まで勘違いしていました。 ここのページに書いてあるような方法で、一様分布する整数が得られると。 int random(int n) { return (int)(( rand() / (RAND_MAX + 1.0) ) * n); } この方法、一見すると実に一様分布が得られそうに見えるんですよね。 どういう思考回路を通っているかというのを自己分析すると、次のような感じです。 1. rand() では 0〜RAND_MAX のランダムな整数が得られる。 2. それを RAND_MAX + 1 で割ると、[0, 1) に一様分布する実数が得られる。 3. [0, 1) の一様な実数を n 倍して小数点以下を切り捨てたら、0 から n-1 に一様分布する整数が得られる。 これの罠なところは、1 と(特に)3 が正しいというところだと思います。 ただ、2 がダウト。 思いっきりダウ

    いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記
  • 関数型言語はGUIが苦手? - osiire’s blog

    副作用を極力排除しようとするfunctionalな方向性の言語においては、GUIのような副作用の塊は扱えないという直観を持っている人も多いことでしょう。確かにfunctionalな言語でunit型を返す関数ばかり扱っていると、"普通に手続きを書いているのと何が違うの?嬉しくない!"という結論になるのは至極当然の事と思います。 でも、副作用を持つ部分と純粋関数の部分を切り分けて考えれば、意外とGUIの世界でもfunctionalなスタイルでプログラムが書けるのです。わかりやすい所でいうと、例えば、データベースを扱うプログラムも副作用の塊のように見えますよね?でも、SQL文を作成する部分は文字列を扱う純粋関数ですし、取得したデータがnullじゃないか、有効かどうかを判断しながら処理する部分もpureです。そうやってどんどん切り分けていくと、最終的にかなりpureになります。しかもpureになる

    関数型言語はGUIが苦手? - osiire’s blog
  • 翻訳: ”命令型のコールバック、関数型のプロミス: Node が逸した最大の機会” by James Coglan

    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

    翻訳: ”命令型のコールバック、関数型のプロミス: Node が逸した最大の機会” by James Coglan
  • 文字コード変換ミスによる文字化けパターンと想定される原因 - drk7jp

    とあるシステムでデータベースから引いてきたデータの表示が文字化けするという不具合がありました。 データベース内のデータとしては文字化けしていない状態で格納されていることはわかっていたので、どこかしらの文字変換で化けていることはわかっています。まずはどの誤変換により文字化けするのか原因切り分けのために、decode/encode の組み合わせによる文字化けパターン一覧を作りました。おかげさまでどのパターンに類するものか判別することができ、無事に改修することができました。 その話はまた別にするとして、今も昔も変わらず文字化けに悩む人は意外と多いと思います。誤変換結果一覧は原因解析の参考になると思い、記事としてまとめることにしました。 文字コード変換ミスによる文字化けパターンを可視化するプログラムと一覧表 まずは誤変換を生成する perl スクリプトです。プログラムはとっても簡単で、「文字化けで

  • L&#39;eclat des jours(2013-03-30)

    _ SD総集編(2種類の複雑さ) 2001-2012総集編をゲットした(寄稿していて再録されたから受領したわけなので献というのとは違う気がするけど、語義としてはこういうのも献なのかな?)。 で、紙の部分には何が載っているのかなと読むと、Linux歴史やディストロ紹介で、おおなんか昔っぽい特集で懐かしい雰囲気と読み始めたのは良いが疑問も湧いてくる。 Software Design 総集編 【2001~2012】(SoftwareDesign 編集部) P.55「UNIXのカーネルは……さまざまな機能を1つに詰め込んだ複雑なソフトウェアです。そのためバグも忍び込みやすく、一部の機能に問題がおきただけでも全体が止まってしまいます。」という問題への解決策としてマイクロカーネル(手元のMINIXオペレーティングシステムではこの用語は出ていないのが興味深いけど、OSタイプ4(クライアント/サーバ

  • async/await不要論

    4. 昔話をします 初めて買ったPCCPUは Duron 850MHz (2000年ごろ) ハイエンドCPUが、ちょうど1GHzを越えたあたり ◦ PentiumⅢ1GHzとか、Athlon 1.2HGzとか このころは、「2010年には20GHzのCPUを実現」とか言ってた ◦ 同じように、Hyper-Threadingやマルチコアの「サーバ用途での」重要性も言われ始めた Intelはこの頃デスクトップ向けCPUでクロック周波数を向上させ続けていた ◦ プログラマにとっては、「フリーランチの時代」 しかし、2003年にクロック周波数の向上ペースは落ちてしまった ◦ 増え続ける発熱に対処できなくなった ◦ 2013年3月現在、x86向けCPUでの最高クロック周波数は4.2GHz ◦ フリーランチ時代の終焉・・・? 5. CPUはデュアルコアへ 2005年に、Pentium4の

    async/await不要論
  • matarillo.com: モナド - みんな大好き、モナドに関する記事の一覧

    2018-06-30 11:07:18 みんな大好き、モナドに関する記事の一覧 Fabulous Adventures In Coding 元MSのC#コンパイラーチームの主任デベロッパー、その後コベリティを経て現在はFacebookにいるEric Lippertのブログで連載されていたモナドの解説記事の翻訳。 パート1 モナド・パターンは型に関するパターンである。 パート2 モナド的な型についていくつか実例を紹介し、共通点を知る。 パート3 モナド的な型に対してある演算を行い、ルールを2つ見出す。 パート4 2つ目のルールを一般化できないか試す。 パート5 一般化した2つ目のルールをさらに変更し、当のルールを得る。 パート6 2つのルールにいくつかの制約を追加する。 パート7 最後の制約を説明し、制約のことをモナド則と呼ぶ。 パート8 モナド生成処理と関数適用処理の伝統的な名前を紹介。

  • Labeled Tab Separated Values (LTSV) ノススメ - stanaka's blog

    追記(2/8 11:30) id:naoyaによる一連のまとめが【今北産業】3分で分かるLTSV業界のまとめ【LTSV】 - naoyaのはてなダイアリーにあります。 また、仕様などをまとめるために http://ltsv.org/ を立ち上げました。 追記ここまで Labeled Tab Separated Values (LTSV) というのは、はてなで使っているログフォーマットのことで、広く使われているTSV(Tab Separated Value)フォーマットにラベルを付けて扱い易くしたものです。はてなでは、もう3年以上、このフォーマットでログを残していて、one-linerからfluentd、Apache Hiveまで幅広く便利に使えています。 ログフォーマットに期待されることは、 フォーマットが統一されている → 共通のツールで集計し易い 新しいフィールドの追加が容易 → サー

    Labeled Tab Separated Values (LTSV) ノススメ - stanaka's blog
  • 「よりよいコードを求めて命名について頭をひねる会」のログ

    http://www.zusaar.com/event/438105 アプリケーションを作る英語 の著者の西野さんを交えて、クラス名とかメソッド名とか変数名とか命名で困っている課題を1つ以上持ち寄りみんなで一緒に検討する勉強会をしました。 「アプリケーションを作る英語電子書籍 http://tatsu-zine.com/books/english4app 紙 http://www.amazon.co.jp/gp/product/4844332848/ はじめに:西野さんからちょっとお話 The Art of Readable Code から第2章と第3章 第2章:名前に情報を詰め込むようにする どういう情報をつめこむか。 明確な言葉を選ぶ get は不明確らしい getPage(url) -> FetchPage(url) や DownloadPage(url) 特色のある(color

    「よりよいコードを求めて命名について頭をひねる会」のログ