2013年11月20日星期三

从文本文件中的表读取到二维数组与DataTable并在listbox中展示其中的一列



自己做的一个winform小工具中,有一个listbox,我想在每次程序启动时从本地一个文件中读出数据,将其中的一列展示在listbox中,而且数据要保存在内存中,供之后的功能调用。查论坛说filestream方式读取文件比较好,而且可以每次只读一行,对于很大的文件也可以轻松应付,虽然我的文件不可能那么大,但是为了练习也采用了这种办法。filestream中的ReadLine()方法也可以得出文件的行数,以下是源代码:
[csharp] view plaincopy
  1. StreamReader streamreader = new StreamReader(FileOperation.folderfile);  
  2. string line;  
  3. while ((line = streamreader.ReadLine()) != null)  
  4. {  
  5.     string[] readrow = line.Split(new char[] { '\t' });  
  6.     int m = 1;  
  7.     int n = readrow.Length;  
  8.     string[,] fields = new string[m, n];  
  9.     for (int i = 0; i < n; i++)  
  10.         fields[i / n, i % n] = readrow[i];  
  11.     listBox_folders.Items.Add(fields[m-1, 0]);  
  12.     m++;  
  13. }  
具体的办法是通过循环将文件的每行都读出存入一个一维数组,再用一个for循环将这个一维数组的数据存入一个二维数组的一行,二维数组的列数由一维数组的长度取得,行数则随着ReadLine()的循环自增,最后listbox展示的是这个二维数组的第1列。

补:
随后的操作过程中,需要多次对该数组进行增删改操作,发现数组的操作很麻烦,于是只好重新来过,将数组改为DataTable类型,DataTable获取行数列数,索引,增删改操作都相当便利,而且我也熟悉,代码如下:
[csharp] view plaincopy
  1. StreamReader streamreader = new StreamReader(FileOperation.folderfile);  
  2. string line;  
  3. DataTable dt_folders = new DataTable();  
  4. DataColumn name = new DataColumn("Name", Type.GetType("System.String"));  
  5. DataColumn folder = new DataColumn("Folder", Type.GetType("System.String"));  
  6. DataColumn username = new DataColumn("UserName", Type.GetType("System.String"));  
  7. DataColumn password = new DataColumn("Password", Type.GetType("System.String"));  
  8. DataColumn protocol = new DataColumn("Protocol", Type.GetType("System.String"));  
  9. DataColumn port = new DataColumn("Port", Type.GetType("System.String"));  
  10. dt_folders.Columns.Add(name);  
  11. dt_folders.Columns.Add(folder);  
  12. dt_folders.Columns.Add(username);  
  13. dt_folders.Columns.Add(password);  
  14. dt_folders.Columns.Add(protocol);  
  15. dt_folders.Columns.Add(port);  
  16. DataRow row;  
  17. while ((line = streamreader.ReadLine()) != null)  
  18. {  
  19.     row = dt_folders.NewRow();  
  20.     string[] readrow = line.Split(new char[] { '\t' });  
  21.     row["Name"] = readrow[0].ToString();  
  22.     row["Folder"] = readrow[1].ToString();  
  23.     row["UserName"] = readrow[2].ToString();  
  24.     row["Password"] = readrow[3].ToString();  
  25.     row["Protocol"] = readrow[4].ToString();  
  26.     row["Port"] = readrow[5].ToString();  
  27.     dt_folders.Rows.Add(row);  
  28.     listBox_folders.Items.Add(row["Name"]);  
  29. }  
  30. datatable_folders = dt_folders.Copy();  
最后是复制给一个全局变量供全局使用。

2013年11月19日星期二

王八蛋态度

