サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
雑学
nametake-1009.hatenablog.com
この記事は Go3 Advent Calendar 2017の18日目の記事です。 moqでMockを作る Goでアプリケーションを書いているとinterfaceにMockを投げ込みたくなる瞬間があると思います。 たとえば、以下のようなコードのテストを書きたい場合ですね。 Userを取りに行く処理が外部に依存しているためにClient interfaceを切っていて、それをApplication構造体が持っています。 type User struct { ID int FirstName string LastName string } type Client interface { GetAllUser() ([]*User, error) } type Application struct { Client Client } func (a *Application) FilterLa
プロパティについて 研究室で質問されたのでPythonのプロパティについて解説しようと思う。 最初にプロパティとはなにかをIT用語辞典で引いていみると、 プロパティとは、オブジェクト指向プログラミングで使用される オブジェクトが保持している、そのオブジェクトの性質を表すデータ。 例えば、画像データのオブジェクトならば、高さや幅などのデータを プロパティとして持っている。 という定義になっている。 つまり、オブジェクト指向プログラミングでクラスのインスタンスから アクセスできるimg.widthとかimg.heightとかの、widthやheightのことである。 しかし、カプセル化の概念からすると、直接プロパティをいじれてしまうのは良くない。 そこで、オブジェクト指向プログラミングでは以下のコードのような アクセサというメソッドとアクセス修飾子を使って、プロパティが 不用意にいじくりまわさ
tl;dr エラーを返すときにはpkg/errorsのerrors.Wrapでラップして返すとエラーの原因を返せる エラーを受け取るときにはpkg/errorsのerrors.Causeで原因を見れる 前置き 以前の記事の 「エラーをチェックするだけでなく、それらを正常に処理しなさい」の項目の話を知ってから、 業務で書いているコードでも以下のようにバシバシfmt.Errorfを使っていた。 package main import ( "fmt" ) func foo() error { err := bar() return fmt.Errorf("foo error: %v", err) } func bar() error { err := buz() return fmt.Errorf("bar error: %v", err) } func buz() error { return
機械学習が何をやっているのか全くわかっていなくても 簡単に画像処理の機械学習を行える環境を整えた話。 この記事の目標は、何もわからなくてもとりあえず画像を機械に学習させる、です。 (細かい部分が全くわからないことの言い訳) 今回は、Digitsという、NVIDIAが作っている Caffeという機械学習ライブラリのWebアプリを使ってみる。 また、めんどくさい導入部分を全部Dockerにやってもらう。 事前準備 docker-machine導入済み docker-compose導入済み docker-machineでdefaultという名前のマシンを作ってある前提で進めます。 docker-machineってなんだよって人は 公式ドキュメントのDocker Machineの項目を 読めばいいと思う。 Digitsが動いているコンテナを立てるまで 以下のdocker-compose.ymlファ
Go (その3) Advent Calendar 2016 11日目の記事です。 Go言語の生みの親、Rob Pikeが2015年のGopherfestのセッションで 言っていた、Go Proverbsを自分の勉強がてら和訳してちょっと解説してみる。 後半に行くに連れて集中力が切れたり、いろいろ調査不足のところや、認識違いの部分もあると思うので、 そういう部分のところがあったら是非指摘してください。自分でも気づいたら修正していきます。 ちなみにタイトルの「Go Proverbs」は、動画の冒頭で囲碁の話をしているとおり「碁の格言」の直訳で、 「Goの格言」にかかっていておしゃれ。 メモリを共有して通信したり、通信してメモリを共有してはならない 原文は"Don't communicate by sharing memory, share memory by communicating." こ
Hubotをデーモン化してSlackと連携させた時のメモ。 以下のツールは導入してあること前提。 apt nodejs npm npm hubot pm2 hubotとSlackの初期設定 まず、以下のコマンドでhubotを準備。 $ mkdir nametake-bot $ cd nametake-bot $ yo hubot _____________________________ / \ //\ | Extracting input for | ////\ _____ | self-replication process | //////\ /_____\ \ / ======= |[^_/\_]| /---------------------------- | | _|___@@__|__ +===+/ /// \_\ | |_\ /// HUBOT/\\ |___/\// /
過去に書いた記事をそのまま移行します。 前提 $HOMEディレクトリ上でドットファイルをgitを管理している。 .gitignoreはホワイトリスト方式で記述している。 やりたかったこと $HOME └── .vim ├── bundle ├── snippet ├── syntax ├── template └── userautoload 上記の構造になっているvimの設定ファイルのbundleディレクトリ以外をgitの管理下に置きたい。 (bundleディレクトリだけはgitで管理したくない) やったこと ホワイトリスト方式で.gitignoreを設定したが、階層構造をとっている時の設定でつまずいた。 ダメだったパターン 以下のように記述したら$HOME/.vim/以下のディレクトリ内部のファイルが読み込まれなかった。 # all file ignore /* /.* # targe
このページを最初にブックマークしてみませんか?
『nametake-1009.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く