Tag Archives: 编程

21

学校都不教的C语言基础知识

前几天 @Paspy 问我一个C++的问题,顺便扯出了他所在的美国学校竟然教授C++的方法和我所在的国内二本大学别无二致。我还认为国外大学至少应该在这方面的教育会比国内的更好,至少要教给学生从编码到编译的本质。现在的学校都是随便找个IDE,教学生“新建一个工程,在里面写代码,然后按那个编译按钮,接着按那个运行按钮”,这样就完了。结果学生根本不知道程序是如何从代码变成可执行文件的,更不用说在编译中要涉及的头文件去哪里找,以及动态链接库方面的东西了。为此我决定写篇文来说明一下。虽然目前我对这方面也只是知道皮毛,但至少其基本过程还是知道得清楚的。

Posted in 技术向 | Tagged , | 18 Comments
16

做 libantixunlei 扯出来的无聊技术之二

这回是如何高效地判断出迅雷的FTP指令序列。这里所说的FTP指令序列是指,一个FTP会话从连接开始,到开始下载文件前,发送给服务器的FTP指令的序列。另外,指令参数是不算入指令序列里面的。一个典型的FTP指令序列就是:USER->PASS->SIZE->PASV->RETR。

Posted in 技术向 | Tagged , , , , , | 10 Comments
14

ytp弹幕算法说明

                 弹幕这个词应该不用我解释了,那么这篇文就是对ytp的算法的说明,在这里给出PDF文档和ODF文档,同时为方便阅读直接把文章内容贴上来了,不过没有排版,就看TinyMCE和OpenOffice的交流如何了。ytp弹幕算法说明.pdfytp弹幕算法说明.odt

Posted in 我的东西 | Tagged , , , , | 22 Comments
11

Linux下使用被动模式调用MPlayer

首先说明,虽然我已经成功地做到了调用MPlayer并给它发送命令然后读取结果,但是具体的过程细节到底是怎样的我还不是很清楚。同样是因为这样的原因,我在文中的叙述可能有技术上的错误,欢迎指正 popen()函数用于打开一个进程,返回结果是一个FILE*类型,这个返回值根据打开方式的不同,分别指向使用popen()打开的程序的输入流或输出流,可以直接当成一个普通文件来使用。 popen()的第一个函数是命令行,就是要执行的程序的命令,第二个参数可以是”r“或”w”,这和fopen是差不多的,一个是读取,这时候返回结果可以当成打开的进程的输出流,另一个w就是输入,返回结果可以当成打开进程的输入流 popen()函数实际上是一个封装好的用于进程间管道通信的函数,可惜的是它的第二个参数不能是”rw”,只能是r或w。因为我们要从MPlayer的输出流读取返回的信息,所以这里要使用”r“参数。 这样我们就不能直接从标准输入给MPlayer输入指令了。不过没关系,MPlayer提供了被动模式,可以从一个FIFO文件中给MPlayer输入指令。只要在调用MPlayer的时候使用 -slave -input file=path 参数就可以了 因为 -input file=path 里面的path是一个FIFO文件,所以我们必须先创建一个这样的管道。使用unlink()和mkfifo()函数就可以做到。这里我们使用/tmp/cmd作为FIFO文件,代码如下

Posted in 零零散散 | Tagged , | 5 Comments
10

wxWIdgets在Linux下配置为静态编译的方法

之前弄的那个ytsub,是用wxWidgets作GUI的。后来我把ytsub拿到另一台电脑上,却无法运行了。问了度谷之后知道是因为在编译的时候没有把wxWidgets的库静态编译到程序中,这样程序在运行的时候就会寻找wxWidgets的运行库,而如果没有安装wxWidgets的话程序就不能启动了。用ldd命令可以看到一个程序需要加载哪些库,我用ldd查看ytsub以后,发现其中有一个模块就是wx的GTK模块,看来果然是因为没有把wxWidgets库编译到程序中去的问题啊。

Posted in 零零散散 | Tagged , , | Leave a comment
十二 21

使用计算机给一个看似四色猜想的反例上色

下面这个图中有四个地图,其中图4是一个看起来很像四色猜想的反例的地图。想要手工给图4上色是很困难的,至少对我来说是很困难的。我曾经花费了应该有超过1小时的时间来尝试给这个地图上色,但最终结果是两个相邻区域的颜色相同了。此图片来源:Matrix67 手工上色失败以后,我就想用电脑进行上色,于是就有了这篇文章。

Posted in 零零散散 | Tagged , , | 3 Comments