Aries‘s的部落 http://iw3c.com/blog zh-CN 专著于php、js、python、wxpython技术 Fri, 15 Apr 2011 00:00:00 Fri, 15 Apr 2011 00:00:00 让你的Pyqt4.QtWebKit支持Flash http://iw3c.com/blog/archive/python-pyqt4-qtwebkit-flahs/ http://iw3c.com/blog/archive/python-pyqt4-qtwebkit-flahs/ Sun, 19 Feb 2012 00:00:00 +0000 aries 这是用QT Designer生成的代码,我只是在里面加上了两行自动下载FLASH插件的代码[/more]
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file ´E:\wwwroot\python\Demo\Demo.ui´
#
# Created: Sun Feb 19 09:05:26 2012
# by: PyQt4 UI code generator 4.9.1
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1024, 768)
self.centralWidget = QtGui.QWidget(MainWindow)
self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralWidget)
self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.webView = QtWebKit.QWebView(self.centralWidget)
self.webSettings = self.webView.settings()
self.webSettings.setAttribute(QtWebKit.QWebSettings.PluginsEnabled,True)
self.webView.setUrl(QtCore.QUrl(_fromUtf8("http://xiaomizhou.net/")))
self.webView.setObjectName(_fromUtf8("webView"))
self.verticalLayout.addWidget(self.webView)
self.verticalLayout_2.addLayout(self.verticalLayout)
MainWindow.setCentralWidget(self.centralWidget)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", u"小米粥", None, QtGui.QApplication.UnicodeUTF8))

from PyQt4 import QtWebKit

if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

最关键的就是这两行
self.webSettings = self.webView.settings()
self.webSettings.setAttribute(QtWebKit.QWebSettings.PluginsEnabled,True)


]]>
0 http://iw3c.com/blog/archive/python-pyqt4-qtwebkit-flahs/#comments
PHP Warning: PHP Startup: Unable to load dynamic library \'D:/php5/ext/php_mysqli.dll\' http://iw3c.com/blog/archive/839/ http://iw3c.com/blog/archive/839/ Thu, 16 Feb 2012 00:00:00 +0000 aries 在群里面受一哥们儿的启发,竟然解决了,如果你的问题还没有解决,请按下面的方法试试!
比如我的apache装在D盘,目录是D:/severs/apache
PHP的目录是D:/servers/php5
这样,把D:/servers/php5/libmysql.dll拷贝到D:/servers/apache/bin这个目录下面
重启apache,问题迎刃而解!~~
]]>
0 http://iw3c.com/blog/archive/839/#comments
Python查询Mysql时返回字典结构 http://iw3c.com/blog/archive/python-mysqldb-return-dict/ http://iw3c.com/blog/archive/python-mysqldb-return-dict/ Tue, 14 Feb 2012 00:00:00 +0000 aries MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,无意中在网上找到简单的修改方法,就是传递一个cursors.DictCursor就行。
默认程序: MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,无意中在网上找到简单的修改方法,就是传递一个cursors.DictCursor就行。 默认程序: 
import MySQLdb
db = MySQLdb.connect(host = ´localhost´, user = ´root´, passwd = ´123456´, db = ´test´)
cursor = db.cursor()
cursor.execute(´select * from table´)
rs = cursor.fetchall()
print rs
[/more]
# 返回类似如下
# ((1000L, 0L), (2000L, 0L), (3000L, 0L))
修改后:
import MySQLdb
import MySQLdb.cursors
db = MySQLdb.connect(host = ´localhost´, user = ´root´, passwd = ´123456´, db = ´test´,cursorclass = MySQLdb.cursors.DictCursor)
cursor = db.cursor()
cursor.execute(´select * from table´)
rs = cursor.fetchall()
print rs
# 返回类似如下
# ({'age': 0L, 'num': 1000L}, {'age': 0L, 'num': 2000L}, {'age': 0L, 'num': 3000L}) 或者也可以用下面替换connect和cursor部分
db = MySQLdb.connect(host = ´localhost´, user = ´root´, passwd = ´123456´, db = ´test´)
cursor = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)


]]>
0 http://iw3c.com/blog/archive/python-mysqldb-return-dict/#comments
Python环境软件下载地址总结 http://iw3c.com/blog/archive/837/ http://iw3c.com/blog/archive/837/ Sun, 12 Feb 2012 00:00:00 +0000 aries Python下载地址:http://www.python.org/getit
wxPtyhon下载地址:http://www.wxpython.org/download.php
Ulipad下载地址:http://code.google.com/p/ulipad/downloads/list
MySQL-python:http://www.lfd.uci.edu/~gohlke/pythonlibs/
comtypes:http://sourceforge.net/projects/comtypes/
Py2exe :http://sourceforge.net/projects/py2exe/
编译Python文件出现“ImportError: No module named win32com.client”时请下载安装
http://sourceforge.net/projects/pywin32/files/ 相应python版本的win32扩展。
]]>
0 http://iw3c.com/blog/archive/837/#comments
CentOS 5.5服务器使用yum安装配置Apache、PHP和Mysql http://iw3c.com/blog/archive/centos-yun-php-apache-mysql/ http://iw3c.com/blog/archive/centos-yun-php-apache-mysql/ Sun, 12 Feb 2012 00:00:00 +0000 aries 本文的内容是基于在CentOS5.5上的操作。
CentOS操作系统ISO镜像光盘文件下载地址请看:http://www.qkweb.net/thread-347-1-1.html ,如果是在IDC处购买的服务器,IDC供应商会免费为用户安装好操作系统,用户只需要进行如下操作,配置服务器环境即可。
一、安装Apahce, PHP, Mysql, 以及php连接mysql库组件
yum -y install httpd php mysql mysql-server php-mysql
二、安装mysql扩展 yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
或一次性粘贴安装Apache php Mysql 及php连接mysql库组件和mysql扩展:
yum -y install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc mysql-devel libdbi-dbd-mysql
三、设置mysql数据库root帐号密码
mysqladmin -u root password ‘newpassword’ “newpassword” 代表的是你想要设置的密码,新安装的mysql的root根用户密码默认为空,设置密码后可以让mysql数据库更安全 代码: mysql -u root -p (此时会要求你输入刚刚设置的密码,输入后回车即可) mysql> DROP DATABASE test; (删除test数据库) mysql> DELETE FROM mysql.user WHERE user = ”; (删除匿名帐户) mysql> FLUSH PRIVILEGES; (重载权限)
四、按照以上的安装方式, 配置出来的默认站点目录为/var/www/html/,在此处新建一个php脚本: 代码: <?php phpinfo(); ?> 五、通过在浏览器输入服务器的IP,也可以是localhost,正常情况下就可以看到phpinfo函数显示出来的PHP变量了。
如果未显示,请使用 service httpd restart 命令重新启动apache服务器。
六、备注:
yum命令安装完apache php mysql之后,它们的配置文件路径分别为:
apache : /etc/httpd/conf/httpd.conf
php: /etc/php.ini
mysql: /etc/my.cnf
]]>
0 http://iw3c.com/blog/archive/centos-yun-php-apache-mysql/#comments
APMserv中对Apache优化的设置 http://iw3c.com/blog/archive/apmserv-apache/ http://iw3c.com/blog/archive/apmserv-apache/ Wed, 18 Jan 2012 00:00:00 +0000 aries
注意其中对虚拟主机是如何设置的,是Apache2的写法,比较规范。

还有PHP限定到目录,安全模式的开启。
httpd.conf[/more]
ThreadsPerChild 500
MaxRequestsPerChild 10000
ServerRoot "D:/MyServer/Apache"
Listen 80

LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule ssl_module modules/mod_ssl.so

LoadFile "D:/MyServer/PHP/libmysql.dll"
LoadModule php5_module "D:/MyServer/PHP/php5apache2_2.dll"

PHPIniDir "D:/MyServer/PHP/php.ini"

ServerAdmin webmaster@localhost
ServerName 127.0.0.1:80

DocumentRoot "D:/MyServer/www/htdocs"

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>

<Directory "D:/MyServer/www/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<IfModule dir_module>
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml default.shtml
</IfModule>

<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>

ErrorLog logs/error.log

LogLevel warn

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
</IfModule>

<IfModule alias_module>
ScriptAlias /cgi-bin/ "D:/MyServer/www/cgi-bin/"
</IfModule>

<Directory "D:/MyServer/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

DefaultType text/plain
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
</IfModule>

Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-multilang-errordoc.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-languages.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

NameVirtualHost *:80

<VirtualHost *:80>
ServerName *
DocumentRoot "D:/MyServer/www/htdocs"
</VirtualHost>

<Directory "D:/MyServer/www/htdocs">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
AllowOverride None
Order Deny,Allow
Allow from all
</Directory>

Alias /phpmyadmin "D:/MyServer/www/phpMyAdmin"

<Directory "D:/MyServer/www/phpMyAdmin">
AllowOverride None
Options Indexes FollowSymLinks Includes
Order allow,deny
Allow from all
</Directory>

Alias /sqlitemanager "D:/MyServer/www/SQLiteManager"
<Directory "D:/MyServer/www/SQLiteManager">
AuthUserFile "D:/MyServer/SQLiteManPwd.ini"
AuthType Basic
AuthName "SQLiteManager管理员登录"
require valid-user
AllowOverride None
Options Indexes FollowSymLinks Includes
Order allow,deny
Allow from all
</Directory>

ProxyPass /asp http://127.0.0.1:10322
ProxyPassReverse /asp/ http://127.0.0.1:10322/
Include conf/apmserv/vhost.conf
Include conf/apmserv/vhost_ssl.conf
Include conf/apmserv/vdir.conf

vhost.conf
<VirtualHost *:80>
ServerName test.com
ServerAlias www.test.com
DocumentRoot "D:/MyServer/www/htdocs/test"
</VirtualHost>
<Directory "D:/MyServer/www/htdocs/test">
Options IncludesNOEXEC
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.shtml index.aspx default.aspx
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir "D:/MyServer/www/htdocs/test/;D:/MyServer/PHP/uploadtemp/;D:/MyServer/PHP/sessiondata/"
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE¦TRACK)
RewriteRule .* - [F]
php_admin_value safe_mode On
</Directory>


]]>
0 http://iw3c.com/blog/archive/apmserv-apache/#comments
全国各地电信网通铁通DNS服务器地址 http://iw3c.com/blog/archive/834/ http://iw3c.com/blog/archive/834/ Tue, 17 Jan 2012 00:00:00 +0000 aries 河北:

河北石家庄(中国网通)

首选DNS:202.99.160.68

备用DNS:202.99.166.4

河北省邯郸市(网通)

首选DNS :202.99.160.68

备用DNS :202.99.166.4

河北省邯郸市(中国铁通)

首选DNS :211.98.2.4

备用DNS :61.232.206.102

河北省邢台市(中国网通)

首选DNS:202.99.160.68

备用DNS:202.99.166.4
[/more]
河北省秦皇岛(中国网通)

首选DNS:202.99.166.4

备用DNS:202.99.160.68

河北省沧州市(中国网通)

首选DNS:202.99.160.68

备用DNS:202.99.176.30或202.99.166.4

河北省张家口市(中国网通)

首选DNS:202.99.166.4

备用DNS:202.99.160.68

河北省张家口市(中国电信)

首选DNS:219.150.32.132

备用DNS:219.146.0.130

河北省邢台市(中国网通)

首选DNS:202.99.160.68

备用DNS:202.99.166.4或202.99.168.8


贵州

贵州省贵阳市(中国电信)

首选DNS:202.98.192.67

备用DNS:202.98.198.167


云南

云南省玉溪市(中国电信)

首选DNS:222.172.200.68

备用DNS:61.166.150.123

云南省(中国铁通)

首选DNS:211.98.72.7

备用DNS:211.98.72.8


辽宁

辽宁省朝阳市(中国铁通)

首选DNS :61.232.206.102

备用DNS :211.98.4.1

辽宁省朝阳市(中国电信)

首选DNS :219.150.32.132

备用DNS :219.146.0.130

辽宁省朝阳市(中国网通)

首选DNS :202.96.69.38

备用DNS :202.96.64.68


河南

河南省 (中国电信)

首选DNS 222.88.88.88

备选DNS 222.85.85.85

河南省郑州市(中国电信)

首选DNS:219.150.150.150

备用DNS:219.150. 32.132

河南省郑州市(中国网通)

首选DNS:202.102.224.68

备用DNS:202.102.227.68

河南省安阳市(中国铁通)

首选DNS:211.98.192.3

备用DNS:61.233.65.3

河南省洛阳市(中国电信)

首选DNS:222.88.88.88

备用DNS:222.85.85.85

河南省网通DNS(全省)

首选DNS:202.102.224.68

备用DNS:202.102.227.68


四川

四川省泸州市(中国电信)

首选DNS:61.139.2.69

备用DNS:202.98.96.68

四川省泸州市(中国铁通)

首选DNS:61.236.159.99

备用DNS:61.139.2.69


内蒙古

内蒙古呼和浩特市(中国电信)

首选DNS:219.148.162.31

备用DNS:219.150.32.132


天津

天津(中国电信)

首选DNS:219.150.32.132

备用DNS:219.146.0.132


广东

广东省广州市(中国电信)

首选DNS:61.144.56.100

备用DNS:61.144.56.101

广东省广州市越秀区(中国电信)

首选DNS:202.96.128.86

备用DNS:202.96.128.166

广东省广州市(中国电信)

首选DNS:202.96.128.86

备用DNS:202.96.128.166

广东省广州市(中国铁通)

首选DNS:61.235.70.98

备用DNS:211.98.4.1

广东省汕尾市(中国电信)

首选DNS:202.96.128.166

备用DNS:202.96.128.86

广东省汕头市(中国电信)

首选DNS:202.96.144.47

备用DNS:202.96.128.166

广东省河源市(中国电信)

首选DNS:202.96.128.166

备用DNS:202.96.128.86

广东省河源市(中国网通)

首选DNS:210.21.196.5

备用DNS:221.5.88.88

广东省深圳市(中国电信)

首选DNS:202.96.128.166

备用DNS:202.96.134.133

广东省阳江市(中国电信)

首选DNS:202.96.128.86

备选DNS:202.96.128.166

广东省增城市(中国电信)

首选DNS:202.96.128.86

备用DNS:202.96.128.166

广东省广州市(中国铁通)

首选DNS:61.235.70.98

备用DNS:211.98.4.1

广东省江门市(中国电信)

首选DNS:202.96.128.86

备用DNS:202.96.128.166

广东省佛山市南海区(中国网通)

首选DNS:221.5.88.88

备用DNS:210.21.196.6


广西:

广西壮族自治区(中国电信)

首选DNS:202.103.224.68

备用DNS:202.103.225.68

广西壮族自治区柳州市 (中国网通)

首选DNS:221.7.136.68

备选DNS:221.7.128.68


湖南:

湖南省衡阳市(中国电信)

首选DNS:220.170.64.96

备用DNS:202.103.96.68

湖南长沙(中国电信)

首选DNS:202.103.96.112

备用DNS:202.103.96.68

湖南长沙(中国铁通)

首选DNS:61.234.254.5

备用DNS:61.234.254.6

湖南省永州市(中信宽带)

首选DNS:219.72.225.254

备用DNS:219.72.225.253

湖南永州市(中国电信)

首选DNS:218.76.248.6

备选DNS:218.76.248.100

湖南省湘潭市(中国电信)

首选DNS:222.246.129.81

备用DNS:59.51.78.211

湖南省常德市(中国电信)

首选DNS:59.51.78.210

备用DNS:222.246.129.80

湖南省益阳市(中国铁通)

首选DNS:61.232.206.100

备用DNS:202.101.172.35


湖南省吉首市(中国电信)

首选DNS:222.246.129.81

备用DNS:59.51.78.211

湖南邵阳市(中国电信)

首选DNS :218.76.192.101

备用DNS :218.76.192.100

湖南省岳阳市(中国电信)

首选DNS:222.246.129.81

备用DNS:59.51.78.211


福建:

福建省厦门市(中国电信)

首选DNS:202.101.103.55

备用DNS:202.101.103.54

福建省泉州市(中国电信)

首选DNS:202.101.107.85

备用DNS:218.85.157.99

福建省漳州市(中国电信)

首选DNS:218.85.157.99

备用DNS:202.101.112.55

福建省福州市(中国电信)

首选DNS:218.85.157.99

备用DNS:202.101.98.55

福建省泉州市(中国电信)

首选DNS:218.85.157.99

备用DNS:202.101.107.98

备用DNS:202.101.107.55

备用DNS:202.101.107.85

福建省龙岩市(中国电信)

首选DNS:202.101.113.55

备用DNS:218.85.157.99(全省备用)


江西:


江西省新余市(中国电信)

首选DNS:202.101.224.69

备用DNS:202.109.226.68

江西省南昌市(中国电信)

首选DNS:202.101.224.69

备用DNS:202.101.226.68

江西省南昌市(中国铁通)

首选DNS:211.98.2.4

备用DNS:211.98.4.1


江苏:


江苏省南京市(中国电信)

首选DNS为:218.2.135.1

备用DNS为:61.147.37.1

江苏省镇江市(中国电信)

首选DNS:218.2.135.1

