2019-01-01から1年間の記事一覧

2019年ふりかえり

やったこと・あったことの羅列 1月 よちがや.rbに参加。この時がZenshin.webやTama.rbや今のコミュニティ参加のきっかけになったので大変感謝している 転職(to前職)することを決めて、何度かカジュアル面談 2月 Zenshin.webの徳丸本輪読会でだいたい週次で発…

Dartで同じオブジェクトであるかの確認をする

Dartでシングルトンのクラスを見ている時に、インスタンスが同じオブジェクトであるかどうかを確認してみたくなりました。 Rubyだと、obj1.equal?(obj2)でチェックができます。 'Ruby'.equal? 'Ruby' # => false もしくは、オブジェクトIDを取得してみてもい…

firebase_storageでPermission denied対応

firebase_storageの扱い方で数時間を溶かしたので、同じような人が出ない為にまとめました。 TL; DL よくない例 FirebaseStorage _storage = FirebaseStorage(app: myapp); final ref = _storage.ref().child(dirname).child(filename); よい例1 FirebaseSto…

Ruby2.7の新機能PatternMatchingが最高でした

RubyKaigi2019で聞いたRuby2.7から入るPattern Matchの機能に感動したのですが、セッション中は理解しきれない部分があったので、スライドを読み、コードを動かしてみました。 そしたら改めて感動した、という記事です! speakerdeck.com スライドのはじめに…

RubyKaigi2019に行ってきました

すっかり遅くなりましたが、先月、念願のRubyKaigiに行ってきました! rubykaigi.org RubyKaigiは毎年開催されています。 実は去年の仙台も行こうかどうしようか迷って、「わたしにはまだ早いか…」と行くのを取りやめたのでした。 今年は初参加してすごく良…

RubyKaigi2019タイムテーブル徹底解説聞きかじりメモ

先日RejectKaigiに行って参りました! pixiv.connpass.com 目玉企画として目前に迫ったRubyKaigi、オーガナイザーの松田明さんと高橋会長によるRubyKaigi2019タイムテーブル徹底解説があったので、できる限りメモしたものを書かせていただきます。 メモでき…

Dartのコンストラクタでインスタンスメソッドを上書いてインスタンス変数を変更したかった(未解決)

