普段、機械学習やらAIやらに縁のない僕ですが、WEBエンジニアとしては、現状のAPIがどこまで出来るのか知っておきたいと思い、Google Cloud Vision APIを試してみたので共有します。使う言語はGo言語です。画像のパスを指定するだけの超シンプルなCLIを作ります。 そもそも Google Cloud Vision API って? 物体検知やテキスト抽出などがAPI経由で簡単に実行できるやつ。基本は画像認識はラベリングやら、学習データの設計やら、モデルを作ってなど工数かかるけど、その部分がGoogleがすでに用意した機械学習モデルを使って色々できますよってやつ。しかもAPIに画像投げるだけ。 公式の紹介ページ https://cloud.google.com/vision/ 前提 Go言語が使える環境が整っている GCPにアカウント登録が完了している コマンドラインパラメータ
ベーシック認証がかかったサイトで ユーザー名:user パスワード:password とすると: で、直接アクセスすることが出来たりする…。 追記: ちなみに、ユーザー名もしくはパスワードに@マークが入っていた場合: ユーザー名:user@hoge.com パスワード:password と、URLエンコードすると良いらしい…。 Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
インスタンス(オブジェクト)の生成 複数の方法が存在し、new、->(※)、.マクロを使用する方法があります。 恐らく違いはどれもありません。 ※2018/5/24 追記: コメントに頂きましたが内部で->名前な関数が生成されているらしいです。 (defrecord Person[name age]) (let [bob (new Person "bob" 25)] (println bob)) (let [bob (->Person "bob" 25)] (println bob)) (let [bob (Person. "bob" 25)] (println bob)) プロパティアクセス プロパティ名の頭に:(mapのアクセス方法)か.(インスタンスメンバーのアクセス方法)でアクセスすることができます。 通常と同様にClorureでは定数しか扱えないため、書き換えが必要ならatomと
Python でブロックチェーンを実装する記事を Qiita 上で発見しました。 ブロックチェーンを作ることで学ぶ 〜ブロックチェーンがどのように動いているのか学ぶ最速の方法は作ってみることだ〜 Swift で実装してみた記事 や Ruby で実装してみた記事があったので、右へ倣えということで Clojure で実装してみたいと思います。 基本的には元記事の章立てに合わせて実装していきます。また、引用記法の箇所は、元記事より引用した文となります。 最終的なソースはこちら プロジェクト作成 後半に API としてブロックチェーンを利用するため、プロジェクトは compojure のテンプレートを使い作成しておきます。
動機 Lispといえばマクロというくらい、Lispとマクロは関連が深いです。 なのですが、自分は簡単なマクロなら自分で書けるものの、長いマクロや複雑なマクロをあまり書いたことがありません。 そろそろ次の1歩に進んでもいい頃合いかなと思うのですが、じゃぁどうするというところが思いつきません。 それなら公式の長めのマクロを読むことで色んなヒントを得ればいいじゃない、ということで読もうと思いました。 言語はClojureで、読むマクロはclojure.coreから長いものを適当に選ぶことにします。 長いマクロベスト4 case defmulti fn doseq(for) 定量的に図ったわけではないですが、ほぼ間違いないと思います。おそらく、Clojureに触ったことがある人であれば、大体わかるのではないでしょうか。 コードリーディング ソースコードはGit Hubより引用します。変更される可能
動機 Lisp っぽいSyntaxで OpenGL とか使ってノベルゲームエンジンを作ってみたい JVM 言語で書けば、どこでも動くんじゃないかな? ゆくゆくは OpenCV + OpenAL も使って動画ファイルを再生したい JavaFX...知らない子ですねぇ 出来たこと (OpenCV を Clojure で使うことが出来た)<= まだクロスプラットホームに対応させられていない・・・ LWJGL を、 Java のチュートリアルを変換することで使うことが出来た レポジトリはこちらです 実装方法 注意:ここの実装方法は、OpenCV の項をクリアした上でなければ動きません・ Project.clj ここが一番重要な部分だと思います。僕ではうまく実装することが出来なかったので、[こちら] を参考にさせていただきました。 (おそらく上のページを踏襲してOpenCVも実装すればクロスプラット
LISP List Processor QiitaでURLの記入のみでcodeのない記事はと追記 <この項は書きかけです。順次追記します。> LISP は単純な文法か? https://qiita.com/SaitoAtsushi/items/fc9e210d30ca00cad162 中西先生のM式 https://qiita.com/sym_num/items/341a973aabd25781a123 M言語からS表現への変換器 https://qiita.com/sym_num/items/566e4b13946613767131 LISP x vMotion https://qiita.com/inoko/items/d8cb9e5df07f6064fde3 Lispを始めるきっかけになった情報をまとめる https://qiita.com/aimerald/items/dd9136
ClojureScriptやそのエコシステムは絶賛開発中のためライブラリの更新がとても盛んに行われています。2015年に出版されている英語の書籍でもすでに情報が古くなっています。最新の情報をネットで調べてもバージョンが違うと内容が異なっているので自分で手を動かして確認する必要があります。FigwheelのQuick Startを例にして最新のClojureScriptの開発方法を勉強していきます。 FigwheelはClojureScritのコードをローカルで編集するとブラウザに自動的にプッシュして最新の状態にしてくれるLeiningenのプラグインです。最近はREPL機能も持つようになってさらに便利になっています。 figwheel templateでプロジェクトの作成 lein newコマンドでfigwheel templateを使いプロジェクトを作成します。 (defproject
ClojureScript の本家サイトにある Quick Start の記事をざっくりとまとめる。 1.10.238 Release 以前の古い記事はこちら (だいぶ、短くなった) 事前準備 macOS or Linux ユーザ Web ブラウザ Clojure のインストール Windows ユーザ Java 8 Standalone ClojureScript JAR の DL Hello, ClojureScript このチュートリアルでは、単純な CloureScript のプロジェクトのコンパイルと実行、および REPL を実行し、インタラクティブにコードを開発、テストする方法について説明する。 まず、以下の構成のプロジェクトを作成する。ディレクトリ構造とアンダースコア(hello_world)は変更しないこと。 hello-world # Our project folder
Common Lispは非常に単純でありながら簡単に拡張可能な構文を持つ高水準言語です。Lispは昔からAIプログラミングに活用されてきましたが、最近では記号処理ベースのAIから機械学習ベースのAIへと世の中の関心が移っており、Pythonなどが主に用いられるようになっています。 とはいえ、Common Lispは機械学習のような科学計算にも向いています(Common Lispが機械学習に向いていると考えるこれだけの理由)。 Common Lispの科学計算に適した特徴としては、例えば以下のようなものが挙げられるでしょう。 最適化されたネイティブコードを吐き出す優秀なコンパイラがOSSにも商用にも存在する 高水準言語でありながら低レベルな世界に降りていって最適化することもできるので、開発効率と実行効率のバランスを取りやすい Cライブラリを簡単に利用できるインターフェースがある この連載では
BatsはCLIで実行するUNIXプログラムのテストをするためのツールです。 Bash Automated Testing SystemでBatsとのこと。 Bats自体がbashで書かれていて、特にbashスクリプトのテストに最適なようですが、出力と終了ステータスをチェックするような単純な作りなので、CLIで動作するプログラムであれば何でもテストできるでしょう。 元々、ruby-buildのテストファイル眺めてたら拡張子が*.batsになってて、「なんだろこれ?」と思って見たら同じ作者のBatsというツールでした。 使ってみたら結構手軽で便利だったので紹介します。 簡単な例 以下の例を見れば大体どんな感じかわかると思います。 bc, dcの演算結果をチェックするためのテストですね。 #!/usr/bin/env bats @test "addition using bc" { resul
はじめに もはや何番煎じかわかりませんが、自分も以下のdrkenさんの記事で紹介されている10問の問題をCommon Lispでチャレンジしてみました。 AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ 標準入出力について 標準入力にはreadとread-lineを使用します。 read (HyperSpec) read-line (HyperSpec) 標準出力にはformatを使用します。 format (HyperSpec) Common Lispのformat関数 以下のWebサイトにわかりやすく記載されています。 逆引き Common Lisp クックブック Common Lisp 入門 いまから始めるCommon Lisp 第1問: ABC 086 A - Product (100 点) ABC 086 A - Product (
Rails がメイン言語の会社で SICP 読書会を始めることになったので、参加者の敷居を下げるために Scheme 処理系の準備メモです。1 どの処理系にするか? Scheme にはたくさんの処理系が存在していて2、最初はちょっと迷いました。 が、Web で調べたり、自社で SICP 読書会をやってる @lagenorhynque さんのおすすめもあって、Racket を使うことにしました。 選んだ理由 mac だと homebrew で簡単にインストールできる(弊社のエンジニアは mac ユーザが大多数を占めているので) DrRacket という IDE もついてくるので簡単にインタラクティブな開発が体験できそう3 SICP Collection というものが用意されていて、素の Scheme だと大変なところがカバーされているらしい(※ 要出典) インストール 処理系のインストール
TypeScriptでFizzBuzzしてみました。(target:ES2015以上) targetがES5以下だとArray#keys()が空オブジェクトになってrange返してくれないのにちょっとはまりました。 class Fizz { public static spec: Array<[number, string]> = [[15, "FizzBuzz"], [5, "Buzz"], [3, "Fizz"]]; public static *buzz(size: number) { for (const i of Array(size).keys()) { const [_, result] = Fizz.spec.find(([n, s]) => i % n === 0) || [0, i.toString()]; yield result; } } } Array.from(
※2014年あたりのまとめをベースにしているので少し古く改訂作業中です clack はじめてのClack - Common LispでWeb開発 - Qiita array-operations array-operations: 配列操作ライブラリ|独学 Common Lisp cl-inotify #:g1: inotifyの紹介 generic-sequences #:g1: generic-sequencesの紹介 Allegro CL Examples and Utilities: English-Word-Stemmer #:g1: Allegro CL Examples and Utilities: English-Word-Stemmerの紹介 Allegro CL Examples and Utilities: Starsim #:g1: Starsimの紹介 Alleg
Common Lisp のひとつである、ecl の http Get のサンプルです。 quicklisp.lisp のインストールが済んでいるものとします。 #! /usr/bin/ecl -shell ; ------------------------------------------------------------------- ; ecl_get.lisp ; ; Mar/02/2018 ; ; ------------------------------------------------------------------- (format t "*** 開始 ***~%") (load "~/quicklisp/setup.lisp") (ql:quickload :drakma) (defvar out_str) (setf out_str (flexi-strea
2018年3月5日, Phil Eaton もし以前にLispについて少し話を聞いたり、学校でSchemeを習ったことがあったとしても、Common Lispは、あなたが想像するものとは全く違います。Schemeは、関数型プログラミングで人気ですが、Common Lispは、理論的に純粋なプログラミング言語というよりも、実世界での利用を強く意識して設計されたプログラミング言語です。さらに、人気がある処理系のSBCLは、高度に最適化されたコンパイラであり、Javaに対抗できるものです。 部品を組み立てる Common Lispのシンボルは、第一級の変数(ラベル)であり、パッケージと呼ばれる名前空間に収められます。しかしパッケージは、ディレクトリを超える範囲は対処しません。ディレクトリを超えてソフトウェアを構成するには、ASDFの「システム」を使います。Common LispのパッケージはPy
tl;dr とてもいい感じに出来ていると評判のMetabaseですが BigQueryのドライバに少し問題がありました。 修正し、PRを送った所次のバージョン(0.29.0)に取り込んで貰える事になったので どんどんMetabaseを使っていきましょう! 注意 この記事の半分は、Metabaseが日本でもっと流行って欲しいという気持ちでできています。 もう半分は上手くいった事を自慢したい気持ちでできています。 改めて偉大な元記事様に感謝します。 https://qiita.com/acro5piano/items/0920550d297651b04387 どんな問題があって何に対応したの? 問題内容 MetabaseはBigQueryにクエリを送る事ができます。 (未検証ですがGUIからリクエストを送ってもクエリ形式になるんじゃないかな?)。 ただ、BigQueryの性質上大きなクエリを送
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く