备用DNS:61.147.37.1

江苏省盐城市(中国铁通)

首选DNS:222.45.1.40

备用DNS:211.98.4.1

江苏省淮安市(中国电信)

首选DNS:61.147.37.1

备用DNS:61.177.7.1


浙江:

浙江省宁波市(中国电信)

首选DNS:202.96.104.15

备用DNS:202.96.104.25

浙江省杭州市(中国网通)

首选DNS:218.108.248.200

备用DNS:218.108.245.157

浙江省溫州(中国电信)

首选DNS:61.153.177.199

备用DNS:61.153.177.198

浙江省杭州市(中国电信)

首选DNS:202.101.172.35

备用DNS:202.101.172.47


陕西:


陕西省榆林市(中国电信)

首选DNS:202.100.4.15

备用DNS:202.100.0.68

安徽:


安徽省(中国电信)

首选DNS:202.102.192.68

备用DNS:202.102.199.68

安徽省阜阳市(中国电信)

首选DNS:202.102.192.68

备用DNS:202.102.199.68

湖北:


湖北省(中国电信)

首选DNS:202.103.44.150

备用DNS:202.103.24.68


山东:

山东省济宁市(中国网通)

首选DNS:202.102.154.3

备用DNS:202.102.152.3

山东省青岛市(中国网通)

首选DNS :202.102.134.68

备用DNS :202.102.128.68

山东省滨州市(中国网通)

首选DNS :202.102.134.68

备用DNS :202.102.128.68

山东省临沂市(中国网通)

首选DNS:202.102.154.3

备用DNS:202.102.152.3

山东省德州市(中国网通)

首选DNS 202.102.152.3

备选DNS 202.102.154.3

山东滕州市(中国网通)

首选DNS:202.102.128.68

备用DNS:202.102.134.68

山东省菏泽市(中国网通)

首选DNS: 202.102.152.3

备用DNS: 202.102.154.3


黑龙江:

黑龙江省全省共用(中国网通)

首选DNS:202.97.224.69

备用DNS:202.97.227.138

黑龙江哈尔滨(中国电信)

首选DNS:219.150.32.132

备用DNS:219.146.0.130

]]>
0 http://iw3c.com/blog/archive/834/#comments
CentOS 5 服务器 Nginx 环境推荐教程 http://iw3c.com/blog/archive/centos5-nginx/ http://iw3c.com/blog/archive/centos5-nginx/ Fri, 13 Jan 2012 00:00:00 +0000 aries 一、系统约定

软件源代码包存放位置 /usr/local/src

源码包编译安装位置(prefix) /usr/local/software_name

脚本以及维护程序存放位置 /usr/local/sbin

MySQL 数据库位置 /var/lib/mysql(可按情况设置)

网站根目录 /home/www/wwwroot(可按情况设置)

虚拟主机日志根目录 /home/www/logs(可按情况设置)

运行账户 www:www

二、系统环境部署及调整

1、检查系统是否正常

# more /var/log/messages (检查有无系统级错误信息)

# dmesg (检查硬件设备是否有错误信息)

# ifconfig(检查网卡设置是否正确)

# ping www.163.com (检查网络是否正常)

# cat /proc/cpuinfo (检查CPU频率是否正常)

# top (按1检测CPU核数是否正常,内存大小是否正常)

2、关闭不需要的服务

# ntsysv

以下仅列出需要启动的服务,未列出的服务一律推荐关闭:

atd

crond

irqbalance

microcode_ctl

network

sendmail

sshd[/more]

syslog

关闭SElinux:修改/etc/selinux/config文件中的SELINUX= 为 disabled

3、更换yum国内源

# cd /etc/yum.repos.d

# mv CentOS-Base.repo CentOS-Base.repo.save

# wget http://centos.ustc.edu.cn/CentOS-Base.repo.5

# mv CentOS-Base.repo.5 CentOS-Base.repo

# yum clean all

4、服务器时间检查和设置

#data (检查时间是否正确,是否是中国时间CST)

#cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (如果时区不对,则执行,时间正常的跳过)

#yum -y install ntp (安装ntp对时工具)

#chkconfig ntpd on (让对时服务开机启动)

5、使用 yum 对系统进行更新并且安装必要软件包

#yum update –y

#yum -y install make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel

6. 重新启动系统

# init 6

三、编译安装L.A.M.P环境

1、下载软件(截止到09年10月的最新版本)

# cd /usr/local/src

#wget http://sysoev.ru/nginx/nginx-0.7.63.tar.gz

#wget http://download.scientificlinux.net/nginx

#wget http://download.scientificlinux.net/php-fpm.conf

#wget http://download.scientificlinux.net/nginx.conf

#wget http://download.scientificlinux.net/fcgi.conf

#wget http://download.scientificlinux.net/php-5.2.10.tar.gz

#wget http://download.scientificlinux.net/php-5.2.10-fpm-0.5.13.diff.gz

#wget http://download.scientificlinux.net/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz (32位系统)

#wget http://download.scientificlinux.net/ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz (64位系统)

#wget http://download.scientificlinux.net/mysql-5.1.39-linux-i686-glibc23.tar.gz (32位系统)

#wget http://download.scientificlinux.net/mysql-5.1.39-linux-x86_64-glibc23.tar.gz (64位系统)

2、安装MySQL

cd /usr/local/src

tar zxvf mysql-5.1.39-linux-i686-glibc23.tar.gz

mv mysql-5.1.39-linux-i686-glibc23 /usr/local/

ln -s /usr/local/mysql-5.1.39-linux-i686-glibc23/ /usr/local/mysql

groupadd mysql

useradd -g mysql mysql

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /usr/local/mysql-5.1.39-linux-i686-glibc23/

cd /usr/local/mysql

./scripts/mysql_install_db --user=mysql

cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

chmod 755 /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig --level 3 mysqld on

cp ./support-files/my-huge.cnf /etc/my.cnf

mv /usr/local/mysql/data /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

编辑/etc/my.cnf

在 [mysqld] 段增加

datadir = /var/lib/mysql

skip-innodb

wait-timeout = 10

max_connections = 512

max_connect_errors = 10000000

在 [mysqld] 段修改

max_allowed_packet = 16M

thread_cache_size = CPU个数*2

将 log-bin 注释

service mysqld start

bin/mysqladmin -u root password 'password_for_root'

其中引号内的password_for_root是要设置的root密码

3、安装Nginx

cd /usr/local/src/

tar zxvf nginx-0.7.63.tar.gz

cd nginx-0.7.63

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_random_index_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module

make

make install

cp /usr/local/src/nginx /etc/init.d/nginx

chmod 755 /etc/init.d/nginx

chkconfig --add nginx

chkconfig nginx on

4、安装PHP和Zend

cd /usr/local/src

tar zxvf php-5.2.10.tar.gz

gzip -cd php-5.2.10-fpm-0.5.13.diff.gz | patch -d php-5.2.10 -p1

cd php-5.2.10

./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/etc/cgi --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --enable-magic-quotes --with-mysql=/usr/local/mysql --with-pear --enable-sockets --with-ttf --with-freetype-dir=/usr --enable-gd-native-ttf --with-zlib --enable-sysvsem --enable-sysvshm --with-libxml-dir=/usr --enable-force-cgi-redirect --enable-fastcgi --with-xmlrpc --enable-zip --enable-fpm

make

make install

mkdir -p /usr/local/etc/cgi/

cp php.ini-dist /usr/local/etc/cgi/php.ini

编辑/usr/local/etc/cgi/php.ini

找到disable_functions =这行,在=号后面加上exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source

找到; cgi.fix_pathinfo=0这行去掉前面;号,如果这行=号后面不是0,则修改成0

mv -f /usr/local/src/php-fpm.conf /usr/local/php5/etc/php-fpm.conf

groupadd www

useradd -g www www

echo 'ulimit -SHn 65535' >> /etc/rc.local

echo '/usr/local/php5/sbin/php-fpm start' >> /etc/rc.local

cd /usr/local/src

tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

cd ZendOptimizer-3.3.3-linux-glibc23-i386

./install

(注意第一个要填的路径是Zend安装路径,第二个是php.ini所在的路径,即/usr/local/etc/cgi)

(不要选重启apache)

5、启动Nginx和php

mv -f /usr/local/src/fcgi.conf /usr/local/nginx/conf/

cp -f /usr/local/src/nginx.conf /usr/local/nginx/conf/nginx.conf

mkdir -p /home/www/wwwroot

ulimit -SHn 65535

/usr/local/php5/sbin/php-fpm start

service nginx start

在/home/www/wwwroot放入一个index.php,内容为

打开浏览器访问,即可看到phpinfo页面

6、设置系统防火墙

编辑/usr/local/sbin/fw.sh

复制以下内容进去

#!/bin/bash

# Stop iptables service first

service iptables stop

# Load FTP Kernel modules

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_nat_ftp

# Inital chains default policy

/sbin/iptables -F -t filter

/sbin/iptables -P INPUT DROP

/sbin/iptables -P OUTPUT ACCEPT

# Enable Native Network Transfer

/sbin/iptables -A INPUT -i lo -j ACCEPT

# Accept Established Connections

/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ICMP Control

/sbin/iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

# WWW Service

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# FTP Service

/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# SSH Service

/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

退出编辑,执行以下命令

# chmod 755 /usr/local/sbin/fw.sh

# echo '/usr/local/sbin/fw.sh' >> /etc/rc.local

# /usr/local/sbin/fw.sh

]]>
0 http://iw3c.com/blog/archive/centos5-nginx/#comments
Linux中APM(apache,php,mysql)环境搭建推荐教程 http://iw3c.com/blog/archive/linux-apache-mysql-php/ http://iw3c.com/blog/archive/linux-apache-mysql-php/ Fri, 13 Jan 2012 00:00:00 +0000 aries 一、系统约定

软件源代码包存放位置:/usr/local/src

源码包编译安装位置(prefix):/usr/local/software_name

脚本以及维护程序存放位置:/usr/local/sbin

MySQL 数据库位置:/var/lib/MySQL(可按情况设置)

Apache 网站根目录:/home/www/wwwroot(可按情况设置)

Apache 虚拟主机日志根目录:/home/www/logs(可按情况设置)

Apache 运行账户:www:www

二、系统环境部署及调整

1、检查系统是否正常

# more /var/log/messages(检查有无系统级错误信息)

# dmesg(检查硬件设备是否有错误信息)

#cat /proc/cpuinfo (检查CPU频率是否正常)

#top (按1检测CPU核数是否正常,内存大小是否正常)

# ifconfig(检查网卡设置是否正确)

# ping www.163.com(检查网络是否正常)

2、关闭不需要的服务

# ntsysv[/more]

以下仅列出需要启动的服务,未列出的服务一律推荐关闭:

atd

crond

irqbalance

microcode_ctl

network

sendmail

sshd

syslog

关闭SElinux:修改/etc/selinux/config文件中的SELINUX= 为 disabled

3、更换快速源

# cd /etc/yum.repos.d/

# mv CentOS-Base.repo CentOS-Base.repo.old

# wget http://centos.ustc.edu.cn/CentOS-Base.repo.5

# mv CentOS-Base.repo.5 CentOS-Base.repo

# yum update

4、使用 yum 程序安装所需开发包(以下为标准的 RPM 包名称)

# yum -y install ntp make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-deve

5、定时校正服务器时钟,定时与中国国家授时中心授时服务器同步

# crontab -e

加入一行:

*/30 * * * * ntpdate 210.72.145.44 > /dev/null 2>&1

6、下载程序包

请到各程序官方网站下载最新的稳定版本存放到/usr/local/src/目录

Apache 当前稳定版 2.2.15

http://apache.securedservers.com/httpd/

PHP 当前稳定版5.2.13

http://cn.php.net/releases/

Mysql 当前稳定版5.0.86

http://dev.mysql.coml/

Zend 当前稳定版3.3.3

http://downloads.zend.com/

Memcache 当前稳定版2.2.5

http://pecl.php.net/package/memcache/

Memcached 当前稳定版1.4.5

http://memcached.googlecode.com

文中的配置文件和脚本限于篇幅,请到以下地址下载

Apache控制脚本

http://c.sihost.net/jb/httpd

Apache配置文件

http://c.sihost.net/jb/httpd.conf

以上列出的程序最新稳定版下载列表

http://c.sihost.net/lamp_tools.list

在 /usr/local/src目录下执行

wget http://c.sihost.net/lamp_tools.list

wget -i lamp_tools.list

7、创建web运行用户

#groupadd www

#useradd -g www www

#mkdir -p /home/www/wwwroot

#chmod +w /home/www/wwwroot

# chown www:www /home/www/wwwroot -R

8、重新启动

# init 6

三、编译安装L.A.M.P环境

1、安装MySQL

# cd /usr/local/src

# tar zxvf mysql-5.0.86-linux-i686-icc-glibc23.tar.gz

# mv mysql-5.0.86-linux-i686-icc-glibc23 /usr/local/

# ln -s /usr/local/mysql-5.0.86-linux-i686-icc-glibc23/ /usr/local/mysql

#groupadd mysql

#useradd -g mysql mysql -d /home/mysql -s /sbin/nologin

#chown -R mysql:mysql /usr/local/mysql

#chown -R mysql:mysql /usr/local/mysql-5.0.86-linux-i686-icc-glibc23/

# cd /usr/local/mysql

# ./scripts/mysql_install_db --user=mysql

#cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

# chmod 755 /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

# chkconfig --level 3 mysqld on

# cp ./support-files/my-huge.cnf /etc/my.cnf

# mv /usr/local/mysql/data /var/lib/mysql

# chown -R mysql:mysql /var/lib/mysql

编辑/etc/my.cnf

在 [mysqld] 段增加

在 [mysqld] 段修改

将 log-bin 注释

service mysqld start

# bin/mysqladmin -u root password password

其中引号内的 password 是要设置的 root 密码

2、编译安装Apache

# cd /usr/local/src/

# tar jxvf httpd-2.2.15.tar.bz2

# cd httpd-2.2.15/

# ./configure --prefix=/usr/local/apache --enable-module=rewrite --disable-access --disable-auth --disable-charset-lite --disable-include --disable-log-config --disable-env --disable-setenvif --disable-mime --disable-status --disable-autoindex --disable-asis --disable-cgid --disable-cgi --disable-negotiation --disable-dir --disable-actions --disable-userdir --disable-alias --enable-so --enable-mods-shared=' access auth auth_anon auth_dbm auth_digest dav dav_fs actions alias asis autoindex cache cern_meta cgi charset_lite deflate dir disk_cache env expires file_cache headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias'

# make

# make install

# cd /usr/local/src/

# mv /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.old

# cp -f /usr/local/src/httpd.conf /usr/local/apache/conf/httpd.conf

# cp -f /usr/local/src/httpd /etc/init.d/httpd

# chmod 755 /etc/init.d/httpd

# chkconfig --add httpd

# chkconfig httpd on

3、编辑安装PHP所需的支持库

Libiconv

# cd /usr/local/src/

# tar zxvf libiconv-1.13.1.tar.gz

# cd libiconv-1.13.1/

# ./configure --prefix=/usr/local

# make

# make install

# cd ..

Libmcrypt

# tar zxvf libmcrypt-2.5.8.tar.gz

# cd libmcrypt-2.5.8

# ./configure

# make

# make install

# /sbin/ldconfig

# cd libltdl/

# ./configure --enable-ltdl-install

# make

# make install

# cd /usr/local/src/

Mhash

# tar zxvf mhash-0.9.9.9.tar.gz

# cd mhash-0.9.9.9/

# ./configure

# make

# make install

# cd ..

# ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la

$ ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so

$ ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4

$ ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8

# ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a

# ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la

# ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so

# ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

# ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

$ ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

# tar zxvf mcrypt-2.6.8.tar.gz

# cd mcrypt-2.6.8

# /sbin/ldconfig

# ./configure

# make

# make install

4、编译安装PHP

# cd /usr/local/src

# tar zxvf php-5.2.13.tar.gz

# cd php-5.2.13

# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/etc --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --enable-magic-quotes --with-mysql=/usr/local/mysql --with-pear --enable-sockets --with-ttf --with-freetype-dir=/usr --enable-gd-native-ttf --with-zlib --enable-sysvsem --enable-sysvshm --with-libxml-dir=/usr --with-apxs2=/usr/local/apache/bin/apxs --with-iconv-dir=/usr/local --with-xmlrpc --enable-xml --enable-shmop --enable-zip --with-mhash --with-mcrypt --enable-discard-path --enable-bcmath --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --with-openssl

# make ZEND_EXTRA_LIBS='-liconv'

# make install

# ./libtool --finish /usr/local/src/php-5.2.13/libs

# cp php.ini-dist /usr/local/etc/php.ini

# echo 'ulimit -SHn 65535' >> /etc/rc.local

# service httpd start

5、安装PHP扩展模块(Discuz! X1.5 用户选装)

Memcache

# cd /usr/local/src

# tar zxvf memcache-2.2.5.tgz

# cd memcache-2.2.5/

# /usr/local/php/bin/phpize

# ./configure --with-php-config=/usr/local/php/bin/php-config

# make

# make install

修改php.ini文件,路径/usr/local/etc/

