ASP.NET MVC 中 WebGrid 的 6 个重要技巧
介绍 当一个 Webform 开发者转做 MVC 开发的时候, 他会发现, 许多自己喜欢的东东不见了. 没有代码隐藏模型(behind code), 没有 view state, 没有页面生命周期(page life cycle), 没有服务端控件(server control). 你可以看这篇文章, 里头有讲 MVC 比 ASP.NET Webform少了哪些东西. 没有了这些易用的服务端控件, 相信许多人都会伤心欲绝. 最令人怀念的, 恐怕要属 gridview / datagrid 控件. 作为一个 ASP.NET Webform 开发者, 我能理解, 这种将 GridView 控件拖放到 form 里头, 然后给它绑定数据, 一会的功夫, 就能看到数据在表格中显示的开发过程, 有多爽, 多让人着迷. MVC 用 “WebGrid” 类代替 GridView . 这是个类, 再说一次, 这是个类. 别指望它能像, 有可视化快速开发工具支持的 gridview / data grid 控件那么好用. 不过要比用 HTML 的表格好的多, 起码省时间. 如果你想知道, 我们为什么不做可视化快速开发工具支持 MVC, 读下这篇文章 ASP.NET Webform 对比 ASP.NET MVC. 本文通过六个重要技巧, 教你如何更有效的使用 WebGrid。 一个简单的 MVC WebGrid 例子 “WebGrid” 的用途是, 显示集合(collection )中的数据. 集合可能是强类型列表(strong typed list), 也可能是泛型, 或其他类型. 我们先来看一个简单的例子. 这个例子将强类型对象添加到一个集合中, 然后用 “WebGrid” 显示出来. 下列代码创建一个名叫 “Custs” 列表, 然后把 “Customer” 类的 对象加进去. ? 1 2 […]
View Details25 个免费简洁的 WordPress 主题和布局插件
Editor Demo Download Editor 是一个排版驱动的主题,内容在右侧展示,非常漂亮,支持移动设备浏览。 Daily Theme Demo Download 响应式布局可用于博客、相册。 Illustratr Download Download 一个微型的相册主题 Fukasawa Demo Demo Fukasawa 是适合摄影人和收藏夹使用的 WP 主题 Espied Demo Download A portfolio theme for designers and photographers. Great for showing off your image oriented projects to the world. Cody Demo Download Simple WordPress Theme for blogs and personal websites. Sketch Demo Download 整洁、响应式的组,提供网站 Logo 自定义,特色是内容滑块。 PURE WORDPRESS THEME Download Pho – Minimalist, Masonry WordPress Theme Download Pho WordPress 是一个微型的博客主题,提供漂亮的排版,大量的空间可用于展示漂亮的大图片 Hoffman Demo Download Hoffman 适合用来做博客主题 Moments Demo Download 响应式主题,适合个人博客 CleanPort Lite WordPress Theme Demo Download CleanPort 是一个平面设计的风格。 Rams Demo Download Time Demo Download Ravel Demo Download Bridging […]
View Details25 个超棒的 jQuery 消息提醒插件
网页上漂亮的消息提醒不仅耳目一神,关键是引起用户的主题,实实在在起到提醒而不扰民的用途。本文向你推荐 25 个漂亮的 jQuery 消息提醒插件,你值得拥有。 偷个懒不翻译了,大家点击图片可直达官网。 1. jQuery Toastmessage jquery-toastmessage-plugin is a JQuery plugin which provides android-like notification messages. The toasted messages arriving on the screen in a seamless and natural way. 2. jQuery Notification Menu A jQuery plugin to add notification bubbles and a notification list to any menu. 3. Noty noty 是一个很有用的 jQuery 插件,用于创建 alert, success, error and confirmation 信息提示框,替换浏览器标准的对话框。每个提醒都是添加队列并进行显示的。 4. Notify Notify! is a jQuery Notification Plugin which adds simple notifications bars that you can use on your website and application to assist users while […]
View Details15款值得学习的小型开源项目,带你快速步入开源世界
对于初学者来说,小型开源项目更容易理解和学习,那么目前有哪些值得学习的小型开源项目?本文收集整理了知乎上网友推荐的一些不错的小型项目,代码基本都在5000行以内,感兴趣的朋友可以研究下~ SeaJS Sea.js是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制。Sea.js 追求简单、自然的代码书写和组织方式,代码非常精简。 Koa Koa 是下一代的 Node.js 的 Web 框架。由 Express 团队设计。旨在提供一个更小型、更富有表现力、更可靠的 Web 应用和 API 的开发基础。 pssh pssh 提供了并行版本的 OpenSSH 工具,特别适合用来控制有大量机器需要连接的情况,包括并行版本的 ssh、scp、rsync 和 kill 命令。该项目是Python写的,代码清晰而简短,数据结构定义的很清楚,看了之后你会称赞的。 grep-at-point 在写代码的时候,有时候会需要查看某个函数/类/变量在哪些地方被使用过。该项目用emacs lisp语言写成,可实现在项目目录下,所有指定扩展名的文件中,搜索当前光标所在的单词。 compile-make 该项目可实现emacs中一键编译的需求。在项目目录下寻找Makefile文件,并执行make命令进行编译。 语言:emacs lisp ;代码行数:19。 sigslot 很精简的 signal slot的实现,跨平台。这个源码有2000多行,但是一大半是为了模板适配不同个数的参数的代码,干货不足1000行。 UCOS uC/OS II(Micro Control Operation System Two)是一个可以基于 ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。 SQLite SQLite是遵守ACID的关联式数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。SQLite亦可以作为桌面数据库使用。 thttpd thttpd 是一个小型的、简单的、可移植的、快速以及安全的HTTP服务器。 Boa Webserver boa是一个小型的web服务器,可以用于多种平台,在嵌入式中比较常见。 C4 4个函数实现的c编译器,大约500行。基本上已经比较完备了,可以自己编译自己。 GLib GLib 是一个包含很多有用的 C 程序的开发包,例如树、哈希、列表等。GLib 之前是属于 GTK 工具包的一部分,现在独立出来成为单独项目。 tj/co 不到三百行,用于改善 node 异步回调语法。 shadowsocks shadowsocks 是一个基于 python 的轻量级 socks 代理软件(谁用谁知道)。 aosabook 这是一本牛书aosabook的续集,500 Lines or Less的源码。里面每一章的代码不超过500行,实现了web服务器、爬虫、OCR等等“大型系统”,每一章由不同领域的大牛完成。看看作者列表,可以说是软件领域的名人堂。 from:http://www.techug.com/15-simple-opensource-projects
View Details这 30 类 CSS 选择器,你必须记在脑袋里!
大概大家读知道id,class以及descendant选择器,并且整体都在使用它们,那么你正在错误拥有更大级别的灵活性的选择方式。这篇文章里面提到的大部分选择器都是在CSS3标准下的,所以它们只能在相应最新版本的浏览器中才能生效,你完全应该把这些都记在你聪明的脑袋里面。 1. * ? 1 2 3 4 * { margin: 0; padding: 0; } 在我们看比较高级的选择器之前,应该认识下这个众所周知的清空选择器。星号呢会将页面上所有每一个元素都选到。许多开发者都用它来清空margin和padding。当然你在练习的时候使用这个没问题,但是我不建议在生产环境中使用它。它会给浏览器凭添许多不必要的东西。 *也可以用来选择某元素的所有子元素。 ? 1 2 3 #container * { border: 1px solid black; } 它会选中#container下的所有元素。当然,我还是不建议你去使用它,如果可能的话。 DEMO 兼容性 IE6+ Firefox Chrome Safari Opera 2. #X ? 1 2 3 4 #container { width: 960px; margin: auto; } 在选择器中使用#可以用id来定位某个元素。大家通常都会这么使用,然后使用的时候大家还是得相当小心的。 需要问自己一下:我是不是必须要给这个元素来赋值个id来定位它呢? id选择器是很严格的并且你没办法去复用它。如果可能的话,首先试试用标签名字,HTML5中的新元素,或者是伪类。 DEMO 兼容性 IE6+ Firefox Chrome Safari Opera 3. .X ? 1 2 3 .error { color: red; } 这是个class选择器。它跟id选择器不同的是,它可以定位多个元素。当你想对多个元素进行样式修饰的时候就可以使用class。当你要对某个特定的元素进行修饰那就是用id来定位它。 DEMO 兼容性 IE6+ Firefox Chrome Safari Opera 4. X Y ? 1 2 3 li a { text-decoration: none; } 下一个常用的就是descendant选择器。如果你想更加具体的去定位元素,你可以使用它。例如,假如,你不需要定位所有的a元素,而只需要定位li标签下的a标签?这时候你就需要使用descendant选择器了。 专家提示:如果你的选择器像X Y Z A B.error这样,那你就错了。时刻都提醒自己,是否真的需要对那么多元素修饰。 DEMO 兼容性 IE6+ Firefox Chrome […]
View Details程序员真正的价值
文章出处:池建强 问:池老师,我是个不爱互动的人,但是您所有的文章我都看了,非常感谢您的引导,我入手了人生第一台 MBP。现在问题来了,但是找不到更合适的人解答,只能求助于您了,如果您有时间的话。问题是这样的:我有个32bit unix file(开启一个服务进程),在 Mac 上执行时错误提示是:exec format error,但是在 Linux 服务器却可以执行,为何?Mac 上有可以运行的方案吗?期待您的回复,不胜感激。 答:Linux 和 OS X 是不同的操作系统,可以尝试在 OS X 里重新编译这个文件。 问:非常感谢!如果没有文件源码是不是就只能认命了? 答:可以在 Mac 上装 Docker,然后对服务进行端口映射就可以了。 答:茅塞顿开。谢池老师。 以上是我和一位读者的对话,这位小伙子在拿到答案之后像一缕烟尘一样消失无踪,之后再也没有出现过。 在微信上加了很多 MacTalk 的读者之后,经常会收到一些奇奇怪怪的问题,关于职场、关于选择、关于朋友、关于 Mac、关于技术等等,不一而足。但是我能回答的却很少。问题不好没法回答,问题太复杂没法回答,问题领域超出我的认知也没法回答,耗时太长的问题我也没 时间回答,实在是惭愧的紧。好在偶尔也能够帮助一些小伙伴解决一些实际问题,心理上略感安慰,比如上面这个问题。 把这段程序员之间的对话翻译一下,大致是这么个故事: 一 位读者有一个32位的 Unix 可执行文件,可以在某种版本的 Linux 服务器上正常运行,运行这个文件作用就是起个进程,开端口,然后与其他程序进行交互。但是这个文件拿到 Mac 上完全没办法运行。就在他趴在 Mac 上愁肠百结万念俱灰的时候,突然想到了「池老师」。不就是这个老家伙把 Mac 夸的像一朵玫瑰一样,让每个程序员都去采摘么?现在扎手了,你不管谁管?于是他给我发来消息,意思就是管也得管,不管也得管,您看着办。 我 拿到问题一看,不难。Linux 和 OS X 虽然师出同门,都是从老前辈 Unix 那儿毕业的,但是后来毕竟各练各的,在 Linux 编译好的程序不可能在 OS X 上用,但是在 OS X 上重新编译一下可能就没事了。我把这个想法告诉了这位程序员,得到的反馈是:对不起哥,没有源代码! 我被这个冷酷的回复震惊了,立刻意识到 刚才的想法并不是最优解决方案,因为在重新编译的过程中,各种包的依赖关系和编译错误足以让你焦头烂额,我随即提供了 B 计划:在 OS X 上安装 Docker,轻量级的容器 Docker 可以运行各种版本的 Linux,把文件扔到 Docker 里,然后通过主机和 Docker 之间的端口映射即可轻松解决这一问题。 虽然这里面会涉及很多技术细节,但是方向是没有问题的,所以这位程序员立刻表示「茅塞顿开」,然后「biu 」的一声就在屏幕对面消失了,没有留给我说「不客气」的机会。 这个问题装个 Linux 虚拟机也可以解决,但是虚拟机过于耗费资源,而且不如 Docker 灵活,所以不是最佳解决方案。Docker 是。 做 为一个程序员,我们除了要掌握多门程序语言和多种数据库,了解前端技术、后端技术,通晓网络七层架构,知道 TCP/IP三次握手和四次挥手,编写漂亮的代码,设计优美的架构……之外,我们还要解决研发、程序运行和产品上线过程中遇到的各种问题,而且被要求以最 小的代价来解决问题……我们容易吗? […]
View Details25 个响应式的 jQuery 导航菜单插件
2014年11月23日源创会年度盛典(北京站)正在报名 每次发这类文章时,用户集中反馈的问题包括: 好像以前发过 —— 答:标题类似,内容不同 怎么只有名称和图片,没有介绍 —— 答:介绍千篇一律,没什么特别的,图片更加直接,当然了最主要是为了偷懒,哈哈 怎么那么多前端的内容? —— 答:多不好吗? 1. MenuItems 2. Sidr 3. Material Menu 4. Responsive Tabbed Navigation 5. PGW Menu 6. jQuery Slimmenu 7. jQuery Sliding Menu 8. Responsive Tabs 9. Mmenu 10. Flex Nav 11. Responsive Full Width Tabs 12. Fixed Nav 13. Daisy Nav 14. Navgoco 15. Naver 16. Smart Menus 17. jQuery Fluid Content Scroller 18. Menu-aim 19. HorizontalNav 20. SlickNav 21. TinyNav.js 22. Menutron 23. Flaunt.js 24. jPanel Menu 25. Repsonsive Toggle Menu via codegeekz from:http://www.oschina.net/news/56988/responsive-jquery-navigation-plugins
View Details为你下一个项目准备的 50 个 Bootstrap 插件
Bootstrap是快速开发Web应用程序的前端工具包。它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等。 本文向你推荐 50 个 Bootstrap 的插件,可以考虑在你下一个项目中使用它们。 1. Bootstrap Multiselect 2. Bootstrap Dialog 3. Bootstrap Confirmation 4. Bootstrap Tag Input 5. Bootstrap File Input 6. Bootstrap WYSIWYG 7. Bootstrap Select 8. pNotify Pines Notify 是一个 JavaScript 的消息提醒插件,基于 Bootstrap 框架和 jQuery UI 框架。 9. Bootstrap Forms Helper 10. Pongstagr.am 11. X-editables X-editable 基于 Bootstrap、jQuery UI 和 jQuery 实现了网页文本即时编辑的功能。支持包括文本框、textarea、下拉列表、日期选择等。支持 IE7+ 和其他浏览器。 12. Bootstrap Lightbox Plugin 13. Editable Table 14. Timepicker 15. ClockPicker 16. Bootstrap Video Player 17. Bootstrap Progressbar 18. jQuery Sortable 19. Bootstrap Star Rating 20. Bootstrap Growl 21. Feedback […]
View Details利用mysql的binlog恢复数据
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库。用于slave端执行增删改,保持与master同步。 1.开启binary log功能 需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可 eg: [mysqld] …… log_bin = mysql_bin …… log_bin是生成的bin-log的文件名,后缀则是6位数字的编码,从000001开始,按照上面的配置,生成的文件则为: mysql_bin.000001 mysql_bin.000002 …… 配置保存以后重启mysql的服务器,用show variables like '%bin%’查看bin-log是否开启,如图: 2.查看产生的binary log bin-log因为是二进制文件,不能通过记事本等编辑器直接打开查看,mysql提供两种方式查看方式,在介绍之前,我们先对数据库进行一下增删改的操作,否则log里边数据有点空。 create table bin( id int(10) primary key auto_increment,name varchar(255));(测试前我已经建表) insert into bin(name) values ('orange'); 1.在客户端中使用 show binlog events in 'mysql_bin.000001' 语句进行查看,为了排序美观,可以在结尾加\G使结果横变纵,此时结尾无需加;语句结束符。 eg: mysql> show binlog events in 'mysql_bin.000001’\G ……………省略…………… *************************** 3. row *************************** Log_name: mysql_bin.000001 Pos: 174 Event_type: Intvar Server_id: 1 End_log_pos: 202 Info: INSERT_ID=2 *************************** 4. row *************************** Log_name: mysql_bin.000001 Pos: 202 Event_type: Query […]
View Detailsbinlog文件分析与mysqlbinlog工具的修改
问题 本文主要带着以下问题进行学习: 1、什么是binlog,有什么作用 2、binlog有哪些格式 3、分析一条典型binlog ,说明从binlog中可以得到哪些信息 4、如何修改mysqlbinlog,使得可以显示最后一条记录 这里主要考虑binlog的使用及相关格式,而不是关注binlog的写入时机。 一、简介 binlog又叫二进制日志文件,它会将mysql中所有修改数据库数据的Query以二进制的形式记录到日志文件中,如:create,insert,drop,update等;(对于select操作则不会被记录到binlog里,因为它并没有修改数据库的数据)。binlog一般存储在数据目录下,并且命名为:mysql-bin.***(这个可以在配置文件中修改my.cnf:log-bin=mysql-bin,就是文件名的前缀;mysqld在每个 binlog 名后面添加一个数字扩展名。每次启动服务器或刷新日志时增加文件的大小大于max_binlog_size,一个事务不会被拆分开)。 binlog主要是用于保证数据完整的,如主从备份,通过从binlog文件中读取操作来在salve机上进行同样的操作,保证主从备份,当然不可能每次都从开始的地方redo,所以每条记录都有一个时间截TIMESTAMP。 二、简单的使用binlog show binary logs; #显示binlog文件 purge binary logsto 'mysql-bin.**' #删除到**文件 bin/mysqlbinlog binlogfile #解析binlog文件 利用binlog恢复数据: bin/mysqlbinlog --start-datetime=’2011-7-7 18:0:0′--stop-datetime=’2011-7-7 20:07:13′ data/mysql-bin.000008 |mysql -u root 三、类型 binlog的格式有三种,这也反应了mysql的复制技术:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。 mysql>showvariables like 'binlog_format' #查看binlog的格式 使用mysqlbinlog解析的binlog: MIXED(STATEMENT): # at 193(开始位置) #110708 10:03:06(时间截) server id(产生该事件的服务id) 1 end_log_pos(日志的结束位置) 280 Query(事件类型) thread_id=10 exec_time=0 error_code=0 SETTIMESTAMP=1310090586/*!*/; insert into tvalues(17) /*!*/; ROW模式: BEGIN /*!*/; # at 174 # at 214 #110708 10:49:22server id 1 end_log_pos 214 Table_map: […]
View Details