Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@pixie-grasper
pixie-grasper / super-tiny-server.lisp
Created June 20, 2016 07:14
200行くらいで書いた小さなサーバ lang:SBCL
(require 'sb-bsd-sockets)
(defmacro while (condition &body body)
`(do () ((not ,condition)) ,@body))
(defmacro for (enumerator begin to end &body body)
(let ((end-num (gensym)))
`(let ((,enumerator ,begin)
(,end-num ,end))
(while (<= ,enumerator ,end-num)
vmware@vmware-virtual-machine:~/test$ gcc inc.cc inc-sub.cc -o inc -O0
vmware@vmware-virtual-machine:~/test$ time ./inc
real 0m3.121s
user 0m3.118s
sys 0m0.000s
vmware@vmware-virtual-machine:~/test$ gcc inc.cc inc-sub.cc -o inc -O3
vmware@vmware-virtual-machine:~/test$ time ./inc
real 0m2.427s
vmware@vmware-virtual-machine:~/test$ cat inc-sub.cc
bool foo(int i) {
return i != 1000000000;
}
vmware@vmware-virtual-machine:~/test$ cat inc.cc
bool foo(int);
int main() {
int i = 0;
while (foo(++i));
@pixie-grasper
pixie-grasper / p2pbbs.md
Last active November 30, 2015 07:58
過激なノイズの存在下に於けるPure P2P上の掲示板の構築アイデア

前提

  • Pure P2P
  • 高匿名性
    • ある2つの書き込みが存在する時に、その2つの書き込みの書き込み主が同一人物か否かを判定できないunlinkability性を持つ
    • ある書き込みに対し、その書き込みを行った人物が自分と同一人物であるか否かを判定できないundeniability性を持つ
    • 書き込み時等にIPアドレスが十分少ないノードに知らされる事は許容するものとする。
  • 高攻撃耐性
    • 但し、次の攻撃を考慮し、その他の攻撃は考慮しない
      1. クライアントによる任意の間隔・任意のメッセージの送信
  1. クライアントが受信したメッセージの改竄、不正処理、及び削除
Original Data from http://www.unicode.org/Public/8.0.0/ucd/UnicodeData.txt | head -n 128
from http://www.unicode.org/versions/Unicode8.0.0/
| +00 | +10 | +20 | +30 | +40 | +50 | +60 | +70
00 | Cc | Cc | Zs | 0 Nd | @ Po | P Lu | ` Sk | p Ll
01 | Cc | Cc | ! Po | 1 Nd | A Lu | Q Lu | a Ll | q Ll
02 | Cc | Cc | " Po | 2 Nd | B Lu | R Lu | b Ll | r Ll
03 | Cc | Cc | # Po | 3 Nd | C Lu | S Lu | c Ll | s Ll
04 | Cc | Cc | $ Sc | 4 Nd | D Lu | T Lu | d Ll | t Ll
05 | Cc | Cc | % Po | 5 Nd | E Lu | U Lu | e Ll | u Ll
@pixie-grasper
pixie-grasper / 1.cc
Created November 11, 2014 08:57
memo: nullptr confuses decltype(auto).
#include <stdio.h>
#include <malloc.h>
template <typename T>
auto my_alloc() -> decltype(auto) {
auto ret = static_cast<T*>(malloc(sizeof(T)));
if (ret == NULL) {
return nullptr;
}
return ret;