可能大家在生活中都遇到过这种情况,早高峰时间,本来就不通畅的马路比以往更加拥挤,大家狂按喇叭拼命加塞,好不容易挪到队伍前面,发现是有个施工中的车挡住了一根车道,而车上的所谓施工人员根本就没施工,而是笑眯眯悠然的欣赏着车流;还有,一条刚刚修好的路,今天挖条沟说是埋管线,明天挖条沟说埋下水道,后天挖条沟说是埋钢筋加固,好不容易该埋的都埋好了,几经折腾的路面也变得不平整,有关单位说那么我们开始修路吧,当然不能大修,那费钱,而且几年之内都不能再做文章,只能小修,先堵住半边路面挖掉表层,然后一个月不见人影,一个月后继续修,历时几个月总算修好了,用不了多久又要开始下一次折腾了。
这种不干人事的态度我自己称之为王八蛋态度,这种态度的人如果法律不管我真想把他们拉出去枪毙500回。我亲眼见过最高效的铺路团队是我家那边的罪犯铺人行路地砖团队和薄熙来在大连时的铺马路团队。罪犯团队因为一天之内要铺好比较长的一条路,没人每次拿四块地砖,基本上十几秒铺好,而且铺好之后非常平整,效率之高令专业人士汗颜;以前大连的铺路团队更是将机械化配合发挥到了极致,从拦路到铺好只用几个小时,通常拦路之后一个车队开始作业,第一辆是铲地皮车,后面跟着辆大卡车,铲起来的地皮直接通过传送带送入卡车翻斗,后面跟着洒柏油的车,洒的绝对细致平整,最后跟着压路机,一趟下来就铺好了一根车道,来回几趟一条路就全部铺好了,区区几个小时的时间,去年过年去了一趟大连,路面不平破旧,人行路地砖也很久没有换过了,就算人走茶凉但是希望这种作业方法不要就此尘封。
相对于那些操蛋行业,互联网行业真的算是太高效纯洁的行业了,因为互联网相对开放,而且门槛低所以竞争激烈,没有形成行业垄断,想单凭关系混下去也很容易曝光,如果你的速度创意质量不如别人,那只有被淘汰的结果。前些年我自己预测了一些未来几年会比较火的行业,前几天我又重新思考了这个问题,除去极度垄断行业外,一般人可以从事的我只得出了互联网和相关的软硬件行业,未来几年拼的是创意,其实真实的技术差距真的看起来没那么夸张,所以谁的产品有新意,能够吸引眼球,谁就能够领先别人,所以我还是在这个行业里慢慢混着吧,虽然一事无成,但总算还有点想法。
我理想中的工作团队应该是工作上分享一切,每个人都有工作侧重点并且能够独当一面,团队人员一定要精简,不能养懒人,团队有明确的目标和计划,每个成员都为之努力,如果待遇和福利一定要与付出成正比,如果暂时不能提供好的,那么将来的回报一定要丰盛,毕竟不是每个人都信教的,高回报才是真正的动力,此外越是优秀的团队对优秀人才的吸引力就越大,所以坚持优秀才是更加优秀的前提。
现在我所在的公司确实基本上与优秀相去甚远,老板去旅游一次就转变了世界观,现在逼着员工每天跳舞被弟子规,自己谎话连篇极度小气还每天教育别人忘我利他,身边一堆拍马屁的,导致公司效率极度低下,基本上从对老板的态度就可以区分出来员工类型,尽量远离小人做好自己吧,总不能因为有小人就自己也使出王八蛋态度。

2013年11月18日星期一

正则表达式学习

只是点皮毛,先凑合用着了,顺便鄙视一下SQLServer,居然不支持正则。

\b 元字符,代表着单词的开头或结尾,也就是单词的分界处。
\d 数字
\s 任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
\w 字母或数字或下划线或汉字等
^ 匹配字符串的开始
$ 匹配字符串的结束
\ 转义符
. 除换行符以外的任意字符
? 重复零次或一次
+ 所有(从1次开始)
* 所有(从0次开始)
| 或条件
{n} 连续匹配n次
{n,} 连续匹配多于n次
{m,n} 连续匹配多于m少于n次
[] 集合,需要匹配的都列出来

反义:
\B 不是单词开头或结束的位置
\D 任意非数字的字符
\S 任意不是空白符的字符
\W 任意不是字母,数字,下划线,汉字的字符
[^x] 除了x以外的任意字符
[^aeiou] 除了aeiou这几个字母以外的任意字符

2013年11月12日星期二

ios小众导航app推荐 – hubway

