surga Lab

開発したい!!

Flutter Firestoreで複数ドキュメントに渡るTransactionを張る方法

Firestoreのトランザクションを複数のドキュメントに張る方法です。 1つのドキュメントを読み取り、その後同じドキュメントで書くような場合は単純です。(例えばインクリメント) トランザクション内でgetした後にupdateもしくはsetすればいいだけですね。 fi…

Flutter AndroidとiOSでFirestoreトランザクションの挙動が異なる

FlutterでFirestoreトランザクションを試していた時にハマった話です。 現象 AndroidとiOSでFirestoreトランザクションの挙動が異なる Android : トランザクションに失敗しているのに成功として処理される Android : トランザクション中でthrowするとエラー…

Flutter Firestoreで分散カウンタを実装する

分散カウンタを簡単なカウントアップアプリで試してみます。 分散カウンタ 多くのアプリでは、いいね数やフォロワー数のためにカウントアップが必要です。 しかしFirestoreでは、制限上1つのドキュメントにつき1秒に1回しか更新することができません。 そこ…

Flutter Firestoreのサンプルを動かしてみる

FlutterでFirestoreを扱ってみます。 Firebaseの導入 まずはFlutterのプロジェクトにFirebaseを対応させます。 対応手順はこれ以上ないくらい公式に記載されていますので、割愛します。 ステップ4まで進めましょう。 firebase.google.com Firestoreの導入 pu…

Flutter cloud_firestoreプラグインを入れると64kエラーになる時の解決策

cloud_firestoreを試そうとサンプルを実行していたところ、以下の問題にぶつかりました。 現象 cloud_firestoreプラグイン導入後、ビルドが通りませんでした。 環境 Flutter/Android firebase_core: ^0.4.0 cloud_firestore: ^0.12.5+2 エラーメッセージ D8:…

Flutter 画像ロード時にプレースホルダーを表示する

Flutterアプリで画像を表示する際にロード画面を表示する方法です。 画像の表示 with ロード画面 Flutterアプリで画像を表示する方法は以前のブログで紹介しましたが、 インターネットの画像を表示する場合、少なからずダウンロードの時間が発生します。 ユ…

Flutter URL指定で画像を表示する

Flutterアプリでインターネット上の画像を表示する方法です。 画像の表示 インターネットから取ってきた画像を表示するシチュエーションはよくありますが、Flutterなら簡単に対応することができます。 使う画像はもちろんいらすとやです。 URLの指定 Image.n…

Flutter アプリに内蔵されている画像を表示する

アプリ内に登録した画像(assetsに登録した画像)を表示する方法です。 画像の表示 Flutterで画像を表示するにはいくつかの方法がありますが、 今回はアプリ内にあらかじめ画像を保管した画像を表示する方法になります。 使う画像は例によっていらすとやです。…

Flutter/Dart サンプルコードのコンストラクタでは何をやっているのか

Flutterの勉強を始めると下記のようなコードをよく見ると思います。 プロジェクトを新規作成した時のサンプルコードも同じ書き方ですね。 class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String ti…

Flutter ListTileでIconをタップした時だけイベントを発生させる

codelabsの「Write Your First Flutter App, part 2」ではタップをListTile全体で取得していますが、 codelabs.developers.google.com Tile全体のタップではなく、Iconのタップだけを認識するようにします。 結論 IconButtonを使う。 問題 codelabsのサンプ…

Xcodeがアップデートできなくなった時の解決策

Flutterへ入門しようと下記手順に従って設定していた時の話です。 Flutter入門しようと思ったらHigh Sierraだったのでアップデートで今日の自由時間終わった。— surga (@hisurga) 2019年5月29日 flutter.dev Xcodeがアップデートできませんでした。 環境 mac…

Cloud Firestoreでミニブログの構成を考える

NoSQLであるFirestoreでミニブログを作るときの構成を考えます。 Firestoreの組み方を勉強中ですので、自分の整理のためにも書いています。 ミニブログを考える 例として、ツイッターのようなつぶやきサービスについて考えます。 仕様 こんな感じでしょうか…

アクセスカウンタのデータベース設計

アクセスカウンタを作るときのデータベースについて考えてみます。 RDB 例えばCloud SQL/MySQLならこんな感じのテーブルでしょうか。 PVカラムをインクリメントしていけばカウントできそうです。 問題点 MySQLでは更新時にロックをかけます。 複数人が同時に…

EC2の機械学習環境が突然壊れる現象について

全く原因はわかっていませんが、何度か発生したので記します。 現象 EC2内の仮想環境(venv)で突然ライブラリ等の環境が無くなっている 経緯 AWS EC2 DeepLearning AMIの環境にssh接続していた場合、計算が終わればexitで抜けててインスタンスを止めますよね…

【DQN】強化学習でビットコインの価格予想をしてみる

学生時代にもML系について勉強していましたが、久々に1から始めてみようと思い立ちました。 しかし勉強したところで業務に利用することもないし、もちろんお金になりません。 だったら、ビットコインの価格予想で儲けることができればモチベも上がるんじゃな…

EC2インスタンスとローカルでファイルをやり取りする方法

