web的调试一直采用的是火狐firebug的调试,现在火狐越来越臃肿.现在在领导的启发下,平常都用chrome dev tools调试的,也是挺方便,转载下chrome的调试技巧做下记录.Google Chrome在招来了FireFox,FireBug的项目组领导人John J. Barton后,Chrome Dev Tools也变的越来越好用,越来越方便了。本文根据Google I/O上对Chrome Dev Tools的介绍(http://www.youtube.com/watch?v=N8SS-rUEZPg),和相关PPT:http://chrome-devtools-io2011.appspot.com/template/index.html 整理而来。(参照的Chrome版本为: 19.0.1084.52)实时****CSS Style编辑选择一个Dom,可以对Dom进行编辑和操作,实时修改Css Style, 同时CssStyle可以保存变更历史版本。保存变更历史版本:同时支持可以在Chrome 载入的Css文件正文中自由的修改。 网络交互当一个页面载入时,所有发出的请求可以在“Network”里监听到,同时下面有”All”, “Documents”, ”Stylesheets”, “Images”, “Scripts”, “XHR”(XMLHttpRequst), WebSockets, Other, 这几个分类,可以清晰的把网络请求进行分类,同时可以看到每个请求的详细情况。 控制台在控制台里可以方便的使用命令来查看Dom,执行JavaScript, 等等操作, Console API: http://getfirebug.com/wiki/index.php/Command_Line_API copy(), dir(), inspect(), $0, Script DebuggingScript Debugging 脚本调试功能,这个功能可以说是Chrome Dev Tools里最实用最强大的工具了:1. JavaScript Breakpoints, Break on exception, JavaScript Pretty Print.Break Points:断点在需要设置的地方点一下即可,Break on exception:当此功能开启时,有Script异常出现时,自动会在Exception处断住,方便差错。JavaScript Pretty Print: 当JavaScript被压缩后,非常难阅读,Pretty Print使JavaScript按照语法和关键字重新换行并重排,使得压缩后的JavaScript仍然可以进行阅读。 2. DOM BreakpointsDom元素断点,经常有多处JavaScript操作同一个Dom元素,如果要在JavaScript上下断点,要下好几个地方,不好断到想要的地方,在Dom元素上下断点就方便多了:Break on subtree modifications, Break on attributes modifications, Break on node removal, 可以方便的断到操作Dom的JavaScript。 3. XHR Breakpoints, Event listener breakpoints:XHR Breakpoints,可以方便的断到XMLHttpRequest Ajax请求。Event Listener Breakpoints, 可以方便的断到各种Event。 4. 查找JavaScript使用Ctrl+Shift+F, 打开查找窗口, 查找支持正则表达式:查找函数定义:Ctrl + Shift + o查找文件: Ctrl + o 5. 实时修改 JavaScript代码页面外链JavaScript文件在 Script Panel中可以直接修改,改完后Ctrl + s 保存, 会立即生效,但是不支持 Html 页面中 JavaScript 修改,经过 Pretty print 格式化的JavaScript也不支持实时修改。 6. 自建Script文件在Console(控制台) 中输入代码的最后一行加上 //@ sourceURL=filename.js, 会在Script Panel中加入一个新的外链Script文件: filename.js, 这个新文件和其它外链JavaScript 文件一样,可以实时进行修改。 TimelineTimeline功能把浏览器处理Dom的时间轴画了出来,方便进行优化: Remote DebuggingRemote Debugging 使得Chrome成为一个WebServer,执行命令–remote-debugging-port=1337, 同时再开一个Chrome 访问localhost:1337, 就可以用一个Chrome当Host,一个Chrome当Client,在调试一些移动Web的时候非常实用。
业务场景:例如用户表,我们需要建一个字段是创建时间, 一个字段是更新时间.解决办法可以是指定插入时间,也可以使用数据库的默认时间.在mysql中如果设置两个默认CURRENT_TIMESTAMP,会出现这样的错误. ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause.错误的建表语句: CREATE TABLE db1.sms_queue ( Id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Message VARCHAR(160) NOT NULL DEFAULT ‘Unknown Message Error’, CurrentState VARCHAR(10) NOT NULL DEFAULT ‘None’, Phone VARCHAR(14) DEFAULT NULL, Created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, LastUpdated TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, TriesLeft tinyint NOT NULL DEFAULT 3, PRIMARY KEY (Id) ) ENGINE = InnoDB;解决办法,可以使用触发器或者其他,在此还是使用数据库的方式.建表语句: create table test_table( id integer not null auto_increment primary key, stamp_created timestamp default ‘0000-00-00 00:00:00’, stamp_updated timestamp default now() on update now() );测试:mysql> insert into test_table(stamp_created, stamp_updated) values(null, null);Query OK, 1 row affected (0.06 sec)mysql> select * from t5;+----+---------------------+---------------------+ | id | stamp_created | stamp_updated |+----+---------------------+---------------------+| 2 | 2009-04-30 09:44:35 | 2009-04-30 09:44:35 |+----+---------------------+---------------------+2 rows in set (0.00 sec)mysql> update test_table set…
一直对bootstrap框架有些着迷,想去学习一把,今天有些时间,花了一整天的时间,一边看文档,一边做主题,基本完成了这款基于bootstrap框架的wordpress主题pme-wp。pme是根据域名得来的,所以主题名字就是pme-wp.目前主题也仅仅满足简单使用,其中包含的很多bug,以后慢慢修正了。下载地址:http://www.everbox.com/f/wzTPkoagufPh9pAY62esryMkAC
一直比较喜欢世界之窗的皮肤,现在虽然转移使用了谷歌浏览器,但还保留着世界之窗的皮肤,作为纪念,也希望世界之窗浏览器能继续发展下去。下载:http://www.everbox.com/f/ooqnonGNa4vTLAjOJhI1CDzbsT目前网盘使用的盛大的;115的很好用,缺点是有时间限制。dbank的广告多的一大堆,更多时候还需要登陆,才能下载。新浪的v盘,也是需要登陆才可以下载的。百度网盘不能指定单一文件共享,暂时还是盛大的everbox好用一些。
Notepad++是我电脑必备经常使用的软件,在新版中还加入了Document Map功能,就是文档的缩略图,以后做跳转方面的多了,和sublimetext一样,最近也在研究sublimetext的使用。Notepad++ 6 发布了,可通过下面地址下载:http://notepad-plus-plus.org/download/v6.0.html在 6 版本中,主要包含如下改进:支持 PCRE (Perl Compatible Regular Expressions)2. 添加文档映射特性 (通过 Menu View->Document Map): Screenshot 1, Screenshot 2改善大文件的加载性能Notepad++ 是一款非常有特色的编辑器,是开源软件,可以免费使用。支持的语言: C, C++ , Java , C#, XML, HTML, PHP, Javascript!
wordpress的插件多如牛毛,总有几款差距是必备的,比如下面推荐三款。Super Switch(超级开关)可以有选择地禁用Wordpress部分功能,或许可以使博客更快。WP Cleaner删除无用的修订版、自动草稿及自动保存的文章,减小空间,提高性能。有了上面的超级开关插件,WP Cleaner基本使用一次就足够了。**P3(Plugin Performance Profiler) **插件是由Godaddy发布的,它可以让你知道这些插件对你的网站速度有多大的影响.从而可以让你详细了解哪些插件占用资源最多,权衡利弊,有选择性地启用插件。插件只能运行在Firefox、Chrome、 Opera、 Safari、IE9中,不支持IE8或更低版本。
代码的使用性很强的啊! 让我们看看如何使用JDBC API在Java中执行批量插入。虽然你可能已经知道,但我会尽力解释基础到复杂的场景。在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据。此外,我们将努力探索一些场景,如在内存不足时正常运行,以及如何优化批量操作。首先,使用Java JDBC基本的API批量插入数据到数据库中。Simple Batch - 简单批处理我把它叫做简单批处理。要求很简单,执行批量插入列表,而不是为每个INSERT语句每次提交数据库,我们将使用JDBC批处理操作和优化性能。想想一下下面的代码:Bad Code[java]String [] queries = { insert into employee (name, city, phone) values ('A', 'X', '123'), insert into employee (name, city, phone) values ('B', 'Y', '234'), insert into employee (name, city, phone) values ('C', 'Z', '345'), }; Connection connection = new getConnection(); Statement statemenet = connection.createStatement(); for (String query : queries) { statemenet.execute(query); } statemenet.close(); connection.close(); [/java]这是糟糕的代码。它单独执行每个查询,每个INSERT语句的都提交一次数据库。考虑一下,如果你要插入1000条记录呢?这是不是一个好主意。 下面是执行批量插入的基本代码。来看看:Good Code[java] Connection connection = new getConnection(); Statement statemenet = connection.createStatement(); for (String query : queries) { statemenet.addBatch(query); } statemenet.executeBatch(); statemenet.close(); connection.close();[/java]请注意我们如何使用addBatch()方法,而不是直接执行查询。然后,加入所有的查询,我们使用statement.executeBatch()方法一次执行他们。没有什么花哨,只是一个简单的批量插入。 请注意,我们已经从一个String数组构建了查询。现在,你可能会想,使其动态化。例如:[java] import java.sql.Connection; import java.sql.Statement; //... Connection connection = new getConnection(); Statement statemenet = connection.createStatement(); for (Employee employee: employees) { String query = "insert into employee (name, city) values(' + employee.getName() + ',' + employee.getCity + '); statemenet.addBatch(query); } statemenet.executeBatch(); statemenet.close(); connection.close();[/java]请注意我们是如何从Employee对象中的数据动态创建查询并在批处理中添加,插入一气呵成。完美!是不是?等等……你必须思考什么关于SQL注入?这样动态创建的查询SQL注入是很容易的。并且每个插入查询每次都被编译。 为什么不使用PreparedStatement而不是简单的声明。是的,这是个解决方案。下面是SQL注入安全批处理。SQL Injection Safe Batch - SQL注入安全批处理思考一下下面代码:[java] import java.sql.Connection;import java.sql.PreparedStatement;//...String sql = "insert into employee (name, city, phone) values (?, ?, ?);;Connection connection = new getConnection();PreparedStatement…
在风向吧看到360安全浏览器5beta2的版本中加入的身份认证,也去体验了一把,被流氓的给了一个未知的身份。你一个做浏览器的,做安全的,好好做你的浏览器,做你的安全,你凭什么要对我们这些博主站长的站点做认证呢?就像风向吧靖说的,这是一种越界的强制认证行为。现在,大鹏的后院也加入了不兼容360安全浏览器的代码。js代码<script>function no360(){alert('系统检测出来你使用了360安全浏览器,请先卸载360产品后改用Chrome或firefox等再行访问本站,谢谢合作!');document.execCommand("stop");location.href="http://fengxiangba.com/no360.html";//注:将上面的//去掉,把后面的网址改成你的网站,弹出窗口后就会跳到你指定的网址}var f=false;if(navigator.userAgent.toLowerCase().indexOf("360se")>-1){f=true;}try{if(window.external&&window.external.twGetRunPath){var r=external.twGetRunPath();if(r&&r.toLowerCase().indexOf("360se")>-1){f=true;}}}catch(ign){f=false;}f&&(no360());</script>.htaccess屏蔽代码RewriteCond %{HTTP_USER_AGENT} 360SE [NC] RewriteCond %{HTTP_HOST} =www.bstaint.net RewriteRule ^(.*)$ http://labs.bstaint.net/break.html [L,R]php屏蔽代码<?php $str=$_SERVER['HTTP_USER_AGENT']; if(stripos($str, "360SE") > 0): header('Location: http://labs.bstaint.net/break.html'); endif; ?>代码提供:http://fengxiangba.com/is-not-compatible-with-the-code-of-360-secure-browser.html另外一篇关于360浏览器认证的文章360浏览器要认证谁
Anytodo 是一款chrome浏览器的插件,可以与google task进行同步,进行任务管理。我的手机是安装的gtasks的免费版本,是足够使用的了,Anytodo的使用,也弥补了google task没有桌面的管理的空缺,推荐使用。Anytodo是一个基于html5的离线便签应用,可方便的与Google Tasks进行同步,主要功能包括:1. 双击空白处快速添加便签;2. 双击便签简单编辑内容;3. 点击编辑按钮,支持富文本编辑;4. 更换便签颜色;5. 拖动改变位置和大小;6. 更换主题;7. 离线访问;8. 后台同步;9. 定时提醒;Anytodo目前最新版本为1.1.1,更新内容如下:1. 添加了处理时间的同步;2. 修正了富文本编辑后,提醒和日期显示错误;3. 修复了同步中的一些问题,提高了同步效率;项目地址:http://code.google.com/p/any-todo/下载插件:Anytodo-1.1.1.crx 1.5 MB2012-03-26 17:39 更新Anytodo 1.1.2,可以从Chrome App Store现在安装了:安装地址:https://chrome.google.com/webstore/detail/maidakogkfgehlikodkefhfefnmfaiig