手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2011年09月的文章

mysql:Lost connection to MySQL server at 'reading initial communication packet', system error: 0

远程管理数据库的时候,以前都是用phpmyadmin,后来就再也不用这种了,一来是因来速度慢,二来扔在服务器上,人人都可以访问太危险了。。所以我现在在用navicat的ssh方式访问。其实我比较喜欢用SQLyog的,但是它没有mac的版本。
OK,现在我们开始用nvaicat来访问吧。
一台服务器正常了,二台正常了,结果,第三台不正常了。报错:

XML/HTML代码
  1. Lost connection to MySQL server at 'reading initial communication packet', system error: 0  

然后找资料了。
1、有人说,在mysqld启动的时候加入skip-name-resolve,于是我在my.cnf加上,也没用。。。
2、又有人说,需要在/etc/hosts.allow里加上mysqld:allow,好吧,我继续加上,仍然没用。参考:http://www.bramschoenmakers.nl/en/node/595
3、最后找不同点。突然发现,原来连接不上的那台服务器的my.cnf里居然有一个bind-address:xx.xxx.xxx.xxx,绑定了IP,所以ssh通道连接的时候,不能工作,改成127.0.0.1后一切正常

4、结果改完后发现,本地代码连接远程的时候,连接不上数据库了,代码里写死IP的所以无法改变。最终再找资料把bind-address改为0.0.0.0,然后一切都正常了(这个只适合在局域网测试上,其他情况下尽量不要改,出了问题可不要找我。。。。)

Tags: mysql, connection, navicat

震精:[图]MySQL.com被黑 黑客挂牌出售其root权限

在cnbeta上看到这个新闻的时候,震精了啊。
新闻不知道是真是假,所以我纯转贴,莫找我啊,原文来自:http://www.cnbeta.com/articles/156424.htm

Amorize的安全研究人员最近表示,已经确认黑客入侵mysql.com,并通过iframe的方法让用户感染了恶意代码,他们已经追踪到佛罗里达和瑞典两个恶意软件托管地,在当地时间周一下午依然在对mysql.com的访客实施攻击,用户凭据可能已经遭到了窃取,因此建议mysql.com注册过的用户修改自己与此相同的密码。

更糟的是研究发现,mysql.com的root权限似乎已经开始在俄罗斯的地下黑客论坛挂牌出售,价格3000美元,黑客们只要给钱就可以获得访问mysql.com的权限,可见问题的糟糕程度。

大小: 37.04 K
尺寸: 500 x 374
浏览: 1856 次
点击打开新窗口浏览全图

Tags: mysql, root, 黑客

老王:Subversion钩子

事实上,我一般用的最多的就是Post-Commit,因为用来将SVN里的代码提交到测试机的项目里。其实也听过用svn来检测代码的可执行性。不过我是没有用过啦。
老王在博客里写的这篇文章就是讲pre-commit。有借鉴意义,以后可以悄悄的程序里用。不过,我觉得检查语法这种事情其实可以忽略了,毕竟现在都是用IDE的,一般语法问题IDE都能认出来。。

注:我开始看文章的时候没有仔细看CodeSniffer,我起初认为是语法检测,事实并非这样,是指代码是否按规范来写代码。如果是这样,那值得搞一搞啊

OK,上原文:Subversion钩子

Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能。

所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有很多,默认有如下模板可供选择:

XML/HTML代码
  1. shell> ls /path/to/repository/hooks  
  2. post-commit.tmpl   
  3. post-lock.tmpl   
  4. post-revprop-change.tmpl   
  5. post-unlock.tmpl   
  6. pre-commit.tmpl   
  7. pre-lock.tmpl   
  8. pre-revprop-change.tmpl   
  9. pre-unlock.tmpl   
  10. start-commit.tmpl 

其中最常用的是pre-commit和post-commit,也就是提交前后的钩子,下面以pre-commit为例来说明一下如何自定义Subversion钩子。

假设有一个PHP项目使用Subversion做版本控制,使用中发现了一些问题,比如程序员不写日志,或者提交的文件有BOM,或者提交的文件有语法错误,或者提交的文件不符合编码规范等等,这些问题都可以利用pre-commit钩子来解决,实际上已经有人写了解决类似问题的工具php-svn-hook,不过我们这里选择自己实现:

XML/HTML代码
  1. shell> cat /path/to/repository/hooks/pre-commit  
  2. #!/bin/bash  
  3.   
  4. REPOS="$1"  
  5. TXN="$2"  
  6.   
  7. SVNLOOK="/usr/bin/svnlook"  
  8. PHP="/usr/bin/php"  
  9.   
  10. LOG=$($SVNLOOK log -t "$TXN" "$REPOS")  
  11.   
  12. if [ "$LOG" = "" ]; then  
  13.       echo "Please input log" 1>&2  
  14.       exit 1  
  15. fi  
  16.   
  17. FILES=$($SVNLOOK changed -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}')  
  18.   
  19. for FILE in $FILES; do  
  20.     CONTENT=$($SVNLOOK cat -t "$TXN" "$REPOS" "$FILE")  
  21.   
  22.     if echo "$CONTENT" | grep -q $'\xEF\xBB\xBF'; then  
  23.         echo "Please remove BOM from $FILE" 1>&2  
  24.         exit 1  
  25.     fi  
  26.   
  27.     if [[ "$FILE" =~ \.(php|html)$ ]]; then  
  28.         MESSAGE=$(echo "$CONTENT" | $PHP -l 2>&1)  
  29.   
  30.         if [ $? -ne 0 ]; then  
  31.             echo "$MESSAGE" | sed "s/ -/ $FILE/g" 1>&2  
  32.             exit 1  
  33.         fi  
  34.     fi  
  35. done  
  36.   
  37. /path/to/PHP_CodeSniffer/scripts/phpcs-svn-pre-commit "$REPOS" -t "$TXN" 1>&2 || exit 1  
  38.   
  39. exit 0  

注:代码里使用PHP_CodeSniffer检查编码规范。

配置好脚本后,一定要记着给脚本加上可执行属性,不然脚本执行后会显示不知所云的错误信息:svn: Commit blocked by pre-commit hook (exit code 255) with no output。

本文以pre-commit为例说明了一下钩子的用法,实际上其他脚本也很有用,比如说如果你想在提交代码后发一条微博,就可以利用post-commit来解决,大家自己领悟吧。

--------
主要还是对bash不熟,否则post-commit里的代码我也不至于是直接改成svn-update的代码了。
学习学习

Javascript判断横竖屏

最近在做ipad上的网页处理的时候,经常需要切换横竖屏。于是找了一下资料,写了一个简单的判断:

function check(){
     var s,screen = (window.innerWidth > window.innerHeight) ? "portrait" :"landscape";
     if(s!=screen){
         s=screen;
         alert(s);
    }
}
然后在document.addEventListener("DOMContentLoaded",function(){
     //在这里加入
    window.addEventListener("orientaionchange",check,false);
    //然后就是很重要的一句:
    setInterval(check,300);
})

为什么要用setInterval,就是因为每一次切换都要迅速判断,因此不得不用setInterval,否则第一次判断后就不会再处理了。。

Tags: javascript, ipad

备份:Lion 小技巧,掐掉 Dashboard

以下内容来自于小众软件,原文是:http://www.appinn.com/disabled-dashboard-mac/
功能用起来还是比较方便的,之所以禁用了widget,是因为我发现那些小工具我都用不到,留着也没有意义,还浪费我的资源和内存。。。Lion果然是4G内存起步啊。真郁闷。OK上原文 .。。

Mac OS X LionDashboard 里面可以放很多的 Widgets,有系统自带的,也可以放置第三方的(效果如图)。子桑二狗发现 Dashboardwidget 功能没 Win7 直观(win7widget 是放置在桌面上的,Lion 的必须切换到 Dashboard 界面,子桑二狗是 Mac 菜鸟,不知道还有放到桌面的技巧。据小众读者 songjave 留言:把 Dashboard 解锁开发模式就把 Widgets 可以扔到桌面上了。),而且 Dashboard 的天气预报非常坑爹,部分地区没有天气预报的信息,比如潮州市。


基本上,对子桑二狗来说,Dashboard 只是占内存的丑陋花瓶而已,既然不用,何不掐掉它。打开终端,输入下面的命令:

defaults write com.apple.dashboard mcx-disabled -boolean YES

然后再重启一下 Dock,在终端输入

killall Dock

如果以后后悔了,想重新启用 Dashboard,就用下面的命令:

defaults write com.apple.dashboard mcx-disabled -boolean NO
killall Dock

-----EOF---
在secureCRT下面处理了一下,立刻仿佛速度好象快了好多,难道是我的心里作用??

Tags: dashboard, dock, widget, lion

Records:3712345678