虽然我不需要为了春运在12306上抢票,但是之前看到逼哥转了个12306程序员一篇叫「其实我们一直在进步,只是你们假装看不到」的长微博,我就很好奇的去试用了一下。
首页依然没变,一直困扰我的难题还是为什么敲域名要跳转到子目录,那个私有密钥就不说了。到了订票页面,哇,果然大变样啊,比过去的界面好看的多,有点像web2.0刚红火那时的风格,换句话说,它跟现在其他优秀站点的外观有差不多10年的差距,试着用了用功能,我靠你还敢再卡点吗,连个控件打开都有卡顿,看了下源代码,大哥你们改掉的语句别让我们看到好吗,试着查询了一下,慢就一个字,我不能只说一次,刷票屡屡失败,让我想起了第一次上网开一个页面等了半小时的情景,也许性能上的差距更大。
12306的程序员大哥们,就像你长微博里说的,你们有先出招的优势,但是你们没有技术,这话说的真tmd对,但是你理直气壮的说就是你的不对了,你们不能自己闭门造轮子啊,这么高并发是换谁也扛不住,但是你们的瓶颈在性能,不是页面布局啊,阿里现在处理并发有一套,可以向他们取取经啊,直接砸钱挖人也好。你们现在和阿里的差距就像是清政府和八国联军,不加大投入向人家学习差距只能越来越大啊,你们努力有个毛用,谁不努力啊,你得比别人快才行。
上个月正好回了趟大学,发现现在的宿舍条件已经像我10多年前想要的样子了,其实没多难,无非就是双层玻璃不漏风,不限电,有空调,最好有热水器,对于一个初到南方的北方人来说,这些要求很奢侈吗,夏天生痱子冬天生冻疮,逢年过节发两块长毛月饼,你们这是育人还是毁人,如果校长能在破宿舍里住两天他肯定早就给换了。小米他们学校的校长经常跟学生一起吃食堂,处理学生意见,学生跟校外产生冲突后保护学生,我们校长只会给学生开除,买回全市市面上报道学校反面新闻的报纸,就算你现在已经条件提高了,可是你已经晚了10年,跟12306一样,还自己闭门造轮子只会越来越落后。
2014年1月9日星期四
2014年1月7日星期二
让互联网思维见鬼去吧
最近随便打开一个IT类网站,十篇文章里必定2-4篇有互联网思维、2-4篇大数据,1-2篇BAT,真正干货只占十分之一不到,原来IT小编这么好当啊,整的像新闻联播一样都让人摸到规律了,连体育编辑还会写点色情小说呢,你们还好意思整天发文章吗。
这帮傻逼们今天要用互联网思维做手机,明天要用互联网思维造汽车,后天要用互联网思维做销售,大后天用互联网思维做马桶,我真想把马桶扣你们丫头上洗洗你们浆糊脑袋,以后别张嘴闭嘴互联网。
宽带和智能手机的普及带来的这波大潮让这帮孙子们集体亢奋,现在随便出个点子拉十几个人七八条枪就敢说要革了传统互联网的命,拉这个老板,找那个风投,都以为自己是乔布斯转世呢,平时没事给人家写写软文捞点外快。但别忘了能到今天那是运营商和乔老爷们的功劳,真正改变生活的是他们,而不是什么狗屁互联网思维,不信你到下边问问乔老爷知不知道什么是互联网思维。产品、流程、品质的进步大部分源自于人们对美的追求,有没有互联网都一个鸟样,没听说哪个球员苦练绝技是受了互联网的启发的。当然每个人对美的具体概念不同,这才显出审美和能力的差距。
都说互联网烧钱,你知道哪个行业不烧钱吗,这年头还有一本万利的买卖吗,如果有请一个告诉我,我代表我全家感谢你。别看现在富豪榜里有丁三石小马哥霍金马李红眼这些搞IT的,他们那都是股价撑着呢,真正的实业比不上任何一个做房地产的,你看IT公司赚钱多,能进500强吗,看看中国进了500强的都是什么公司,要赚钱还得靠垄断,还有那闷声发大财的主儿,比如现在儿女风光无限的前领导人一家子,改变人们生活方式的不止是IT,上边发个文件,你就白干一年,人家多印点纸,你就苦不堪言,大佬吃个包子,你就得琢磨半天,大户哗哗数钱,你就光杆过年,所以别再扯犊子了,发点干货好吗,也让我过个好年。
这帮傻逼们今天要用互联网思维做手机,明天要用互联网思维造汽车,后天要用互联网思维做销售,大后天用互联网思维做马桶,我真想把马桶扣你们丫头上洗洗你们浆糊脑袋,以后别张嘴闭嘴互联网。
宽带和智能手机的普及带来的这波大潮让这帮孙子们集体亢奋,现在随便出个点子拉十几个人七八条枪就敢说要革了传统互联网的命,拉这个老板,找那个风投,都以为自己是乔布斯转世呢,平时没事给人家写写软文捞点外快。但别忘了能到今天那是运营商和乔老爷们的功劳,真正改变生活的是他们,而不是什么狗屁互联网思维,不信你到下边问问乔老爷知不知道什么是互联网思维。产品、流程、品质的进步大部分源自于人们对美的追求,有没有互联网都一个鸟样,没听说哪个球员苦练绝技是受了互联网的启发的。当然每个人对美的具体概念不同,这才显出审美和能力的差距。
都说互联网烧钱,你知道哪个行业不烧钱吗,这年头还有一本万利的买卖吗,如果有请一个告诉我,我代表我全家感谢你。别看现在富豪榜里有丁三石小马哥霍金马李红眼这些搞IT的,他们那都是股价撑着呢,真正的实业比不上任何一个做房地产的,你看IT公司赚钱多,能进500强吗,看看中国进了500强的都是什么公司,要赚钱还得靠垄断,还有那闷声发大财的主儿,比如现在儿女风光无限的前领导人一家子,改变人们生活方式的不止是IT,上边发个文件,你就白干一年,人家多印点纸,你就苦不堪言,大佬吃个包子,你就得琢磨半天,大户哗哗数钱,你就光杆过年,所以别再扯犊子了,发点干货好吗,也让我过个好年。
2014年1月1日星期三
勾3搭4
马上跨年,马上睡觉
总结一下吧,2013除了银子收获还是不小,除了德什么都缺,这么大年纪了,早年的锐利早已磨圆,换个说法就是更能理解他人了,所幸还保留着一点人性和追求,而且整个一年能够持续不断的进步。
1 找到了喜欢的锻炼项目-羽毛球
2 看了不少书,还有更多网络上的知识
3 已经很少上和谐站点了,身心得到净化
4 技术上进步最大
对于14年,有几个展望:
1 希望物质水平大幅度提高
2 希望小米能够找到喜欢的工作
3 希望丁丁喜欢上幼儿园
4 希望自己成为"堆栈"型人才
2013年12月5日星期四
如果我们这样做硬件
手机中有一项特别牛逼的功能,虽然极少被使用,但是必须承认这个功能的牛逼之处,就是恢复出厂设置功能,就连很久很久以前的功能机上都必不可少,手机为了保证可以使用,花费一定内存保存这些默认数据,使手机不至于因为一个NULL值而惨遭抛弃,如果我们生活中的硬件也能这样呢?
不敢想,那样就实在太牛逼了,就像发生了时光倒流一样难以置信。
当然这样的难度非常大,好吧,那我们把要求降低一点,如果我们的硬件中能够使用电脑板控制的,比如电器,在硬件没有损坏的情况下能够将系统恢复成出厂设置,这样厂家的售后可以减轻一半的工作量,因为很多问题其实都是他们的bug造成的,而售后却从来不承认,只是告诉你硬件坏了,更换就可以,一片800,两片优惠1500,您换几片,这也属于王八蛋态度的范畴,如果把做手机的精神投入到其他电器行业,那么这帮孙子就等着吃屎吧。
这是一个真实的故事。
2013年11月22日星期五
listview中分列展示数据
listview控件就像windows资源管理器右边的内容视图,有大图标、小图标、列表、平铺、详细信息几种展示方式,我这次做的需要看目录下的文件夹和文件以及更新时间,另外再加个文件类型和大小,所以就使用详细信息的方式,具体做法如下:
1 在listview的属性窗口的View属性选择Details
2 Colomns属性中,添加需要的几列,并将Text改成要展示的列名字
3 代码中添加方法
- //获取文件夹和文件列表
- public void GetDirectorysAndFiles(int index)
- {
- string path = datatable_folders.Rows[index]["Folder"].ToString();
- string protocol = datatable_folders.Rows[index]["Protocol"].ToString();
- string username = datatable_folders.Rows[index]["Username"].ToString();
- string password = datatable_folders.Rows[index]["Password"].ToString();
- if (protocol == "local")
- {
- DirectoryInfo dirs = new DirectoryInfo(path);
- foreach (DirectoryInfo dir in dirs.GetDirectories())
- {
- ListViewItem item = new ListViewItem();
- item.Text = dir.Name;
- //item.ImageIndex =
- item.SubItems.Add(dir.LastWriteTime.ToString("yyyy-MM-dd HH:mm"));
- item.SubItems.Add("文件夹");
- item.SubItems.Add("");
- listView1.Items.Add(item);
- }
- foreach (FileInfo file in dirs.GetFiles())
- {
- ListViewItem item = new ListViewItem();
- item.Text = file.Name;
- item.SubItems.Add(file.LastWriteTime.ToString("yyyy-MM-dd HH:mm"));
- item.SubItems.Add(file.Extension);
- item.SubItems.Add(file.Length.ToString());
- listView1.Items.Add(item);
- }
- }
- }
- //listbox双击事件
- private void listBox_folders_MouseDoubleClick(object sender, MouseEventArgs e)
- {
- int index = listBox_folders.IndexFromPoint(e.Location);
- if (index != System.Windows.Forms.ListBox.NoMatches)
- {
- GetDirectorysAndFiles(index);
- }
- }
2013年11月20日星期三
从文本文件中的表读取到二维数组与DataTable并在listbox中展示其中的一列
自己做的一个winform小工具中,有一个listbox,我想在每次程序启动时从本地一个文件中读出数据,将其中的一列展示在listbox中,而且数据要保存在内存中,供之后的功能调用。查论坛说filestream方式读取文件比较好,而且可以每次只读一行,对于很大的文件也可以轻松应付,虽然我的文件不可能那么大,但是为了练习也采用了这种办法。filestream中的ReadLine()方法也可以得出文件的行数,以下是源代码:
具体的办法是通过循环将文件的每行都读出存入一个一维数组,再用一个for循环将这个一维数组的数据存入一个二维数组的一行,二维数组的列数由一维数组的长度取得,行数则随着ReadLine()的循环自增,最后listbox展示的是这个二维数组的第1列。
- StreamReader streamreader = new StreamReader(FileOperation.folderfile);
- string line;
- while ((line = streamreader.ReadLine()) != null)
- {
- string[] readrow = line.Split(new char[] { '\t' });
- int m = 1;
- int n = readrow.Length;
- string[,] fields = new string[m, n];
- for (int i = 0; i < n; i++)
- fields[i / n, i % n] = readrow[i];
- listBox_folders.Items.Add(fields[m-1, 0]);
- m++;
- }
补:
随后的操作过程中,需要多次对该数组进行增删改操作,发现数组的操作很麻烦,于是只好重新来过,将数组改为DataTable类型,DataTable获取行数列数,索引,增删改操作都相当便利,而且我也熟悉,代码如下:
最后是复制给一个全局变量供全局使用。
- StreamReader streamreader = new StreamReader(FileOperation.folderfile);
- string line;
- DataTable dt_folders = new DataTable();
- DataColumn name = new DataColumn("Name", Type.GetType("System.String"));
- DataColumn folder = new DataColumn("Folder", Type.GetType("System.String"));
- DataColumn username = new DataColumn("UserName", Type.GetType("System.String"));
- DataColumn password = new DataColumn("Password", Type.GetType("System.String"));
- DataColumn protocol = new DataColumn("Protocol", Type.GetType("System.String"));
- DataColumn port = new DataColumn("Port", Type.GetType("System.String"));
- dt_folders.Columns.Add(name);
- dt_folders.Columns.Add(folder);
- dt_folders.Columns.Add(username);
- dt_folders.Columns.Add(password);
- dt_folders.Columns.Add(protocol);
- dt_folders.Columns.Add(port);
- DataRow row;
- while ((line = streamreader.ReadLine()) != null)
- {
- row = dt_folders.NewRow();
- string[] readrow = line.Split(new char[] { '\t' });
- row["Name"] = readrow[0].ToString();
- row["Folder"] = readrow[1].ToString();
- row["UserName"] = readrow[2].ToString();
- row["Password"] = readrow[3].ToString();
- row["Protocol"] = readrow[4].ToString();
- row["Port"] = readrow[5].ToString();
- dt_folders.Rows.Add(row);
- listBox_folders.Items.Add(row["Name"]);
- }
- datatable_folders = dt_folders.Copy();
订阅:
博文 (Atom)