Skip to content

Instantly share code, notes, and snippets.

View maildrop's full-sized avatar

Mikito TOGURO maildrop

View GitHub Profile
@maildrop
maildrop / my-smart-compile.el
Created December 28, 2019 22:16
Smart compile
;; (define-key global-map (kbd "C-c k") 'my-smart-compilation)
(defvar-local my-smart-compilation-last-command nil
"状況に合わせたスマートコンパイル方法のラストコマンド")
(defun my-smart-compilation-c-mode (file-name)
"直接C/C++をコンパイルする"
(interactive)
(setq my-smart-compilation-last-command
(read-from-minibuffer "compile : "
(or my-smart-compilation-last-command
(let* ((extension (file-name-extension file-name))
#include <cstdint>
#include <cstring>
#include <cassert>
#include <iostream>
#include <algorithm>
#include <type_traits> // std::enable_if etc.
#include <iterator> // std::advance
typedef signed char sint8;
@maildrop
maildrop / trans.cpp
Created February 5, 2020 10:24
transformchain
#include <tuple>
template<typename T>
struct transform_t : public T{
public:
template<typename ... Args>
transform_t( Args&& ... args ) : T(std::forward<Args>(args)...)
{}
template<typename Arg>
== 背景 ==
https://www.usb.org/hid
これの6ページ でキーボードの物理レイアウトをホストに通知する仕組みがある。
https://www.usb.org/sites/default/files/hutrr42c_0.pdf
! ただし、これはコスト低減のために、106or109 キーボードでも 101 キーボードを報告する(英語キーボードのファームをそのまま流用するため)
キーボードが居る。(それも結構多数)
要するに、キーボードは101 キーボードと言っているが、物理レイアウトは106キーボード でユーザも106キーボードとして使う事を期待しているパターンが多い。
#include <iostream>
#include <type_traits>
#include <string>
struct utf8_literal{
const void * const ptr;
utf8_literal( const char* ptr )
:ptr( (const void*)ptr ){}
#if defined( __cpp_char8_t )
#!/usr/bin/perl
use strict;
use utf8;
my $devs = [];
foreach my $link (split( /\n(?!\s+)/ , `ip link` )){
if( $link =~ m/(\d+):\s+([\w\d]+):[^\n]*\n\s*link\/((?:ether)|(?:loopback))/m ){
${$devs}[$1] = {dev=>$2,type=>$3};
@maildrop
maildrop / dslite-tunnel
Created April 13, 2020 07:32
DS-Lite のトンネルを作成するためのスクリプト
#!/bin/bash
# transix.jp DS-Lite IPv4 over IPv6 tunnel up script
# DS-Lite のトンネルを作成するためのスクリプト
# /etc/networks/interacace で インターフェースの up/down の時に使う
#
IP=/bin/ip
case "$2" in
"up" )
@maildrop
maildrop / README.md
Last active May 15, 2020 08:34
IPsec strongswan ipv6 internet-access

通常IPv6 のアドレスは、Neighbor Discovery(ND) Protocol を使って探索される。 IPsec Strongswan で 拠点にリモートアクセスして拠点側のIPを virtual IP で払い出し traffic selectors を local_ts = ::0/0 としたときつまり全てのIPv6トラフィックを拠点に向けて送信し、拠点側で折り返して外へ出て行くようにしたい場合、ルータがその払い出したアドレスを見つけることができるようにするためにはNDをproxyする必要がある。本件に関しては、strongswan wikiを参考にした。

この状況には一つには携帯端末がIPv6 アドレスを掴まない場合がある。

確かに携帯電話キャリアは、IPv6を推進しているかも知れないが、実際にはIPv6アドレスを掴む場合はまれであるため IPv6 only のホストを使用するためには、VPNで IPv6 over IPv4 with NAT traversal で virtual IP の割り当てを受けるのが確実である。また、携帯電話のテザリングは、IPv4アドレスのみが割り当てられるのでテザリング先から VPNを張るという使い方ができる。

まず、IPv6 のルーティング(カーネルパラメータのnet.ipv6.conf.all.forwarding=1)を有効にするとき、ra_acceptが2である必要がある。

class String;
template<typename T>
class Object
{
public:
virtual const String toString() const;
};
#!/bin/sh
url=rtsp://192.168.1.136:554/abcd
case "$1" in
"start" )
if [ ! -p /var/tmp/livecode ] ; then
mkfifo /var/tmp/livecode
nohup sh -c "cat /var/tmp/livecode | ffmpeg -y -i \"$url\" -vcodec copy -acodec copy -f flv a.flv 2>&1 | logger " 2> /dev/null &
fi