hudway
    之前自己开车时有想过一个构思,因为现在天黑的早,下班时基本已经是全黑状态,我在把手机开着免提扔在前面打电话时想,如果能够用手机投影到玻璃上,做成导航该多好,不过当时不知道可以只利用反光,今天我就找到了这样一款app


    这款小众app名叫hubway,界面小清新,功能略脱俗,操作较简单,界面还挺快。它的主要功能就是设置终点后开始导航,手机上的界面是反向的,反光到挡风玻璃上就是正向的了。地图可以使用ios自带地图和google地图两种,可以付费去广告和升级为专业版。界面是两条光轨描绘出路线方向,非常漂亮,有种开赛车游戏的感觉,有了这个开拉力赛的副驾驶是不是可以考虑休息了,还能减轻点车身重量。

    最近陆续发现自己的想法出现产品,是不是考虑整理一下思路把自己构思过的产品都列出来了,也免得被人说我是抄袭。。。

2013年11月11日星期一

SQL查询每个分组的前N条记录

在写一个存储过程中,遇到了一个问题,自己写的SQL总是运行效率太低,于是上网搜索,学到了一个新招,都怪自己平时不爱学习啊,不过这个语法真的很厉害。

需求:取一个表中每个id的最新三条数据(按照更新时间倒序取)

SELECT * FROM #T AS T WHERE 3>(SELECT COUNT(*) FROM #T WHERE GID=T.GID AND Date>T.Date)
或是
SELECT * FROM #T AS T WHERE ID IN(SELECT TOP 3 ID FROM #T WHERE GID=T.GID ORDER BY Date DESC)


这是我的写法,一共运行了。。。反正半分钟后我就点了取消


网上有两个写法
1)使用APPLY
SELECT DISTINCT b.*
FROM #T AS a
CROSS APPLY
(
    SELECT TOP(3) *
    FROM #T
    WHERE a.GID=GID
    ORDER BY Date DESC
) AS b

2)使用ROW_NUMBER()进行排位分组
SELECT ID,GID,Author,Title,Date
FROM
(
   SELECT rid=ROW_NUMBER()
                  OVER(PARTITION BY GID
                          ORDER BY Date DESC),
          *
   FROM #T
) AS T
WHERE rid<=3



表格共有7万多行数据,字段大概20个,第1)种方法运行9秒,第2)种方法运行3秒,网上牛人果然很多,受教了。

修改:今天想到正式服务器貌似数据量更大,于是拿到正式机上去跑跑,居然运行了15分钟(中间哥还仔细研究了一下goagent),于是继续找优化,发现是需求订的有漏洞,于是加上限制范围后再运行,不到2秒就结束了,over。

2013年10月31日星期四

接口任务完成

     第一次做接口的东西,发现跟页面尤其是webservice很相似,做起来遇到不少问题,但是都是基本的东西,相信对工具和类库了解越深入也就能越熟练,问题也会越少,之前吐槽过c#语法之烂,做完一个任务后发现使用这么烂的语法也挺带感的嘛。
     今天其他小组同样做这个项目接口的同事也做完了,我把代码获取到本地认真看了一下,发现了自己的一些不足,熟悉这个项目之后再去读别人的代码还是很容易的,并且也可以学习一下,我发现:
     1 我的代码写的不够优美,直接看就能看的出来的那种,就像大实话遇到了莫言的文字,高下立判;
     2 代码结构的组织还不行,以后需要加强;
     3 基础知识基本快忘的一干二净了,一些逻辑表达式都看不懂,这也是部分代码不优美的原因;
     4 逻辑和性能方面比同事要好,这个和自己的工作内容有关;
     再吐个槽吧,我建议同事把几个底层公共方法合并,这样可以只调用一次,遭到拒绝;又提出让同事将同一个参数的返回类型与我的一致(因为我先写的,她接着我的写),又遭到拒绝。我这里测试都自己测,更新给指导,部署有问题我来解决,同事只是提交测试剩下的就不用管了。我们就像是淘宝小卖家和天猫大商户,我尽管不招待见可还只能用真诚和责任心做事。希望不久后的一天能够成为总经理,出任CEO,走向人生巅峰。

     最后问一下,为什么最近blogger登录时总是重定向,无法显示网页?自言自语而已。


修改:
接口已经完成联调,调试过程中的确遇到不少问题,也学到不少东西,之前返回类型不一样的方法我也修改了,跟同事保持一致。

goagent貌似被和谐掉了,最近物色vpn中。

2013年10月24日星期四

