ゾゾスーツをポチった

無料で未来っぽいなにかが手に入るので是非!

関連Tweet

WebSocket 関連メモ

WebSocket

The WebSocket API (WebSockets) | MDN

  • サーバ、クライアントで双方向通信できるやつ(仕様
    • 例) チャット, push通知, ゲーム, 同時編集 etc...
  • HTTPとは違い、ステートフルな通信
  • TCP/IP のソケット通信の知識・経験があるとよい

Socket.IO

Socket.IO

WebSocket を使いやすくするライブラリ (WebSocket 以外の方法で通信することもできる) =>リアルタイム通信全般をカバーしたライブラリ

  • WebSocket が使えない時に XMLHttpRequest でポーリングする
  • WebSocket 切断時に、再接続を自動でやる

などのメリットがあったが、最近はブラウザもほぼ対応しているので、使う理由は減ってきている

Engine.IO

GitHub - socketio/engine.io

Socket.IO の下で使われているライブラリ

  • Socket.IOの通信部分の部品になった

Engine.IO - 橋本商会

関連ライブラリ・サービス

Action Cable の概要 | Rails ガイド firebase.google.com www.twilio.com www.twilio.com pusher.com www.pubnub.com mlkcca.com

若い頃の j-will

超絶かっこよい

Jason Williams (White Chocolate) was amazing 😳😯 Follow @bbawls for more!

Basketballさん(@bbawls)がシェアした投稿 -

instagram で昔のスーパープレイ集とかでてくるのよい

φ(..)メモメモ

python 製のスクレイピングしていっきに拾ってくるやつあったのでメモ

github.com

特定のラベルのついたPRを拾ってくる

使い所

  • "レビュー中" のPRをリマインドする
  • まとめて複数PRをリリースするときの、PR一覧を知りたい (ラベル運用必須だけど)

などなど

API v3

#! /usr/bin/env ruby

require 'rake'
require 'octokit'

GITHUB_TOKEN = 'personal access token'
REPO  = 'owner_name/repo_name'
LABEL = 'label_name'

namespace :pr do
  desc 'waiting for review'
  task :label do
    github_client.pull_requests(REPO).each do |pr|
      pr.rels[:issue].get.data.rels[:labels].get.data.each do |label|
        puts "#{pr[:title]} : #{pr[:html_url]}" if label[:name] == LABEL
      end
    end
  end

  private

  def github_client
    Octokit::Client.new(access_token: GITHUB_TOKEN)
  end
end

API v4 (GraphQL)

#! /usr/bin/env ruby

require 'json'
require 'rake'
require 'octokit'

GITHUB_TOKEN = 'personal access token'
REPO  = 'owner_name/repo_name'
LABEL = 'label_name'

namespace :pr do
  desc 'waiting for review'
  task :label do
    graphql(query: pull_requests)[:data][:repository][:label][:pullRequests][:edges].each do |pr|
      puts "#{pr[:node][:title]} : #{pr[:node][:url]}"
    end
  end

  private

  def github_client
    Octokit::Client.new(access_token: GITHUB_TOKEN)
  end

  def graphql(query:, variables: {})
    github_client.post '/graphql', {query: query, variables: variables}.to_json
  end

  def pull_requests(label: LABEL)
    owner, name = REPO.split('/')
    <<~"GRAPHQL"
      query {
        repository(owner: "#{owner}", name: "#{name}") {
          label(name: "#{label}") {
            pullRequests(last: 20) {
              edges {
                node {
                  title
                  url
                }
              }
            }
          }
        }
      }
    GRAPHQL
  end
end

メモと所感

  • v4 の GraphQL を使えばもっとラクにとってこれるのかなーと思ったけど、慣れが必要かなーという感じだった
  • octokit の gem で返ってくるレスポンスは Sawyer::Resource になっててちょっと面倒 (GraphQL は、octokit 使わなくてもよかったかも)
  • debug のときに awesome_print 使ったら超絶便利だった
  • せっかくなら、Go とかで書いてみればよかった

REF

Reference | GitHub Developer Guide

github.com

github.com