希望在新的一年里,能写更多有意思的代码,交到女朋友,身体安康吧!
排 序 方 法
![](https://114.132.121.208/wp-content/uploads/2019/12/image.png)
[公告]日本分站
广州 核聚变 Tour 2019 ARG 攻略
另类实境游戏(英语:Alternate reality game,简称ARG)也称另类现实游戏、替代现实游戏、侵入式虚拟现实游戏、侵入式虚拟现实互动游戏,它是一种将真实世界当作平台的互动式剧情,通常包含多媒体与游戏元素,侵入式虚拟现实游戏的故事情节可以因参加者的想法或行动改变。
预热
11月8号晚上官博就发了一个用Unicode编码的微博
![](https://114.132.121.208/wp-content/uploads/2019/11/image.png)
解法很简单,通过在浏览器的控制台输出一下即可。
![](https://114.132.121.208/wp-content/uploads/2019/11/image-1.png)
主线流程
由于之前就云参加了一下杭州那个ARG的游戏,我买的又是第一天的票,所以一进场就开始找了。不过鉴于之前貌似是需要通过拼图的二维码才能找到ARG的入口,所以第一时间就去剑玉那拿了第一个碎片来扫码。
起点
当你扫开碎片的二维码后,输入ARG就会跳转到谜题1解谜方法:第一个谜题主要就是去找按照碎片的顺序去找指示牌对应的字母就好了.按顺序组合后,将会得出”sparkstage”这个字符串(也是第二个谜题的目标地点)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-3.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-4.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-5.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-6.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-7.png)
时间表
第二个谜题初看的时候是很迷糊的,圈圈星星啥的实在难懂,下面提示可以去sparkstage康康。由于一时间没啥想法,玩完Xbox那边就过去瞧了瞧。解密方法:这里的黑星,双星,圈圈其实就是对应的占位符,下面的6为f可知,剩余几个字母对应的数字其实就是对应了26个字母表里面的字母,而具体的数字,只要看看副舞台外面的时间表(或者手册上的那个也行),就可得知对应的字符为info,解出第三题。
![](https://114.132.121.208/wp-content/uploads/2019/11/image-8.png)
文件纸
这关是我卡了最久的了,一开始我以为是数独,但后面我才知道这个原来是一个猪圈密码,其实那个图里面右侧的白点,数字和字母都是干扰项目,忽略掉,按顺序画一下就好了。(其实一开始我是蒙出来的),通过查阅密码表,即可知道谜底为BOOOM。
![](https://114.132.121.208/wp-content/uploads/2019/11/image-9.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-11.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-12.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-13.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-14.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-15.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-16.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-17.png)
迷宫
接下来的就很简单了,只需要去到BOOOM展台隔壁找寻到谜题上对应的透明卡片,重叠即可看到答案flag。
![](https://114.132.121.208/wp-content/uploads/2019/11/image-18.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-19.png)
字母
这一题就仅仅需要找寻到对应地点的字母即可,按照场册子上面的顺序去相应地点找到字母即可,最终答案为exchange(兑换处)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-20.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-21.png)
终点
此时前往兑换处,出示截图,工作人员就会给你一张奖状的了(理论上前几名还会有U盘的,但是我太菜了,所以就仅仅剩下一张奖状了,不过也玩的十分的开心了,希望在今后搞多一点花样啊LOL)如果有dalao知道U盘内容是啥,欢迎来留言讨论呀,我其实想知道那个U盘能干啥用?获得成就,获得线下恰饭机会?
![](https://114.132.121.208/wp-content/uploads/2019/11/image-22.png)
![](https://114.132.121.208/wp-content/uploads/2019/11/image-23.png)
最后
这是我第一次参与到ARG的活动之中,之前就看过东大招新还有一些别人组织的ARG活动,都感觉贼炫酷,期盼可以参加一次。今天终于是梦想成真了,感觉是全场最有意思的一个游戏环节。通关的时候有着充足的获得感。我也希望可以自己发起一个ARG活动,整活一下:)如果明年还有羊城站,我必再战!!!
我回家了
[笔记][翻译] 在Windows上编译PHP拓展
- 来自于 Benoit Blanchon 20 January 2015
- 译者 7gugu
- 原文章链接 https://blog.benoitblanchon.fr/build-php-extension-on-windows/
我最近尝试编写了一个PHP拓展,虽然说文档上有很详细的介绍如何在Linux上进行编译操作,但是关于在Windows平台上编译的信息少之又少。
所以这篇文章就是给大家介绍一下,如何使用Visual Studio构建一个PHP拓展。
环境要求
这篇指南是假设在你已经编写了链接所示的一个输出”Hello World”的PHP拓展。 here并且你已经在Linux上成功编译了。
在Windows上构建你的PHP拓展前,你需要完成以下的操作。
- Visual Studio
(这里是一个坑点,请确认你的VS的编译器的版本跟PHP编译时的版本是一样的。比如说官网的7.1.33是用的VC14【VS2015】编译的,那么你的拓展也要是用VC14编译的,否则是不能安装你编译好的拓展的。如果你用的是VS2017+,但你有用的是旧版本的PHP环境写的拓展,那么你就要手动编译PHP才能使用你编写的拓展了) - PHP源代码 (未编译的PHP代码)
在之后的文章中,我将会按一下列表假设:
- PHP源码是位于
C:\php-src
- 你编写的”Hello World”拓展位于
C:\MyPhpExtensions\hello
在Windows上编译拓展跟Linux上有点相似
你应该已经很熟悉这个过程,但这里还是列出了一个步骤清单给你:
(以下虽然是在Linux上构建编译时运行的代码,但是在Windows上其实是一样的,只是有一些指令的名字和运行方法有点不同而已)
- 安装
php-devel
包 - 运行
phpize
从config.m4
中生成configure
脚本 . - 运行
./configure --enable-hello
生成Makefile
- 运行
make
开始编译拓展
(以下是在Windows上编译时要改变的东西,按步骤执行就可以顺利生成拓展了)
使用 config.w32
替代 config.m4
在Windows平台上, 使用config.w32
代替config.m4
,但是格式上还是有点不同。
从 config.m4
迁移到 config.w32
是非常直接的, 你仅仅需要的是把Automake的代码转换成JavaScript语法的代码。
下面是一个简单的例子:
ARG_ENABLE("hello", "Hello World support", "no");
if (PHP_HELLO != "no") {
EXTENSION("hello", "php_hello.c", true);
}
不要忘记把EXTENSION
的第三参数设置成true
, 这么设定就会选择生成动态编译库(DLL)而不是静态编译到PHP代码中。
如果你想知道更多关于*.32的语法信息,你可以看看别的文件夹的*.w32文件。
使用 buildconf.bat
代替 phpize
在Windows平台上,你将会使用 buildconf.bat
代替 phpize
。
打开VS的”适用于 VS 20XX 的 x86/64 本机工具命令提示”命令行工具并且运行以下代码
cd C:\php-src
buildconf.bat --add-modules-dir=C:\MyPhpExtensions
buildconf.bat
将会自动扫描 C:\MyPhpExtensions
文件夹下所有的 config.w32
文件。
随后将会生成一个 configure.bat
的脚本文件.
使用 configure.bat
代替 ./configure
在Linux上,configure
就仅仅是用来编译拓展用的,但是在Windows平台上configure.bat
是用来编译PHP代码为exe文件的。
你需要在运行 configure.bat
时添加以下命令行选项以生成最少数量的内容,从而确保不必解决对外部库的依赖性
cd C:\php-src
configure.bat --disable-all --enable-cli --enable-hello
--disable-all
就是禁止生成其他内容,省略了输入 --disable-xxx
和 --without-xxx
的必要 , --enable-cli
是启用php命令行界面 (ie php.exe
) , --enable-hello
是启用编译你的拓展”Hello”
系统默认会按照TS(线程安全)模式进行编译,如果你需要NTS(线程非安全)模式进行编译,你仅仅需要加上这一条 --disable-zts
,就可以按照NTS模式进行编译。
使用 NMake
代替 Make
configure.bat
将会生成一个Windows版本的 Makefile
用作在Windows上 Make
.(编译代码)
开始编译代码,仅仅需要运行以下代码即可:
nmake
这不仅仅会编译你自己的拓展,同时也会将 php.exe
编译出来。 这对于开发者来说,是一个很方便的做法,因为你需要一个相同编译环境生成出来的 php.exe
,那样子才能正确安装你的PHP拓展。
实际上,为了加载到php中,您的扩展必须与php构建相匹配,条件是:
- 系统位数 (32 or 64 位)
- 线程是否安全 (TS 模式 或者 NTS 模式)
- 编译器的版本 (VS9, VS11 之类的.)
如果你确实不需要编译出 php.exe
, 那么你仅仅需要按以下代码运行即可:
nmake php_hello.dll
消除警告(Warnings)
在编译PHP拓展的过程中,编译器常常会报一堆警告:
如果你想禁用这些警告,你可以在 c:\php-src\win32\build\config.w32
中,加入以下的代码段:
ADD_FLAG('CFLAGS', ' /wd4005 /wd4267 /wd4244 ');
ADD_FLAG('CFLAGS_BD_ZEND', ' /wd4018 /wd4101 /wd4090 /wd4273 ');
ADD_FLAG('CFLAGS_BD_MAIN', ' /wd4018 /wd4090 ');
ADD_FLAG('CFLAGS_BD_MAIN_STREAMS', ' /wd4013 ');
DEFINE('RC', '$(RC) /nologo /d _USING_V110_SDK71_');
并且,在 C:\php-src\ext\standard\config.w32
中加入这行代码:
ADD_FLAG('CFLAGS_BD_EXT_STANDARD', ' /wd4047 /wd4018 ');
最后在 C:\php-src\sapi\cli\config.w32
中加入下列这一行代码:
ADD_FLAG('CFLAGS_BD_SAPI_CLI', ' /wd4018 ');
笔记: 一些能够帮助你开发PHP拓展的博文[英文生肉]
- Extension Writing Part I: Introduction to PHP and Zend
- Extension Writing Part II: Parameters, Arrays, and ZVALs
- [Extension Writing Part II: Parameters, Arrays, and ZVALs continued]
- Extension Writing Part III: Resources
- Wrapping C++ Classes in a PHP Extension
- PHP Extension Writing
- PHP Extensions Made Eldrich: Working with the API ÔÇô the PHP C API
- PHP Extensions Made Eldrich: Classes
- Build your own PHP on Windows
- PHP Internals Book
- Zend API: Hacking the Core of PHP
[PHP]使用PHP拓展获取CPU占用率
导语
这两天了解了一下怎么用C++写PHP的拓展,今天整活了一下,才终于发现为啥那么少人给PHP写拓展了。PHP拓展真的是太难写了,入门门槛极其的高,贼复杂(指的是在Windows平台开发,贼复杂),做了这个就不搞了,溜了溜了。
如何使用
- 把php_getcm.dll复制到ext文件夹中
- 编辑php.ini,启用php_getcm.dll
- 在php代码中使用getcm_func(),即可获取CPU的占用率(int)
使用要求
之所以说难开发,还有一个方面,就是在windows平台上开发的时候,如果用了vc15编译了旧的版本,你就贼难测试,就不得不切换到新的PHP版本,然后继续踩坑,超级难受。
1. php:7.1.33
2. nts
3. vc15(这个没有官方版本,要你自己下载php来编译,贼麻烦,喜欢的可以折腾一下,没空看的就算了)
最近有空,会把一篇开发指南翻译一下,留给之后的dalao用吧。
下载链接
DLL库下载:php_getcm
[笔记]qduoj 前端 二次开发总结
前言
接了学校一个SRP项目,所以最近一个月都开始搞这个OJ的前端开发,现在分享一些这个OJ部署的一些坑点,帮助大家避坑,也Mark下给自己做笔记用.
启动前端组件
git clone https://github.com/QingdaoU/OnlineJudgeFE.git
npm install
npm run build:dll
配置Config/index.js
npm run dev
FE即可成功编译
引入Component
- 创建Conponent VUE文件
- 配置route/route.js
- 配置views/index.js
- 参考iview语法设置导航栏入口
- 修改i18n的双语文件即可
通过上述步骤即可将自己的组件引入到FE之中
关于OJFE使用的CSS坑点
QDUOJ这个平台实际上时使用了两种UI框架
1. iView
2. ElementUI
其中iView是作为UI组件库使用,所以一开始Coding的时候会发现前端的语法与ElementUI对不上.而ElementUI的实际作用仅仅是给OJ提供了动画效果,所以为了让自己的组件也有弹出的效果,我们要使用Panel组件使得自定义的组件具有相同的弹出动画效果.
如果需要自定义动画效果的话,则需要我们自身使用transition标签来创建动画效果
结语
现在其实开刚刚起步,大致把前端摸了一下(后端也会摸,但我不是主要负责这块的),后续应该还有坑点.到时候也会分享出来给大家看的.
小声BB,QDU的文档真的不咋地.(可能是我菜才看不懂吧,若有冒犯请见谅:joy:)
[笔记]Git使用总结
导论
最近学校老师布置了”项目版本管理”,然后搞了一周,总结了一些协作的经验,写在这里,方便大家也方便日后的自己。
下载仓库的代码
- 访问网页仓库
- 获取SSH/HTTP链接
- cmd中输入以下指令
git clone 仓库地址
提交自己的代码到Git库
- 修改自己的代码
- 执行以下指令
git add * //把代码从工作区提交到缓存区 git commit -m "message" //添加代码备注 git push [--set-upstream origin branchname] //假如使用新的分支,就需要设定分支点[一般从master分支]
拉取更新到本地
- 如果master是自己控制的,执行以下代码即可
git pull
- 如果master是别人的,你只是一个贡献者,就需要执行以下代码了
git checkout master //合并分之后,要先切换到主分支才能拉取到新数据 git pull git checkout branchname //切换回自身分支进行开发 git merge master //合并本地分支
完成上述的代码,即可顺利的更新本地代码。如果发生冲突,就需要先手动解决了冲突才能合并本地分支。
回滚版本
- 执行以下代码即可
git reset --hard 版本号 //版本号就是那一串数字字母混合的字符串,可以用缩写,git会自动识别
结束
这周大概就只总结到这些经验,但中了这么多坑之后,总结出了git正确的使用姿势也算是一大收获了。确实很开心:)就先写到这吧,以后有更多姿势再写进来。
[笔记]如何在linux中挂起进程至后台?
前言:
最近在cent os上部署了SteamBot的程序脚本,出现需要挂起的需求,在此记录一下方法,方便以后查阅学习.
挂起进程的两种方法:
- 使用nohup
- 使用”&”符号
“&”符号:
在terminal中输入:
command &
即可将进程挂起至后台,但是退出terminal就会结束进程
nohup命令
在terminal中输入
nohup command > /dev/null 2>&1 &
即可将进程挂起至后台,并且退出terminal也不会结束进程
(这里使用 > /dev/null 是为了重定向标准输出到空,屏蔽输出)
(2>&1 的意思就是将标准错误重定向到标准输出,屏蔽错误输出)
(nohup只是防止进程在退出terminal的时候,会结束程序用的,&才是将程序放到后台的)
正确操作方法:
使用nohup command > /dev/null 2>&1 &
例如:
nohup sh ./steambot.sh > /dev/null 2>&1 &