希望做有意义的事

     最近忙的要命,除了自己原本的工作外还要做一些开发工作,而且任务都是我一个人在做,没有队友和搭档,做的又都是这边之前没接触过的东西,于是工作中倍感孤独,进展也缓慢。
     目前在做的是一组接口,供人调用的,忙了两天总算完成了一个,再一看文档原来还有13个,真是个吉利的数字。本来心里憋着一股劲努力的做,可是今天一看到调用方的UI,实在有点泄气,就是安卓APP中查看和修改员工与会员信息的功能。拜托,这又不是什么大型CRMERP,只是一个手机APP啊,搞这么复杂的功能干嘛,这种修改的功能不能转移到页面或者后台去做吗,以后是不是还要有权限管理,再说谁会用一个APP傻乎乎的去看员工啊,那说明目前的接口只是冰山一角,这是要发展为手机APP巨无霸的节奏,而我的苦日子才刚刚开始。
     我们工作到底为了什么?每个人心中都有一个权重,而我最希望的是做一些有意义的事。什么事算有意义的事呢,我想应该是能够帮助人们改进生活或工作方式,提高效率,找到乐趣的事。而目前我除了看到一望无际的接口们,实在找不到它跟改善工作有什么联系,希望我错了。另外对C#了解的越多就越憎恶这种语法,脚本语言中10行以内写出来的东西在这里也许要写满两个类。

     吐槽归吐槽,工作还要继续,做的过程中我也会不断提出改进建议,希望做出来的东西和系统设计上能更好,也希望现在做的事情更有意义一些。

2013年9月23日星期一

伤情谢洛托


      一个毫不起眼的球员,在看着自己心爱的球队屠城般的虐杀自己效力的球队90分钟后,呆坐在地上,伤心、郁闷亦或是颓唐,他只想静静的坐在那里,不被任何人打扰,只有上帝看得到自己的哀伤,这个画面深深的打动了我。
      昨天的比赛中尽管他拼尽了全力,想要证明自己还有价值,想让自己心爱的俱乐部看到后收回自己,可惜现在的队友早已放弃了抵抗,只有谢洛托一个人跑前跑后,一次次被放倒又爬起来继续奔跑,知道比赛的最后一刻。
      对于谢洛托,我不清楚上个赛季是谁的意思运作他转会来到国米,对他的能力我不看好,很多媒体和球迷也都不看好,赛季中唯一的亮点就是米兰德比中的头球扳平比分。可他令我印象最深的是他一直强调国米是他的最爱,萨内蒂是他的偶像,能够转会到国米站在萨队身旁就像是实现了人生的一个梦想,可惜梦想终究是梦,总有照进现实的一天,这个赛季初收到走人通知后思量了一个夏天,终于来到升班马萨索洛,在这里还离心爱的球队不远,还有表现给俱乐部的可能。即便离开国米,谢洛托仍然强调他对国米的感情,虽然无奈,但事已至此强留无益。
      看目前的情况谢洛托走人几成定局,希望他能找到一个开心的地方踢球,也希望与曾经的梦想渐行渐远的我们,能够找到新的梦想并快乐的追逐下去。

2013年9月17日星期二

高端大气国际化

      好像国内的IT圈是跟国际接轨最快的行业了,国外什么网站和软件火咱们就接轨什么,不信你随便找一个墙外开花的都能找到一个墙里香的,低科技含量的硬件也都能第一时间出个接轨品,现在连IT界算市值营收收购入股都以美元来作单位了,听着就那么高端大气国际化。
      昨天最大的新闻当属腾迅入股搜狗,搜搜品牌撤销,团队并入搜狗,花了4.48亿美元,踢走了一个大包袱,换来了股价大涨和2/5的董事席位,以后见了360可以挺起鹅胸淡淡的说搜索哥现在是二了。王小川也不傻,好处如果都是腾迅一家的,他怎么会点头,当初拒绝360合击百度证明此人精着呢,百度是谁,国内搜索垄断老大啊,虽然手段不那么光彩,但人家身家毕竟在那摆着呢,况且跟老周合作危险系数太高,即使不倒在前线也可能倒在清算。跟小马哥就不一样了,保留自己品牌不说,还能获得腾迅大量的搜索入口,尤其是搜狗在移动互联网上的无力,正好借助强大的企鹅快速提升,不仅人财两赚还借位做了老二,他仍然做搜狗的掌门人。张朝阳更超然,年初把阿里踢出局后积极寻找买家,总算搞定了小马这个不差钱的大户,自己做CEO,小川给他干活,变现的钱揣进自己的腰包,从表面上看这简直就是三赢啊。
      至于合并后,两方团队必然有大量人员冗余,裁员还是大部队缓步前行是个值得考虑的问题,两方合作的契合度也得把握好,否则精力都花在内部扯皮上,我等看客等之后看搜狗的动作就可以一见端倪,我对两家网站各个频道如何合并比较感兴趣,之前看搜搜一个产品经理做的视频频道,界面其实不赖,甚至优于搜狗,希望不要全盘搜狗化。另外提醒腾迅记得soso.com域名记得按时续费。
      最后特别感谢360再一次做了备胎,帮助搜狗卖出了好价。

