自己完結

完全に雑記

2017/09/23

色々あって嫁が退院しました。

rails

  • jsファイルはAssetsに入れたら、AssetsPipelineとかいう仕組みで使えるようになるらしい。細かい事はまた調べる
  • <%= %> とすると結果が出力されるから気をつける
  • oauthにはomnioauthを使った。 
  • twitterへ飛んで認証もらったら、コールバックでトークンもらってあれこれすればいいぽい。 完全に理解した。(わかってない maji de)

ということでログイン機構がついた。まあ、ログインしたユーザの情報はまったく表示してにゃ〜からわからんけどね。 ついでに echo-js で遅延読み込みを追加した。 とりあえず、あとは無限スクロールとレイアウトとかとかかな。

その他

つーか前々から聞いてたけど、ようやく色々調べたよ、twitterのディスプレイガイドライン 実質API取得情報の使い方を強制するガイドラインだし、ファボを扱う都合上都合上絶対公開出来ないアプリだなあ。 怖いな〜戸締まりしとこ

2017/09/15

今日あった事

  • テストをしてました。

rails

前略、Twitterのファボ(死語)画像をもりっと出すアプリを作ろうと思った。 昨日まででとりあえず画像がもりっと出るようになったが、ページめくり的な事はできなかったのだった。

ということで超適当なpagerを作った

twitter_controller.rb

#!/usr/bin/ruby
# coding: utf-8

class TwitterController < ApplicationController
  def show
    Dotenv.load

    client = Twitter::REST::Client.new do |config|
      config.consumer_key = ENV['Consumer_Key']
      config.consumer_secret = ENV['Consumer_Secret']
      config.access_token = ENV['Access_Token']
      config.access_token_secret = ENV['Access_Secret']
    end

    count = 200
    is_blank = params[:max_id].blank? && params[:since_id].blank?
    is_next = !params[:max_id].blank?
    is_prev = !params[:since_id].blank?

    if is_blank
      fav_tweets = client.favorites(count: count)
    elsif is_next
      fav_tweets = client.favorites(count: count, max_id: params[:max_id])
    elsif is_prev
      fav_tweets = client.favorites(count: count, since_id: params[:since_id])
    end

    @result = []

    fav_tweets.each do |tweet|
      if !tweet.media.blank?
        tweet.media.each do |media|
          @result << media.media_url_https.to_s
        end
      elsif !tweet.urls.blank?
        tweet.urls.each do |url|
          @result << url.url.to_s
        end
      end
    end

    @first = fav_tweets.first.id
    @last = fav_tweets.last.id
  end
end
  • max_id を指定すると、そのIDを含まず次のツイートからカウント分ツイートを取得する
  • since_id を指定すると、そのIDを含まず前のツイートからカウント分ツイートを取得する

  • params[:hoge] get時のパラメタを取得するぞ!

で、Viewはこう show.html.erb

<% if @result %>
  <%= @result.each do |url| %>
    <%= link_to image_tag(url, {width:100, height: '25%'}), url %>
  <% end %>
<% end %>
<% if @first %>
  <%= link_to '前へ', controller: 'twitter', action: 'show', since_id: @first %>
<% end %>
<% if @last %>
  <%= link_to '次へ', controller: 'twitter', action: 'show', max_id: @last %>
<% end %>

とりあえず…… ページめくりは出来たぞ…… これが良いのか悪いのかもわからんが……。

2017/09/14

今日あった事

  • ひたすら人力でデグレテストを回す。テストコードなんてもの弊社にはない、人力アタックだ!
  • 雑務は毎日降ってくるんだなあ みつを
  • 口頭でばっと説明されて、数分後に忘れた。言葉じゃ覚えられないのでチケット切って欲しい(クズ)

rails メモ

昨日言ってた html をViewに吐く方法

html_safe を使うと良いみたい。ただ、セキュリティー的にどうなんとは思う。 今回みたいな oEmbedAPIの返す html を貼り付けるだけなら、問題ないんだろうか?

そういう用途でなく、Controllerの値を元にどうこうするなら、 基本的には link_to_text とかのヘルパーを使うべきみたいだなあ

TwitterAPI

ファボった画像をばばっととりあえずみたいなあ、という所から適当に作ってみている。 昨日は少し時間をかけて oEmbedAPI? を調べたが、 結局 TwitterAPIでメディアのURLが取れる事がわかったので、oEmbedAPIは不要となった。

  def show
    Dotenv.load

    client = Twitter::REST::Client.new do |config|
      config.consumer_key = ENV['Consumer_Key']
      config.consumer_secret = ENV['Consumer_Secret']
      config.access_token = ENV['Access_Token']
      config.access_token_secret = ENV['Access_Secret']
    end

    fav_tweets = client.favorites(count: 100)
    @result = []

    fav_tweets.each do |tweet|
      if !tweet.media.blank?
        tweet.media.each do |media|
          @result << media.media_url_https.to_s
        end
      end
    end
  end
  • blank? : railsのメソッド? nilやら空文字やらだったら trueとなる。便利そう
  • array.each do |hoge| : do end 構文便利すぎじゃない?超良い
  • to_s : いわゆる to_string()
  • Dotenv 環境ファイルを用意して、そのファイルの記述内容をあたかも環境変数かのように扱える便利なやつ
  • client.favorites(count: 100) : 100件ファボを取得する

