Sphereとともに

scalaとかplayframeworkとか。技術ブログにしたいなと。環境は Windows7x64, mac です。たまに声優さん情報が混ざります。最近ちょっとClojure触りました。

java で ipv4 ipv6 を扱う

ipv4

Maven Repository: commons-net » commons-net

qiita.com

ipv6

github.com

自前でやるなら

サブネットマスクの計算-Oboe吹きプログラマの黙示録

IPv6 Essentials: Integrating IPv6 into Your IPv4 Network

IPv6 Essentials: Integrating IPv6 into Your IPv4 Network

マイクロサービスに於ける認証

www.infoq.com

JWTのユースケース

の部分を参考

dev.classmethod.jp

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

nightmare.js を使って Qiita の人気の投稿 の href一覧 を取得する

nightmare.js

github.com

一覧を取得する

サンプルをちょっと変えて

.evaluate(function () {
    return document.querySelector('#main .searchCenterMiddle li a').href
  })

querySelectorquerySelectorAll に変えてやればOKでしょとか思ったのになぜか return が null になって困った・・・

javascriptはあまり良くわからないし・・・

.evaluate(function () {
    return document.querySelectorAll('.popularItem_articleTitle_text').href
  })

ぐぐってみると以下の記事がヒットしたので少し書き直してみたらうまく行った

qiita.com

  .evaluate(function(){
      return Array.from(document.querySelectorAll(".popularItem_articleTitle_text"),  e => {return e.href;})
    })

コード

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true })

var qiita_popular_item = 'http://qiita.com/popular-items';

nightmare
  .goto(qiita_popular_item)
  .evaluate(function(){
      return Array.from(document.querySelectorAll(".popularItem_articleTitle_text"),  e => {return e.href;})
    })
  .end()
  .then(function (result) {
    console.log('result', result)
  })
  .catch(function (error) {
    console.error('Search failed:', error);
  });

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

go言語でGETしたresponseをparseする

共通定義

import (
    "net/http"
    "encoding/json"
    "log"
)

func get(client *http.Client, url string, accessToken string, typedef interface{}) interface{} {

    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Set("Authorization", accessToken)
    resp, _ := client.Do(req)
    error := json.NewDecoder(resp.Body).Decode(&typedef)
    if error != nil {
        log.Fatal(error)
    }

    return typedef
}

実際の処理

func fetchCategories(client *http.Client, accessToken string) {
    url := "https://cloud.feedly.com/v3/categories"
    var cat []Category
    get(client, url, accessToken, &cat)
    for i, m := range cat {
        fmt.Println(i, m)
    }
}

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】

go言語のjsonのパースでちょっとハマったこと

jsonをパースしても [] になってしまう

type Category struct {
    id    string
        label string
}

func fetchCategories(client *http.Client, accessToken string) {
    url := "https://cloud.feedly.com/v3/categories"
    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Set("Authorization", accessToken)
    resp, _ := client.Do(req)
    var cat []Category
    error := json.NewDecoder(resp.Body).Decode(&cat)

    if error != nil {
        log.Fatal(error)
    }

    fmt.Println("----------------")
    fmt.Println(cat)
}

原因は小文字

type Category struct {
    Id    string
        Label string
}

idをIdに、labelをLabelにしたらきちんと値が取れるようになった

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】

python でまずはtwitterにアクセスしてみる

ほぼ公式みればわかること

使用するライブラリ

pip install pyyaml
pip install tweepy

config.yaml

config.yamlにConsumer KeyとかAccessTokenとか用意する

動かすコード

# -*- coding: utf-8 -*-

import tweepy
import yaml

def readConfig():
    """Read config file"""
    with open('config.yaml') as reader:
        y = reader.read()
        r = yaml.load(y)
        return r

def initializeClient(consumerKey, consumerSecret, accessToken, accessTokenSecret):
    auth = tweepy.OAuthHandler(consumerKey, consumerSecret)
    auth.set_access_token(accessToken, accessTokenSecret)
    return tweepy.API(auth)

def main():
    config = readConfig()
    print(config)
    client = initializeClient(config["consumer_key"], config["consumer_secret"], config["access_token"], config["access_token_secret"])
    print(client.me())


if __name__ == '__main__':
    main()

入門 Python 3

入門 Python 3