[PHP]使用PHP拓展获取CPU占用率

导语

这两天了解了一下怎么用C++写PHP的拓展,今天整活了一下,才终于发现为啥那么少人给PHP写拓展了。PHP拓展真的是太难写了,入门门槛极其的高,贼复杂(指的是在Windows平台开发,贼复杂),做了这个就不搞了,溜了溜了。

如何使用

  1. 把php_getcm.dll复制到ext文件夹中
  2. 编辑php.ini,启用php_getcm.dll
  3. 在php代码中使用getcm_func(),即可获取CPU的占用率(int)

使用要求

之所以说难开发,还有一个方面,就是在windows平台上开发的时候,如果用了vc15编译了旧的版本,你就贼难测试,就不得不切换到新的PHP版本,然后继续踩坑,超级难受。
1. php:7.1.33
2. nts
3. vc15(这个没有官方版本,要你自己下载php来编译,贼麻烦,喜欢的可以折腾一下,没空看的就算了)
最近有空,会把一篇开发指南翻译一下,留给之后的dalao用吧。

下载链接

DLL库下载:php_getcm

[笔记]qduoj 前端 二次开发总结-1

前言

接了学校一个SRP项目,所以最近一个月都开始搞这个OJ的前端开发,现在分享一些这个OJ部署的一些坑点,帮助大家避坑,也Mark下给自己做笔记用.

启动前端组件

git clone https://github.com/QingdaoU/OnlineJudgeFE.git
npm install
npm run build:dll

配置Config/index.js
第一个target是后端的地址

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使用总结

导论

最近学校老师布置了”项目版本管理”,然后搞了一周,总结了一些协作的经验,写在这里,方便大家也方便日后的自己。

下载仓库的代码

  1. 访问网页仓库
  2. 获取SSH/HTTP链接
  3. cmd中输入以下指令
git clone 仓库地址

提交自己的代码到Git库

  1. 修改自己的代码
  2. 执行以下指令
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的程序脚本,出现需要挂起的需求,在此记录一下方法,方便以后查阅学习.

挂起进程的两种方法:

  1. 使用nohup
  2. 使用”&”符号

“&”符号:

在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 &

 

[笔记]如何配置Apache+Laravel环境

前言:

由于开发需要,现在的后端统一使用Laravel5.5进行开发,遂整理了一些配置笔记,方便以后配置环境以及减少配置时间.

安装方法:

Laravel配置

1.切换到网站根目录

cd d:\WWW

2.使用composer安装laravel项目

[此处有个注意点,这个代码最后的foldername是指你的项目文件夹名称,如果不改的话,回车之后,composer就会在执行命令时所处的目录下新建”foldername”文件夹作为项目文件夹]

composer create-project  --prefer-dist  laravel/laravel=5.5.*  foldername

Apache配置

1.配置Apache的Httpd.conf文件,对目标端口进行监听

对80和8080端口进行监听

2.配置Httpd.conf文件,启用httpd-vhosts.conf

启用配置文件

3.配置httpd-vhosts.conf文件,对Laravel程序入口(public/)文件夹进行绑定.

对laravel入口文件夹进行绑定[若需要使用80端口做别的开发,务必调回根目录]

结尾:

初次使用Laravel是会有一些迷糊,但只要用熟了,就会使用的很快的了.

 

PyRule34爬虫

简介:

Python版Rule34的图片爬虫,其实本身原理跟PHP版是一样的,这个是用来作为Python的复习&练手的,所以就没啥特别要介绍的了

特性:

  1. Python
  2. 面对象
  3. 使用Pycurl拓展

