mysql str_to_date 字符串转日期类型

酝酿

最近写的那个嘀咕备份程序,有个需要修改的地方。

首先来看看嘀咕api生成的任意一个含有<status>的xml文件 http://api.minicloud.com.cn/statuses/public_timeline.xml

里面的这个节点:<created_at>Mon Mar 15 02:01:51 +0800 2010</created_at>

created_at节点的意思是 这个元素创建的UTC时间戳。via

恕我无知,我确实不知道这个时间戳格式弄成这样有啥好处:

Sat May 02 20:32:02 +0800 2009
星期 月  日  时:分:秒  时区   年

所以开始在写表结构的时候,把这个字段用varchar来表示,这样的缺点就是无法对所有的嘀咕消息通过时间条件来查询。

其实还有一个缺点:http://api.minicloud.com.cn/statuses/user_timeline.xml?userIdOrName=tunpishuang&page=1 。

我写的代码是从第一页(page=1)一直到最后一页,page=1是最新的消息,也就是最新的消息先写入表中,这些记录的主键id=1,2,3,4…….这无非是一个order by id asc or desc的一问题,但是我以后还要通过其他的渠道向表插入新纪录,这样就混乱了timeline。

所有想扯了这么远,回归到正题就是将这个created_at的值转换成mysql能够识别的日期格式。

正题

mysql手册上发现了我们需要的函数str_to_date  http://dev.mysql.com/doc/refman/5.1/zh/functions.html

mysql> select str_to_date('Sat May 02 20:32:02 +0800 2009','%a %b %e %k:%i:%s +0800 %Y');
+----------------------------------------------------------------------------+
| str_to_date('Sat May 02 20:32:02 +0800 2009','%a %b %e %k:%i:%s +0800 %Y') |
+----------------------------------------------------------------------------+
| 2009-05-02 20:32:02                                                        |
+----------------------------------------------------------------------------+
1 row in set

mysql>

我发现我写东西都喜欢循循善诱,看来我很适合当老师。

 

《大学日本语》配套听力mp3下载

《大学日本语》四川大学出版社 王庭凯主编

为了节约钱,买了4册书,但是没有买磁带。心想网上会有mp3下载,可以只找到了kaoyansky.cn这个crap论坛,需要共享币,一点共享精神都米有。幸好有个好心的网友qq147859950 用邮件传给了我,万分感激。为了更广大人民的利益,我决定分一下流。

可以到http://www.rayfile.com/zh-cn/files/145b15a1-f766-11dd-b0ba-0014221b798a/ (失效)
http://www.rayfile.com/files/8abf39f3-0a48-11de-9fa8-0019d11a795f/(失效)

http://www.namipan.com/d/aed3dba3220fc264501f253c2845e7c53c064ee9be065f10 (Update,09.3.27)
http://www.damipan.com/file/1Fle9aI.html (大米盘,update,09.05.17)

http://vdisk.cn/down/index/4205028A9744 (速度挺快的,支持迅雷,就是有弹窗广告。update:2010.3.14)

下载,大小:261.9 MB,链接失效请留言告知。

 

MySQL的ExecuteNonQuery()出现异常 “未处理 System.ArgumentOutOfRangeException”

错误内容如下:

未处理 System.ArgumentOutOfRangeException
 Message="索引和长度必须引用该字符串内的位置。\r\n参数名: length"
 Source="mscorlib"
 ParamName="length"
 StackTrace:
 在 System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
 在 MySql.Data.MySqlClient.MySqlTokenizer.NextParameter()
 在 MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql, MySqlParameterCollection parameters, MySqlPacket packet)
 在 MySql.Data.MySqlClient.Statement.BindParameters()
 在 MySql.Data.MySqlClient.PreparableStatement.Execute()
 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
 在 DiguBackup.CDigu.BackupAsDb() 位置 d:\projects\DiguBackup\DiguBackup\Form1.cs:行号 245
 在 DiguBackup.Form1.btnBackup_Click(Object sender, EventArgs e) 位置 d:\projects\DiguBackup\DiguBackup\Form1.cs:行号 76
 在 System.Windows.Forms.Control.OnClick(EventArgs e)
 在 System.Windows.Forms.Button.OnClick(EventArgs e)
 在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
 在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
 在 System.Windows.Forms.Control.WndProc(Message& m)
 在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
 在 System.Windows.Forms.Button.WndProc(Message& m)
 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
 在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
 在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
 在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
 在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
 在 System.Windows.Forms.Application.Run(Form mainForm)
 在 DiguBackup.Program.Main() 位置 d:\projects\DiguBackup\DiguBackup\Program.cs:行号 18
 在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
 在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
 在 System.Threading.ThreadHelper.ThreadStart()
 InnerException:

google到了此文 “用mysql相当多问题。不是说开源不好,可是拜托,争争气吧” 的第五条,发现情况和这个几乎一样,看作者的语气对开源的东东都不怎么看好,并且说是源代码产生的问题,无法调试。我就郁闷死了。难不成要换种数据库?

这个是mysql官方09年的一个bug讨论贴 http://bugs.mysql.com/bug.php?id=44960 , 我开始怀疑是sql语句有需要转义的字符,于是查看sql语句:

insert into status(created_at,text,picPath,source,in_reply_to_status_id,in_reply_to_user_id,in_reply_to_user_name,in_reply_to_screen_name,favorited) values ('Mon Nov 16 21:02:03 +0800 2009','被杨教授电击的后果完全可以详见《飞越疯人院》(《One Flew Over the Cuckoo's Nest》)','','网站',0,0,'','','false')

这样可能看不清楚,拷贝到navicat和sqlserver management studio里面看看:

Cuckoo后面的单引号没有被转义,所以肯定要报错。

mysql中字符转义的方法是在前面加上反斜杠 \ 字符。

可以将字符里面的 ‘ 替换为 \’ ,直接用c#里面的replace(oldstring,newstring)替换。

我以为是replace(“‘”,”\’”) ,其实是replace(“‘”,@”\’”)。@是用来避免转义,有啥字符输出啥字符的。

 

嘀咕备份

嘀咕备份

嘀咕备份

一.简介

digubackup是c#写的一个嘀咕微博数据备份程序。
可以备份指定id的文本消息为xml文件,可以备份图片,可以将数据导入到mySQL数据库,通过php网页仿嘀咕网站查看数据。

二. 安装使用

1.首先要保证机子上安装有.net框架2.0及其以上版本,vista,win 7自带,xp及其以下需要安装。
2.运行gac.bat。
3.运行DiguBackup.exe。

三.注意

1.”备份为xml文件”选项会备份嘀咕文本消息和图片消息。
2.”备份到mySQL数据库”选项会备份嘀咕文本消息和图片消息,并将数据写入mySQL数据库。
3.如果选择了”备份到mySQL数据库”,可以以本地网站的形式查看备份数据,需要安装好了php mysql之后将web目录拷贝到网站,
修改conn.php里面的mysql_connect(“localhost”, “root”, “x”),
将”localhost”,”root”,”x”修改为你的mysql主机地址,用户名,密码将img目录拷贝到web\img目录。

四.版本

1.0(2010.03.12)    发布
1.1(????.??.??) ??

五.下载

程序 http://techguru.cn/wp-content/uploads/2010/03/digubackup-bin.zip
源码 http://techguru.cn/wp-content/uploads/2010/03/digubackup-src.zip

五.关于

作者 tunpishuang
项目主页 http://techguru.cn/digu-backup

 

日记 2010.3.4

2010年大年过了,新的生活应该开始了。

从去年11月到今年2月初上班打工生活算是告一段落。

2月27号回学校报到,很倒霉,学生证丢了,cet成绩单因不明原因非个人因素丢失,接下来回家过大年的车上把手机k510c丢了。

学生证丢得是最有水平的,zqx同学到我们寝室来找我修电脑,弄好了,出寝室的时候要求本人的学生证。因为寝室6楼比较难跑,所以zqx同学叫我们道长同学将学生证仍到楼下。在仍之前我特意强调要仍外面一点,最好绑个重点的东西。结果话音刚落,学生证就飘荡了下来,好嘛,飘不再了。过后几天发现在2楼的阳台,可惜了,那个时候在放寒假,2楼寝室没人。等开学的时候,证已经不见了,我现在也在默默的祈祷证飘到了寝室里面,而非飘到地上被人当垃圾扫走。