タイトル通りなのですが、結論から言うと、現時点ではできないと思います。 きっかけはありがちなこんなコード。 class AwesomeButton extends RaisedButton { int _index = 1; AwesomeButton() : super( child: const Text('Awesome!'), onPressed: () { pr…

analysis_options.yamlをカスタマイズする(3)

analysis_options.yamlのカスタマイズ、3回め。 今日はerrorsについてです。 公式ドキュメントはこちら。 さて、analysis_options.yamlが面白いなと思うのは、チェック基準を厳しくもできるし、ゆるくもできるところ。 analyzer: errors: missing_required_p…

analysis_options.yamlをカスタマイズする(2)

昨日の続きで、analysis_options.yamlの項目たちの説明です。 昨日の復習も含めて書いてゆきます。 analyzer: strong-mode: implicit-casts: false implicit-dynamic: false 動的型付け・型のキャストを許可する項目です。どちらもデフォルトはtrue。 動的型…

Dart DevToolsの使い方

ウィジェットを並べていくFlutterは、ウィジェットのネストが深くなりがち。 どのウィジェットのHeight指定がうまくいってないの…?を確認したくなった時とか、ウィジェットの構造を確認したくなった時に便利なのがDart DevToolsです。 DartDevTools - Getti…

analysis_option.yamlをカスタマイズする

VSCodeやAndroidStudioを使っていると、Dart Analysis Serverが構文エラーをチェックしてくれます。非常に便利な機能ですが、これをカスタマイズできるのがanalysis_option.yaml。 Customize Static Analysis - Dart pubspec.yamlと同じディレクトリに置いて…

FlutterでDialogの表示を変更できなかったお話

今日はFlutterのダイアログのお話。 ダイアログの中にテキストフィールドを準備して、バリデーション違反があったらエラーメッセージを追加したいということがありました。 ダイアログの表示自体はSimpleDialogやAlertDialogを使えばできるのですが、表示の…

FlutterでEXCEPTION CAUGHT BY RENDERING LIBRARYが出た時の対応方法

久々Flutter。 今日のお題はEXCEPTION CAUGHT BY RENDERING LIBRARYエラー。 読んで字のごとく、レンダリングに関するエラーです。 例として、こんな画面を考えてみます。 スクロールを検知して_currentIndexを設定 floatingActionButtonタップで_awesomeLis…

Dartのカスケード記法(..)はRubyでいうtap

時々見かけるDartの謎な記法、カスケード記法。 どういうものかというと、..shuffle()みたいに、.をふたつ重ねる記法です。 void main(){ var hoge = [1,2,3]; print((hoge..shuffle()).toString()); } Rubyを始めたばかりの頃も思ったのですが、こういうの…

Flutterで画面遷移を実装する

昨日の続き。BottomNavigationBarの画面遷移を実装します。 といいつついきなりBottomNavigationBarはさておいて、画面遷移の方法はどうやら大きくわけて3つあるようです。 Navigatorクラスを使ってpush/pop ウィジェットの切り替えを行う PageControllerを…

FlutterでbottomNavigationBarを実装する

ネイティブアプリでよく見る、画面下部にあるナビゲーションバーのことを、ボトムナビゲーションバーというそうです! ナビゲーションバーだとアンドロイドで言うと「◀」「●」「■」が並ぶエリアと呼び方がかぶってしまうので、「ボトムナビゲーションバー」…

Gitでユーザ名とかパスワードを求められた時

Git

新しいパソコンでGitの設定を間違ったり忘れたりしていて、少し戸惑ったのでメモ。 git pullでPermission denied $ git pull git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the…

Androidの仮装端末からインターネットに接続できない時の対処法

今日は(も)小ネタ。 Androidアプリの開発中、たまによくある(らしい)Wifiがつながらない事案。 そんな時はapp/src/main/AndroidManifest.xmlに以下を記述します。 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.hoge_app"> <uses-permission android:name="android.permission.INTERNET" /> アプリのインターネットへの接続を行うこと…</uses-permission></manifest>

間違ってremoteにpushしたファイルを削除したい時

Git

誤ってパスワードなどの秘密情報が含まれたファイルをremoteにpushしてしまった時。 普通にgit rm hogeしただけだと当然ながら履歴が残ってしまうので、履歴ごと改変したい時のやり方です。 リモートの履歴を改変することになるので、チーム開発の際は混乱が…

入門!アトミックデザインに行ってきました

今日は@nrsさんのAtomicDesign入門に行ってきました! 振り返りと理解の確認のためにまとめを書かせて頂きます。 登壇資料はこちら。 speakerdeck.com AtomicDesignとは モジュール分割を基本としたデザインシステム(デザインの指針・デザインの共通言語)の…

Flutterでgoogleにログインする

毎日Flutter。 今日はFirebaseで認証をします。 Pubはこれ(firebase_auth)ですね。 google_sign_inを追加する まずはgoogle_sign_inを追加します。 pubspec.yamlに下記追記して、flutter packages get。 dependencies: flutter: sdk: flutter image_picker: …

FlutterでFirebaseのStorageを使う〜後編〜

昨日(FlutterでFirebaseのStorageを使う〜前編〜)の続きです。 AndroidXに対応する さて、昨日、Firebaseを使うようbuild.gradleに設定を加えたところ、大量のエラーが出てビルドができなくなりました エラーメッセージ中に「ここ見てね!」とリンクが記述さ…

FlutterでFirebaseのStorageを使う〜前編〜

先日Flutterアプリにカメラボタンをつけましたが、写真を撮ったその後の処理がなかったので、今日は撮った写真をFirebaseにつないでアップロードしてみます。 ちなみにFirebaseとは、Googleが開発・提供しているmobile Backend as as Service(mBaaS)のこと。…

Dart言語の3つのコンストラクタ

少しずつFlutterに慣れてきたところで、Dart言語も少しお勉強します。 今日はコンストラクタについて。 Dartには三種類のコンストラクタがあるそうです。 生成的コンストラクタ ファクトリ 定数コンストラクタ DartPadというブラウザ上で実行できるREPLがあ…

Flutterアプリにimage_pickerを使ってカメラ呼び出しボタンをつける

心はRubyistなのですが、毎日Flutterを触っているので今日も今日とてFlutterネタ。 Flutterといえば今日小田急線のロゴを見かけて、「Flutterのアイコンと似てる!!」とテンションがあがったのですが、帰って確認してみたら共通点は三角形ということと水色…

Flutter tutorialで簡単なアプリを作る

Flutterの環境構築が終わったので、早速Tutorialをやっていきます。 記事はVSCodeのていで書いているので、他のアプリの方は適宜読み替えをどうぞ お題は'Startup Name Generator'。要件としてはこんな感じ。 スタートアップ企業の名前が並ぶ ユーザは名前を…

セッションCookieのHTTP Only属性とSecure属性の違い

先日セッションにまつわる言葉についてまとめましたが、ふと表題の件も理解が曖昧だなと気になったので調べてみました。 HTTP Only属性とは cookie のスコープ(参照・操作の権限)を HTTP リクエストに制限するもの CookieのSecure属性/HttpOnly属性の指摘と…

はじめてのFlutter〜環境構築後編〜

Flutterの環境構築のお話、後編です。 前編はこちらからどうぞ。 Steps Flutter SDKのインストール Android Studioのインストール <-いまここ XCodeのインストール DLに時間がかかるものリスト Flutter SDK Android Studio (Component, Gradle, 仮想端末イメ…

はじめてのFlutter〜環境構築前編〜

新しくReactNativeを使う予定だったのですが、予定変更でFlutterでやるよ!ということになったので、Flutterはじめました。 ので、今日はその環境構築メモの前半戦を記載していきたいと思います。 DLに時間がかかるものリスト 先にDLをしかけながら読んでい…

セッションにまつわる言葉について整理してみたお話

Webアプリケーションの開発に携わっていると当たり前のように見聞きする「セッション」ですが、徳丸本輪読会でセッション攻撃の対策をまとめていて、ふと理解があやしいなと思ったので、改めてまとめ直してみました。 セッションとは? ユーザの状態を覚えて…