给闲置的内存找点活干
一般情况下, 系统的2G内存是用不了的, 大多数时间是在800M以内, 再加上我已经弃暗投明的换XP系统了, 所以内存是很宽裕的.
但硬盘实在是性能瓶颈, 5400转的硬盘极慢, 而且还声音大, 不稳定, 用HDTunes测试的那条曲线就跟过山车一样忽上忽下, 于是还是找个把内存虚拟成硬盘的软件用用吧
查了一下, 大家都比较喜欢RamDisk, 真是小巧好用又实惠, 于是划了512M内存给这个虚拟硬盘, 然后把IE临时文件夹, 系统临时目录都指到了这个新分区下, 性能有没有提升不知道, 反正任务管理器里的内存占用是显著上去了, 心里总算平衡些, 否则2G内存用不到1G那是何等的铺张浪费, 这种可耻的行为简直可以和公费吃喝相媲美了
大块头未必有大智慧, 有些非常好用的软件不但尺寸小, 而且界面也简单, 减肥除了爱美的女士, 也应该是我们软件开发者们的向往
下了好几天的雪了, 这是上海少有的, 终于地上有了可以看得见的白, 好好清洁一下这个肮脏的世界吧!
可惜在南方, 再怎么下也出现不了大雪封门的壮观, 更别提封山了, 全球气候到底是在变暖还是变冷? 想下就由着它下吧, 幸好今年过年就窝着, 哪也不去, 自然不操心出行的问题, 但总有那么多的人要回家过年, 短短的几天假还因为买不到票, 或是因为买到票却无法成行而添堵, 这样看来, 春节倒不是个喜庆的时段, 反而是麻烦跟着麻烦, 痛苦叠着痛苦了.
机场要封掉, 火车不卖票, 高速是别想上了, 就是公路上也得堵着, 也不知道我的个人飞行器会不会因这种天气而受影响, 既然这个还还遥远, 反倒不如大家都骑马回家好了, 科技越发达就越产生依赖性, 万一全上海断电一周, 不知有多少家公司要倒闭了, 不是什么东西都能异地冗余备份的. 不可复制的唯一, 是好事还是坏事?
瑞雪兆丰年, 丰年好大雪, 让我们一起憧憬那珍珠如土金如铁的糜烂生活吧!
最近消息闭塞, 电视也少看, 刚看了些贴子, 想不到这场大雪在很多地方已是极严重的自然灾害, 还丰年, 又是一个灾年
这两天气温终于到零度了, 水可以从液态变成固态了, 所以这真是一个变态的天气
长冻疮一直以来都是我勤奋的象征, 第一次是在高二时, 那也是最严重的一次, 手肿得跟个馒头似的, 到了晚上睡觉时, 受了热气就开始痒, 痒得睡不着觉, 手上长冻疮的地方一不小心磕一下, 就痛得钻心, 而且由于肿起来导致后来好了后皮肤皱巴巴, 从此肤如凝脂这个词就永远地告别了我. 当时连手握笔写字都觉得困难, 整个手掌已经不能握紧了, 所以我现在看到馒头手, 心里还是会一阵阵地悸动, 直抽抽
到了大学, 还是生了4年的冻疮, 只不过每次都不怎么严重, 几乎都可以忽略不计, 工作第一年, 有使不完的干劲, 再加上极其恶劣的生存环境, 冻疮又严重起来, 以致于我必须到药店去买药了, 结果硬是让药店人员听成买治痔疮的药了, 我说当时怎么对方的眼神带着一丝的迷离外加几许的暧昧......
工作激情是一年不如一年, 懒惰与日俱增, 连冻疮也不来光顾了, 眼看着就要日暮西山, 人到老年, 突然间, 久违的冻疮又回来了! 之前还浑然不觉, 猛然间看到, 手上居然红了一小块, 有点硬, 噢, 长冻疮了, 现在已经发展到两块了, 最主要的是手掌边沿, 长期和鼠标垫(其实就是报纸)接触的地方, 默默无闻了太久的它终于以一种别样的方式来吸引我的注意了
幸好, 冬天快要过去了, 农历新年也快来了, 这些冻疮终会成为旧疮
对于构造sql出来的查询结果集, 如何对象化访问?
如果只是绑定到列表控件, 那么出来的datatable已经足够了, 但有时候一些查询的结果集, 是用来做中间计算的, 这样带来的问题就是必须以columnindex或columnname去访问datarow取得数据, 而且还有DBNull的问题存在, 当然另外还有部分数据库不支持Guid列, 返回结果只是varchar这种情况, 凡此种种, 导致了对结果集的访问非常麻烦.
但是匿名类型(anonymous type)横空出世后, 这个问题但可以得到一定的改观了, 虽然仍然没有DLinQ那么帅的形式, 但好歹可以对象化访问结果集了:
q.Select(a.OrderID, a.OrderDate, b.OrderDate.As("date"), a.OrderNo)
.From(a).As("a")
.InnerJoin(b).As("b")
.On(a.OrderNo == b.OrderNo);
sql = q.Sql;
ds = s.Query(q);
var orderentry = new
{
Orderid = QueryFactor.GuidField,
OrderDate = QueryFactor.DateField,
Date = QueryFactor.DateField,
OrderNo = QueryFactor.StringField
};
var list2 = QueryFactor.ToList(ds.Tables[0], orderentry);
foreach (var e in list2)
{
Console.WriteLine("{0}, {1}, {2}, {3}", e.Orderid, e.OrderDate, e.Date, e.OrderNo);
}
using用用还是蛮好的
因为考虑到数据库要支持sqlite, 而且数据访问层本身就是不允许并发的, 原因在于DataReader的连接不可断性, 所以我有一个全局的类去得到Session, 一旦得到, 马上自动开启事务, 而这个方法是通过lock来锁定防止并发, 如果session仍然在事务中, 则等待到事务完成才可以访问
得到session可以直接把事务开启, 但事务还得显式关闭, 每个地方都来一次关闭事务也挺烦的, 于是干脆加了一个DBContext类, 实现IDispose接口, 在释放时去关闭事务, 现在用起来感觉就很拉风了:
using (var context = new DBContext())
{
return context.Session.GetList(Domain.Category.Type == (int)type);
}
因为要加一个using在外面, 这样也就让自己不得不去尽量写短小点的函数, 否则括起来就很难看了
凑也要把数据凑出来 -- 数据库损坏恢复
客户的数据库又损坏了
操作系统损坏, 重装后数据库文件无法附加, 报803错误, I/O error. 对着两个二进制的文件当然没辙, 除非专业修复Sql Server的公司可以直接分析文件结构搞定它, 首先就是先复制这两个文件到别的地方备份先, 万一呆会的修复工作弄错了, 想要原来的数据都没办法了.
接下来先让Sql Server能够把它装载起来再说吧. 只好使用瞒天过海的杀手锏了, 建一个新的相同名称, 相同物理文件的数据库, 然后停掉SQL服务, 用损坏的数据库文件覆盖上去, 重启服务, SQL SERVER挣扎了半天, 终于还是认为这个数据库是错误的, 在管理器里显示不出此数据库, 于是只能再来:UPDATE sysdatabases SET status = status ^ 32768 WHERE name = ...
数据库可以出来了, 当然是紧急置疑模式, 用DBCC(之前可能要设置为单用户)检查, 发现有4处不一致错误, 索引上的就不用管了, 大不了重装索引, 关键是找到哪些表损坏了, 然后才能知道如何去凑这些数据, 通过循环一遍, 用select全部数据测试, 发现有一个单据表数据损坏, 无法全部select, 那么我现在要的就是它同步之后增加的数据, 用创建日期倒排序找后几条, 幸好这些数据不在坏的页面, 可以取出, 先不管, 用select into扔到pubs数据库里先存着. 其它未损坏的数据我要挪过去的话, 继续用刚才的循环执行数据来一遍select, 不过这次要into到新数据库去了, 尽管表的索引主键这些都不会在新数据库是创建, 但数据先过去再说, 然后sqldelta出山, 同步数据库结构, 这样sqldelta也不会发生使用临时表同步数据的方式, 保证了我的rowguid列里的值不被修改
到此为止, rowguid列的属性仍然没有修改过来, sqldelta无法处理这种情况, 损坏数据的表仍然未在新库中创建. 先修改rowguid属性吧, 照样来个大循环, 使用alter table alter column add rowguid就行了, 再从数据中心把这个分公司的单据表全部select into过来, 再从刚才的pubs临时表中它未同步的数据也select into where id not in ()过来, 然后用把这个表结构用刚才的方法搞定, 重建数据同步, 然后用我原来的修改数据但不影响数据的SQL以便让它再次收集所有行为数据更新, 再次向数据中心同步一次.
夜深人静时 正是杀人放火天
惊奇地发现, 这一个小时过来的搜索都是百度的, 难道熬夜的人喜欢用百度?
晚上干活其实是挺浪费电的一件事, 大清早的阳光播洒下来, 白白地浪费在窗帘紧闭的窗外, 年纪大了, 不敢看朝阳, 不忍看夕阳, 记得最清楚的是2000年元旦的早上, 骑着自行车去公司, 抬头间猛地看到一轮红日, 才恍然察觉新世纪的阳光真的很美好, 从记事起我们就被称为跨世纪的接班人, 许多时光耗去后, 才发现上个世纪已经太遥远, 我不知道接了谁的班, 但现在的我却马上要被别人接班了, 不由得痛恨, 最好的时光竟是如此地短暂.
一个善良的人即使是伪善, 心里的阴暗也总得找地方发泄才行, 阳光下的罪恶不敢为, 所以只能在夜里憧憬一下, 不是失眠, 只是生物钟有了调整, 一年下来, 我能看日出的天数很可能不会超过7天, 太阳落了又升, 游戏over了再来, 无邪的少年在日升日落中就这样成了老年, 墙根下, 大棉袄, 晒日头, 膝前孙儿怀绕, 想想, 已经不太久远了
我们需要有吐口水的地方
近来一段时间比较喜欢上的站点是cnbeta, 虽然界面仍然没有多少可取的地方, 但很显然它不是digg, 却比digg更能吸引人气, 最主要的一点是大家投递的文章是大家感兴趣的, 然后大家可以对感兴趣的狂喷口水, 外表文静的我们其实都有旺盛的吐口水的冲动, 把最新最热的消息放在最显眼的地方让大家吐口水, 是聚集人气的很好的一个方法
评论很多时候会左右我们的观点, 三人成虎, 让看客有话语权, 成为用户, 让用户有被关注的机会, 就可以培养主人翁意识, 很多东西不是评过了就不用了, 所以 cnbeta 精彩网友评论还是非常可取的, 不仅仅文章的主体是内容, 精彩的评论同样是内容提供者, 把用户关注的东西给用户, 让用户感觉自己被关注, 如此足矣
有时候你看到一篇观点和你相左的文章, 但下面竟然没有发表评论的地方, 这对于想骂上几句或是想看上别人骂上许多句的无聊的我们来说, 是一件很痛苦的事情, 有争论才有人气, 大家都文质彬彬的礼尚往来的话, 站点怎么也火不起来, 负面的东西才是推动人气的主要力量, 正如很多明星, 被骂得越凶, 也就越火
近来装系统无数遍了,先是因为找一个组件的破解,在NOD32的保护下,我成功地中毒了,而且是RootKit级别的,用了无数方法,没删除成功,因为它可以成功进入windows, 而进不了安全模式了。结果找了原来的true image镜像做恢复,开始怎么恢复都说找不到硬盘,后来才查到原来要用home 11才可以认出sata硬盘
镜像恢复后还没用一天,决定转移到新笔记本上去,于是这台才装好的windows xp系统又被还原了。对我们来说,装系统并不是一件多耗时的事情,最多半小时搞定,但是接下的windows update, drivers, office update, 软件开发环境这些才是最要命的,vs2008装起来就是1个多2小时的事,vs6, sql server, office, outlook的邮件还原,杂七杂八的工具软件,第三方组件,全部要弄好一般都是得一天的时间才行
接下来是装新机,第一遍装vista,结果由于没有装intel主板驱动,导致迅盘和intel matrix storage driver死活装不成功,而这次系统分区没有弄好,D盘也是主分区,没有成为扩展分区,后来一咬牙,干脆格掉重新分区重新再装vista, 这次各种驱动装得都是相当顺利,很成功地用了2天,实在是撑不住了,太难用了,因为频繁地和文件,文件夹打交道,结果vista里的各种特性让人无法忍受,复制一个文件,居然马上给我自动排序了,找半天才找出来,要知道有的文件里我有将近上千个文件,文件才一改名,我都没刷新,马上不见了,又得找个半天。打开文件对话框,默认视图根本无法接受,得一个个地调整为list视图,默认出来的布局,文件名的列宽都不够,我得一个个调整,在aero特效下,文件夹图标前面的小三角符,也太难分辨了。任务栏当前激活的窗口跟未激活的一样漆黑一片,区别不过是张飞和李逵之间,还给老奶奶用的操作系统,老奶奶就是架上老花眼镜也搞不清楚
另外,各种系统的设置都是莫名其妙,权限也让人上火,也不告诉我说写不了注册表,装完软件后还以为装上了,结果一堆的问题,又得run as administrator, 在我不用Administrator登录的情况下根本没办法把vb工程文件双击打开,难道非得找到vb.exe,再run as...,累死
效率优先的,况且vista的界面我也不觉得好看,还是装完xp,于是又花了大半天的时间全新安装xp,看到熟悉的windows经典界面,这叫一个亲切啊,没有经历vista的痛苦,就不能体会xp的流畅,也许对于普通用户而言,超炫的界面是值得的,虽然内存占用超大,硬盘访问超多,但窗体看上去够漂亮就行,但我没办法用,文件夹长得太像,各种文件类型的默认图标又大多是一穷二白的样子,分不清谁是谁,按个F2来重命名吧,vista又"好心"的给你只选中文件名而不包括扩展名,但我大多数情况下改的就是扩展名,或者是文件名删除部分或在中间插入部分字符,它这一全选文件名,害得我又晕了
2000出来怀念98的界面刚才,后来久了,发觉98是这样的丑,xp出来,还是喜欢2000的风格,这么多年过去,xp依然不用theme,但以前的几次变更起码只是感观上的,不是使用习惯上的变化,现在vista出来了,变得让我无从操作,大部分时间是在找文件夹和文件

