Skip to content

Instantly share code, notes, and snippets.

View goldeneggg's full-sized avatar

Fuminori Sakamoto goldeneggg

  • 合同会社Practa / Practa LLC (Founder)
  • Japan
  • X @practainc
View GitHub Profile
@goldeneggg
goldeneggg / package_private.scala
Created February 24, 2014 13:13
private var と private[this] var の違い
// private なら、同一クラスの他オブジェクトからアクセス可能
scala> class Hoge (private var aho: Int) { def debug(hoge: Hoge) { println(hoge.aho) } }
defined class Hoge
// private[this] なら、同一クラスの他オブジェクトからアクセス不可
scala> class Huga (private[this] var aho: Int) { def debug(huga: Huga) { println(huga.aho) } }
<console>:7: error: value aho is not a member of Huga
class Huga (private[this] var aho: Int) { def debug(huga: Huga) { println(huga.aho) } }
@goldeneggg
goldeneggg / docker_md.md
Last active November 26, 2017 08:08
Dockerについての調査まとめ、基本機能+主な特徴+Vagrantの連携 あたり

Dockerについて調べたのでヅラヅラとまとめ + チートシート

概念とか用語とか、とりあえず押さえとくべきもの

  • lxc
    • LXC - Wikipedia
    • OSレベル の仮想化ソフトウェア
      • 完全仮想化(ハードウェアをエミュレート、オーバーヘッド大) - KVM etc
      • 準仮想化(ゲストOSがホストOSのAPIを使用、オーバーヘッド中) - Xen, Hyper-V etc。Virtualboxもこちらか
  • 仮想機械ではなく、個別のプロセスとネットワークスペースを作り出す仮想環境
@goldeneggg
goldeneggg / immutableinfraconf.md
Last active August 29, 2015 13:57
Immutable Infrastructure Conference #1 箇条メモ

Immutable Infrastructureが開発プロセスへの与える影響(仮)

  • 不変な、状態を持たない、 廃棄可能な
  • 「状態管理が面倒なら、状態を管理しなければイイ」
    • Chad Fowler
    • 「サーバーを捨てろ」
  • blue green deployment
    • 今まで主流のデプロイ=更新があったプログラムだけ配る
    • よく事故る
  • gemの依存関係が影響してリスタートしたら動かない
@goldeneggg
goldeneggg / Aho.scala
Created April 3, 2014 09:43
scalaの可変長引数なメソッドをチェーン呼び出しした場合の挙動
object Aho {
def main(args: Array[String]) {
aaa(1, "2", true)
ddd(1, "2", true)
}
// aaa - ccc, そのまま可変長引数を渡して実行
def aaa(params: Any*) {
println("AAA params[%s] params class[%s]".format(params, params.getClass))
@goldeneggg
goldeneggg / gist:fb5141c0cf72811594f2
Created May 2, 2014 09:11
provisionerにdockerを指定して vagrant up するとコケる (bash: line 2: stop: command not found)

推測

  • vagrant up時にdockerのrestartを実行しようとしている
  • その際の実行ユーザーがvagrantなんだけど、restartする権限が無い

ログ

  • version = 1.5.4
@goldeneggg
goldeneggg / cmd_entrypoint.md
Created May 8, 2014 08:22
Dockerfileの CMD と ENTRYPOINT の挙動の違いメモ

CMDとENTRYPOINTの違いと、使用例

  • ざっくり概要として、CMDとENTRYPOINT どちらを使うかによって docker run CONTAINER_ID <command> した際の<command>が及ぼす影響 が変わる

CMD, ENTRYPOINTで オプションなしのコマンド を記述した場合

CMD 使用時

  • Dockerfile
@goldeneggg
goldeneggg / binary_search.go
Created June 11, 2014 09:21
Goで某言語のように存在しなかったら-1を返す版のバイナリサーチ
func BinarySearch(data []int, find int, from int, to int) int {
center := (from + to) / 2
if from > to {
return -1
}
if find == data[center] {
return center
} else if find < data[center] {
@goldeneggg
goldeneggg / mosh.md
Created July 4, 2014 12:42
Getting started Mosh (Conncting from Mac to Linux Server)

Mosh

MacからLinuxサーバへ接続

boostとかをyumでインストール

% sudo yum -y install boost perl-IO-Pty-Easy

protocol buffer

@goldeneggg
goldeneggg / gochan.md
Last active July 1, 2018 14:55
[Go] ゴルーチン・チャネル ザックリ説明用

Goの並行処理 初歩感溢れるまとめ

Goの並行処理は 共有変数をチャネル上で引き回し、実行中の異なるスレッドからは同時アクセスさせない という手法を採用しています。

これを実現するために独自のプロセス/スレッド/軽量プロセス/コルーチンモデルを持っていて、このモデルを ゴルーチン(goroutine) といいます

逐次処理を並行化(ゴルーチン化)する

並行処理実践の初歩段階では 正しく逐次動作するソースコードを書き、並列に動作させる改良を加える というアプローチを取った方が無難です。いきなり並行処理を書こうとするとデバッグの際に並行化の誤りなのかアルゴリズムの誤りなのかを判断するのが難しくなります。

というわけで、まず例として超単純な逐次処理を書いてみます。1から5の数値を2倍した値を表示するだけの処理です。

$ echo "| bindkey | widget|\n|:-----:|:-----|\n$(bindkey -L | awk '{print $2" "$3}' | sed -e 's/ /|/g' | sed -e 's/^/|/g' | sed -e 's/$/|/g')"
# https://github.com/defunkt/gist を使用してgistへ投稿
$ echo "| bindkey | widget|\n|:-----:|:-----|\n$(bindkey -L | awk '{print $2" "$3}' | sed -e 's/ /|/g' | sed -e 's/^/|/g' | sed -e 's/$/|/g')" | gist -d "zsh bindkey $(date +'%Y%m%d')" -f zsh_bindkey.md