Skip to content

Instantly share code, notes, and snippets.

View kengonakajima's full-sized avatar
🏠
Working from home

Kengo Nakajima kengonakajima

🏠
Working from home
View GitHub Profile
@ykst
ykst / gist:6e80e3566bd6b9d63d19
Last active March 2, 2025 15:22
WebAudio+WebSocketでブラウザへの音声リアルタイムストリーミングを実装する

WebAudio+WebSocketでブラウザへの音声リアルタイムストリーミングを実装する

WebRTCでやれよ!と言われそうなところですが、 WebSocket+WebAudioの組み合わせで音声ストリーミングをシンプルに構成する方法を紹介してみます。

サーバーサイド(Node.js + ws + pcm)

サーバーサイドは何でも良いのですが、 とりあえずNode.jsでtest.mp3というサンプルファイルをpcmモジュールでデコードし、 wsでクライアントに垂れ流す作りにしておきます。

@voluntas
voluntas / webrtc_stack.rst
Last active September 13, 2024 16:38
WebRTC スタックコトハジメ

WebRTC スタックコトハジメ

WebRTC スタックについて

作:@voluntas
バージョン:0.0.3
url:https://voluntas.github.io/
@0x0dea
0x0dea / process_gsub.rb
Created April 26, 2015 23:08
Process.gsub lets you search and replace within your process's live memory!
def Process.gsub pat, sub
mem = File.open('/proc/self/mem', 'r+')
maps = File.open('/proc/self/maps')
maps.each do |map|
from, to, perms, offset = map.scan(/(\h+)-(\h+) (\S+) (\h+)/)[0]
if perms['rw']
from, to = [from, to].map { |addr| addr.hex + offset.hex }
data = mem.tap { |m| m.seek from }.read(to - from) rescue next
@varemenos
varemenos / 1.README.md
Last active April 4, 2025 03:30
Git log in JSON format

Get Git log in JSON format

git log --pretty=format:'{%n  "commit": "%H",%n  "abbreviated_commit": "%h",%n  "tree": "%T",%n  "abbreviated_tree": "%t",%n  "parent": "%P",%n  "abbreviated_parent": "%p",%n  "refs": "%D",%n  "encoding": "%e",%n  "subject": "%s",%n  "sanitized_subject_line": "%f",%n  "body": "%b",%n  "commit_notes": "%N",%n  "verification_flag": "%G?",%n  "signer": "%GS",%n  "signer_key": "%GK",%n  "author": {%n    "name": "%aN",%n    "email": "%aE",%n    "date": "%aD"%n  },%n  "commiter": {%n    "name": "%cN",%n    "email": "%cE",%n    "date": "%cD"%n  }%n},'

The only information that aren't fetched are:

  • %B: raw body (unwrapped subject and body)
  • %GG: raw verification message from GPG for a signed commit
@voluntas
voluntas / webrtc.rst
Last active January 13, 2025 22:40
WebRTC の未来
@voluntas
voluntas / webrtc.rst
Last active July 14, 2025 04:05
WebRTC コトハジメ
/*****************************************************************************
* directsound.c: DirectSound audio output plugin for VLC
*****************************************************************************
* Copyright (C) 2001-2009 VLC authors and VideoLAN
* $Id: 2f5b9f46d3739e513d875b950eaf4d2df641f9dc $
*
* Authors: Gildas Bazin <[email protected]>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* 平行光源の光の強さは、光源の方向のみに依存するので、各頂点の明るさは、法線 n と、光源の方向 l の内積(の関数)になります。
* 反射光の光の強さは、ライトベクトルと視線への反射ベクトルのハーフベクトルと面法線の内積で計算します。
* 環境光は計算量が多いので、単に色を乗せるだけで済ませます。
※ライトベクトルおよび視線の反射ベクトルは、モデルの回転に対する逆行列を掛けることで正しく表示されます。
ライトが固定して、ポリゴンが回る=ポリゴンを固定して、ライトを逆方向に回す
```
<script id="vs" type="x-shader/x-vertex">
attribute vec3 position; // 頂点属性:頂点座標位置
@CGPala
CGPala / UILineRenderer.cs
Created November 19, 2016 12:29
Unity simple UI line renderer
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
public class UILineRenderer : Graphic
{
[SerializeField] Texture m_Texture;
[SerializeField] Rect m_UVRect = new Rect(0f, 0f, 1f, 1f);
@voluntas
voluntas / open_momo.rst
Last active June 7, 2025 09:52
OpenMomo プロジェクト