一个很程序员的 404 页面

2016/06/29 Misc

如何写出一份很“程序员”的 404.html ?

这个问题冰封思索了很久,因为一个程序员的博客应该有一个很有逼格的 404 页面。想了半天,我也参考了 GitHub、JetBrains、StackOverflow 等网站的 404 页面。最后我觉得还是应该写代码。所以我就用自己最熟悉的四门语言分别写了提示内容的一部分。

关于每份代码

我要充分发挥这四门语言各自的特性,于是我先列出了它们分别的特性。

  • Ruby :元编程、函数式编程、面向过程、面向对象
  • Java :函数式编程、面向对象
  • Kotlin :函数式编程、面向对象、面向过程
  • C :面向过程

最终决定,四门语言各自体现一种特性——

语言 特性
Ruby 元编程
Java 面向对象编程
Kotlin 函数式编程
C 面向过程编程+系统底层

于是我又好好干了一晚上。。。想了半天,很快写出第一版,又改了几下。特别是 C 语言那个版本,我在没有 stdio.h 的情况下使用 system 函数强行完成了标准输出,也是很强很强……

试试这个 404 吧: http://ice1000.org/404

温馨提示

下面的代码都可以被编译运行哦,你可以复制源代码、使用命令行工具直接编译,程序会在控制台输出相应的内容。

这大概是世界上最程序员的 404 了吧。。。

# This is Ruby
class ErrorReasoner
	def initialize
		@message_title = '404 Not Found'
		@message_content = '你来到这个页面,通常有三个原因'
	end
	def my_attr_accessor(*args)
		args.each do |i|
			eval "p @#{i}"
		end
	end
	def _print_reason
		my_attr_accessor :message_title, :message_content
	end
end

printer = ErrorReasoner.new
printer._print_reason

// This is Java
public class ErrorReasoner {
	public ErrorReasoner() {
	}
	public final String messageTitle = "一、链接错误";
	public final String messageContent = 
		"原因:博客搬迁造成的旧链接失效。请回到主页。(*′﹃`*)";
	public void printMessage(String msg) {
		System.out.println(msg);
	}
	public static void main(String[] args) {
		ErrorReasoner reasoner = new ErrorReasoner();
		reasoner.printMessage(messageTitle);
		reasoner.printMessage(messageContent);
	}
}
// This is Kotlin
class ErrorReasoner(private var printer: (message: String) -> Unit) {
	fun printMessage(message: String): Unit
		= printer(message)
}
fun main(args: Array<String>) {
	var reasoner = ErrorReasoner { println(it) }
	reasoner.printMessage("二、实验事故")
	reasoner.printMessage(
		"原因:冰封所建立的时间之域被隔壁实验室里的对撞机事故影响," + 
		"造成部分页面损伤。"
	)
}
// This is C ( pure C )
#include <stdlib.h>
#include <string.h>
const char* echo = "echo ";
void printMessage(char* message) {
	char* command = (char*) malloc (strlen(message) + strlen(echo) );
	strcpy(command, echo);
	strcpy(command + strlen(echo), message);
	system(command);
}
int main(int argc, char* argv[]) {
	printMessage("三、末日降临");
	printMessage(
		"原因:在归零者文明的号召下," + 
		"冰封已将建立好的独立时间之域回归主宇宙。别担心,数据已经备份。"
	);
	return 0;
}

后来我又改了一下。就不发了,在 404 里面看吧。


Search

    Post Directory



    如果觉得这篇文章给您带来了收获或者说它值得您这么做,您可以选择对我进行捐助。
    下面是微信支付哟


    本作品由
    一个很程序员的 404 页面采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
    基于 http://ice1000.org/2016/06/29/HowToMakeNiceNotFoundPage/上的作品创作。
    This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
    知识共享许可协议