分类目录归档:程序生活

Program Life – Web

(转自校内)网上订火车票的方法(Firefox+Firebug)

 

图1:注意左下角 系统时间 以及画面中间的 支付倒计时(我应该是在放票后15秒内买到的)

图2:后面嘛,只要能正常登陆和支付就行了

下面说方法,大概的步骤如下:

1)提前十五分钟(8点放票,我是7点半登的系统),用Firefox(8.01)打开页面:https://dynamic.12306.cn/otsweb/order/querySingleAction.do?method=init。

2)提前十分钟,查询能够进入预订页面(预订按钮为激活状态)的同类车次,进入该页面。比如,我想订的是14号T9的硬卧(这个时候还没放出来),但我知道12号的硬座还有票,那么我直接查询12号T9。

3)提前五分钟,用Firebug改好相应的参数,这步非常重要。

A)修改席别

右键单击 席别 下面的下拉列表,选择 审查元素

修改 硬座 对应项的值,即将 Value 改为3(3对应的是硬卧)。

B)修改日期

 在之前动态修改的 HTML 代码之上,找到 id 为 start_date 的 INPUT 标记(默认为隐藏),将日期修改为想要预定的时间。

4)提前一分钟,单击(刷新)验证码并填好(注意是只刷新验证码)。

5)提前几秒钟,单击 提交订单 按钮

 

最后补充几个注意事项:

1)确保网速够快

2)确保迅速完成修改参数步骤(最好提前演练几次)

3)提前在IE-32bit上登陆系统,以确保及时完成支付

 

另外,本人也尝试过电话预定,都以悲剧告终了。总结一下电话预定有两个劣势:

1)关键时刻(6点左右和8点左右)系统提示忙音,这种情况对于抢购为数不多的火车票的人来说简直就是灾难。

2)订票延迟较大,中间有10次以上的按键操作,即使你在选择席别的环节下获知存在硬卧火车票,等你选好其他选项时,票已经被抢没了

jQuery Mobile使用指南-触摸选择的表单元素

 

触摸选择的表单元素

jQuery Mobile会自动替换标准的HTML表单元素,例如文本框,复选框,列表框。以这种自定义的样式工作在触摸设备上的表单元素,易用性更强。

例如,复选框将会变得很大,易于点选。点击下拉列表时,将会弹出一组大按钮列表选项,提供给用户选择。

该框架支持新的HTML5元素,例如search和range。另外你可以利用列表框并添加data-role=”slider”并添加两个option选项,创建不错的”打开/关闭”开关,

另外一个不错的特点是组合单选框和组合复选框,可以利用fieldset元素添加属性data-role=”controlgroup”来创建一组单选按钮或复选框,jQuery Mobile自动格式化他们的格式。使它们看上去更fashion!

一般来说,开发者不需要关心表单的那些高级特性,开发者仅需要以正常的方式创建你的表单,jQuery Mobile框架会帮你完成剩余的工作。另外有一件事情需要开发人员来完成,即使用div或fieldset 属性data-role=”fieldcontain”包装每一个label/field。这样jQuery Mobile会在label/field对之间添加一个水平分割条。这样的对齐方式可以使其更容易查找。

下面是一个jQuery Mobile版的表单元素


  1. <!DOCTYPE html> 
  2. <html> 
  3.   <head> 
  4.   <title>jQuery Mobile Form Demo</title> 
  5.   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"  /> 
  6.   <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script> 
  7.   <script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script> 
  8. </head> 
  9. <body> 
  10.   
  11. <div data-role="page" id="home"> 
  12.   
  13.   <div data-role="header"> 
  14.     <h1>Ice Cream Order Form</h1> 
  15.   </div> 
  16.   
  17.   <div data-role="content"> 
  18.     <form action="#" method="get"> 
  19.     
  20.      <div data-role="fieldcontain"> 
  21.        <label for="name">Your Name:</label> 
  22.        <input type="text" name="name" id="name" value=""   /> 
  23.      </div> 
  24.      
  25.      <div data-role="controlgroup"> 
  26.        <legend>Which flavour(s) would you like?</legend> 
  27.        
  28.        <input type="checkbox" name="vanilla" id="vanilla" class="custom"  /> 
  29.        <label for="vanilla">Vanilla</label> 
  30.        
  31.        <input type="checkbox" name="chocolate" id="chocolate" class="custom"  /> 
  32.        <label for="chocolate">Chocolate</label> 
  33.        
  34.        <input type="checkbox" name="strawberry" id="strawberry" class="custom"  /> 
  35.        <label for="strawberry">Strawberry</label> 
  36.        
  37.      </div>    
  38.      
  39.      <div data-role="fieldcontain"> 
  40.        <label for="quantity">Number of Cones:</label> 
  41.        <input type="range" name="quantity" id="quantity" value="1" min="1" max="10"   /> 
  42.      </div> 
  43.   
  44.      <div data-role="fieldcontain"> 
  45.        <label for="sprinkles">Sprinkles:</label> 
  46.         <select name="sprinkles" id="sprinkles" data-role="slider"> 
  47.           <option value="off">No</option> 
  48.           <option value="on">Yes</option> 
  49.         </select> 
  50.      </div> 
  51.   
  52.      <div data-role="fieldcontain"> 
  53.        <label for="store">Collect from Store:</label> 
  54.         <select name="store" id="store"> 
  55.           <option value="mainStreet">Main Street</option> 
  56.           <option value="libertyAvenue">Liberty Avenue</option> 
  57.           <option value="circleSquare">Circle Square</option> 
  58.           <option value="angelRoad">Angel Road</option> 
  59.         </select> 
  60.      </div> 
  61.      
  62.     <div class="ui-body ui-body-b"> 
  63.       <fieldset class="ui-grid-a"> 
  64.         <div class="ui-block-a"><button type="submit" data-theme="d">Cancel</button></div> 
  65.         <div class="ui-block-b"><button type="submit" data-theme="a">Order Ice Cream</button></div>     
  66.       </fieldset> 
  67.     </div> 
  68.      
  69.   </div> 
  70.   
  71. </div> 
  72.   
  73. </body> 
  74. </html> 