现在大学的cet还是考得如火如荼。09年6月的6级成绩单,全班就只有我一个人没有得到。按照常理是教务处发给班主任,班主任直接发给学生或者叫xx委员代劳。事情已经过去了半年,没有人再追查这个事情了,最近听说要用cet成绩单来办理证书,才开始着急起来,毕竟那玩意儿也是招聘的一个筹码。打电话给班主任,班上有“委员”官衔的都问了,互相推脱,不过有个女生还是挺上心的,pj同学,谢谢你! 问了我们学院的教务处,没有相关记录,然后那个老师给我说:重考。(囧。。。。)首先我们不要说有没有激情重考,关键是我还有这么好的运气吗?你以为每个人都可以中500万?shit!还有个办法,叫我到新校区的教务中心去开证明。在这里我强烈bs我们班主任,恶心至极,重来没有把学生的事情放在心上,自己的任务完成就万事大吉。当我把成绩证明交给她的时候,她对我说:你拿证明给我干什么?天啊!不是你丫的叫我去办这个证明的吗?更雷人的是,我们需要交什么材料,交了后下发什么证明、证书啊什么的,她一无所知。

那天正好是农历15号,回家准备吃点好吃的,本来打算坐jf的顺风车,最后还是坐公交,可谁知那天公交相当的拥挤,可谁知一拥挤我的手机就在衣服的口袋的不见了。吓得我浑身发冷汗。在地上找了N久没有发现。当时吓傻了,没有记录公交车的车牌号,兴许可以调到录像找到那个zui娃子。虽然那个手机07年买成1k出头,用了三年。但毕竟有很深的感情了,而且上面有私人信心,怕被居心不良的zui娃子所利用。下车后打电话给丢了的手机,已经关机了。回家继续打电话,可以打通,但是没有人接。

丢了2个手机了,自己确实很不小心。没有用到1年的N72和这个总价值2k多。虽然自己用手机算是完的了,但是还是用了很多个了。初中的时候没有手机,大老板的同学买了一个彩屏的moto机,大家都当稀奇看。貌似我第一次用手机是高中的时候,老爸到波导(bird)鸟手机,后来不知道是进水了还是丢了,然后用mum的tcl那个红色的翻盖机,同样是黑白屏的,然后是wss的三星翻盖的,终于彩屏了,还有两个很卡的游戏,支持amr铃声,牛x的64和铉,然后是jf的NEC 830,这个手机陪我度过了最最寂寞的高三生活,那个手机拿在手里就是一种霸气,那个时候不喜欢上课,同时移动推出了20RMB不限制上网流量的套餐,所以上网很多,上课的时候就看网页,当然免不了一些h网页。那个时候同学们下手机游戏都借用我的卡,那个时候姑且可以称我为“手机达人”吧。然后买了MOTO L7,那速度完全就是一种折磨,在网上花了300大洋买了黑莓7230的翻新机,上网没有破解,就寂寞的300元丢给了别人,后来买了N72,没用到一年就丢了,后来捡到一个V3,外观确实不错,可惜速度还是很慢,经常黑屏,待机时间完全不行,后来用mum的k510c到现在,被zui娃子摸了,今天用sn的糯鸡鸭8600 luna。唉,手机使用史报告完毕。

bird->tcl->samsung->nec 830->moto l7->bb 7230->n72->v3->k510c->8600 luna..

今天在家里在网上google搜索了N就手机丢失失而复得的方法,最后发现了一个“蠢招”,也许确实很蠢,但免不了遇上笨贼。方法是:我装成是手机亲戚给他发送短信说要汇款给他,把zui娃子的银行卡和姓名搞到,也许能够得到一些线索,今天弄了一下午,zui娃子已经把银行卡号和姓名给了我。凑巧,哥是民警,叫他帮我查了,现在暂无回音,我很期待。

说来真是讽刺,前些日子看了电影《小武》对小偷还有一些怜悯之情,觉得都是混口饭吃,大家都不容易。那个时候我是没有设身处地的为受害者想一想,现在自己亲身做了一个受害者,才发现小偷不值得怜悯。做犀利哥也不做小偷,这是道德底线。

