タグ

programmingに関するyamada55のブックマーク (149)

  • GoのためのGo

    Go言語はシンプルさを念頭にデザインされた言語です。仕様は単純明瞭さのために小さく収められていますが、そのため表現力に欠けているとか、コードが冗長になるという印象を持つ人も多いでしょう。有名なところでは、ジェネリクスや例外といった機能が(今のところ)存在しないことが問題にされることが多いようです。 一般に、ソフトウェアエンジニアリングというものは書かれる言語だけに依るものではありません。視点を拡げてGoを取りまくツール群を含めて見てみると、go fmt や goimports といったツールが広く使われていること、また go generate コマンドの存在などを見ても、Goという言語には、人間のプログラミングを機械によってさまざまな面から補助しようという態度があります。

  • "クソコード"は人格攻撃ではないのか|qsona

    これは仮説というか自分がこうだという話なのだが、自分のアイデンティティを侵されると怒りが湧く。たとえば、自分が非常に大事にしている価値観に対して、同僚から「君のその価値観は間違っている」と言われたり、あるいは、作品とか、経歴とか、家族とか、そういう自分自身と非常に密になっていて同一視されるようなものをけなされたら、腹が立つということだ。 プログラマーにとって、ソースコードというのは一つの作品だ。仮に経験が浅い開発者であっても、あるいは経験が浅いからこそ、1行1行に時間をかけて考えながら作りあげる。それに対してこれはクソコードだと言われたらどうだろうか。考えてみる。 よく、クソコードというのはコードがクソだと言っているのであって、お前がクソだと言ってるわけではないから切り離して考えるべきだという言説がある。僕はこれには微妙に賛同できない。その人が生み出したコードは、少なくともその人のいくぶ

    "クソコード"は人格攻撃ではないのか|qsona
  • try - Go の新しいエラーハンドリング (Go 1.14で導入予定)(でしたが,却下となりました) - Qiita

    Go 1.14 で try というシンプルなエラーハンドリング方法が導入予定です。 2019/07/17 追記 議論の結果、try は一旦却下となりました。詳しくは提案者 Robert Griesemer 氏のコメントを参照下さい。 error Go でのエラーハンドリングはややタイプ数が多い。

    try - Go の新しいエラーハンドリング (Go 1.14で導入予定)(でしたが,却下となりました) - Qiita
  • Ctrl-[ が Esc になる理由 - Humanity

    理由 SHIFT キーはキーコードを -0x20、CTRL キーはキーコードを -0x40 する機能 全文 vim-jp.slack.com の #random から。 heavenshell [10:08 AM] TouchBar MBP にしたら強制的に C-[ になるので、オススメです!ようやく矯正できた。 mattn [10:09 AM] 人間の方が最適化されている yoshitia [10:12 AM] Escが物理的にない状況用にデフォルトでCtrl-[ 用意してるのすごい mattn [10:14 AM] いや、用意した訳ではないです。 SHIFT キーはキーコードを -0x20、CTRL キーはキーコードを -0x40 する機能なのです。 なので `[` つまり 0x5b は 0x1b になる。 0x1b = ESC 同様に CTRL-H は H が 0x48 なので 0x

    Ctrl-[ が Esc になる理由 - Humanity
  • オブジェクト指向が0.05%も理解できない記事

    尽く書を信ずれば即ち書無きに如かず 《孟子『尽心下』より》 イントロダクション 「最も理想的なオブジェクト指向を実現しているプログラミング言語は何か?」と問われたとき、君は何と答えるだろうか? C++Java、C#。君がそうだと思っているのは表面だけで、たぶん何もわかっていないのだろう。無知であることを知っているのであれば、無知のまま過ごした方が幸せなときもある。 Simula、Smalltalk、Ruby。君は質をいくらか知っているようだから、引き返すなら今のうちだろう。深淵を覗けば、君もまた怪物にならざるを得ない。 JavaScriptPythonGo。君が真剣にそう答えるなら、私とは異なる真理に辿り着けたのだろう。君と私のどちらかが正しいのではない、どちらも常に正しく、どちらも常に間違っている。 Erlang、Elixir。君は既に答えを知っているようだから、この記事は全く以

    オブジェクト指向が0.05%も理解できない記事
  • Table of Contents · Game Programming Patterns

    Table of Contents Game Programming Patterns Acknowledgements Introduction Architecture, Performance, and Games Design Patterns Revisited Command Flyweight Observer Prototype Singleton State Sequencing Patterns Double Buffer Game Loop Update Method Behavioral Patterns Bytecode Subclass Sandbox Type Object Decoupling Patterns Component Event Queue Service Locator Optimization Patterns Data Locality

  • Portable Cloud Programming with Go Cloud - The Go Programming Language

    Eno Compton and Cassandra Salisbury 24 July 2018 Introduction Today, the Go team at Google is releasing a new open source project, Go Cloud, a library and tools for developing on the open cloud. With this project, we aim to make Go the language of choice for developers building portable cloud applications. This post explains why we started this project, the details of how Go Cloud works, and how t

    Portable Cloud Programming with Go Cloud - The Go Programming Language
  • 『みんなのデータ構造』発売および予約開始のお知らせ – 技術書出版と販売のラムダノート

    ご来店ありがとうございます。 日より、新刊『みんなのデータ構造』の発売を開始しました。紙書籍の発送は7月25日前後を予定しています。電子書籍は購入後すぐにお読みいただけます。 『みんなのデータ構造』は、Pat Morin氏による “Open Data Structures” を翻訳して書籍として出版するものです。Pat Morin氏による原文は、クリエイティブコモンズ継承ライセンス(CC BY)で公開されており、誰でも自由に教材として活用できるだけでなく、内容に手を入れて別のライセンスで再配布したり、販売したりできるようにされています。堀江氏、陣内氏、田中氏による翻訳と、ラムダノート株式会社による編集も、すべてCC BYで公開しており、同様に自由に利用していただくことが可能です。 書籍版『みんなのデータ構造』(紙書籍および電子書籍)につきましては、クリエイティブコモンズライセンスではなく

    『みんなのデータ構造』発売および予約開始のお知らせ – 技術書出版と販売のラムダノート
  • 「悪い方が良い」原則と僕の体験談|Rui Ueyama

    ソフトウェアの世界には「悪い方が良い」原則という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きの悪いデザインのほうが実は良いときもあるという話だ。この逆説的なデザイン原則を僕は身をもって体験したことがある。それについてちょっと書いてみようと思う。 僕はlldというリンカの現行バージョンのオリジナル作者だ。リンカというのはコンパイラと組み合わせて使うもので、実行ファイルやDLLを作るのに使用される。lldはプロダクトとしてはかなり成功していて、標準のシステムリンカとして採用しているOSがいくつかあったり、GoogleやFacebookなど皆が知っているような大規模サイトの中で広く使われていたりする。 現在のlldは2世代目で、第1世代のlldは僕がプロジェクトに参加する前から存在していたのだけど、数年前にそれを捨てて一から書き直すということになった。

    「悪い方が良い」原則と僕の体験談|Rui Ueyama
  • プログラムのネーミングに迷ったら GitHub でコード検索すると参考になる説 - Qiita

    TL;DR プログラムのネーミングで迷ったら GitHub でキーワードを検索して、ヒットした件数が参考になるのでは? 複数キーワードを検索して結果の一覧を表示する CLI 作りました https://github.com/kyoshidajp/ghkw ネーミング迷いますよね? みなさん、コードを書いていて変数やメソッド名のネーミングって迷いますね。 こんな時に自分たちはチームを横断して「こういう名前考えたんだけど、これってどうかな?」という確認を Slack 上で行っています。先日、この Slack チャンネルを見ていて考えました。 「GitHub で検索すれば世の中のコードでどのぐらい使われているかざっくり分かるので参考になるのでは?説」 GitHub で検索できるという条件付きではありますが、コードの規模からするとある程度期待できそうです。 GitHub で検索 例えば「除外条件」

    プログラムのネーミングに迷ったら GitHub でコード検索すると参考になる説 - Qiita
  • G-DEP - NVIDIA DGX | NVIDIAエリートパートナー

    G-DEPは、日で唯一「NVIDIA DGX-2」の販売資格条件 ​「Advanced Technology Program (ATP)」 を満たしている​NVIDIA認定セールスパートナーです。​

    G-DEP - NVIDIA DGX | NVIDIAエリートパートナー
  • オーバーフローが引き起こした面白いバグの話|Rui Ueyama

    一度聞いたら忘れられないような印象深いバグというものがある。僕は数値のオーバーフローと聞くと必ずこの2つのバグを思い出してしまう。どちらも面白いエピソードなのでちょっと紹介してみよう。 一つ目は、初代Civilizationにあったバグである。Civilizationは文明間で戦う戦略シミュレーションゲームで、チンギスハンとかエリザベス女王みたいなプレイヤーを選んで、世界制覇か宇宙開発競争での勝利を目指すというゲームだ。 初代Civilizationにあったバグは、非暴力主義のガンジーが突然核攻撃してくるというものだった。原因は文明が民主主義を採用すると攻撃性が2下がるというロジックだった。初代Civではガンジーの攻撃性は全プレイヤー中で最小の1なのだが、ゲームが進んでインド文明が民主主義を採用すると、攻撃性がマイナス2されてオーバーフローで255になり、ガンジーがゲーム中で突如、極度に攻

    オーバーフローが引き起こした面白いバグの話|Rui Ueyama
  • Visual Studioを、VSCodeのコード補完や文法チェックを実現するLanguage Server Protocol対応にする拡張機能が登場 - Publickey

    Visual StudioをLanguage Server Protocol対応にする拡張機能が発表された。Visual Studioがネイティブに対応していないプログラミング言語でも、構文ハイライトやコード補完などが利用可能になる。 マイクロソフトがオープンソースで開発しているエディタ「Visual Studio Code」(以下VSCode)には、さまざまなプログラミング言語に対応してリアルタイムに構文のハイライトや文法チェック、コード補完などを行う機能が備わっています。 これはVSCodeのエディタとは切り離され、別プロセスで動いているLanguage Serverが処理を行い、それをエディタに伝えることで実現しています。そしてエディタとLanguage ServerはJSONベースの「Language Server Protocol」で通信を行っています。 マイクロソフトはこのLa

    Visual Studioを、VSCodeのコード補完や文法チェックを実現するLanguage Server Protocol対応にする拡張機能が登場 - Publickey
  • メモリのビット反転エラーとセキュリティの話|Rui Ueyama

    ハードウェアのエラーでメモリの内容が化けてしまうことが稀にある。大抵のDRAMエラーはせいぜいプログラムがクラッシュする結果になるだけだが、データ破壊になることもありえるし、悪意のある使い方をすればセキュリティ破りに使うこともできてしまう。ここではメモリエラーとセキュリティの話をしようと思う。 メモリのエラー率は意外なほど高い。データセンターで大規模なマシン群を対象に実際に観測したところ、1年間に1回以上のエラーが発生したDIMMモジュールは全体の8%にのぼったそうだ。DIMM 1枚に数百億個のメモリセルが実装されているといっても、このエラー率はちょっとびっくりするくらい大きな数字ではないだろうか? サーバでは普通はエラー訂正付きのDIMMを使うので1ビットのエラーは問題にならないが、エラー訂正のないコンシューマ機器ではこれは実際的な問題になりえる。 メモリエラーを利用したセキュリティ破り

    メモリのビット反転エラーとセキュリティの話|Rui Ueyama
  • 高校生にWeb上でプログラミングを教え始めたエンジニアがこの8ヶ月間で得た気づき - Qiita

    画像: N高等学校課外授業(N予備校)での生放送授業のブラウザ上での見た目、コメントが書ける 目次 はじめに 教えることになったきっかけ Web企業にエンジニアとして就職できるようになる、というミッション 既存のWeb教材に感じた問題意識 「各自進められるゲームブック形式の教材」と「徹底的にフォローする生放送授業」 コンセプトをもとに構成されたコースと内容 ゼロからプログラミングができるようになった人が生まれた日 永劫、プログラミングは一部の天才たちのためのものか? プログラミング学習のモチベーションの課題と対応 まじめなオタクたちが社会をよくしようと頑張ること さいごに はじめに 自分はこの8ヶ月間、Web上で非対面のプログラミング教育、具体的にはHTML教材と生放送授業を中心としたプログラミング教育をN高等学校の生徒に行ってきました。 ここに書かれている内容は、これからプログラミング教

    高校生にWeb上でプログラミングを教え始めたエンジニアがこの8ヶ月間で得た気づき - Qiita
  • unshift, shift, pop, pushが混乱するので、絵で整理した - maeharinの日記

    配列の追加・取り出しに関する4つのメソッド(unshift, shift, pop, push)がいつも混乱するので絵で整理した。 絵にすれば覚えられそう!いちお練習のため、自分がよく使うRuby, PHP, JavaScriptでコードも書いた。 ・いずれの言語においても上記4つのメソッドは似たような名前で存在しており、用途も同じ。 ・いずれの言語のいずれのメソッドも破壊的メソッド。 ・言語、バージョンによってメソッドの返り値は異なる。 という具合だった。 Ruby ruby 1.9.2 # unshift a = [1, 2, 3] b = a.unshift 0 p a #[0, 1, 2, 3] p b #[0, 1, 2, 3] # shift a = [1, 2, 3] b = a.shift p a #[2, 3] p b #1 # pop a = [1, 2, 3] b =

    unshift, shift, pop, pushが混乱するので、絵で整理した - maeharinの日記
  • CEDEC2017ゼルダの伝説BotW講演でゲーム業界は5年進む

    最大のゲーム開発者向けカンファレンス「CEDEC 2017」が9月1日まで開催された。現在、その会場で講演された任天堂による『ゼルダの伝説 ブレス オブ ザ ワイルド』のセッション内容が大きな話題となっている。 今回は講演によってゲーム業界が受けた影響と講演から分かった任天堂のゲーム会社としての強みについて解説してみる。 講演内容まとめ 『ゼルダの伝説BotW』に関するセッションは以下の8つが実施。紹介記事で分かりやすいものをまとめておく。 『ゼルダの伝説 ブレス オブ ザ ワイルド』におけるフィールドレベルデザイン ~ハイラルの大地ができるまで~ [CEDEC 2017]「ゼルダの伝説BotW」の完璧なゲーム世界は,任天堂の開発スタイルが変わったからこそ生まれた https://t.co/CW1urj7yq1 pic.twitter.com/JLxo8557rv — 4Gamer

    CEDEC2017ゼルダの伝説BotW講演でゲーム業界は5年進む
  • 2to3を使ってコードをPython 3に移植する - Dive Into Python 3 日本語版

    This domain may be for sale!

  • 非推奨だった bool 型に対するインクリメント演算子を削除 - cpprefjp C++日本語リファレンス

    概要 C++17ではbool型に対する前置および後置のoperator ++を削除する。 bool型に対する前置および後置のoperator ++とはC++98の時点で非推奨になっていた機能である。 具体的にどのような働きをするのかというと、以下のように値をtrueに書き換える機能をもつ。 #include <iostream> int main() { bool b = false; const bool b1 = ++b; std::cout << std::boolalpha << b1 << std::endl; // => true const bool b2 = ++b; std::cout << std::boolalpha << b2 << std::endl; // => true }

  • 関数名によく使われる英単語(動詞)の意味とニュアンス | PHP Archive

    PHP に限らず、プログラミングで使われる多くの関数名は「動詞+目的語」という命名規則になっていることが多く、「insertPost()」であれば投稿を挿入するという意味が名前から読み取れます。 では投稿を削除する場合は delete でしょうか? それとも remove でしょうか? 関数は基的に英語を使うのが鉄則ですが、似たような意味を持つ単語などが多く厳密な意味の違いがわかりにくいことがあります。 そこで、プログラミングで関数名として一般的に使われている頻出語句をピックアップし、主な用途と細かい意味、ニュアンス、使い分けについて調べてみました。 追加・作成 set