サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
qiita.com/kiyotaman
システム構成 以下の様なシステム構成イメージで準備します。 Branch:productionへのPR mergeが完了したら、Githubに設定されているwebhook経由でCodePipelineを呼んで、最終的にs3にReactのソースを保存します。 そして、CloudFront経由でアプリをブラウザーに起動する様にしておきます。 Githubにレポジトリを作成 Reactの準備がされている前提で、まず、Githubにリポジトリを作成し、必要なソースコードをプッシュしておきます。 productionブランチを作成 Branch:masterからBranch:productionにPull Request(PR)がマージされた時に、CodePipelineを呼んで本番化をしたいので、productionブランチを作成しておきます。 Branch:masterにproductionと入
SNSに投稿しようとしている料理写真に対して、みんなの反応がよいかどうかを予想してくれるAPIをAWS API GatewayとLambdaで作ってみたAWSlambdaChainerAPIGateway 目的・背景 http://snapdish.co というサービスを開始して数年、カメラロールに大量の料理写真があります。でも、いつまでたっても私の撮影センスがいまいち。 そこで、「いい感じの写真だよ!」気軽に教えてくれるAIくんに助けてもらえなかなと妄想が膨らんできたので、作ってみちゃいました。 学習データの準備 データ収集のポイント マンパワーに依存するデータ収集は非現実的でコストが高いので絶対やらない データ収集の方法 SnapDishには、約1000万以上の料理写真があります。 そして、評判が良かった写真やリアクションがあまりなかった料理写真や規約違反の料理ではない写真があります。
はじめに Pythonで開発を進める場合、SystemにインストールされているOS標準のPythonや、OSのパッケージ管理ツール経由で入れたPythonバージョンは使わないでおきましょう。理由として、開発が、それらのPythonやそのモジュールに依存してしまい、依存関係を気にせず自由に開発できなるからです。 Pythonのインストール先/opt Filesystem Hierarchy Standard(FHS)に従うと、/usr/localは、システム管理をする時にローカルで利用するソフトウェアをインストールする領域になります。 /optは、 付属(add-on)で必要なソフトウエアをインストールする領域です。つまり、FHSに従うと、/optが適当ということになります。 ubuntuで直接インストール 環境準備 # apt-get で必要なパッケージをインストールする $ sudo a
SnapDishではDBにMongoDBを使っている。バージョンが1.4ぐらいの時から使っていて、色々と試行錯誤をしながら使ってきた。不勉強もあり今だに負の遺産が残る中、現在開発しているサービスでMongoDBをどのように利用したらよいか再度考えてみることに。 振り返るとやはりスキーマデザインが常に一番悩むところ。ただ、悩んでいる時間が惜しいので、決断を早くするために、スキーマの設計をするにあたり一定の考え方を設けることに。 それで、できるだけシンプルにということを念頭に、今更ながらだけど 3つのポイント にまとめてみることに。 様々な意見や議論のある領域だと思うので、これを読んだ方で、「この場合はどうなる?」や「ツッコミ」などあれば、ぜひコメンントや意見を頂きたところ。今後の参考したい。また、「その考え方はこういうことだよ」という、適切な表現や言葉があれば教授してもらいたい。 まず、、、
復習がてらRaspberryPiで遊ぶことに。RaspberryPiにWifi USBを2つ差して、片方はWifi AP、片方はWifiのクライアントにしてみた。 Wifiに繋がったAPができる。 ちなみに今これを書いている環境は、、、、ざっくり、、、 pc <-> raspberrypi wifi ap <-> pockewifi <-> interent 意味あるのかないのかぁ、、、で繋いでみている。 とりあえず、うちはLAN線が繋げるルータとやらが無いので、自前のマックにdhcpとdns upして、LANスイッチハブ経由でmacとraspberry piを繋いで、sshでraspberrypiにログインして作業することに。 自宅は光も繋がっていない、低速pocketwifiとau 4gが外に出るための手段。 家遅い環境に慣れておくと、会社の環境がまだマシなので、会社にいく喜びが一つ増
ELB s3 Log + Fluentd + Elasticsearch + Kibana + Ubuntu 14.04 LTS PV + EC2 on AWSUbuntuFluentdelbElasticsearchKibana ELBのログをs3に置いていたので、最近よく見かける方法で、解析してみることににした。 Elasticsearchがどんな感じで動くかまだ把握できていないのですが、以下の手順でサーバーを構築し動かしてみることにした。 久々にサーバーを設定するので、基本的な設定もメモすることした。 構成概要 ELB -> s3(log storage) <-> Fluentd -> Elasticsearch -> Kibana <- Proxy -> End Users 作業手順
Unittest や Pytest などで足りるかなと思っていたけど Tornado の Testing Framework を調べてみることにした。Tornado HTTPServer を テストスクリプト内で起動して、Tornado Mock Server と言ってよいでしょうか、動かしてテストができるなど色々と便利な機能があり助かることが分かったので、早速実装テストしてみることにした。その時の備忘録としてサンプルコードをまとめておくことにした。今回試したのは2.4系なので若干情報が古かったりするかもしれがないが、基本的なことは変わらないはず。 サンプルコード #!/usr/bin/env python # -*- coding: utf-8 -*- # 必要モジュールを import import tornado.testing import tornado.web import m
const-rgx=[a-z_][a-z0-9_]{2,30}$ const-name-hint=[a-z_][a-z0-9_]{2,30}$ include-ids=yes symbols=yes disable=W0142,C0111 を指定、W0142は **kwargs などの引数のワーニングを出さないようにする設定。 disableの設定をいじって何をチェックするかなど調整することができる。 PyLint メッセージ一覧 出力のフォーマットについて メッセージタイプ: 行:[オブジェクト:] メッセージ 主なメッセージタイプ説明 (C) convention, コーディング基準まもってなくねぇか? (R) refactor, リファクタリングが必要じゃない? (W) warning, Python特有の問題かも? (E) error, バグがあるかもよ? 使い方例 $ pylin
vi ~/.vimrc " bundleのディレクトリ指定 set runtimepath+=~/.vim/bundle/neobundle.vim/ " neobundleを読み込む call neobundle#begin(expand('~/.vim/bundle/')) " neobundle を管理 NeoBundleFetch 'Shougo/neobundle.vim' " **** 導入するプラグイン **** NeoBundle 'Flake8-vim' NeoBundle 'davidhalter/jedi-vim' NeoBundle 'hynek/vim-python-pep8-indent' NeoBundle 'Townk/vim-autoclose' NeoBundle 'scrooloose/syntastic' " neobundle を閉じる call
仕事じゃなかったら、めんどくさくて考えたくないが、現在、会社の方針で開発力の向上の為の案を考える事に。 後ろ向きな理由で大変不甲斐ないけど、まぁ、仕方ない。 で、 「開発力向上」って? 自分としての理解は、アウトプットの最適化が開発力を高める為の近道だと考えてるに至っている。 なぜか、それは、限りなく、何となく直感。 まずは、その何となくを切り口に深めてみる事にした。 最適化する為には、、、 えっと、 やはり、開発はより多くの時間を使いたい。 そして、出来れば効率的に使いたい。 結果、タイムマネージメントが重要性が語られる。 その為に、いろんなツールがあったり、やり方がある。 いろんなものを駆使して最短、最速、最大、最高のアウトプットを出す。 そして、良いも悪いも、評価を受ける。 ただ、そのアウトプットの為に、ついついオーバーワーク(つまり普段より多くの時間を使ってしまう)ことがある。 そ
// Playground で動作の確認をしながら試すとよいと思います // まずは Hello world から println("Hello, world") print("print は改行が無い ") println("こんにちは") println("行:" + String(__LINE__)) println("列:" + String(__COLUMN__)) // ファイル名: __FILE__ // 関数やメソッド名: __FUNCTION__ // などのリテラル表現がある /** * 値につてい */ // var と let がある // var が 変数 // let が 定数(最初の一度しか定義できない) var myVariable = 42 myVariable = 50 let myConstant = 42 // myConstant = 50 //
クラス、構造体、列挙型でインスタンスを生成するときに行う処理 Swift のイニシャライザーの特徴は値を return しない Setting Initial Values for Stored Properties(保存型プロパティの初期値を設定) 保持型プロパティの値は初期化中に必ず値を定義しないといけない Initializers(初期化) init() が一番簡単な記述の方法 temperature は保持型プロパティなので、 init() 内で値を指定しないとエラーになる struct Fahrenheit { var temperature: Double init() { temperature = 32.0 } } var f = Fahrenheit() println("気温の初期値 \(f.temperature)°") // prints "気温の初期値 32.0°
プロパティはクラスや構造体や列挙型に値を紐づける役割がある 定数や変数をそのインスタンスの一部として保持する 算出された(setter, getter)算出プロパティは値を保存するるというより計算する 算出(setter, getter)される算出プロパティはクラスや構造体や列挙型にある 値保存する保存型プロパティはクラスと構造体にある 算出と保存プロパティは特定の型のインスタスと紐づく タイププロパティはそれ自体とも紐づく プロパティオブザーバー定義してプロパティの変更を監視することができる カスタムアクションに返答することができる 自分で定義した保存プロパティをオブザーバーに追加すこともできる スパークラスから継承することもできる 以下、下記をみたほうがわかりやすい Initialization の章でも他の解説があると思う Stored Properties(保持型プロパティ) ある
列挙法のメンバー値、Nort, South, East, West、を定義 caseは新しい行の始まりを意味する NOTE SwiftではC言語やObjective-Cとは異なりデフォルトで整数値がセットされない 上記の例でいうなら、North, South, East, West にそれぞれ、0, 1, 2, 3 と定義されない 各々 CompassPoint.型の明示的な独立した値として定義される (,)カンマ区切りで一行で書く事も出来る
The Swift Programming Language - Classes and Structures(クラスと構造体)をまとめるiOSSwift クラスにはプロパティ、メソッドを組み込む事ができる クラスや構造体をつくる時、インターフェースや実装コードを含むファイルを必要としない ファイルを分割しないでよくて、クラスや構造体は一つのファイルに書くことができる 外部から参照できるインターフェース自動的に使えるようになる クラスと構造体の共通点 値を保持する事ができるプロパティの定義ができる メソッドを定義して機能を提供できる 添字を定義してそれらの値にアクセスできる イニシャライザーを定義してその中で初期設定ができる 実装を継承して機能性を高めることができる プロトコルに従って基本的な機能を提供することができる 詳細は Properties, Methods, Subscripts
変数(vairable)と定数(constant)がある var と let をつかって宣言できる tuple も追加。tuple によって、異なる型の値を一つにまとめて function 戻り値に設定することができる もう一つ大きな特徴があって、 optional types 不在値?(the absence of a value)というのがあって、nil pointer と似ている オプションを使うと、"valueが存在して、かつ、 x と同等" or "valueが存在しない" を評価できる クラスだけでなくて、全型に対して使える nil より安全に使える。Optionals のセクションで後述してある この optinals は、 type safe 言語として代表的な例とのこと Constants と Variables(定数と変数) 定数:一度しか定義できない 変数:後に別の値
C言語の基本を踏襲している 算術ようの演算子(+,-,*,/,%)は、値が overflow した時にエラーになるのを防ぐ処理ができる Advanced Operators で後述してある * 簡単な例 var potentialOverflow = Int16.max // potentialOverflow は 32767 と等価, Int16 の最大値を保持 potentialOverflow += 1 // 最大値に 1 を足すので overflow エラーになる var willOverflow = UInt8.max // willOverflow は 255 と等価, UInt8 の最大値を保持 willOverflow = willOverflow &+ 1 // willOverflow は 0 になる 後、Cとは異なる所で、残余演算(remainder:%)は floa
The Swift Programming Language ぼちぼちアップデートして行く予定 内容もぼちぼちあつくしていきたい About Swift(Swiftって) Swift Tour(Swift ツアー) The Basics(基本) Basic Operators(基本演算子) Strings and Characters(文字列型、文字型) Collection Types(集合型、Array とか Dictionary) Control Flow Function(関数) Closures(クロージャー) Enumerations(enum列挙型) Classes and Structures(クラスと構造体) Properties(プロパティ) Methods(メソッド) Subscripts(サブスクリプト) Inheritance(継承) Initialization
このページを最初にブックマークしてみませんか?
『qiita.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く