zqx同学打算赔偿我丢证的损失(其实是我主动要求赔偿的,现在觉得没这个必要,这个事情大家都有错,主要是我太屈服于生活大妈的管教了,我要是野蛮一点、无理取闹一点就莫有这档子事儿发生了),下午和zqx同学聊了一下午,关于工作、人生观、电影、社会、政治…..每次和人聊了很久,都发现是我的观点强奸了他们的理智的思维,把我最偏执的一面种植在他们的脑海,这不是聊天,是说教。

今天一下午的事情更新了sehe页面,荒废了将近1年的自考,明天开始复习《xxxx选读》好吗?好!

闲暇时间在写嘀咕备份程序,估计一个星期内可以搞定吧。

让我叹息了半年的饭否资料终于回来了,wangxin还是履行了他的承诺,只是这个等待太漫长。

有时候发现自己做事情太讲求条理性了,没有更新sehe页面,心里总是觉得考试复习就不能开始。就像A是B的前提,A没完成,B肯定不能完成。这是不是有问题呢?

 

兽兽之后成都工行女郑璇也来了

一个门接着一个门啊,看都看不过来。ML是他们的权利,围观是我们的福利。请ctrl+A[via]

 

《2030肢解中国—美国的全球战略与中国的危机》戴旭上校在母校演讲的视频完整版下载

下载地址:

ed2k://|file|2030%E8%82%A2%E8%A7%A3%E4%B8%AD%E5%9B%BD-%E7%BE%8E%E5%9B%BD%E5%85%A8%E7%90%83%E6%88%98%E7%95%A5%E4%B8%8E%E4%B8%AD%E5%9B%BD%E5%8D%B1%E6%9C%BA%EF%BC%88%E6%88%B4%E6%97%AD%EF%BC%89-%E4%BC%98%E9%85%B7.flv|268138528|463B900026426595A967C435F18DB252|h=B6TKAUYKDXMKTI5LKMYG5SWNKNXXGNJS|/

用电骡或迅雷下载。

youtube在线观看:http://docs.google.com/View?id=dhh5gtxb_458fhvj5zc5 【翻墙的需要】。[update 2010.2.22]

 

国内用户观看&下载youtube视频方法

way 1 :

http://hloli.appspot.com/gfwtube

【在学校用不起自*由*门,找到上这个东东,是一个google应用,直连youtube,无代理,推特,脸书还没找到方法】

说明:此网站有流量及人数限制,每天最高80000访问量,前几天就出现过超过限制的情况(google 会提示 over quota),不过过几个小时就恢复正常了,大家遇到这种情况要有耐心。

way 2 :

还有一个方法,前提是你使用的是Firefox浏览器,安装greasemonkey后,安装TubeWall-2脚本。这个就不能搜索视频了,只能碰到youtube.com具体视频的时候触发脚本。

 

google街景潜水

老外真的是趣味,在大街上潜水,被google街景取景车给抓拍,也可能是为了出名吧。
[Via Reddit.]

 

‘JavaScript component does not have a method named: “onLocationChange”‘ when calling method: [nsIWebProgressListener::onLocationChange]“

在项目中使用jsTree,在firefox的js控制台输出以下错误:

[Exception... "'JavaScript component does not have a method named:
"onLocationChange"' when calling method:
[nsIWebProgressListener::onLocationChange]"  nsresult: "0x80570030
(NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)"  location: "JS frame ::
file:///C:/Program%20Files/Mozilla%20Firefox/components/nsSessionStore.js
:: sss_observe :: line 320"  data: no]
file:///C:/Program%20Files/Mozilla%20Firefox/components/nsSessionStore.js
Line 320

[Exception... "'JavaScript component does not have a method named:
"onLocationChange"' when calling method:
[nsIWebProgressListener::onLocationChange]"  nsresult: "0x80570030
(NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED)"  location: "<unknown>"
data: no]

参考此文 此文 此文 还有此文得知是firebug和flashgot扩展到冲突造成的,把flashgot禁用或者卸载掉就可以了。