安装教程

  1. 安装python&下载仓库数据
  2. 使用指令pip install pycurl,安装pycurl拓展(如果安装失败,可参考https://stackoverflow.com/questions/507927/how-do-i-install-pycurlhttps://blog.csdn.net/weixin_41592575/article/details/78984585)
  3. 编辑bot.py(参数类同PHP版)
  4. python bot.py 即可运行

仓库链接:

https://gitee.com/7gugu/python-rule34Lib

软件截图:

联系方式:

邮箱:gz7gugu@qq.com

Ajax留言板

简介:

一个简易的Ajax-PHP-Vue留言板,这个作品练手用的,很早之前就已经实现出来了,最近两天学习使用Vue框架,所以对前端进行了重写,并且想发出来共同交流学习一下。

特性:

  1. 前后端分离
  2. Vue+axios

安装教程

  1. 导入SQL/comment.sql
  2. 修改ajax.php中的数据库连接信息
  3. 开始使用

仓库链接:

https://gitee.com/7gugu/ajax-comment-vue

软件截图:

联系方式:

Email:gz7gugu@qq.com

[笔记]Steam acceptOffer 403

引言:

这两天帮别人开发了一个自动接收报价的脚本.重新使用SteamBot API的时候,发现API的AcceptOffer函数始终无效,故花了一些时间,琢磨出了解决的办法.(也希望给后来者留下一些帮助)

问题:

原始的代码下,直接向steamcommunity.com/tradeoffer/0000/accept发送请求,Steam就会返回403 forbidden的回应.

解决:

cookie中加入sessionid即可,php中可使用这样子,重新组合一下cookie再发起链接,即可修复该bug.

[笔记]Java报错Local variable XX defined in an enclosing scope …

今天写JAVA代码的时候,碰见了一个这么个报错,由于解决方法第一次知晓,故在此留下笔记。

原代码:

for(int i = 0; i < tabName.length; i++) {
  Btn = new JButton(tabName[i]);
  Btn.setPreferredSize(new Dimension(
    100, 25));
  Btn.addActionListener(new ActionListener() {
      @Override 
      public void actionPerformed(ActionEvent e) {
            tabObj.setSelectedIndex(i); //BUG 
      } 
    }); 
  panel.add(Btn); 
}

原因:

在BUG标识处,我由于使用了一个匿名的未知范围的变量,JAVA编译器就抛出了错误”Local variable i defined in an enclosing scope must be final or effectively final“。

解决方案:

for(int i = 0; i & amp; lt; tabName.length; i++) {
  Btn = new JButton(tabName[i]);
  Btn.setPreferredSize(new Dimension(100, 25));
  final int j = i; //通过这个转换,把一个无范围的匿名变量转换成final变量 //FIX 
  Btn.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e){ 
        tabObj.setSelectedIndex(j);//FIX 
      } 
    }); 
  panel.add(Btn); 
}

通过使用final int j这个中间变量,java8的编译器就会认为j是一个常量,是安全可用的,因此就不会抛出上述错误,故解决。

[尬吹]六一儿童节快乐

前言

没事就上来这里吹吹水啦,已经1个多月没发过博客了。之前超级无聊,一直再帮学校开发一个资源共享系统,搞得我也不知道发什么好(毕竟是闭源项目,发不了了,最多以后发个图来给大伙瞧瞧..),就趁着今天是儿童节上来发发图啥的。

这个月买了啥?

这个月把三年前的电脑配置升级了一下,从970升级到2060了,入了根intel的m.2终于,

看”左手plus”中毒了,就入手了一台武士半幅相机,设计感很超前,人体工学也很强,唯二缺点就是重和拉风箱(不过相机是80年代的产物了,感觉也是很好的了)。

这个月吃了啥好吃的?

第一个是越南生熟肉汤粉巨好吃,加点香料,香疯了

第二个是那个蟹黄小贝(真的很一般啦)我感觉没有小红书上说的那么好吃,平平淡淡不是很特别(好在没有去排队,找黄牛加了10块买,不然就真的亏了啊)

第三个是玉米八宝粥,强烈安利,冰了以后很清爽的甜点

第四个就普通的烧烤啦,但第一次是学校外面的烧烤,烤豆角挺好吃的,MARK了

第五个是鲜肉肠,超级好吃,强烈安利。

第六个是”林富记”的速食河粉,不是很特别,6.5一碗,不是特别推荐。

第七个是学校外的潮汕肠粉,超级多料,超满足

第八个是四饭的凉面,不够三饭的白面好吃

第九个是蜜城的奶盖,强烈安利,9块一杯芝士奶盖,很好喝,丝毫不逊色隔壁12-15块的。

还想说点东西

现在就是想在博客上尬吹一下,记录一下生活,不想像校内的一些dalao一样,把博客当一个学习笔记本用,还是想写点关于生活的,不然真的太枯燥了。真的想要记笔记还是搞一个MD来记就好了吧。其实也就这里有人能听我糊逼一下了,平时自己也没太多人能倾诉一下。好了,写到这先吧,有空再写。