Skip to content

Instantly share code, notes, and snippets.

View you21979's full-sized avatar
💭
I may be slow to respond.

Yuki Akiyama you21979

💭
I may be slow to respond.
View GitHub Profile
@voluntas
voluntas / shiguredo.rst
Last active May 14, 2025 09:09
時雨堂コトハジメ
@rosylilly
rosylilly / 00-actor.rb
Last active March 3, 2017 07:03
分かった気になる DCI 、ロミオとジュリエット編 Romeo & Juliette with DCI
# 役者クラス
#
# say: 役者は声を発する事ができる。
class Actor
def say(words)
puts words
end
end
@ohtake
ohtake / JenkinsStudy8.md
Last active December 31, 2015 22:59
第8回Jenkins勉強会
@nakaji-s
nakaji-s / gist:7969970
Last active August 31, 2020 02:02
Goと依存パッケージ管理

このgistは Cloud Foundry Advent Calendar 2013 の16日目の記事です。

はじめに

現在、CloudFoundryのComponentsはGo化しつつあります。それにより、Rubyで実装されていたものに対して性能向上していたり、ソースが読みやすくなっていたりする(こちらは主観ですが・・)半面、開発者にとっての課題も生まれています。その課題のひとつが__依存パッケージ管理__です。まずはRubyの外部パッケージ管理について簡単に振り返りつつ、Goのそれを見ていこうと思います。

依存パッケージ管理(Ruby)

Rubyでは外部パッケージはGemファイルとなっており、大抵の場合、Bundlerで管理します。また、最新版が動くとは限らないため設定ファイルにバージョンを指定してそれを使用します。Gemファイル自体はRubyGems.orgに置かれており、ここからダウンロードされます。

依存パッケージ管理(Go)

Goではソースコード中のimport句でパッケージを指定します。設定ファイルは使いません。以下に例を示します。

# 私が考える安全なプログラムを書くために必要なこと
今も昔も「入力によって挙動が大幅に変わるAPI」が世の中には多数存在していて、プログラマが本来意図した挙動と異なる動作を引き起こしている。
- ファイルを開こうとしたらコマンドを実行できてしまったり
- CSSセレクタを書いてるつもりがHTMLタグを生成してしまったり
- SELECT文を発行するつもりがDELETE文を発行できてしまったり
こういったときに
- 入力値検証をしないと危険になる
@tcnksm
tcnksm / docker_cheat.md
Last active January 14, 2025 15:09 — forked from wsargent/docker_cheat.md
Docker 虎の巻

Docker 虎の巻

何故Dockerを使うべきか

Why Should I Care (For Developers)

"Dockerが面白いのはシンプルな環境に隔離性と再現性をもたらしてくれることだ.ランタイムの環境を一度作れば、パッケージにして別のマシンでも再利用することできる.さらに,すべてはホスト内の隔離された環境で行われる(VMのように).最も素晴らしい点は,シンプルかつ高速であることだ."

@voluntas
voluntas / shiguredo_env.rst
Last active December 2, 2024 00:23
時雨堂を支える環境

時雨堂を支える環境

日時:2024-12-02
作:時雨堂
バージョン:2024.3
url:https://shiguredo.jp/

2024-12 時点で従業員は全員フルリモート勤務中

@voluntas
voluntas / shiguredo_tech.rst
Last active May 13, 2025 02:58
時雨堂を支える技術

時雨堂を支える技術

日時:2025-05-13
作:時雨堂
バージョン:2025.3
URL:https://shiguredo.jp/

言語

@uupaa
uupaa / WebSocket.Nagle.md
Last active February 27, 2017 07:14
WebSocket Nagle アルゴリズム問題

http://www.html5rocks.com/ja/tutorials/casestudies/world_wide_maze/ によると、

普通の OS では、TCP レベルでバッファリングすることで、効率良く通信するための Nagle アルゴリズム という仕組みがが実装されているのですが、このアルゴリズムが有効なままだとリアルタイムにデータを送信することができないという現象がありました。(正確にはこれに加えて TCP 遅延 ACK が組み合わさった場合。遅延 ACK でなくても、サーバーが海外にあったりして ACK がある一定レベル遅れる場合には同様の問題が発生します。)

Chrome for Android の WebSocket 実装では Nagle を無効にするための TCP_NODELAY オプションが付いているので、Nagle 遅延問題は発生しませんでしたが、Chrome for iOS につかわれている WebKit の WebSocket 実装には、このオプションが指定されておらず、遅延問題が発生します。同じ WebKit を使っている Safari も同様。この問題は Google を通して Apple に報告され、開発バージョンの WebKit ではすでに修正されている とのこと。

実際、この問題が発生すると、100ms ごとに送信している傾きデータが、500ms ごとにまとめて PC 側に届きます。これではゲームとして成立しないので、サーバーサイドから短い間隔(50msぐらい)でデータを送り続けることで遅延を回避しています。これはおそらく ACK が短い間隔で届くために、Nagle アルゴリズム的に送信可能な状態になるからだと考えています。

との事です。

changeset 138352

@katzchang
katzchang / README.md
Last active September 28, 2022 13:42
Steve Freeman氏とのペアプロ雑感 #tddbc

Steve Freeman氏とのペアプロ雑感

http://tddbc.doorkeeper.jp TDD Boot Camp 2013-07 -- TDDBC で、偶然にもロンドンから来日していたSteve Freeman氏を招くことができた。ちなみに本当に偶然の来日で、その日の夕方にご家族と隅田川の花火を見る予定だったらしい。貴重な時間である。

20分ほど講演していただき、さらに参加者と一緒にペアプロ課題に挑戦してもらった。しかもペアプロでっていう貴重な体験をさせてもらったので、そのことについてまとめたい。

Steve Freeman氏は書籍 "Growing Object-Oriented Software, Guided by Tests" (邦訳「実戦テスト駆動開発」)の共著者の一人で、Javaのモックフレームワーク "JMock"の開発者の一人。当然、自動販売機の課題にもJMockを駆使してモデリングしていただくことになった。

Start from the outside