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
@kengonakajima
kengonakajima / gist:82c2729c01c8607d59c04f3afe2765e4
Last active November 16, 2023 05:49
limaで、 m1 mac上で x86_64のLinuxを起動する手順
# on m1 mac
1. brew install lima
2. limactl start # defaultという名前のマシンが作られる。これがarm64になっている。
3. ~/.lima/default/lima.yaml を、 ~/.lima/x86_64.yaml にコピーする
4. limactl delete default でdefaultマシンを削除
5. arch: null を、 arch: "x86_64" に変更して保存
6. limactl start x86_64.yaml として新しくマシンを作成、起動
7. limactl shell x86_64
8. uname -a
(function() {
var debug = false;
var root = this;
var EXIF = function(obj) {
if (obj instanceof EXIF) return obj;
if (!(this instanceof EXIF)) return new EXIF(obj);
this.EXIFwrapped = obj;
@kengonakajima
kengonakajima / cmd_gpt.js
Last active April 28, 2023 04:25
Execute ChatGPT text completion in command line, by node.js
#! node
if(process.argv.length<=2) process.exit(1);
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({apiKey: process.env.OPENAI_API_KEY});
const openai = new OpenAIApi(configuration);
const wrap = fn => {
return (req, res, next) => {
return fn(req, res, next).catch(next);
}
@kengonakajima
kengonakajima / EchoServer.py
Created June 21, 2022 20:02 — forked from limingzju/EchoServer.py
A simple Python echo server, show how to write socket program use python.
# Echo server program
import socket
HOST = '' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
//
// ViewController.h
// cameratest3gameobjc
//
// Created by ringo on 2022/03/16.
//
#import <Cocoa/Cocoa.h>
#import <SpriteKit/SpriteKit.h>
#import <GameplayKit/GameplayKit.h>
@kengonakajima
kengonakajima / gist:ee234c82598941a58b379069b419bf0f
Last active January 17, 2022 19:30
手元のpaperにGeyserを入れてSwitchからつなぐ手順
基本構造
Proxy構成ではなく、paperのサーバー単体でUDP 19132に対応させる場合の設定。
サーバー側
1. Geyser-Spigot.jar と floodgate-spigot.jar をダウンロードする。よくファイル名変わるので、Geyser, floodgate でぐぐって最新をあたれ
2. paper/pluginsにどっちも入れる。
3. 起動する。と、plugins/Geyser-Spigotができる
4. Geyser-Spigot/config.yml の "auth-type: online"を、  "auth-type: floodgate"に書き換える。ドキュメントだと自動で選択されるとあるけど、自動ではなかった。
5. 再起動する。Geyserはreloadが効かずエラーになる。
@kengonakajima
kengonakajima / pcap.rb
Created March 29, 2021 01:28
pcap analyzer for game packets
#!ruby -Ku
# Author: takeda yoshiki
res_hash = {
"ret" => false,
"error" => "",
}
begin
require 'pp'
require 'json'
# 取得するデータ
@kengonakajima
kengonakajima / endless
Created February 23, 2021 05:55
starting server endless
簡易的なサーバー自動再起動の設定方法は、
サーバーの実行ファイルをシェルスクリプトから起動する。
シェルスクリプトの中で永久ループを使う。
endless.shを以下のように設定する
```
ulimit -n 4000 # なくてもいい。TCPのサーバーだと便利なときもある
while true; do
date # 起動の日付がログに残ってると便利
1月末に急にユーザーが増えた、すごく会話がやりやすい通話アプリについて、通信の内容を観察する会をした。
協力していただいた10人ぐらいの皆様、ありがとうございました。
知りたいことは、良い感じの会話を実現するボイスチャットの部分についてのみで、
オーディエンス向けの送信は、遅延を大きくしてスケールさせる、インターネットラジオと同じことをやっているだけのようなので、観察を省略した。
オーディエンス向けにミキシングするサーバーが設置されていて、そこからラジオに流し込むのだろうと推測。
観察会でわかったことの概要は、以下の通り
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
int main() {
int fd=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_port=htons(80);