オブジェクト指向言語の話をするときに便利なように、Javaを中心にプログラミング言語をまとめてみました。Javaに影響与えるか、Javaから影響を受けるか、という感じですね。Simula オブジェクト指向はここから始まったと言われています。 クラス、オブジェクト、継承、仮想関数(多態)といった、オブジェクト指向の基本要素が備わっていました。 ただし、「オブジェクト指向」という言葉は生まれていません。 SmalltalkSimulaから発想を得て「オブジェクト指向」という言葉を生んだのはアラン・ケイでした。 しかし、モデルとしてはSimulaとは異なりメッセージングを主体としたものでした。また、アラン・ケイの「オブジェクト指向」はプログラミングのパラダイムだけではなく、人がコンピュータをどのように扱うかというメタファであり、ダイナブックというハードウェアやそのユーザーインタフェースを含

ちょっと前に「配列中のすべての要素が条件を満たすかどうか判別する関数で、空の配列はTrueを返すべきかFalseを返すべきか」のような話が話題になってました。 まあこれは「Trueを返す」が答えなわけですが、では「配列中の最大値を返す関数で空の配列の場合は何を返すか」が気になりました。 「配列中のすべての要素が条件を満たすかどうか判別する関数」について言えば、簡単に言えばこんな感じ。 まず、配列のすべての要素が偶数であるかどうか判別する関数を考えます。 void main() { int[] data = { 23, 44, 12, 98, 5 }; System.out.println(allEven(data)); } boolean allEven(int[] data) { for (int n : data) { if (n % 2 != 0) return false; } r

プログラムがまだ不慣れな人が「プログラムちょっとわかるようになったけど、まだぜんぜんオブジェクト指向とかできてません」のように言ったり、ちょっと慣れた人が「このソース、ぜんぜんだめ。オブジェクト指向ができてない」にようなことを言ったり、まるで、オブジェクト指向ができてるかどうかがよいプログラムかどうかを表すことになってるようだ。Javaのアルゴリズムの本に、「Javaなのにオブジェクト指向ができていない」のような書評がついているのを見たときには、お前は何を求めてるんだと思ったりもした。 そのようなオブジェクト指向は、窓から投げ捨てるべきだ。オブジェクト指向はプログラムのよしあしの基準にならない。 むだにHogeインタフェースとHogeImplクラスがあったり、むだにnewするだけのcreateメソッドがあったり、どこで値が設定されてるかわからないオブジェクトがひきまわされてたり、ソースコ

追記(2020-12-16): 公式で再実装されたようです。 「タグの一括編集機能」をPCのブラウザで再提供いたします -はてなブックマーク開発ブログはてなブックマークで自分のブックマークの既存のタグ名を変更した時に一括置換したいことがあります。 以前は公式のタグの一括置換/削除機能の追加がありましたが、ブックマーク一覧ページのリニューアル時に消えてしまったようです。 ユーザーのブックマーク一覧ページのシステムリニューアルを行いました -はてなブックマーク開発ブログ Firefoxのアドオン版でも同様の機能がありましたが、もう動かなくなっているので、はてなブックマークのタグを一括置換するコマンドラインツールを書きました。 azu/hatenabookmark-rename-tags: A CLI that replace allhatena bookmark tags. haten
Excelで漢字のふりがなを別セルに表示しようとした場合、一般的にはPHONETIC(ふりがな)関数を使用します。この関数は特定のセルに含まれる漢字に対して、ふりがな部分を切り出して指定セルに格納するという便利な関数です。 PHONETIC関数で漢字のセルを引数で指定すると 自動的にふりがなだけ抽出することができるというExcelは文字入力された時の情報を裏側で持っているのでこのような芸当ができます。ということは、当然入力時に変な変換をしていると思ったようなふりがなを出してくれません。 鈴木さんの名前が間違って出力されました。正しいふりがなは「スズキ ナウシカ」さん。文字入力の際に「いま」「しか」と入れたので、その文字がそのまま反映されてしまってます。別のキラキラネーム、タナカ ピカチュウくんはGoogle IMEだと変換できました。 対処できない文字Excel上でIME使って入力すれ

徐々に利用する機会が増えてきたアノテーションだが、アノテーションベースのフレームワークで使われているのを使ったりすることはあっても自分でアノテーションを定義したことが無かった。 「業務用フレームワーク作る際も使えそうだよなぁ」と思っていたので、今後使いこなす為にも改めてちゃんと勉強しなおしてみた。 ※「アノテーション」自体は、JUnit、Jaxb、Spring等によって使い慣れていることを前提。 アノテーション型 独自のアノテーションを作成する為には、以下のようなアノテーション型のクラスを作成する必要がある。 @interface Annotation名{ キーの型 キーの名前(); ... } クラス名がアノテーション名、メソッド名がキー名となり、メソッドの返り値がキーに指定できる型となる。 アノテーション型はインターフェイス型と似ているが、通常のインターフェイス型に比べ、以下の制限があ
ソフトウェア開発やプログラミングのスピードを上げる方法はありませんか?プログラマーとして生きていこうと決めたのですが、いつも見積もりの3倍時間がかかってしまいます。 そのため いつもつらい思いをしています。 環境を良くしようとHHKLite2を使い、カスタマイズソフトでホームポジションから離さずにプログラミングしています。 マウスもゲーム用の高精度のものを使っています。 調べ物にもタブブラウザを使い、拡張し続けて効率化をしています。 DualCoreマシンを使いメモリもたくさん積み、障害がないように心がけがけています。 出始めのころから効率化のためにエクストリームプログラミングも取り入れていました。 単体テスト、リファクタリングも当然行いますが、余計に開発速度が落ちています。 しかし開発速度は効率化とは無縁だとすら感じています。仕事を減らすことが優先ではないか?と。 昔から創作活動は好
大きめのこととか,自信のないところを触るときは,コード書く前に,こういう作戦考えてみたけどどうですかって聞いてみたり,こういうことやりたいんだけど一緒に考えませんかって,いっしょに話して設計考えたりするとよいと思う. 一緒に考えたすぐあとに気が狂った設計とか言い出したらおかしいので,未然に変な設計のままコード書いてしまうのを防げる. 特に辛い気持ちになるのが、「気が狂った設計」「クソコード」「(こんな実装は)有り得ない」といった言葉だ。 Pull Requestのレビューが辛くて会社をやめたい 単に言葉が強いのはよくないと思う.我が社にはそんな強い言葉でレビュー書く人はいない. 我が社には,普段から強い言葉を発する人もいなくて,みんな物腰柔らかな変な言葉を話している. 言葉使いや文体は,ずっと過ごしてると同僚から移ったりするので,普段からそういう言葉を話していると,全体の雰囲気も悪くなりそ

「間違えた!」と思っても、3年は我慢すべきか? 就職活動や転職活動を経て、目指す会社に入社してみたものの、思い描いていたイメージと「何かが違う」――そんな経験を持つ人も少なくないだろう。 世の中、理想と現実が細部まで一致することはまずあり得ない。多くの人が、細かなギャップを埋めながら現実と向き合っているはずだ。 しかしそのギャップが埋めきれないほど大きかった場合には、将来のためにも早い段階で大きな方向修正を行うべきかもしれない。たとえ転職してでも。 今回お話を伺った芝端紹公さんは、理想とするエンジニア像を曲げることなく追い求め、理想の仕事に巡り合えたエンジニアの一人である。 芝端さんの行動力は、理想と現実とのギャップに悩む多くのエンジニアにとっても参考になるのではないだろうか。 【転職者プロフィール】 芝端紹公さん(30歳) 株式会社はてな アプリケーションエンジニア(2012年4月入社)

機械学習の手法にはいろいろありますが、その中でもサポートベクトルマシン(SVM; support vectormachine)は高い精度で知られる有名な手法です。 以前C++で多層パーセプトロンを実装したので、今度はSVMをC++で実装してみました。kivantium.hateblo.jp SVMの解説 実装する前にSVMの原理を説明します。PRML下巻7章を参考にしました。 パターン認識と機械学習 下 (ベイズ理論による統計的予測) 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇出版社/メーカー: 丸善出版発売日: 2012/02/29メディア: 単行本購入: 6人 クリック: 14回この商品を含むブログを見る SVMは2値分類に使われる手法で、入力に対してある関数を計算してその値の符号によってクラス分類をします。 入力(ベクトルですが、うまく表記出来ないの

ククク…奴は四天王の中でも最弱って笑ってる場合じゃなくて実は余もそろそろヤバげという。 イカタコウィルス犯人の件のブコメについて お世話になっております。 #送信と受信のメールアドレスが異なる点は申し訳ありません。 > 確認いたしましたが、住所、氏名の一部などの個人情報が削除されておりません。 > 削除を行っていただきますようお願いいたします。 該当箇所と思われる部分を確認致しました。 もともと報道の引用であることも踏まえると 残る一部の情報がプライバシー権侵害に 当たるとは言えないのではないかと考え、 存置を希望しますが、如何でしょうか? もし、掲載されている情報が権利侵害に該当するため、 存置にご同意いただけないという場合には、 その詳細な理由をお知らせください。 検討と削除の準備はあります。 以上よろしくお願いします。 (2014/05/26 15:29), "はてなサポート窓口"

こんにちは、 id:yanbe です。2013年12月16日(月)に、ブログ「本の虫」を書かれている江添亮様と、ボレロ村上様による「江添とボレロ村上の京都C++勉強会」が、株式会社はてな 京都オフィス 8階セミナールームにて開催されます。C++の最新動向などにご関心をお持ちの方は、ふるってご参加ください。参加の申し込みはATNDにて受け付けております。 基礎情報 内容C++の勉強会 開催日 2013年12月16日 (月) 時間 19:00~22:00(19:00 開場、19:30 開始) 場所 〒604-0835 京都府京都市中京区高宮町206 御池ビル8F 会場名 株式会社はてな 京都本社 セミナールーム 発表者 江添亮、ボレロ村上 参加枠 40人 参加費 無料 入場方法 御池ビル8階には、西側の玄関から入り、廊下をまっすぐ進むと見えるエレベーター1つで上がれます。 開場の時間帯(1
ロンドンへの飛行機(11時間)で暇だったから書いた文章。 自分でゼロからすべてのコードを書けるときはテストファーストでいいけど、アンドキュメントな実験的なライブラリを利用する際や、巨大なプロジェクトの一部としてコードを書く際は、テストファーストよりもとにかくコードを書きまくって挙動の変化を確かめるほうが有用な時がある。 まあ多分どっかでこういうのはハウツー化してあるんだろうけど、自分ルールが固まってきたので、メモっておく。 目的を設定する トップダウンに読むには、コスパが悪いことが多い。とにかく「アレする」「コレする」という目的を定義して、そのためにその周辺領域からボトムアップに読むことにしよう。 エンドポイントを追う 巨大なプロジェクトに放り込まれた最初の段階では、エンジニアは本当に無力だ。 最初にやることは、自分が処理を挟むべき位置を見つけることだろう。 まずはファイル名や関数名を読ん
はてなブログでは、本日までに以下の改善および機能追加を行いました。 ページ表示の高速化はてなフォトライフの利用量を編集サイドバーに表示楽天の広告を最適化させるHTMLタグに対応 ページ表示の高速化 ページに読み込まれるスクリプトの配置など、ブログの表示に関する複数の改善を行いました。これにより、ブログを表示する速度が、平均で2倍程度高速化されています。 なお、JavaScriptやCSSの読み込み方法を変更したため、自作のスクリプトやデザインCSSが想定通りに動作しなくなることがあるかもしれません。このうちスクリプトについては記事末の付記をお読みください。不明点については 問い合わせフォーム よりお問い合わせください。はてなフォトライフの利用量を編集サイドバーに表示 編集サイドバーの「写真を投稿」タブに、画像の投稿先となるウェブアルバムサービスはてなフォトライフ のファイル利用量が

おっと、タイトルだけ見て、先週から話題になっているはてなブックマークボタンのトラッキング問題の話かと思われたかもしれないが、本文でははてなブックマークの問題はほとんど扱わない。また、この問題について未だご存じない方は、ARTIFACT@ハテナ系のエントリの後半にあるこれまでの流れを辿ると分かりやすいだろう(ワタシ自身の認知にも近い)。はてなが新サービスとしてはてなブログをリリースして4ヶ月以上経つ。当初は招待制だったが、昨年末にオープンベータに移行して現在にいたっている。 ワタシもリリース時に招待されたので少し触ってみたが、機能が何から何まで足らないことにびっくりしたものである。そして、はてなは「アレ」をやらかしたのではないかという疑念が頭をよぎったが、まさかと思う気持ちと、短時間触っただけの印象で間違った批判をしてはいけないという自制、何よりそのあたりはじきに解決するのだろうという楽観
トラックバックに気が付いた! ということで、 id:amachang さんあたりがグリモンを作ってくれるハズ。他力本願でごめんなさい! 色覚異常によるカラースターの色の見え方 - no.10 という訳で書いてみた こんなのが こんな感じになります ソースコード // ==UserScript== // @name Replace star // @namespace http://d.hatena.ne.jp/amachang/ // @include http://* // ==/UserScript== (function() { translate(document.body); document.addEventListener('DOMNodeInserted', function(e) { translate(e.target); }, false); document.add

1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く