Category Archives: Web

Linux命令行测试你的网站速度

注意,本文说的是利用Linux命令行测试你的网站的速度不是网络的速度。

使用场景这样,比如你有2台服务器,一个A国家,另外一个在B国家,你想测试B国家访问A国家的服务器上的网站的速度,你有2个几个选项,

最容易想到就是代理服务器,找到B国家的代理服务器,然后在你的电脑上,因为是使用的是代理服务器,那么你的电脑上的任何地理位置都可以。

继续阅读

python完成自动提交form的功能

python完成自动提交form的功能

记得刚毕业的那会儿,参加工作的第一家公司,每天下班都要通过内部系统(web)打卡的,当时觉得很麻烦所以就做了一个系统自动完成,但是使用c++调用IE访问打卡系统的网页,然后通过,鼠标移动到指定的坐标,然后在发送鼠标点击动作。这种方式很不灵活,因为一定不能让被调用IE失去焦点。也就是这个过程中电脑最好不要被动到。

今天发现了一个python的库,可以很轻松的完成这个功能,并且还能你解决我上面提到的这个问题。这个库的名字就是selenium,这个英文单词的意思是硒,是个化学元素的名字。

官方网站:

http://www.seleniumhq.org/

selenium支持的语言不只有python,还有

  • java
  • c#
  • Ruby
  • python
  • Javascript(Node)

可以在官方网站下载最新的版本,也可以使用pip提供的版本,如果使用pip提供的版本,那么先通过pip安装它

$ sudo pip install selenium

关于如何使用selenium,请参看

http://selenium-python.readthedocs.io/

下面是这个网站给出的一个简单的例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

继续阅读

使Python程序的窗口不要显示出来

使Python程序的窗口不要显示出来

这个标题不是很贴切,一时半会儿想不到更好的,就先用这个。为了更好的说明这个标题要说的事情,这里我们举个例子吧,例如利用python和firefox来完成一个周期性检测一个订票系统,那么你要它一会儿调用firefox,一会儿关掉,如果这个电脑是你正在用,那么这种方式会让影响你,那么我们就想到把不要这个窗口显示出来,而是所有的工作都在后台进行。这个怎么做到呢?我们需要2个东西

  1.  Xvfb
  2.  pyvirtualdisplay

先安装他们:

$ sudo yum install -y Svfb

$ sudo pip install pyvirtualdisplay

接下面我们测试一下:

#!/usr/bin/env python

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()

display.stop()

继续阅读

Yii的Gii生成Oracle的modal时候出错

Yii的Gii生成Oracle的modal时候出错

先说一下,本文提到的问题涉及的环境:

  1. Linux Centos 7
  2. Oracle 12c
  3. Yii 2.0.8
  4. httpd

使用Yii的Gii生成modal的时候遇到下面的错误

Database Exception – yii\db\Exception
ORA-00942: table or view does not exist
The SQL being executed was: SELECT username
FROM dba_users u
WHERE EXISTS (
SELECT 1
FROM dba_objects o
WHERE o.owner = u.username )
AND default_tablespace not in ('SYSTEM','SYSAUX')

Caused by: PDOException
ORA-00942: table or view does not exist

继续阅读

Yii 2 enablePrettyUrl后不能访问gii

Yii 2 enablePrettyUrl后不能访问gii

本篇我们谈谈在enablePrettyUrl后不能访问gii的问题。关于gii 是什么,不在我们讨论的范围,这里只给出官网的一个链接

http://www.yiiframework.com/doc-2.0/guide-start-gii.html

Generating Code with Gii – Getting Started – The Definitive Guide to Yii …

为什么要使用enablePrettyUrl,在之前的博文中有提到

Yii 2.x 简化URL

继续阅读

socket.io的命名空间(namespace)和房间(room)

socket.io的命名空间(namespace)和房间(room)

socket.io支持命名空间和房间

默认是的命名空间是 '/'

没有默认的房间

socket, room, namespace三者关系

socket 一定是属于某个namespace,

room 一定是属于某个namespace,

socket可以在某个房间或者不在任何房间

使用of来创建命名空间:

var nsp = io.of('/my-namespace');
nsp.on('connection', function(socket){
  console.log('someone connected'):
});
nsp.emit('hi', 'everyone!');

客户端可以使用

var socket = io('/my-namespace');

链接到这个命名空间

通常使用默认命名空间,所以可以使用省去命名空间名字,

var socket = io('/');

或者

var socket = io();

房间(room)

创建和加入房间是同一个函数 join

socket.join('some room');

离开房间

socket.leave('some room');

继续阅读

socket.io建立的聊天程序

socket.io建立的聊天程序

nodejs的socket.io的功能如同websocket一样,是建立长链接,可以让服务器主动发消息给客户端(通常是指浏览器)

但是好处是服务端和客户端用的是同一种语言,都是javascript,学习成本比较低。

下面就一个简单的例子:

继续阅读

nodejs socket.io初探

nodejs socket.io初探

nodejs的socket.io的功能如同websocket一样,是建立长链接,可以让服务器主动发消息给客户端(通常是指浏览器)

但是好处是服务端和客户端用的是同一种语言,都是javascript,学习成本比较低。

下面就一个简单的例子:

建立简单的聊天的程序:

继续阅读