タグ

programmingに関するTAKAyuki_atkwskのブックマーク (45)

  • リスコフの置換原則(LSP) - Strategic Choice

    リスコフの置換原則(LSP:the Liskov Substitution Principle)派生型はその基型と置換可能でなければならない。どういうこと?使う側から言うと、基型を引数にとる関数に、どんな派生型のインスタンスをもらっても気にしないで使えないとダメ。実装側から言うと、派生クラスがその基クラスで使われるところにおいても、正常に動作することを保証しなければならない。なんで?使う側に意識させるということは、OCPに違反することになるから。つまり、LSPに違反すると、必然的にOCPにも違反してしまう。たとえば?ではまず、簡単な例。Shapeクラス、そしてその派生クラスCircle/Squareがある。Shapeにabstract関数を使わない。Circle/Squareにそれぞれ独自のDraw関数がある。ここでShapeを受け取ってDrawする関数を作ろうとすると、、、、 v

  • なぜ関数プログラミングは重要か

    John Hughes, Institutionen för Datavetenskap, Chalmers Tekniska Högskola, 41296 Göteborg, SWEDEN. rjmh@cs.chalmers.se この日語訳は原著者の承諾を得て山下がここに公開するものです。 この訳文についての、御指摘などは山下伸夫(nobsun .at. sampou.org)までおねがい いたします。 翻訳最終更新日 : 2011-09-17 原文 "Why Functional Programming Matters" 日語訳PostScript この論文は1984年以来何年ものあいだChalmers大学のメモとして回覧された。 1989年と1990年に幾分か改訂をしたのが[Hug89]と [Hug90]である。この版はもとのChalmer大学のメモ のnroff原稿をもとに

  • 新サービスを立ち上げる際、エンジニアとしてやって良かった 9個の事 - Money Forward Developers Blog

    エンジニアの渋谷です。 マネーフォワードは3月30日に【給与計算ソフト - MFクラウド給与】という新サービスをローンチさせていただきました。 マネーフォワード、クラウド型給与計算ソフト『MFクラウド給与』(β版)を無料提供開始~法改正や税制改正にも自動対応。企業の給与計算・労務をもっとスマートに~ クラウド給与計算ソフト マネーフォワード クラウド上で完結する格的な給与計算サービスとして、リアルタイム給与計算機能や料率自動反映などを備えております。 サービスの企画自体は、昨年年末に3人でスタートし、年明けから様々な方にお手伝いいただきながら、約3ヶ月の開発期間でローンチしました。 今回は、新サービスをゼロから作り上げるにあたり、エンジニアとしてやって良かった、と思えた事を9つばかり紹介させていただきます。 1:リリース前確認シート 企画がスタートした時に、【ビジョン】【ミッション】と

    新サービスを立ち上げる際、エンジニアとしてやって良かった 9個の事 - Money Forward Developers Blog
  • 人のコードを引き継ぐときに一番困るのは「使われていないコード」 | mah365

    プログラミングを生業としていると、人のコードを引き継いで開発するなんてこともままある訳ですが、そういうときに一番困るのは「使われていないコード」だなー、としみじみ感じます。 使われていないコードがもたらす弊害 特に動的言語で書かれたコードというのは前触れ無く呼び出される可能性があるため、当に利用されていないのかどうなのか、きっちりと調べあげるのは困難なケースがあります。例えばrubyであれば、method_missingでキャッチしてsendで動的に処理先を振り分けるなんてことをしていると、単純にgrepして利用状況を見るだけでは不十分な場合があります。 そういう意味では「使われていないコード」というよりは、「使われているのか使われていないのかはっきり分からないコード」という方が適切な表現かも知れません。 そういった「はっきりと判断のつかないコード」がある状態だと何が問題なのかと言うと、

    人のコードを引き継ぐときに一番困るのは「使われていないコード」 | mah365
    TAKAyuki_atkwsk
    TAKAyuki_atkwsk 2014/10/22
    ここ最近、よく遭遇する
  • レガシーコード改善の戦略と戦術

    自己紹介 name: 和田 卓人 hatena : t-wada twitter : t_wada github : twada レガシーコード改善コンサルティングも多いです

    レガシーコード改善の戦略と戦術
  • 「ラムダ計算」を独学で学習するための,講義ノートやPDFのリンク集 (復習用の問題付き) - 主に言語とシステム開発に関して

    講義ノートの目次へ ラムダ計算は,コンピュータ・サイエンスの重要な1分野。 「λ」を使って各種の関数を記述し,λどうしの計算方法を習得すれば・・・ HaskellやF#などの関数型言語を習得するために役立つ。 プログラミングにおいて,関数についての理解を深めることができる。 複雑なアルゴリズムを簡易に記述して,挙動や性質を予測することができる。 計算機科学の,より深い専門的な話題を理解するための足がかりを得られる。 などのメリットがある。 下記に,独学でλ計算を勉強するための, 入門レベルの講義ノートやWebページを掲載する。 読みやすい便利なもの・わかりやすいものから,応用的なものへと並べてある。 質の高いものだけを精選し,わかりづらい資料は除外してある。 ラムダ計算の概要 ラムダ計算の基礎 ラムダ計算の応用 復習のための問題(入門レベル) ※λ計算を利用した計算量・計算複雑性・計算可能

    「ラムダ計算」を独学で学習するための,講義ノートやPDFのリンク集 (復習用の問題付き) - 主に言語とシステム開発に関して
  • 第二新卒研修をしていた - ローファイ日記

    雇用流動情報の季節ですが、いかがお過ごしでしょうか。雇用流動と間接的に関係のある記事を書きます。 標記の通り、研修をしていたのでその内容をまとめたり振り返ったりする。 思ったより長くなったぞ... 背景とか がっつりとしたWeb開発の経験は無いが、情熱があり、コミュニケーション能力など基的な能力が高そうな、年齢の若い方が応募されたので、いわゆる「第二新卒」と言う扱いで研修を前提に採用した。で、その研修のカリキュラムを主にぼくが考えて実施していた。 といっても、今までに積み上げてきた新卒向け研修のカリキュラムやノウハウを眺めてエッセンスを抜き出すみたいな感じだった。 ペパボ新卒デザイナーとエンジニアの研修ブログ ペパボ新卒エンジニアの研修を開始している - HsbtDiary(2013-05-22) ペパボ新卒エンジニア研修 前編 | blog: takahiro okumura ペパボ新

    第二新卒研修をしていた - ローファイ日記
    TAKAyuki_atkwsk
    TAKAyuki_atkwsk 2014/08/02
    とてもよい
  • http://jwb.io/20121224-understanding-map-filter-and-fold.html

  • 今のコードレビューのやり方 - $shibayu36->blog;

    コードレビュー - hitode909の日記 この話。 大体こういう風なやり方をしてる。Diffだけを見るんじゃなくて手元でもコードチェックアウトしてて、それとDiffを行ったり来たりしながらレビューすることが多い。こういう方法のほうがかっこいいよねみたいなのは書くけどその通りにしてもらうことを強制はしないというのも賛同。 逆にcommitの中身*1はあえて見ないようにしてる。僕はレビューする時に、そのコードについての学習が行われていない状態で見たほうが良いなと思っている。commitの中身を1つずつ見ていくと学習が進んでしまって、少しわかりづらいコードもあっても、学習が進んでいるせいで無意識に目からすり抜けてしまうという経験があったので、あえてcommitみないということをしてる。 例外もあって、少し大きめなリファクタリングが行われた時はcommitを1つずつ読んでいくことが多い。少し大

    今のコードレビューのやり方 - $shibayu36->blog;
  • The Rust Programming Language

    A language empowering everyone to build reliable and efficient software. Performance Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages. Reliability Rust’s rich type system and ownership model guarantee memory-safety and thread-safety — enabling you to elim

    The Rust Programming Language
  • コード内で「現時刻」を気軽に取得してはいけない | Nekoya press

    日付を扱う処理についていろいろまとめたついでに、わりと簡単なことだけど知らないと落とし穴にハマる系のネタを。 日頃いろいろな処理を書いていて、現時刻を扱うこともは少なくないはずです。ですが、これを適当にやっていると困ることが多々あります。 実行中に「現時刻」を元にした処理がい違う 例えばこんなコード。ログ集計とかやってるイメージです。 class Analyzer(object): def analyze(self): logfile = datetime.datetime.now().strftime('my_log_file.%H') self.save(self.analyze_logfile(logfile)) def save(self, result): now = datetime.datetime.now() self.result[now.hour] = result

  • プログラマの心の健康

    目次 はじめに 情報不安について 人の話を聞くこと 寝てから考えよう わ・ざ・と、ゆ・っ・く・り・、や・っ・て・み・よ・う ロビンソン式悩み解決法 驚き、最小の法則 むしょうに腹が立つあいつのこと あなたは、そのままでいいんです はじめからやり直したい症候群 人から信頼されるためにはどうしたらよいか トラブルがチャンス あなたはひとりではありません あなたのための聖書の言葉 ぜひ、感想をお送りください リンク集 更新履歴 はじめに 私はプログラマです。 プログラムを書いて生活の糧を得ています。 プログラマというのは精神的にも肉体的にも過酷な仕事だと思われています。 夜遅くまでディスプレイに向かい、 キーボードを叩き、ジャンクフードをべながらバグをとる…そんな職業だと思われています。 確かにそういうところもありますが、プログラマも人間です。 不健康な生活を長いこと続けることはできません。

  • iPad miniで持ち歩けるコーディング環境を作る

    iPad mini + Cellularを朝一番から並んで買いました!軽くてLTEでネットが使えるということで、外に持ち歩き端末としてはApple史上最高な端末です。 しかし、私は出かけるときには常にコードを書ける環境を持って歩きたいので、結局MacbookProかAirを持って出かけることになってしまいます。 最近、MBP15に代えたのでちょっと持ち歩きが厳しいなと思っていたので、この際iPad miniでコードを書く環境を構築することにしました。 まずはキーボード。前に買ってあったrapoo E-6300をBluetoothで接続してみます。一発でつながったし、サイズ感も良い感じです。 蓋になる形のキーボードも出ているようですが、とりあえずE-6300で問題なさげ。 次にメインとなるエディタです。iPadでソースコードを書くのに適していて、Dropboxに対応しているエディタといえば、

    iPad miniで持ち歩けるコーディング環境を作る
  • アルゴリズムの勉強のしかた - きしだのHatena

    この記事で、アルゴリズムの勉強はアルゴリズムカタログを覚えることじゃないよということを書きました。 プログラムの理論とはなにか アルゴリズムの勉強というのは、スポーツで言えば腕立て伏せや走り込みみたいな基礎体力を養うようなもので、「ソートなんか実際に自分で書くことないだろう」とかいうのは「サッカーは腕つかわないのに腕立ていらないだろう」とか「野球で1kmも走ることなんかないのに長距離の走り込みいらないだろう」とか言うようなものです。 Twitterでアルゴリズムの勉強とはなにかと尋ねられて、「アルゴリズムの基的なパターンを知って、それらの性質の分析のしかたをしって、いろいろなアルゴリズムでどのように応用されているか知って、自分が組むアルゴリズムの性質を判断できるようになることだと思います。 」と答えたのですが、じゃあ実際どういうで勉強すればいいか、ぼくの知ってるからまとめてみました。

    アルゴリズムの勉強のしかた - きしだのHatena
  • Programmer Time Translation Table – Passion for Coding

    An experienced project manager I used to work with claimed that he took the programmers’ time estimates, multiplied by pi and converted to the next time magnitude to get the true number. 1 day converts to 3.14 weeks. He had learned the hard way that programmers are bad at estimating times. To get a more precise conversion, I’ve created a translation table for programmers’ time estimations, trying

    Programmer Time Translation Table – Passion for Coding
  • コミットメッセージの書き方 - 2012-02-21 - ククログ

    はじめに 「分かりやすいコードを書く」、「コードと一緒にテストも書く」等はソフトウェア開発において大切なことです。しかしそれと同じくらい大切なことして「分かりやすいコミットメッセージを書く」があります。これはあまり着目されていなく、見過ごされていることです。 今回は、コミットメッセージの分かりやすさの大切さ、そして、分かりやすくするための書き方を説明します。 コミットメッセージとその大切さ バージョン管理システムとコミット 現在、ほとんど全てのソフトウェア開発ではSubversionやGitなどのバージョン管理システムを使っています。バージョン管理システムを使うことによるメリットというのは、ソフトウェアの変更が記録されていくことにあります。 具体的なメリットは3つあります。 ソフトウェアの調査がしやすくなることです。現時点でのコードと、そして変更の履歴とを組み合わせることで、それらから非常

    コミットメッセージの書き方 - 2012-02-21 - ククログ
  • 米国人からコーディングについての怒りのメールを頂戴した - その手の平は尻もつかめるさ

    "米国人からコーディングについての怒りのメールを頂戴した" の補足 - その手の平は尻もつかめるさ ↑の方で補足いたしました。(2012.09.04 追記) 最近、英語のメールでよく怒られます。moznion です。 海を隔てて共同作業しているアメリカ人から、僕のコーディングについてお叱りのメールを頂いたので、 自戒の念を込めて邦訳して記します。 書いてあることは「当然」とも言うべき内容ですが、僕はその「当然」も守れていなかったのかぁ〜と反省。 以下、邦訳(意訳)です。 1. 郷に入っては郷に従え 既にソースコードが存在しているって事は、そこには同時にコーディングスタイルも存在しているってことだ。 その既存のソースコードに手を加える場合、別のコーディングスタイルを導入してはならない。 もし君がバックエンドのソースコードを弄っているなら、バックエンドのコーディングスタイルで記述するんだ。 フ

    米国人からコーディングについての怒りのメールを頂戴した - その手の平は尻もつかめるさ
  • ウンコード・マニア

    「なんだこの糞コードは!(怒)」「書いた奴出てこい!(怒)」 こんな声を聞いたり、叫んだりしたことはありませんか? ウンコードについて学ぶことによってウンコードを撲滅しましょう! とりあえず、趣のあるウンコード鑑賞から始めて下さい お知らせ 2013-06-27 profile image をTwitter API1.1に対応しました。Thanks for Profile Image API For Twitter 2013-06-16 Twitter API1.1に対応しました。 2012-12-05 職人ランキングを追加しました。 2012-11-21 レコメンド機能を追加しました。 Twitterアカウント @unkode_mania で更新情報をつぶやいてます 障害情報 2012-08-14 障害情報: 19:20 - 21:59 くらいの間、internal server err

  • Twitter時代の文字の数え方 | 配電盤

    入力「×」のブラウザでは、「𠮷」が2文字とみなされるため、2文字目まで、つまり「𠮷野」までしか入力できません。 Mozillaの文書には、Unicode code pointsで数えると書いてあるので、そのうち改善されるのかもしれませんが、現時点ではTwitterのために「maxlength="140"」を使うことはできません。 pattern属性 Firefox 21とChrome 27、IE 10、Opera 12.15は、「pattern=".{0,3}"」(任意の文字からなる0から3文字)のような正規表現を使った検証にも対応していますが、やはり「𠮷野家」は4文字とみなされてしまいます。 JavaScript 追記:javascript – でBMP以外のUnicode文字をきちんと扱う(404 Blog Not Found) JavaScriptでは、文字列strの長さをst

  • MVCは死んだ。MOVEするときがきた - きしだのHatena

    Conrad Irwinさんの「MVC is dead, it's time to MOVE on.」を訳してみました。 MVC is dead, it's time to MOVE on. この訳文も原文のライセンスを引き継いでCC-BY-3.0ライセンスで利用可能とします。 追記13:58 すでに訳してた方がいました。MVCの時代は終わった。MOVEを使い始めましょう。 - ふじこのプログラミング奮闘記 MVCは死んだ。MOVEするときがきた MVCはすばらしいアイデアだ。モデルを持ち、モデルは内部に少しの状態をもつ。ビューは内部に少しのUIをもつ。そして、コントローラは内部に少しの・・・ 何を持つ? 私は確かにこのことに気づいた最初の人物ではない。しかし示されたようなMVCの問題のために、あなたは最後には過剰なコードをコントローラに詰め込むことになる。なぜなら、他にどこに入れていいか

    MVCは死んだ。MOVEするときがきた - きしだのHatena