タグ

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

  • 小人閑居して: 「ぐへへお姉ちゃんパンツ何色」から始めるクラス解説

    2011年12月6日火曜日 「ぐへへお姉ちゃんパンツ何色」から始めるクラス解説 「ぐへへお姉ちゃんパンツ何色」はこれ以上ないほどオブジェクト指向であり、しかも理想的な実装をしていることに気づきました。これを用いてオブジェクト指向を説明してみようと思います。 ある人が「ぐへへお姉ちゃんパンツ何色」と質問するのは、お姉ちゃんオブジェクトの保持するpants_color変数を取得しようとする手続きと見ることが出来ます。つまり oneechan.pants_color を取得しようとしているわけです。 ではどうすればいいのでしょうか? 考えてみましょう。直接パンツを見ればpants_colorを取得することができますね。 クラスを使わないとすればこんな書き方が考えられます。 struct oneechan{      int pants_color; }; 構造体でひな形を宣言します。

  • 職業プログラマになって考えた「良いコード」とは? - seri::diary

    仕事としてコードを書くようになって3週間が経ったので ここらで所感をまとめてみたいと思う。 ベンチャーと大手企業の違いみたいなことを書いてもいいんだけど、 正直今のところ「あまり変わらない」印象。 それもそのはず、現職もエンプラ向けの仕事。 SIと仕事のやり方はかなり似ている。 ので、純粋にプログラマとして思ったことを。 スパゲッティコードとの出会い この3週間で触ったのはウチの会社で改修・保守をやっているシステムの バッチや管理画面の細かい修正など。 コードは全てPHPだった。 この辺は一番経験のある言語だったので助かった・・・と思った。 が、意気揚々とソースを見て愕然とした。 処理ベタ書きのずらずら続く手続き型の処理は序の口。 関数を定義する代わりにベタ書きスクリプトを外出しにしてrequire 意味不明な変数名 同じ処理をしているはずなのに名前だけ違う関数達 無計画なテーブル定義 業

    職業プログラマになって考えた「良いコード」とは? - seri::diary
  • なぜ次に学ぶ言語は関数型であるべきか - YAMAGUCHI::weblog

    はじめに こんにちは、Python界の情弱です。ちょっと前にOCaml系のエントリを色々と眺めていたらYaron Minsky氏のエントリを見つけたので翻訳してみました。 OCaml for the Masses - ACM Queue Yaron Minsky氏はJane Streetで第一線で活躍されるエンジニアで、Jane Streetの技術ページをはじめ多くの場所でOCamlに関しての知見を語ってくださっています。 Jane Street Tech Blogs エントリはJohn Hughesの名エントリ「なぜ関数プログラミングは重要か」を受けてACM Queueに寄稿されたものの日語訳です。 なぜ関数プログラミングは重要か Why the next language you learn should be functional YARON MINSKY, JANE STREE

    なぜ次に学ぶ言語は関数型であるべきか - YAMAGUCHI::weblog
  • Excel列名変換問題で第2回社内プログラミングコンテストを開催してみた(前編) - give IT a try

    2011.12.31 追記 後編を書きました。こちらもあわせてどうぞ。 Excel列名変換問題で第2回社内プログラミングコンテストを開催してみた(後編) - give IT a try はじめに 先日、FizzBuzz問題を使って社内プログラミングコンテストを開きました。 このブログでも書いた通り、なかなか興味深い結果になりましたが、一方で反省点もいくつか見つかりました。 特に問題が解けなかった人が出てしまったのは痛い誤算だったので、今回はできるだけ最後まで解けるような配慮をしてみました。 ただし、問題自体はFizzBuzz問題よりもずっと難しくしてあります。 今回もちょっと長いエントリになっていますが、よろしければ最後までお付き合いくださいませ。 前回の反省点 詳しくはこちらのエントリに書きましたが、簡単にまとめると 言語の得意・不得意が結果に大きく影響した 抜き打ちで実施したことがその

    Excel列名変換問題で第2回社内プログラミングコンテストを開催してみた(前編) - give IT a try
  • 試そう!PHPコードを解析して修正点を指摘·phpca MOONGIFT

    phpcaはPHPを静的に解析して小さなミスやコードの修正点を指摘してくれるソフトウェアです。 PHPを書く際にどう書けば小さなミスによるバグの発生を防げるでしょうか。一定の基準に沿って記述することで整然としたコードを実現し、可読性をあげることでバグの混入を防ぐことができます。そこで使いたいのがphpcaです。静的にPHPファイル(ディレクトリ単位も可)を解析し、修正すべき場所を指摘してくれます。 解析処理を実行しています。PHPのパスと、解析したいファイルやディレクトリ名を指定して実行します。解析処理中は随時メッセージが出力されます。 メッセージ例です。タブの利用や行の使い方に関してなどメッセージが表示されます。 ?>がない場合もメッセージが出ます。これはPHPの書き方としては逆かも知れません(確かない方が良いという話なので)。 PHPを書く上でありがちなミスやバグにつながりそうな指摘を

  • ブラウザ上でインタラクティブにRubyが学べる『Ruby Monk』 | 100SHIKI

    似たようなサービスが最近増えてきましたな。どちらにしろプログラミングは一般常識として必須なんじゃないか、と思うぐらいなのでご紹介。 Ruby Monkでは、ブラウザ上でRubyを勉強していくことができる。 説明があって、お題があるので、それにコードで回答していけばOKだ。 画面上部には大きく「あと○○問!」とあるので進捗がわかりやすいのがポイントだ。 そろそろRubyでも・・・と思っている人はいかがでしょ。

    ブラウザ上でインタラクティブにRubyが学べる『Ruby Monk』 | 100SHIKI
  • 頻出典型アルゴリズムの演習問題としてよさげなやつ - kyuridenamidaのチラ裏

    効率的な別解とか存在する問題もあるけど演習によさそうなやつをピックアップ。そのアルゴリズムじゃないと解けないわけではないって問題も多いので注意。(ただ演習するのには都合が良いかなと)※個人的難易度をつけてみました。とても主観的な難易度付けなので気にせず解いてみてください。深さ優先探索・Balls[☆]・Sum of Integers[☆]・The Number of Island[☆]・Block[★]幅優先探索・Mysterious Worm[★]・Cheese[★]・Seven Puzzle[★☆]・Stray Twins[★★]・Deven-Eleven[★★]・Summer of Phyonkichi[★★☆]ワーシャルフロイド法(For 全点対最短路問題)・Traveling Alone: One-way Ticket of Youth[★]・A reward for a Car

  • 面白い!Ruby/Pythonなど多数のプログラミング言語をWebブラウザ上で実行する·repl.it MOONGIFT

    repl.itはWebブラウザ上で多数のプログラミング言語を実行し、その結果を確認できるソフトウェア。 repl.itHTML5/JavaScript製のオープンソース・ソフトウェア。プログラミングの学習はどこで行うのが良いだろうか。書籍を購入する人もいれば、オンラインのチュートリアルを見る人もいる。いずれの場合もローカルに実行環境を用意して行うものだろう。 利用可能な言語一覧 お勧めなのはオンライン学習なのだが、実行環境がJavaScriptくらいしか用意できないのが問題だった。だがrepl.itを使うとそれ以外のプログラミング言語もオンラインで実行できるようになる。 repl.itが使える言語としてはJavaScript、CoffeeScriptの他、RubyPython、Lua、Scheme、QBasic、Forth、Emoticon、Brainfuck、LOLCODE、Unla

  • FizzBuzz問題を使って社内プログラミングコンテストを開催してみた - give IT a try

    はじめに 先日、社内で初めてプログラミングコンテストを開催しました。 お題はかの有名なFizzBuzz問題です。 全員楽勝で解答するだろうと思いきや・・・結果はいかに!? ちょっと長いエントリですが、このコンテストの顛末をお楽しみください。 開催の動機と経緯 メンバーの向上心を刺激するために、なにか面白くて技術的に意味のあるイベントを開きたかった。 以前からFizzBuzz問題を全員で解いてみたかった。 FizzBuzz問題はプログラマなら解けて当たり前、というようなWeb記事をよく見かけていた。 これぐらいなら誰でも解けるだろうと自分も思っていたが、実際にやってみないとわからない。 そこで社内プログラミングコンテストを開き、みんなでFizzBuzz問題を解いてみたいと思った。 マネージャーに話を持ちかけたところ、すぐに賛同してくれた。 FizzBuzz問題以外の追加問題も作成したが、第1

    FizzBuzz問題を使って社内プログラミングコンテストを開催してみた - give IT a try
  • 人にプログラミングを教えるときのポイント

    最近では、人にプログラミングを教えることはほとんど無くなってしまったのですが。 学生時代、情報学科に所属していた頃は、よくクラスメイトや後輩にプログラミングを教える機会がありました。 その頃の経験を元に、人にプログラミングを教えるときのポイントを、まとめてみたいと思います。 実際に人に教えるときの参考にしてみたり。 また、逆の立場になって、プログラミングを教わる(or理解する)ためのポイントのヒントとしてご覧ください。 1.何が解らないのか?は直接聞かない。 「解らない」と言って聞いてくる人に対して、「何が解らないの?」と聞いた場合に「それも良く解らない。とにかく解らない」と返されるケースって良くあると思います。 また、実際に「ここが解らないんだけど」という相手に、その内容を説明してもいまいちピンと来ず、深く聞いてみたらもっと根元の部分の勘違いが原因だったりすることもあります。 「解らない

  • プログラミングが速く組めるようになる初歩的な3つの心掛け - 遥か彼方の彼方から

    プログラム雑用兼プログラマーとしてアルバイトしていた頃のこと。僕の最初の悩みは、どうすればもっと速くプログラミングできるか、でした。訳あって3時間ほどしかバイト時間を確保できなかったうえ、雑用もしていたので、気付くとほとんどコードを書かずに一日が終わるなんてこともよくりました。急がなくてもいいとは言われてはいたものの、プログラミング能力が低くて、要領も悪い僕としては、せめて時間内に終わらせられる程度にはプログラミングが速くなる必要があったのです。とはいえ、すぐにプログラミングが上手くなることなんて出来無い。だからせめて、プログラムで詰っている時間を減らせさえすれば、今よりもよくなるんじゃないか、とそう考えるようにしました。そう意識してからの作業は徐々に速くなり、最終的になんとか仕事についていけるようになっていたかなと思います。ということで、前置きが長くなりましたが「プログラミングが速く組め

  • ウェブアプリのセキュリティをちゃんと知ろう

    ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料) - Download as a PDF or view online for free

    ウェブアプリのセキュリティをちゃんと知ろう
  • プログラマになるための勉強をしている人の前で話をしてきた - きしだのHatena

    イデアルITスクールというところで、1時間ほど話をしてきました。 プログラマとしてやっていくために大事なことというテーマ。 資料を作らずに、というか構想すら練らずにやってしまったので、ここで整理とまとめと補足を。実際にこれをしゃべったというのではなくて、だいたいこんなことをしゃべろうとしてたという内容をかなり盛って書いてます。 当然ですが、プログラマの仕事はプログラムを書くことです*1。 プログラマとしてやっていくためには、どこで動くプログラムを書くか、なにをするプログラムを書くかということを意識することが大事です。 ということで、まずはプログラムが動くところがどう変わったかという話。 1970年代ころは、デバイスを動かすためのプログラムが多かったのではないかと。 あと、ここには書いてないけど、業務アプリはほぼメインフレームで動いてたと思います。 それが、1980年代くらいからパソコンが出

    プログラマになるための勉強をしている人の前で話をしてきた - きしだのHatena
  • サーバーを作ろう

    O'reilly HBase The Definitive Guide Chapter 6 Available Clients

    サーバーを作ろう
  • プログラマーの感覚とデザイン。 - このブログは証明できない。

    プログラミングとデザインにおける論理と感覚って、同じようなものなんじゃないかな。とようやく実感してきた。だからこそ、僕たちがプログラミングに触れてきたようにデザインに触れてきたデザイナーさんの力を借りたいよね。あと、コミュニケーション大事。そんな話。 祝日の朝にカフェでダラダラ書いたので、グダグダで読み返すと何言ってるかわからない。でも、休みの日にカフェでプニプニと文章書いてると、気分転換になってよかった。事をとらずに費を浮かせてカフェラテを注文したかいがあった。 デザインが見えない。 今年の1月ごろからずっと「デザイン」「デザイン」と言ってるけど、まったく何もやってない。とっかかりがわからなくて、手が出せない感じ。デザインという言葉自体、幅が広くて、デザインの対象がコミュニケーションだったりユーザーインターフェイスだったりする。そこも絞れていない感じ。絞れていないというか、共通する基

    プログラマーの感覚とデザイン。 - このブログは証明できない。
    ytotoy
    ytotoy 2011/09/25
    センスは勉強して鍛えられるんだな
  • Tumblr

    Tumblr is a place to express yourself, discover yourself, and bond over the stuff you love. It's where your interests connect you with your people.

    Tumblr
  • セキュリティに配慮したコードの書き方を学びたいです。 効果的な学習法を教えて下さい。 - hamachiya2インタビュー

    学習法は知らないけど、セキュリティに限らずバグのないコードを書く為には 想像力が大事だと思う。 たとえば「ここは数字が入力されているはずだから」ってことで 入力された値をそのまま計算しちゃうコードだと、 「もし数字以外が入力されていたら?」 「もし割り算なのにゼロが入力されていたら?」 みたいな、いわゆる「異常系」が沢山あるよね。 それをどれだけ想像できるか。 もちろんいくつかの定番パターンはや他人のコードからの学習でも覚えられるし、そういった学習を時々することも大事。 だけど教科書に書いてあることって、なかなか覚えられないよね。 少なくともぼくはそう。 だから自分で書いて、そして「手を抜かず想像して」、それを経験として覚えていくのが良いんじゃないかな。 プログラムじゃなくて文章とかでもそうだよ。 ぼくは一行書くたびに、 「ほんとに矛盾はないか?異常はないか?

  • プログラマーならコードで語れ。プログラミングコミュニティ·Codebrawl MOONGIFT

    Codebrawlはコードを投稿して他の人が投票を行うプログラミングコードコミュニティ。 CodebrawlはRuby/Ruby on Rails製のフリーウェア(ソースコードは公開されている)。プログラミングはデジタルな1/0のコードを生み出すが、そのやり方は開発者によって千差万別だ。エレガントなコードを書く人もいれば、ひどいスパゲティなコードを書く人もいる。結果は同じであったとしても、やはりエレガントなコードを書きたいと思うだろう。 トップ画面 一つの問題に対してどうコードを書くかによって、その人の技量が問われる。だがその解決策の導き方が面白いコンテンツになる。そんなソフトウェア&サービスがCodebrawlだ。 Codebrawlはプログラマー同士のバトルサービスだ。課題を決めて、それを解決するコードを投稿する。コードはGistに書くようになっており、投稿時にはそのGistのIDを登

  • staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して

    何が良いプログラムかという点はもちろん人やコンテキストによって異なりますが、少なくともプログラマーとしての私の信念としては、 機能拡張や変更が容易なプログラム 単体試験によって正しく動作することの検証が容易なプログラム どういった内容が記述されているか理解しやすいプログラム といったものこそ、「品質の高い」プログラムが持つべき性質として、まず真っ先に挙げるべき事項であると考えています。もちろん、前提として顧客の要件に従うということは大切なことです。しかし、一般に要件は長期にわたって変更されるものですし、使い捨てのプログラムを除けば、プログラムを長期にわたって保守するコストという点も見過ごすべきではありません。したがって、ユーザーの目には触れない上記の性質をもっと重視すべきだと思うのです。 DRYの原理 上記のような性質を満たすプログラムを作る上で大切になってくる原理として、DRYの原理とい

    staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して
  • プログラミングのスキルを鍛える10の方法 | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記

    みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー ステキな英文の記事を見つけました。10 ways to improve your programming skills。どれも自分が実践していることでもあって,「なるほどな−」と思うものばかり。 たっぷりプログラミングしたあとは,節電も忘れずに:-)。 1. 新しいプログラミング言語を学ぶ 新しいプログラミング言語を学ぶことで,新しいプログラミングに対する考え方に触れることができる。そのプログラミング言語が今まで知らなかったパラダイムに根ざしている場合ならなおさら。新しい手法の多くは,すでに知っている知識になぞらえることができるので,習得はそれほど難しくないはず。 2. やる気をそそら