他プロダクトでの応用を目的とした設計・実装ドキュメント
本ドキュメントは、Flopsプロジェクトで実装した以下の2つの主要機能について、設計思想、利用ライブラリ、失敗談、ベストプラクティスをまとめたものです:
- 独自記法のParser&再生機能 - テキストベースの記法をパースしてインタラクティブに描画・再生
- OGP画像生成機能 - 動的にOpen Graph画像を生成してSNS共有を最適化
| # coding:utf-8 | |
| from selenium import webdriver | |
| import time | |
| if __name__ == "__main__": | |
| driver = webdriver.Chrome() | |
| driver.get('http://www.msftconnecttest.com/redirect') | |
| searchElement = driver.find_element_by_css_selector("button") | |
| searchElement.click() |
| vk1C::Space | |
| vk1D & P::Send,{Blind}{Up} | |
| vk1D & B::Send,{Blind}{Left} | |
| vk1D & N::Send,{Blind}{Down} | |
| vk1D & F::Send,{Blind}{Right} | |
| vk1D & A::Send,{Blind}{Home} | |
| vk1D & E::Send,{Blind}{End} | |
| vk1D & M::Send,{Blind}{Enter} | |
| vk1D & H::Send,{Blind}{BS} | |
| vk1D & D::Send,{Blind}{Delete} |
| # ~/.bashrc: executed by bash(1) for non-login shells. | |
| # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) | |
| # for examples | |
| # If not running interactively, don't do anything | |
| case $- in | |
| *i*) ;; | |
| *) return;; | |
| esac |
| set-option -g prefix C-t | |
| # key bind | |
| bind-key C-n next-window | |
| bind-key C-p previous-window | |
| bind-key C-[ copy-mode | |
| bind-key C-] paste-buffer | |
| # use bash | |
| set -g default-shell /bin/bash |
| (defun dotspacemacs/user-config() | |
| (define-key global-map "\C-h" 'delete-backward-char) | |
| (define-key global-map "\C-o" 'other-window) | |
| (setq make-backup-files nil) | |
| (setq auto-save-default nil) ) | |
| #!/bin/bash | |
| read -sp 'service␣ password:' DATA | |
| list=(${DATA// / }) | |
| echo -n list[0] | openssl sha256 -hmac list[1] -binary | openssl base64 | cut -c 1-16 |
| ※ 本ブログ http://umeyuki.netが事情により一時更新できないため、gistでお送りします。 | |
| 「いつまでも有ると思うなYAPCとISUCON」という言葉がある通り、 | |
| イベントはいつか終わってしまうものです。 | |
| 後悔しないようisuconに初参加しました。 | |
| チーム名は「チームくまさん」メンバは@srockstyle @n0bisuke @umeyukiでした。(敬称略) | |
| 予選当日は、上野にあるLIGのいいオフィスに集りました。 |
| # bash4以上を利用すること | |
| export GOPATH=$HOME/dev | |
| export PATH=$GOPATH/bin:$PATH | |
| # 逆順にして直近の履歴を上にもってくる | |
| peco_history() { | |
| declare l=$(HISTTIMEFORMAT= history | LC_ALL=C sort -r | awk '{for(i=2;i<NF;i++){printf("%s%s",$i,OFS=" ")}print $NF}' | peco --query "$READLINE_LINE") | |
| READLINE_LINE="$l" | |
| READLINE_POINT=${#l} |
| require 'aws-sdk' | |
| module AWS | |
| class HostsGenerator | |
| def initialize(access_key_id: '',secret_access_key: '',region: '') | |
| AWS.config(access_key_id: ENV["AWS_ACCESS_KEY_ID"], secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"], region: ENV["AWS_REGION"]) | |
| @hosts = [] | |
| AWS.ec2.instances.each do |ins| | |
| host_name = ins.tags.to_h['Name'] | |
| @hosts.push("#{ins.private_ip_address} #{host_name}") |