今天听到 2 个新名词,看看都挺感兴趣的,不过工作太忙,没时间仔细看,记下来,回家看~~ 一句话概括: Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL, PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。 Ratproxy: Google 的 XSS […]
Web开发
Apache ReWrite UrlReWrite .htaccess
Apache的mod_rewrite是提供了强大URL操作的杀手级的模块,可以实现几乎所有你 梦想的URL操作类型,其代价是你必须接受其复杂性,因为mod_rewrite的主要障碍就是初学者不容易理解和运用,即使是Apache专家有时也会 发掘出mod_rewrite的新用途。 换句话说:对mod_rewrite,或者是打退堂鼓永不再用,或者是喜欢它并一生受用。 ReWrite可以应用在以下方面或者解决以下问题: URL的规划 规范的URL 说明: 在有些网站服务器上,一个资源会拥有多个URL,在实际应用和发布中应该被使用的是规范的URL,其他的则是简写或者是内部使用的。无论用户在请求中使用什么形式的URL,他最终看见的都应该是规范的URL。 方案: 对所有的不规范的URL执行一个外部的HTTP重定向,以改变它在浏览器地址栏中的显示及其后继的请求。下例中的规则集用规范的/u/user替换/~user,并修正了/u/user所遗漏的后缀的斜杠。 代码: RewriteRule ^/~([^/]+)/?(.*) […]
Javascript 获取 textarea 光标 文字 位置 内容 IE Firefox
Javascript 获取 textarea 光标 文字 位置 内容 IE Firefox 最近帮朋友做一个获取文字内容,并处理选中文字的Javascript程序。 本来上网查查,用Firefox搞定了,包括Opera、Safari,不过到IE那里遇到很多问题!!! 还发现了IE的一个Bug! 就是 var objRange = […]
浏览器 跨域 安全
Manuel Caballero大牛在这次的BLUEHAT大会上讲了一个叫A Resident in My Domain 的议题,字面上的意思就是驻留在自己的域,随后开始有牛人在自己BLOG上写了一些相关的 内容,这段时间一直和HI群里的朋友在讨论这个问题,大家都简称为鬼页,这个鬼页非常神奇, 可以跟随你浏览的每个页面。经过鬼页的启发,我也对浏览器的跨域安全问题进行了测试。 1.来自伪协议的呼唤 JAVASCRIPT里大家都频繁使用window对象,window对象代表的就是浏览器的窗口,我们 就来测试下window对象的open方法,尝试让新开的窗口执行伪协议。 […]
虚拟主机 SSH
问题由来: 我买了美国的虚拟主机,机器性能很好,空间巨大(150G) ,唯一的也是最大的问题,就是访问速度慢。 其实服务器本身至少能保证3M的带宽,我用其他服务器,单线程wget美国主机的文件,都可以稳定地保持在300K/s以上。 但用浏览器访问,由于需要发起多次tcp连接,而每次连接只传很小的几k文件就立即断掉,所以很慢。 最让我抓狂的就是,我上传一个软件包,总大小也就4、5M,但文件数量特别多,至少有几百甚至上千,传这么一个文件夹,没有2小时根本完不了。 我就想,如果虚拟主机有命令行,可以执行压缩或解压命令就好了。 传单个文件,再慢,也能保证每秒50K,像这样几M的文件,几分钟就可以搞定。 但如何解压呢? 答案就是:web版的命令行工具。 最简单的,就是system或exec函数,可以像SSH客户端一样,执行我们想要的命令。 注意,有些虚拟主机限制执行system和exec这两个函数,但我做了测试,证明是有其他方法的,一会儿再说这个方法是什么。 请您看到这个方法后,不要大肆宣传,或利用这个方法做一些危害主机安全的操作。如果这个方法也被禁用了,那以后就再也没有类似的方法了。 有了web的ssh,我们该怎么用呢? 1、首先要有清晰的unix文件的路径知识,知道什么是绝对路径,什么是相对路径,如何引用一个路径,等等。因为web版ssh只能方便地在当前一个目录下操作,稍有不慎,就可能造成无法挽回的后果。 […]
编码检查 UTF-8 浏览器编码
编码问题一直是做网站开发的工程师们很头疼的事,如果你希望自己的网站能够被更多不同语言环境的人浏览和使用,那就一定要解决好编码的问题。 我的经验是,从HTML页面的编码,到PHP程序文件的编码,到数据库的设计以及与PHP之间连接的编码,全部使用UTF-8,这样就能保证你的页面不会出现乱码。 不要总是觉得,你的网站是给中国人用的,不给其他国家的人使用。如果你的中国用户希望保存一些日文、韩文等亚洲文字, 你也没有理由拒绝吧? 还是在一开始就解决好编码的问题为好,做网站,免不了这一步,今天不做,以后迟早要还的。 如果你认为我说的毫无道理,那我给大家引用一篇W3C组织的官方说明吧: http://www.w3.org/International/questions/qa-forms-utf-8.en.php 注意回答部分的第一句:The best way to deal with encoding issues […]
澄清Java 接口与继承
计算机学院研二的兄弟与我讨论Java,一见面,几个问题全是关于接口,接口有什么用?为什么要用接口?什么时候该使用接口?很庆幸他们不是问我Java如何连接SQL Server,或者是如何开发J2EE应用,这类问题有杀伤力,避之则吉。今年计算机学院本科有个毕业设计课题是做J2ME,选这个题目的学生在5月末都还在苦着脸研究java.util.*这个包,这个这个……唉。 大多数人认为,接口的意义在于顶替多重继承。众所周知Java没有c 那样多重继承的机制,但是却能够实作多个接口。其实这样做是很牵强的,接口和继承是完全不同的东西,接口没有能力代替多重继承,也没有这个义务。接口的作用,一言以蔽之,就是标志类的类别(type of class)。把不同类型的类归于不同的接口,可以更好的管理他们。OO的精髓,我以为,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c 、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。(cowboy的名言是“抽象就是抽去像的部分”,看似调侃,实乃至理)。 设计模式中最基础的是工厂模式(Factory),在我最近的一个很简单的应用中,我想尽量的让我的程序能够在多个数据库间移植,当然,这涉及很多问题,单是如何兼容不同DBMS的SQL就让人头痛。我们不妨先把问题简单化,只考虑如何连接不同的数据库。 假设我有很多个类,分别是Mysql.java、SQLServer.java、Oracle.java、DB2.java,他们分别连接不同的数据库,统一返回一个Connection对象,并且都有一个close方法,用于关闭连接。只需要针对你的DBMS,选择不同的类,就可以用了,但是我的用户他会使用什么数据库?我不知道,我希望的是尽量少的修改代码,就能满足他的需要。我可以抽象如下接口: package org.bromon.test; public interface DB { […]
GMail 安全隐患 Google 密码
尽管我下面要讲述的情景并不会经常出现,但后果却是很严重,希望引起Google的注意,同时也希望能提醒提供类似功能的其他公司! 我注册了Google的帐号,有了一个GMail邮箱,他很好用,而且我每天都要登录我的邮箱收发信件。 正是由于使用频繁,我在登录的时候,选中了“在此计算机上保存我的信息”,免去了每次登录都要输入密码的麻烦。 我在家,在公司,在我的笔记本上,三处地方,都应用了这种设置,所以我在这三台电脑上打开http://mail.google.com的时候,都是直接进入邮箱。 如果,我因为某事,不再继续为这家公司工作了,而我临走时忘记清空浏览器的cookie,那么,这个公司的网管,就可以登录我的系统,查看我遗留的各种文档。 当他再次打开http://mail.google.com的时候,直接进入了我的邮箱!!! 这是一个非常严重的问题。 我曾经想过补救,我认为这方法应该有效,但Google没有这样做: 我在家里的电脑上登录GMail,更改我的密码,然后退出登录,当我再次登录时,需要输入新的密码。这个过程没问题。 但我用我的笔记本,在浏览器上打开http://mail.google.com,依然可以访问。 这就是问题的根源!!! 这个时候,那家公司的网管,是可以访问我的邮箱的,因为Google没有对密码做数字签名!这是问题的关键!也是我这篇文章的核心内容! 在Web安全方面,Google应该有很深的经验了。 利用cookie记录登录状态,避免每次输入密码,是很好的设计,很人性化。 唯一的缺点,就是没有提供给用户一个既安全又方便的途径来取消这一遍历登录方式。 […]
PHP 数组 递归 magic_quotes 回调函数
为了适应不同的服务器设置,首先判断是否打开了 magic_quotes,如果打开了,在开始的地方就全部过滤。 后面程序统一默认为 magic_quotes 已关闭,避免了多次转义的问题。 一行代码的函数,两点需要注意,一个是递归调用,另一个是传递回调函数的方法,可以引用一个类的静态方法。 实现过程,比较优雅,不是吗?
DNSPod Squid CDN
好几天没有写东西了,最近有点忙,一直在学东西。 今天看了看 用DNSPod和Squid打造自己的CDN ,是长篇教程,感觉还不错,我转载了一下。 在论坛里发的,在这里发实在是太占篇幅了。 另外,为了统一格式,做了一个小的javascript工具,地址是: http://code.leakon.com/javascript/auto_format/ 可以去掉连续换行,并加入首行缩进,而且支持正则替换,功能很单一,慢慢完善吧。 想看代码,可以去http://leakon.googlecode.com/svn/trunk/leakon/javascript/auto_format/,这是Google的SVN服务。