-
C++ Placement New
问题的引入
最近有若干同学和我讨论在实现 C++
vector容器的时候如何实例化一个没有默认构造函数的类。比如下面的代码:#include <cstddef> template <class T> class vector { size_t capacity, size; T *data; public: vector() : capacity(10), // for example size(0), data(new T[capacity]) { } ~vector() { delete [] data; } }; struct Point { int x, y; Point(int a, int b): x(a), y(b) {} }; int main() { vector<int> a; vector<Point> b; }在实例化
vector<int>的时候不会有问题,然而当实例化vector<Point>的时候就会出错了 -
matplotlib 小结
因为物理实验作图的原因,我有幸接触了
matplotlib,配合scipy的其他组件,可以完成我所有需要的任务(我的需求都是非常初级的 :-) )。鉴于接下来可能转战R,所以特地把最近matplotlib的使用经验总结一下。import
import numpy as np from pylab import * from scipy.optimize import leastsq from matplotlib.font_manager import FontManager简单的绘图
# 折线图: plot(x, y) plot(x, y, '-') plot(x, y, '-', linewidth=2) # 散点图 plot(x, y, 'o', markersize=2) plot(x, y, ',') -
djvu 切边 + 转 pdf
我打算预习一下下学期的物理,物理老师扔过来一个 djvu 格式的电子书。 djvu 格式是我比较讨厌的一个格式,虽然它相比 pdf 来说,文件大小会小得多,但是毕竟阅读不方便,软件支持并不是很好。如果说,问题只是 djvu 那就算了,毕竟 iPad 上还是有应用可以打开的,最不能忍受的是,这本电子书左右合起来有 1/3 的空白,上下合起来有 1/2 的空白,在阅读器上阅读的体验极差。于是我就打算将其切边,并转换成 pdf 。
解决方法
-
记 p2dv.in
背景
作为一篇总结&回忆文,还是先跟各位说一下背景吧。
我们今年的程序设计课大作业是写一个斗兽棋的AI。其实我在去年或者前年的时候就有写一个AI对战的网站的想法,只是没有这个机会。于是我听到大作业的题目之后,我就问助教可不可以这么搞,嗯,萌萌哒助教同意啦。
于是我就开始写这么个网站了。
写网站
这个网站的域名
p2dv.in实际上跟大作业一点关系都没有。暑假的时候突然想到了这么个域名,意思是 Place to dive in ,有点仿v2ex.com的 Way to explore ,然后看好便宜就买了下来。这次发现有这么个闲置的域名,于是就直接拿来用了。我觉得如果你知道它的意思的话,这个域名应该是很好记的。 -
SELinux 初接触
起因
事情是这样的,因为不想在 OS X 上装一大堆东西,所以我装了台 CentOS 7 虚拟机作开发环境。我很开心地
yum install httpd php,然后随便git clone了个 PHP 脚本,结果竟然挂了:[Tue Jul 22 15:27:24.474225 2014] [:error] [pid 3739] [client 192.168.0.2:59118] PHP Warning: fopen(sessions/86e9d16ee7c20c458f): failed to open stream: Permission denied in /var/www/html/cookielesscookies/index.php on line 38, referer: http://192.168.0.251/cookielesscookies/嗯, Permission denied 好说,权限问题嘛,把用户和用户组改成
apache嘛。结果问题依旧。呃,那就简单粗暴地递归修改权限为0777嘛。问题仍然存在……这就有点匪夷所思了, Permission denied 这种问题一般来说就是文件权限的问题,可我甚至检查了若干个父目录,权限设置看起来都没问题。在折腾了一个多小时后,突然一拍脑袋想起来有个叫做 SELinux 的东西!
果然一把 SELinux 关掉,问题就解决了!然后我就发了条微博来吐槽 SELinux。没想到转着转着,竟然有人给了这么个网站:Stop Disabling SELinux 。里面有个链接,是 Red Hat 2012年峰会的一个关于 SELinux 的讲座。看了之后真的觉得,确实是冤枉了 SELinux,自己也确实是太年轻了。
有关 SELinux
下面简单记录下我从视频里面学到了的东西吧。