早上在被窝里听《三体》,赖了一小时床,真精彩,完全停不下来的节奏。。。
上午陪儿子去小区打羽毛球,也是戴着耳机边听边玩,儿子时不时说些什么也听不清。。。
上一次这么入迷还是玩【电话烤箱(暂定)】,PSP上玩的,最精彩的核心部份是在出差的大巴上玩的,下了车都不愿意去客户那,走的路上都在玩。。。回来的路上接着玩。。。后来又看了一遍动漫,哪天能翻拍成电影就好了。动漫最震撼的是附加的那集,【欺骗过去的自已=欺骗全宇宙】。。。
一直用【酷我听书】听有声小说,这APP什么都好,但没开软件时,直接插入耳机按播放键,是不会自动启动APP的。
以前用【天天动听】是可以按播放键启动的,不知是后台长驻一个监听进程还是另外的方法,总之用360清除进程后,它还是可以通过播放键启动的。这APP其它都好,就是不显示文件名。。。只显示歌手之类的属性,导致一排下来全是一样的,根本不知道听到了第几章,虽然有自动记忆,但还是不爽。
其它又试了几个播放器,不是监听不了播放键,就是不显示文件名,真不知这些开发者是怎么想的,网上一直都有反馈,技术上也不难实现吧,就算考虑到众口难调,加个选项让用户选择总可以吧。特别是显示文件名,好几个播放器居然都不支持,播放列表一溜下来全是一样的。。。你们测试时到底有没有用来听过电子书啊亲。。。
还是用回【酷我听书】吧,用习惯了,要播放时手动打开一下APP就好。上个版本还劫持了锁屏界面,换上它的图片,要向右滑动解锁,还没地方修改选项。。。不过很快就修复了,更新后就正常了,估计也是反对的人多,好歹给个选项啊。
一上午就这么交待了,下午把公司项目的【主页】统计数据弄一下吧。现在空闲时间如果没学上一些什么,就有负罪感,这是好事,也是工作上的坎坷造成的不安全感。前几年在上海混得太舒服了,完全没压力,如果那时有坚持学些什么的话,四五年下来也有相当的收获了。
【种一棵树的最好时间是十年前,其次是现在】
=========================
做【首页】的业务统计,刚好多熟悉一下这套框架
1、重置表单,使用Dom的reset(),或是$("#xxx")[0].reset(),以前都是$("#xxx").find("input").val("")之类手动清空的,碰到有其它格式还要另外处理。(以前公司那套框架,基本就不用form,连提交数据都是手动写。。。)
2、@Html.Action(“Action”,"Controller")可以调用其它控制器,一开始以为是@Html.Action("Controller/Action")这种格式,结果不行。。。MVC还是用的少啊,现在已经熟悉多了,到过年应该就会很熟了吧。
3、本想用ajax调数据,返回JsonResult结果,再用js赋值到页面上(以前公司就是这样做的)。后来想想还是要按MVC正规的来,建了控制器、分类视图。
基本调好了,晚上再在控制器里把数据取一下,搜索按钮事件绑定一下就可以了。
这套UI框架整体还可以,看源码好像是拿JQueryUI改的,然后公司一个美工同事维护改进。但有些地方不大好用:
1、表格右侧有个偏移十几个像素的空位,据说是为了滚动条预留的,但小表格没有滚动条时,那地方就空着(而且标头还有颜色),不美观,尝试改一下公共样式,发现还有很多地方要处理,就算了。
2、搜索栏的各搜索项宽度、高度之类有个公共样式控制,碰到不同场景,还需要自已另外写一些样式把原先的【抵消】掉,如一个地方高度错位,发现是公共样式不适合,只好把这几个设为默认值:
.XXX ul li { height: auto; line-height: normal; overflow: initial; }
3、表格下方的分页组件,有个参数控制其高度,要人工去调。。。本来分页组件就是在表格页面的下方嘛,为什么还要人工去调。。。有个参数,要把页面高度减去表格高度再减去搜索栏之类,要去算。比如一开始大概是150,然后页面刷新试下,看高了还是低了,再慢慢调,调到合适为止。。。为什么还用这么落后的方法。。。
4、表格各列的宽度,要用<colgroup>来控制,直接在td上width是不行的。而且先调表头thead的colgroup,一列列设好宽度,【自动】的话就直接<col />,不能漏。调好后复制到tbody上,这样表头和内容宽度才会一致。有时调整某列宽度,就要上下都调。。。Html5几乎都不支持colgroup和col了,写着也别扭,thead和tbody各来上一段,代码显得很冗余。
5、combobox里有参数可以设text和value,但js中没有相应方法可以得到value,项目里都是直接用text的中文值进行判断。。。在MVC里倒是有封装@Html.Combobox可以取到。如果要【只读】,没有相应的combobox属性,只有html的readonly="readonly",在【只读】时点中间的文本区还不会出来下拉框,只能点旁边的小三角。。。
6、搜索栏是传相应字符串进去的,有注入的风险,而且还要自已在控制器里一个个判断/取值。以前项目有封装一个控件,可以把搜索栏里有值的部份拼接起来Base64后传到后台,虽然也有注入风险,好歹不用自已写代码了,而且还可以把传进去的字符串用个公共方法Replace掉一些危险SQL关键字或语句
希望以后转成EasyUI、JqueryUI、Bootstrap、LigerUI之类的吧,项目也没什么特殊的需求,还是用大众化的标准UI好了。新员工也容易上手,不然每个新员工都要看一遍UI的源码或项目中是如何使用的,又没有相应的文档或培训,很痛苦。
唯一比较好的就是把弹出窗、弹出框全集成在一个dialog里了。弹出窗体就是dialog.open,弹出警告/确认框就是dialog.alert、dialog.confirm,这个还比较方便。
=====================
项目封装了个方法,取出来的数据是List<Hashtable>,要对其用linq进行求和,折腾了一阵总算弄出来了(cases是List<Hashtable>):
ViewData["XXX"] = cases.Sum(m => m.Cast<DictionaryEntry>() .Where(k => Convert.ToString(k.Key) == "XX") .Sum(n => Convert.ToDouble(n.Value == DBNull.Value ? 0 : n.Value)));
1、Hashtable不能直接用Linq,要转成DictionaryEntry
2、数据库取出来的有空值,不能直接Convert,要判断DBNull.Value
=====================
把【搜索】功能做完了,做了一遍就熟悉了,项目封装了一个方法,【搜索】按钮不是<input type="submit">,而是一个a标签,class带有样式,onclick调公共方法即可。
很有成就感。本想今晚看【007】的,但两个半小时,又来不及了,看一篇短的【偷拐抢骗】,然后在床上听【三体】吧,刚好眼睛可以休息下
======================
【偷拐抢骗】真看不懂。。。这么多大牌,听说还在英国票房冠军什么的。在豆瓣看了讲解,还是觉得一点都不好看,也不好笑,哪有什么幽默,完全不知所谓,一些 人/事/巧合 掺杂在一起,乱槽槽的