Posted
on 2011 年 10 月 21 日, 下午 3:21,
by ETY001,
under
编程语言. 763 views
1、php页面产生数据存入数据库时,应使用header(“content-type:text/html;charset=utf-8″);语句对php页面的编码格式进行强制设置,并且还需要加入一行代码mysql_query(“set names utf8″);
2、在做调试的时候,记的给自己添加进去的输出语句写一个不一样的标示性的注释,方便删除测试语句的时候查找。
3、这周在解决的一个bug的时候发现jQuery中的$.ajax方法在chrome浏览器和IE浏览器中的执行顺序是不同的,这还是在网络上搜索出来的。具体的表现如下:
继续阅读剩余部分 »
Posted
on 2012 年 5 月 16 日, 上午 12:32,
by ETY001,
under
编程语言. 56 views
作者:邵盛松 2009年1月13日
前言:
网上关于Enterprise Architect这个UMl工具的教程比较少,所以就写些如何驾驭这个UML工具.
一 画类图步骤如下
1新建一个项目,出现SelectModel窗口,在SelectModel勾选Class.然后点击OK
2工具箱将显示Class Elements,ClassRelationships,Common
3创建Elements,在ClassElement中点击一个需要添加的元素,这里是Class,然后点击主窗口的空白处.弹出关于class的选项,点击确定class就添加到窗口中.
4创建类与类之间的关系.在ClassRelation中选择一个关系,单击源Element,按住鼠标不松,一直拖动到目标窗口上.类与类之间的关系就创建完成.
继续阅读剩余部分 »
Posted
on 2012 年 5 月 16 日, 上午 12:26,
by ETY001,
under
编程语言. 53 views
转自:http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/0927/3349.html
先看看下边这段PHP代码。这段使用ip2long函数,对同一个IP进行转换。当然,也有人认为58.99.011.1和058.99.011.1算不上合法的
IP,那就Return,此文对你没有帮助。
为什么要使用带前导零的ip:为了在数据库中查询,这个可以在IP库中定位到ip所对应的位置信息。虽然没有整型的IP查询效率高,但毕竟直观啊。
echo ip2long('58.99.11.1'),"<br/>"; //输出是 979569409
echo ip2long('58.99.011.1'),"<br/>"; //输出是 979568897
echo ip2long('058.99.11.1'),"<br/>"; //输出是空
echo ip2long('58.99.11.1'),"<br/>"; //输出是 979569409
echo ip2long('58.99.011.1'),"<br/>"; //输出是 979568897
echo ip2long('058.99.11.1'),"<br/>"; //输出是空
继续阅读剩余部分 »
Posted
on 2012 年 5 月 9 日, 下午 3:20,
by ETY001,
under
前端设计. 68 views
获取地理位置的方式及其优缺点:
1、ip地址
书上说不准确,很多时候获取的是ISP机房的位置,但是获取非常方便,没有什么限制。但是实际上我觉得在中国,ip地址还是比较准确的,基本上上能精确到小区或大楼的标准。
2、GPS
非常准确,但是需要在户外,且需要很长时间搜索卫星。最主要的很多设备比如笔记本电脑基本都是不带GPS的,新的智能手机倒是都有。
3、WiFi基站的mac地址。(猜测是连接位置已知的公共WiFi的时候,通过Mac地址识别WiFi接入点,从而定位)
这种定位的精度还是很不错的,而且还可以在室内定位。不过由于这种位置公开的wifi比较少,此种方法的适用范围比较少。
4、 GSM或CDMA基站
通过基站定位,精度随基站密度变化,精度一般,还是只有手机能用。看来地理位置API还是手机上比较有实用性。
5、用户指定位置
晕,这个就不是HTML5的范畴了。
继续阅读剩余部分 »
Posted
on 2012 年 5 月 3 日, 下午 4:39,
by ETY001,
under
Linux. 166 views
喜欢折腾的人是闲不住的,这几天就在自己的笔记本上把原来的LinuxDeepin干掉,然后安装上了archlinux+xfce4的环境。现在基本是能用了,就说下流程,一次也写不全,先写下来,以后有时间再补充,也算是自己做个笔记,方便日后再次重装。
1、系统的安装。我用的是U盘安装,整个流程在archlinux的wiki上有详细介绍。
2、系统升级。我习惯安装完系统后第一时间升级,由于archlinux采用的是滚动升级的模式,所以只需要一条命令即可。
pacman -Syu
升级可能遇到的问题:执行命令后,可能系统会问pacman版本过低应先升级pacman,是否跳过升级pacman,这里一定要选择N。另外一个问题就是会有类似下面的错误:
error: failed to commit transaction (conflicting files)
filesystem: /etc/mtab exists in filesystem
Errors occurred, no packages were upgraded.
继续阅读剩余部分 »
Posted
on 2012 年 5 月 1 日, 下午 5:01,
by ETY001,
under
Linux. 95 views
fakeroot不能获得root的权限,sudo可以。
fakeroot只是伪装成root,它不能改变需要root权限才能改变的文件,它只是让程序执行时按照有root权限的情况来运行,而对文件的操作实际上是在普通用户下进行的。
1
2 |
fakeroot tar cvf /tmp/local.tar /usr/local
sudo tar cvf /tmp/local.tar /usr/local |
上面两条命令都会在/tmp下建立local.tar,tar内的文件名都会以/开头,但前一条命令生成的文件属于当前用户,后一条命令生成的文件是root的。
Posted
on 2012 年 4 月 22 日, 上午 1:00,
by ETY001,
under
Python,
编程语言. 120 views
转自:http://linluxiang.iteye.com/blog/799163
wsgi初探
前言
本文不涉及WSGI的具体协议的介绍,也不会有协议完整的实现,甚至描述中还会掺杂着本人自己对于WSGI的见解。所有的WSGI官方定义请看http://www.python.org/dev/peps/pep-3333/。
WSGI是什么?
WSGI的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。
也就是说,WSGI就像是一座桥梁,一边连着web服务器,另一边连着用户的应用。但是呢,这个桥的功能很弱,有时候还需要别的桥来帮忙才能进行处理。
下面对本文出现的一些名词做定义。 wsgi app ,又称 应用 ,就是一个WSGI application。 wsgi container ,又称 容器 ,虽然这个部分常常被称为handler,不过我个人认为handler容易和app混淆,所以我称之为容器。wsgi_middleware ,又称 中间件 。一种特殊类型的程序,专门负责在容器和应用之间干坏事的。
继续阅读剩余部分 »
Posted
on 2012 年 4 月 10 日, 下午 2:46,
by ETY001,
under
网络相关. 192 views
转自:http://blog.codingnow.com/2011/02/zeromq_message_patterns.html
在需要并行化处理数据的时候,采用消息队列通讯的方式来协作,比采用共享状态的方式要好的多。Erlang ,Go 都使用这一手段来让并行任务之间协同工作。
最近读完了 ZeroMQ 的 Guide。写的很不错。前几年一直有做类似的工作,但是自己总结的不好。而 ZeroMQ 把消息通讯方面的模式总结的很不错。
ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯模式。它有比 tcp 协议更高一级的协议。(当然 ZeroMQ 不一定基于 TCP 协议,它也可以用于进程间和进程内通讯。)它改变了通讯都基于一对一的连接这个假设。
ZeroMQ 把通讯的需求看成四类。其中一类是一对一结对通讯,用来支持传统的 TCP socket 模型,但并不推荐使用。常用的通讯模式只有三类。
- 请求回应模型。由请求端发起请求,并等待回应端回应请求。从请求端来看,一定是一对对收发配对的;反之,在回应端一定是发收对。请求端和回应端都可以是 1:N 的模型。通常把 1 认为是 server ,N 认为是 Client 。ZeroMQ 可以很好的支持路由功能(实现路由功能的组件叫作 Device),把 1:N 扩展为 N:M (只需要加入若干路由节点)。从这个模型看,更底层的端点地址是对上层隐藏的。每个请求都隐含有回应地址,而应用则不关心它。
- 发布订阅模型。这个模型里,发布端是单向只发送数据的,且不关心是否把全部的信息都发送给订阅端。如果发布端开始发布信息的时候,订阅端尚未连接上来,这些信息直接丢弃。不过一旦订阅端连接上来,中间会保证没有信息丢失。同样,订阅端则只负责接收,而不能反馈。如果发布端和订阅端需要交互(比如要确认订阅者是否已经连接上),则使用额外的 socket 采用请求回应模型满足这个需求。
- 管道模型。这个模型里,管道是单向的,从 PUSH 端单向的向 PULL 端单向的推送数据流。
任何分布式,并行的需求,都可以用这三种模型组合起来解决问题。ZeroMQ 只专注和解决了消息通讯这一基本问题,干的非常漂亮。
基于定义好的模型,我们可以看到,api 可以实现的非常简单易用。我们不再需要 bind/listen/accept 来架设服务器,因为这个模型天然是 1:N 而不是 1:1 的,不需要为每个通道保留一个句柄。我们也不必在意 server 是否先启动(bind),而后才能让 client 工作起来(connect)。
这以上模型中,关注的是通讯双方的职责,而不是实现的方式:监听端口还是连接对方端口。对于复杂的多进程协同工作的系统, 不必纠结于进程启动的次序(在我前几年设计的系统中,启动脚本写起来就非常麻烦)。
使用 ZeroMQ 不必在意底层实现是使用短连接还是长连接方式。ZeroMQ 中的 Transient (短暂) 和 Durable (持久) socket 也并非区别于实现层是否保持了 tcp 连接。而是概念上的不同。对于 Durable socket ,其生命期可以长于一个进程的生命期,即使进程退出,再次启动后依旧可以维持继续之前的 socket 。当然,这并不是帮助你挽救你的程序因出错而崩溃的。它只是提出这个模式,让你根据设计需要可以实现。对于 ZeroMQ ,如有需求(若内存有限),甚至把数据传输的 buffer 放到磁盘上。
对于网络游戏,我觉得基于 ZeroMQ 来架构服务器非常合适。对于玩家 Client – Server 部分倒不必使用 ZeroMQ ,而可以写一个前端程序,比如前些年写过的一篇 blog 中提到的连接服务器依然适用。这个连接服务器对内的服务集群则可以用 ZeroMQ 的协议通讯。
Posted
on 2012 年 4 月 10 日, 上午 9:50,
by ETY001,
under
WordPress. 152 views
转自:http://fairyfish.net/2008/11/16/wordpress-seo-2-description-keywords/
Description 和 Keywords 的重要性已经不像以前那么重要了,但是设置正确的 Description 和 Keywords 还是对你的排名有利。
WordPress 在撰写日志的时候,可以给日志添加摘要(excerpt)和标签(tag),我的做法就是,就如给日志添加了摘要就把摘要做为 Description,如果没有设置摘要的话,则截取文章的前 220 个字作为 Description,而标签直接作为 Keywords。代码如下:
<?if (is_home()){
$description = "我爱水煮鱼是一个关注 WordPress 开源博客平台应用和互联网的 IT 博客。";
$keywords = "WordPress, 博客, 互联网, 主题, 插件";
} elseif (is_single()){
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
$description = substr(strip_tags($post->post_content),0,220);
}
$keywords = "";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ", ";
}
}
?>
<meta name="keywords" content="<?=$keywords?>" />
<meta name="description" content="<?=$description?>" />
上面代码请放到 header.php 相应的位置,同样我也只优化了首页和日志页面。
Posted
on 2012 年 4 月 10 日, 上午 8:58,
by ETY001,
under
Ubuntu,
编程语言. 150 views
转自:http://www.cnblogs.com/OnlyXP/archive/2007/08/10/851222.html
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。
相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:
#define __FD_SETSIZE 1024
表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。
epoll的接口非常简单,一共就三个函数:
1. int epoll_create(int size);
创建一个epoll的句柄,size用来告诉内核这个监听的数目一共有多大。这个参数不同于select()中的第一个参数,给出最大监听的fd+1的值。需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。
继续阅读剩余部分 »
Posted
on 2012 年 4 月 4 日, 上午 3:46,
by ETY001,
under
前端设计. 215 views
引用
baoxc 的 Photoshop把PSD网站模板切图为XHTML+CSS的网页
之前我们用photoshop设计过一个blog网页界面—用PS设计清爽博客网站界面,这次将会将会用photoshop将网页设计稿制作成HTML页面
现在我们来看看如何将这个概念设计转化为完整的由XHTML和CSS组成的标准网页。从PS里面将之前的设计稿从PS里面输出然后再加上编码,这样我们就会得到一个完整的博客设计。

在上一个教程里面,我们创建了一个包含了所有框架,设计,色彩,拟议定的板式和基本内容的设计模型。 现在是时候让我们回顾一下之前的计划和概念设定来看看——哪些需要使用纯粹的xhtml和css,哪些需要使用到原来的图片。

首先被导出的元素是大的背景图。隐藏掉其他所有页面的图层,然后选择大的背景图导出为web使用格式。
从第一印象上来讲,这个大图片很容易让人觉得他很大,所以体积会变的很大。但是事实上用jpg格式调整好质量质量之后这个文件仅仅才30K而已,这里需要你来拿捏文件的质量和整体的体积的平衡。(译者注:图片如果太大可以适当用高斯模糊来减少细节这样图片体积就会缩小点,一般来讲背景图不必使用特别清晰的底图,增加体积却又吸引眼球影响阅读。)
