タグ

Programmingに関するhorimislimeのブックマーク (415)

  • データ構造と メソッドのネーミング - codic ブログ

    データ構造など技術的な背景をちゃんと知っていれば、データ操作に関する正しい英語を使えるねーて話です。用語のイメージもつかめるようにしていますので、shift / unshift とかイメージできない方もどうぞ。 1. push / pop = スタック push pop は、スタックの用語で、それぞれ pop はスタックから取り出す、push は挿入する事を意味します。JavaScriptRuby の Array には、スタックとしてのコンセプトもあるので、push / popという用語が使われます。 対して、Javaの ArrayList (インターフェースは Collection) は、単なる集合を表すインターフェースなので、抽象化のために add / remove というネーミングが使われます。そういえば、Javaには、Stackというクラスも別途用意されていますね。Stack

    データ構造と メソッドのネーミング - codic ブログ
  • pplog開発のコードレビューから学ぶpull requestによる自律的行動とコミュニケーション - ppworks.jp

    pplogの過去のポエムを複数単語で絞込できるようになりました。 pplogは、自身と向き合い想いを言語化するためのサイトだったりします。(色んな使い方があります) 最新のポエムだけが他人に見えますが、 自分の 過去のポエムを見る機能があります。 この過去ポエムは検索機能が付いているのですが、先日まで複数単語で絞り込むことが出来ませんでした。 pull requestが来た id: shootaさんからpull requestを頂きました。 勝手にやった!まさにこれだ!と思いました。 よし、コードレビューをしよう! 命名に突っ込んだ これを見て思うところがありました。 search_word_arrays = params[:keyword].gsub(/ /," ").split() 私は言った for文にナニカを感じた し、Cぽい! search_word_arrays = param

    pplog開発のコードレビューから学ぶpull requestによる自律的行動とコミュニケーション - ppworks.jp
  • ある中級プログラマの告白 | POSTD

    私は中級レベルのプログラマです。 基を理解するのは得意です。過去の失敗をきちんと分析できるくらい経験を重ねていますし、もっと知るべきことは山ほどあることも分かっています。 特筆すべきは、自分で身につけるべきことを知ったうえで、それを吸収しようと積極的かつ精力的に取り組んでいる点でしょう。 プログラマとしての能力は平均的なものに過ぎないと、心から納得するまで時間がかかりました。今では、よく理解できないままに誰かの意見を受け売りする必要など感じていません。知らないことがあっても、それを他人に悟られるのは怖くありません。 でも以前は違いました。信じられないかもしれませんが、私はかつてプログラミングの達人だったのです。 自分の能力を誤って評価していたのは、比較的孤独な環境でスキルを学んだためでしょう。当時はコンピュータを持っていることさえ、ちょっと特別なことでした。使い方を知っているとなれば、な

    ある中級プログラマの告白 | POSTD
  • ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 最近、あまりプログラミングが得意でない人のサポートをする形で、長い時間にわたってペアプログラミングを行っている。そのなかで、気がついた悪い習慣と成長するための良い習慣というものをまとめてみる。 この記事のバックグラウンドとなる体系的知識がになりました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング あわせて読みたい 経営者マインドが足りない!vs. 現場に任せてくれない!の対立をなくすカードゲームをつくった話 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 新人プログラマ

    ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習
  • 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 - Qiita

    エンジニア組織を強くするためのを出版しました Qiitaでエンジニアリングをめぐる様々なコミュニケーションの問題とその解決策や考え方を書いてきた。それらの背後にあるエッセンスをこの度書籍として出版するに至りました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング この書籍は、エンジニアリングを「不確実性を削減する」という第一原理で捉え直し、様々なエンジニアリングとその間のコミュニケーションをめぐる現象を説明していくものです。 あわせて読みたい 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 この記事について この記事は、新人向けの研修内容を再編集してお送りします。 この記事の内

    新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 - Qiita
  • デザイナーのわたしがプログラミングの基礎をだいたい3日で覚えた1つの方法

    works デザイナーのわたしがプログラミングの基礎をだいたい3日で覚えた1つの方法 Posted by Miki Ishijima on May 20, 2014. フルスタックエンジニア!フルスタックエンジニア! 最近なんでもかんでも出来る人が求められていますね。Webデザイナーの人でも簡単なプログラムに触れる機会は以前より格段に増えています。 わたしもプログラムを覚えたいと思い、勉強していました。しかしそれは、禁煙と同じようなもので触ってはやめて、触ってはやめて、飽きてしまうの繰り返しでした。 身につかない原因 プログラムの勉強会や、、ブログなどを読んでもなぜ身につかないのか。難しいというのは理由ではありません。 むしろ、基礎の「き」くらいであればコーディングと同じくらい簡単です。 わたしが一番の原因だと考えるのは作りたいものがないというコトです。 子供向けプログラム学習アプリケー

    デザイナーのわたしがプログラミングの基礎をだいたい3日で覚えた1つの方法
  • Hack · Programming Productivity Without Breaking Things

    HackHack is an object-oriented programming language for building reliable websites at epic scale Hack reconciles the fast development cycle of a dynamically typed language with the discipline provided by static typing, while adding many features commonly found in other modern programming languages. Hack provides instantaneous type checking by incrementally checking your files as you edit them. It

    Hack · Programming Productivity Without Breaking Things
  • 「2014年プログラミング大予測」に参加しました - t-wadaのブログ

    あけましておめでとうございます。 昨年の暮れに『日経ソフトウエア』誌の新春恒例である技術予想企画に参加しました。きっかけは特集担当記者の大森さんからアンケートへの回答依頼を頂いたことです。その大森さんに掲載許可も頂いたので、このエントリでは私が行った回答に関して書いてみたいと思います。 日経ソフトウエア 2014年 02月号 [雑誌] 出版社/メーカー: 日経BPマーケティング発売日: 2013/12/24メディア: 雑誌この商品を含むブログを見る アンケートには大きく二つの設問がありました。 問1 プログラミング分野における2013年の大きなトピックは何だったとお考えかを、「なぜその技術が重要か」という理由付きで教えてください。 問1は 2013 年に関する質問であり、この一年であったプログラミング上のトピックを一つ回答しようと考えました。となるといくつか挙げられるのですが、私が 201

    「2014年プログラミング大予測」に参加しました - t-wadaのブログ
  • テスト考2014 - Hidden in Plain Sight

    年々、ウェブアプリを開発するときにテストを書こうという機運が強くなっていると感じる。 これは、開発パラダイムの成熟を意味することであり、基的に良いことだと思っている。 しかし同時に「テスト原理主義」とでもいうような極端な考え方もでてきていて、開発スタイルをめぐって摩擦が起こっている。 そして、この議論は「テストは、ないよりあったほうが良いよね」という、微視的には誰も反論できないロジックに押し通されがちで、「地獄への道は善意で舗装されている」の典型的な現象に見えて仕方がない。 テストを書かない、というと背景にどんな深い考えがあっても素人くさく聞こえ、逆にテストを書くというだけで良いプログラマーに見える、という非対称な化粧効果がある。ソフトウェア・コンサルティング会社がテスト好きなのは決して偶然ではない。 ソフトウェアというのは、結局のところ、動いてナンボ、使われてナンボである。 期待するも

    テスト考2014 - Hidden in Plain Sight
  • プログラマとしてレベルを上げるために必要な4つの要素 - 思考と現場の間で

    最近、プログラマの成長について考えることが多くなりました。自分自身についても仲間についても。成長しているメンバーが集まらないといいモノは作れません。個人としても、エンジニアは常に成長していかないと仕事にならなくなる瞬間がやってきます。簡単にできるものではありませんが、やらざるを得ない状況でもあり、これまでの経験からプログラマとしてレベルを上げるために必要な要素を整理してみました。 1)基礎 コンピュータサイエンスやプログラミング言語です。まずは基が無いとしっかりとしてものを作ることができません。 2)師匠 ノウハウというものは言語化できるものばかりではありません。ちょっとしたコツや考え方は、出来る人と一緒に仕事をすることが一番です。教えてもらい見て盗む。また、一緒にやることで自分自身が感じられる世界を広げることもできます。 3)実践 実際のプロジェクトです。やり方ばかりを学んでも、実践し

    プログラマとしてレベルを上げるために必要な4つの要素 - 思考と現場の間で
  • 「#ぶつかり稽古」という事件について - Kentaro Kuribayashi's blog

    去る11月23日、あるイベントが開催された。「秋のエンジニアぶつかり稽古 2013」という。何を目的にしたイベントなのか誰も(主催者側ですらも)わからないまま始まったこのイベントは、しかし、最後までその目的が明らかにならないままに、なぜか大成功の余韻だけはしっかり残して終わった、異常な「事件」と呼ぶ他ないものとなった。 事の発端 そもそもの始まりからして意味不明だったのである。発端はこれだ。 @__kan こんにちは、ペパボです。YAPC::ASIA参加者スペシャル特典にご応募いただき、ありがとうございます ! @kentaro とのぶつかりげいこをぜひ開催したく思います。ご都合のよろしい日をいくつかご連絡下さい! pic.twitter.com/uoj2uExHBU— ペパボ(paperboy&co.) (@pepabo) October 2, 2013 2ヶ月ほど前、YAPC::Asi

    「#ぶつかり稽古」という事件について - Kentaro Kuribayashi's blog
  • もっともっと良いコーディングをするための勘所8つ - 病みつきエンジニアブログ

    先日とあるコードレビューを拝見することがあったのですが、それにインスパイアされて記事を書いてみます。レビュワーの方が言ったことも含んでいますが、それと必ずしも一致するものでもありません。 Objective-Cのコードで書いていることが多いですが、わりと一般論だと思います。 photo by Hugo-photography 命名規則は言語の「普通」に任せる 例えば、Objective-Cだと変数にはcamelCaseを使うことが多いです。逆にRubyではsnake_caseを使ったりします。もしくは、略語を使うとか使わないとか、そういう違いもあります。 変数名に対してどういう書き方をするかというのは、個人の好みではなく、言語の慣習に任せるのがいいのではないかと思います。 言語の慣習の調べ方は、Githubで「stars:>100」と検索して、言語を絞るといいでしょう。(参考:Rubyの例

    もっともっと良いコーディングをするための勘所8つ - 病みつきエンジニアブログ
  • プログラマではありませんが、プログラマの話をさせてください - mixi engineer blog

    はじめまして。8キロのダイエットに成功しましたが、最近リバウンド気味の土戸と申します。 私は今、弊社イノベーション・センター案件である、Plannah(プランナー)のプロダクトマネージメントとマーケティングに携わっております。 先日我がチームの開発メンバーである衣川から、簡単にPlannahの紹介がありました。多くの方々に記事を読んで頂き、そしてPlannahに関心を持って頂き、大変感謝しております。日は、Plannahの話は割愛させて頂き、ちょっとしたプログラマ話(?)をしたいと思います。 私はプログラミングを職業としているいわゆる"プログラマ"ではありません。ミクシィに新卒入社した2009年からしばらくは営業マンでしたし、その後も今に至るまでサービスディレクターとして勤めてきました。少しさかのぼって、小学校の頃は当時流行っていたGW-BASICでmud gameなどを作ってみたり、大

    プログラマではありませんが、プログラマの話をさせてください - mixi engineer blog
  • throw null問題

    irof @irof ほんとだ、コンパイルとおるんだ。 throw (Throwable)null; とかしなくていいんだ。……って考えてみればreturnとかもそうか。ふむ。 2012-11-08 14:27:06

    throw null問題
  • ダブル・ディスパッチ~ 典型的なオブジェクト指向プログラミング・イディオム ~

    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が最近リリースされ、重要な変...

    ダブル・ディスパッチ~ 典型的なオブジェクト指向プログラミング・イディオム ~
  • Great Works in Programming Languages

    In September, 2004, I posted a query to the Types list asking people to name the five most important papers ever written in the area of programming languages. This page collects the responses I received. (A few are missing because I am still tracking down bibliographic information.) Many thanks to Frank Atanassow, David Benson, Nick Benton, Karl Crary, Olivier Danvy, Mariangiola Dezani, Dan Friedm

  • 「null」をフラグとして使うのは、やめた方がいい - 地平線に行く

    null をフラグとして使うのは、やめた方がいいと思います。 null は、ただ変数が初期化されていないことを表しているだけです。 この意味以外で、null を使わない方がいいと思います。 null をフラグとして使う 「null をフラグとして使う」というのは、「null なら xxxx」というように、null が何らかの意味を持って使われていることを指します。 例えば、下記のコードでは「null はゲストユーザを指すフラグ」として使われています。 /** * ユーザ用のヘッダを作る処理 */ public String createHeader(User user){ (…中略…) String name; if(user != null){ name = user.getName(); }else{ name = "Guest"; // null ならゲストユーザ } 問題点 これの

    「null」をフラグとして使うのは、やめた方がいい - 地平線に行く
  • Why does this code using random strings print "hello world"?

    The following print statement would print "hello world". Could anyone explain this? System.out.println(randomString(-229985452) + " " + randomString(-147909649)); And randomString() looks like this: public static String randomString(int i) { Random ran = new Random(i); StringBuilder sb = new StringBuilder(); while (true) { int k = ran.nextInt(27); if (k == 0) break; sb.append((char)('`' + k)); } r

    Why does this code using random strings print "hello world"?
  • 近頃の開発環境 | watermint.org

    なおやさんが近頃の開発環境 : Mosh、z、tmuxEmacs、Perl についてというのを書いていたので、個人的にも最近変えていることをメモしておきます。 近頃の開発は、ターミナル中心生活ではなくなるべくIDEを使うように心がけています。補助的にSublime Text 2のようなエディタや、ターミナルも使いますが開発のほとんどはIDEに移行しつつあります。git操作もSourceTreeを中心的に使っています。 IntelliJ / PhpStorm 最近の開発はほぼこれで完結させています。なれないところも多いですが、リファクタリングなど安心して使えるのが気に入っています。デバッグ、コード補完、スペルチェック、文法チェック、コード品質チェックなどもIDEを使う醍醐味でしょう。 「それvim/emacsで出来るよ」という意見はあるでしょうけれど、編集中のコードに対してASTを作って開

  • リーダブルコード - techlog

    リーダブルコード」を読了した。いいだった。こんなにいいはひさしぶりかも。薄くて、訳がわかりやすく、さらっと読める。でも大切なことがぎゅーっと詰まってる。 リーダブルコードはリーダブルブックだった。 よいコードを書きましょうって書いてあるはたくさんあるし、何冊かは読んだ。なにが違うのか考えてみた。 原理、原則だけを書いているわけではない 理想論的ではなく、現実的な内容が書いてある 実践的なプラクティスが書いてある たぶんこんな感じ。もうちょっと詳しく書く。 原理、原則だけを書いているわけではない たとえば、コーディングルールを徹底するというのは、原理主義的なアプローチだと思う。コーディングルールを徹底するのは効果的で必要なことだけど、それだけではリーダブルコードにならない。 「3.7 ユーザの期待に合わせる」ではこんな例があった。 プログラマは get で始まるメソッドは、値を返すだ

    リーダブルコード - techlog