タグ

programmingとProgrammingに関するardarimのブックマーク (984)

  • 高速なハッシュテーブルを設計する | POSTD

    (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) はじめに 稿では、高速で汎用的なハッシュテーブルを作るために行う、設計についての多くの意思決定事項を紹介します。最終的に、私の emilib::HashSet とC++11の std::unordered_set の間のベンチマークが出来上がりました。もし、ハッシュテーブルに興味があって、自分で設計したいなら(どのプログラミング言語かに関わらず)、稿がヒントになるかもしれません。 ハッシュテーブル は、素晴らしい発明です。 ならし計算量O(1) ( O(√N)時間 )で、挿入、削除、検索を行うことができます。ならし計算量とは、ハッシュテーブルの計算に平均でO(1)の計算量がかかることを意味しますが、時々、これよりも多くの時間がかかる場合があります。具体的には、ハッシュテーブルに空きがない場合で、挿入の

    高速なハッシュテーブルを設計する | POSTD
  • 画像処理をやるなら知らないと損!OpenCVがわかる資料まとめ

    OpenCV(オープンシーヴィ)は多機能なコンピュータビジョンライブラリで、動画や画像の処理に幅広く利用できるさまざまな機能が実装されています。 動画・画像処理を用いたアプリやサービスを開発するために、OpenCVを学びたいと思っている方は少なくないのではないでしょうか。 そこで今回は、OpenCVが学べる資料(記事・サイト・スライド)を10個ご紹介します。 OpenCVを基礎から解説している資料を中心に紹介していますので、OpenCVの学習にぜひご活用ください。 OpenCVがわかる記事・サイト 10分で学ぶOpenCV超入門 / MetaArt http://iphone.moo.jp/app/?p=1101 「画像を読み込み表示する」「画像のサイズを変更する」「画像をグレースケール化する」「画像を2値化する」、以上の4つのOpenCVを使ったプログラムについて学べる記事です。 各コー

    画像処理をやるなら知らないと損!OpenCVがわかる資料まとめ
  • 16進っぽいメモ - Richard蒸しパン工場

    昔々、某MMOで「バトルアックス」という武器が「バトルヂッハベ」と表記されていた時代がありました。また、プログラムを書く際に、適当な絶対パスなんかを全部大文字にしようとして、「デスクトップ」という文字が「デベハトップ」に化けてしまうという現象が起こることがあります。 何でこんなことになるかというと、文字列中のバイトを走査して行ったときに1バイトずつ見ていってしまうと、来は2バイト文字の一部であるところが変換されてしまうためです。具体的な例を挙げます。 83 6F 83 67 83 8B 83 41 83 62 83 4E 83 58 バトルアックス 00 6F 00 67 00 8B 00 41 00 62 00 4E 00 58 .o.g...A.b.N.X 00 6F 00 67 00 8B 00 61 00 62 00 6E 00 78 .o.g...a.b.n.x 83 6F 8

    16進っぽいメモ - Richard蒸しパン工場
    ardarim
    ardarim 2016/09/16
    10年越しの膝ポン
  • npm、一見無意味なパッケージを消したら1000件ものパッケージが依存するパッケージであったことが判明

    npm、一見無意味なパッケージを消したら1000件ものパッケージが依存するパッケージであったことが判明 npmが一見無意味に思えるfsというパッケージをSPAMとみなして削除したところ、1000件ほどのパッケージが依存するパッケージだったので、削除を取り消した。 npm, Inc. Status - "fs" unpublished and restored 今日、数分ほど、"fs"というパッケージが、ユーザーからSPAMであるという報告を受けて、レジストリから非公開にされた。これは現在復旧されている。これは私(@seldo)による人為的なミスである。私は非公開が安全であるかを確認する内部のガイドラインに従っていなかった。ビルドが阻害されたユーザーに謝罪する。 詳細:"fs"というパッケージは、無意味なパッケージである。これは単に"I am fs"をログに残して終了する。このパッケージが何

  • 「誰がこんなネーミングにしたんだ……。」プログラミングのネーミングルールを決める時に参考にしたい情報まとめ

    サイトのメンテナンスにおいてしばしばネックになるのは、どんなネーミング・構成で制御しているのか分からなくなってしまうことです。しっかりと基準に則った、誰がいつ見てもわかりやすいネーミングでコーディングしていくことは、非常に重要なことです。 今回は、プログラマーがネーミングを考える際に参考にしたいサイトを選んでご紹介いたします。 1. codic - プログラマーのためのネーミング辞書 https://codic.jp/ 様々なサイトに紹介され、「ネーミング」で検索しても上位に表示される素晴らしいツールです。例えば、Webサイトの背景に動画を設置する際に、class名をどうしようか悩んだとします。そこでcodicに「背景動画」と入力すれば「background_videos」と提案してくれます。提案されたネーミング以外にも、その他の候補も出てきます。 考える労力を省くことができるという点で優

    「誰がこんなネーミングにしたんだ……。」プログラミングのネーミングルールを決める時に参考にしたい情報まとめ
  • gitにおけるコミットログ/メッセージ例文集100

    私はコミットログの書き方に悩む英語の苦手な人間である。実際、似たような人は世の中に結構いるようで、頻出単語を集計したりまとめたものは既にあって役に立つのだけれど、これらはあくまで単語の話であり、具体的な文を構成する過程でやっぱり困る部分がかなりあった。 要するに、どういう時にどういう文が使われているのか、ということを示した例文集が欲しいのである。ググると他にも「例文集があればいいのに」みたいな声はあるくせして、しかし誰も作ろうとしない。何なんだお前ら。それじゃ私が楽できないじゃないか。 仕方なく自分でまとめたので、増田に垂れ流しておく。 はじめにここで挙げているコミットログは全て実際のコミットログからの転載である。当然ながら各コミットログの著作権はそれぞれの書き手にある。いずれも各英文でググれば出てくるし、フェアユースの範囲なら許してくれるだろうと考え名前とプロジェクト名は割愛したが、ここ

    gitにおけるコミットログ/メッセージ例文集100
    ardarim
    ardarim 2016/07/26
    有能な増田だ…
  • エラーメッセージは 2W1H がいいんじゃないか

    良くあるダメなエラーメッセージ エラーが起きたときは、以下のようにエラーメッセージをどこかしらに出力すると思います。 $c->log->error('something wrong!'); ただ、このエラーメッセージって、実際に発生したときには意味がわからないことが多いのです。 $c->log->error('error!'); 気でこういう「error!」とだけ吐くメッセージだと、エラーが起きたことしか伝わってきません。程度の差はあれ意味のわからないエラーメッセージはこの世にあふれているかと思います。 機械的なエラー情報 そういうわけで、たいていは Exception クラスや Logger クラスで多くの補助が受けられるようになっていると思います。 発生時刻 発生場所 stack trace 変数の状態 ただ、このような機械的な情報だけだと、結局、運用上は対応が難しい場面ってのが多か

    エラーメッセージは 2W1H がいいんじゃないか
    ardarim
    ardarim 2016/07/20
    どんなに丁寧でわかりやすいメッセージを出しても、「何かよく分からないメッセージが出たからとりあえずOKを連打した」とか「何かエラー出たからリセットした」とかいう層はどうにもならない
  • ソースコードって実際のところどういうふうに書いていますか?|Rui Ueyama

    私はプログラミングは結構自信があるんですが、他の人の作業をつぶさに観察したことがあるわけでもないので、自分で当たり前だと思っているコーディングの方法が他の人にとってはそうではないこともあると思ってます。上手い人がどういうふうにしてプログラムを書いているのか知りたいんですよね。 逆に私はどういうふうに書いているかちょっとまとめてみました。自分はこうしている、というのがあったらぜひ教えてください。 まず私の場合、ゼロからコードを書くよりも現在のプロジェクトのためのコードを書くことのほうが多いので、コードを書くというのは既存のコードに変更を加えることがほとんどです。既存のコードに手を加えるときは、新機能追加か、リファクタリング(動作は変えずにコードをきれいにすること)のどちらかになるわけですが、まず前者をどうしているかどうかをできるだけ説明してみます。 まず必要なのは考えることです。よく知ってい

    ソースコードって実際のところどういうふうに書いていますか?|Rui Ueyama
  • 20万人月の作業を1人でやる話 〜1万7千年生きたSE〜 - 特別天然記念物

    昔々、具体的には約1万7千年前の旧石器時代、大学の情報工学科を卒業して、新卒22歳でSIerに就職した男(以下SE)がいました。 SEはある日、上司に言われました。 「2016年くらいに、銀行で大規模な基幹システムが必要になるらしいから、今から君一人で作り始めて。工数は20万人月ね。」 そういうと、上司はシステム企画構想やそれに伴う提案書、ノートPCを1つSEに渡して、自分は狩りに出かけました。 途方にくれるSE氏、ここから彼の約1万7千年(1万6666年)にも及ぶ、20万人月のシステム開発が始まるのでした。 約1万7千年前 |- 要件定義書を作成着手。 | 周りの人達は狩りをしながら生きている。 | 約1万6千年前 |- 要件定義書の作成が完了する。 | 基設計に着手する。 | 土器を作り始める人が現れる | 徐々に日列島が大陸から離れ列島になっていく。 | 約1万4100年前 |-

    20万人月の作業を1人でやる話 〜1万7千年生きたSE〜 - 特別天然記念物
  • senseicode.club

    Click here to enter

    senseicode.club
  • プログラマーの三大美徳 | メルカリエンジニアリング

    みなさんはプログラマーの三大美徳ってご存知ですか? プログラミング言語Perlの作者である Larry Wall が↓で述べたのが最初とされています。 http://www.perl.com/pub/1998/08/show/onion.html 三大美徳として 怠惰(laziness) 短気(impatience) 傲慢(hubris) があげられています。 今回はそのうち怠惰(laziness)についてお話します。 怠惰(laziness) 怠惰といえば怠け者。怠け者といえば怠け者メガネ。怠け者メガネを使えば誰でも簡単に美徳を手にいれることができます。 この怠け者メガネを使うと視線は前方に向けたまま下方を見ることができます。 来は寝転がってテレビを見るために開発されたようです。 この怠け者メガネを使ったプログラム開発について説明します。 レベル0 怠け者メガネを装着せずに作業します。

    プログラマーの三大美徳 | メルカリエンジニアリング
    ardarim
    ardarim 2016/06/30
    やだ…このメガネ欲しい…
  • 偉大なプログラマーから学ぶ!プログラミングを基礎から学べる良書9冊とは!

    偉大なプログラマーから学ぶ!プログラミングの考え方を学べる良書9冊とは! プログラミングの考え方を学べる良書まとめ。プログラミングをするには、ネットワークやアルゴリズムといった知識が重要です。偉大なプログラマーが自分の経験や知識を書物として残しています。優秀なプログラマーを目指す人は必見でしょう。 テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査 稿は、CodingDojoのブログ記事を、CodingDojo Blogより了解を得て日語翻

    偉大なプログラマーから学ぶ!プログラミングを基礎から学べる良書9冊とは!
  • 人工知能アプリケーションの開発を簡単にはじめる8つの方法 - 648 blog

    従来は人工知能の開発というと、高度なスキルがないと手が届かないイメージがあった。 しかし現在では、多少のプログラミングの知識があれば、人工知能を使ったアプリケーションやシステムを開発できるようになった。 そこで今回は、手軽にはじめられる人工知能を使ったアプリケーションの開発方法をまとめてみた。 「言語処理AI」「音声処理AI」「画像処理AI」など様々な種類の技術を、入門者向けに広くピックアップした。興味のある分野について、それぞれ掘り下げてみることをおすすめする。 ※2016.07.23「Amazon ML」を追記 目次 目次 関連記事 開発方法1.ユーザーローカル社の「全自動会話API」 タイプ 難易度 特徴 開発方法2.Locl Interactive Incの「Meya」 タイプ 難易度 特徴 開発方法3.ユーザーローカル社の「形態素解析API」 タイプ 難易度 特徴 開発方法4.P

    人工知能アプリケーションの開発を簡単にはじめる8つの方法 - 648 blog
  • 手を動かせるプログラマの市場価値が高まる理由 〜 この10年間で起きた4つの環境変化 | Social Change!

    プログラミングができるITエンジニア人材の市場価値は、以前と比べて非常に高まってきているように感じる。そこで求められている人材とは、自ら手を動かすことで問題解決をするナレッジワーカーとしての「プログラマ」である。 決して、仕様書通りにコーディングだけする職種のことではない。それは以前に書いた。ソフトウェアエンジニアの目指す道 〜 ナレッジワーカーとしてのプログラマ 今回の記事では、この10年間で起きた市場や環境の変化から、手を動かせるプログラマの市場価値が高まってきた背景について、そして、これから求められるITエンジニアの姿について考えてみた。 12年前の転職市場で求められていたスキル 私が30歳を過ぎた頃、今から12年前(2004年頃)の話になるが、その当時に転職しようと少し調べたことがある。自分の年齢と経験をもとに探した応募要項で求められるスキルは、マネジメントであり大規模プロジェクト

    手を動かせるプログラマの市場価値が高まる理由 〜 この10年間で起きた4つの環境変化 | Social Change!
  • 自動化を活用して6年間ほぼ仕事をしなかったエンジニア、プログラミングを忘れる | スラド IT

    米サンフランシスコ・ベイエリアのある有名企業で働いていた男性が、「自動化を活用して6年間まったく仕事をせずに給料を貰っていた」そうだ(PayScale、Interesting Engineering、Slashdot)。 Redditへの投稿(現在は削除済み)によると、この男性はソフトウェア品質保証テストの仕事をしていたそうで、入社後8か月は仕事に必要な作業をすべて自動化するプログラムを作ることに専念。プログラムが完成したあと6年間はまったく仕事をせずに年間95,000ドルの給料を貰うことに成功したという。週40時間の勤務時間中はオフィスでパソコンの前に座り、ゲームをプレイしたりネットを見て時間を潰していたそうだ。 社内に友人もおらず、仕事の内容的にもソフトウェアの開発者と時折合う程度だったのでバレずにすんでいた模様。しかし先日これがついに会社にバレてしまい、解雇されることになってしまった

    ardarim
    ardarim 2016/06/17
    歌を忘れたカナリヤ的な
  • 仕事を全自動化して6年間も働かず年収1000万円を得ていたプログラマーが最終的にクビに

    By Nicola Albertini プログラマーは自分の仕事を減らすために便利なツールやソフトを作成することができることから、怠け者で愚かな人間ほど優秀と言われることがあるほどです。自作ツールを活用すれば単調で反復的な仕事の生産性を上げられるわけですが、なんと全ての仕事を全自動化して6年間にわたって給与を得ていたプログラマーが、最終的にクビになってしまったというredditの投稿をInteresting Engineeringが取り上げています。 Programmer Automates His Job For 6 Years, Finally Gets Fired, Forgets How To Code| Interesting Engineering http://interestingengineering.com/programmer-automates-job-6-year

    仕事を全自動化して6年間も働かず年収1000万円を得ていたプログラマーが最終的にクビに
  • 論文紹介: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 - みずぴー日記

    ICSE 2016勉強会に参加するために論文リストを確認していたら、40年間のC言語のプラクティスの変遷を追った論文がおもしろかったので紹介する。 対象の論文 論文: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 論文中で使われれたデータ: https://github.com/dspinellis/unix-history-repo 要約 過去40年間のUnixのソースコードを分析し、コーディングスタイルの変化を調査した。その結果、以下のことが分かった。 新しい言語機能は価値のあるものならば採用される レジスタ割り当てをコンパイラに任せるようになる スペースをどこにいれるかなどのコードの書き方が統一されていく 分析対象 1972年以降にリリースされた計66個

    論文紹介: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 - みずぴー日記
    ardarim
    ardarim 2016/06/08
    面白い。過去の検証はできたので、この結果から何か有用な提案は出来ないものか。あと複数の係数の組み合わせで相関を示すものがないかとかも面白い結果が出そう。
  • Javaと偽Javaの話。 - なるようになるかも

    qiita.com これの話。ブコメに書こうとしたら4000字は入らなかった。 Microsoft Java VM かつての WIndows には MS 製の Java VM が搭載されていました。 古代の Java は「Write once, run anywhere」を掲げていた通り、クライアントサイドで Java アプレットとして利用されるのが主流でした(サーバーサイドで動くようになって、真価を発揮した感じがあります)。 しかし Java VM の仕様は、パフォーマンスについての記述は曖昧になっており、OS ごとの実装の違いによって、実行速度に顕著な差がありました。 Windows の Sun 純正の Java VM は性能が悪かったため、MS は独自の Java VM を開発し、Internet Explorer にバンドルしました。調子に乗った MS は Windows GUI

    Javaと偽Javaの話。 - なるようになるかも
  • Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    Linuxカーネルのコードを読んでて、なるほど〜と思うことはよくあるけど、その中でも特に今までの考え方をぶち壊してくれたのはなんだっけと思ったところ、やっぱりリスト構造かなと言うところ。 c言語でリスト構造を作る場合、一般的な教科書方式だと↓のようにデータとnextポインタは密結合になってると思います。これの場合、struct foobarのポインタをnext要素に使っているので、他の構造体(例えば、struct hogehoge)で同じことをしようとすると、その構造体ではstruct hogehoge *nextというメンバ変数を持つ必要があります。 ヘッド要素はstruct foobarです。 struct foobar { int n; char s[64]; struct foobar *next; }; struct foobar head; Linuxカーネルの場合、データとリ

    Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • 海外エンジニアが話題にしていて「なるほど」と思ったプログラミングに関する考え方3つ - ジンジャー研究室

    プログラミングに関する格言みたいなのは昔から結構あって、例えばYAGNIみたいに日でも十分浸透してるのは多いんだけど、やっぱり新しい概念はどんどん生まれていくので追いかけていると面白い。 というわけで、最近知った中でもっと日でも言及されても良いと思ったやつを3つ紹介。 Simple Made Easy Rich Hickey(Clojure言語の作者)による講演(2011年)のタイトル。全文はここで読める。英語しんどくてPOSTDに投げたんだけど音沙汰がない。まだ全部見てないから和訳欲しい。 内容としては、みんな安易に「簡単」なものを選びがちだけど「シンプル」なものの方が価値あるぜ、というもの。曰く、「シンプル」は絶対的・客観的な指標だけど「簡単」は相対的・主観的なもの。例えば英語の話者にとってドイツ語は難しいが、それは自分にとって「遠い」存在であるだけで悪いものじゃない。 「慣れてい

    海外エンジニアが話題にしていて「なるほど」と思ったプログラミングに関する考え方3つ - ジンジャー研究室
    ardarim
    ardarim 2016/06/03
    だがしかし洗練されたコードはシンプルだけど一見すると何やってるのか分かりにくい黒魔術だったりするんだよな…