タグ

programmingに関するpakapaoのブックマーク (26)

  • Javaプログラマが知るべき9のこと - @katzchang.contexts

    はじめに ソースコードは設計であり、コードの記述は品質に直結するのは言うまでもない。ちなみに、プログラマにとって特に重要なのは保守性だ。コードは書いた直後から保守対象となるからだ。コードは要求文書の範囲で動けばいいと思っている人がいれば今すぐ、ソースコードをコピペして100klに増えるプラグインがいつの間にかインストールされる呪いをかけてあげよう。幸い、ここを読んでいる人にはそんな人はいないだろうと思うけれども。 ということで、コードの品質を下げる要因、すなわちシステム全体の品質を下げる要因となり、かつ使われやすいアンチパターンを挙げ、対策を検討していくことにする。対象は以下: 出力パラメータ 処理状態返却 意味のある配列 無意味な初期化 多すぎるtry-catch 暗黙の順序 コンパイラ警告の無視 過剰なコメント e.printStackTrace() 出力パラメータ メソッドの引数にオ

    Javaプログラマが知るべき9のこと - @katzchang.contexts
  • 八角研究所 : 高速スクリプト言語「Lua」を始めよう!(1) - 高速スクリプト言語「Lua」を始めよう!(1)

    高速スクリプト言語「Lua」を始めよう!(1) - 高速スクリプト言語「Lua」を始めよう!(1)

  • 米Google、高速・低メモリ消費の正規表現ライブラリ「RE2」を公開 | OSDN Magazine

    Googleは3月11日、正規表現ライブラリ「RE2」を発表した。動作が高速で「スレッドフレンドリー」な点が特徴。従来のバックトラック型正規表現ライブラリの代替として開発を進めていく。 Googleによると、同社はCode SearchやSawzallといったインフラやアプリケーションで正規表現を利用しているが、バックトラックアルゴリズムを利用した従来の正規表現実装では入力データに対し処理時間が指数的に増加することが問題となっていた。また、固定サイズのスタックを持つC++のマルチスレッドプログラムの場合、従来の正規表現実装ではスタックを使い切ってスタックオーバーフローを発生させることがあったという。これらを解決するために独自の正規表現エンジンを開発したとのこと。 RE2はどのような入力や正規表現に対しても一定の小さいメモリ量で動作するように開発されているのが特徴。オートマトン理論の下、処

    米Google、高速・低メモリ消費の正規表現ライブラリ「RE2」を公開 | OSDN Magazine
  • いまさら聞けない「変数の命名規則」 - 基本へ帰ろう

    変数の命名規則って名前がついているのですね・・・というのをさっき知ったので・・ほんといまさら聞けない感じです・・w アッパーキャメルケース (UCC)、またはパスカルケース(PascalCase)(Pascal記法) キャメルケース - Wikipedia 複合語の先頭を、大文字で書き始める。 例 : CamelCase ローワーキャメルケース (LCC)、または単にキャメルケース キャメルケース - Wikipedia 複合語の先頭を、小文字で書き始める。 例 : camelCase アプリケーションハンガリアン(ハンガリアン記法) ハンガリアン記法 - Wikipedia アプリケーション ハンガリアンは、間違えたコードを間違えて見えるようにする記法である。 たとえば、論理座標にRelative Positionのrp、絶対座標にAbsolute Positionのapというプレフィッ

    いまさら聞けない「変数の命名規則」 - 基本へ帰ろう
  • If Programming Languages Were Real Persons | Jeez Tech

    What if programming languages were real persons like you and me? What if they were parts of families and had relations and affairs? Have you ever thought of going to a supermarket and Visual Basic was the young woman waiting in the line in front of you? Well we did. We let our imagination free and we came up with pictures and facts :). We hope you enjoy this article since it only exist as a geeks

  • [JavaScript] 猿でもわかるクロージャ超入門 まとめ - DQNEO起業日記

    クロージャとは クロージャは、言葉で説明するのが大変難しい概念です。 あなたは、自転車の乗り方を、口だけで説明できるでしょうか? あなたは、螺旋(らせん)の形を、言葉だけで説明できるでしょうか? ずばり、できないでしょう。 しかし、自転車に乗ることはできますし、針金で螺旋の形を作ることはできるでしょう。 「クロージャ」もこれと同じです。 だから、Wikipediaのこんな解説を見ても落ち込まないでください。 クロージャ (クロージャー、Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。 理解できないですよね? 私もそうでした。 クロージャを既に知っている人にしか、この文章は理解できないでしょう。 クロージャを作るのは難しくない しかし、説明するのは難しくても、作るのは意外と簡単。それが

  • コンピュータサイエンスはこう学べ (1) - 将来が不安

    週報 2024/04/28 川はただ流れている 4/20(土) 初期値依存性 さいきん土曜日は寝てばかり。平日で何か消耗しているらしい。やったことと言えば庭いじりと読書くらい。 ベランダの大改造をした。 サンドイッチ 一年前に引っ越してからこんな配置だったのだけど、さいきん鉢を増やしたら洗濯担当大臣の氏…

    コンピュータサイエンスはこう学べ (1) - 将来が不安
  • 軽量スレッドブームだと思うので、そこらへんの情報をまとめてみる - 金利0無利息キャッシング – キャッシングできます - subtech

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    軽量スレッドブームだと思うので、そこらへんの情報をまとめてみる - 金利0無利息キャッシング – キャッシングできます - subtech
  • Rによる最適化、パラメータ推定入門 - yasuhisa's blog

    パラメータの推定、でもその前に optimize関数について 補足 パラメータの推定 ベルヌーイ分布 定式化(尤度関数) 尤度関数の実装 尤度関数の最適化(パラメータ推定) 正規分布におけるパラメータ推定 まとめ パラメータの推定、でもその前に統計におけるパラメータの推定というのは大体最適化問題に帰着します。「なんとか関数を(最大|最小)にするようなパラーメータほにゃららを求めたい」とまあこんな感じで。というわけで、パラメータ推定は置いておいて、Rで最大化問題、最小化問題をどう解くかというところを最初にやってみようと思います。最適化問題は離散最適と連続のほうの最適に分けられますが、ここでは連続についての最適化問題について考えることにします。 optimize関数について Rにおける最適化をするための関数はoptim関数、optimize関数があります(他にもnlsなどありますが、とりあえず

    Rによる最適化、パラメータ推定入門 - yasuhisa's blog
  • あなたのソースを汚くして生産性も下げている、たったひとつの間違い - よくわかりません

    この内容には私も全面的に賛成で、クラスやフィールド、メソッド、名前空間など、とにかく文字として表れる名前には、必ず、例外なく、正しく誤解のない命名を徹底することが非常に重要だ。 http://blog.livedoor.jp/lalha/archives/50261226.html 先のエントリは、danさん*1やlalhaさんにまで言及いただき大変光栄で、なにより多くの人に読んでもらえた。多謝。 一方で、自分で読み直すと「先のエントリ」は、いくぶん観念的でいまいちよく分からないところもあるかなと思った。というわけで、より実践に結びつきやすいように、「何に気をつければいいのか」「どういう考え方でコードを書けばいいのか」を書いてみる。 lalhaさんがエントリで強調したかったという (1) 適当に書いたコードは後でとても大きな被害をもたらす可能性が高い への包括的な対策であり、 (2) たく

    あなたのソースを汚くして生産性も下げている、たったひとつの間違い - よくわかりません
  • iPhone開発。まずはサンプルを動かしてみよう

    今回より何回かに分けて、iPhoneアプリの制作過程を連載します。 架空のプロジェクトをサンプルにするよりはいいと思いますので、弊社アプリのメロディベルを題材に、初心者でも分かるような内容にしたいと思います。 要所で前回の記事「日人がつまずきやすい10のポイント」も参考にしていただけると、一層スムーズに進むかと思います。 まずは、iPhone Developer Centerでユーザー登録をして、SDKをダウンロードし開発環境を整えましょう。XCodeを使って、付属のサンプルをいくつか動かしてみつつ、iPhoneシミュレータ上で表示させてみましょう。 まず用意するもの ハードウェア

    iPhone開発。まずはサンプルを動かしてみよう
  • Partty!でリモートペアプロしてみた - Blog by Sadayuki Furuhashi

    Cagraの開発でPartty!.orgを使ってリモート・ペアプログラミングをやってみたところ、かなりイイ感じだったので書いてみます。 使ったツール: Partty!.org(ターミナル共有) IRC(コミュニケーション等々) IRCのログ(作業の記録) Mercurial(ソースコードの同期) Trac(タスク管理) Wiki(議論のまとめ用) Cagraの開発では、片方がコードを書き、片方が見ているという方法ではなく、両方がコードを書きつつ、困ったらIRCで「ここがワカラン」「ここどうしよう」とヘルプを求めるスタイルになりました。 アイディアを議論するところから、仕様を詰め、コードを書くまで、すべてIRC+Partty!一で、トンでもない勢いで開発が進みます。 このスタイルが成功したのは、主に以下の理由があるかなーと思っています。 互いに十分なプログラミングの知識がある IRCのログ

    Partty!でリモートペアプロしてみた - Blog by Sadayuki Furuhashi
  • 堀江貴文 エンジニアは誇り高くあれ|【Tech総研】

    東京大学文学部宗教学宗教史学専修課程中退。1996年に「有限会社オン・ザ・エッヂ」を設立。2002年に旧ライブドア社から営業権を取得し、2004年に社名を「株式会社ライブドア」に変更。2006年に証券取引法違反容疑で起訴されて一審、二審ともに有罪判決を受ける。現在上告中。1972年福岡県生まれ。 今、非正規雇用の増加やいわゆる「派遣切り」が社会問題になっていますけど、僕が前の会社(ライブドア)で社長をやっていたときは、技術者派遣やSI会社の常駐社員などは一切使わなかったし、逆に自社の社員を派遣することもしなかった。社内ではこうしたシステムを利用するようにかなり説得されたけど、ここだけは頑固に譲らなかった。 唯一、派遣会社を使ったのは受付の女の子たち。いろいろとあって押し切られてしまったのだけど、彼女たちが望めば正社員にしていたし、希望すれば総務や経理に異動もさせていた。ほかに社員でない人と

  • 酔っぱらった勢いでコードを書く際に大切なこと

    プライベートでコードを書く時は、たいていビールを飲みながらってな毎日のkentaro a.k.a. id:antipopです。こんにちは。 そんなわけで、ただでさえtypoが多いのに加えて、酔いにより手元はボロボロ。調子良く書いていても、つまらないtypoをいちいち修正してまわっていると、せっかくの気分のいい酔いも覚めてしまうというものです。そこで、コードを書く時には酒を飲まない、という以外の対策を考えてみました。 とにかく全部ぶっつぶす ひとはどうしたところで間違いを犯すものです。酔っぱらっていても酔っぱらってなくても、それは同じ。ならば、あり得る名前をあらかじめ定義してはどうか、と考えました。 たとえば以下のようなクラスを定義したとします。 package Hoge::Fuga::Piyo; use strict; use warnings; # ... (snip) ... 1; こ

  • Google 工藤拓さん講演「大規模ソフトウェア開発を支えるGoogleのテクノロジー」

    NAISTにてMeCabの作者としても有名な工藤拓さんの講演が行われました。Googleの開発体制とそれを支えるツールのお話です。 学校と拓さんの双方からブログへの掲載許可が得られたので、まとめを公開します。この講義はNAISTのソフトウェア開発管理講義の一環です。 iPhoneカメラしかなかったので、画像が荒くて済みません・・・。 会場は大入り! 工藤拓さん NAIST自然言語処理学講座出身 Googleに入社してから大規模開発やインフラを経験 MeCabを開発 NTTコミュニケーション科学基礎研究所に所属 その後Googleへ 研究より開発寄り Googleでの仕事語のウェブ検索 「もしかして」機能 ダジャレサーチ エイプリルフールネタを1ヶ月かけて実装 何千人もの開発者が単一のソースコードリポジトリの上で開発を行っている 大規模開発をサポートするインフラが不可欠 Mondria

    Google 工藤拓さん講演「大規模ソフトウェア開発を支えるGoogleのテクノロジー」
  • 中途半端に優秀なプログラマが「正しいプログラミングテクニック」だと妄信しがちな3つポイント - 分裂勘違い君劇場

    「変数のスコープは狭いほど良い」と妄信する 変数でもメソッド名でもクラス名でも言えることだが、単純に「スコープは狭いほどよい」という方針でプログラムすると、逆に保守性も可読性も悪いプログラムができあがることがけっこうある*1。 実際、「あちこちから頻繁にアクセスするようなオブジェクトやメソッド」は、スコープをぐっと広くしてしまった方が(場合によってはグローバル変数やグローバル関数にしてしまった方が)、いちいちパラメータ渡しのバケツリレーをせずに、オブジェクトや機能を使うことができ、プログラムの可読性も保守性もずっと向上することがけっこうある。 たとえば、プログラムのいろいろな箇所から比較的頻繁にアクセスする必要があるようなオブジェクトや機能がバインド(格納)された変数やメソッドのスコープをクラスやメソッド内のローカルにして、それを使うときは、いちいち各クラスやメソッドにパラメータ渡しのチェ

    中途半端に優秀なプログラマが「正しいプログラミングテクニック」だと妄信しがちな3つポイント - 分裂勘違い君劇場
  • ガベージコレクションの実装法と評価

    1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい

  • Google App Engine が凄すぎる気がしてきた - Djangoへの片思い日記

    Google Developer Day 2008 に行ってきました。 で、基調講演聞いたあと、Google App Engine のコードラボに参加してきました。 まぁ簡単に言うと Hackathon です。 画像掲示板つくってみる ユーザ登録&認証 コメント付加 古いデータは消す な画像掲示板を書いてみました。 #!/usr/bin/env python # -*- coding: utf-8 -*- import wsgiref.handlers, cgi from google.appengine.api import images from google.appengine.api import users from google.appengine.ext import webapp,db class ImageAndText(db.Model): user = db.User

    Google App Engine が凄すぎる気がしてきた - Djangoへの片思い日記
  • すさまじく充実してる IT 勉強会カレンダー - てっく煮ブログ

    ここ最近、技術系の勉強会がものすごく多い印象がある。毎日どこかで誰かがやってるんじゃないの、と思ってたら、当にやっているらしい。これは id:hanazukin さんが Google カレンダーで運営中の IT 勉強会カレンダー。休日だけでなく、平日もぎっしり詰まっていて衝撃を受ける。例えば、今週土曜日は日全国で14個の勉強会が開催されるらしい。そんなにやってるのか!!勉強会名をクリックすると、場所と申し込みページが表示される。これはすごいといわざるをえない。あの勉強会の情報が載ってないよ!というのがあれば、id:hanazukin さんにメールすると記載してくれるみたい。伝えるときのガイドラインはIT勉強会カレンダーに情報を下さる方へを参照あれ。ただ、協力しようと思って探してみたけど、自分が知ってる勉強会は全部記載されていた…。すさまじい。ちなみに、新着の勉強会は こちらの RSS

  • まつもと直伝 プログラミングのオキテ 第18回 プログラムを高速化する(その2):ITpro

    プログラムの高速化については連載の第13回で紹介しています。プログラム中のどの部分を高速化すべきなのか,どのように効果を測定するのか,そもそも高速化が必要なのかを考察しました。今回は実際に高速化を試みます。 今回はプログラム高速化の実践編として,ある程度の大きさの具体的なプログラムを段階的に高速化しながら,実践的なテクニックを学ぶことにしましょう。 例題はマンデルブロ集合*1の計算プログラムです(図1)。マンデルブロ集合は非常に美しい集合ですから,当はグラフィックス表示が好ましいでしょう*2。しかし,GUIを使うと,特定のGUIライブラリ(グラフィックス・ルーチン)に依存したコードが大量に必要です。今回のテーマは「高速化」ですから,直接関係のないGUIコードはできるだけ省くため,キャラクタ(英文字)で図形を表現することにしました。 1 require 'complex' 2 3 def

    まつもと直伝 プログラミングのオキテ 第18回 プログラムを高速化する(その2):ITpro