で viewを…

<% if @result %>
  <%= @result.each do |url| %>
        <%= image_tag url %>
  <% end %>
<% end %>

とすると…… とりあえずズラッとエッチな原寸大画像が並びました!

きったね

とりあえず明日はこれを整理して、見栄えを良くしようかな

2017/09/13

今日あった事

railsメモ

Railsでgemを追加する方法

  1. Gemfileに欲しいgemを追記する
  2. Bundle install する 以上

簡単だなあ、C++も見習って欲しい

サーバ起動時の設定

Application.rb にかけば良い

その他

TwitterのoembedAPIのレスポンス jsonのhtmlをViewに渡して描画して欲しいんだけど、タグがそのまま書き込まれちゃって出来ない。 エスケープされてるのかなぁ、なんかやり方があるんだと思うが、今日のところはわからんのであった。

ひとまず明日には自分のファボ一覧をページに吐き出したい……。

2017/09/12

今日あった事

  • 会社ではいつも通り作業を行った
  • 課題の起票作業って結構時間食われる
  • 着手しようにも着手できない作業が地味に頭に残ってるの辛い

今日のrailsメモ

view

Viewには色々と便利なビューヘルパーと呼ばれるものがある

ビューヘルパーには色々とタイプがあるらしい _tag はModelとは無関係のデータを扱う汎用的なヘルパらしい。 他にも _for はモデルオブジェクトを編集するのに特化しているそうだ。 あとは、 _tag無しのFormヘルパー、後は t.で呼び出す f.Formヘルパー

なんなんだ

<%= form_tag({controller: :address, action: :show}, id: :fm, class: :show) do %>
    <label for="keywd">検索郵便番号</label>
    <%= text_field_tag :ziphead, '', size: 3 %> : <%= text_field_tag :ziptail, '', size: 4 %>
    <%= submit_tag '検索' %>
<% end %>
  • form_tag 基本的には formタグをよしなにするやつ

  • text_field_tag テキストフィールドをよしなにするやつ

  • submit_tag サブミットを… 

で、postするとなれば受け取る側やらルート設定が当然必要になったので、 この間作った郵便番号表示する showページと 郵便番号を入力してpostする searchページ に分割してみた。 postを受けるページは、こんな感じで書けばいいみたいですな。

  post 'address/show'
  get 'address/search'

ただ、この状態だとshowをgetで呼び出すと、そんなページねぇよって怒られるみたいだなあ。 ということでリダイレクトさせるようにした。

  post 'address/show'
  get 'address/show', to: redirect('address/search')
  get 'address/search'

こんなんでいいのか。

2017/09/10

Ruby on Railsをちまちま触ってみているので今日の備忘録

  • Model モデルデータ、まぁ、DB操作周りか

  • Controller Viewで表示するデータとかを用意する所 ( hoge_controller.rb )

  • View Webページ側表示する内容とかを書く( hoge.html.erb )

ruby g generateコマンド 超便利 ruby g model name a:string b:string Modelデータを作ってくれる! ruby g controller show コントローラーとshowメソッドも作ってくれる、すごい!

細かくは下記を参照… いつも忘れる「Railsのgenerateコマンド」の備忘録 - maeharinの日記


それからこれはrubyの話になるけど…

    params = URI.encode_www_form({zipcode: '1234567'})
    uri = URI.parse("http://zipcloud.ibsnet.co.jp/api/search?#{params}")
    @query = uri.query

としてGETリクエスト用のパラメタが作れるのねえ リクエストはこう……

    response = Net::HTTP.start(uri.host, uri.port) do |http|
      http.open_timeout = 5
      http.read_timeout = 10
      http.get(uri.request_uri)
    end

    case response
    when Net::HTTPSuccess  
       ...
    when Net::HTTPRedirection
       ...
    else
       ...
    end

responseはcase-whenでresponsecodeを判定できるらしい 仕組みとしては === でオブジェクト型の比較をしているから?みたいだ……。 つまり、responseの結果ごとに別のクラスとして返ってくるんだなあ、なるほど……。

それから例外処理は

begin
rescue IOError => e
rescue => e
end

ちまちまアウトプットして覚えていこうと思う