Browsed by
Category: Uncategorized

NEUOJ Tech Talk #1

NEUOJ Tech Talk #1

开始之前 First Slide , Wait till 18:30 欢迎大家来到NEUOJ Tech Talk技术交流会, 今天, 我们会将在开发东北大学学生在线测评系统(NEUOJ)中使用的种种技术, 以通俗易懂的方式,分享给热爱技术的你们, 那么在我们的Talk开始之前, 让我们首先感谢那些对我们OJ开发给出种种建议的各位同学, 并颁发我们的奖品 颁奖环节 我们有请吴老师, 为他们进行颁奖 感谢吴老师,我们的NEUOJ 持续提供给大家进行渗透测试, 安全测试的平台, 并且对成功找到并且利用我们OJ的漏洞的同学,颁发丰厚的奖品, 从32GU盘 到 2T移动硬盘, 视漏洞大小而定, 对为OJ提出宝贵建议, 报出非常有价值的bug的同学,我们会进行奖励  欢迎大家踊跃参与 那么现在, 就让我们开始吧~ [Slide 2] Tech Talk Starts 首先, 我们来了解一下,NEUOJ到底是什么 我们会先介绍 什么是Online Judge , 然后介绍 为什么我们要开发NEUOJ, NEUOJ的特点是什么, 然后会给大家展示NEUOJ的开发史 [Slide 3] 什么是OJ呢, OJ是一个可以在线编译提交的代码, 并且自动对代码的运行结果进行判断, 并且返回给用户判断之后的结果这样一个系统, O 代表Online, J代表 Judge。 我们下面来展示一下,什么是在线编译器。 [切换图片]大家可以看到,这是一个在线编译网站 codepad 的界面, 我们写了一个Hello world …, 然后选择我们的编程语言,C语言, 大家可以看到,这里支持C/C++/Haskell/PHP等多种编程语言的在线编译运行 [对这个图片进行解释], 然后当我们点击提交之后,[切换图片] 就会看到这个界面: 我们可以看到,这里已经输出了我们程序的运行结果。 这就是Online Compiler, 而Online Compiler 的功能的基础上, 再加上自动测评(Judge)的功能, 就是我们的Online Judge.[图片展示] [简单介绍] [Slide…

Read More Read More

Draft

Draft

最近真的压力山大, 好多事情在一起需要解决,而且重要程度都是同样重要, 没有办法取舍任何一项任务 不过I am VOID Just Keep VOID

函数调用 foobar 实验

函数调用 foobar 实验

本文记录对 C 与汇编的联系, C的函数调用在汇编下的实现, 下面是实验用的C语言源码 int bar(int c, int d) { int e = c + d; return e; } int foo(int a, int b) { return bar(a, b); } int main(void) { foo(2, 3); return 0; }  

lightdm 配置

lightdm 配置

卸掉了gdm 换成了轻量级的lightdm,  配置很简单(不过我脑残的输错了背景图片的地址) sudo pacman -S lightdm lightdm-gtk-greeter sudo vim /etc/lightdm/lightdm-gtk-greeter.conf 在conf中将[greeter]下面的那个background 注释去掉  并且添加上自己的背景图片的地址,注意 lightdm 这个用户是没有访问我的home的权限的, 要给图片放到 /usr/share/pixmaps/里 ,并且给/usr/share/pixmaps/ 添加 x 权限, 该文件夹下面的文件添加 r权限 sudo chmod a+x /usr/share/pixmaps/ sudo chmod a+r /usr/share/pixmaps/ -R   然后就可以用了~ 不过我发现我电脑上的锁屏键不好用了,于是给锁屏重新配置了一个快捷键, 在gnome settings 里 的keyboard 配置的 shortcut 命令为 dm-tool lock 效果图 (至今不知道该如何截取这个屏幕 , 除了使用虚拟机 , 所以凑合看吧各位QAQ

setcap wine 遇到的问题解决

setcap wine 遇到的问题解决

之后为了让普通用户也能通过wine访问到网络接口,需要给wine的相关程序(wine-preloader 和 wineserver wine) 一些特权   参考  man capabilities 和 setcap  首先需要给CAP_NET_RAW 权限 这个要给到 wine-preloader 上,不过在设置完这个权限之后,执行 wine XXX.exe 会报错 wine: error while loading shared libraries: libwine.so.1: cannot open shared object file: No such file or directory 这是因为特权模式的程序运行的时候是不会检测到相对路径的lib库的, 具体参考文章如下:http://stackoverflow.com/q/6493846/296473  解决方法在文中已有了 就不赘述了  上述问题解决后,运行wine 会提示  Internal errors- Invalid parameters  , 而且winedbg不可以attach到进程, 这个问题的解决方法是给wineserver(不是wine-preloader)CAP_SYS_PTRACE权限    

[Laravel] laravel目录下执行 php composer.phar install遇到的各种问题的解决

[Laravel] laravel目录下执行 php composer.phar install遇到的各种问题的解决

由于我们在国内需要做的一些其他设置: 大家都知道,国内有一些奇异的魔力, 导致composer的官方源packagist.org不能使用或者使用起来不顺手,下载速度特别慢之类的问题. 幸运的是国内的一些好心的巨巨们还是提供了一个供国人使用的packagist镜像 : packagist.cn , 想要使用这个镜像的话,需要在你的composer.json文件最下面加入这样一段(诶,你问最下面是指整个文件的最下面么? =  = 少年你先去看看json的格式再来问问题吧Qrz,) “repositories”: [ { “packagist”: false }, { “type”: “composer”, “url”: “http://packagist.cn” } ] 然后 执行 php composer.phar install 使用的镜像就是国内的镜像咯~~ PHP Fatal error:  Class ‘Phar’ not found in %Yourpath% 遇到这个问题 , 说明你的php配置中没有打开对phar文件的支持, 而如果你用的是xampp里内置的php的话(比如我用的就是xampp的php),那么说明 你的path里没有加入xampp的php的执行路径, 注意这个路径一定要放在/usr/bin/php的前面 ,放在系统自带的php的前面,不然的话一会儿还会遇到其他的坑,我下面也会说明, 不过现在只要记住将xampp的php的执行路径放在path里的所有系统自带的php的执行路径的最前面就好. 如果你用的是系统自带的php的话, 那么就用php –ini 看一下配置文件的位置, 并且将配置文件中 extension=phar.so启用(去掉前面的注释即可) [RuntimeException]:Mcrypt PHP extension required. 嘛嘛,这就是我前面说的那个问题咯~ 如果你是用的xampp里的php,一定要把xampp中php的路径放在所有php执行路径的最前面哦~ 不然的话就会出现这种问题了呢, 这个问题是由于你用/opt/lampp/bin/php composer.phar install 后 他去$PATH里找第一个PHP的$PATH结果找到了系统自带的php的path,而恰好你又没有给系统自带的php配置mcrypt module, 所以就GG了哦~ 如果你用的是系统自带的php的话,那么很显然你应该启用libmcrypt了哦~ , 具体怎么做查查就知道了 不能执行 php composer self-update 提示https链接不支持blabla 你需要给xampp的php(或者系统自带的php)配置一个cacert.pem 证书文件  下载地址在这里哦~ , 下载完毕之后,…

Read More Read More

CSAPP Linking 学习总结

CSAPP Linking 学习总结

1.一个C语言程序是如何被编译成为可执行程序的 首先 通过C preprocessor 将C语言代码中包括的头文件都写入代码 生产 main.i文件 然后main.i的代码经过编译器 编译为汇编代码 main.s 然后main.s 的代码再经过汇编语言编译器 翻译为机器码的obj(Relocatable Object Files)文件main.o 这时候编译器的任务已经完成了 ,下一步是由链接器,将main.o,以及main.o依赖的所有obj文件 链接成为一个可执行文件, 生成了 a.out文件(静态链接) 2.什么是静态链接(由于很多词语涉及专业术语,专业术语用英语描述) 链接的过程分为两个子过程: Symbol Resoultion 和 Relocation. 下面概括一下两个过程: 2.1 Symbol Resolution  将每个定义好的(Relocatable Object File 中的)符号分配唯一的一个名称 , 举个例子说明一下, 如果有两个C语言文件 需要被链接成一个可执行的文件, 并且在a.c里有一个全局变量 声明 int counter, 在另一个文件b.c里也有同样的一个声明, 这时将两个a.o b.o文件链接为一个可执行文件的时候,就会给两个文件的counter分配不同的名字, 保证每个符号都有唯一的一个名字与之对应 2.2 Relocation 将每个Relocatable Object File 链接到的地址(如函数调用时的地址) 修正为正确的值. 同样举例来说明,在编译如下程序的时候 #include”vecAdd.h” int main(void) { vec a; vec b; a.x = 2; b.x = 3; a.y = 1; b.y = -1; vec c = Add_vec(a,b); return 0;…

Read More Read More

[HDU 5178 ,BC#31 A] Pairs 二分优化时间复杂度

[HDU 5178 ,BC#31 A] Pairs 二分优化时间复杂度

题目中数据个数比较多,10^5个数据,时间复杂度n^2就会超时,因此不能用n^2的算法,因此采用二分的方式 先对数进行排序,进行一轮扫描,每一次扫描的时候找到最后一个与当前数的差的绝对值小于等于k的数(也就是说下一个数据和当前数据的的差的绝对值大于k) 这时,说明从当前数到找到的数这个范围内的所有数都可以任意组成满足条件的pair,不过要注意去掉重复的对。 代码如下 /************************************************************************* > File Name: A.cpp > Author: VOID_133 > ################### > Mail: ################### > Created Time: 2015年04月23日 星期四 11时15分31秒 ************************************************************************/ #include<iostream> #include<algorithm> #include<cstdio> #include<vector> #include<cstring> #include<map> #include<queue> #include<stack> #include<string> #include<cstdlib> #include<ctime> #include<set> using namespace std; const int maxn=100005; /*MACRO*/ #define FORi(l,r) for(int i=(l);i<(r);i++) #define FORj(l,r) for(int j=(l);j<(r);j++) #define FORk(l,r) for(int k=(l);k<(r);k++) #define MEMSET0(i) memset((i),0,sizeof((i))) #define MEMSET1(i) memset((i),-1,sizeof((i))) int x[maxn]; int n,k; long long cnt; int abs_(int x) { return x>0?x:-x; } long long C2(int a) {…

Read More Read More