taiki-t's diary

きぎょうにっき, React Native, Rails そして雑多な記録: The world is waiting for you to give it the meaning.

技術コミュニケーションでは「良いと思うので」に理由を添えて生産性を高めよう

「こちらの方が良いと思うのでこうします!」 「これはあんまりよくないと思うので」 というやり取りはよくある。自分も気を抜くとやってしまう。 これは暗黙的に「良い」の概念が共有されていると思いやってしまいがちだが、必ずしも共有されているわけでは…

ターミナルでgit grep して一括置換するコマンド

$ git grep -l 'search word' | xargs sed -i '' -e 's/search word/replacing word/g' こんな感じ。 search word, replacing wordはそれぞれgrepする語、置換後の語を指定。 git grep -lで対象の語が含まれるファイル一覧を取得、 | xargsでそれを sedコマ…

React Native Tab View with default index to 1

When Using React Native Tav View with defalut index to 1, I happened to face a strange behaviour; automatically swipes to index 0 sometimes when opening the scene. So what I did was to set initialLayout and it fixed it. Like this: const in…

React Nativeで画像のトリミング(cropping)

React Nativeで画像のトリミングができる。特に外部のコンポーネントを入れる必要はない。 標準の ImageEditor を使ってできる。 しかしながらいかんせんドキュメントが少ないのでここに記録も兼ねて残そうと思う。 ※ 記事執筆時に使用したReact Nativeのバ…

heroku で定期dbバックアップ

$ heroku pg:backups:schedule DATABASE_URL --at '02:00 Asia/Tokyo' --app your_app_name これだけだった。簡単 devcenter.heroku.com TimeZoneの表記はここから https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

React NativeのImageを使うときの注意

React Native のImageを使うときの注意 とりあえずImage要素にサイズ(widthとheight)は指定する。じゃないと表示されない。 バージョン: 0.44.0 追記: 2017/07/07: 0.47.0以降のバージョンでこの制約は消えそう。Using <Image> with nested content now causes warn</image>…

React Native のTouchableなんとか使うときの注意

TouchableWithoutFeedbackとか使うとき、 とりあえず内部の要素はTextだろうがImageだろうがViewでラップしておくのが無難。 余計なハマりポイントを回避できる。 バージョン: 0.44.0

試訳: combineReducers

Redux documentsの「Using combineReducers」の最初だけざっと試訳してみた。推敲してないので間違ってたら申し訳ない。とはいえ割と合ってると思う。まあやってみたのを手元に置いておくだけなのも勿体無いので置いておく感じ。改善は自由に。 combineReduc…

Lylicaというサービスをリリースした。

Lylica (りりか) というサービスをリリースした。iOSアプリで。 Lylica - その場のいまを共有を App Store で 「世界をもっとダイナミックにしたい」 そう思って作ってきた。きっかけは、昨年(2016)に翻訳書1を出版したことに遡る。 昼間は会社、夜は翻訳、…

メモ:React Native で e2eテストできそうな detox

https://github.com/wix/detox これ使えそうと思ったけど、Permission用Alert周りの処理で詰んだ。 工夫すればできそうだけどまた後ほどtryする。 導入自体はすごく簡単だった。 このIssueがcloseする頃にはそこらへんいい感じになってるのではと期待: githu…

react-devtoolsをReact Nativeで使う

React Nativeで開発でのデバッグにはNuclideを使っていたけど、react-devtoolsも使える。 インストール方 グローバルにインストールする場合 npm install -g react-devtools これでreact-devtoolsとterminalでやれば走る。 プロジェクトにインストールする場…

Mark Zuckerberg's Commencement address at Harvard

www.youtube.com What I thought listening to this is: “It’s not the world that gives you the meaning, the world is waiting for you to give it the meaning.”

GraphQL Mutation

