タグ

関連タグで絞り込む (538)

タグの絞り込みを解除

programmingに関するa2ikmのブックマーク (1,217)

  • ゲームAI -基礎編- 『知識表現と影響マップ』

    みなさん、こんにちは! 突然ですが…皆さんには、ひいきにしている ゲームのキャラクターはいらっしゃいますでしょうか。 手ごわいボス敵や頼れるパートナー、愛嬌のある動きをするモンスター達は 一体どのような仕組みで動いているのでしょう? 今回の記事ではそんなゲームの中のキャラクター達を 魅力的に動かす仕組み、AIについて御紹介したいと思います。 改めまして記事を担当させて頂きます、Cygamesエンジニアの佐藤です。 これまでコンシューマ機でのゲームAI開発に携わり、 ゲームならではのキャラクター表現の楽しさを追いかけてきました。 このブログを通じて、皆さんのゲームのキャラクターを より表情豊かに魅力的なものにする方法について、皆さんと一緒に考えていければ幸いです。 今回はゲームAIをデザインするにあたって重要となる、 「知識表現を定義する」というステップと、 知識表現の一つである影響マッ

    ゲームAI -基礎編- 『知識表現と影響マップ』
  • Goのclosureへのパラメータの渡し方 - Qiita

    Effective Go#channelsに載ってるclosureへのパラメータの渡し方2パターンのperformanceを比較した。 きっかけ Go研vol.16で、ほぼ同じだけどclosureへのパラメータの渡し方だけ違うコードがあった。 2つの書き方でperformanceに差があるのか調べてみよう。

    Goのclosureへのパラメータの渡し方 - Qiita
    a2ikm
    a2ikm 2018/04/25
    クロージャにループで引数を渡しているとあと勝ちで上書きされるというやつ、ありがち。
  • 数式を綺麗にプログラミングするコツ #spro2013

    [DL輪読会]Learning Transferable Visual Models From Natural Language SupervisionDeep Learning JP

    数式を綺麗にプログラミングするコツ #spro2013
  • OSレイヤでWebサーバが起動時に実行するシステムコールを監視し起動完了直前のプロセスをイメージ化する - 人間とウェブの未来

    今回は、Webサーバの実装に依存することなく、OSレイヤでWebサーバソフトウェアが起動時に実行するであろうシステムコールを監視して、そのタイミングでプロセスをイメージ化する方法(PoC)について紹介します。 その前に、まずは前提の一致ということで、僕は以前から、Webサーバプロセスの性質について、プロアクティブ性とリアクティブ性という分類について述べてきました。 プロアクティブ性とリアクティブ性について簡単にまとめると、以下のようになります。 Webサーバ機能のプロアクティブ性とリアクティブ性 突発的なアクセス集中のような変化に耐えうるシステムを構築するためには,負荷の状態に基いて適切なインスタンスの数を決定し,必要以上にコンピュータリソースを使用しないように設計することも重要である. 単一のサーバに高集積にホストが収容可能であり,ホスト単位でのリソース管理を適切に行いながら,セキュリテ

    OSレイヤでWebサーバが起動時に実行するシステムコールを監視し起動完了直前のプロセスをイメージ化する - 人間とウェブの未来
    a2ikm
    a2ikm 2018/04/24
    すごい
  • BASHで__FILE__や__DIR__みたいなもの | デバッグライフ

    シェルスクリプト(BASH限定ですが)、他の言語でもよく見られる__FILE__や__DIR__みたいなことをするにはどのようにすれば良いか、と考えてみた結果以下のようになった。小生のシェルスクリプトスキルが高くないので何ともだが上手く動いているようだ。もっと良いやり方があるかもしれない。クロスシェル対応できたらと思ったが、他のシェルスクリプトのスキルがほぼないので今後の課題とする。。 set -ue __FILE__() { resolve_link "${BASH_SOURCE[1]}" } __DIR__() { dirname "$(resolve_link "${BASH_SOURCE[1]}")" # 間違い 9/30 修正 } resolve_link() { local filepath="$1" local filename ( while [ "$filepath" !

    BASHで__FILE__や__DIR__みたいなもの | デバッグライフ
  • Go to the world which has no 'goto'. - 偏見プログラマの語り!

    Twitter でこんなのを見かけた。 僕の知り合いはコーディング規約で goto が禁止されてたので1回しか回らない for と breakgoto 代わりにしてたな。— mattn (@mattn_jp) 2018年2月28日 --- 以下フィクションのため実在の人物や団体などとは関係ありません --- kura「あのー、質問いいですか?何か、こういうコードがあっちこっちにあるんですけど。」 // 0.cpp int foo(int a1, int a2) { int result = 0; do { if(bar1(a1)) { break; } if(bar2(a2)) { break; } result = 1; } while(0); return result; } 先輩「うん、それが何か?」 kura「なんで do ~ while で囲って途中で break してるの

    Go to the world which has no 'goto'. - 偏見プログラマの語り!
  • 同じメソッドの上書きを狙ってaliasとprependを併用すると無限ループに陥る可能性がある - r7kamura - Medium

    タイトルの通りなので、Rails 5 への移行時には特に気を付けましょう。 変更は独立させて小さく適用していきたい自分はフリーランスとして働いており、Rails のバージョンアップや設計改善の仕事を探してよく請けているのですが、その中でも最近は Rails 4 から 5 へのバージョンアップの仕事を担当する機会が多くあります。 Rails のバージョンアップ時の作戦として、まずはアプリケーション側のコードを現在のバージョンでも次の移行先のバージョンでも動くような実装に変更し、問題がないことを確認し、その上で次のバージョンに移行するという作戦を取ることがよくあります。実際には前者の変更を更に細かく分け、少しずつ番環境に適用していくことが多いです。1つ1つの変更を小さく分割することで、確認を行いやすくし、問題発生時のリスクを最小限に抑えるためです。 alias_method_chain は非

    a2ikm
    a2ikm 2018/04/08
    面白い
  • プログラミングにおける不安と学びのプロセス - 人間とウェブの未来

    僕の場合、実現したいことをコードで書けない時には、ひたすら似たコードを読んで理解して写して…を繰り返す。そのうちに手元に大量の自分のサンプルが溜まっていく。その繰り返しがパターンの細分化を促し、書けるコードの幅を広げていく。書けるコードを気持ちよく書き続けてるだけでは新しいコードは書けないからだ....と、向き合えるようになるには時間がかかった。 書き慣れたコードの延長で書いていると、自分でコードを書けている実感があって、リファレンスなど何も見ずに自分の力でプログラミングできている感があるのだが、ある時これはただ「慣れ」の感覚を高めているように思えた。素早く書けること自体は、それはそれで一種のスキルで素晴らしいのだけど、実現したいことをコードで書けるようになる、という観点で振り返ったときに、どうしても成長を感じなかったのだ。それ以来、まずいと思い、実現したいことを思い描き、それを実現するた

    プログラミングにおける不安と学びのプロセス - 人間とウェブの未来
  • DRY原則 | プログラマが知るべき97のこと

    DRY原則著者: Steve Smith DRY(Don’t Repeat Your Self:繰り返しを避けること)原則は、プログラミングに関して守るべきとされている原則の中でも特に重要なものと言っていいでしょう。これは、Andy HuntとDave Thomasが、著書「達人プログラマ」の中で提唱した原則です。よく知られたソフトウェア開発のベストプラクティスやデザインパターンの中にも、基的にな考え方がこの原則と同じものがたくさんあります。開発者は、アプリケーションの中に何らかの「重複」があれば、また、重複が起きそうであれば、それを察知する必要があります。そして、適切なプラクティスや抽象化によってそれを排除する必要があるのです。そのための方法を学べば、よりきれいなコードを書けるようになるはずです。 重複は無駄であるアプリケーションを構成するコードはすべて、保守を必要とします。どのコード

    DRY原則 | プログラマが知るべき97のこと
    a2ikm
    a2ikm 2018/04/06
    “すべての知識はシステム内において、単一、かつ明確な、そして信頼できる表現になっていなければならない”ロジックではなく知識
  • 「悪い方が良い」原則と僕の体験談|Rui Ueyama

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

    「悪い方が良い」原則と僕の体験談|Rui Ueyama
  • デザインの「悪い方がよい」原則 The Rise of "Worse is Better"

    デザインの「悪い方がよい」原則 The Rise of "Worse is Better" rpg@lucid.com 日語訳: daiti-m@is.aist-nara.ac.jp 私や Common Lisp と CLOS のデザイナーのほとんどは、MIT/Stanford 方式の設計に親しんでいる。 この方式の核心は、「正しい」やり方をせよ、という ことにつきる。デザイナーにとっては、以下の点をすべて正しく満たすことが 重要である。 簡潔性 デザインは実装と使用法の両面において単純でなければならない。 このとき、使用法が単純な方が、実装が単純なことより重要である。 正当性 デザインはすべての点において正しいものでなければならない。 誤りは許されない。 一貫性 デザインは一貫性を欠いたものであってはならない。一貫性を保つ ためには完全性は少しだけ犠牲にしてもよい。一貫性は 正当性と同

    a2ikm
    a2ikm 2018/04/04
    https://note.mu/ruiu/n/n9948f0cc3ed3 に事例が出ててとても参考になる。
  • プログラミングでよく使う英単語のまとめ【随時更新】

    プログラミングでよく使う英単語のまとめ【随時更新】 随時追加、整理していきます。 名前をつけるときには、名詞、動詞の違い、複数形、過去形などに注意しましょう。 オブジェクト指向では、クラス名は名詞、メソッドは動詞とします。 使ってはいけない言葉 get / set アクセサ (getter / setter) やプロパティによく使われている。 それ以外に使うと混乱を招くのでよくない。 get は軽量な処理と考えるので、中に重い処理は書いてはいけない。 単純な取得/設定以外で使いたくなったら他の言葉を考える。 load, save, commit, store, enable, disable, fetch, register, configure, add, etc... check 意味が広すぎて何をしているかわからない。 できるだけ別の言葉を使う。 具体的に何をしているかに分解して考え

    プログラミングでよく使う英単語のまとめ【随時更新】
  • Joel on Software - 射撃しつつ前進

    Joel Spolsky ジョエル・スポルスキ 翻訳: Yasushi Aoki 青木靖 2002/1/6 ときどき何もできないことがある。 確かにオフィスにやってきて、だらだらとし、emailを10秒ごとにチェックし、Webをながめ、アメックスの請求書を支払うというような頭を使わない作業をしたりもする。しかしコードを書くフローの状態に戻ろうとしても、それができない。 このような非生産的な期間は通常1日か2日続く。しかし私の開発者としてのキャリアには何週間もの間何もできずにいたということが何度かあった。言うならば、私はフロー状態になかった。私はゾーンの中にいなかったのだ。私はどこにもいなかった。 誰でも気分のむらはある。ある人々にはそれは穏やかなものだが、他の人々には、それはもっとはっきりしていて、ときには機能不全でさえある。そして非生産的な期間は塞いだ気分と何か関係しているようだ。 それ

  • 年間1000円、エフエム和歌山のAIアナウンサー「ナナコ」の裏側

    AWSのテキスト読み上げサービスを使ったラジオ放送で、一躍有名になったエフエム和歌山。システムを作った山口さんが、AWSのユーザーイベント「JAWS DAYS 2018」で、AIアナウンサーの裏側を語った。 「年間1000円で働いてくれるAIアナウンサー」。エフエム和歌山のコミュニティーFM「Banana FM」が2017年7月に始めたラジオ放送は、大きな反響を呼んだ。米Amazon Web Services(AWS)のテキスト読み上げサービス「Amazon Polly」を使い、ニュースや天気予報を自動で読み上げるというもので、年間でのコストは1000円程度とも言われている。 あらかじめ新聞社などからニュース原稿を受け取り、エフエム和歌山が開発したプログラムを使い、合成音声で読み上げやすいようにルビや句読点の位置などを自動修正。原稿をエフエム和歌山のサーバに保存しておき、放送直前にAmaz

    年間1000円、エフエム和歌山のAIアナウンサー「ナナコ」の裏側
  • Rubyで簡潔にeachなどの機能を持つクラスを実装する方法

    例えば、フィボナッチ数列(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946 ..)を作るようなクラスを作りたいとして、下のようなコードを書いたとします。 class Fibonacci def initialize(n) @n = n @f1 = 1 @f0 = 0 end def to_a (0..(@n-1)).map {|t| fib t } end def fib t case t when 0..1 t else now = @f1 + @f0 @f0 = @f1 @f1 = now end end private :fib end このとき、このコードは下のように実行することができるかと思われます。 Fibonacci.new(10).t

    Rubyで簡潔にeachなどの機能を持つクラスを実装する方法
    a2ikm
    a2ikm 2018/03/18
    eachの実装難しい
  • Essential Go

    Essential Go is a free book about Go programming language. It's part of Essential Programming Books. It's written to provide clear and concise explanation of topics for both beginner and advanced programmers. Most examples are linked to online playground that allows you to change the code and re-run it. You can also quickly navigate to desired content using table of content on the left and search

    Essential Go
  • プログラミング言語Streemをハックしよう!Matzゼミの全貌をレポート | PSYENCE:MEDIA

    プログラミング言語Streemをハックしよう!Matzゼミの全貌をレポート 湊川あい 2018.03.05 367 701556280 プログラミング言語Rubyの生みの親である“Matz”こと まつもとゆきひろさん。2016年より株式会社リクルートマーケティングパートナーズ(以下RMP)の技術フェロー・技術顧問として尽力いただいております。 2018年2月14日には、スペシャル企画第3弾として、RMP社内で「Matzゼミ」が開講! 前半:プログラミング言語StreemについてMatzさんの講演 Streemはどのようにして出来たのか?今後の展開は? 後半:ワークショップ Matzが作っているプログラミング言語 Streemをハックしよう MatzさんによるStreemの講演は全世界初公開の内容です。この記事であなたも「Matzゼミ」を体験してみましょう! (取材・文章: 湊川あい) St

    プログラミング言語Streemをハックしよう!Matzゼミの全貌をレポート | PSYENCE:MEDIA
  • B木 - naoyaのはてなダイアリー

    昨年から続いているアルゴリズムイントロダクション輪講も、早いもので次は18章です。18章のテーマはB木(B Tree, Bツリー) です。B木はマルチウェイ平衡木(多分木による平衡木)で、データベースやファイルシステムなどでも良く使われる重要なデータ構造です。B木は一つの木の頂点にぶら下がる枝の数の下限と上限を設けた上、常に平衡木であることを制約としたデータ構造になります。 輪講の予習がてら、B木を Python で実装してみました。ソースコードを最後に掲載します。以下は B木に関する考察です。 B木がなぜ重要なのか B木が重要なのは、B木(の変種であるB+木*1など)が二次記憶装置上で効率良く操作できるように設計されたデータ構造だからです。データベースを利用するウェブアプリケーションなど、二次記憶(ハードディスク)上の大量のデータを扱うソフトウェアを運用した経験がある方なら、いかにディ

    B木 - naoyaのはてなダイアリー
  • Rubyは参照の値渡し - Camera Obscura

    Ruby は基的にすべてがオブジェクトで、またすべてが「参照の値渡し」です。ただし数値とシンボルは immutable なので、「値渡し」のように振舞います。 注意すべきは文字列です。 a = "Hello" p a.object_id #=>23440680 b = a p b.object_id #=>23440680 b += ", world!" p b #=>"Hello, world!" p b.object_id #=>23440560 p a #=>"Hello" p a.object_id #=>23440680 b = a をやっていますが、b += ", world!" のところで別のオブジェクトが生成されているので、a を出力しても "Hello" になります。一見「値渡し」のようです。けれども、 a = "hello" p a #=>"hello" b = a

    Rubyは参照の値渡し - Camera Obscura
    a2ikm
    a2ikm 2018/02/20
    「すべてが「参照の値渡し」です。ただし数値とシンボルは immutable なので、「値渡し」のように振舞います」この表現が正しそう。
  • ソフトウェア原則[1] - OCP(Open-Close Principle) - Qiita

    週刊オブジェクト倶楽部 2003-01号の書評『オブジェクト指向入門』の中で、 OCP"Open-Close Principle"として、 「ソフトウェアモジュールは、変更に対して閉じており、拡張に対して開いているべき」 を紹介しました。第1回目は、このOCP からです。次のC言語コードを見てどう思いますか? typedef struct { int x, y; } Point; typedef struct { Point p1, p2; } Line; typedef enum { LINE, POINT } Kind; typedef union { Point* point; Line* line; } ShapeUnion; typedef struct { Kind kind; ShapeUnion of; } Shape;

    ソフトウェア原則[1] - OCP(Open-Close Principle) - Qiita