列表视图

列表视图是jQuery Mobile中功能强大的一个特性。它会使标准的无序或有序列表应用更广泛。应用方法就是在ul或ol标签中添加data-role=”listview”属性。

下面的一些情景将会用到创建列表视图

简单的文件列表项

◆简单的文件列表,会有一个好看的盒环绕着每一个列表项

◆链接列表,框架会自动为每一个链接加一个箭头”>”,显示在链接按钮的右侧

◆嵌套列表,如果你在一个li中嵌套另一个ul,jQuery Mobile会为这个嵌套列表自动建立一个”page”,并为它的父li自动加一个链接,这样很容易实现树状菜单选项,设置功能等等。

◆分隔线的按钮列表,在一个li中存放2个链接,你可以建立一个还垂直分隔条,用户可点击左侧或右侧的列表选项,展现不同的内容

◆记数气泡 如果你在列表选项中添加class=”ui-li-count”,框架会在其中生成一个”小泡泡”图标显现于列表选项的右侧,并在”小泡泡”中显示一些内容。类似在收信箱中看到已经收到的信息条数

◆查找过滤 在ul或ol中添加data-filter=”true”属性。则这个列表项就具备的查询的功能。”Filter result…”文本框将会显示在列表项的上面,允许用户根据条件来将一个大的列表项变小(过滤显示)

◆列表分隔 将列表项分割,可以在任意列表项上添加属性data-role=”list-divider

◆列表缩略图和图标。将img元素放在在列表项的开始, jQuery Mobile将会以缩略图的形式来展现,图片的大小为80 X 80像素。如果添加class=”ui-li-icon”类样式img元素的大小将会以16 X 16像素的图标

以下是一个列表项的实例


  1. <!DOCTYPE html> 
  2. <html> 
  3.   <head> 
  4.   <title>jQuery Mobile Lists Demo</title> 
  5.   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"  /> 
  6.   <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script> 
  7.   <script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script> 
  8. </head> 
  9. <body> 
  10.   
  11. <div data-role="page" id="home"> 
  12.   
  13.   <div data-role="header"> 
  14.     <h1>Lists Demo</h1> 
  15.   </div> 
  16.   
  17.   <div data-role="content"> 
  18.   
  19.     <h2 style="padding: 1em 0;">A list view</h2> 
  20.   
  21.     <ul data-role="listview" data-inset="true"> 
  22.       <li>Cat</li> 
  23.       <li>Dog</li> 
  24.       <li>Mouse</li> 
  25.       <li>Squirrel</li> 
  26.     </ul> 
  27.     
  28.     <h2 style="padding: 1em 0;">A list of links</h2> 
  29.   
  30.     <ul data-role="listview" data-inset="true"> 
  31.       <li><a href="#">About this app</a></li> 
  32.       <li><a href="#">Buy ice cream</a></li> 
  33.       <li><a href="#">Find a store</a></li> 
  34.     </ul> 
  35.   
  36.     <h2 style="padding: 1em 0;">Nested lists</h2> 
  37.   
  38.     <ul data-role="listview" data-inset="true"> 
  39.       <li>Play 
  40.         <ul> 
  41.           <li><a href="#">Easy</a></li> 
  42.           <li><a href="#">Medium</a></li> 
  43.           <li><a href="#">Hard</a></li> 
  44.         </ul> 
  45.       </li> 
  46.       <li>Settings 
  47.         <ul> 
  48.           <li><a href="#">Graphics</a></li> 
  49.           <li><a href="#">Sound</a></li> 
  50.           <li><a href="#">Device</a></li> 
  51.         </ul> 
  52.       </li> 
  53.       <li>Highscores 
  54.         <ul> 
  55.           <li><a href="#">View</a></li> 
  56.           <li><a href="#">Submit</a></li> 
  57.           <li><a href="#">Reset</a></li> 
  58.         </ul> 
  59.       </li> 
  60.     </ul> 
  61.   
  62.     <h2 style="padding: 1em 0;">A split button list with filter</h2> 
  63.   
  64.     <ul data-role="listview" data-inset="true" data-filter="true"> 
  65.       <li> 
  66.         <a href="#">The Grapes of Wrath</a> 
  67.         <a href="#">Buy This Book</a> 
  68.       </li> 
  69.       <li> 
  70.         <a href="#">The Trial</a> 
  71.         <a href="#">Buy This Book</a> 
  72.       </li> 
  73.       <li> 
  74.         <a href="#">A Tale of Two Cities</a> 
  75.         <a href="#">Buy This Book</a> 
  76.       </li>      
  77.     </ul> 
  78.   
  79.     <h2 style="padding: 1em 0;">A list with count bubbles</h2> 
  80.   
  81.     <ul data-role="listview" data-inset="true"> 
  82.       <li><a href="#">SuperWidgets</a> <span class="ui-li-count">14</span></li> 
  83.       <li><a href="#">MegaWidgets</a> <span class="ui-li-count">0</span></li> 
  84.       <li><a href="#">WonderWidgets</a> <span class="ui-li-count">327</span></li>      
  85.     </ul> 
  86.     
  87.   </div> 
  88.   
  89. </div> 
  90.   
  91. </body> 
  92. </html> 