Relay使ってての話なんだけど Mutationはできる限り単一責任にした方が、のちのユースケース変更時にコスト低そう リソースに対する状態変更は、Mutation名を動詞にしてidだけ送るとクライアントとサーバー側を疎結合にできて良さそう UpdatePostStateMutati…

はてなブログthemeのevergreenにサイドバーをつけた

つけたかったので #container { width: 1200px; } #container-inner { min-width: 1200px; } #main { float: left; max-width: 780px; margin: 0 auto; } こんな感じ。適当にやったらできたのでよかった。 まあ正確にはつけたというよりフッターを移動した、…

メモ: puma on heroku, worker と thread

web serverとしてpumaを用い、Railsアプリケーションをherokuで運用するにあたり workerやthreadという話が出てきたのでメモ。 ネタ元は: Deploying Rails Applications with the Puma Web Server | Heroku Dev Center Workers Workerとは pumaの文脈でいうw…

メモ: React Navigation を使い始める時に確認すると良さそうなこと (v1.0.0-beta.10時点)

Release v1.0.0-beta.10 · react-community/react-navigation · GitHub React Navigation V1.0.0-beta.10が出た。そう、React Navigationはまだbetaが取れてない。 使い始める前に現状どんな問題があるか確認しておくと時間を節約できると思う。 どこを確認…

Relay Modern rewriteについてのメモ

We still had that long backlog of ideas, but we knew that we were adding to the tail of the queue faster than we were shifting from the head of it. It was a scary prospect, but we came to the conclusion that it was time to burn it all down…

運がいいとか悪いとか

よく運気をあげるとかいう話を聞く。運をよくすれば物事がうまくいくとか。ただそれだけを聞くと眉唾というか実態のない怪しいものを崇めるような雰囲気が漂う。 運気をあげるために日頃の行いをよくしなさい、的な。 これ、運気っていうとよくわからないけ…

Sketch3 グラデーションでぼかす

かなり前にこんな記事を書いた taiki-t.hatenablog.com グラデーションでぼかす方法はまた今度紹介するなどと言いつつずっと書いてなかったので手軽に手順だけまとめておこうと思う。 四角を二つ重ねてかく。一つ書いて⌘ + Dすれば楽だろうか。 その二つの四…

西日暮里.rb 36回目「Electronではじめるアプリ開発」発売記念 LT 大会!」の記録

nishinipporirb.doorkeeper.jp 参加してきた。というか主催者の一人w 今回はオーガナイザーの一人であるじょうさん (@joe_re) が本↓を執筆したので記念LT会をした。 gihyo.jp テーマは自由。けれど本がElectronということもあり、かなーりfrontよりのLT会だ…

Relay Modernへの移行検討をした

