呆's Blog
  • Home
Subscribe

Open Source VPN Solutions

  • Derek 呆

Derek 呆

May 19, 2015 • 1 min read

亂七八糟的筆記, 瞭解 VPN + NAT traversal 可用方案有哪些, 持續更新~

Projects

  • PeerVPN
  • IPOP
  • FreeLAN
  • ShadowVPN

NAT Traversal

  • pjnath
  • 公開 STUN, TURN server list
  • Setting up a TURN Server for WebRTC Use

XMPP Servers

  • https://xmpp.net/directory.php

待瞭解

  • ngrok

Sign up for more like this.

Enter your email
Subscribe

nim 上傳圖檔到 telegra.ph

import httpclient, os, strutils, asyncdispatch var c = newAsyncHttpClient() var d = newMultipartData() proc uploader() {.async.} = const base = "/home/derekdai/Photos" for p in base.walkDirRec(): let (_, f) = p.splitPath() echo f d.addFiles({f: p}) echo await c.postContent("https://telegra.ph/upload", multipart=d) waitFor uploader(

  • Derek 呆
Derek 呆 Jul 1, 2020 • 1 min read

nim 的 spawn 使用

nim 提供了 spawn 簡化工作在 thread 間的分派, 例子如下 import os, threadpool proc task(): string = sleep(3 * 1000) result = "hello" var v = spawn task() echo "Wait for task..." echo ^v spawn 是由 threadpoll module 提供 spawn 後是 proc 的呼叫 傳回的是 FlowVar[T] (或是 void) 的類型 在 task 結束後,

  • Derek 呆
Derek 呆 Jun 15, 2020 • 2 min read

在 nim 中表現 C struct 的繼承關係

{.emit: """ typedef struct { int id; } Member; typedef struct { Member m; unsigned int perm; } Manager; int member_size() { return sizeof(Member); } int manager_size() { return sizeof(Manager); } """.} type Member {.importc, nodecl, pure, inheritable.} = ref object id: cint Manager {.importc, nodecl, pure.} = ref object of Member

  • Derek 呆
Derek 呆 Jun 15, 2020 • 2 min read
呆's Blog © 2021
Powered by Ghost