data-inset=”true”将格式化列表块为圆角化,如果你使用这种样式的话,列表条目的宽度拉伸成与浏览器窗口的宽度一致

主题

jQuery Mobile渲染的灰色、黑色和蓝色及圆形的组件使其看起来很漂亮,但是如果你的整个应用都使用这样的样式,将会使其变得很乏味。jQuery Mobile允许你自定义官方一些组件的主题。例如:

◆Font family

◆Drop shadows

◆按钮和盒状元素的边框圆角半径

◆图标组件

另外,每一个主题包含26种不同颜色的切换(标记从a 到z),可以控制前景颜色,背景色和渐变色,典型用法是使页面元素部分替换,你可以使用data-theme属性。例如:


  1. <!DOCTYPE html> 
  2. <html> 
  3.   <head> 
  4.   <title>Page Title</title> 
  5.   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"  /> 
  6.   <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script> 
  7.   <script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script> 
  8. </head> 
  9. <body> 
  10.   
  11. <div data-role="page" id="home"> 
  12.   
  13.   <div data-role="header"> 
  14.     <h1>Home</h1> 
  15.   </div> 
  16.   
  17.   <div data-role="content"> 
  18.     <a href="#" data-role="button" data-theme="a">About this app</a> 
  19.     <a href="#" data-role="button" data-theme="b">About this app</a> 
  20.     <a href="#" data-role="button" data-theme="c">About this app</a> 
  21.     <a href="#" data-role="button" data-theme="d">About this app</a> 
  22.     <a href="#" data-role="button" data-theme="e">About this app</a> 
  23.   </div> 
  24.   
  25. </div> 
  26.   
  27. </body> 
  28. </html> 

事件

框架还提供了简单的用户接口,并添加了移动设备支持的特殊事件。


  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <title>jQuery Mobile Events</title> 
  5. <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"  /> 
  6. <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script> 
  7. <script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script> 
  8. <script type="text/javascript"> 
  9.   
  10. $( function() { 
  11.   
  12.   $('body').bind( 'taphold', function( e ) { 
  13.     alert( 'You tapped and held!' ); 
  14.     e.stopImmediatePropagation(); 
  15.     return false; 
  16.   } );  
  17.   
  18.   $('body').bind( 'swipe', function( e ) { 
  19.     alert( 'You swiped!' ); 
  20.     e.stopImmediatePropagation(); 
  21.     return false; 
  22.   } );  
  23.   
  24. } ); 
  25.   
  26. </script>  
  27.   
  28. </head> 
  29.   
  30. <body> 
  31.   
  32. <div data-role="page" id="home"> 
  33.   
  34.   <div data-role="header"> 
  35.     <h1>jQuery Mobile Events</h1> 
  36.   </div> 
  37.   
  38.   <div data-role="content"> 
  39.     <p>Try:</p> 
  40.     <ul> 
  41.       <li>Tapping and holding</li> 
  42.       <li>Swiping</li> 
  43.     </ul> 
  44.   </div> 
  45.   
  46. </div> 
  47.   
  48. </body> 
  49. </html> 

 

【编辑推荐】

jQuery Mobile使用指南-页面切换效果

 

你可以使用多种不同的切换效果来显示新页面内容,只需要在链接里添加data-transition属性即可。可能的值如下

页面切换效果

例如


  1. <p><a href=”#about” data-transition=”flip”>关于页面</a></p> 

在浏览器中查看效果

注意:查看以上的效果需要您的浏览器支持jQuery Mobile。例如:Mobile Safari, DeskTop Safari,或Chrome。

对话框

通过在链接中添加data-rel=”dialog”的属性,可以使链接页面的显示方式变为对话框。给显示的对话框加入切换的效果也是一个不错的选择

例如我们将about的链接变成一个对话框并加入相应的切换效果。代码如下


  1. <p><a href="#about" data-rel="dialog" data-transition="slideup">About this app</a></p>    

注意:目前的测试版本存在问题,当在一个页面中写多个”page”时在以dialog的方式打开一个页面时,不会出现对话框效果

按钮

按钮是触摸式应用程序的一部分,它们扮演链接的功能,因为它们提供了更大的目标,当你点击链接的时候(比较适合,手指比较胖的人群)

