webエンジニアの日常

RubyやPython, JSなど、IT関連の記事を書いています

渋谷から銀座まで歩いたら、東京にも綺麗なところあるんだって知った

先日、会社主催のイベント「メイプルバー」に参加してきました。

peatix.com

帰り、いつもなら電車でかえってるんですけど、今回は社長が歩くっていうから、僕も歩いて帰りました。社長と帰る場所一緒なんですが、別ルートです笑

地図を見て、最短距離だと大きい道路をただまっすぐ歩いていくだけですが、せっかくだから行ったことないところ行きたくて、少しだけ遠回りしてみました。

【ルート】渋谷-->表参道-->南青山-->乃木坂-->赤坂-->国会議事堂-->日比谷-->銀座(銀座オフィス)

地図上だとこんな感じです

f:id:s-uotani-zetakansu:20180424125127p:plain

続きを読む

1ヶ月のダイエット成果

こんにちは、さもです。1ヶ月半ほどブログ放置してました。

久しぶりに書きます。実はここ1ヶ月ほどダイエットしてましたので、方法と成果を書きたいと思います。

以前記事に書いたように、銀座のオフィスに住み着いています。

www.uosansatox.biz

妻とは一時的に別居しているので、食事も自分で制限できます!しかも住んでるところには腹筋台とダンベルもあり、ダイエットするには最適な空間なんです。

ダイエットを始める前は、体重79キロでした(身長は175cm)BMIでいうと、25.8で立派な肥満体系ですw

1ヶ月、食事制限とウォーキング、筋トレをしてみたところ、体重は72.8kgまで下がりました!約-6kgです。

体脂肪率は現時点で22.2%でした。体脂肪率はダイエット前に計ってなかったので減ったかどうかわかりません。

ダイエットの内容をもう少し詳しく書いていきます。

続きを読む

ヘルパーが太ってきたらデコレータでダイエット

画面へ表示するためだけのメソッドは、モデルには書かずに、ヘルパーに書く。というのはみなさんご存知のはずです。

ただ、そうすると今度はヘルパーが太ってくる。

最初はそこまで多くならないだろうと、一つのファイルに集めていたヘルパーメソッドたちが、徐々に増えてきて、どこにメソッドを書いたのかわからない、そんな経験ないでしょうか?

もし今その状況ならデコレータで解決できるかもしれません。

続きを読む

3月から銀座にある本社に住み始めました

こんにちは、さもです。

2月末から4月末までの約2ヶ月間ですが、銀座にある今勤めている会社の本社に住み始めました。

これを人に話すと「???」ってなるのですが、本社はマンションの1室で、下の絵みたいな感じになっています。

f:id:s-uotani-zetakansu:20180305130040p:plain

半分ぐらいのところから少し高くなっていて、高くなっているところの床下は人が六人ほど寝られるスペースになっています。

そこにマット敷いて、寝袋で寝ています。

寝袋に入ってしまえば結構暖かくて、いびきをかく人もいますが(僕も含まれてます)結構快適に寝れます。

シャワーも洗濯機も冷蔵庫もあって特に不自由なく暮らせます。

続きを読む

inverse_ofってどういうときに使うの?

Rails Guide の説明では

「inverse_ofオプションを提供していて、これを使うと双方向の関連付けを明示的に宣言することができます。」

とありますが、正直言ってることがよく分からんという方、そして自分へのメモです。

例えば、次のようなモデルのとき

(注)あくまでも例なので、この設計がどうとかは置いといてください

class User < ApplicationRecord

  has_one :profile
  accepts_nested_attributes_for :profile, reject_if: :all_blank
end

class Profile< ApplicationRecord
  belongs_to :user
end

このモデルで、例えば、Profileの方に、Userのあるカラムが存在するときだけ発動したいバリデーションがあるとします

続きを読む

最大値よりちょっと大きくてキリの良い数値を出力せよ

ここに、ユーザー登録数の推移が配列であります。[12,45,112,345,343,340]

これをグラフに表示する際に、配列の最大値より少し大きくてキリの良い数を出力したい。

そんな要望があったときの実装例です。

  def user_count_upper_bound(array = [0])
    upper_limit = array.sort.last
    return 0 if upper_limit <= 0
    num = upper_limit * 1.1
    digit = 10 ** Math.log10(num).to_i
    rank = num / digit
    19.times do |i|
      if  0.5 * (i + 2) > rank
        return (0.5 * (i + 2) * (10 ** Math.log10(num).to_i)).round(0)
      end
    end
  end
  • 実行例
最大値/上記メソッドの返り値
125/150
780/900
1250/1500
7600/8500
10000/15000
45000/50000
670000/750000

React Nativeアプリをビルドする手順(Android)

f:id:s-uotani-zetakansu:20171128150634j:plain

はまるところが多かったのでメモです。

Expo(CRNA)で作ったことを想定しています。

まずは、

create-react-native-app UpTest
cd UpTest

で適当に作ります。ただし、名前「UpTest」はのちのちパッケージ名になるので、複雑な名前にしておかないと、リリース時にコンフリクトしてリリースできなくなるので注意です!

続きを読む