msgbartop
用铅笔写日记,记录那最原始的美丽
msgbarbottom

月光博客请注意你的措词

最近谷歌事件闹得很是热闹,几乎大街小巷、犄角旮旯都在讨论这个事件.

就连一些向来不关心互联网,埋心于网游的某朋友都向我谈及了此事.

也难怪谷歌昨天的访问量井喷式的增长.呵呵

今天闲来无事,逛逛一些知名博客。如下面提到的月光博客-http://www.williamlong.info

基本或多或少都在说这件事.

期间浏览了月光博客发表于2010年3月23日,题为"Google搜索服务退出中国"的博文.

其中所用到的一些句子,我认为用的很不恰当,也是对自己知名博客的地位和影响力的一种不负责任.

在遭到网友留言抗议后,也没有作出及时和应有的反应.

下面是引用自月光博客该博文的部分(由于互联网的快捷、灵活性等特征,不保证同原文内容永远一致):

在以上声明发布之后,我这里检测,直接访问 www.google.cn 已经会自动跳转到了 www.google.com.hk ,首页提示:“欢迎您来到谷歌搜索在中国的新家”。这表明Google已经真的要放弃了google.cn了,谷歌中文搜索服务终于撤出中国,除此之外,谷歌音乐、谷歌热榜、igoogle等google.cn的服务还依旧能在中国访问。

请注意黑体,加粗的部分。我想每一个中国人都应该读得很别扭.(友情提示:替换成'大陆'可能是个好主意)

因为如果你和我一样是80后的话,应该亲历过1997、1999年.

香港、澳门也是中国的一部分,这一点谷歌也很清楚,所以它说的是“欢迎您来到谷歌搜索在中国的新家”.

至于谷歌与国家当局孰对孰错,这个不在本文讨论范围内。

而且我想这个也不能成为左右国家领土划分这一常识的因素,你说是吧

ps:本文的英文译版同时存在,点浏览.

关于winform项目的一些经验之谈

前一段时间做了一个小型的桌面应用程序,语言是c#.

其实也谈不上是c/s,因为没有用到像mssql、mysql这类的庞大的数据库.

考虑到要娇小玲珑,使用了sqlite,大大增强了运行效率.

做完后,唯一的感觉就是又学到了不少东西,只有动手去做,才能发现自己的不足.

下面就是我总结的一些新知识:(当然,都是谷歌来的)

首先来说sqlite,它的定位是超轻量级的开源数据库,而且它不需要server端.
故而被一些软件用来做配置文件的存放,如腾讯的聊天记录.

sqlite 本身不支持.net,不过有第三方的移植版,如 ADO.NET 2.0 Provider for SQLite、C#-SQLite等,我使用的前者,因为它提供了最标准的接口--System.Data.SQLite,符合C#的习惯.
而且听说nhibernate 用的也是它.
这是它的官网: http://sqlite.phxsoftware.com/.

它最大的好处可以与visual studio 完美结合,提供了Sqlite dateadapter 等组件,如图
sqlite 组件

这样可以实现可视化的面向数据库的操作。随便拖一拖控件,设置、勾选一些参数就可以了。真正的无编码编程呀!!
如图:
sqlite dataset

建议可以看看官网的视频教程:http://sqlite.phxsoftware.com/sqlite.wmv

不要像我一开始一样,不知道有这个。一边在网上找实例代码,一边看api.真是吃力不讨好.

还有要说的就是:都说sqlite 不支持外键,我试了下,可以设置。不过外键约束貌似不起作用 囧rz

再者,如果用sqlite administrator 打开数据库文件后,有可能会导致程序不能打开数据库,可以用sqlite administrator 把文件转成Version 3的,扩展名为*.s3db.而且sqlite administrator插入中文会乱码,这是个问题.

说完sqlite,再谈c#读取INI文件。
因为有些设置是要放到sqlite外保存的,比如sqlite db 的路径,本来是要用xml的.
突发奇想要用ini文件.找到了解决方案:

//调用win32系统kernel
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

//写入方法
//parameter 下同
//Section 区域名
//Key 键名
//Value 值名
//inipath ini文件路径