在jQuery Mobile中把一个链接变成button的效果,只需要在标签中添加data-role=”button属性即可”。例如:


  1. <div data-role="content"> 
  2.     <p><a href="#about" data-role="button">About this app</a></p>    
  3.   </div> 
  4.   
  5. … 
  6.   
  7.   <div data-role="content"> 
  8.     <p>This app rocks!</p> 
  9.     <a href="#home" data-role="button">Go home</a> 
  10.   </div> 

另外jQuery Mobile也会自动的转换像表单元素中的submit,reset,button,或image为按钮样式。

还可以利用data-icon属性建立各式各样的按钮,建立行内按钮和按钮组(水平或垂直的)

格式化文本

为了使其尽可能的灵活,jQuery Mobile使更多的普通HTML内容更加独立。加入适当的缩进使内容的可读性更强。

有两种布局方法使其格式化变得更简单:布局表格和可折叠的内容块

◆布局表格:组织内容以列的形式显示,有两列表格,和三列表格

◆可折叠的内容:当点击内容块的标题,则会将其隐藏的详细内容展现出来

下面是一个可折叠内容的实例,单击标题将看到具体的内容,再点击标题则会将展现的内容隐藏。


  1. <!DOCTYPE html> 
  2. <html> 
  3.   <head> 
  4.   <title>Collapsible Content Demo</title> 
  5.   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"  /> 
  6.   <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script> 
  7.   <script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script> 
  8. </head> 
  9. <body> 
  10.   
  11. <div data-role="page" id="home"> 
  12.   
  13.   <div data-role="header"> 
  14.     <h1>Home</h1> 
  15.   </div> 
  16.   
  17.   <div data-role="content"> 
  18.     <div data-role="collapsible" data-state="collapsed"> 
  19.       <h3>About this app</h3> 
  20.       <p>This app rocks!</p> 
  21.     </div> 
  22.   </div> 
  23.   
  24. </div> 
  25.   
  26. </body> 
  27. </html> 

jQuery Mobile使用指南-多个页面在同一个页面中

 

有一种建立在一个 HTML页面基础之上的页面结构,即在一个页面中添加多个data-role=”page”。这意味着浏览器仅仅得到一个页面,就可以实现页面平滑切换的客户体验。参看下面实例:(目前有bug)


  1. <!DOCTYPE html> 
  2. <html> 
  3.   <head> 
  4.   <title>jQuery Mobile: Pages within Pages</title> 
  5.   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"  /> 
  6.   <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script> 
  7.   <script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script> 
  8. </head> 
  9. <body> 
  10.   
  11. <div data-role="page" id="home"> 
  12.   
  13.   <div data-role="header"> 
  14.     <h1>Home</h1> 
  15.   </div> 
  16.   
  17.   <div data-role="content"> 
  18.     <p><a href="#about">About this app</a></p>    
  19.   </div> 
  20.   
  21. </div> 
  22.   
  23. <div data-role="page" id="about"> 
  24.   
  25.   <div data-role="header"> 
  26.     <h1>About This App</h1> 
  27.   </div> 
  28.   
  29.   <div data-role="content"> 
  30.     <p>This app rocks! <a href="#home">Go home</a></p>    
  31.   </div> 
  32.   
  33. </div> 
  34.   
  35. </body> 
  36. </html> 

正如所见,上面的代码中包含了两个”page”:主页(id为home)和”about”(id为about)。从Home链接到About页面采用的是连接地址为#about,about页面返回到首页的链接地址为#home。jQuery Mobile会自动切换链接的目的div显示到移动浏览器中。该框架会隐藏除第一个包含data-role=”page”div以外的其它”page”

AJAX 导航

为了实现在移动设备上的无缝客户体验,jQuery Mobile默认采用AJAX的方式载入一个目的链接页面。因此,当在浏览器中点击一个链接打一个新的页面时,jQuery Mobile接收这个链接,通过AJAX的方式请求链接页面,并把请求得到的内容注入到当前页面的DOM里。另外还需要确保请求的页面url唯一标识的。

这样的结果就是用户交互始终保存在同一个页面中。新页面中的内容也会轻松的显示到这个页面里。这种平滑的客户体验相比于传统打开一个新的页面并等待数秒的方式要好很多。当一个新的页面做为新的data-role=”page” div插入到主页面时,主页面会有效的缓存取到的内容。使得当要访问一个页面时能够尽快的显示出来。这个工作过程听起来难以置信的复杂,但是做为开发人员的我们大部份不需要了解其中工作的具体细节。只要能看到效果就OK。

注意:如果你不想采用AJAX的方式加载页面,而想以原生的页面加载方式打开一个链接页面,只需要在打开的链接上添加属性 rel=”external”属性

jQuery Mobile使用指南-jQuery Msobile 都能做什么?

 

jQuery一直以来都是非常流行的富客户端及Web应用程序开发中使用的JavaScript类库,然而一直以来它都是为桌面浏览器设计的,没有特别为移动应用程序设计。

jQuery Mobile是一个新的项目用来添补在移动设备应用上的缺憾。它是基本jQuery框架并提供了一定范围的用户接口和特性,以便于开发人员在移动应用上使用。使用该框架可以节省大量的js代码开发时间,尽管目前的版本还是不是一个稳定的版本。但它的应用效果已经备受瞩目。