查找:

修改成:

在此句下面一行

添加:extension = "memcache.so"

查找:

修改成:

保存。

Memcached

# cd /usr/local/src

# tar zxvf libevent-1.4.13-stable.tar.gz

# cd libevent-1.4.13-stable

# ./configure --prefix=/usr/lib

# make

# make install

# cd ../

# tar zxvf memcached-1.4.5.tar.gz

# cd memcached-1.4.5

# ./configure --prefix=/usr/local --with-libevent=/usr/lib/

# make

# make install

# /usr/local/bin/memcached -d -u www -m 128

-p 监听的TCP端口 (缺省: 11211)

-d 以守护进程方式运行 以守护进程方式运行 Memcached Memcached

-u 运行运行 Memcached的账户 非root用户

-m 最大的内存使用单位是MB 缺省是64MB

-c 软连接数量缺省是1024

-v 输出警告和错误信息

-vv 打印客户端的请求和返回信息

-h 打印帮助信息

-i 打印memcached和libevent的版权信息

6、安装Zend Optimizer

# cd /usr/local/src

# tar zxvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

# cd ZendOptimizer-3.3.3-linux-glibc23-i386

# ./install

Please specify the location for installing

Zend Optimizer:

这里填写Zend的安装路径,按下面写即可

/usr/local/Zend

Confirm the location of your

php.ini file:

这里填写的是php.ini的路径,按下面写即可

/usr/local/etc

Are you using Apache Web server?

这里选YES

Apache的控制组件路径

/usr/local/apache/bin/apachectl

是否重启Apache,YES,回车

7、查看确认L.A.M.P环境信息、提升 PHP 安全性

保存以下内容为info.php到/home/www/wwwroot/,检查phpinfo中的各项信息是否正确。

确认 PHP 能够正常工作后,编辑/usr/local/etc/php.ini进行设置提升PHP安全性。

找到:

disable_functions =

在等号后添加下面的函数名字

四、服务器安全性设置

设置系统防火墙

# vi /usr/local/sbin/fw.sh

将以下脚本命令粘贴到 fw.sh 文件中。

#!/bin/bash

# Stop iptables service first

service iptables stop

# Load FTP Kernel modules

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_nat_ftp

# Inital chains default policy

/sbin/iptables -F -t filter

/sbin/iptables -P INPUT DROP

/sbin/iptables -P OUTPUT ACCEPT

# Enable Native Network Transfer

/sbin/iptables -A INPUT -i lo -j ACCEPT

# Accept Established Connections

/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ICMP Control

/sbin/iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

# WWW Service

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# FTP Service

/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# SSH Service

/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# chmod 755 /usr/local/sbin/fw.sh

# echo '/usr/local/sbin/fw.sh' >> /etc/rc.local

# /usr/local/sbin/fw.sh

]]>
0 http://iw3c.com/blog/archive/linux-apache-mysql-php/#comments
中国最后一个武林高手! http://iw3c.com/blog/archive/831/ http://iw3c.com/blog/archive/831/ Wed, 04 Jan 2012 00:00:00 +0000 aries 派出所副所长,为了劝架,被其一脚KO,至今见到二大妈还有下意识护裆的动作。
    派出所小李,据说是学校里散打拿过名次的,先被大妈一口浓痰封眼,然后被一耳光破防,硬直状态下大妈一招大海无量直接推倒,飞进垃圾堆,挣扎起身时,大妈脱下木拖板乾坤一掷,立扑。
    目前大妈对派出所民警战绩是0:4,尚无平局,除一次对手挣破警服逃走外,均为技术性无争议击倒。
    二大妈爱管闲事,打遍大院无敌手。
    我们给她总结了:平世上未平之事,打天下没打之人。
    前一阵流行劲舞团那会,我们院有个小伙玩劲舞团,估计是得罪了什么人,一群人杀到我们院来了,一眼望过去,不愧是搞街舞的,头发染得五颜六色,衣服穿得五花八门,手里拿着的最短是指甲刀,最长是一根竹竿——现在孩子在选择兵器方面太有创意了。
    我们大伙都没做声,该买菜买菜,该打孩子打孩子,这种20+以下人数的团体不需要浪费110,这片是二大妈的治安专属地。
    二大妈飞快地出现了,她大步流星走向对手,神情自然犹如进菜市场里直奔茄子土豆一般,身后掠阵的是她的女儿——东方不败——这是战斗力仅次于二大妈的选手。[/more]
    迎面的劲舞团某团长吐掉嘴里的烟蒂——这是他最后的风度表现,迎头走向二大妈,也许是想表达点什么。
    二大妈根本就没有去听他说什么,或者她根本就是在找一个战的机会而根本不需要理由,她甚至连斗口的话都无心与这些战斗力只有5的渣滓罗嗦。她只是斜眼瞥了一下距离,然后从空中拉出一道雾腾腾的彩虹,将一暖瓶开水全泼了出去。
    BINGO,全中!几乎没有一滴洒在了地上,从发梢渗透到发根,从脑门一直浇到鞋带。
    团长在雾气缭绕中发出了一声嘹亮的刺破苍穹的高音,尽管我在四楼,仍然感觉到了那一声高音绝对是国家大剧院级别的,声遏流云。
    团长一边扭动身躯并作出一些单腿跳之类的奇异动作,一边胡乱想把身上的衣服扯下来,赞美他的战斗本能,居然还能掏出一把比瑞士军刀略长的刀子胡乱挥舞着以表达自己还没有屈服。
    ——还没有完全丧失斗志呢
    二大妈根本没有去看那个可怜的生物是如何反抗的,她只是轻轻地将开水壶放下,反手将第二瓶开水浇了过去。
    然后二大妈就从那个躺在地上,抱着头一边乱滚一边嚎哭的可怜人身边走了过去,她带着一丝嘲弄的微笑,直接走向团长带来的,已经完全看傻了的杂鱼们。一边走一边平摊双手,以示自己已经完全没有携带武器,是来了解情况的。
    对面发一声喊,逃得干干净净,有个女的逃跑时还崴断了高跟鞋。一瘸一拐地逃上了一辆摩托车,转进速度之快令久经沙场的二大妈也没有能够及时追上,二大妈于是抄起墙角的蜂窝煤,首发命中后脑勺,第二发命中反光镜,摩托车手载着他一脑袋煤渣的半昏迷女友狂奔而去。
    二大妈威名赫赫,一般的杂鱼少有一合之将,一般来说一个照面之后就沦为被表演连续技的的展示器。
    二大妈最早是在菜市场打响名号的,如果说有人的地方就有江湖,那么在农贸市场能止小儿夜啼,多少也能不大不小混个一方武林盟主的。最早的时候二大妈搬来,她的三个农村亲戚也来投奔,四人组合那是神挡杀神佛挡杀佛,加上她女儿东方不败并称五朵金花。
    说起东方不败,主要原因是此姑娘实在是彪悍到不需要理由,在她成长的这二十年间,她亲眼见证了她妈妈是如何从一代高手成就武林霸业的,以致于她从小就染上了足够的帝王霸气。
    那时候她上小学期间,我们大院里几乎所有的小孩无论男女都跟在她屁股后面上山下河地做小游击队员,我们笑谈她是我院最有领导才能的。为什么她以四年级身份足以统帅五六年级的小孩甘愿为其驱驰呢?那天我们不经意间看到了答案。
    那天傍晚我们正在院子里纳凉,看着童年的东方不败领着一群小孩从院门外转进来,东方不败抿着小嘴,马尾辫一翘一翘走到象棋摊旁边,伸手从梁大爷手里拽下木头小板凳,轻盈地走到楼下一只正站着四下观望的哈士奇面前,面无表情毫无杀气,举起板凳迎头就是一下。
    瞬秒哈士奇,直挺挺地就躺一边去了。
    东方不败把小板凳一丢,根本看都不看可怜的狗一眼,蹦蹦跳跳地就走了,后面一群小孩簇拥而去。
    真正的毫无动机,真正的视如草芥,真正的不需要理由。童年的东方不败逐渐成长,原本因童年动物性食品摄入过量而发胖的身材,在她上初中后开始急速拉长。在初中的东方不败一如既往地沉默寡言,偶尔一次我从住校的高中返家,正见到东方不败因为考试成绩不好,正默默地拿着家里铲煤球的铁铲往家走。
    我回家刚放好东西,听见外面一声巨响,从窗户往外一看,东方不败全身赤裸双手反绑,从家中暴走出来,二大妈手举铁铲在后面穷追不舍,出院大门时抄起传达室大爷的一盆君子兰掷去,未中。
    那是我唯一一次见二大妈使用飞行道具失手
    也许潜意识里还是留手了吧。
    这事给我的最深印象是:初二时女生原来就发育了啊。二大妈并不是普通的耗子扛枪窝里横。之所以没有持续对外讨伐,我想,可能是人家根本就不屑于战胜更多的杂鱼,一个人论战斗力自然可以称霸猴山,但没见谁有兴致去动物园池子里炫耀武功。
    那时闹下岗的时候,院里面有几位很想不开,天天以泪洗面。这几位中有的家庭妇女向路过的二大妈哭诉了自己的遭遇。女人无论再如何彪悍到逆天,总是很喜欢八卦的。二大妈也不能例外,于是她从头至尾,耐心地从如何为工厂奉献青春听到如何的贪污腐败。
    诸君当然可以想见,大致听到这样的哭诉,都应该有怜悯之心并且摇头叹息这个社会的。
    然而若是走了寻常路,那二大妈也就不需要称之为二了。
    二大妈连续听了几天各种版本的下岗故事后,终于做出了她自认为一生中最贴近侠义范儿的事:她决定单枪匹马,去为大家打出一个公道来。
    这就是我们院的两大武打评书的来源:十三姨火烧录像厅,二大妈炮打电表厂。
    那一天的电表厂是如何的欢乐祥和,可惜当时我没有亲见
    然而正如我所写的,二大妈炮打电表厂,已经成为一段不朽的传奇,在俺们那嘎达传颂。并衍生出了许多个版本。
    目前写在这里的,以比较广泛的一个版本为准。
    据说那天二大妈是骑着自行车奔袭到电表厂的,二大妈有个习惯,从来不拿兵器,对于武林高手来说飞花摘叶皆可伤人,二大妈虽然还不至于,但是作为一个街头豪客,从来都是拿起一切可能与不可能的物品作为武器的,绝对的顺手拈来,完全地从心所欲。
    当时二大妈直接把自行车停在厂大门边上的香蜡店里,进店拿起一盘N万响的大地红鞭炮就走,老板压根就没有反应过来,等他反应过来追到门口,只见二大妈进厂大门,直奔办公楼一楼的会议室就去了,行路带风两眼带电,老板立即缩卵。后来他成为评书的重要说书人之一,经常感慨自己还是江湖丰富,倘若年轻气盛追上去 了,不晓得会不会已经收了纸钱。
    大妈走到会议室外面,一脚把门踹了个半飞,会议室里全厂以上中层干部全部愣住了,只见二大妈潇洒地点着鞭炮垛子,一甩手就给呼噜进会议室里面去了。
    顿时就开锅了,一片电光火石鬼哭狼嚎,会议室还好在一楼,一帮人爬窗户的,钻桌子的,没头苍蝇一样在烟雾中乱窜的,大妈站在会议室门口,抄起一根木棍,出来一个撂倒一个。然后直杀进会议室,无须分辨敌我,无须交战规则,凡是烟雾中看见的,都是一招丢倒。
    厂保卫科长,炮兵团侦察连出身,跳窗时被一棍砸中脚踝,栽入苗圃。
    厂采购科副科长,号称黑白两道通吃,出门时被一铅锌桶水桶套中脑袋,然后被逃难群众踩过。
    厂里某高手,据说武术世家,练习X拳数十载,混乱中被大妈一烟灰缸爆头,烟灰缸是铜铸的。
    整个会议室里近百男女,逃的逃,败的败,大妈在会议室里拿着拖把杆痛殴每一个能追上的人,人人胆丧,没有一个人停下来还手或者抵抗,二大妈龙过江河自分水路,来回杀了几遍,会议室里硝烟未尽,基本上有行动能力的都跑或爬出了房间,二大妈已经冲上了办公楼二楼。
    二大妈最为无敌的就是,从来都是不考虑后果,或者说她从来也不在乎事情闹大了如何收场,当然,我们可以理解为:收场善后什么的凡人的事情,根本不是二大妈需要思索的。
    在 她杀进会议室的那一刻起,她一句话也没有多罗嗦,诸位你们煮饭前会和米饭说话吗?二大妈完全是进来就凭借着战斗本能一瞬间王霸之气就震慑了全场,所有的人哭爹喊娘却几乎没有一个人停下来问为什么要打他他究竟做错了什么,而是毫无章法的逃窜,可见大家都默认了对面的确是站在食物链更高层次的生物。
    会议室里的人惨遭屠戮,跑得快的甚至跑出了厂大门,他们茫然地揉着听不见声音的耳朵,眼中含着烟熏的泪水,无助地检查着身上的伤痕——大多数是胡乱逃跑造成的,互相比划着交换答案——刚才究竟是怎么回事?
    而这时,二大妈已经横扫了整个三楼。
    幸亏二楼的财务装了铁门,二大妈直接杀上了三楼,三楼里大多数人刚刚从楼道窗户往下张望,警觉点的刚走到楼梯口,迟钝点的才打开房门,废柴级的还在办公室里坐着,二大妈旋风般卷上了三楼,三楼顿时人间地狱。
    狭窄的楼道里还堆着各类东西,后面的人还在看前面发生了什么事情,就被暴风般砸来的各种东西丢翻,前面的人根本连对手是男是女都无心去看,只知道对手如虎入羊群一般冲杀过来,抄起手边的任何东西照人群最密集的地方就砸,包括花盆、开水瓶、球鞋、垃圾桶、从书桌上拽下来的抽屉……
    二大妈在投掷飞行道具方面手速奇快而且劲道十足。因为她从不刻意选择兵器也从不特地选择目标,更加不会去看毁伤效果,凡是被丢中的人都被她近身一脚踹翻,清空射界。
    楼道内前面的人惊恐地朝后面逃窜,把后面的人挤倒了就直接手脚并用地从其身上爬过去。大部分人都在混乱的拥挤中被感染了情绪,撞在桌子角上也忘记了痛。在二大妈一瓶开水过去之后整个阵型彻底崩溃了,所有的人手脚交缠在一起动弹不得。
    二大妈转身就朝楼下杀去。
    这是二大妈战史上最彪悍的一页,二大妈在这一天以一人之力横扫千军,当者披靡。
    在我们这座小城里,
    有过警匪大战,
    有过黑帮械斗,
    有过不明真相的群众和构建和谐的ZF激烈谈心,
    他们应该庆幸
    对手不是二大妈
    据很多版本说,那天二大妈以高屋建瓴银河倒挂之威,势如破竹从三楼杀奔一楼,楼梯上死伤枕籍血流成河
    这个我是不信的
    因为我想,没有人敢于在那个时候有反冲锋的勇气的
    编这些版本的人无非是想说他们并不是懦夫而已,他们反抗了的
    结果没啥差别
    不过照顾到他们自尊心的考虑,二大妈对这些版本也从未驳斥过。
    她压根不在乎。
    那天她回到一楼,可能路上粗暴地挪开了个别碍脚的路障,然后从容地出了大楼。
    据说还去厕所洗了个手。然后一边甩着手在空气中风干,一边往外走出了大楼、