public void IniWriteValue(string Section, string Key, string Value,string inipath)
{
WritePrivateProfileString(Section, Key, Value, inipath);
}

//读取方法
public string IniReadValue(string Section, string Key,string inipath)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(Section, Key, "", temp, 500, inipath);
return temp.ToString();
}

还有个问题就是即时刷新数据的问题.

比如说你在一个新窗口添加完数据,关闭后回到父窗口,理应要刷新一下的.
解决方案有很多种,有人是用到了全局变量,静态方法。

不过我看到了一种更好的,比较推崇的方法,就是利用模式窗口,因为模式窗口被调用完,总是会返回一个DialogResult的.
我们恰巧可以用来做判断.

//主窗体代码
form.ShowDialog();
if (form.DialogResult == DialogResult.OK)
{
//刷新操作
}
//子窗体代码
//在FormClosed事件触发时
this.DialogResult = DialogResult.OK;

同样的方法还可以用在登录窗体和主窗体之间.

最后一个问题就是,昨天有人问我的一个问题,是关于键盘按键的事件.

比如你在填好用户名和密码后,按回车键就会自动提交,免去了点击提交按钮.
其实就是一个窗体的KeyDown事件.
关键代码如下:

if(e.KeyCode==Keys.Enter)
{
loginbtn.PerformClick();
}

组合键也是这样,如ctrl+enter。只是多加了些条件而已 :)

项目完成后的部署,也碰到了一个问题.
就是我打成的安装包在用户机器安装时候,报什么缺少sqlite.dll 程序集,要我通过gacutil.exe工具添加到全局程序集GAC.
我日啊,用户机器哪来的vs??干脆把debug下面的东西拿过来用了

最后,bs一下微软的维修死丢丢,调试时候经常崩溃,重新打开后,丢失很多了代码.

三月飘雪,难道2012是真的?

真的是很奇怪,春节过了这么久,居然还能下雪!史无前例,史无前例呀!

说2012是真的,什么世界末日到了,玛雅人等等一类废话,都是虚的。

试问,有几个人会信?反正我是不信.

最近这些个气候反常的现象,说到底是人类自己种下的恶果。

温室气体的排放、森林面积的减少都是直接原因。

不要砖家,这些最科普的知识,在小学三年级的自然课本都应该会找到。

可笑的是,前段时间在哥本哈根召开的气候会议,扯来扯去居然也没能达成共识。还煞有其事的要留到明年墨西哥会议上再去讨论,无语,囧rz ..殊不知你们能等,地球已不能等了

这个世界到底是应该又快又好的发展,还是又好又快的发展?

估计这是个世界性的课题..难道哪天我们也要到了 have a dream 的地步了?

环保不是史无前例,而是刻不容缓.

最后送上周杰伦《叶惠美》专辑中《梯田》的节选.

自私的人类狼不狼狈,破坏自然的生态会不会很累
你说为了艺术,要砍下一棵树,酱,对还是不对
你说为了装饰,请问干我啥事,是不是只能用相机纪录自然,拿给下一代下一代回味
可怜可悲,森林绿地都已成纪录片,闻不到绿意盎然,只享受到乌烟瘴气
我不能教育你们,我不是你们老师,我不是校长
也不能给你们一巴掌...掌...长...长...长篇大论
你们并不想听,我知道,但我没办法,我就是要写
你们可能永远不能体会,显微镜底下的我们会更现实,更自私.这种艺术真的很难领悟

关于“某些设置由您的系统管理员管理”

我现在用的是windows 7系统,是去年发布的时候下载刻盘安装的,其实是RTM版,不过和正式版一样.

到现在都没有重装过系统,很稳定 :)

以前我都是关闭自动更新(Windows Update)的,因为我感觉那些东西我根本用不到。而且动不动跳出来很烦人.

当时就进入到组策略里面,把与自动更新的选项 该配置的配置,该禁用的禁用。

这样一来,那个图标彻底的消失在我的系统里。

可是,最近由于微软连续的发布了几个高级别的安全补丁,我便有意重新启用自动更新。