2013年9月12日星期四

ios降级

      当初ios7beta刚推出来时自觉对ios6审美疲劳,并自以为能接受7比越狱6的一些缺陷,一时手贱在没有备份的情况下升级了。而且升级中经历了变砖去专卖店偷学升级好后打个字都卡的要死之后(中间的过程说多了都是泪),终于beta4改善了很多,也终于用着比较顺手了。昨天大半夜的不睡觉折腾了近两个小时又把系统降回了6。之所以降级回来主要有几点原因:
      1 ios7正式版马上发布,怕到时候无法降级,反正升级是肯定可以的,先降回来再说;
      2 ios7颜色过于艳丽,我眼睛看多了很容易疼;
      3 ios7的下拉菜单和上拉菜单都与6不同,与原来喜欢的系统插件有冲突,不知道在7里该怎么用;
      4 ios7硬件要求更高,在4s上运行还是有点力不从心。
      降级之后感觉手机仿佛获得了重生,甚至有点当初拿到新机时的感觉,运行如飞,虽然有些功能跟7比起来还是差一些,但是相信等新的越狱出来可以弥补。
      有大神早就说将7越狱成功了,应该用的是跟之前不同的漏洞,那么6.1.3也应该可以享用。现在坐等19号吧。

2013年9月11日星期三

你又回到老地方,你又走在老路上


      苹果的发布会一如既往,赛前小道不断,内容被爆的体无完肤,就差讲演稿了,赛后大家骂娘,股价继续跌落,果黑纷纷发帖回帖大骂苹果无德。
      发布会的内容我认为只有三点创新:
      1 A7处理器。世界上首个采用64位架构的移动终端cpu,以苹果的硬件与系统软件高度整合的优势,假以时日必能将64位的优势发挥出来。只是有一点担心,众多app优化后如果更臃肿,我等使用老设备的用户得到的只能是伤害;
      2 touch-id。这个点子很好,带来了新的手机解锁方式,只是为了安全无法为第三方app提供,另外以后的appstore付费确认时对于我等老设备能否跳过询问确认方式,如果苹果不告,安卓机肯定以后也会推出这种功能,而且以安卓的特性,必然允许第三方收集指纹信息,未来的手机安全问题将更加严重,对于安卓的开放和ios的封闭又会出现新一轮的争论;
      3 M7传感器。虽然暂时用处还比较少,但是等到众多第三方设备与应用都开发出来之后,此功能必将有更大的用武之地。
      还有两款手机的颜色都做了修改,5c的分别为茶婊绿、古德白、武藤蓝、脑残粉、大便黄,5s为高端黑、卫生金、东北银,东北作为唯一入选的地域,连我这么鄙视地域攻击的人都为我大东北骄傲。
      好吧,该吐槽的地方太多,都不知道该从哪下嘴了。ios7早就已经体验了,感觉虽然不错,但是仍然没有越狱后装各种插件的ios好用。5s带来的硬件提升外没有太大的质的飞跃,或者说没有带给人们任何惊喜,没有说出来让人能哇哦一声的东西,就像是以前moto没落之前一样,只靠提升硬件配置来推出新品,就这样把自己玩成了google的子公司。本来我预计5c的售价应该是3299-3599之间,看到结果的我下巴掉下来,再一查美国官网,果然世界是我们的也是你们的但归根结底是税务那帮孙子们的,虎嗅有个小编对这个价格咬牙切齿的架势笑死我了,看来对5c虎视眈眈了很久啊,看看苹果的产品质量和定价规律就知道不可能降到跟小米一个档次。当初苹果告三星抄袭圆角设计时曾经拿诺基亚的lumia来做正面范例,称赞为手机独立设计的典范,现在5c这么公然抄袭撸妹儿不知诺基亚会不会对簿公堂,里面除去黄色和蓝色外估计受众会很少,如果5不停产的话7种颜色加起来没准可以召唤出个神兽啥的也说不定,看硬件配置这不就是诺基亚若干年前玩死自己的科技以换壳为本路线嘛,如果乔布斯这么玩可能还有点悬念,可旁人走这条路线应该是作死。5c官方外壳山寨成本极低,看看满大街的仿crocs鞋吧,过不了俩礼拜淘宝上就会出现50以下的5c套子,促销还会19.9,9.9之类的冲钻。
      虽然苹果如此令人失望,但瘦死的骆驼比马大,不信看看5c的塑料做工,绝对比三星火腿肠小米等品牌良心,一时半会还倒不下,当初乔老爷子手中握着大把现金的举措的确很有前瞻性,所以现在股价回落也影响不大,希望苹果在摩托和诺基亚的老路上不要越走越远,最好还是找个像梅耶尔那样会花钱的人,扩充一下自己的产品线,这个时代一成不变的产品线只可能是作坊,大公司还是要学会用转型规避风险持续盈利的。