出了厂大门
    骑上自行车
    扬长而去
    没有一个人敢于阻挡
    没有一个人来问为什么
    一个人也没有
    二大妈就在大家互相搀扶的茫然目光下,骑上车走了。她走的是那么从容,以至许多人甚至不知道她就是刚刚把自己从窗户里打出来的杀戮者。
    然而,杂鱼们也是有尊严的
    当天晚上,警察就赶去了我们院,荷枪实弹,戴钢盔穿防弹背心。二大妈回来的太从容,我们院甚至没人知道她就是今天讨伐电表厂的高手。
    结果当天晚上我们都吓坏了,院里呼啦啦一下子来了三辆警察面的,警灯闪得贼亮。
    他们来抓二大妈
    请大家记住一个不争的事实,如果拿枪的人不开火,那就是给个原子弹也白搭
    警察呼啸而来,我们完全是不明就里,不过想来二大妈应该是有觉悟的。
    本来我偷偷地把门开了一道小缝想看看怎么了,但是门外立即有一个威严的声音喝令我滚回去。
    我服从了,我知道我只是凡人。
    他们也是。
    然后我就听见楼上响亮的耳光声,敲打声,威严的喝令声,接着是一个高亢的不屈的问候祖宗十八代的声音,从四楼到一楼,没一句重样的。
    然后全楼都出来看了
    全大院都出来看了
    没人再威严地喝令我们滚回去了
    他们正忙
    二大妈和四个荷枪实弹的警察扭成一团,从楼梯上移动下来,东方不败在后面,拿着一根炉钩子乱打
    用移动这个词,是因为我们都不知道怎么形容他们下来的样子
    一会警察在上面
    一会二大妈在上面
    一会二大妈消失了,警察自己扭在一起
    东方不败不考虑这个,谁在上面打谁。
    警察身上全是屎尿味
    二大妈家得买新马桶了
    警察的钢盔上往下流着奇怪的东西,拉成长长的丝条。
    战术背心上糊着奇怪的糊
    直到一楼,大妈还在用蛮拔下来的冲锋枪的弹匣猛砸一个警察的头盔
    并且将手里的稀糊朝任何一个靠近的人身上抹
    隔夜的尿啊顶风十里地啊
    所有抓捕警察面如土色
    能躲多远是多远
    只有东方不败认真地打,炉钩子打得警察钢盔嘡嘡嘡,漆都打掉了。
    见大妈和一群警察屎尿横流地扭打着下来,三辆警车唰的一下都拼命望大院外头开,有车头在前面的,有车尾巴在前头的。  
    这要今天执行了运输疑犯的任务,至少一星期就不用怀疑这车会公车私用了。
    警车太一致了,出院门时还追尾了,一辆倒车的倒得太快,把先开出去的屁股撞了,先开出去的被撞到马路牙子上去了
    这下只能那辆没撞的运人了
    那司机一脸晦气,可能恨不得自己撞死算了。
    悲剧的警车哀鸣着远去
    另外两个司机居然在互相开烟
    好歹是同事你们至于吗
    楼上楼下的邻居们交谈着
    二大妈被抓走啦
   二大妈被抓走啦
    二大妈把电表厂挑啦
    把电表厂谁挑啦
    把整个电表厂挑啦
    ……
   大家纷纷表示情绪稳定
    我往楼上一看
    东方不败竟然在家门口拿着个拖把,在使劲地拖地
    真是好闺女啊
    妈都蹲大牢了还惦记着公共卫生
    你能顺手把墙也刷了吗
    当然这话我说不出口
    因为东方不败还穿着个睡觉时穿的小背心,低胸不说还偏大
    什么东西晃晃荡荡
    俺于是大胆地上去
    这样看得清楚些
    那个
    你不要着急
    你妈妈她……
    东方不败认真地看着我,耸耸肩
    我妈妈没咋的啊
    靠,你妈被警察拿冲锋枪抓走了,你好歹装也装悲痛点好吧。
    哦,那个啊
    她想了想
    你家有电话吗,我打电话给我姨。
    二大妈的三位亲戚,短信投票复活。
    五朵金花再聚首,黄泉路上送谁走。
    补一句,之所以叫五朵金花
    是因为谁敢和她们交手
    必然是
    眼冒金星
    满脸开花
    早上一早,就听到嗵嗵嗵的发动机声
    我靠,事发了,肯定是警察昨晚发现钢盔被打烂了回来斩草除根了
    东方不败这往小了说算包庇
    往大了说算拒捕
    TM的拒捕也不用开坦克来抓啊
    我爬起来往外一看
    我了个去
    东方不败三个姨来了
    开着一辆手扶拖拉机,油烟喷得是蓬蓬的
    她二姨昂首挺胸,站在拖拉机上,单手扶把作江青状
    拖拉机后面居然拖着个大粪车
    装甲兵化学部队?
    你们太一脉相承了吧?
    她三姨亮开嗓子往楼上吼
    没喊三声东方不败就跑下来了
    她再不下来我们就要下来了
    声波震得窗户玻璃直抖,大家都以为地震了
    说起这三姨是个梨园票友
    在这住的时候每天早上五点半起来提气练嗓子
    声震屋瓦
    我们这老年心脏病发病率明显下降
    有点征兆的都赶紧搬了,剩下的都是倍健康的
    那嗓音,治生孩子难产、便秘那是一等一的
    尤其治尿道结石奇效
    听三分钟不尿算你英雄
    三姨大嗓门
   谁敢欺负到我们家头上啊,我家世代的忠良贤达,满门的精忠报国啊  
    我一口刷牙水就喷出去了
    你们家还有狗头铡吧
    这当口楼下街坊邻居全都来了
    争相向她们仨讲述昨天的悲剧
    人家根本不听
    知己知彼那是人族的基本思路,对她们就是浮云
    二姨继续江青挥手检阅群众状,朝大伙呵呵冷笑
    大姨垫个草垫子坐大粪车盖子上,苦禅入定闭目养神
    关公不睁眼,睁眼要杀人啊
    马路上传来喇叭声,大家仔细一看吓得屁滚尿流四下逃开
    我操
    出土文物级的东风卡车开过来了,副驾驶没有车门,挡了个化肥袋子!没有反光镜,没有雨刷,车头发动机盖还TM是拿铁丝拴住的!
    满满一车人啊,欢声笑语,18岁到80岁,全是女的!
    天上人间真的被端了吗?工作人员都给拖出来游街了!
    三姨离得老远就叫唤“横幅做了吗?”
    车上就有人应“早做好了!”
    三姨哈哈大笑“知道干什么去不”
    车上一片浪笑“寻汉子去”
    我靠,这是TM的组团下副本包场清怪啊
    靠,卡车上还挂着鞭炮,你MB的还架着口铜锣!那个谁怎么还拿着个电喇叭!
    这不是起义,这是出白喜事啊
    三姨举起一柄油锤,“他们要是打我们咋办”
    车上“告他们强奸!”
    二姨江青般手一挥“出发!”
    风雷滚动,手扶拖拉机扬起一阵黑烟,以我见过的农用机械极限飚在前面,东风大卡一个急转弯紧紧跟上,车上人没抓稳倒了一片,浩浩荡荡向市中心杀去...... ]]>
0 http://iw3c.com/blog/archive/831/#comments
秦皇岛0212武警携大妈插队买票称”就是牛B“.. http://iw3c.com/blog/archive/830/ http://iw3c.com/blog/archive/830/ Thu, 29 Dec 2011 00:00:00 +0000 aries 警官证号 0212,速速人肉 人民的公仆啊,真牛B啊
姓名李凯..???
]]>
0 http://iw3c.com/blog/archive/830/#comments
Firefox已经运行,但无响应的解决方法 http://iw3c.com/blog/archive/829/ http://iw3c.com/blog/archive/829/ Mon, 26 Dec 2011 00:00:00 +0000 aries 当双击firefox图标,想运行firefox的时候,出现如下提示窗口:



Firefox已经在运行,但是没有响应。如要打开新窗口,您必须现关闭该Firefox进程,或者重新启动您的系统。

点确定后,窗口关闭,无法启动firefox。

解决办法就是,在 开始-运行 中输入:

firefox -profilemanager

回车后会出现一个小窗口让你选择使用哪个 profile 来启动 firefox。

Firefox已经运行,但无响应的解决方法 - 伊人诚类 - 伊人诚类的情感世界

这时可以将原来已经存在的 profile 删除掉,一般都是 default 。删除了以后,可以自己新建一个 profile,一直按默认的就行,记得选择下文件夹,用这个新建的 profile 来启动就可以了。

不过这样你的收藏就没有了。不过没有关系,在你的C:\Documents and Settings\你当前的用户名\Application Data\Mozilla\Firefox\Profiles\用户.default\bookmarkbackups里面有你的收藏备份。yirenchenglei..com..default根据实际改,会不太一样的。把数据考过去就可以出来以前的东东了。

]]>
0 http://iw3c.com/blog/archive/829/#comments
腾讯自研格斗对战网游《炫斗之王》 有着的“拳皇”的影子 http://iw3c.com/blog/archive/828/ http://iw3c.com/blog/archive/828/ Tue, 29 Nov 2011 00:00:00 +0000 aries
炫斗之王 实战

视频首次真实呈现了《炫斗之王》的各种细节,包括画面水平、画面风格、角色造型、招式动作等,其中角色造型动作和场景设计有着浓郁的“拳皇”的影子,甚至某角色战胜后一段荡笑分明就是山寨的八神庵。

不仅拳皇,你还能从中找到一些《英雄联盟》的影子,其中一名女角色造型和LOL中的暗女安妮简直是像极了,只不过她的发招则是COPY的拳皇中的雅典娜一角。另外,作为一款国产游戏,其英文角色名、英文背景的街道也让人百思不得其解。
]]>
0 http://iw3c.com/blog/archive/828/#comments
在线测试网页速度的工具 http://iw3c.com/blog/archive/page-speed-online/ http://iw3c.com/blog/archive/page-speed-online/ Wed, 16 Nov 2011 00:00:00 +0000 aries Page Speed Online
在线测试网页速度的工具

]]>
0 http://iw3c.com/blog/archive/page-speed-online/#comments
PHP漏洞全解 http://iw3c.com/blog/archive/825/ http://iw3c.com/blog/archive/825/ Tue, 08 Nov 2011 00:00:00 +0000 aries 点击下载
]]>
0 http://iw3c.com/blog/archive/825/#comments
一款超COOL的PHP验证码 http://iw3c.com/blog/archive/cool-php-captcha/ http://iw3c.com/blog/archive/cool-php-captcha/ Mon, 31 Oct 2011 00:00:00 +0000 aries Simple and cool CAPTCHA PHP implementation
cool-php-captcha[/more]
http://code.google.com/p/cool-php-captcha/
]]>
0 http://iw3c.com/blog/archive/cool-php-captcha/#comments
一款简单的JS弹性特效 http://iw3c.com/blog/archive/js-bounce-effect/ http://iw3c.com/blog/archive/js-bounce-effect/ Wed, 26 Oct 2011 00:00:00 +0000 aries 查看地址:http://demo.iw3c.com/bounce/
]]>
0 http://iw3c.com/blog/archive/js-bounce-effect/#comments
Ueditor富文本编辑器,百度出品 http://iw3c.com/blog/archive/baidu-ueditor/ http://iw3c.com/blog/archive/baidu-ueditor/ Tue, 27 Sep 2011 00:00:00 +0000 aries Ueditor富文本编辑器,百度出品
Ueditor概述:
Ueditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于BSD协议,允许自由使用和使用代码
特点:
  1. 体积小巧,性能优良,使用简单
  2. 分层架构,方便定制与扩展
  3. 满足不同层次用户需求,更加适合团队开发
  4. 丰富完善的中文文档
  5. 多个浏览器支持:Mozilla, MSIE, FireFox, Maxthon,Safari 和Chrome
  6. 更好的使用体验
  7. 拥有专业QA团队持续支持,已应用在百度各大产品线上
官方网站:http://ueditor.baidu.com/
]]>
0 http://iw3c.com/blog/archive/baidu-ueditor/#comments
捕鱼达人单机版2.0下载 http://iw3c.com/blog/archive/buyudaren/ http://iw3c.com/blog/archive/buyudaren/ Fri, 23 Sep 2011 00:00:00 +0000 aries 游戏名称:捕鱼达人单机版2.0
英文名称:Flshne
游戏类型:益智类(PUZ)游戏
游戏制作:LKgame
游戏发行:LKgame
游戏平台:PC
当前版本:2.0
日期:    2011-07-25
研发公司:桂林力港网络科技有限公司
游戏介绍

捕 鱼达人单机版小游戏,移植自街机最热门的游戏,操作简单!趣味性强!捕鱼达人单机版2.0是老K游戏平台最新《捕鱼达人之深海狩猎单机版》全新升级推出, 新版本完美融合捕鱼达人网络版和手游版的精华,拥有更强的对抗性和竞技性。开放八种炮台和全部鱼种,更有豪华大炮、加速炮、散射炮、弹射炮、冰冻炮等给力 装备。2种弹花闪耀深海,更多游戏场景、鱼阵穿插其间,让玩家激情捕鱼的同时享受丰盛的视听盛宴!
玩法说明:选择模式后直接开始游戏,鼠标右键切换武器,左键发炮。移动鼠标或键盘左右方向键可控制方向。打中鱼可获对应分,并获得对应能量值,当玩家能量槽满值,既可激活道具,只需要用鼠标左键点击对应道具即可使用。打中鱼可获对应分数,规定时间内获得一定分数即可过关。
捕鱼达人单机版2.0下载[/more]
下载地址:点击下载
]]>
0 http://iw3c.com/blog/archive/buyudaren/#comments
在出租车上使用Google钱包支付 http://iw3c.com/blog/archive/820/ http://iw3c.com/blog/archive/820/ Thu, 22 Sep 2011 00:00:00 +0000 aries ]]> 0 http://iw3c.com/blog/archive/820/#comments Larva系列动画 http://iw3c.com/blog/archive/larva/ http://iw3c.com/blog/archive/larva/ Tue, 20 Sep 2011 00:00:00 +0000 aries Larva》是一部出自韩国的可爱的红和黄幼虫的幽默搞笑短片动画,有多搞知呢?
自己看看就知道了!

更多请移步这里 ]]>
1 http://iw3c.com/blog/archive/larva/#comments
MySQL性能优化的21个最佳实践 http://iw3c.com/blog/archive/818/ http://iw3c.com/blog/archive/818/ Fri, 16 Sep 2011 00:00:00 +0000 aries 1. 为查询缓存优化你的查询
  大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。
  这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例:

  上面两条SQL语句的差别就是 CURDATE() ,MySQL的查询缓存对这个函数不起作用。所以,像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的。所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存。[/more]
2. EXPLAIN 你的 SELECT 查询
  使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。
  EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的……等等,等等。
  挑一个你的SELECT语句(推荐挑选那个最复杂的,有多表联接的),把关键字EXPLAIN加到前面。你可以使用phpmyadmin来做这个事。然后,你会看到一张表格。下面的这个示例中,我们忘记加上了group_id索引,并且有表联接:

  当我们为 group_id 字段加上索引后:

  我们可以看到,前一个结果显示搜索了 7883 行,而后一个只是搜索了两个表的 9 和 16 行。查看rows列可以让我们找到潜在的性能问题。
3. 当只要一行数据时使用 LIMIT 1
  当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。
  在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。
  下面的示例,只是为了找一下是否有“中国”的用户,很明显,后面的会比前面的更有效率。(请注意,第一条中是Select *,第二条是Select 1)

4. 为搜索字段建索引
  索引并不一定就是给主键或是唯一的字段。如果在你的表中,有某个字段你总要会经常用来做搜索,那么,请为其建立索引吧。

  从上图你可以看到那个搜索字串 “last_name LIKE ‘a%’”,一个是建了索引,一个是没有索引,性能差了4倍左右。
  另外,你应该也需要知道什么样的搜索是不能使用正常的索引的。例如,当你需要在一篇大的文章中搜索一个词时,如: “WHERE post_content LIKE ‘%apple%’”,索引可能是没有意义的。你可能需要使用MySQL全文索引 或是自己做一个索引(比如说:搜索关键词或是Tag什么的)
5. 在Join表的时候使用相当类型的例,并将其索引
  如果你的应用程序有很多 JOIN 查询,你应该确认两个表中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。
  而且,这些被用来Join的字段,应该是相同的类型的。例如:如果你要把 DECIMAL 字段和一个 INT 字段Join在一起,MySQL就无法使用它们的索引。对于那些STRING类型,还需要有相同的字符集才行。(两个表的字符集有可能不一样)

6. 千万不要 ORDER BY RAND()
  想打乱返回的数据行?随机挑一个数据?真不知道谁发明了这种用法,但很多新手很喜欢这样用。但你确不了解这样做有多么可怕的性能问题。
  如果你真的想把返回的数据行打乱了,你有N种方法可以达到这个目的。这样使用只让你的数据库的性能呈指数级的下降。这里的问题是:MySQL会不得不去执行RAND()函数(很耗CPU时间),而且这是为了每一行记录去记行,然后再对其排序。就算是你用了Limit 1也无济于事(因为要排序)
  下面的示例是随机挑一条记录

7. 避免 SELECT *
  从数据库里读出越多的数据,那么查询就会变得越慢。并且,如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载。
  所以,你应该养成一个需要什么就取什么的好的习惯。

8. 永远为每张表设置一个ID
  我们应该为数据库里的每张表都设置一个ID做为其主键,而且最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO_INCREMENT标志。
  就算是你 users 表有一个主键叫 “email”的字段,你也别让它成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。另外,在你的程序中,你应该使用表的ID来构造你的数据结构。
  而且,在MySQL数据引擎下,还有一些操作需要使用主键,在这些情况下,主键的性能和设置变得非常重要,比如,集群,分区……
  在这里,只有一个情况是例外,那就是“关联表”的“外键”,也就是说,这个表的主键,通过若干个别的表的主键构成。我们把这个情况叫做“外键”。比 如:有一个“学生表”有学生的ID,有一个“课程表”有课程ID,那么,“成绩表”就是“关联表”了,其关联了学生表和课程表,在成绩表中,学生ID和课 程ID叫“外键”其共同组成主键。
9. 使用 ENUM 而不是 VARCHAR
  ENUM 类型是非常快和紧凑的。在实际上,其保存的是 TINYINT,但其外表上显示为字符串。这样一来,用这个字段来做一些选项列表变得相当的完美。
  如果你有一个字段,比如“性别”,“国家”,“民族”,“状态”或“部门”,你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是 VARCHAR。
  MySQL也有一个“建议”(见第十条)告诉你怎么去重新组织你的表结构。当你有一个 VARCHAR 字段时,这个建议会告诉你把其改成 ENUM 类型。使用 PROCEDURE ANALYSE() 你可以得到相关的建议。
