Category Archives: /dev/null

Rewrite the styled code in HTML generated by Apple to WordPress compatible HTML

My first blog writing was in 2013, and at that time, WordPress was able to handle the styled code correctly, i.e., the code preserved the syntax highlight when I copy it from Xcode / CodeRunner and paste into the WordPress editor. The editor was capable of converting or persevering the colour info, and it did a great job of formatting the styled code into HTML.

Just like this post, https://await.moe/2013/08/assertmacros-problem/. The code shown below

typedef int (*PYStdWriter)(void *, const char *, int);
static PYStdWriter _oldStdWrite;

could be nicely formatted into the corresponding HTML code

<span style="color: #bb2ca2;">typedef</span> <span style="color: #bb2ca2;">int</span> (*PYStdWriter)(<span style="color: #bb2ca2;">void</span> *, <span style="color: #bb2ca2;">const</span> <span style="color: #bb2ca2;">char</span> *, <span style="color: #bb2ca2;">int</span>);
<span style="color: #bb2ca2;">static</span> <span style="color: #4f8187;">PYStdWriter</span> _oldStdWrite;

However, it was about the time WordPress upgraded to 3.9, the aforementioned functionality was removed. Although there are tens of syntax highlighting plugins, but I don't really like the colour schemes they offer. Besides, sometimes I may need to highlight a small portion of code. Such as this post, https://ryza.moe/2017/05/the-reason-that-codesign-remove-signature-generates-malformed-macho-still-remains-mystery/