2013年9月3日星期二

kindle入手,姿势我有

      在阅读需求越来越强烈的时候,恰逢pwt入华,价格比海淘贵不到哪去,于是第一时间在亚马逊上下了单,开始了装逼看书之旅。
      到现在为止,一共通过kpt阅读了20多本书了,说句很不厚道的话,都没付钱,网上有个kindle人社区,里面每天都有分享电子书的网友,光靠目前的下载量都足够我看一年的了。按照一本书20块钱价格算,省下来差不多500块钱了,而省下来的时间空间精力不知道多少,总之少不了,我打算等到把kpt本看回来之后再开始免费+付费的一起来,按照目前的速度应该快了。
      推荐几本书吧,小说类的刘震云、马伯庸、孔二狗的风格比较对我的胃口,基本上写的每本我都喜欢。另外《天才向左,疯子往右》是天涯的连载,书名模仿了慕容雪村的一本书,里面的内容,都能独立成一个个小故事,挺有意思。
      囧叔的《我讲个笑话,你可别哭啊》,文笔很像马王爷,也是幽默的笔墨写下一个个小故事,大多是幽默中透着悲情。
      余华的《第七天》刚发行的时候铺天盖地,全是夸耀之词,弄得我心痒痒的,难免抱着很高的期望,等待看过才发现期望值太高不是什么好事,对作品很难满意,不过不管怎么说,这也是一个优秀的故事。
      《了不起的盖茨比》期待了近一年了,又是犯了期待太高的错,电影让我比较失望,回过头来看书,发现跟电影别无二致,但是可以发现里面的句子形容词很多,想应该是英语原著比较难得,因而受外国人追捧,再去翻了几页英文原版,的确如此,但是毕竟对英语不熟,只好作罢。
      传记类有一个老外何伟的《消失中的江城》,看过之后让我对四川也是向往不已,里面很多和谐内容,不知道当初怎么通过审核的,也许外国人身份高级,审核官一笔带过。
      还有本《韦尔奇自传》,主要讲他自己在通用集团坐上总裁并将通用传统发扬光大的事情,一个公司如此,不怕培养不出优秀的人才,韦尔奇成就了通用,通用也成就了韦尔奇,这本书值得所有中国的土老板认真学习。
      学习类中吴军的《浪潮之巅》给我留下了非常深刻的印象,作者不光是叙述故事,而是通过自己的视角与分析给大家剖析一个又一个的案例,这与作者的高端职业经历分不开关系,站的越高,看事物的角度也就越高,值得大家多学习这种看事物和分析的能力。
      前段时间各种产品人推荐的其他书籍看了几本都比较失望。
      另外再推荐两本羽毛球教学书,乌尔里希·菲的《羽毛球教学》和长谷川博幸的《羽毛球技术问答》,前面一本浅显易懂又不失系统,还带训练方法,后面一本比较啰嗦,但是有一些经验,这些才是难能可贵的。