10. 从 PROCEDURE ANALYSE() 取得建议
  PROCEDURE ANALYSE() 会让 MySQL 帮你去分析你的字段和其实际的数据,并会给你一些有用的建议。只有表中有实际的数据,这些建议才会变得有用,因为要做一些大的决定是需要有数据作为基础的。
  例如,如果你创建了一个 INT 字段作为你的主键,然而并没有太多的数据,那么,PROCEDURE ANALYSE()会建议你把这个字段的类型改成 MEDIUMINT 。或是你使用了一个 VARCHAR 字段,因为数据不多,你可能会得到一个让你把它改成 ENUM 的建议。这些建议,都是可能因为数据不够多,所以决策做得就不够准。
  在phpmyadmin里,你可以在查看表时,点击 “Propose table structure” 来查看这些建议

  一定要注意,这些只是建议,只有当你的表里的数据越来越多时,这些建议才会变得准确。一定要记住,你才是最终做决定的人。
11. 尽可能的使用 NOT NULL
  除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL。这看起来好像有点争议,请往下看。
  首先,问问你自己“Empty”和“NULL”有多大的区别(如果是INT,那就是0和NULL)?如果你觉得它们之间没有什么区别,那么你就不要使用NULL。(你知道吗?在 Oracle 里,NULL 和 Empty 的字符串是一样的!
  不要以为 NULL 不需要空间,其需要额外的空间,并且,在你进行比较的时候,你的程序会更复杂。 当然,这里并不是说你就不能使用NULL了,现实情况是很复杂的,依然会有些情况下,你需要使用NULL值。
12. Prepared Statements
  Prepared Statements很像存储过程,是一种运行在后台的SQL语句集合,我们可以从使用 prepared statements 获得很多好处,无论是性能问题还是安全问题。
  Prepared Statements 可以检查一些你绑定好的变量,这样可以保护你的程序不会受到“SQL注入式”攻击。当然,你也可以手动地检查你的这些变量,然而,手动的检查容易出问题,而且很经常会被程序员忘了。当我们使用一些framework或是ORM的时候,这样的问题会好一些。
  在性能方面,当一个相同的查询被使用多次的时候,这会为你带来可观的性能优势。你可以给这些Prepared Statements定义一些参数,而MySQL只会解析一次。
  虽然最新版本的MySQL在传输Prepared Statements是使用二进制形势,所以这会使得网络传输非常有效率。
  当然,也有一些情况下,我们需要避免使用Prepared Statements,因为其不支持查询缓存。但据说版本5.1后支持了。
  在PHP中要使用prepared statements,你可以查看其使用手册:mysqli 扩展 或是使用数据库抽象层,如: PDO.

13. 无缓冲的查询
  正常的情况下,当你在当你在你的脚本中执行一个SQL语句的时候,你的程序会停在那里直到没这个SQL语句返回,然后你的程序再往下继续执行。你可以使用无缓冲查询来改变这个行为。
  mysql_unbuffered_query() 发送一个SQL语句到MySQL而并不像mysql_query()一样去自动fethch和缓存结果。这会相当节约很多可观的内存,尤其是那些会产生大 量结果的查询语句,并且,你不需要等到所有的结果都返回,只需要第一行数据返回的时候,你就可以开始马上开始工作于查询结果了。
  然而,这会有一些限制。因为你要么把所有行都读走,或是你要在进行下一次的查询前调用 mysql_free_result() 清除结果。而且, mysql_num_rows() 或 mysql_data_seek() 将无法使用。所以,是否使用无缓冲的查询你需要仔细考虑。
14. 把IP地址存成 UNSIGNED INT
  很多程序员都会创建一个 VARCHAR(15) 字段来存放字符串形式的IP而不是整形的IP。如果你用整形来存放,只需要4个字节,并且你可以有定长的字段。而且,这会为你带来查询上的优势,尤其是当 你需要使用这样的WHERE条件:IP between ip1 and ip2。
  我们必需要使用UNSIGNED INT,因为 IP地址会使用整个32位的无符号整形。
  而你的查询,你可以使用 INET_ATON() 来把一个字符串IP转成一个整形,并使用 INET_NTOA() 把一个整形转成一个字符串IP。在PHP中,也有这样的函数 ip2long() 和 long2ip()。

15. 固定长度的表会更快
  如果表中的所有字段都是“固定长度”的,整个表会被认为是 “static” 或 “fixed-length”。 例如,表中没有如下类型的字段: VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个表就不是“固定长度静态表”了,这样,MySQL 引擎会用另一种方法来处理。
  固定长度的表会提高性能,因为MySQL搜寻得会更快一些,因为这些固定的长度是很容易计算下一个数据的偏移量的,所以读取的自然也会很快。而如果字段不是定长的,那么,每一次要找下一条的话,需要程序找到主键。
  并且,固定长度的表也更容易被缓存和重建。不过,唯一的副作用是,固定长度的字段会浪费一些空间,因为定长的字段无论你用不用,他都是要分配那么多的空间。
  使用“垂直分割”技术(见下一条),你可以分割你的表成为两个一个是定长的,一个则是不定长的。
16. 垂直分割
  “垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。(以前,在银行做过项目,见过一张表有100多个字段,很恐怖)
  示例一:在Users表中有一个字段是家庭地址,这个字段是可选字段,相比起,而且你在数据库操作的时候除了个人信息外,你并不需要经常读取或是改写 这个字段。那么,为什么不把他放到另外一张表中呢? 这样会让你的表有更好的性能,大家想想是不是,大量的时候,我对于用户表来说,只有用户ID,用户名,口令,用户角色等会被经常使用。小一点的表总是会有好的性能。
  示例二: 你有一个叫 “last_login” 的字段,它会在每次用户登录时被更新。但是,每次更新时会导致该表的查询缓存被清空。所以,你可以把这个字段放到另一个表中,这样就不会影响你对用户 ID,用户名,用户角色的不停地读取了,因为查询缓存会帮你增加很多性能。
  另外,你需要注意的是,这些被分出去的字段所形成的表,你不会经常性地去Join他们,不然的话,这样的性能会比不分割时还要差,而且,会是极数级的下降。
17. 拆分大的 DELETE 或 INSERT 语句
  如果你需要在一个在线网站上去执行一个大的 DELETE 或 INSERT 查询,你需要非常小心,要避免你的操作让你的整个网站停止相应。因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了。
  Apache 会有很多的子进程或线程。所以,其工作起来相当有效率,而我们的服务器也不希望有太多的子进程,线程和数据库链接,这是极大的占服务器资源的事情,尤其是内存。
  如果你把你的表锁上一段时间,比如30秒钟,那么对于一个有很高访问量的站点来说,这30秒所积累的访问进程/线程,数据库链接,打开的文件数,可能不仅仅会让你泊WEB服务Crash,还可能会让你的整台服务器马上掛了。
  所以,如果你有一个大的处理,你定你一定把其拆分,使用 LIMIT 条件是一个好的方法。下面是一个示例:

18. 越小的列会越快
  对于大多数的数据库引擎来说,硬盘操作可能是最重大的瓶颈。所以,把你的数据变得紧凑会对这种情况非常有帮助,因为这减少了对硬盘的访问。
  参看 MySQL 的文档 Storage Requirements 查看所有的数据类型。
  如果一个表只会有几列罢了(比如说字典表,配置表),那么,我们就没有理由使用 INT 来做主键,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 会更经济一些。如果你不需要记录时间,使用 DATE 要比 DATETIME 好得多。
  当然,你也需要留够足够的扩展空间,不然,你日后来干这个事,你会死的很难看,参看Slashdot的例子(2009年11月06日),一个简单的ALTER TABLE语句花了3个多小时,因为里面有一千六百万条数据。
19. 选择正确的存储引擎
  在 MySQL 中有两个存储引擎 MyISAM 和 InnoDB,每个引擎都有利有弊。酷壳以前文章《MySQL: InnoDB 还是 MyISAM?》讨论和这个事情。
  MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都 无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。
  InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。
  下面是MySQL的手册
  target=”_blank”MyISAM Storage Engine
  InnoDB Storage Engine
20. 使用一个对象关系映射器(Object Relational Mapper)
  使用 ORM (Object Relational Mapper),你能够获得可靠的性能增涨。一个ORM可以做的所有事情,也能被手动的编写出来。但是,这需要一个高级专家。
  ORM 的最重要的是“Lazy Loading”,也就是说,只有在需要的去取值的时候才会去真正的去做。但你也需要小心这种机制的副作用,因为这很有可能会因为要去创建很多很多小的查询反而会降低性能。
  ORM 还可以把你的SQL语句打包成一个事务,这会比单独执行他们快得多得多。
  目前,个人最喜欢的PHP的ORM是:Doctrine。
21. 小心“永久链接”
  “永久链接”的目的是用来减少重新创建MySQL链接的次数。当一个链接被创建了,它会永远处在连接的状态,就算是数据库操作已经结束了。而且,自从 我们的Apache开始重用它的子进程后——也就是说,下一次的HTTP请求会重用Apache的子进程,并重用相同的 MySQL 链接。
  PHP手册:mysql_pconnect()
  在理论上来说,这听起来非常的不错。但是从个人经验(也是大多数人的)上来说,这个功能制造出来的麻烦事更多。因为,你只有有限的链接数,内存问题,文件句柄数,等等。
  而且,Apache 运行在极端并行的环境中,会创建很多很多的了进程。这就是为什么这种“永久链接”的机制工作地不好的原因。在你决定要使用“永久链接”之前,你需要好好地考虑一下你的整个系统的架构。 ]]>
0 http://iw3c.com/blog/archive/818/#comments
暗黑破坏神3测试码获得完全指南 http://iw3c.com/blog/archive/817/ http://iw3c.com/blog/archive/817/ Wed, 07 Sep 2011 00:00:00 +0000 aries 根据一些已经获得测试客户端的玩家透露的信息,此次Beta测试客户端大小为1.97G,并且只会提供英文版本的测试客服端,玩家可以使用所有五个职业体验游戏的早期部分,一直到击败骷髅王为止。
相信大家都在心急火燎的等待着任何一点关于D3的消息,目前测试的客户端已经流出!当然没有测试码也是没用的,那么小编今天就来总结一下获取《暗黑破坏神3》测试码的几大途径:
1.官方微博发号
微薄地址:http://weibo.com/diablo
昨日,游戏的官方微博如是表示:随着测试日期的临近,我们将在接下来的几条微博中公布一些测试的相关细节,并会在测试开始后通过暗黑破坏神官方微博
发放一定数量的测试账号,敬请关注!所以,从今天开始,要记得关注游戏的官方微博,并保证敏锐的关注,在官方微博有发号举动的时候迅速拿下实为上策。
2.在BN上提交配置信息
暗黑破坏神3测试码获得完全指南[/more]
在BN上提交配置信息

如果你在暴雪的外服战网(北美、台服、欧服均可)拥有绑定的游戏,那么可以在战网上提交自己的电脑配置信息,暴雪为了游戏能在更多的配置下进行测试通常会根据配置发放邀请码。
3.参加官方活动
暗黑破坏神3测试码获得完全指南

大波胡活动
前不久,官方微博与北美官网一起推出了“大波胡”(Diableards)活动,玩家只要把留有胡子的照片在微博上发到# Diableards
#话题内,就有机会获得游戏的测试帐号。当然如果是女性玩家或者胡子不茂密的玩家也不要紧,高质量的PS以及各种创意也是被接受的。最终官方将挑选出5张
令人印象最深刻的照片,照片的主人将获得测试帐号!
以上就是目前看起来最靠谱的三种获得游戏激活码的方法,当然还有一种终极大法就是:你舅舅在暴雪!另外,大家别忘了多做好事攒RP,比如扶老奶奶过马路什么的……好了,希望大家能早日玩到《暗黑破坏神3》,希望暴雪早日推出这部让人期待的作品!(文/新浪游戏)
]]>
0 http://iw3c.com/blog/archive/817/#comments
《暗黑破坏神3》官方BETA客户端下载 http://iw3c.com/blog/archive/816/ http://iw3c.com/blog/archive/816/ Wed, 07 Sep 2011 00:00:00 +0000 aries 传送门:http://www.gamersky.com/Soft/201109/30119.shtml
]]>
0 http://iw3c.com/blog/archive/816/#comments
用服务器下片?PHP.net服务器发现盗版电影 http://iw3c.com/blog/archive/815/ http://iw3c.com/blog/archive/815/ Fri, 02 Sep 2011 00:00:00 +0000 aries PHP.net是世界著名的PHP语言的官方网站,不过这个网站背后的管理员似乎确实有用服务器下片的玩法,SEO人士Whistlerblower Stephen Chapman发现,PHP.net的服务器上竟然有盗版的电影,并且管理员的品位和追求还挺高,都是BDRip级别的高清电影,目前该目录已经被删除,但Google的缓存忠实地记下了这一幕。
用服务器下片?PHP.net服务器发现盗版电影[/more]
本文来自:http://www.cnbeta.com/articles/153683.htm
]]>
0 http://iw3c.com/blog/archive/815/#comments
最全的php开发android应用程序 http://iw3c.com/blog/archive/android-php-apk/ http://iw3c.com/blog/archive/android-php-apk/ Wed, 31 Aug 2011 00:00:00 +0000 aries 第一部分是指在Android系统的手机上直接写PHP脚本代码并立即运行;
第二部分则继续讲解如何把写好的PHP脚本代码打包成akp安装文件。

首先,在手机上安装两个apk包。

一个是SL4A(Scripting Layer for Android),这个是Android的脚本环境,前身是ASE(Android Scripting Environment),Android系统上的所有脚本都将在这个环境下执行,下载地址:sl4a_r3,下载后将扩展名改为.akp即可,也可以到谷歌官方下载http://code.google.com/p/android-scripting/downloads/list。(注:如果你只关注第二部分可跳过这里)[/more]
另一个是PFA(PHP for Android),这个是为Android系统提供PHP脚本支持的安装包,下载地址:PhpForAndroid_r1,同样地下载后将扩展名改为akp即可,官方下载http://phpforandroid.net/start

运行SL4A,界面如下:

这里提供了一些实例,我们执行hello_world.php试试:

选择第二个选项,运行结果如下:

脚本已成功执行了。
我们自己创建一个脚本试一下:

我们把第四行的$droid->getInput修改为dialogGetInput(因为PFA的某一次版本更新后在API里面用dialogGetInput取代了getInput):

选择API Browser可以看到所有提供我们使用的API:

菜单上选择Save & Run,运行结果如下:

好了,第一部分至此完成。