接下来我们将通过实例向大家展示jQuery Mobile的特性及好处,让我们看一下这个新框架是怎么帮助你在短时间内建立起一个高质量的移动应用程序,接下来的代码讲解中的代码最好使用的移动设备平台是IPhone或Android。或者是PC电脑上使用 Safari浏览器调试。

Go on!

jQuery Mobile 都能做什么?

◆jQuery Mobile为开发移动应用程序提代了非常简单的用户接口

◆这种接口的配置是标签驱动的,这意味着我们可以在HTML中建立大量的程序接口而不不需要写一行js代码

◆提供了一些自定义的事件用来探测移动和触摸动作。例如tap(敲击)、tap-and-hold(点击并按住)、swipe、orientation change

◆使用一些加强的功能时需要参照一下设备浏览器支持列表

◆使用预设主题可以轻松定制应用程序外观

jQuery Mobile 基本页面结构

大部分jQuery Mobile Web应用程序都要遵循下面的基本模板

 


  1. <!DOCTYPE html> 
  2. <html> 
  3.   <head> 
  4.   <title>Page Title</title> 
  5.   <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"  /> 
  6.   <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script> 
  7.   <script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script> 
  8. </head> 
  9. <body> 
  10.   
  11. <div data-role="page"> 
  12.   
  13.   <div data-role="header"> 
  14.     <h1>Page Title</h1> 
  15.   </div> 
  16.   
  17.   <div data-role="content"> 
  18.     <p>Page content goes here.</p>    
  19.   </div> 
  20.   
  21.   <div data-role="footer"> 
  22.     <h4>Page Footer</h4> 
  23.   </div> 
  24. </div> 
  25.   
  26. </body> 
  27. </html> 

要使用 jQuery Mobile,首先需要在开发的界面中包含如下3个内容

◆ CSS文件jquery.mobile-1.0a1.min.css

◆ jQuery library jquery-1.4.3.min.js

◆ jQuery Mobile library jquery.mobile-1.0a1.min.js

在上面的页面基本模板中,引入这三个元素采用的是jQuery CDN方式,开发人员也可以下载这些文件及主题到你的服务器上。

我们可以看到页面中的内容都是包装在div标签中并在标签中加入data-role=”page”属性。 这样jQuery Mobile就会知道哪些内容需要处理。

说明:data-属性是HTML5新推出的很有趣的一个特性,它可以让开发人员添加任意属性到html标签中,只要添加的属性名有“data-”前缀。

在”page”div中,还可以包含”header”, ”content”, ”footer”的div元素,这些元素都是可选的,但至少要包含一个 “content”div。

jQuery Mobile 基本页面结构

海蓝密码生成器(浏览器插件版)

最近多个网站造成密码泄露,关键还都是明文泄露,太让人费解了,为了安全,用userscript写了个小脚本,可以为不同的网站生成的不同的密码。可以用在Firefox浏览器和Chrome浏览器上。原理很简单,就是把网站URL+自己好记的一个密码生成一个混淆后的复杂的10位密码,这样做有两个好处,一是保证每个网站的密码都不同,而且较复杂(10位的包含大小写字母以及数字),二是好记忆,只需要一个自己好记的密码即可,甚至可以是汉字。

代码就是JS,都是公开的代码,大家可以自由查看,传播

使用说明:安装好该js插件后,在需要输入密码的地方按Alt+1,可调出插件界面(按Alt+2可隐藏插件界面),如下图所示:

在当前网址栏位自动显示该页面的网址(只显示主域名的网址,后面的参数是去掉的)

在个人密码栏位输入自己好记忆的密码,在生成密码的栏位会自动生成10位的复杂密码,如下图所示:

这是鼠标点击页面需要输入密码的框,然后按Alt+3,则插件会在页面密码框栏位自动填写生成的10位复杂密码,当然,你手工复制粘贴也是可以的,如下图所示(为了演示,我在账号的地方点击鼠标后,按了Alt+3,这样可清晰看到确实把密码自动粘贴到了需要输入的位置):

 

 

混淆的方法如下,主要用了SHA1和Base64

首先将个人输入的密码进行SHA1混淆,混淆后的串叫做A,然后将网站URL+A一起进行SHA1混淆,叫做B,然后把B进行Base64加密,取加密后的前10位,作为生成的密码

安装方法:

1.对于Firefox浏览器,需要安装GreaseMonkey插件(GreaseMonkey的安装地址是:https://addons.mozilla.org/firefox/748/),安装好后,在浏览器打开http://userscripts.org/scripts/show/121388 点击Install 进行安装。

2.对于Chrome浏览器或者360Chrome浏览器,需要安装Tampermonkey插件(Tampermonkey插件的安装地址是https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo),安装好后,在浏览器打开http://userscripts.org/scripts/show/121388 点击Install 进行安装

———————————————-Add 2011.12.31——————————————————–

对于IE浏览器或者其他手机客户端,可以访问在线的JS版本来加密,地址是:http://app.ildsea.com/password.html

轻松解决 Eclipse Indigo 3.7 中文字体偏小,完美 Consolas 微软雅黑混合字体!

 

转自:http://xiaogui.org/eclipse-indigo-3-7-font.html

eclipse是著名的跨平台的自由集成开发环境(IDE)。6月22日Eclipse 3.7 正式发布,代号是 Indigo 。

在 Windows 7 下初始后化,发现界面变化不大,但中文字体却面目全非,小得根本看不见,而且也看起来很不爽。其实这是 Eclipse 的默认字体换了,以前的一直是 Courier New ,这次eclipse用的字体是 Consolas ,这是一个很好的编程字体了,无奈就是中文默认太小了。

于是上网找了 Consolas 和微软雅黑混合字体,完美解决了中文字体小的问题,同时保持了Consolas字体的优雅,效果如下图:

是不是比较满意?哈哈,那就赶紧下载这个混合字体吧。

下载地址:
http://files.xiaogui.org/eclipse-indigo/YaHei.Consolas.1.12.rar

下载好后把 YaHei.Consolas.1.12.ttfw 文件复制到 C:\Windows\Fonts 目录下,这样字体就安装完成,

然后打开 eclipse 的 “preferences” , “General” -> “Appearance” -> “Colors and Fonts” ,打开 “basic” ,双击 “Text Font” ,然后选择字体:”YaHei Consolas Hybrid” ,确定即可。

操作可参考下图:

备注:在上图此处选字体的时候,只需在字体框里面输入字母 “Y”, Eclipse 就会智能的跳转至 “YaHei Consolas Hybrid” 字体。

分享 解密喷射字符“ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้”,教你DIY自己的喷射符

关于这个符号。。ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้。。估 计大家也没少见,第一次见的可能也猛一下不知所以然。其实我也是今天才后知后觉地注意到这个东西,然后就顺便把它解剖了。另外考虑到最初试图用各种关键字 组合向谷歌度娘求教都未果,所以把个人研究过程和成果码出来供大家交流学习。

(注:文中为防止涉及编码被浏览器自动转换为符号,全部采用了全角字符,自行实验时需要用半角。)

 

        1、收到这个字符后我先保存成了Unicode编码的txt文档,无意间瞥见这货大小居然是118字节,瞎了;

        2、直接拷去问谷哥,谷哥表示这货尺寸太长了他受不了,再拿去问度娘,度娘表示她也没那么深不可测;

 

 

 

 

        3、把&#3657写入txt保存成html后用浏览器打开,是一个这个符号:้,当时觉得很纳闷;

        4、换搜搜,有重大发现,那个符号被转成了&#3626;和一连串的&#3657;

 

 

 

 

        5、取一个&#3626;和两个&#3657;组成字串写入txt,保存成html后打开,即出现了一个“ส”头上喷射出两层“波”的符 号:ส้้,删掉一个&#3657,波变成一层了:ส้,后实验表明,&#3626;是ส的编码,&#3626;后面跟几 个&#3657,它就能喷几层波;

        6、接着问谷哥&#3626是神马,谷歌表示这好像是泰文符号,于是真相大体清楚了:ส等是泰文符号,估计是在泰文中会根据种种基于语法等方面的 需求,在这类符号上面加一些东西(可能类似我们的汉语拼音声调),因此采用这种编码识别方式。之于它喷得太远了这个问题,猜是因设计者没考虑限定符号头 上”戴帽子“的数量而延续下来的Bug吧。

 

 

 

 

 

 

 

        7、发散思维,知道了这个原理,通过在txt文本中修改编码和后缀数,也可以DIY中各种各样的喷射符:ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็

 

ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้                      

             อ๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊๊

 

 

转自:http://blog.renren.com/blog/246707530/752191204

程序员装b指南v1.0_110818

v1.1_110818 changes:

1.增加了一些装的技术细节

周五的晚上闲着没事,最近似乎装b指南比较火,我也随便写一个,开心就好。

一.准备工作

“工欲善其事必先利其器。”

1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好。一个用来查资料,一个用来写代码。总之要显得信息量很大,效率很高。

2.椅子不一定要舒服,但是一定要可以半躺着。

3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善。沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子。

4.工具书,orelly的,机械工业,电子工业什么的都可以,能英文就英文,不行影印版的也可以,反正越厚越好,而且千万不要放在书架上,一定要堆在桌上,半打开状。

二.从进门开始

1.着装!着装!不管你是去实验室,或者去公司的大楼,在或者是小公司的民宅,或是自己创业的黑作坊;无论是春夏秋冬白天晚上刮风下雨电闪雷鸣台风 龙卷风,一个装b的程序员都要十分在意自己着装!这里只提出参考建议。初级装:衬衣+牛仔裤+休闲鞋。中级装:T恤+宽松短裤+拖鞋。高级装:背心+宽松 大花裤衩+人字拖。

2.得体的举止。在走廊以及任何形式的过道里,一定要双手插兜,走得像个痞子,至少要看起来有点反社会,如若不行,可走文弱天才型geek路线。。

3.如果有女性在你背后指指点点,小声嘀咕说这一定是一个技术男的时候,应该先低头,然后保持低头状态,缓缓回头,坏坏地蔑笑但是不要出声,然后快步前行。

4.进门后,一定不要跟任何人打招呼,笔直走向自己的位置,最多路过打一杯咖啡,千万不要有多余的动作,显示出自己的专注与心无旁骛。

三.坐下就不要再动了

1.坐下以后,姿势需要略微后仰,能翘着二郎腿最好了,然后在后仰的情况下低着头,以便看到屏幕,然后千万就不要再动了。

2.粗暴地把电脑前的大堆书推开一个口,然后摘下电脑上的一个便签,看一眼,不过3秒,可以开始coding了。

3.能不用IDE就不要用,实在装不了,无论IDE是什么,一定要调成DOS那种黑色背景的。

4.如果写前台界面,就不停地调试后台代码;如果写java,就在里面混编C;如果写C,就在里面混编汇编。不光要coding,还要时不时的翻出一本什么英文的书翻一翻,看不懂就看看插图,然后扔到面前假装懂了继续coding。

5.什么看起来高端就用什么,不要管实用不实用。例如对C++:switch统统重构成多态;如果有指针,统统改成智能的;C++一定要自己写 template;数字是全部要替换成宏的名字能起多长就起多长;struct就不要出现了,如果出现,也一定要用__attriburte__修饰一 下;运算都是位操作的;操作符都是重载的;网络都是并发缓冲线程池的;int只用int32_t声明的;继承不用普通的,什么多继承虚继承 啊;helloworld也要写捕获异常的;后人一看代码,中间一堆关键字 extern,asm,auto,XXXXX_cast,volatile,explicit,register,template,让一般总在敲 int,if,else,for的小程序员顿时心生崇拜。

6.注释?算了吧。只有两个路线可以选:一,变量名起得巨长无比,看代码就和读英文文章一样顺畅,根本不需要加注释。 二,代码无比晦涩,加不加注释根本无影响。

7.千万不要用IM工具交流,千万不要问同事问题,显得自己没有水平,都是自己上网或者查书。

8.无论是同事间开玩笑或者发生任何群体性时间,不要抬头,更不要东张西望,即使地震火灾,也一定要先提交代码再行离开。

四.潇洒地离开

1.人走,主机是千万千万不能关的,至少要跑个daily build,实在不行正在svn提交也勉强算过关。

2.书应该已经又堆到屏幕前了,千万不要整理,明天再来推开。

3.不强求最后一个走,但一定要所有的非程序员,什么市场啊前台啊pm啊都走光了,才可以走。

4.走得时候一定要率性,千万不要收拾任何东西,站起来,出门,好的,就这样。

5.如果今天一定要说句话的话,找到那个最苦逼的程序员,跟他说,你进度太慢了啊,不要老让我等你。

就写这么些吧。

使用chkdsk工具修复移动硬盘方法详解

chkdsk

  

chkdsk的全称是checkdisk,就是磁盘检查的意思,你无法也不必使用该文件,这个东西是当你的系统当掉或者非法关机的时候由系统来调用检查磁 盘的。基于所用的文件系统,创建和显示磁盘的状态报告。Chkdsk 还会列出并纠正磁盘上的错误。如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。

 

  语法

 

  chkdsk [volume:][[Path] FileName] [/f] [/v] [/r] [/x] [/c] [/l[:size]]

 

  参数

 

  volume:

 

  指定驱动器号(冒号分隔)、装入点或卷名。

 

  [Path} FileName]

 

  指定需要 chkdsk 检查碎片整理的文件或文件集的位置和名称。使用通配符(* 和 ?)可以指定多个文件。

 

  /f

 

  修复磁盘上的错误。必须锁定磁盘。如果 chkdsk 无法锁定驱动器,则会显示一条消息,询问您是否希望在下次重新启动计算机时检查该驱动器。

 

  /v

 

  当检查磁盘时,显示所有目录中每个文件的名称。

 

  /r

 

  找到坏扇区并恢复可读取的信息。必须锁定磁盘。

 

  /x

 

  仅在 NTFS 上使用。如果必要,首先强制卸载卷。该驱动器的所有打开句柄都无效。/x 还包含了/f 的功能。

 

  /i

 

  仅随 NTFS 使用。对索引项执行充分检查,降低运行 chkdsk 的所用时间量。

 

  /c

 

  仅随 NTFS 使用。跳过文件夹结构中的周期检查,减少运行 chkdsk 所需的时间量。

 

  /l[:size]

 

  仅随 NTFS 使用。将日志文件的大小更改为由用户输入的大小。如果省略该参数,则 /l 会显示当前日志文件的大小。

 

  /?

 

  在命令提示符显示帮助。

 

  注释

 

  运行 chkdsk

 

  要在固定磁盘上运行 chkdsk 命令,您必须是该 Administrators 组的成员。

 

  重新启动时检查锁定的驱动器

 

  如果希望 chkdsk 修复磁盘错误,则此前不能打开该驱动器上的文件。如果有文件打开,会显示下述错误消息:

 

  Chkdsk cannot run because the volume is in use by another processWould you like to schedule this volume to be checked the next time the system restarts?(Y/N)

 

  如果选择下次重新启动计算机时检查该驱动器,则重新启动计算机后 chkdsk 会自动检查该驱动器并修复错误。如果该驱动器分区为启动分区,则 chkdsk 在检查完该驱动器后会自动重新启动计算机。

 

  报告磁盘错误

 

  chkdsk 命令会检查磁盘空间和文件分配表 (FAT)以及 NTFS 文件系统的使用情况。Chkdsk 在状态报告中提供特定于每个文件系统的信息。状态报告显示文件系统中找到的错误。在活动分区上运行 chkdsk 时,如果未含 /f 命令行选项,则它可能会因为无法锁定该驱动器而报告虚假信息。应该不定期使用 chkdsk 检查每个磁盘上的错误。

 

  修复磁盘错误

 

  只有指定 /f 命令行选项,chkdsk 命令才修复磁盘错误。Chkdsk 必须可以锁定驱动器以纠正错误。由于修复通常会更改磁盘的文件分配表,有时还会丢失数据,所以 chkdsk 会首先发送如下所示的确认消息:

 

  10 lost allocation units found in 3 chains.

 

  Convert lost chains to files?

 

  如果按 Y,Windows 会在根目录中将所有丢失链保存在一个名为 Filennnn.chk 的文件中。chkdsk 结束后,可以查看这些文件是否包含了所需的数据。如果按 N,Windows 会修复磁盘,但对于丢失的分配单元,它不保存其内容。

 

  如果不使用 /f 命令行选项,则在有文件需要修复时,chkdsk 会发送消息,但它不修复任何错误。

 

  如果在大磁盘(例如,70 GB)或有大量文件(数百万)的磁盘上使用 chkdsk /f,这可能要花很长时间(比如说,数天)才能完成。因为 chkdsk 直到工作完成它才会交出控制权,所以计算机在这段时间内将不可用。

 

  检查 FAT 磁盘

 

  Windows 以下列格式显示 FAT 磁盘的 chkdsk 状态报告:

 

  检查 NTFS 磁盘

 

  Windows 以下列格式显示 NTFS 磁盘的 chkdsk 状态报告:

 

  存在打开文件的情况下使用 chkdsk

 

  如果该驱动器上有打开的文件,则指定 /f 命令行选项后,chkdsk 会发送错误消息。如果未指定 /f 命令行选项并且存在打开的文件,则 chkdsk 会报告磁盘上丢失的分配单元。如果打开的文件没有记录在文件分配表时,可能会发生这种情况。如果 chkdsk 报告大量分配单元丢失,可以考虑修复该磁盘。

 

  查找物理磁盘错误

 

  使用 /r 命令行选项可查找文件系统中的物理磁盘错误。有关使用 recover 修复物理性损坏文件的信息,请参阅“”。

 

  报告磁盘坏扇区

 

  在磁盘第一次准备运行时,chkdsk 报告的坏扇区标记为损坏。它们不会造成危险。

 

  了解退出码

 

  下表列出了 chkdsk 完成任务后报告的退出码。

 

  退出码 说明

 

  0 没有发现错误。

 

  1 错误已找到并修复。

 

  2 已执行清理磁盘(例如碎片收集),或者因为没有指定 /f 而未执行清理磁盘。

 

  3 由于未指定 /f 选项,无法检查磁盘,错误不能修复或错误未修复。

 

  故障恢复控制台提供了带有不同参数的 chkdsk 命令。

 

  范例

 

  如果要检查驱动器 D 中的磁盘,并且希望 Windows 修复错误,请键入:

 

  chkdsk d:/f

 

  如果遇到错误,chkdsk 会暂停并显示消息。Chkdsk 完成任务时会显示列有磁盘状态的报告。除非 chkdsk 已完成任务,否则无法打开指定驱动器上的任何文件。

 

  在 FAT 磁盘上,要检查当前目录中所有文件的不相邻块,请键入:

 

  chkdsk *.*

 

  Chkdsk 显示状态报告,然后列出符合具有不相邻块条件的文件。

 

  XOX

 

  使用CHKDSK命令的注意事项

 

  (1)系统存在打开的文件时

 

  当有文件打开时请不要使用CHKDSK。因为CHKDSK是假定磁盘文件处于关闭状态而设计的。当有文件打开时,相应的MS-DOS将会修改文件分配 表和目录结构。这种改变并不一定立即进行,文件分配表和目录结构的改变发生在不同时刻。因此如果磁盘上文件打开时运行CHKDSK,就会把目录结构和文件 分配表的不一致解释为出错,从而导致数据丢失或文件系统的破坏。因此,在运行其它程序,如Microsoft Windows时,千万不要运行CHKDSK。

 

  (2)CHKDSK不能用于分配的驱动器和网络。

 

  CHKDSK不能用于由SUBST命令形成的驱动器工作,也不能用于网络驱动器上的磁盘检查。

 

  (3)物理磁盘错误

 

  CHKDSK命令只能找到文件系统中的逻辑错误,而不能查找物理磁盘错误。要查找物理磁盘错误,请使用SCANDISK程序。

 

  (4)坏磁盘扇区

 

  CHKDSK报告中将坏扇区标记上“bad”,SCANDISK和其它物理磁盘错误修正程序也将坏扇区标记为“bad”,因此坏扇区不会造成危害。

 

  (5)交叉链接的文件

 

  如果有两个文件或目录共用同一磁盘空间的记录,CHKDSK会报告有交叉链接文件。如果CHKDSK发现有交叉链接文件存在,会显示类似如下信息:

 

  is cross linked on allocation unit

 

  CHKDSK不会修补交叉链接文件,即使指定了/F项。要修复交叉链接文件,需要运行SCANDISK程序,或者进行手工修复,然后复制到指定的文件中并删除原文件。