タグ

Programmingに関するaisotのブックマーク (148)

  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • DeepLearningでも声質変換したい!

    これはドワンゴ Advent Calendar 2017の9日目の記事です。 漫画やアニメを見ていると、可愛い女の子になって可愛い女の子と他愛もない会話をして過ごす日常に憧れます。 そんな感じで、可愛い女の子になりたい人は多いと思います1。 しかし残念なことに、現在の技術で真の可愛い女の子になるのはとても難しいです。 じゃあせめて仮想でいいから可愛い女の子になりたいですよね(バーチャルyoutuberキズナアイみたいな)。 しかし、仮に姿を可愛い女の子にしても、声が可愛くなければ願いは叶いません。 ということで、声を可愛くする声質変換を目指してみました。 今回は僕の声をDeepLearningの力を借りて結月ゆかりにしました。 お勉強まずは音声の勉強をします。 これが一番時間かかりました。 最近の音声合成手法は3種類あります。 音響特徴量+vocoder wavenet STFT+位相推定

  • 第2回 大量トラフィックを支えるインフラ~独自プロトコル、ファイルシステムの実装もいとわない!~ | gihyo.jp

    ドワンゴのエンジニア魂 第2回大量トラフィックを支えるインフラ~独自プロトコル、ファイルシステムの実装もいとわない!~ 大量のユーザーを抱える「ニコニコ動画(ニコ動⁠)⁠」⁠「⁠ニコニコ生放送(ニコ生⁠)⁠」をさらに進化させるべく、ドワンゴでは土台となる基盤を見直し、大幅なアップデートを実施した。ドワンゴのエンジニアである原耕司氏(写真1⁠)⁠、太田健氏(写真2⁠)⁠、川平航介氏(写真3)の3名にお話を伺い、プロトコルや分散ファイルシステムまで独自に開発したという、このプロジェクトの真相に迫った。 将来のサービス拡充に向けて土台を整備 ――今回、サービスの基盤部分を大幅に刷新された理由は何でしょうか。 原:ニコ動は、サービスの提供開始から時間が経ったことで裏側のコードが複雑になっており、これから新たな機能をバンバン追加するのが厳しい状況になっていました。そこで、将来的なサービス拡充に対応で

    第2回 大量トラフィックを支えるインフラ~独自プロトコル、ファイルシステムの実装もいとわない!~ | gihyo.jp
  • 電王・Ponanza開発者が語る、理由がわからないけどスゴイ“怠惰な並列化”

    皆さんこんにちは。 私は将棋プログラム「Ponanza」の作者、山一成と申します。Ponanzaは初めてプロ棋士を破った将棋プログラムで、近年最も強い将棋プログラムと言えると思われます。また、2017年もトッププロ棋士の方と対局することが予定されています。Ponazaの改良のための機械学習に現在ジサトライッペイさんのPC「大紅蓮丸」の計算リソースを借りているのですが、その関係で原稿を書いてとお願いされたので、3回に渡って将棋プログラムの今について、書いていきたいと思います。 フリーランチの終焉、並列化の効率問題 アスキー読者の方々には言うまでもないのですが、まずは近年のCPU事情について解説していきたいと思います。ちょっと昔まではCPUはシングルコアが当たり前で18ヶ月経過すればCPUのトランジスター数は倍になり、性能が向上するという流れが続いていました。ソフトウェアはその性能向上に伴い

    電王・Ponanza開発者が語る、理由がわからないけどスゴイ“怠惰な並列化”
  • 半年かかったバグ調査の顛末は - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 今回は原因究明に半年以上かかったバグ調査の紹介をいたします。 弊社はクラウドサービスcybozu.comを提供しています。 クラウドサービスでは障害対策のためのデータバックアップやレプリケーションが必須です。 現在ラボの星野がメイン、私はサブとして弊社サービスでの利用を目指した次期バックアップシステムWalB(GitHub)を開発しています。 WalBは、ファイルシステムとdiskの間に入ってIOを全て記録するブロックデバイスとIOのログを管理するツールからなるシステムです。 詳細はリンク先をごらんください。 発端 去年はラボ内の開発環境でテストを進め、社でテスト運用を開始するのが目標でした。 ところがラボでテストを開始して4カ月後の2015年4月、不正なlogpackが検出されました。 logpackとはWalBで用いられるデータフォーマットの一つです。

    半年かかったバグ調査の顛末は - Cybozu Inside Out | サイボウズエンジニアのブログ
  • ソーサリアン~内部解析からわかったこと~ by PI.

    このドキュメントは、Y.ROMIさんが発行された同人CD「PC88ゲームの世界」 CD-ROM向けに、2000年6月に執筆、脱稿したものです。 その版をもとに記述ミスなどを修正したものを、ここに掲載します。 はじめに 筆者は、PC-88史上に残る名作である(株)日ファルコムのARPG、「ソーサリアン」をシャープ製パーソナルワークステーションX680x0シリーズへ移植した経験をもつ。この移植は全くのアンオフィシャルなものであり、あくまで個人の範囲内で独自に行ったものであることを予めお断りしておく。 さて、この移植にあたり、筆者らはバイナリレベルで60KBにもおよぶPC-8801mkIISR版「ソーサリアン」のほぼ全プログラムを解析するという作業を行った。この結果、今まで知られていなかった事実や、またソーサリアンのメインプログラマーである木屋 善夫氏(現在、日アプリケーション(株)に在籍)

    ソーサリアン~内部解析からわかったこと~ by PI.
  • 某R社を5日でクビになった話 - Code.io

    2015-03-07 某R社を5日でクビになった話 Hello,World!個人開発でぬくぬくやってきたエンジニアの僕が、縁あってエンジニアインターンし、5日目にしてクビになるという出来事があり、学びが多かったので綴りたいと思います。 ◼︎某社との出会い 焼き肉をおごるという企画で、スカウトが来て、オシャレでキレイな焼き肉屋さんでランチをしました。そこで、スゴイエンジニアさんに「このサービスのこの部分をこうしたほうがよくて、ここまで作ったので開発してもいいですか?みたいにすれば自分のやりたい開発ができるんだよ」と言われ、自分のエンジニアのイメージがガラッと変わって魅了されて、興味を持つようになりました。そのスゴイエンジニアさんは、今も憧れているスゴイ方です。カッコイイなと思っています。 ◼︎某社の技術責任者との出会い 会社訪問を予定していた日に、スゴイエンジニアさんにスゴイエンジニアさんの

    某R社を5日でクビになった話 - Code.io
  • ご注文はDeep Learningですか? - kivantium活動日記

    先日Deep Learningでラブライブ!キャラを識別するという記事が話題になっていました。この記事で紹介されている SIG2D 2014を知り合いから貸してもらったので参考にしながら、ご注文は機械学習ですか?のDeep Learning版を作ってみました。 Caffeなど必要なソフトのインストール Ubuntu 14.04の場合は過去記事を参照してください。これ以外にもpython-opencvなどを使いますが、依存関係の全ては把握できていないのでエラーが出たら適宜インストールしてください。 データの準備 Deep Learningでは大量の学習データが必要になると言われているので、まずは大量のデータを用意します。参考記事では6000枚のラブライブ画像を使ったということなので対抗して12000枚以上のごちうさ画像を用意したいと思います。それだけのデータを手動で分類するとそれだけで時間が

    ご注文はDeep Learningですか? - kivantium活動日記
  • ASCIIコードの秘密 - ザリガニが見ていた...。

    当はエスケープシーケンスのことを調べていたのだが、その前にASCIIコードについて調べることになってしまった...。文字コードの基として知っているつもりだったASCIIコードについて、あらためて見直してみると、実は当の意味をよく分かっていなかったことに気づいた。 ASCIIコード表 ASCIIコードは、7ビット(2進数7桁)の文字コードであり、全部で128のコードが定義されている。 最も基的な文字コードであり、その他多くの文字コードはこのASCIIコードと互換性を維持している。 00 10 20 30 40 50 60 70 00 NUL DLE SP 0 @ P ` p 01 SOH DC1 ! 1 A Q a q 02 STX DC2 " 2 B R b r 03 ETX DC3 # 3 C S c s 04 EOT DC4 $ 4 D T d t 05 ENQ NAK % 5

  • 超簡単に3DCGできるJavaScriptライブラリ作った - aike’s blog

    ブラウザでWebGLが使えるようになって3DCGプログラミングはずいぶん身近なものになりました。と書いてるそばから違和感を感じるくらい生のWebGLをJavaScriptで書くのは敷居が高かったりします。できなくはないけど前提となる知識がかなり必要な感じ。 three.jsが登場したときは、これで普通に3DCGができるということで一気にひろまりました。とはいえ、それでもまだやることは多く、画面に四角い箱を表示する場合以下のようなプログラムを書くことになります。 ・シーンを作成 ・ライトを作成、位置と向きを設定、シーンに追加 ・カメラを作成、位置と向きを設定、シーンに追加 ・マテリアルを作成、色を指定 ・BoxGeometryを作成、サイズを指定 ・メッシュを作成、位置と向きを設定、シーンに追加 ・レンダラーを作成 ・レンダリングループ処理 これらのひとつでも間違えたりパラメーターが適切でな

    超簡単に3DCGできるJavaScriptライブラリ作った - aike’s blog
  • ニコニコ動画 『スナップショット検索API』 ガイド

    ニコニコ動画 『スナップショット検索API』 ガイド ニコニコ動画のコンテンツを解析する目的で検索/取得する際に利用できますはじめにAPIは、ニコニコ動画のコンテンツに紐づく情報を、検索結果として提供します。検索結果は、一日のある時点で保存された情報が返されます。キーワード検索・タグ検索ニコニコ動画の検索は大きく分けて、キーワード検索とタグ検索の2つがあります。これらは、検索クエリの対象となるフィールドによって切り替えられます。エンドポイントhttp://api.search.nicovideo.jp/api/snapshot/検索クエリ形式以下のJSONをPOSTすることで、検索結果を取得できます。オプション 以外は必須フィールドです。issuerにはサービス名かアプリケーション名を指定してください。 { "query" : 検索キーワード "service" : 検索対象サービスリス

  • TechCrunch | Startup and Technology News

    The StrictlyVC roadtrip continues! Coming off of sold-out events in London, Los Angeles, and San Francisco, we’re heading to Washington, D.C. for a cozy-vc-packed, evening at the Woolly Mammoth Theatre…

    TechCrunch | Startup and Technology News
  • APIのバージョニングは限局分岐でやるのが良い - Hidden in Plain Sight

    ちょっと前にTwitterAPIのバージョニングをどうやるかみたいな話をしていたのですが、そのへんもやもやしているので少し整理しておきたいなと。 APIのURLを/api/v1/*とかってやるの、やめたほうがいいとおもうんだけどなぁ。いざv2を作るとなったときに、大量のコピペが発生して後悔するよ、って伝えたい。— Kenn Ejima (@kenn) February 28, 2014 さて、これについて色々と異論・反論も含めた意見が出たのですが、まずは、大昔にURL方式(=コントローラ分割)でやってきて後悔したぼくが、(5年ぐらい前から)現在はどうやってAPIのバージョンを管理しているか?について紹介します。 基原理としては、コピペが多発する根っこで分岐(=コントローラ分割)じゃなくて、必要最小限のところで限局的に分岐するのがいい、という考え方に基づきます。 一言でいうと、「パラメー

    APIのバージョニングは限局分岐でやるのが良い - Hidden in Plain Sight
  • テスト考2014 - Hidden in Plain Sight

    年々、ウェブアプリを開発するときにテストを書こうという機運が強くなっていると感じる。 これは、開発パラダイムの成熟を意味することであり、基的に良いことだと思っている。 しかし同時に「テスト原理主義」とでもいうような極端な考え方もでてきていて、開発スタイルをめぐって摩擦が起こっている。 そして、この議論は「テストは、ないよりあったほうが良いよね」という、微視的には誰も反論できないロジックに押し通されがちで、「地獄への道は善意で舗装されている」の典型的な現象に見えて仕方がない。 テストを書かない、というと背景にどんな深い考えがあっても素人くさく聞こえ、逆にテストを書くというだけで良いプログラマーに見える、という非対称な化粧効果がある。ソフトウェア・コンサルティング会社がテスト好きなのは決して偶然ではない。 ソフトウェアというのは、結局のところ、動いてナンボ、使われてナンボである。 期待するも

    テスト考2014 - Hidden in Plain Sight
  • ニコニコの新検索の特徴:動画編 - ニコニコ動画研究所

    追記 2015年12月16日 2015年11月にこの記事の方法は非推奨になったのでコンテンツ検索API V2を使う。 コンテンツ検索API V2 について 新検索β | niconico 2014年11月17日の昼くらいから1601件目以降を選択("from":1601)すると 301 エラーが返ってきて応答がない不具合があり報告済みだがまだ直っていない。その後はドキュメントでも1600までとなったので不具合ではなく仕様になった。 続報:新検索で24時間ランキングが見られるように ニコニコの新検索の特徴:生放送編 バージョンに縛りがないので Q でも、原宿でも使うことができるログインしていなくても使える検索結果の表示がとても早いアクセス制限がないらしい検索ワードの入力段階でサジェスト機能がある各サービスへの横断検索ができるがコモンズには対応していない 対応サービス(動画、生放送、イラスト

  • デニス・リッチーによって書かれた最初のCコンパイラーがGitHubで公開

    mortdeus/legacy-cc · GitHub デニス・リッチー(1941-2011)によって書かれた発展途中の初期のCコンパイラーのソースコードがGitHubで公開されている。ソースコード自体は、まだデニス・リッチー存命の頃から公開されていたが、この機会に紹介してみる。 ライセンスは許諾的で、このライセンス文を同梱すること、並びに、ソースコードから生成されたバイナリはラインセンス文を出力することとなっている。 追記:ライセンスに関してふと思った。このライセンスは名義が企業で、著作権を盾に同意を求めている。日では、映画以外の団体の著作権の保護期間は公開後50年である。UNIXと付属するソフトウェアのソースコードは当時から公開されていた。ということは、1973年に制作されたこのCコンパイラーのソースコードは、日国内では、2024年に著作権が切れるのだろうか。 詳しい経緯は、以下の

  • ソフトウェア設計とは何か 〜 設計にはプログラミング経験が必要か否か | Social Change!

    「プログラミング経験のない人がソフトウェアの設計をすること」の是非について、どう考えますか? もしかしたら、このブログの読者であれば、プログラミングが出来ないのにソフトウェア設計をするなんてありえない!という意見の方が多いかもしれません。私もそういう意見ではあったのですが、色々な人と話をするにつけ、どこか違和感を感じていました。 その違和感の正体を探るべく、ソフトウェア設計とプログラミングについて考えてみました。そこでわかったことは「ソフトウェア設計」について、人それぞれに捉え方が違うために、話が通じないことがあることから産まれた違和感だったということです。 この記事では、私の考える「ソフトウェア設計とは何か」について書きました。 ソフトウェア開発はすべてが「設計」である モノづくりにおいて、大きく工程を2つに分けるとしたら「設計」と「製造」に分けることが出来ます。何をどう作るかを決めるこ

    ソフトウェア設計とは何か 〜 設計にはプログラミング経験が必要か否か | Social Change!
  • cron等をつかって外部のAPIに問い合わせる場合は、毎時0分を避けるのが大人のマナー - blog.nomadscafe.jp

    なんかtwitterで書いたらウケたっぽいので cronをつかって外部のAPIに問い合わせる場合は、毎時0分をさけるのオススメ!!!!お兄さんとの約束だ!!! — masahiro nagano (@kazeburo) August 9, 2012 某サービスのAPIへの問い合わせ件数を調べると、毎時 0分台(0秒から59秒)のアクセスは1分から59分までの1分間の平均アクセス数の5倍から8倍にもなります。 これはおそらく、crontabの設定が 0 * * * * /path/to/call_foreign_api になっていることが多いからじゃないかなぁと思うのです。 その結果、サーバのロードアベレージは このように毎時0分だけ跳ね上がってしまいます。サービスを快適に提供できなくなる可能性があるので、APIの利用を制限したり、サーバを追加しなければなりません。これはサービス利用者、サー

  • プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!

    僕がプログラミングに触れた当時は、プログラミングといえば「まず C 言語」でした。それから 10 年以上が経ちました。学校の授業や企業の研修では未だに C 言語を教えているところがあるようです。関数型プログラミング言語という波が来ている 2012 年にもなって未だに C 言語をやっているというのはまるで進歩が無く残念な気もしますが、比較的多くのプログラマに浸透している共通言語を最初に教えるというのは、一方では喜ばしい事だと解釈する事もできるのかもしれません*1。まぁとにかく、意にせよ不意にせよ現場で プログラム初心者に C 言語を教える羽目になった 人がたくさんいて、プログラム初心者なのに C 言語を学ばざるを得なくなった 若者がたくさんいるということです。 C 言語を教えるときに避けて通れないのがポインタで、プログラム初心者が C 言語を学ぶときにやたらとつまずく人が多いのがポインタ

    プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!
  • エンジニアtype 技術者のキャリアを考えるWebマガジン - 転職@type

    エンジニアtypeは、各種エンジニアをはじめ「創る人たち」のキャリア形成に役立つ情報を発信する『@type』のコンテンツです。

    エンジニアtype 技術者のキャリアを考えるWebマガジン - 転職@type