如何将PHP脚本文件打包成apk安装包呢,本人参考了谷歌官方提供的步骤(http://code.google.com/p/android-scripting/wiki/SharingScripts)并搜集了网上其他的一些相关教程,总结如下:

一、搭建好Android开发环境(jdk+eclipse+android sdk)。
说明:由于本人没接触过java,也是第一次使用eclipse,讲解若有幼稚的地方高手不要见笑哈。

1、下载java JDK,进入该网页http://java.sun.com/javase/downloads/index.jsp(或者直接点击下载)如下图:

选择 Download JDK 只下载JDK,无需下载jre,然后安装完成即可,无需配置环境变量(可在命令行执行java -version验证一下)。

2、下载eclipse,进入该网页http://www.eclipse.org/downloads/(或者直接点击下载)如下图:

我们选择第一个(即eclipse IDE for java EE Developers),下载完成后解压即可。

3、下载Android SDK,这里有两种下载版本,一种是包含了具体版本的SDK,一种是只包含升级工具而不包含具体的SDK版本,推荐使用后一种,这里也是以后一种为例进行讲解的,进入该网页http://androidappdocs.appspot.com/sdk/index.html(或者直接点此下载)如下图:


我们这里当然是选择最上面Windows平台的,下载完成后解压即可。

4、配置开发环境:

(1)、安装Android开发插件,打开Eclipse,在菜单栏上选择 help->Install New SoftWare 出现如下界面:

点击 Add 按钮,出现如下界面:

Name:Android (这里可以自定义),Location:https://dl-ssl.google.com/android/eclipse/(如果出错,将https改成http即可),点击OK,将出现如下界面:

点击 Next 按钮,出现如下界面:


(注:如果使用了不正确的eclipse版本,这里很有可能出错)

点击Next按钮,出现如下界面:

选择 I accept the terms of the license agreements   点击 Finish ,进入安装插件界面:

安装完成后,出现如下界面:

点击Yes按钮,重启eclipse。

(2)、配置Android SDK,点击菜单 Window -> preferences,进入如下界面:

选择你的Android SDK解压后的目录,选错了就会报错,这个是升级工具,目前还没有一个版本的SDK。

升级SDK版本,选择菜单 Window -> Android SDK and AVD Manager 出现如下界面:

选择 update all 按钮,出现如下界面:

选择左边的某一项,点击accept表示安装,点击reject表示不安装,我们这里只选了 SDK 2.1 和 samples for api 7 ,自己可以任意自定义,确定后,选择install按钮,进入安装界面如下:

安装完成如下:

新建AVD(android vitural device),和上面一样,进入Android SDK and AVD Manager,选中Vitural Devices :

点击New按钮后,进入如下界面:

名称可以随便取,target选择你需要的SDK版本,SD卡大小自定义,点击 Create AVD,得到如下结果:

如上显示创建AVD完毕。

(3)、新建Android项目,选择菜单 file -> new -> other 进入如下界面:

选择新建 Android Project 项目,点击Next按钮,进入如下界面:

名称自定义,应用程序名自定义,包名必须包含一个点以上,min SDK version里面必须输入整数。

点击 Finish 出现如下界面:

注:若有错误如:Project … is missing required source folder: ‘gen’ ,则将 gen -> Android.Test -> R.java 这个文件删掉,Eclipse会为我们重新生成这个文件,并且不会报错。

(4)、配置运行,右键项目 -> Run as -> Run Configuration 进入如下界面:

该界面选择运行的AVD,将AVD前面的方框设置为选择状态。

(5)、测试项目运行,右键项目名称 -> run as -> Android Application 即可启动运行该Android程序,如下所示:

正在进入

测试程序运行结果

该测试程序的apk安装包已经自动生成在项目工程目录的bin子目录下了。

至此,Android开发环境配置完毕。

二、使用已搭建好的Android开发环境将脚本文件打包为apk安装包。

1、下载脚本的模板工程,script_for_android_template,官方下载地址http://android-scripting.googlecode.com/hg/android/script_for_android_template.zip

2、导入模板工程,打开eclipse,在菜单栏上选择 File -> Import 出现如下界面:

选择 Existing Projects into Workspace ,点Next进入如下界面:

选择 Select archive file ,点击Browse,找到刚才下载好的模板工程文件即可,点击Finish完成。

此时,如果控制台出现 Unable to resolve target ‘android-3′ 此类错误则说明API版本设置需要做调整了,打开目录下的 default.properties 文件,如下:

由于我们这里所使用的API版本为7,遂将里面的 target=android-3 修改为 target=android-7 ,保存,右键单击模板工程选择 Refresh 刷新即可。

此时如果又出现 ERROR: Unable to open class file C:\eclipse\workspace\ScriptForAndroidTemplate\gen\com\dummy\fooforandroid\R.java: No such file or directory 这类错误,前面已经提到过解决办法了,删除这个R.java文件即可,再次 Refresh 将出现 R.java was removed! Recreating R.java! ,至此该模板工程已成功导入。

3、重命名模板工程名及包名,右键单击模板工程选择 Rename 弹出如下窗口:

将名称修改成自己所需要的,我这里就暂且改为 ScriptForAndroidMyPhpTest 吧,点击 OK 完成模板工程名的更改。

继续右键单击模板工程选择 Android Tools -> Rename Application Package ,弹出窗口如下:

我这里就修改成 com.pfatest 吧:

点击 OK 出现如下界面:

点击 Finish 弹出如下窗口:

点击 Yes 完成包名的更改,同时eclipse会自动帮我们同步更新工程主目录下AndroidManifest.xml文件里面的包名,否则我们就需要主动更新了。

4、把我们自己的PHP脚本文件放入工程目录下的res/raw目录下,移除里面模板自带的script.py,并同步修改src/com /dummy/fooforandroid/Script.java中指定脚本名的这一行 public final static int ID = R.raw.script;  -> public final static int ID = R.raw.mytest;

保存。

5、申明脚本程序中用到的所有权限,打开AndroidManifest.xml文件,在窗口下方选中AndroidManifest.xml以编辑源文件的方式,如下图所示:

默认已开启了 android.permission.INTERNET 权限,由于我的测试程序中用到了振动以及电话功能,所以还必须开启 android.permission.VIBRATE 和 android.permission.CALL_PHONE 这两个权限,开启方法:将 <uses-permission
android:name=”android.permission.x”/> 前后的注释<!–*–>去除即可,如下:

保存。

6、编译、打包、运行,还是右键单击工程名,选择 Run As -> Run Configurations… 打开运行配置窗口:

在列表中选中我们需要运行的模拟器,点击下面的 Run 运行。

至此大功告成,手上有机器的朋友不妨将bin目录下已生成好的apk包拷贝到手机上安装运行试试看。

转载自互联网,如需转载请注明: 转载自我的城市我的梦

]]>
0 http://iw3c.com/blog/archive/android-php-apk/#comments
在firefox中使用swfupload上传时发生的问题 http://iw3c.com/blog/archive/firefox-swfupload-error/ http://iw3c.com/blog/archive/firefox-swfupload-error/ Wed, 24 Aug 2011 00:00:00 +0000 aries 能上传大文件,带进度条,可以多文件上传等等。。。
可是在firefox中用它上传的时候就会有问题(当然这也不能怪swfupload,根本原因还是flash player身上)
什么问题呢?
"在非ie内核的浏览期里边swf不能发送cookie"
也就是说,比如你在firefox里面使用swfupload上传文件,如果上传的时候需要做登录验证(这个登录验证是基于cookie或者session),就会出问题。
至于你遇没遇到,反正我是遇到了。
我的解决办法就是:
post_params : {
"swfAuthId" : ´<?php echo $sessionId;?>´,
"authKey" : ´<?php echo $authKey;?>´
},
swfupload在上传文件的时候再传递两个参数,这两个参数是怎么来的呢?
<?php
$sessionId = session_id().time();
$systemKey = ´asdfasdfasdfasdfasdfs´; //这个是随即生成的一个字符串,不会变
$authKey = md5($systemKey.$sessionId);
?>
然后在上传文件的时候判断
<?php
if($_POST[´authKey´] !== md5($systemKey.$_POST[´swfAuthId´]){
die(´error!´);
}
?>
]]>
0 http://iw3c.com/blog/archive/firefox-swfupload-error/#comments
vim基本命令 http://iw3c.com/blog/archive/812/ http://iw3c.com/blog/archive/812/ Mon, 22 Aug 2011 00:00:00 +0000 aries vim #在命令行中输入vim,进入vim编辑器
2.i
#按一下i键,下端显示 --INSERT--
#插入命令,在vim中可能任意字符都有作用
3.Esc
#退出i(插入)命令进行其它命令使用
4.:r filename
#读入一个文件内容,并写入到当前编辑器中
5.:w newfilename
#将该编辑器中的内容写入到一个新文件中
6.:w
#在编辑的过程中保存文件,相当于word中的ctrl+s
7.:!ls
#在编辑过程中执行shell命令ls
8.:sh
#进入shell命令行,执行完命令后ctrl+d退出重新进入vim编辑继续编辑[/more]
9.:wq
#保存文件并退出
10.ZZ
#保存文件并退出,同上一个命令,注意大写
11.:q!
#强制退出,不保存
12.:set number
#使编辑中的文件显示行号
13.:set nonumber
#与上一条命令相反,不显示行号
14.:help i
#查看插入命令帮助
15.
u #撤消上一步操作
16.
/Fedora #查找Fedora字符
17.
:s /Fedora/Redhat #将Fedora字符替换为Redhat(只替换在光标所在的行)
18.
dw #删除单词
dd #删除行
19.
o #打开空白一行
20.
vim + filename #进行文件最后一行进行编辑
21.
vim +n filename #进入文件第n行进行编辑
22.
:1,.s/redhat/fedora
#.号表示当前行,即光标所在行
#将第1行到当前行(.)第一次出现的redhat字符代替为fedora
23.
:1,.s/redhat/fedora/g
#将第1行到当前行(.)所有出现的redhat字符代替为fedora,g 全局标志
24.
:1,$s/redhat/fedora/g
#$表示最后一行
#将第1行到最后一行所有出现的redhat字符代替为fedora
25.
:%s/redhat/fedora/g #同上一个命令
26.
:%s/\<redhat\>/fedora/g
#将第1行到最后一行所有出现的redhat字代替为fedora
#字,而不是字符
27.
:f #显示文件内容,状态等等
#同ctrl+g命令
28.
:e! #当前文件,返回到上次保存
:e file #切换编辑文件
29.
:n #当编辑时有多个文件(比如vim file1 file2)时切换到下一个文件,与:e file 结合使用 ]]>
0 http://iw3c.com/blog/archive/812/#comments
程序猿装B指南-你懂的~ http://iw3c.com/blog/archive/811/ http://iw3c.com/blog/archive/811/ Mon, 22 Aug 2011 00:00:00 +0000 aries 一.准备工作

“工欲善其事必先利其器。”

1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好。一个用来查资料,一个用来写代码。总之要显得信息量很大,效率很高。

2.椅子不一定要舒服,但是一定要可以半躺着。

3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善。沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子。

4.工具书,orelly的,机械工业,电子工业什么的都可以,能英文就英文,不行影印版的也可以,反正越厚越好,而且千万不要放在书架上,一定要堆在桌上,半打开状。[/more]


二.从进门开始

0.绝对不10点以前出现在公司.

1. 着装!着装!不管你是去实验室,或者去公司的大楼,在或者是小公司的民宅,或是自己创业的 黑作坊;无论是春夏秋冬白天晚上刮风下雨电闪雷鸣台风龙卷风,一个装b的程序员都要十分在意自己着装!这里只提出参考建议。初级装:衬衣+牛仔裤+休闲 鞋。中级装:T恤+宽松短裤+拖鞋。高级装:背心+宽松大花裤衩+人字拖。

2.得体的举止。在走廊以及任何形式的过道里,一定要双手插兜,走得像个痞子,至少要看起来有点反社会,如若不行,可走文弱天才型geek路线。。

3.如果有女性在你背后指指点点,小声嘀咕说这一定是一个技术男的时候,应该先低头,然后保持低头状态,缓缓回头,坏坏地蔑笑但是不要出声,然后快步前行。

4.进门后,一定不要跟任何人打招呼,笔直走向自己的位置,最多路过打一杯咖啡,千万不要有多余的动作,显示出自己的专注与心无旁骛。

三.坐下就不要再动了

1.坐下以后,姿势需要略微后仰,能翘着二郎腿最好了,然后在后仰的情况下低着头,以便看到屏幕,然后千万就不要再动了。

2.粗暴地把电脑前的大堆书推开一个口,然后摘下电脑上的一个便签,看一眼,不过3秒,可以开始coding了。

3.能不用IDE就不要用,实在装不了,无论IDE是什么,一定要调成DOS那种黑色背景的。

4.如果写前台界面,就不停地调试后台代码;如果写java,就在里面混编C;如果写C,就在里面混编汇编。不光要coding,还要时不时的翻出一本什么英文的书翻一翻,看不懂就看看插图,然后扔到面前假装懂了继续coding。

5. 什么看起来高端就用什么,不要管实用不实用。例如对C++:switch统统重构成多态;如果有指针,统统改成智能的;C++一定要自己写 template;数字是全部要替换成宏的名字能起多长就起多长;struct就不要出现了,如果出现,也一定要用__attribute__修饰一下; 运算都是位操作的;操作符都是重载的;网络都是并发缓冲线程池的;int只用int32_t声明的;继承不用普通的,什么多继承虚继承 啊;helloworld也要写捕获异常的;后人一看代码,中间一堆关键字 extern,asm,auto,XXXXX_cast,volatile,explicit,register,template,让一般总在敲 int,if,else,for的小程序员顿时心生崇拜。

6.注释?算了吧。只有两个路线可以选:一,变量名起得巨长无比,看代码就和读英文文章一样顺畅,根本不需要加注释。 二,代码无比晦涩,加不加注释根本无影响。

7.千万不要用IM工具交流,千万不要问同事问题,显得自己没有水平,都是自己上网或者查书。

8.无论是同事间开玩笑或者发生任何群体性事件,不要抬头,更不要东张西望,即使地震火灾,也一定要先提交代码再行离开。

四.潇洒地离开

1.人走,主机是千万千万不能关的,至少要跑个daily build,实在不行正在svn提交也勉强算过关。

2.书应该已经又堆到屏幕前了,千万不要整理,明天再来推开。

3.不强求最后一个走,但一定要所有的非程序员,什么市场啊前台啊pm啊都走光了,才可以走。

4.走得时候一定要率性,千万不要收拾任何东西,站起来,出门,好的,就这样。

5.如果今天一定要说句话的话,找到那个最苦逼的程序员,跟他说,你进度太慢了啊,不要老让我等你。

文章作者:程序猿

]]>
0 http://iw3c.com/blog/archive/811/#comments
Firefox 7正式开测 http://iw3c.com/blog/archive/firefox-7-beta1/ http://iw3c.com/blog/archive/firefox-7-beta1/ Sun, 21 Aug 2011 00:00:00 +0000 aries

距离Firefox 6正式版刚数日,Mozilla就在今天快速发布了Firefox 7的首个Beta公测版。

Firefox 7主要特性如下:

将对性能进行优化,在Windows、Mac、Linux三大平台上提供更快的启动速度;

Firefox 7还将优化内存占用,完善内存管理,对于大多数用户来说,其内存占用可降低30%以上,而且响应速度也会提速;Firefox的JavaScript垃圾回收器也会更频繁工作,从而释放出更多内存。

Firefox Sync同步服务:在Firefox 7中,书签和密码将进行实时同步;

增强字体渲染:字体渲染将更加清晰。

Firefox 7 Beta官方下载页面:

http://www.mozilla.com/en-US/firefox/all-beta.html

Firefox 7 Beta简体中文版下载:

Windows平台:

http://download.mozilla.org/?product=firefox-7.0b1&os=win&lang=zh-CN

Mac平台:

http://download.mozilla.org/?product=firefox-7.0b1&os=osx&lang=zh-CN

Linux平台:

http://download.mozilla.org/?product=firefox-7.0b1&os=linux&lang=zh-CN

]]>
0 http://iw3c.com/blog/archive/firefox-7-beta1/#comments
有关查询IP地址所在地的问题 http://iw3c.com/blog/archive/809/ http://iw3c.com/blog/archive/809/ Tue, 16 Aug 2011 00:00:00 +0000 aries 难是不难,网上有好多各大网站的IP所在地的查询接口,拿来就能用。
我先用的马老板的接口,如下:
<?php
function get_location(){
//腾讯的接口太坑爹,它判断的是服务器的IP
$ip=file_get_contents("http://fw.qq.com/ipaddress");
$ip=iconv(´GB2312´, ´UTF-8´, $ip); //将字符串的编码从GB2312转到UTF-8
$s=array(´var IPData = new Array(´,´"´,´)´,´;´);
$r=array(´´,´´,´´,´´);
$ip=str_replace($s,$r,$ip);
$ip=explode(´,´,$ip);
return array(´ip´=>$ip[0],´province´=>trim($ip[2]),´city´=>trim($ip[3]));
}
?>
在开发环境下是没有问题的,但是传到服务器上以后问题就出来了,因为它判断的是服务器的IP,而不是浏览器客户端的IP。。。
郁闷,换新浪的吧,要说新浪还是比较厚道的,提供了多种模式,我这里用的JSON
<?php
function get_location(){
$clientIp = get_ip(); //这个功能自己实现
$ip=file_get_contents(´http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=´.$clientIp);
$ip = json_decode($ip);
return array(´ip´=>$clientIp,´province´=>trim($ip->province),´city´=>trim($ip->city));
}
?>


]]>
0 http://iw3c.com/blog/archive/809/#comments
给Zend studio5.5换个主题 http://iw3c.com/blog/archive/zend-studio-5-5-theme/ http://iw3c.com/blog/archive/zend-studio-5-5-theme/ Fri, 12 Aug 2011 00:00:00 +0000 aries 先上张图预览一下:
给Zend studio5.5换个主题
喜欢的就来这里下载吧,下载地址:Tapecho.rar
用法:
下载后,解压到C:/Documents and Settings/用户/ZDE/config_5.5/schemes/ 目录下
注意解压前先退出Zend studio5.5
解压后启动 在工具–>首选项–>字体颜色–>选择Tapecho。
]]>
0 http://iw3c.com/blog/archive/zend-studio-5-5-theme/#comments
把mysql转换为sqlite2,3 http://iw3c.com/blog/archive/mysql-convert-to-sqlite/ http://iw3c.com/blog/archive/mysql-convert-to-sqlite/ Thu, 11 Aug 2011 00:00:00 +0000 aries 传送门)

分别新建两个连接,一个mysql一个sqlite(空)

然后直接选中数据表复制粘贴ctrl+c   ctrl+v,即可

Navicat能够自动转换数据


]]>
0 http://iw3c.com/blog/archive/mysql-convert-to-sqlite/#comments
FlashPaper的作用是将doc,pdf,jpg等文档转化为swf的配置步骤 http://iw3c.com/blog/archive/flashpager-config-step/ http://iw3c.com/blog/archive/flashpager-config-step/ Sat, 06 Aug 2011 00:00:00 +0000 aries FlashPaper是将其他格式(如txt,doc,pdf,jpg,xls)的文档转化为swf文件的工具;


这是在web应用程序/网站中调用FlashPaper.exe转化文件的详细可重复配置。 在此之前从网上找了很多FlashPaper的配置,几乎都没有提出完整的可重复配置的方法。
该配置是在win server 2003,iis6多次测试成功的,其他环境是否可行未知。



基本软件
1. FlashPaper2.2程序目录[/more]
2. 安装Flash player 10.2.152.32 (activex和plugin两个安装程序)
3. 初始化:运行FlashPaper2.2程序目录中的“初始化.bat”
4. 如果转pdf须安装Adobe Reader 9.1或9.2
5. 如果转doc须安装Word 2007