結論: もう少しドキュメントとサンプルが増えてからにしよう(rcが外れる頃かな?) 背景 現在アプリを作っていて、フロント側の構成はReact Native + Relay + Reduxという感じだ。 (Relay Modern以前のバージョンはModernの登場によりRelay Classicと呼ば…

Grammarly cm の曲

Youtubeで流れていいなと思った Soul City の Here I come というやつらしい ↓ みたCM www.youtube.com 調べてみるとMarmosetという音楽出版社で配信している。映像に合わせるBGM向けのライセンス提供が主な業態らしい。個人で試聴するぶんには無料でダウン…

React Navigationにコントリビュートした

React Navigation, APIはいい感じなんだけど現状beta版ということもあり、プロダクションで使っていこうと思うとなかなか機能が足りない。 それで2017/4/7現在では、v1リリースに向けて最低限必要な機能を実装していこうという状態にある。(と信じている) …

おーい磯野〜 callback使ってる関数をPromiseでラップしてasync/awaitで書こうぜ〜

JS

例1 const sleep = (ms) => { return new Promise(resolve => setTimeout(resolve, ms)); } const something = async () => { await sleep(100) doSomething() } 例2 // クラスの中 getCurrentPosition(options) { return new Promise((resolve, reject) => …

Relay: viewerとかrootにあるのよく見るけどあれアンチパターンらしいよ

関連しそうな記述があるものをとりあえずまとめておく。 Possible optimization related to setVariables and Node · Issue #1370 · facebook/relay · GitHub Viewer ID and node interface implementation · Issue #1542 · facebook/relay · GitHub

Reactエレメント、コンポーネント、そしてインスタンス

React Components, Elements, and Instances - React Blog を読んだメモ エレメント(要素) エレメントは、コンポーネントインスタンスまたはDOMノードを記述する、普通のオブジェクト エレメントは、実際のインスタンスではない エレメントは、何を画面上…

React Nativeでのナビゲーションに便利なReact Navigation

3/17追記: beta-7時点で、ネストされたナビゲーター内からナビゲーター全体のstackをリセットできないという問題がある。ので、認証してトップに戻るとか、アップロード完了したらトップに戻るとかまともにできないと思うので辛そう。Specify reset key to d…

React NativeでiOSのランディングスクリーンに画像を設定する方法

という記事を書いた。 taiki-t.hatenablog.com だいたい図にした。constrainsの設定の時だけ、対象のオブジェクトからviewへcontrol + click してドラッグというのがわかりにくいかも。

React Native から S3に画像アップロード

という記事を雑にかいた。 taiki-t.hatenablog.com コードは参考になると良いと思う。

Presigned post to aws s3 from React Native

It took a longtime to figure out how to upload images to aws s3 using presigned post from React Native. The key part is to use FormData to construct a payload and post it with POST http method. PUTing FormData payload with pre-signed URL d…

Make commit messages great again.

github.com github.com github.com https://github.com/search?p=1&q=make+again&ref=searchresults&type=Commits&utf8=%E2%9C%93

React Nativeのリリース間隔は月次

facebook.github.io 2017/1 から。以前は2週間に一度だった。月末に新しいバージョンがリリースされるので、月の初めには新しいバージョンが利用可能になっている。また、リリース時にはすでにFacebookのプロダクションで2週間ほど運用した状態であるだろう…

Relay: containerのinitialVariablesに値を渡す

Introduction 非同期処理で何かごにょごにょした後、Relayにその値を使ってサーバーにリクエストを投げてほしかった。 やり方 Relay.createContainerを関数でラップする 雑な実装例: componentDidMount() { this._asyncFunc() } async _asyncFunc() { try { …

React Nativeの画像キャッシュ

プロローグ React Native使ってみた。Imageコンポーネント、毎回ネットワークから取得してるじゃん、これキャッシュしてくれないの?と思った。 調べた [0.32] Image caching broken · Issue #9581 · facebook/react-native · GitHub なんか壊れてんヨーとい…

浅草寺の思い出

数年前に浅草寺に行った。時期は忘れた。おみくじを引くところに年季の入ったお姉さん方が群がり、何やら盛り上がっていた。一人一人何が出たかを読み上げている。わたし小吉、わたしは吉。そして恋愛運がなんたらだとか。よくある光景だ。特に気にもとめず…

Show an image on launch screen in React Native iOS app

My long attempts to show an image on launch screen (or splash screen) in iOS app with React Native have failed so far and here is a solution I finally found. The key is to make use of LaunchScreen.xib and not to use bunch of launch screen …

React Native で文字を truncate

プロローグ Railsって色々ヘルパーが用意されていて便利。ActionView::Helpers::TextHelper#truncateもその一つ。これは、文字列を切り詰めて末尾に...と付けてくれる。そういうヘルパーみたいなのがRNにもあったら便利だな?と思った。そしたら、あった。 n…

S3のログから日付とアクセス元を漁るコマンドライン

プロローグ S3のログ、見たいと思ったんだよね。アクセス時間と、アクセス元を。 やったこと ターミナル開く aws-cliをいれて設定などする brew aws-cli, aws configure 詳しくは: http://docs.aws.amazon.com/ja_jp/streams/latest/dev/kinesis-tutorial-cl…

感情と雪解け

あれほど憎らしく思えた相手でも、その背景を知るとその気持ちがあっという間に変わることがある。それはさながら春の雪解けのように。実はその相手にものっぴきならない理由があって、たとえ自分がその発散の対象になったのは許しがたい事実だとしても、で…

は、ロボット

「誰が作ったとか、人間は夢が持てていいな。」 彼は誰に言うでもなく、虚空に向けて一人つぶやいた。芝の上に腰をおろし、膝を抱えている。さながら、孤独な人間のようだ。しかし彼は、ロボットだった。 遠い昔に、人間は人間と同等の知能を持つロボットの…

「この世界の片隅に」 みた

この世界の片隅に、を見てきた。Twitterやなんかで見てきた人の感想を読んでいるうちに、これは行かなければなぁという気持ちになり、どうしても見たくなったので新幹線の切符を買い東京に行って見てきた。地元ではやってなかった。 まぁ東京に用事があった…

どういうものを作っていきたいか、整理

よくサービスの目標とかで「人々を幸せにする」ってのをみる気がするし、俺も気をぬくと、「人が幸せにするサービスを作れたらいいなぁ」なんて漠然と思ってしまったり、言ってしまったりする。けれど、「幸せ」という指標は漠然としていて定量的にはかれな…

Carrierwave TypeError - no implicit conversion of nil into String on multiple upload

Carrierwaveで複数アップロードしようにもどうにもうまくいかない。 調べたあげく普通にIssueにあった。 mount_uploaderじゃなくてmount_uploadersを使うとのこと。 同じくs見落としてた… github.com

書くことでしか文章は生まれない

文章が先か、書くことが先か。 僕の場合、書くことが先だ。頭の中で書きたいことができるまで待っていると何も書けない。 けれど、一旦書き始めてしまうと堤防が決壊したかのようにとめどなく文章が溢れてくる。 必ずしもまとまった内容で出てくるわけではな…

良い文章は自分の中に

良い文章は自分の中にある。誰がなんと言おうと。 世の中には事実は一つしかないかもしれないが、真実は2つぐらいある。 一つは他人の中にある真実。もう一つは自分の中にある真実。 この二つの真実は必ずしもいつも一致するわけでもないし、そもそも一致す…

Photos from last week 2016-11-7 - 2016-11-20

Did some paintings. I like liquitex prime acrylic. expensive though. And went to see red leaves. It's getting colder day by day in Japan.

「えーと」と「あのー」の違い

http://www.ninjal.ac.jp/event/young/tanken/files/20150718_handout.pdf に載ってた 「えーと」は「計算中であること」 「あのー」は「言おうとしていることはきまっているけれども、その言い方を考えている」 ということを表すと考えられる。とのこと。 …

Twitterの検索結果からtweetのurl一覧を取得

$$('.time > a').map(v => v.href) ↑これをChrome の console に貼り付けてEnter consoleは、macだったら Shift + Command + C で開くと思う。 やってるのは、<time>要素内の<a>各要素からhrefを取得してる。マークアップに依存してるので、いつ使えなくなってもおか</a></time>…

Google Sheets API v4を適当に叩いて適当にデータをJSONで取得する

TL/DL; ここを読もう Introduction to the Google Sheets API | Sheets API | Google Developers (もっと長い) で やりたかったことは creator.aainc.co.jp を Google Sheets API v4 やりたいじゃん、みたいな。 v3から変わったこと API v4からはAPI keyを…

ブログの副題を変えた

「平日夜+土日でwebサービスを開発していく。その日記。」 としてたけど、諸事情でできていなかった。 で、諸事情は解消したが、今となっては別な諸事情で副題のコンセプトにはこだわらなくて良くなったので変えた。適当に。 諸事情についてはまたそのうち書…