# 服務器被入侵手記

## 背景與起因

shipyard 終於成功跑起來了，我玩了一會，得意之至，忘記了上面的警告和自己親手暴露的端口。接著我就折騰 Jenkins 之類的去了，玩得不亦樂乎。

# Banana Algebra

Abstract: I’ll be talking about the F-Algebra Category and related applications of F-Algebra in function programming in this post.

## F-Algebra

So first of all, an algebra over a type $a$ is set of functions that converts an algebra structure $f a$ to $a$ CoAlg. An algebra consists of:

• An algebra structure: $\rm{F}$
• A carrier type: $\rm{a}$
• A total function: $\rm{F(a)} \to \rm{a}$

An example of an algebra looks like:

• Algebra struct: data F1 a = Zero | One | Plus a a
• A carrier type: it could be any instance of a: Int, String, etc.
• A total function:

Or we can have:

## F-Algebra Arrows

All algebras for an algebra structure $\rm{F}$ forms a category $\cal{C}$. The objects are, of course, the algebras, while the arrows are defined as morphisms between each two pair of algebras that transforming the carrier type: $\hom_{\cal{C}}(\rm{Alg}(\rm{F},\rm{a}), \rm{Alg}(\rm{F},\rm{b}))$.

For an arrow in F-algebra category, we need a transformation from F a to a.

# 誡之二

host 曰：即有大樂者，與悲治之。

# 深淵

Lambda 醬想遲些再去打掃房間～

# Function Calling Syntax

We use programming languages to indicate a process of actions/computations. Therefore programming languages tends to be more procedual. In other words, they are used to indicate how a thing is done.

Just as the role of verbs in a nature language sentence, an action is the most essential part of ‘doing a task’ in programming language. Of course the syntax of a programming language could be complex. I’d be here to discuss only the simplest cases of function calling among different programming languages.

# Linux 下 GFW 的 DNS 投毒解決方案

## 方案

DNSCrypt 是 OpenDNS 推出的一個用來加密 DNS 請求的代理，我用這個來繞開 GFW 的檢查。dnsmasq 是一款的 DNS 服務器，我主要用其提供 DNS 緩存的功能。