配置方法
1. 检查“Print Spooler”进程开启;
2. 检查“Macromedia FlashPaper”打印机安装正确;
3. 通过本地用户和组管理,将Network service用户(须查找该用户)添加到administrators组中, 执行命令iisrset重启iis;
4. Word必须是2007,2003需要在DCOM中设置权限,并且不一定能转换成功;

5. C:/windows/system32/cmd.exe 需要加上IUSR权限(INTERNET来宾账户)


如果仍有问题可能需检查:
1. 转换文档读取和保存的文件夹的读写权限;
2. 打印机权限;
3. aspnet用户添加到读写权限;
4. 远程打开word等软件的权限;


关于模板
Flashpaper安装目录下有个Interface文件夹,里边的DefaultViewer2.swf就是模板文件。可反编译DefaultViewer2.swf。生成新的DefaultViewer.swf,替换原来的。比如去掉某个功能,去掉或替换logo等;


测试方法
1. 首先保证将文件直接拖到FlashPrinter.exe可以正确转化,此时可确定FlashPaper本身的配置已经正确;
2. .txt,.doc,.pdf要分别测试,一个格式的能转换并不一定其他格式可以,与相应用到的应用程序是否安装及访问权限有关

]]>
0 http://iw3c.com/blog/archive/flashpager-config-step/#comments
Linux下SSH常用命令 http://iw3c.com/blog/archive/803/ http://iw3c.com/blog/archive/803/ Tue, 26 Jul 2011 00:00:00 +0000 aries 目录操作:
rm -rf mydir /*删除mydir目录*/
mkdir dirname /*创建名为dirname的目录*/
cd mydir /*进入mydir目录*/
cd - /*回上一级目录*/
cd .. /*回父目录,中间有空格*/
cd ~ /*回根目录*/[/more]
mv tools tool /*把tools目录改名为tool */
ln -s tool bac /*给tool目录创建名为bac的符号链接,最熟悉的应该就是FTP中www链接到public_html目录了*/
cp -a tool /home/vpser/www /*把tool目录下所有文件复制到www目录下 */
文件操作:
rm go.tar        /* 删除go.tar文件 */
find mt.cgi    /* 查找文件名为mt.cgi的文件 */
df –h              /* 查看磁盘剩余空间,好像没这个必要,除非你太那个了 */
解压缩:
tar xvf wordpress.tar       /* 解压tar格式的文件 */
tar -tvf myfile.tar     /* 查看tar文件中包含的文件 */
tar cf toole.tar tool /* 把tool目录打包为toole.tar文件 */
tar cfz vpser.tar.gz tool /* 把tool目录打包且压缩为vpser.tar.gz文件,因为.tar文件几乎是没有压缩过的,MT的.tar.gz文件解压成.tar文件后差不多是10MB */
tar jcvf  /var/bak/www.tar.bz2 /var/www/    /*创建.tar.bz2文件,压缩率高*/
tar xjf www.tar.bz2 /*解压tar.bz2格式*/
gzip -d ge.tar.gz        /* 解压.tar.gz文件为.tar文件 */
unzip phpbb.zip      /* 解压zip文件,windows下要压缩出一个.tar.gz格式的文件还是有点麻烦的 */
下载:
wget http://soft.vpser.net/web/nginx/nginx-0.8.0.tar.gz
/*下载远程服务器上的文件到自己的服务器,连上传都省了,服务器不是100M就是1000M的带宽,下载一个2-3兆的MT还不是几十秒的事 */
wget -c http://soft.vpser.net/web/nginx/nginx-0.8.0.tar.gz
/* 继续下载上次未下载完的文件 */
另附一位百度大牛用C写的PHP框架
http://code.google.com/p/yafphp/
]]>
0 http://iw3c.com/blog/archive/803/#comments
爱护眼睛,黑色背景的Dreamweaver代码颜色样式 CodeColor.Xml http://iw3c.com/blog/archive/802/ http://iw3c.com/blog/archive/802/ Mon, 25 Jul 2011 00:00:00 +0000 aries 样式预览
爱护眼睛,黑色背景的Dreamweaver代码颜色样式 CodeColor.Xml

下载地址
http://www.vdisk.cn/down/index/8606343A7122
用户
第一步:关闭Dreamweaver

第二步:浏览 C:Documents and Settings%username%Application DataAdobe(Dreamweaver 8是Macromedia)Dreamweaver 9ConfigurationCodeColoring (on WinXP)
orC:Users%username%Application DataAdobeDreamweaver 9ConfigurationCodeColoring (on Vista)


]]>
0 http://iw3c.com/blog/archive/802/#comments
原来《爱江山更爱美人》真是杨逍纪晓芙之歌啊! http://iw3c.com/blog/archive/801/ http://iw3c.com/blog/archive/801/ Mon, 18 Jul 2011 00:00:00 +0000 aries
一个是天大地大,少年轻狂;
一个是外刚内柔,情深意动。
哪管得江湖恩怨,命运牵扯。
杨逍奢恋,晓芙情痴,缘尽情种终不悔。
[/more]

看了这个封面才发现我那盒不算原声带,我的是《滚石巨星·原声精装》。但曲目好像是一样的!
附:随遇而安——张翠山 殷素素 之歌
  刀剑如梦——张无忌之歌
  你给我一片天——赵敏之歌
  俩俩相望——周芷若之歌

我怎么不记得赵敏有这么一身打扮的啊??
]]>
0 http://iw3c.com/blog/archive/801/#comments
要Google+邀请的请留下邮件地址 http://iw3c.com/blog/archive/google-plus-invite/ http://iw3c.com/blog/archive/google-plus-invite/ Fri, 08 Jul 2011 00:00:00 +0000 aries 我的G+地址 https://plus.google.com/111537435785448974846


要Google+邀请的请留下邮件地址


]]>
0 http://iw3c.com/blog/archive/google-plus-invite/#comments
Google+ http://iw3c.com/blog/archive/plus-google-com/ http://iw3c.com/blog/archive/plus-google-com/ Thu, 07 Jul 2011 00:00:00 +0000 aries Google+貌似又被墙了

Google+

 

]]>
0 http://iw3c.com/blog/archive/plus-google-com/#comments
Kplayer 发布 http://iw3c.com/blog/archive/kplayer/ http://iw3c.com/blog/archive/kplayer/ Wed, 22 Jun 2011 00:00:00 +0000 aries kplayer简介:一款MP3播放器,支持单曲、列表播放,自动记录播放位置,刷新页面可接着上次位置继续播放。代码用as3制作,UI部分全部是用代码画出来的,没有用到一点flash导出的素材。界面仿照Chrome的HTML5播放器界面,差不多类似HTML5的audio标签。还可以配合HTML5标签一起使用
功能列表:
  1. 自动记录播放歌曲的位置,即使刷新页面也会接着继续播放。
  2. 不仅支持播放单曲,还支持播放json或xml格式的歌曲列表。
  3. 可定义json/xml列表的路径。
  4. 支持单曲循环、歌曲列表循环播放。
  5. 可自定义从歌曲列表的第几首开始播放。
  6. 歌曲加载错误会自动切换下一首,xml/json格式错误、加载错误会提示。
  7. 可自定义默认的播放音量,可拖动、点击、滚轮控制音量。
  8. 歌曲播放进度(在已加载的范围内)可拖动或点击控制。
  9. 可显示歌手、歌曲名称。
  10. 类似:暂停、继续播放、切换静音、加载进度条这些普遍的就不详细列出了。
因为之前做了个基础版了,这次做了些重构,加了些功能,版本定位1.1吧,功能应该足够用了。 [/more]
演示:[点击查看]

参数列表:

name - 储存序列id,比如:name=1、name=yoursite.com、name=yourName,name=123abc。
目的是为了和其他使用本播放器的站点区别开,否则用户在其他站点播放记录会在你的站点生效,同样你站点也会影响其他人。
如果你把播放器放在博客,而博客的每篇文章都添加一首歌曲,那么建议你这样设置:name=yoursite123(123为文章ID),这样就可每条单独记录,互不影响。
autoplay - 自动播放: 1-自动(默认);0-点击播放
loop - 循环: 0-顺序播放,放完列表停止(默认);1-单曲循环;2-全部循环
start - 从列表的第 N-1 个开始播放(比如,想默认播放第3首: start=2),默认从第1个开始播放,即:start=0
vol - 默认音量: 0-100的整数(默认80)
url - MP3网址
title - 歌曲名称

* 如果设置了上面两项,将不会加载json/xml格式的播放列表。此时即是单曲播放(相当于json/xml列表里面只有1首歌)。
json - json列表的路径,比如: /music/json.txt,json.php,/json.xx,这些可以自己diy了。
xml - xml列表的路径,同样也可以diy。
说明:diy路径、文件名,或者可选择json或xml格式,这个是为了通用性,自己爱用啥用啥。
xml或json只能用一种就OK了,不要同时搞两个列表,你懂的。
另外:如果json、xml都没设置,默认会读取swf同文件夹内的XML格式文件:songs.xml
XML/JSON列表的格式我就不粘代码了,下面两个:
XML列表例子:http://www.fantxi.com/demo/KPlayer/songs.xml
json列表列子:http://www.fantxi.com/demo/KPlayer/songs.txt
查看源文件就看到代码了。
不常用的两个参数:
preload - 点击才播放时(autoplay=0),是否预加载音频文件: 1-自动(默认);0-点击播放才开始加载
clear - 清空客户端已保存的记录(记录的信息:是否自动播放、MP3播放位置、MP3是第几首、用户设置的音量),以swf的参数为准。此项一般无需设置。

引入方法:

方法1,使用swfobject:
<script src="swfobject.js"></script>
<script>
var flashvars = {
name: "yoursite.com",
json: "songs.txt",
loop: 2,
vol: 50
};
var params = {
menu: "false",
scale: "noScale",
allowFullscreen: "true",
allowScriptAccess: "always",
bgcolor: "#0F0F0F"
};
var attributes = {
id:"KPlayer"
};
swfobject.embedSWF("KPlayer.swf", "altContent", "300", "35", "10.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>
<div id="altContent"><a href="http://www.adobe.com/go/getflashplayer">Get Flash player</a></div>
方法2,直接插入:
<script>
document.write(´<object width="300" height="35" data="KPlayer.swf?name=yoursite.com&autoplay=0&json=songs.txt&loop=2" id="FPano" name="FPano" type="application/x-shockwave-flash"><param name="movie" value="KPlayer.swf?name=yoursite.com&autoplay=0&json=songs.txt&loop=2"><param name="allowFullscreen" value="true"><param name="allowScriptAccess" value="always"><param name="backgroundcolor" value="#0F0F0F"></object>´);
</script>

参数实例:

name=yoursite.com&json=json.txt&loop=2&start=2&vol=70
自动播放json.txt内的第1首歌曲,并重复播放这首歌曲,初始音量为70%
name=yoursite.com&xml=132.xml&loop=2
自动播放132.xml内的所有歌曲,列表播放完毕后,继续播放列表。
name=yoursite.com&autoplay=0&preload=0
点击后才开始加载并播放songs.xml内的所有歌曲,列表播放完毕后,停止播放。
name=yoursite.com&autoplay=0&json=songs.txt&loop=2
读取songs.txt内的json格式列表,点击后全部循环播放
可以配合HTML5标签一起使用
    <audio controls autoplay preload>
<source src="song1.mp3" />
<source src="song2.mp3" />
这里插入FLASH播放器代码,不支持HTML5的浏览器将看到这里
</audio>
来自:http://www.fantxi.com/blog/archives/kplayer/
]]>
2 http://iw3c.com/blog/archive/kplayer/#comments
提高网站速度的几种方法 http://iw3c.com/blog/archive/452-several-ways-to-improve-site-speed/ http://iw3c.com/blog/archive/452-several-ways-to-improve-site-speed/ Mon, 20 Jun 2011 00:00:00 +0000 aries 1、把你的 .js 库文件地址替换成 Google CDN的地址---- 这个我平常因为怕网络网速影响,没有用google的api地址

随着 jquery 和 mootools 等js库的使用需要加载的.js文件越来越多也越来越大,通常传统的网站是上传到网站本身的目录。
但对于一个接近70多KB的jquery.js体积确实不利于网站响应速度的提升,此时就应该使用Google API 。

把你的 http://www.xxx.com/jquery.x.x.js 替换为 http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js的意义在于
当一个用户访问过使用 google api 的网站之后,再次访问其他调用了该api地址的网站就不需要再次加载该文件了。从而达到提速的目的。

不单是jquery库,其他诸如mootools yui 也可以使用这种方式。

推荐一个网站 ( http://scriptsrc.net/
这个网站收集Google 提供的 js API路径。直接点击复制就可以获取到最新版的文件路径。[/more]

这种方法是否真的提速,代验证下!

2、精简和优化你的 js 和 CSS ---这个很有必要,特别是在打开老外的某些网站,发现他们定义的东西确实很奇怪,为何要定义的那么啰唆

虽然有了缓存和gzip保驾护航,但是对于 js 和 css 的优化却也是必须的。我们写的javascript脚本和 css 代码都是经过缩进和换行的,适合人类阅读,但是浏览器执行这些脚本不并需要这些无意义的空格和换行。所以我们应该去除这一些空格换行,甚至缩短 javascript 和 css 里面的变量。诸如此类的优化工具有 YUI Compressor 和 Closure Compiler 。这两个工具都是基于 java 的,使用应该安装jdk并且设置 JAVA_HOME 。(对于非程序员的网站管理员而言确实有点困难)

推荐一个地址 ( http://sweet.fengyin.name/?hl=zh-CN )

此工具可以不用在本地安装jdk,直接上传 js 和 css 文件进行压缩,可选择是采用 YUI Compressor 或 Closure Compiler 。

通过 YUI Compressor 或 Closure Compiler 和 压缩的之后的代码如

function hello(name) {
alert(‘hello 博客’ + name);
}
hello(‘园’);
它会变成

function hello(a){alert(“hello 博客, “+a)}hello(“园”)
把你的缩进和空行去掉的同时也缩短里面的变量名称,这种优化方式是不可逆的,所以使用这两种压缩之前请备份一份源文件方便以后的修改。


3、GZIP 压缩你的 JS 和 CSS 文件 ---一般的网站服务器 我想不太支持! 我这个joomla
就不支持GZIP压缩

压缩js和css可以通过服务器动态脚本进行也可以更简单的使用apache服务器可以在网站根目录 .htaccess 中加入以下代码
引用:
<IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/json
Header append Vary Accept-Encoding
</IfModule>
这段代码的意思是调用服务器的压缩模块对以上文件输出之前进行GZIP压缩,gzip的压缩之后所有文件都应该能减少30%以上的体积。特别是对于大量使用js的博客有了gzip保驾护航之后速度能提高不少。

4、缓存你的 js 和 CSS 文件 ---这个方法第一次见,可以这样缓存js css的。要试试了,针对这个缓存,我们也开启php的缓存,或者smarty模板的缓存,还有PHP MemCached高级缓存(大型网站)

在网站根目录 .htaccess 中加入以下代码
引用:
<ifmodule mod_expires.c>
<filesmatch “.(jpg|gif|png|css|js)$”>
ExpiresActive on
ExpiresDefault “access plus 1 year”
</filesmatch>
这段代码的意思是对 jpg|gif|png|css|js 发送 header 缓存头,进行一年的缓存、在浏览器不使用 ctrl+F5 强制刷新时,会一直缓存到时间时间结束,唯一遗憾的是如果你更改了js或者css文件必须把以前的路径或者文件名更改,可以这样 base.js?ver=(x) 这种方式下次浏览器就会自动读取并缓存。


5 、最近几年 很多网站最喜欢用的 就是图片缓存
jQuery插件Lazy Load作延迟加载图片的效果 ,这样可以缓存服务器的压力,快速打开网站


6、使用css sprites合并图片

一个网站经常使用小图标和小图片进行美化,但是很遗憾这些小图片占用了大量的HTTP请求,因此可以采用sprites的方式把所有的图片合并成一张图片 ,http://csssprites.com/ 可以通过这个网址在线合并,也可以在ps中合并。

更多 css sprites 的资料请查看 baike.baidu.com/view/2173476.htm

7、优化你网站图片(图片):


大量使用的图片和图标虽然可以给网站带来美轮美奂的效果,图文混编更是一种非常绚丽的博文展现方法。可图片的体积确实不是很给力,jpg是一种有损压缩格式,而png虽然是无损的缺憾是体积颇大。为了减少图片体积达到最快的下载速度,每一张图片上传前应该优化一下体积。专注于前端的 yslow 有一个工具叫 smushit

http://www.smushit.com/ysmush.it/
此工具是一个无损压缩图片的工具,可以把你的图片在保持原质量不变的前提下优化体积。而这种优化体积通常在 10% 以上。意味着

一张30KB的图片优化后只有 27KB 或者更少……

同时也包括下面的一些基本的

8、空间选择

如果你是做外贸的,针对Google做优化的,建议去选择国外的空间。针对国内的就选择国内服务器空间最好,地区性的企业站选择当地服务器最好,选择双线不限速的服务器最好,看公司实力和需求而定吧!


9、斜线在链接url 中的使用

当搜索用户打开一个网页链接的时候,服务器端会就会计算出这个链接地址属于哪个文件或目录,如果你选择在链接后边加上斜线(/)或者(../) (../../)....服务器端就会很快的判断出这个链接页面属于哪个目录,加快网页开发速度,减少页面加载时间
]]>
0 http://iw3c.com/blog/archive/452-several-ways-to-improve-site-speed/#comments
10 个实用的 .htaccess 代码片段 http://iw3c.com/blog/archive/10-useful-htaccess-snippets/ http://iw3c.com/blog/archive/10-useful-htaccess-snippets/ Mon, 13 Jun 2011 00:00:00 +0000 aries 谨记:在编辑 .htaccess 之前记得备份哦!

