Programming for the Puzzled (MIT OpenCourseWare) 2018年 07月 23日 fuji 日本でも、大学の講義がビデオで公開されるようになったとはいうものの、通常行われている講義がそのまま公開されるのではなく、かなり短い特別な講義だけが公開される感じで、とても世界と比較てきるようなオープン性は見られない。
Programming for the Puzzled (MIT OpenCourseWare) 2018年 07月 23日 fuji 日本でも、大学の講義がビデオで公開されるようになったとはいうものの、通常行われている講義がそのまま公開されるのではなく、かなり短い特別な講義だけが公開される感じで、とても世界と比較てきるようなオープン性は見られない。
またまたChainerの本を紹介する。 Chainerに限らないのだが、ディープラーニングの本というと、画像の分類、判定の紹介が圧倒的に多い気がする。 それも、ほとんど同じデータを使っていることが多い。 本書は、そういう本ではなく、ディープラーニングの入門書ではあるのだが、AIを使って何か自動生成するプログラムの紹介が中心である。 画像の場合、自然言語(日本語)の場合、それらの組み合わせを紹介している。 これだけやろうとすると、単にPythonとChainerをインストールするだけでは不足である。 計算量が増えるので、GPUを使えるように、CUDAのインストールも必要である。 その他にも、いろいろインストールするのだが、省略する。 この分野ではソフトウェアのバージョンアップが頻繁に行われており、デバイスドライバからさまざまなツール類まで、バージョンを合わせておかないとインストールできても実
少し前までは Haskell はインストールが非常に手間がかかる上に、ライブラリ類のバージョン整合性をとるのが非常に困難なのが大きな欠点だったのだが、 Stack なるビルドツールが現れてからはその点が一気に解消されて大変便利になった。コンパイル時に様々な問題を一気に洗い出してくれる Haskell は、書いている自分でも驚くほど正しく動くし、変更にも強い。言語の選択はもちろん適材適所なので一概には言えないが、堅牢なプログラムを素早く書くという観点ではお勧めできる言語だ。 しかし一方で、Haskell で書かれたプログラムにはパフォーマンスバグ(時間、空間、あるいはその両方)が含まれていることも多い。ビルドさえできればたいてい「正しく動く」が、意図したパフォーマンスが得られなかったり、余計なメモリを消費し続けたりといったことでは片手落ちである。 今回は、そんななかでも並列プログラミングを行
プログラミングするのに数学の知識はあるに越したことはない。 でも、どのくらいあったら良いかの判断は難しい。 プログラミング言語の知識や、用意されているツール・ライブラリ等を使って、まあ少し勉強すれば出来ることをやるだけだったら、高等学校の数学すら不要と思う。 しかし、それでは、理屈は理解しないままプログラムをしているプログラマ程度で終ってしまう。 特に、AIに関するプログラムを書こうと思ってディープラーニングの本を開いたとたん、訳のわからないことだらけになる筈だ。 まず、理工系大学や高専で普通に教わる数学の共通部分程度の話にはついていけないと、非常に困る。 ということで、大学生向けに数学全般を扱ったシリーズ本を紹介しよう。 この分野、昔からピンからキリまで色々出ているのだが、あまりにも本格的になると大変だ。 数学専攻ならともかく、そうでない数学を道具として使いたい立場だと、やや軽めで、広く
あらすじ あなたはとある業務用 Web アプリケーションの開発・保守を任されています。 このアプリケーションは ASP.NET を用いて作成されており、 クライアントサイドは一部 jQuery を利用してナウなヤングにバカウケの UI を実装しています。 さて、今回は 商品情報の変更履歴を一覧表示する。一覧から2つのバージョンを選んで差分を表示できるようにする。 という機能を実装することになりました。 これ自体はちゃちゃっと実装し、以下のようなHTMLが生成されるようにしました: ... <table> <tr> <th>A</th> <th>B</th> <th>変更日時</th> <th>変更者</th> </tr> <tr> <td><input type="radio" name="new_version" value="9"/></td> <td></td> <td>2012-0
新年を迎えたので、何か新しいことをしようということで選んでみたのがChainerである。 去年の春、AlphaGoから人工知能の狂乱ブームが始まり、猫も杓子も Deep Learning を勉強しているようで、オライリージャパンの『ゼロからはじめるDeep Learing』がやたらに売れている。 もう4万部を突破しているようだが、あの本を4万人もの人が読んで理解できるなら、日本のIT技術者の層は予想より遥かに厚かったことになるが、実際には人工知能ブームに流されて買っただけで積読状態ではないかと思っている。 Deep Learning(以下DL)でよく利用されている言語がPythonである。といっても、Pythonの基本部分ではなく、NumPyを始めとする拡張部分を使いまくってDLを実現している。つまり、Pythonの基本部分を使いこなすだけでDLのコードが書けるわけではない。 ちょっと勉強
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 斎藤 康毅 著 A5版、320ページ 2016/9/24 発売 3400円(本体) オライリー・ジャパン ISBN-13: 978-487311-758-4 GitHub:oreilly-japan/deep-learning-from-scratch 2016年になって、AIブーム、Deep Learning ブームに乗じて多数の解説書が出た。 もちろん、その多くは入門書だったり、あれこれ出来るようになったことを紹介するだけの本が大多数で、読んでもDeep Learning についてDeep に理解できるようにはならない本が殆んどであった。 しかし、この本は違うのだ。ゼロから作るという枕言葉通り、Deep Learningのプログラムを、既成のライブラリなどを使うのではなくゼロから、スクラッチで書
RAII の話題は C++ の例が多いが、それもそのはず、ここ最近は GC が面倒を見てくれることがほとんどなので、 RAII の需要そのものが減っている。とはいえネットワークコネクションやらファイルハンドルやらと、あまりリソース解放のタイミングを遅らせたくないものに関しては、 RAII パターンで寿命を明示しておきたいのは GC があったとしても同じこと。 Ruby もそういったリソースに関してはブロックを渡すことで解放もしてくれる RAII パターンを実装したインターフェースが提供されているので、積極的に使っていきたいところだ。そういったリソースがひとつだけなら、素直に書けばいいだけのことなのであまり考える必要はない。
前回のAngular2入門 Component編 その1 では、 Componentの基本的な使い方について紹介いたしました。 今回は以下の様な2つのComponentを作成し、お互いにデータのやり取りをする方法を紹介致します。 今回作成するサンプルについてapp Component と custom-button Componentの2つを作成するapp Component は テキスト入力欄 を持っているテキスト入力欄の値と、custom-button Component内のボタンのラベルは同じものを表示するcustom-button をクリックすると、Consoleに今表示しているボタンのラベルを出力するcustom-button をクリックすると、親Component(=app)にボタンが押されたことを通知するapp Componentは、custom-button からのクリック
Angular2は、コンポーネント志向なJavascriptフレームワークです。 画面一つ一つの要素を部品化しコンポーネントとして切り出すことで、保守のしやすいソースを記述することができます。 今回は、Angular2の基本的な機能であるComponentの使い方を説明いたします。 Angular2 新規プロジェクトの作成 前回、Angular2 開発環境構築編 を書いてから随分な時間が経過してしまいました。 2016/08/04 時点でAngular2 のバージョンは、 2.0.0-rc.4 です。 前回記事を書いた時点では Angular2.0.0-beta.0 を使っていましたが、 beta.0 からバージョンが上がるごとにびっくりするようなBreaking Changeが幾度と無く発生し、 前に書いたコードはDeprecateなコードとなってしまいました。 Angular2.0.0
人工知能ブームで、機械学習やら深層学習の説明がネット上にはゴロゴロしている。 しかし、丁寧に、大学生はもちろん、高校生くらいなら十分に分かるように説明しているものは少ない。 それで、日本語だけで探すのはあきらめて、英語で探すと色々見つかったが、その中で一番丁寧な説明をしていると思われるものを今回は紹介する。 data school というサイトには、データサイエンス関連の色々な情報が用意されている。 実際に見てみたのは、scikit-learn だけなのだが、たぶん他も丁寧なのではないかと予想している。 scikit-learn は、pythonで機械学習をするとき非常に良く使う便利なライブラリなのだが、このビデオでは、機械学習のことも説明しながら、ライブラリの説明もしてくれるというものでるので、事前の準備は何もいらない。 scikit-learn ビデオは9本で、合計4時間もある。さらに
すでにhomebrewでDockerをインストールしている場合は以下を実行するとDocker 1.12にバージョンアップする。 brew update brew upgrade [Docker公式ドキュメント](https://docs.docker.com/engine/getstarted/step_one/)を見てもDocker.dmgをダウンロードしてインストールする方法しか書かれていないし、homebrewでインストールしたDockerでdaemonを動かす方法がどうしても分からなかった。 いろいろ検索した結果、以下を発見したのでぜひ共有したい。 brew cask install docker 上記を実行すると/Applications/Docker.appがインストールされ、Docker.appを起動するとdeamonも起動するようになる。もうVirtualBoxは不要なのだ
現在、機械学習や深層学習に関する本が非常にたくさん出ている。 どうせ出ているのなら、世界で一番良さそうな教科書的な本はないものかちょっと考えてみた。 今、世界の有名大学が、これらの授業を公開していて、誰でも好きなだけ勉強できる状況にある。 人工知能系の講義ビデオなどについては、別の機会に紹介する。 そんな情報の渦中をさまよっていたら、MIT Press の Deep Learning の本のサイトが見つかった。著者は、Ian Goodfellow(モントリオール大->Google->OpenAI), Yoshua Bengio(モントリオール大) and Aaron Courville(モントリオール大)ということで、この分野ではモントリオール大、トロント大などカナダが有力である。 この本のサイト、とてもショボイ感じなのだけれど、MIT Press がそんないい加減な本を出すとも思えないと
Dockerコンテナでsshdを動かしてはいけない この記事ではDockerコンテナにAnsibleで接続してプロビジョニングする方法を説明します。 その前に、Dockerコンテナでsshdを動かしてAnsibleで接続しているみなさん、Ansible 2.0からDocker Connection Pluginが導入されてsshは必要なくなったので今すぐsshdを停止してください。 Dockerコンテナでsshdを動かしてはいけない理由は以下を参照してください。 Dockerコンテナ内でsshdを実行してはいけない理由 今回のファイル一式をGitHubに置きました https://github.com/eyasuyuki/docker-ansible AnsibleとDockerのインストール この記事は以下の環境で試しています。 OS X 10.11.5Ansible 2.1Docker
どちらの書き方が良いのか、というのは人やプロジェクトなどによりけりではあるが、後者のメリットのひとつとして「ブロック内の変数を命名しなくて良い」というものがある。我々ソフトウェアエンジニアにとって命名とは一般的に重労働であり、その労働力はできればもっと重要な箇所で使いたい。そんなわけで我々としてはできれば後者の記法を利用していきたいわけである。 ところが表題の通り、この二つは必ずしも同じ挙動になるとは限らない。実際に二つほど発見したので紹介しよう。 Refinement ひとつは Refinement の対象となる場合。実例を見てみよう。 module FixnumEx refine Fixnum do def to_s "X" end end end p [1,2,3].map { |e| e.to_s } p [1,2,3].map(&:to_s) using FixnumEx p [
世はまさにJavascriptフレームワーク戦国時代。 新たなJSフレームワークが登場したと思えば、1年後にはオワコンとか言われていたりする、恐ろしい世界です。 React.js が流行ったと思えば、ReactはViewしか面倒見てくれないからFlux 入れようとか、 いやFluxちょっと使いにくいから Fluxxor 入れたほうが、いや Flummox の方がよさそうとか、redux だとか、もうわけわからん状態です。 実案件では今は Marionette.js を使っているんですが、そのことをフロントエンドエンジニア(jsの達人)の方に話したら、Backbone (Marionette) とかオワコンですよみたいな感じに言われたのが、ちょっとショックでした。 Javascriptフレームワークが乱立している世の中ですが、数あるフレームワークの中で人気を誇っているのがAngularとRe
$ git rebase master Applying: Add GeneratedColumn Applying: Add EnumerateGeneratedColumns Applying: Use EnumerateGeneratedColumns to CreateQuery Using index info to reconstruct a base tree... M AAA/BBB/Summary.cs Falling back to patching base and 3-way merge... Auto-merging AAA/BBB/Summary.cs CONFLICT (content): Merge conflict in AAA/BBB/Summary.cs Failed to merge in the changes. Patch failed at 0
先日 GHOST と呼ばれる glibc の脆弱性が発表された。なんでも、「リモートから任意のコードを実行できる可能性がある」らしいではないか。しかも様々なプログラムで利用されているライブラリ部分の問題とあって、影響範囲がとても広い。なかなか厄介なことである。 はて、しかし一体全体どうやってリモートから任意のコードを実行しようというのだろう? 話を聞くに、たかが数バイトの情報を範囲外のメモリに書き込める可能性があるだけだという。実際それだけのことでサーバーの乗っ取りなどできるものなのだろうか。そんなわけで、その疑問に答えるべく、本記事では以下の URL で解説されている実際の攻撃方法を若干端折って紹介してみようと思う。 http://www.openwall.com/lists/oss-security/2015/01/27/9 なお、本記事はこの脆弱性そのものに対する緊急度などについて言
DBのスキーマ、皆様どのように管理されているでしょうか。 Railsを利用されている方の多くは、ActiveRecordのマイグレーションを利用して管理をされているかと思います。 私もいままでいくつかのRailsプロジェクトに関わってきましたが、 ほぼ全てのプロジェクトでActiveRecordのDBマイグレーションを利用してきました。 (一部のプロジェクトはActiveRecordを使っていないため、マイグレーションも独自のものを利用しています) ActiveRecordのマイグレーションでは、DBスキーマ変更の差分情報をマイグレーションスクリプトとして保存しておきます。例えば、新しいテーブル「users」を作成する場合は、下記のようなマイグレーションスクリプトを作成します。 class AddUsers < ActiveRecord::Migration def up # ここにマイグ
前回までのあらすじ オセロシリーズをしただけで力尽きてしまった。実際のコードはまだ一行も書かれていない。果たして無事にゲームを実装し終えることができるのか。 前提 以降で例示しているコードは に書かれているものだと思って読んでください。 カードの作成 シェフィはカードゲームです。 と言う訳でまずはカードをどう表現するかについて決めましょう。 理屈の上ではカード名さえ区別できれば十分なのですが、 実装面の都合や今後の拡張も考慮して、 基本的にはカード名のみを持つオブジェクトとして表現することにします。 シェフィのカードは2種類あります。 ひつじカードとイベントカードです。 ひつじカードは自分のひつじを表します。 全ひつじの合計を取ったりひつじカードをグレードアップする等々の処理が多いため、 カードには名前だけでなくひつじの数も保持しておくことにします。 この数はひつじの匹数でもありカードのグ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く