Skip to content

Instantly share code, notes, and snippets.

View progre's full-sized avatar

progre progre

View GitHub Profile
@progre
progre / gist:854a9f60dd8a40692d8b
Created October 2, 2014 13:10
httpsにhttpproxyでつなぎに行く
var https = require('https');
var tunnel = require('tunnel');
var tunnelAg = tunnel.httpsOverHttp({
proxy: {
host: 'localhost',
port: 8080
}
});
var options = {
ffmpeg -i http://127.0.0.1:7144/stream/a1ec070928dc66e5590831fdf7a29e24.flv -acodec mp3 -ab 48k -vcodec libx264 -profile:v baseline -level 3.0 -vb 50k -f segment -segment_format mpegts -segment_time 2 -segment_list playlist.m3u8 -segment_list_flags live -segment_list_type hls -segment_list_size 2 stream_%d.ts
@progre
progre / gist:adebe3fab379c2f5db97
Created March 17, 2015 12:37
TCPを流れるPCPの仕組み

ヘッダーについて

  • 2種類ある
    • チャンネルに対してリレー要求する場合はHTTP
    • それ以外は'pcp\n'Atom
  • どっちかを送ったら以降はAtomでやりとり

ハンドシェイクの仕方

mcp(Minecraft Coder Pack:9.05[9.05]):minecraft.jar
FML(Forge Mod Loader:7.10.85.1291[7.10.85.1291]):forge-1.7.10-10.13.2.1291.jar
Forge(Minecraft Forge:10.13.2.1291[10.13.2.1291]):forge-1.7.10-10.13.2.1291.jar
appliedenergistics2-core(AppliedEnergistics2 Core:rv2-beta-31[rv2-beta-31]):minecraft.jar
<CJB ASM>(<CJB ASM Data Initialization>:000[000]):minecraft.jar
CodeChickenCore(CodeChicken Core:1.0.4.35[1.0.4.35]):minecraft.jar
MVB-COREMOD(More Village Biomes+:2.0.6.5[2.0.6.5]):minecraft.jar
NotEnoughItems(Not Enough Items:1.0.4.83[1.0.4.83]):NotEnoughItems-1.7.10-1.0.4.83-universal.jar
PlayerAPI(Player API:1.1[1.1]):minecraft.jar
RenderPlayerAPI(Render Player API:1.1[1.1]):minecraft.jar
@progre
progre / gist:860f4f9019f6d6f56f86
Last active August 29, 2015 14:23
ComputerCraftからOpenComputersへのスクリプト移行メモ
  • getItemCount([slot]) → count([slot])
  • getSelectedSlot() → select()
  • getItemSpace([slot) → space([slot])
  • inspect() → geolyzer.analyze(3)
  • inspectUp() → geolyzer.analyze(1)
  • inspectDown() → geolyzer.analyze(0)
  • 左 → geolyzer.analyze(5)
  • 右 → geolyzer.analyze(4)
  • 後ろ → geolyzer.analyze(2) analyze戻り値の

モチベーション

  • 何も考えずにバケツリレーするのも効率悪いからもっと頭いい感じに流すようにしよう
  • 実装難易度下げてマルチプラットフォーム展開しやすくしよう
  • ニコ生()とのすみ分け(?)ができるようにしよう

メモ

  • 中央サーバー系の弱点は高ビットレートかつ多人数配信が難しいこと。
    • ニコ生で4~500kbpsくらいだったはず。ただしYouTubeLiveは6000kbpsいけるらしいので本気出されると死ぬ(liveを広めるモチベ低そうだし現実的には無理なのかも)
    • PeerCastだとリスナーの帯域さえあればこれが実現できるのが強み
  • 高画質を必須とするコンテンツがあるとなお強くなりそう
@progre
progre / index.html
Last active October 15, 2015 23:48
WebGLサンプル
<!DOCTYPE html>
<meta charset="utf-8">
<canvas id="canvas"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gl-matrix/2.3.1/gl-matrix-min.js"></script>
<script>
var vertexShaderSource = `
// グローバル宣言 (種類 型 変数名;)
attribute vec3 position; // モデル - 3D空間上の座標
attribute vec2 texCoord; // モデル - テクスチャマッピング
uniform mat4 mvMatrix; // モデルの移動・変形
@progre
progre / user.js
Last active October 18, 2015 05:47
MP4で見るスクリプト
// PUBLIC DOMAIN
$('#playerAlignmentArea').replaceWith(`<div style="text-align: center;"><video src="${decodeURIComponent(decodeURIComponent(JSON.parse($('#watchAPIDataContainer').text()).flashvars.flvInfo).split('&')[2].split('=')[1])}" controls></video></div>`);
function doSomething() {
var self = this;
sendMessage(function() {
self.method(); // これと
});
sendMessage(() => {
this.method(); // これがおなじうごきをする
// ぐたいてきには arrow function内ではthisがひとつそとがわのthisとおなじものを指すようになる
});
}
// こう書くより
function hoge() {
if (condition) {
do();
something();
}
}
// こう書いた方がネストが浅くなったり分岐をおいやすかったり差分が少なくなったりしてオススメです