タグ

ブックマーク / postd.cc (20)

  • Rust開発者のためのC++入門書:所有権と借用について | POSTD

    今日、ソーシャルサイト「reddit」を見ていたら、“ Rustの基礎を学んでからC++を始める場合 、何を勉強すればいいか”と問う投稿があり、私は自分のブログを復活させ、その中で質問への答えを書いたら面白いのではと考えました。 私にはRustを学んだ後にC++を扱う仕事に就いた経験があるため、Rustの経験を持つ人がC++に移行していく様子をまとめてみたいと思ったのです。 稿はC++の構文と特徴を既に知っていて、RustからC++の世界に移行する方法に興味を持っている読者を対象とします。 しかし、私は全てに精通しているわけではないので、稿では所有権(ownership)、借用(borrowing)、ライフタイム(lifetime)に焦点を当てて説明していきます。 所有権と移動 Rustの一番大きな特徴は所有権です。所有権は、プリミティブ型ではない値に対するデフォルトの動作として、コピ

    Rust開発者のためのC++入門書:所有権と借用について | POSTD
  • C言語、知ってるつもり? | POSTD

    「Cならわかるよ」というプログラマーは大勢います。確かにCの文法はよく知られているし、44年の歴史を誇るわけだし、あいまいな機能に悩まされることもありません。簡単ですよね! あ、「Cならわかるよ」と 言うだけなら 簡単ですよねっていう意味ですよ。学校で習った人もいるだろうしお仕事で使ったことがある人もいるでしょう。覚えることもそんなに多くないし、完璧だという人もいるかもしれません。いいでしょう。でも、Cって実は、そんなにシンプルではないのです。 嘘だと思うなら、今から挙げる問題を解いてみましょう。たった5問です。基的にはどれも同じで「戻り値は何ですか?」という問題ばかりです。四択方式で、どの問題も正解はひとつだけです。さあどうぞ。 第1問

    C言語、知ってるつもり? | POSTD
    iori_o
    iori_o 2016/11/30
    やった!全問正解!エキスパートCプログラミング(http://amzn.to/2gHazG4)読んでてよかった!(アフィリエイトです)
  • MITライセンスを1行1行読んでいく | POSTD

    全てのプログラマが理解すべき171語の文章 MITライセンス は、最も有名なオープンソースソフトウェアのライセンスです。この記事では、その内容を一行一行読んでいきます。 ライセンスを読む オープンソースソフトウェアを利用しているものの、これまでライセンス全文(原文:171語)を読む機会がなかった方は、大した量ではないので、今すぐ読んでください。あなたにとってライセンスが身近なものでないなら尚更です。理解できない箇所などがあれば、その部分は心に留めておき、明確にするようにしてください。これから背景や解説とともに、全文を分割して順番に紹介していきますが、大事なことは全容を頭に入れておくことです。 MITライセンス(MIT) Copyright (c) <年> <著作権保持者> ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)のコピーを入手する全ての人に対し、それらに関する無償のライ

    MITライセンスを1行1行読んでいく | POSTD
  • もしもディスプレイが壊れたら(ヒマラヤで) | POSTD

    もしラップトップのディスプレイが壊れたら、文句を言いつつもお金を出して修理してもらうのが普通でしょう。修理用のパーツが届くまでの間は、外付けディスプレイでしのぐのでしょう。面倒ではあるけれど、それで作業が止まってしまうわけではありません。でも、いちばん近い町までバスで2日かかるうえに、貴重品を安心して送れるサービスも整っていない場所にいるとしたらどうでしょう?私の置かれた状況がまさにそれでした。インド北部のラダック、ヒマラヤに囲まれたところでそんな目にあったのです。私がここに来たのは、日々の仕事から離れて執筆に専念するためでした。執筆にはコンピュータが欠かせません。でも、日々の生活はそれほどコンピュータに依存していなかったので、ハッカーらしい解決策をゆっくり考えてみました。 私のハックのポイントは、スマホを「モニター」として使ったことです。VNCやXのポートフォワーディングで映像出力を直接

    もしもディスプレイが壊れたら(ヒマラヤで) | POSTD
    iori_o
    iori_o 2016/11/25
    ヒマラヤに行くエンジニアに役に立つ記事だ
  • DRYと不当な抽象化によるコストについて | POSTD

    記事は、もう随分と長い間、私がToDoリストに記したままになっていたものです。ですが今日だけは、その考えを実行に移すエネルギーと時間があったようです。私は今、少し前に最初の記事を投稿した時と同じカフェにいます。たまたまなのか、それとも……。店員が私に出した飲み物に何か入れていたに違いありません。 ベストプラクティスにならえ、という古き良きアドバイスがありますよね。そうした情報は常に耳に入ってきます。私たちは、どういうわけかテクニカルな会話の中で DRY とか KISS といった頭字語を第一の原則としてきました。熱心に、まずそうした概念に従っています。たまたま、知識欲があるために、あるいは知識がなかったために、そうした概念から外れたことをする人がいようものなら、確実にその人に嵐のような批判を浴びせます。この原則にとらわれすぎていて、そこに背を向けることを拒んでいるのです。 念のためですが、

    DRYと不当な抽象化によるコストについて | POSTD
  • Railsアプリケーションを、Heroku上で1分間125,000リクエストに対応できるようにスケーリングする | POSTD

    Railsアプリケーションを、Heroku上で1分間125,000リクエストに対応できるようにスケーリングする 要約: Herokuでは、Railsのスケーリングが非常に簡単できますが、考慮すべき重要なポイントがあります。DynoとPostgresのさまざまな設定がHerokuでのパフォーマンスにどのように影響を与えるかについて調べました。 スケーリングのテストをする理由 ZeeMee のサーバは、今秋、来たる大学入学のシーズンにリクエストが殺到する見込みです。学生はZeeMeeを使って入学願書に動画や写真を付加することができるので、当社のWebサービスが受ける負荷は非常に深刻なものになっています。ピーク時(大学入学の出願期限)には、リクエストのロードが平均の150倍にもなります。 今年の秋を迎えるにあたり、APIのリクエストの爆発的増加にしっかり備えておこうと考え、Herokuでパフォー

    Railsアプリケーションを、Heroku上で1分間125,000リクエストに対応できるようにスケーリングする | POSTD
  • ロボットに感情を教える:絵文字と深層学習???? ???? ???? | POSTD

    最近、コンピュータサイエンスにおける様々な厳しい問題を解決するツールとして、ニューラルネットワークが選択肢の1つになってきています。Facebookでは写真に含まれる顔を識別するために、Googleでは写真に写る 全て を識別するために、それぞれニューラルネットワークが使われています。さらに、AppleではユーザがSiriに話しかけた内容を理解するために、IBMでは運用ビジネスのユニットの相乗効果を生み出すために、同じくニューラルネットワークが使われています。 どれもとても素晴らしいことです。しかし、現実の問題はどうでしょうか? ニューラルネットワークは、あなたが????という絵文字当に必要としているときに、それを見つけてくれますか? もちろん、答えはイエスです。Yes, they can.???? 記事では、実世界における私たちの絵文字の使い方を自動的に何億通りでも学ぶことができる

    ロボットに感情を教える:絵文字と深層学習???? ???? ???? | POSTD
  • Angular 2で作った最初のアプリの事後分析 : 使ってわかったAngular 2の長所と短所 | POSTD

    最近、Angular 2を使ってWebアプリ作成の手伝いをする機会がありました。このフレームワークの複雑さに戸惑いもありましたが、Angular 2は間違いなくすばらしいものです。この事後分析では私がAngular 2のフレームワークを使った時に感じたいい面と悪い面の両方を掘り下げていくことにします。 Angular 2 Angularは携帯電話やデスクトップのWebアプリケーションを作成するための開発プラットホーム。 https://angular.io/ Angular 2+リアクティブプログラミング=❤ 私はすでに、Angular 1アプリケーション ではRxJSをかなり使っていました。特に、サービス間のメッセージ・バスを行うアプリを作成する時です。Angular 2はObservableを非常によくサポートしているので、アプリ全体にリアクティブプログラミングを取り入れることができ、

    Angular 2で作った最初のアプリの事後分析 : 使ってわかったAngular 2の長所と短所 | POSTD
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
    iori_o
    iori_o 2016/02/18
    "C言語の第1のルールは、「もし避けられるならC言語を使うな」ということです。"/"C言語の開発では「80年代90年代に学んだ事柄」に留まろうという気持ちを捨てなくはなりません。"
  • HTTPステータスコードを適切に選ぶためのフローチャート : 難しく考えるのをやめよう | POSTD

    HTTPステータスコードを返すというのはとても単純なことです。ページがレンダリングできた?よし、それなら 200 を返しましょう。ページが存在しない?それなら 404 です。他のページにユーザをリダイレクトしたい? 302 、あるいは 301 かもしれません。 I like to imagine that HTTP status codes are like CB 10 codes. "Breaker breaker, this is White Chocolate Thunder. We've got a 200 OK here." — Aaron Patterson (@tenderlove) 2015, 10月 7 訳:HTTPのステータスコードのことは、市民ラジオの10コードみたいなものだと考えるのが好きです。「ブレーカー、ブレーカー、こちらホワイト・チョコレート・サンダー。200

    HTTPステータスコードを適切に選ぶためのフローチャート : 難しく考えるのをやめよう | POSTD
  • より良いビジネス意思決定のために、機械学習の閾値を可視化する | POSTD

    機械学習のモデルを構築した際、データサイエンティストとしての私たちの最終的なゴールは価値の創造でした。モデルが無かった(あっても今より原始的だった)頃よりも、何かしら良いものを生み出すためにモデルによる予測を活用したいのです。結果に焦点を当てるということはつまり、私たちのモデルのパフォーマンスの最終的な評価は、その有効性によって為されるということです。それは、モデルを利用したアプリケーションが生み出した価値の量として計測されます。この投稿では、ビジネスの価値を最大限にするモデル構築による意思決定を、選択したり理解したりする際の強力なツールとして、データの可視化を活用したいと思います。 分類アルゴリズムにおいて、最も一般的な利用パターンの1つが 閾値(しきいち) です。閾値以上のスコアを持つ全てのケースに対して、何らかの特別な処置を行うのです。以下に例を挙げます。 不正の防止: あなたはソー

    より良いビジネス意思決定のために、機械学習の閾値を可視化する | POSTD
  • R vs Python:データ解析を比較 | POSTD

    主観的な観点からPythonとRの比較した記事は山ほどあります。それらに私たちの意見を追加する形でこの記事を書きますが、今回はこの2つの言語をより客観的な目線で見ていきたいと思います。PythonとRを比較をしていき、同じ結果を引き出すためにはそれぞれどんなコードが必要なのかを提示していきます。こうすることで、推測ではなく、それぞれの言語の強みと弱みの両者をしっかりと理解できます。 Dataquest では、PythonとRの両方の言語のレッスンを行っていますが、データサイエンスのツールキットの中では両者ともそれぞれに適所があります。 この記事では、NBA選手の2013/2014年シーズンの活躍を分析したデータセットを解析していきます。ファイルは ここ からダウンロードしてください。解析はまずPythonとRのコードを示してから、その後に2つの異なるアプローチを解説し議論していきます。つま

    R vs Python:データ解析を比較 | POSTD
  • 固有ベクトル、主成分分析、共分散、エントロピー入門 | POSTD

    (2015/11/19、記事を修正いたしました。) 目次 線形変換 主成分分析(PCA) 共分散行列 基底変換 エントロピーと情報の取得 とにかくコードが欲しい方へ その他の参考資料 稿は固有ベクトルと行列との関係性について、平易な言葉で、数学にあまり詳しくなくても分かるように書いてみました。この発想に基づいて、PCA、共分散、情報エントロピーについても説明します。 固有ベクトルは英語で「eigenvector」ですが、この eigen はドイツ語で、「そのものだけが持つ」という意味です。例えばドイツ語の「mein eigenes Auto」は、「ほかならぬ私が持つ車」というニュアンスです。このようにeinenは、2つのものの間に存在する特別な関係性を意味します。独特、特徴的、その性質を端的に示すものということです。この車、このベクトルは、私だけのもので、他の誰のものでもありません。 線

    固有ベクトル、主成分分析、共分散、エントロピー入門 | POSTD
  • 大規模Reactアプリケーションを構築するためのベストプラクティス | POSTD

    Sift Scienceで製作にReactを使い始めてからほぼ1年になりました。その間、Backbone+Reactという フランケンシュタインのような 複合アプリケーションを、Reactコンポーネントからなる、かなり大きな1つの階層に育て上げました。この記事では、UI不和を最小限にしながら、コードベースをスケーリングするために役立った技法とベストプラクティスを紹介します。また、一般的なコンポーネントのデザインパターンについて、いくつか説明します。 この記事が皆さんの時間の節約と精神衛生の維持に役立ち、UIが複雑になってもReactコードベースの保全性を維持する(破綻するのではなく)ための新しいツールを提供できれば幸いです。 componentDidUpdateで、もっとできる React質は、DOMの更新というタスクを命令的なものから宣言的なものに変えるということです。他のタイプの命

    大規模Reactアプリケーションを構築するためのベストプラクティス | POSTD
  • ReactをjQueryの数行に要約する | POSTD

    Reactが素晴らしい理由は、UIをアプリケーションの状態の純粋関数にできるからだ」いうような話を聞いたことがあるでしょう。しかしそれだけではなく、不変性と仮装DOMを利用して動作するということも聞きますよね。その上、保存、読み込み、取り消し、それにタイムトラベル・デバッグと呼ばれるすごい機能まで自由に手に入れられる。でも知っていますか? Reactの核となるアイデアを利用し、その恩恵に預かるのにこれらのことは必要ありません。jQueryの数行にしてお見せします。 <span id="colored-counter">0</span> <input id="color"></input> <button id="inc"></button> <script> $('#color').on('keyup', function () { $('#colored-counter').css('

    ReactをjQueryの数行に要約する | POSTD
  • JavaScriptのデバッグ方法 – JSを嫌いにならないためのTips | POSTD

    この記事のオリジナルは voxxed に投稿されたものです。 JavaScript関連の問題を抱えるチームをサポートする仕事を通じて、いくつか共通の問題点があることに気づきました。もしあなたもJavaScriptに対するイライラを感じているのであれば、この記事は何らかの助けになるかもしれません。おことわり:私がお教えするヒントはすでにご存知のものもあるとは思いますが、うまくいけば、多少なりとも有用な情報があるかもしれません。特にエンタープライズアプリケーションやCMSソリューションを構築する際に有効なヒントです。チームの誰もが話したがらないCMSのコードについてお話しします。いずれも必要に応じて採用できるものです。 debuggerステートメント 大半のブラウザでサポートされているにもかかわらず、JavaScriptを書く際に最も活用しきれていない機能の1つです。debuggerステートメ

    JavaScriptのデバッグ方法 – JSを嫌いにならないためのTips | POSTD
    iori_o
    iori_o 2015/02/03
    “ベストプラクティスに従えば、コードのデバッグに時間をかけることも、手のこんだコツに頼ることもなくなるでしょう。あなたがチャック・ノリスでなければ、ですが。”
  • 私がコーディングで垂直方向にそろえるインデントをとる理由 | POSTD

    先週、 Hacker News上で興味深い議論が行われました 。テーマは Linux Kernelのコーディングスタイル についてです。 議論の中で私は、 コーディングで垂直方向にそろえるインデントをとるべきか というささやかな聖戦を仕掛けました。私は全面的に賛成です。理由を説明しましょう。 垂直方向にそろえるインデントをとるとは? 簡単な例を挙げてみます。 int robert_age = 32; int annalouise_age = 25; int bob_age = 250; int dorothy_age = 56; ちょっと見ただけで、「bob_age」がおかしいと分かるでしょう。また、目視であちこち探さなくても、全ての値が整数であることが簡単に確認できます。 この考え方は 一般的に 共有 されているわけではありません。ですので、なぜ 多くの 人たち がこれを有効なスタイルガ

    私がコーディングで垂直方向にそろえるインデントをとる理由 | POSTD
    iori_o
    iori_o 2015/01/20
    M-x align-regexp RET = RET
  • それでも独自のCSVを書くつもりですか? | POSTD

    一部誤訳の指摘があったため、修正しました!ご迷惑おかけして申し訳ございません! あなたは自分でCSVを書いてみたいですか? フィールドはコンマで区切り、行は改行で分けます。簡単ですよね。数行書けば勝手が分かるというものです。 でも、ちょっと待ってください。 フィールド内にコンマがある場合は? ダブルクォート(”)で、該当のフィールドを囲みましょう。簡単ですね。 では、ダブルクォートで囲めるフィールドに例外はあるのでしょうか? フィールド内にダブルクォートがある場合は? フィールド内の各ダブルクォートに対して、ダブルクォートを二重化して適用しましょう。そうすれば元のダブルクォートをエスケープすることができます。 なお、二重化したダブルクォートと空フィールドを囲んでいるダブルクォート( ...,"",... )を勘違いしないように気を付けてください。 フィールド内に改行がある場合は? その場合

    それでも独自のCSVを書くつもりですか? | POSTD
    iori_o
    iori_o 2014/11/13
    「データはCSV形式で渡します」と言われて渡される独自形式のCSV。それが泥沼の始まりだった.../前処理仕事をする時はCSVよりもTSVでデータくださいって伝えてる。
  • JPL(ジェット推進研究所)におけるLispの顛末 | POSTD

    この記事はジェット推進研究所(JPL)におけるLispの盛衰について、私の(しかもかなり偏った)個人的見地から書きました。JPLの所員としての立場で書いているのではなく、JPLの公的な立場を代弁するものでもないことをお断りしておきます(これについては読み進めていただければ分かります)。 1988-1991 ロボット工学の時代 私は1988年にJPLに入所し、自律移動ロボットの人工知能AI)グループに配属されました。当時は今と違って政府の財源から資金が潤沢に流入していました。「AIの冬」が始まりかけていましたが、まだJPLには到達していませんでした。研究所の技術動向は最先端から数年遅れになる傾向があるようです。 当時のJPLはマーズ・ローバー・サンプル・リターン(MRSR)と呼ばれるマーズ・ローバー・ミッションの初期計画段階にありました。あの時代、宇宙ミッションはあらゆる意味で巨大でした。

    JPL(ジェット推進研究所)におけるLispの顛末 | POSTD
  • Uncle Bobのリトル・モッカー | POSTD

    interface Authorizer { public Boolean authorize(String username, String password); } public class DummyAuthorizer implements Authorizer { public Boolean authorize(String username, String password) { return null; } } こっちは「ダミー」です。 ダミーはどういった場合に使うのですか? 実際に使用されるかどうかに関係なく、プログラムを進める時です。 例えば? テストですね。実際に使われることはありませんが、何かしらの引数を渡す必要があります。 例を見せていただけますか? はい。 public class System { public System(Authorizer author

    Uncle Bobのリトル・モッカー | POSTD
  • 1