移除 URL 中的 www

出于 SEO 考虑,你可能期望移除 URL 中的 www 前缀。以下代码实现了这个功能,并将所有带 www 的地址重定向到无 www 一级域名。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^iw3c.com$ [NC]
RewriteRule ^(.*)$ http://iw3c.com/$1 [L,R=301]


[/more]
来源:http://css-tricks.com/snippets/htaccess/www-no-www/

防止盗链

盗链通常被认为是可耻行为。当你被别人盗链,别人将免费使用你那昂贵的带宽,不是小气,是带宽费用伤不起啊伤不起。要防止盗链仅需添加使用以下代码:
RewriteEngine On
#将 ?iw3c.com/ 替换成你的博客地址
RewriteCond %{HTTP_REFERER} !^http://(.+.)?iw3c.com.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#将 /images/nohotlink.jpg 替换成“请勿盗链”图片地址
RewriteRule .*.(jpe?g¦gif¦bmp¦png)$ /images/nohotlink.jpg [L]


[/more]

将 WordPress RSS 源重定向到 Feedburner

大多数博客作者使用 Feedburner 托管 RSS 种子,以便对博客阅读进行统计分析。如果你使用 WordPress,你应当会将所有 RSS 订阅源重定向到 Feedburner 源。修改第二行和第三行代码,并将代码拷贝到 .htaccess 中。
<ifModule mod_alias.c>
RedirectMatch 301 /feed/(atom¦rdf¦rss¦rss2)/?$ http://feeds.feedburner.com/iw3c/
RedirectMatch 301 /comments/feed/(atom¦rdf¦rss¦rss2)/?$ http://feeds.feedburner.com/iw3c/
</ifModule>


[/more]

来源:http://www.wprecipes.com/how-to-redirect-wordpress-rss-feeds-to-feedburner-with-htaccess

创建自定义错误页

看烦了老旧的错误页面?那就亲手实践下制作自定义错误页吧。将这些个性错误页上传到主机,然后添加以下代码:

ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/authreqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/serverr.html


来源:http://css-tricks.com/snippets/htaccess/custom-error-pages/

[/more]

强制下载指定文件

当提供一些类似 MP3、eps 或 xls 文件下载时,你可能需要强制让客户端下载而不是让浏览器决定是不是要下载。
<files *.xls>
ForceType application/octet-stream
Header set Content-Disposition attachment
</files>
<files *.eps>
ForceType application/octet-stream
Header set Content-Disposition attachment
</files>


来源:http://www.givegoodweb.com/post/30/forcing-a-download-with-apache-and-htaccess
[/more]


记录 PHP 错误

这段代码将在服务器上创建一个 php_error.log 文件,并将 PHP 文件的错误记录写入该日志文件。
# display no errs to user
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# log to file
php_flag log_errors on
php_value error_log /location/to/php_error.log


来源:http://css-tricks.com/snippets/htaccess/php-error-logging/

[/more]

移除 URL 中的文件扩展名

文件扩展名对开发者可能有用,但对于访客而言,根本毛都没用。这段代码将移除 html 文件那一坨一坨的 .html 后缀。当然你也可以用于移除其他类型的文件,比如 php 等。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
# Replace html with your file extension, eg: php, htm, asp


来源:http://eisabainyo.net/weblog/2007/08/19/removing-file-extension-via-htaccess

防止目录列表

在你的 web 服务器上,当一个目录没有索引文件,apache 自动会为当前目录中所有文件创建索引列表。如果你不希望别人看到这些文件,可以添加以下代码来阻止自动目录列表。
Options -Indexes


通过压缩静态资源减少页面大小

浏览器中的数据传输是可以被压缩的,客户端能够解压服务端发送的压缩数据。这段代码将友好地减少你的页面大小,并节约带宽开支。

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html


自动为文件添加 utf-8 编码

为了避免编码问题,你可以通过 .htaccess 文件强制指定编码。这样一来,就可以确保 HTML 文档总能被正确渲染,即便你忘了添加
语句。


<filesMatch ".(htm¦html¦css¦js)$">
AddDefaultCharset UTF-8
</filesMatch>


来源:http://www.askapache.com/htaccess/setting-charset-in-htaccess.html

英文原稿:10 useful .htaccess snippets to have in your toolbox | CatsWhoCode
翻译整理:10 个实用的 .htaccess 代码片段 | 芒果小站
]]>
0 http://iw3c.com/blog/archive/10-useful-htaccess-snippets/#comments
Google 突然宣布将关闭一批 API,包括最受欢迎的 Translation API http://iw3c.com/blog/archive/google-close-api/ http://iw3c.com/blog/archive/google-close-api/ Wed, 01 Jun 2011 00:00:00 +0000 aries 让Android走向封闭我们还可以理解,但是似乎其它Google产品也在走向封闭,这就让我们很不解了。最近Google宣布将关闭一批API,被称为“春季大扫除”。

Google 突然宣布将关闭一批 API,包括最受欢迎的 Translation API

让Android走向封闭我们还可以理解,但是似乎其它Google产品也在走向封闭,这就让我们很不解了。最近Google宣布将关闭一批API,被称为“春季大扫除”。

确认关闭但没有具体关闭时间表的API包括:[/more]


  • Code Search API
  • Diacritize API
  • Feedburner APIs
  • Finance API
  • Power Meter API
  • Sidewiki API
  • Wave API
    有具体关闭时间表的API包括:

  • Blog Search API
  • Books Data API
  • Books JavaScript API (不包括新版 API)
  • Image Search API
  • News Search API
  • Patent Search API
  • Safe Browsing API (只是v1版)
  • Translate API
  • Transliterate API
  • Video Search API
  • Virtual Keyboard API
    如果说这些关闭的API没有多少开发者使用的话也就算了,但居然包括了Translate API──无数开发者都在利用它打造丰富的翻译类第三方应用。Google对此的解释是说这些API给Google带来了巨大的经济负担,且存在大量的滥用行为。

    好吧,翻译产品开发者们,去投靠微软的翻译服务吧,它支持SOAP, HTTP 和 AJAX,最重要的是:不会说关就关。

  • ]]>
    0 http://iw3c.com/blog/archive/google-close-api/#comments
    PHP使用本地化功能时,可以发生的一个警告(Warning) http://iw3c.com/blog/archive/794/ http://iw3c.com/blog/archive/794/ Sat, 28 May 2011 00:00:00 +0000 aries Warning: fread() [function.fread]: Length parameter must be greater than 0. in your_domain/xxxx.php on line xxx


    根据自己的PHP版本修改:
    //$MAGIC1 = (int)0x950412de; //bug in PHP 5
    //$MAGIC1 = (int) - 1794895138; //bug in PHP 4.4.0
    $MAGIC1 = 2500072158;

    //$MAGIC2 = (int)0xde120495; //bug in PHP 5
    //$MAGIC2 = (int) - 569244523;// bug in PHP 4.4.0
    $MAGIC2 = 3725722773;


    ]]>
    2 http://iw3c.com/blog/archive/794/#comments
    拳皇97十强终极排位 http://iw3c.com/blog/archive/793/ http://iw3c.com/blog/archive/793/ Fri, 06 May 2011 00:00:00 +0000 aries ]]> 0 http://iw3c.com/blog/archive/793/#comments 用PHP画出一块钟表 http://iw3c.com/blog/archive/792/ http://iw3c.com/blog/archive/792/ Wed, 04 May 2011 00:00:00 +0000 aries

    根据系统的时间,画出一块钟表,如图:

    用PHP画出一块钟表

    [/more]

    <?php
    $img = imagecreatetruecolor(450, 450);

    $white = imagecolorallocate($img, 255, 255, 255);
    $red = imagecolorallocate($img, 255, 0, 0);
    $black = imagecolorallocate($img, 0, 0, 0);
    $grey = imagecolorallocate($img, 211, 211, 211);

    imagefill($img, 0, 0, $white);
    imagearc($img, 224, 224, 400, 400, 0, 0, $black);
    imagefilledarc($img, 224, 224, 15, 15, 0, 0, $black, IMG_ARC_PIE);

    for ($zz = 0; $zz < 60; $zz++) {
    $digitCoords[´x´][] = 175 * cos(deg2rad(($zz-10) * (360/60))) + 224;
    $digitCoords[´y´][] = 175 * sin(deg2rad(($zz-10) * (360/60))) + 224;
    }

    for ($zz = 0; $zz < 60; $zz++) {
    if ($zz % 5 == 0)
    imagestring($img, 5, $digitCoords[´x´][$zz] - 4, $digitCoords[´y´][$zz] - 6, ($zz/5) + 1, $black);
    else
    imagefilledarc($img, $digitCoords[´x´][$zz], $digitCoords[´y´][$zz], 3, 3, 0, 0, $grey, IMG_ARC_PIE);
    }

    $seconds = date(´s´);
    $minutes = date(´i´) + ($seconds/60);
    $hours = date(´h´) + ($minutes/60);

    $r_sec = 175;
    $r_min = 175;
    $r_hr = 125;

    $x_sec = $r_sec * cos(deg2rad(($seconds-15) * (360/60))) + 224;
    $y_sec = $r_sec * sin(deg2rad(($seconds-15) * (360/60))) + 224;

    $x_min = $r_min * cos(deg2rad(($minutes-15) * (360/60))) + 224;
    $y_min = $r_min * sin(deg2rad(($minutes-15) * (360/60))) + 224;

    $x_hr = $r_hr * cos(deg2rad(($hours-3) * (360/12))) + 224;
    $y_hr = $r_hr * sin(deg2rad(($hours-3) * (360/12))) + 224;

    imageline($img, 224, 224, $x_sec, $y_sec, $red);
    imagesetthickness($img, 3);
    imageline($img, 224, 224, $x_min, $y_min, $black);
    imagesetthickness($img, 5);
    imageline($img, 224, 224, $x_hr, $y_hr, $black);

    header("Content-type: image/png");
    imagepng($img);

    imagedestroy($img);
    ?>

    ]]>
    1 http://iw3c.com/blog/archive/792/#comments
    唱响中国-李龙-你是英雄 http://iw3c.com/blog/archive/791/ http://iw3c.com/blog/archive/791/ Sun, 01 May 2011 00:00:00 +0000 aries

    ]]>
    0 http://iw3c.com/blog/archive/791/#comments
    对Web开发人员有用的8个网站 http://iw3c.com/blog/archive/790/ http://iw3c.com/blog/archive/790/ Thu, 21 Apr 2011 00:00:00 +0000 aries Web开发/设计人员应当知道的15个网站》这篇文章中推荐了15个相关网站。

    1. Min.us: 上传图片的最简单方式



       任何开发人员、设计师、网络管理员都必须跟客户和同事在线分享图片。Min.us的全部服务就是让你极度简单地上传图片:只需把图片拖拽到Min.us的网页里,图片就会保存在服务器上。并且自动生成短网址,这样你就可以通过这个网站分享图片了。[/more]



       访问 Min.us



       2. Wirify: 把任何网页转换成线框图



       设计网站时线框图非常有用。Wirify是一个可以把任何网页立刻转换成线框图的书签工具,这样你就可以学习或应用到自己的工作中。



       访问 Wirify



       3. CSS Resetr: 查看和比较CSS resets



       CSS resets是所有样式表的必需品,以在不同的浏览器之间渲染。2004年以来,已经发布了许多不同的CSS resets。那么,哪个才是最适合你的项目的呢?CSS Resetr可以让你比较最流行的resets对同一个网页的渲染效果。



       访问 CSS Resetr



       4. Head JS: 用2.30 kb的Javascript代码来提速你的网站



       Head JS是一段简单、轻量的脚本代码,通过像加载图片一样加载其他脚本,让你的网站更快。Head JS能做许多工作使你的网站变得现代化:支持CSS3、动态CSS等等。



       访问 Head js



       5. Copy Paste Character: 轻松使用特殊字符



       特殊字符处理起来很麻烦,因为键盘上没有,而且你不知道对应的ASCII码。当然,你可以找一份ASCII码表放在桌面上,或者使用一个叫做Copy Paste Character的服务:只需点击所选字符,就可以复制到你的剪贴板。



       访问 Copy Paste Character



       6. DB Designr: 在线生成数据库模式



       这是一个非常棒的简单在线生成数据库模式的工具。无需创建账户,你可以用你的Google账户登入。(我觉得我们伯乐在线网站的读者都有Google账户!说不定你就是通过Google阅读器在阅读此文。)



       访问 DB Designr (墙)



       7. Web 2 pdf convert: 把转换任意网页为PDF



       Web2PDF Converter是一个很有用的工具,能把转换任意网页为PDF文件。非常好用:我已经转换了5个页面,所有地方都跟html上的版本完全一样。



       访问 web 2 pdf convert



       8. ScriptSrc:轻轻松松地把html页面连接到JS库中



       你是否已经厌倦了在网上寻觅最新的Javascript库标签?ScriptSrc.net收录了jQuery、 Mootools、 Prototype等所有最新的标签,只需单击就可以把它复制到你的浏览器剪贴板。



       访问 ScriptSrc



       后话



       如果你还知道其他设计相关的优秀网站,请在评论或微博中和大家一起分享。



      译文出处:伯乐在线 - 职场博客

      译文链接:http://www.jobbole.com/entry.php/654

      原文:catswhocode 文章推荐:关关  翻译:伯乐在线 敏捷翻译组 - 魏哲 ]]>
    4 http://iw3c.com/blog/archive/790/#comments
    mysql alter 操作 http://iw3c.com/blog/archive/mysql-alter/ http://iw3c.com/blog/archive/mysql-alter/ Wed, 20 Apr 2011 00:00:00 +0000 aries //主键

    alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);

    //增加一个新列

    alter table t2 add d timestamp;
    alter table infos add ex tinyint not null default '0';[/more]

    //删除列

    alter table t2 drop column c;

    //重命名列

    alter table t1 change a b integer;

    //改变列的类型

    alter table t1 change b b bigint not null;
    alter table infos change list list tinyint not null default '0';

    //重命名表

    alter table t1 rename t2;

    //加索引

    alter table tablename change depno depno int(5) not null;
    alter table tablename add index 索引名 (字段名1[,字段名2 …]);
    alter table tablename add index emp_name (name);

    //加主关键字的索引

    alter table tablename add primary key(id);

    //加唯一限制条件的索引

    alter table tablename add unique emp_name2(cardnumber);

    //删除某个索引

    alter table tablename drop index emp_name;

    //修改表、增加字段:

    ALTER TABLE table_name ADD field_name field_type;

    //修改原字段名称及类型:

    ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

    //删除字段:

    ALTER TABLE table_name DROP field_name;

    ]]>
    0 http://iw3c.com/blog/archive/mysql-alter/#comments
    早育传说之Firefox 6惊现官方服务器 http://iw3c.com/blog/archive/788/ http://iw3c.com/blog/archive/788/ Fri, 15 Apr 2011 00:00:00 +0000 aries 就在Firefox 4正式版发布前一个月的时间曾有一篇文章讲述了Firefox 5用户界面设计,广大群众纷纷表示儿子尚未出世怎能讨论孙子的就业问题。显然群众的不满得到了传达,现在Mozilla官方FTP突然释出Firefox 6的Nightly Build,曾孙子的养老保险缴纳已提上了日程。

    笔者下载的是Win64版本。安装完毕,便已发现与之前版本第一个不同点:快捷方式的名称是 'Nightly',既不是正式版的 'Mozilla Firefox',也不是Nightly Build惯用的 'Minefield'。而图标也不再是原来32 * 32的蓝色地雷,现在是全新的高清蓝色地球。好吧,分辨率是没什么问题,只是图像像是低分辨率的图标非平滑方法来的...

    打开程序目录,可以看到可执行文件的名称仍然是 'firefox.exe',文件版本为 6.0.0.4120,产品版本为6.0a1。嗯等等,修改日期怎么是2010年1月1日?看来人家2011年讨论孙子是完全合理理所应当的。

    可能是刚刚变更版本号的原因,程序主界面与4.2 Nightly Build并无两样,甚至菜单按钮上的字样仍然是 'Minefield'。但是当查看关于的时候,杯具发生了…

    看来关于对话框可能会有新的变化,不过今天晚上是别想看到了。此外,User Agent已经变更为 Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:6.0a1) Gecko/20110413 Firefox/6.0a1 。

    目前尚不知Mozilla此举是否为对Chromium 12公布的回应。有砖家表示,业界新一轮版本号的残酷竞争即将展开。

    ]]>
    0 http://iw3c.com/blog/archive/788/#comments