Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
概要 GolangとPhantomJSで、javascriptのページでもスクレイピングする方法です。 agoutiを使ってPhantomJSを起動し、goqueryでDOMをパースしてみました。 関連記事 Python + PhantomJSでスクレイピング Python + Chrome on CentOS7(Docker)でスクレイピング Golang + Chrome on CentOS7(Docker)でスクレイピング Goの環境構築 Golang環境構築 Dockerfile Dockerで環境を作ります。 From centos:7 ARG GO_VER=1.11 # Golang WORKDIR /usr/local/src RUN yum install -y git RUN curl -O https://dl.google.com/go/go${GO_VER}.lin
tl;dr Go でシンプルな DI コンテナのライブラリを書いた Dependency Injection の中でも Constructor Injection のみ go.uber.org/dig がどうしても受け入れられないミニマリスト向け github.com/KoharaKazuya/conigo Conigo の紹介 Conigo は Constructor Injection の実現をサポートするための DI コンテナを提供するライブラリ。インターフェースは go.uber.go/dig に酷似していて、機能的にはほぼサブセット。 特徴は非常にシンプルであるということ。実装が 200 行程度、10 KB 未満しかなく、API が実質的に Provide と Resolve しかない。依存パッケージも fmt と reflect のみ。 Conigo は reflect を使っ
問題: Password Bubble が邪魔# Chromeを自動操作するために chromedp を使い始めたんだけど、 ログイン成功すると出るこれ。Password Bubbleっていうらしい。 自動ログインさせて自動処理を続行させようとすると、これが邪魔になる。 でも、これを消す起動オプションは無いようだ。 対策: user data directory# 代わりの手段として、ユーザーデータディレクトリが使える。 データ保存先のディレクトリを作成し、 Chromeのバイナリをコマンドラインから --user-data-dir=そのディレクトリのパス をつけて起動し、パスワード保存有無など必要な設定をしておき、 chromedpからも同じディレクトリを指定する UserDataDir を付けて利用すれば良い。 import ( "github.com/chromedp/chromed
package e27r import ( "sort" "strings" ) const mapsize = 5 type xytype struct { x, y int } func (p xytype) inmap() bool { return 0 <= p.x && p.x < mapsize && 0 <= p.y && p.y < mapsize } func (p xytype) add(q xytype) xytype { return xytype{p.x + q.x, p.y + q.y} } func (p xytype) eq(q xytype) bool { return p.x == q.x && p.y == q.y } func (p xytype) cell(m string) byte { return m[p.x+p.y*(mapsize+1)]
概要 Ruby on Rails, CakePHP, LaravelといったWebアプリケーションフレームワークには標準でデータベースマイグレーションツールが包含されている。 一方でデータベースマイグレーションをwebアプリケーションと別に管理したいケースもある。別に管理するためにはフレームワークに包含されているツールよりも、スタンドアロンで利用可能なツールの方が良い。本記事ではスタンドアロンで利用可能なデータベースマイグレーションツールを比較してみる。 データベースマイグレーションとは何か データベースマイグレーションはRDBMSのdatabase・スキーマ定義をコード化し、テーブル・インデックス更新を自動化することである。主に下記を実施することができる。 databaseの作成 テーブルの作成・更新 インデックスの作成・更新 DBスキーマのバージョン管理(過去に実行されたSQLが特定の
はじめに 現在関わっている新規開発プロジェクトで、新しくgolangを採用することにしました。 その際、アーキテクチャや使用するライブラリなどいろいろ試したり調べたりしたのでサンプルプロジェクト(Github)と一緒に紹介します。 golangのパッケージ構成 golangで開発を行うにあたり、プロジェクトのパッケージ構成を検討しましたが、今の所golangのパッケージ構成はこれ!というものはなく、世の中的にもいろいろと試行錯誤がなされている段階のようです。 今回作るシステムでは、最終的にはある程度の規模になることが予想されるのと、立ち上げ後のメンテナンス性も踏まえ、DDDで紹介されているアーキテクチャを取り入れてみることにしました。 DDDにはいくつかのアーキテクチャがよく登場します。 今回の場合、レイヤードアーキテクチャやヘキサゴナルアーキテクチャでは少し不足で、クリーンアーキテクチャ
はじめに RedisのGo言語向けクライアントライブラリRedigoの使い方を見ます。 本記事ではコネクションプールの使い方を見ていきます。 環境 OS: Windows 10 Redis: win-3.2.100 Go言語: 1.11 基本の流れ コネクションプールとは、Redisサーバへ接続するときにコネクションを再利用することで接続を高速化する機能です。 さっそくですが、Redigoでコネクションプールを利用する典型的なコードを以下に示します。 package main import ( "fmt" "time" "github.com/gomodule/redigo/redis" ) func newPool(addr string) *redis.Pool { return &redis.Pool{ MaxIdle: 3, MaxActive: 0, IdleTimeout: 2
Underlay: 192.168.10.0/24 Overlay: 10.0.1.0/24 ___________________ ___________________ | host1 | | host2 | | ___________ | | ___________ | | | netns1 | | | | netns2 | | | | | | | | | | | | _____ | | | | _____ | | | |__|VXLAN|__| | | |__|VXLAN|__| | | |_____| | | |_____| | | 10.0.1.1: ____ | | 10.0.1.2: ____ | |_________:__|p1p1|_| |_________:__|p1p1|_| : |____|192.168.10.7 : |____|192.168.10.8 ___
go言語でOAuth2認証 最近,go言語でGithubとQiitaのOauth2認証を実装することがあったのでメモ書き程度に書いていきます. OAuth2認証のフロー OAuth2のフローは以下のようになっています(Githubの場合) Githubにコードをリクエスト あらかじめ指定しておいたページに自動でリダイレクト リダイレクト時にURLにパラメータで渡されたcodeを使ってアクセストークンをリクエスト 3のレスポンスのbodyからアクセストークンを取得 アクセストークンを使ってAPIを使用 ざっくりと以上のような流れで認証します. Githubの場合 まず,Githubのアプリに登録します. そこで得られたClientIDとClientSecretをメモなどして覚えておきましょう. リダイレクト先のURLは自分のサイトの適当なURLを指定しましょう(例http://自分のサイトU
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く