/*
* If this has a code signature load command reuse it and just change
* the size of that data.  But do not use the old data.
*/
if(object->code_sig_cmd != NULL){
    if(object->seg_linkedit != NULL){
        object->seg_linkedit->filesize += arch_signs[i].datasize - object->code_sig_cmd->datasize; 
        if(object->seg_linkedit->filesize > object->seg_linkedit->vmsize)

As you can see, using native HTML code could enable extra control and functionality.

Continue reading Rewrite the styled code in HTML generated by Apple to WordPress compatible HTML

Brainfuck Interpreter in C++17——A Modern Approach to Kill Your Brain

It has been a long time that I wrote my last C++ code. And obviously, C++ has released the new standard, C++17, for a few months. There are a lot features in which has been introduced or changed.

One out many is the pattern matching using std::variant, std::monostate and std::visit. This feature could lead the data-oriented design easier in modern C++. And it's not that hard to write a (possibly buggy) brainfuck interpreter with this feature.

Although with that said, we still need some extra 'hacking' to achieve a more elegant code style. There is a blog post by Marius Elvert explaining a two-line visitor in C++, with which you could write a few lambda expressions in one visitor and then the std::variant could be dispatched by the receiving type of those lambda.

auto my_visitor = visitor{
    [&](int value) { /* ... */ }
    [&](std::string const & value) { /* ... */ }
};

To accomplish the goal, Marius found that lager just uses two lines of code. The details are explained in aforementioned blog post. And for the readability of the code today, I just substituted the name of the struct.

And if you're in a hurry, the full code is on my GitHub, #/brainfuck-cpp17

template<class... Ts> struct brainfuck_vm : Ts... { using Ts::operator()...; };
template<class... Ts> brainfuck_vm(Ts...) -> brainfuck_vm<Ts...>;

And the next step is to define all the 8 valid ops of brainfuck.

Continue reading Brainfuck Interpreter in C++17——A Modern Approach to Kill Your Brain

来下围棋吧~TensorFlow minigo~

TensorFlow 早些天发布了一个名为 minigo 的项目,因为 Google 官方还一直没有开源 AlphaZero,那么就先来看看 minigo 怎么玩(搞事情)吧www

假设乃使用的是 macOS / Ubuntu / debian,当然其他系统也可以,操作大同小异。

首先是安装 Python 3,macOS 下默认是 python2.7,新的 Python 3 需要去 Python 官网下载,https://www.python.org/downloads/。对于 Ubuntu / debian 来说的话,则是直接

apt-get install python3

当然,比较新的 Ubuntu / debian 都会默认安装 python3.6~

Continue reading 来下围棋吧~TensorFlow minigo~

探索网易云音乐——用 Python 写个爬虫吧w

既然想到要写点什么东西的话,那么就来试试网易云音乐吧w

那么第一步,我们要有数据才行,网易也当然不会公开自己的数据库啦,于是我们得用爬虫才行~

Python 语言里可以选择的爬虫还是不少,比如 Scrapy,然后在一开始开开心心的选择了 scrapy,之后发现网易云音乐对于 IP 的访问频率有限制,一旦超过限制,就会触发网易云的保护机制,暂时进入网易云黑名单,此时再访问的话,服务器返回的就都是 HTTP 503 - Service Unavailable。

解决方法说简单也简单,说麻烦也麻烦。简单在于,我的网络是电信的,于是只要重新拨号就能拿到新的公网 IP,写重新拨号的脚本也很简单。而稍有麻烦的地方在于,scrapy 是多线程的,在自己处理网易云返回 503 的时候,要注意重新拨号的脚本只需要执行一次。

如下图所示,假设我们的爬虫是 4 个线程,线程 2 在 t1 时刻访问时,遇到了 HTTP 503 之后,它就会进入我们处理网易云音乐 HTTP 503 的 handler。而对于其他线程来说,如果在 t1 时刻之前就开始访问了的话,那么是没有问题的,比如线程 1;如果是在 t1 时刻之后的话,比如线程 3、4,那么它们也会遇到 HTTP 503,但是这个时候,线程 3、4 就不用再走一次 handler,而是等待然后重试就可以。

HTTP 503 Handler
HTTP 503 Handler

但是也不用这么费劲,既然网易云音乐有频率限制,使用多线程的话,反而会更快的触发网易云的黑名单机制,因此,顺便作为重造轮子,我们来自己写个爬虫吧/

Continue reading 探索网易云音乐——用 Python 写个爬虫吧w

原来夜晚也如此明亮

知らなかだね。夜かこなに明るいなんて。
我都不知道呢。夜晚原来也是如此的光明。

这是战争之后,和小千坐着 Kettenkrad 从人类文明几乎灭绝的末日废墟里到了地面上的尤说的话。

从表面上来看,这是自然而然的,毕竟她们在几乎没有光的建筑里过了好久好久,眼睛早已习惯了黑暗,所以在刚出来的时候会觉得就连夜晚也好明亮。

小千和尤
小千和尤

但是既然我们已经知道这部作品里包含了很多隐晦的关于人性,战争,政治等等的思考,那么这里是在说什么呢?

我的理解是,对于生于和平的人来说,她们司空见惯的每一个黑暗夜晚,可能都是另一些人所盼望的光明。即便我们的「今天」并非是一帆风顺,但也是另一些人渴望而几乎不可达的的「明天」。

当然这么说也绝不是让我们再去重温什么「通讯基本靠吼,交通基本靠走,食物基本米有」的时代,而是希望我们人类能够维持并且继续发展当下的美好,即使它们目前也有很多不完美。

我们利用 $E=mc^2$ 制造了核武器,随后又谨慎的通过国际上的政治会谈等尽努力不让核战争爆发。这就像是我们将脖子放进了上吊的圈环里,然后尽力的不踏翻脚下的凳子一样。如果再一次打起仗来,我们也绝不可能再舒适的坐在电脑前,真正到了那个时候,在北风呼啸,雪落纷纷,只有一碗清汤(而且还是庆祝用)喝的夜晚,我们也会怀念「此刻」,怀念它的美好,怀念它的不美好,也更是会后悔为什么以前没有好好珍惜。

汤。
汤。

在第一话快要结束时,有这么一段对话~

尤莉「没想到竟会落到靠吃雪维生」
尤莉「战争真是讨厌啊」
小千「你有什么资格说」

「お前が言うな」
「お前が言うな」

那么在这一处,也是另有所指的

翻译过来是「你有什么资格说」,其实在日语里,「お前が言うな」,这句话除了表面意思之外,其实还暗示「你」当时就是那个最支持战争的人。

在这里,我们不必探寻在战争的时候尤莉具体是什么样的,傻可猜想作者也只是借着小千和尤说出了这么一件事——战前那些高呼好好好、支持的人,在真正上了战场之后,体会到了什么叫做战争的残忍之后,才来反思战争、为什么要打仗。

少女终末旅行,可能会是以后哪一天人类用战争将自己推向穷途末路时的反思之旅吧。

烟囱城的普佩尔——灵魂与梦想

“我会一直相信下去,即使只有我一个人。”

在一座头顶的天空永远永远是烟雾蒙蒙的城市里,人们从来没有见过真正的天空,也没见过一闪一闪的星星,在这里讨论星星,是会被笑话甚至遭受排挤的。

当我们在现实中,在某些环境下跟别人讨论梦想——“我想尝试另一个行业”、“我想发一篇顶会论文”——的时候,偶尔也会被身边的人不理解、笑话(虽然他们不一定是恶意的嘲笑)。

在绘本里,普佩尔原本是一个被邮递员不小心掉落到垃圾堆里的,咚咚乱跳的心脏,它在吸附了一件件垃圾之后,形成了垃圾人,也就是普佩尔。那么在这样的城市里,「垃圾」是什么呢,或者说在这里人们抛弃的是什么呢,大概是「梦想」吧。

那么按理说一个饱含着梦想的灵魂应该是美好的,为什么这里以一个非常脏、非常臭的形象出现呢?傻喵以为,在这个城市中,梦想是被看作不切实际、不被需要的「肮脏」之物,对于梦想的谈论、行动就更是让人厌恶之事。

于是乎,普佩尔嘴里“噗斯—哈、哈”地吐着瓦斯气体,我们知道瓦斯气体里面是添加了有臭鸡蛋味的硫化氢的,一般闻到之后,都会赶紧避开。这个「瓦斯气体」大概就是比喻现实生活中我们跟别人讨论自己理想时,别人对我们嘴里话语的看法吧。鲁比齐的爸爸也正是因为见到了烟雾之上的星星,而被城里的人们排斥、叫做骗子。

Continue reading 烟囱城的普佩尔——灵魂与梦想

言语韵律中的思想与美

在没有文字的时候,韵律——神话、诗歌——皆是口耳相传,尔后它们又因文字的出现而有了实形的记载,也有了更丰富的表现形式。在言语或文字中透着的那些韵律,都是某种思想的表达。可可认为,思想是一个人的文化、生活背景以及那个人所经历的事情所造就的一种产物。记得在我所学的《古希腊喜剧选读》的课上,讲师是这么解释“文化”的。

“文化”(cultura)首先意味着农作:对土壤及其作物的培育,对土壤的照料,以及按其本性对土壤质量的提升。“文化”衍生性地、且在今天主要地意味着对心灵的培育,按心灵本性对其内在能力的照料和提升。就像土壤需要其培育者那样,心灵需要老师。

那么什么样的人才能够称作是我们“心灵的老师”呢,那些老师要在何处去寻觅呢?一般来说,一个伟大的人会有一个伟大的老师,而老师也会有他自己的老师,但终究我们会找到那么一些人,他们没有老师,他们正是那些伟大的心灵(Great Minds)。

当我们从咿呀学语一步步走到自己文化生命的开端时,哪些伟大的心灵是我们应该去找寻的呢?埃斯库罗斯曾经说过:“对于那些个孩子们应该由老师来教,而成年人则应该由诗人来教”。可见那些诗词言语中所蕴含的韵律,正是我们心灵的老师。

以古希腊的城邦教育为例。不论是严肃的肃剧还是轻快的谐剧,它们都和宗教祭祀相关——每年一度的酒神祭。当时的僭主,庇西斯特拉图(Peisistratus)将酒神祭拜表演引入雅典城邦,创办了戏剧节,而其原因则是——有抱负的统治者必须陶铸人民的性情,而戏剧就充当了民众的德育“教材”:通过戏剧,城邦民众反观自己的言行、审查自己的政治意见、雕琢自己的城邦美德。

不论是讲究平仄的中国诗歌,还是五/七/五/七/七的日本短歌,又或者是古希腊那一本本厚厚的戏剧台本。在这些言语文字韵律之间,人世间的哲思、喜乐哀愁、思念与爱都包括进来了,而这些美好的情感随着韵律,终传递到空间和时间的远方,在听者心中泛起波浪。也许正如——

不要再睡,好妻子,
唱你美妙的歌曲,
哀悼我们伊提斯,
黄颔百啭声无已,
清音穿过忍冬丛,
遥遥直达天帝宫,
使得金发太阳神,
邀神起舞击像筝,
引起众神齐唱和,
唱和你的悼亡歌。

——节选自《鸟》阿里斯托芬

 

和元宝酱做了一个公众号——多面的电影之思\(≧▽≦)/

管理员元宝(全名是人见人爱陈元宝)是学社科的大学森,我则化身为cocola~某一天元宝和cocola聊天的时候讲到:一千个人眼中有一千个哈姆雷特,很多时候,事情本身没有改变,只是看待事情的角度变了。于是这个公众号就诞生了,因为想知道,一部电影,从不同的视角出发到底可以看到多少,可以发散到多广。不同学科或者领域的朋友,看到的东西可能会大有不同。元宝和cocola决定选择一部电影(大多是经典),从不同角度进行反复讨论(⁎⁍̴̛ᴗ⁍̴̛⁎)

初心就是:探索和交流

最后欢迎学心理学、人类学、经济学、物理学等等且喜欢电影的小伙伴加入(/ω\)

欢迎大家来围观\(≧▽≦)/

我们的二维码w
我们的二维码w