AWSインスタンスへscpコマンドを利用してファイルを受け渡しします。 ec2のアドレスはインスタンス管理画面から"接続"を選択すれば確認できます。 ubuntuの箇所はインスタンスのOSによって変える必要があると思います。 ファイルのダウンロード scp -i 'pem…

GoogleAIYにAlexaを乗せてみる

Raspberry Pi Advent Calendar 2017 - Qiita参加記事になります。 GoogleAIYとAlexaとラズパイと 以前買ったGoogleAIY、 blog.hisurga.com 手持ちのラズパイで自由度無限大のスマートスピーカーを開発できるのは素晴らしいです。見た目もいいですし。 でもも…

Google AIY Voice Kitで私もスマートホーム時代に参入

ずっと前にGoogleがスマートスピーカー自作キット on ラズパイみたいのをMagPiの付録で発売したのですが、あまりの人気にどう頑張っても買えなかったんです。 が、ついにこの度再販ということで、わざわざヨーロッパから購入しました。 Google AIY Voice Kit…

littleBitsなR2-D2で遊びましょう

これです。 littleBits STAR WARS R2-D2 ドロイド・キット Droid Inventor Kit出版社/メーカー: littleBits発売日: 2017/09/01メディア: エレクトロニクスこの商品を含むブログを見る littleBitsで簡単に電子工作しながらR2-D2を作れる最高なキットになりま…

Web Bluetooth API + BLE Nanoでブラウザから通信してみる

ブラウザからBluetooth(BLE)が使えるで話題のWeb Bluetooth APIが少し前に正式リリースされました。 まだ発展途上感がありますが、今後に期待ができますね。 Web Bluetooth せっかく手元にBLE Nanoがあるので、今回はBLE NanoとブラウザをBluetoothで通信し…

16進数文字列をバイナリ形式に変換するpython3

こちら16進数文字列のファイルをバイナリ形式ファイルで吐き出すものになります。 バイナリデータが欲しいのに、なぜか文字列となっていたときに有意です。 import math fString = "48656c6c6f" // 文字列を16進数に num = int(fString, 16) // to_bytes // …

スマートフォンの画面を定期的にタッチしてみる

面白いものを買ったので試してみました。 www.switch-science.com これを使えばタッチしまくれます(?) 必要なもの Arduino UNO リレータッチボード 回路 非常にシンプルです。 5V流してEN端子にHIGH/LOW信号流せばいいだけです。 載せるまでもない画像。 タ…

ドメインをGoogle Domainsに移管しました

Web

一時期Googleがドメインを扱うと話題になり、 日本は対象外のおま国状態で話題になり、 多くの人が忘れているGoogle Domains 何時の間にか日本対応が完了していたようです。 Google Domains is … Googleが上位レジストラ 値段は普通?(.comは年1400円で若干…

DMM.makeに3Dプリンタの見積もりをしてみました

3Dプリンタの普及で個人でも「ものづくり」がしやすくなりましたよね。 でもさすがに3Dプリンタって5万とかするし、気楽には買えないです、、、 そこでFUSION 3Dで適当に、本当に適当に作ってみました。 モデルはこれに使えるやつ。 blog.hisurga.com 結果こ…

Webスクレイピングして野球の試合情報を取得する

とにかくベイスターズを応援したいので、Webスクレイピングで試合内容を取得してみます。 実装 python3でlxmlとrequestsを利用しました。 詳細はコメントアウトしてあるので、特筆することはないです。 スクレイピングは迷惑かけない程度に! #-*- coding: u…

Raspberry Piでモータ(ファン)を動かします

ラズパイのGPIOを利用してモータを動かします。 ピンの操作ができれば色々なことができるようになりますね。 私はこれを作る時に使いました。 blog.hisurga.com 環境 Raspberry Pi3 Python3 モータードライバー TB6643KQ: 半導体 秋月電子通商 電子…

帰って1人でもいっしょにDeNAベイスターズを応援してくれる物を作りました

仕事から帰ってビールを飲みながら野球観戦...最高ですよね? 最近ではホーム戦ならAbemaTVとかで見られるようになり、快適に野球観戦ができるようになりました。 ただしアウェイ戦は気軽に見ることができず、1人で一球速報を見るだけのつまらない物になって…

BLE通信の最長記録を狙ってみましたが結局置き手紙袋になりました

BLEといえば 省電力! ペアリングいらず! IoTに最適! とメリットだらけです。 ただし、大きな弱点として 通信可能距離が非常に短いことが挙げられます。 ほとんどは数メートル、頑張って30メートルあたりでしょうか。 ですが私は、その規格を、越えたい!! BLE…

Qiitaを始めましたので書き分けについて考えてみました

技術者が多く利用するQiita 私も始めてみました。 なぜ このブログ自体技術ブログとして開設し、今後も自分の資産として育てていきたいところではあります。 ただ自分の記事を振り返ると、 「これ詰まったところです。参考にどうぞ」といった記事がありまし…

Raspberry Pi 3をmastodon専用機にしてみました

結果から書きますと、問題なく動いています。 リモートフォローをほとんどやっていない低負荷状態なので、今後についてはわかりませんが、、、 Dockerを使わない選択 前回の記事ではDockerを利用してmastodonしようかと考えていましたが、 blog.hisurga.com …