于是,运行"gpedit.msc",依次展开到:计算机配置-管理模板-Windows组件-Windows Update 下,把以前的设置都恢复成默认了.

不过,当我打开控制面板\系统和安全\Windows Update 时,居然显示“某些设置由您的系统管理员管理”,无法自动检查更新。

如图:check lock

但我点击"检查更新"时候,弹出了无法检查的错误.如图:
check fail

真的是很奇怪,我就是用的系统内置管理员身份呀!于是以“某些设置由您的系统管理员管理”关键词搜索了一下,嘿嘿,发现遇到这个问题人还不少呢!!

不过,点看了很多的链接,很让我失望。真是tmd说什么的有。
有的说什么重新注册下两个脚本dll,有说系统里还有个administrator用户的,还有的帖子更是无人问津...

稍微有点的靠谱的是微软旗下的Windows Client 论坛里的说法,说什么启用“删除使用所有Windows Update功能的访问权限”选项.位于 用户配置-管理模板-Windows组件-Windows Update 下.

不过很遗憾,依然没能解决我的问题.囧rz

我真的挺无语的,这么简单的问题,居然没能搜到一个解决方案..这些所谓的大站,比如远景论坛、百度知道、CSDN、搜狗问问到底是干什么吃得?难道里面充斥的都是一些悬而未决的问题?

这么搜下去,估计翻几百页也未必有什么结果了,于是我打开组策略,一个个选项的看下去.
终于让我找到了问题的所在.
就是它,如图:
删除到Windows Update的链接和访问

删除到“Windows Update”的链接和访问 选项,位于 用户配置-管理模板-Windows组件-"开始"菜单和任务栏 下.

把它禁用掉就ok了,也不知道我什么时候启用它的.. 囧rz

现在退出组策略,点击开始菜单里的 Windows Update,果然可以了.看图:
正常检查

ps:希望本篇文章可以帮助那些还在为此问题迷茫的人们。

最后,衷心希望那些活跃在各大论坛高手们,回答别人的问题,不要只是一味的复制和粘贴,多点原创.
我就不信你们如此的心有灵犀,说出的话和思路如出一辙。

新浪云计算(SAE)邀请码发放开始了!(已更新)

闲来无事,刚刚在google code上翻来翻去,无意中来到了sae的lazycloud项目,看到了N久前很多人索要邀请码的留言。
一不小心点开了sae的主页,看到页面改版了,心想莫非是开放注册了!?
心里又惊又喜,忙点开“注册”按钮,不过很遗憾。邀请码一栏依然是必填项。心凉了....

又抱着试试看的心态(囧rz)进入了sae的开发博客看看,鸡冻呀,居然在发放邀请码.于是火速提交了一个请求。
你们还等什么呢?还不快上!!!时间有限哦(本周一至周五,限额500名).

如果你还不知道Sina App Engine是什么,那我只能对你说,是和Google App Engine差不多的云计算平台。
不过SAE只支持php环境,而GAE支持java和python.

其实要我说GAE要比SAE好点,不过由于伟大的GFW, 导致部署的项目基本不能访问,而成为了废品.虽然说可以绑定自定义域名,不过...好了不扯了,再扯又要扯到ghs上面去了.

总之,如果你对这个感兴趣,赶紧去注册个吧。


话说sina的工作人员办事效率真高,这么快就通过我的申请。不一会儿就收到了邮件通知(邀请码 inside),哈哈

看图:

[caption id="" align="alignnone" width="489" caption="邀请邮件"]邀请邮件[/caption]

注册时候需要手机验证(才发现手机已欠费停机,难怪今天一天都没响一下 囧rz),不过手机没钱貌似也收到了短信...

[caption id="" align="alignnone" width="267" caption="登录后台"]登录后台[/caption]

迅速的用easychen的wp4sae 搭建一个blog尝尝鲜,上传项目速度很快(在国内可能就是不一样).

地址: http://xiazhengxin.sinaapp.com/ 测试了下,蛮不错的.

相关链接:
SAE第二批邀请码申请和发放开始


申请页面的地址(限时有效)

API下载 ,在线API Doc


SDK下载:For Win ,For Linux