Asides

为什么我没有收到Windows 10升级通知?解决办法来了

很显然,这两天大家都应该被Windows 10升级通知刷屏了,鸭子哥的QQ、邮箱和微博也被刷了。

因为很多符合升级政策的网友,例如Windows 7 OEM版、Windows 8.1 零售及OEM版网友没有收到通知,就一直在担心是不是没法升级Windows 10.

在这里,鸭子哥替微软表述下,符合升级政策的系统,无论是否收到Windows 10升级通知,都可以升级Windows 10.

为什么鸭子哥这么笃定的说可以升级呢?我们来看下微软之前发布的升级政策:

1、微软将会在第一年内为有合格授权的Windows 7、Windows 8、Windows 8.1设备提供免费升级Windows 10;超过第一年则需要通过盒装产品或VL渠道升级;

2、Windows 8、Windows 8.1和Windows 7家庭普通版、家庭高级版将可升级至Windows 10家庭版(Windows 10 Home);

3、Windows 8、Windows 8.1专业版及Windows 7专业版、旗舰版将可升级至Windows 10专业版(Windows 10 Pro);

4、如果在第一年内升级Windows 10,将会免费在Windows 10生命周期内接收任何更新;

5、不包括Windows企业版(原文:Windows Enterprise)和Windows RT

6、免费升级将通过Windows Update进行自动升级;加入局域网的机器可手动从Windows Update进行获取升级;无法通过WUSU(Windows Server Update Services)进行部署。

所以,如果你是预装的OEM系统,那一定不需要担心;如果你是零售的其他系统,同样不需要担心,至于批量授权,暂时鸭子哥也不是很清楚。

好了,说正题,怎么样才能收到通知呢?

步骤一、首先确定自己的系统是否已安装KB3035583补丁(如果已安装请直接转到步骤二)

1、打开管理员模式的命令提示符(Win+X+A或在所有程序中搜索命令提示符),输入如下命令:

dism /online /Get-Packages /Format:Table|findstr 3035583 并按回车

为什么我没有收到Windows 10升级通知?解决办法来了

2、命令提示符会显示你是否已安装KB3035583补丁,如果没有安装,请转到控制面板–Windows更新中检查更新;

3、很遗憾,该补丁没有独立的程序包,所以必须检查到更新安装才可以(检查不到不要着急,请点此解决

步骤二:如果已经安装KB3035583补丁,但没有收到Windows 10升级提示

1、请打开管理员模式的命令提示符,输入如下命令:

%windir%\system32\GWX\GWXConfigManager.exe /RefreshConfig&ping 127.0.0.1>nul&%windir%\system32\GWX\GWX.exe

输入后回车;

2、如果GWX升级通知程序启动成功则会在系统右下角有一个Windows的图标,点击该图标就可以看到升级啦。

(via Microsoft Community 文/王小石)

 

from:http://www.landiannews.com/archives/17603.html

希腊字母读音表

1 Α α alpha /a:lf/ 阿尔法
2 Β β beta /bet/ 贝塔
3 Γ γ gamma /ga:m/ 伽马
4 Δ δ delta /delt/ 德尔塔
5 Ε ε epsilon /epsilon/ 伊普西龙
6 Ζ ζ zeta /zat/ 截塔
7 Η η eta /eit/ 艾塔
8 Θ θ thet /θit/ 西塔
9 Ι ι iot /aiot/ 约塔
10 Κ κ /kappa/ kap 卡帕
11 ∧ λ /lambda/ lambd 兰布达
12 Μ μ mu /mju/ 缪
13 Ν ν nu /nju/ 纽
14 Ξ ξ xi /ksi/ 克西
15 Ο ο omicron /omik
ron/ 奥密克戎
16 ∏ π pi /pai/ 派
17 Ρ ρ rho /rou/ 柔
18 ∑ σ sigma /sigma/ 西格马
19 Τ τ tau /tau/ 套
20 Υ υ upsilon /jup
silon/ 宇普西龙
21 Φ φ phi /fai/ 佛爱
22 Χ χ chi /phai/ 西
23 Ψ ψ psi /psai/ 普西
24 Ω ω omega /o`miga/ 欧米伽

WinForm多线程及委托防止界面假死

当有大量数据需要计算、显示在界面或者调用sleep函数时,容易导致界面卡死,可以采用多线程加委托的方法解决。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{
public partial class FormMain : Form
{
DataTable table;
int currentIndex = 0;
int max = 10000;
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
Thread thread = new Thread(new ThreadStart(LoadData));
thread.IsBackground = true;
thread.Start();

progressBar1.Minimum = 0;
progressBar1.Maximum = max;
}
private void LoadData()
{
SetLableText("数据加载中…");
currentIndex = 0;
table = new DataTable();
table.Columns.Add("id");
table.Columns.Add("name");
table.Columns.Add("age");
while (currentIndex < max)
{
SetLableText(string.Format("当前行:{0},剩余量:{1},完成比例:{2}%", currentIndex, max – currentIndex,
(Convert.ToDecimal(currentIndex) / Convert.ToDecimal(max) * 100).ToString("f0")));
SetPbValue(currentIndex);
DataRow dr = table.NewRow();
dr["id"] = currentIndex;
string name = "张三";
dr["name"] = name;
dr["age"] = currentIndex + 5;
table.Rows.Add(dr);
currentIndex++;
}
SetDgvDataSource(table);
SetLableText("数据加载完成!");

this.BeginInvoke(new MethodInvoker(delegate()
{
button1.Enabled = true;
}));
}
delegate void labDelegate(string str);
private void SetLableText(string str)
{
if (label1.InvokeRequired)
{
Invoke(new labDelegate(SetLableText), new string[] { str });
}
else
{
label1.Text = str;
}
}
delegate void dgvDelegate(DataTable table);
private void SetDgvDataSource(DataTable table)
{
if (dataGridView1.InvokeRequired)
{
Invoke(new dgvDelegate(SetDgvDataSource), new object[] { table });
}
else
{
dataGridView1.DataSource = table;
}
}
delegate void pbDelegate(int value);
private void SetPbValue(int value)
{
if (progressBar1.InvokeRequired)
{
Invoke(new pbDelegate(SetPbValue), new object[] { value });
}
else
{
progressBar1.Value = value;
}
}
}
}

运行效果图:

}<br>运行效果图:

 

from:http://www.csharpwin.com/csharpspace/13450r130.shtml

 

解决wordpress中文标签tag翻页404错误问题

前面有一篇文章已经介绍过中文标签打开404错误的解决方法《解决中文标签打不开404错误问题》,这个只能解决中文标签的问题,当同一个标签中文章较多的时候,就存在标签页面分页的问题了,发现如果仅按照上文的方法修改,标签页面分也无法正常打开,同样会有404错误的问题,下面提供几种方法解决标签tag页面中文分页404错误问题。

注意:别用windows自带的记事本修改(推荐UltraEdit,Dreamweaver,notepad++等)。


 

1、如果你已经修改过wp-includes目录中的classes.php,可以正常访问中文标签。

代码的140行左右,将

  1. $pathinfo = $_SERVER[‘PATH_INFO’];

替换为:

  1. $pathinfo = mb_convert_encoding($_SERVER[‘PATH_INFO’], “UTF-8″, “GBK”);

  1. $req_uri = $_SERVER[‘REQUEST_URI’];

替换为:

  1. $req_uri = mb_convert_encoding($_SERVER[‘REQUEST_URI’], “UTF-8″, “GBK”);

那么下面你只需要修改wp-includes目录中的link-template.php文件的(1425行左右)

  1. $result = $base . $request . $query_string;

替换为

  1. $result = $base . mb_convert_encoding($request, ‘UTF-8‘, ‘GBK’) . $query_string;

这种方式替换后的tag翻页里面含有中文,不符合url标准,不太利于搜索引擎收录,建议采用下面方法解决。


 

2、如果你什么都未修改,现在还无法访问中文标签tag。

可以通过安装插件iis-chinese-tag-permalink解决这个问题。

iis-chinese-tag-permalink下载地址:http://wordpress.org/extend/plugins/iis-chinese-tag-permalink/

这个插件函数很少只有几个替换函数而已,不会占用太多资源,如果你不想用插件,可以下载后把插件里面的几个函数拷贝到主题目录的functions.php中,本博就是采用这种方式。

 

from:http://www.52qingyin.cn/chinese-tag-page-problem.html

【探索】自动报警的验证码

前言

最近 12306 换了套新验证码,又一次引发吐槽。

虽然图片组合的方式仍有不少争议,但无论如何能尝试突破传统,都是值得称赞的。

毕竟传统的验证码已饱受诟病了。为了对抗少数恶意用户,却降低了绝大部分正常人的用户体验。

每当无聊时,就会遐想各种验证码的方案,今天分享一个比较有趣的。

自动报警的密码

曾有传言,在 ATM 机上密码倒着输会自动报警。且不论真实性,就这想法还是有点意思的。

  • 首先,也是最重要的,输入了这个反密码仍能取钱,这满足了劫匪的目的。但同时已悄悄的报警,想必也逃不远了。
  • 其次,这无需引入一个额外的报警密码。多一个就会提升复杂度,增加记错的可能。
  • 最后,即使平时输错,那么正好输成这个报警码的概率也是很低的。(12321 这种回文暂不考虑)

于是密码除了可以用于验证外,还可以在真与假之间建立一个规则,用于隐写额外的信息。

这个特征,是否也可用于验证码呢。

自动报警的验证码

我们得设计一个圈套,让正常用户几乎不会落入,而假人一不小心就会掉进这个陷阱里。

通常情况下,破解验证码的程序都是直接抓取图片中的像素点,然后进行分析。而用户看到的,则是屏幕上最终显示出来的内容。

在绝大多数情况下,这两者都是相同的。但我们也可以让它变得不同,人为的制造一点麻烦出来。

例如,一个内容为 d6xm 的验证码:

这是个再普通不过的验证码,破解几乎毫无压力。不过,这次玩的不再是算法上的对抗了。

我们在页面中某个隐蔽的地方,偷偷插入一个 CSS 规则:

将图片进行 180° 的旋转。这时,呈现在用户眼前的就是这样一个东西了:

内容正好变成了 wx9p!

到底哪个是正确答案呢,就不用说了吧。既然我们考察的是用户,那当然就是眼见为实的了!

但通过抓图识别的假人看来,仍是原始的像素点,并不知道页面中还有这么个小把戏,于是一不小心就中招了。

即使用户偶尔会有输错,但如果能把 wx9p 拼成 d6xm,那也太巧合了,想必还是开挂的可能性比较大吧。

类似输入报警密码仍能取钱,我们也尽量保持这个陷阱足够低调。即使用户提交了 d6xm 也算通过,但后台会悄悄的记录下这一切。

当某个用户达到一定可疑程度时,就可以对其采取相应的措施了。将拦截处理进行延时,以避免过早的进入对抗。

题库模板

当然,上面只是举了个简单的例子。像旋转这样的规则,有着太多的局限。并非所有字符旋转后都有对应的,也不能出现回文字符串。

事实上,还可以尝试更为通用的方法。

前面提到 ATM 取款密码时,若能单独设置一个报警密码,其实也是很好的,只是要多记一条。但在验证码这里,用户是完全透明的,再复杂也是浏览器自动搞定的。

我们尝试在图片里写入两套字符串。一个非常明显,另个则像水印一样暗淡。

正常情况下,后者不仔细观察很难发现。但通过页面中的滤镜,会使两者正好相反:

于是在最终用户眼里,看见的反而是水印的版本。

除了这些,其实有无数多的变化方案。例如事先对图片进行扭曲,渲染时再还原回来,等等。

当然不论怎样,其本质都是一样的。相比传统的单一图像输出,如今还多一个变幻参数,并且位于图片之外的页面里。两者必须相结合,才能渲染出最终的图像。

对于普通的傻瓜式破解程序,这道门槛即可将其原形毕露。为了获得图片最终被应用上的样式,外挂不得不使用浏览器内核对页面进行渲染,取代传统直接抓接口的方式。

于是进入前端脚本对抗阶段。

对抗

对抗是没有标准答案的。如果要有,那就是成本最低的,才能坚持的更久。

传统的验证码出现十多年,已经积累了大量的破解经验,现成的工具和算法随处可得,图像识别进入低成本规模化。在这样形势下,还停留在纯粹的图像上,也难以大幅改进了。

但新增了一个渲染时的变量,情况就变得好转。我们可以使用前端加密混淆技术、以及各种黑魔法,进行对抗。

也许某个外挂在识图领域非常强,但对于页面脚本的了解并不深入。于是,我们就可使用另一个自己熟悉的领域,和传统进行对抗了。

当然,最完美的验证码,就是没有验证码,让页面脚本来进行自我检验。可以参考:《对抗假人 —— 前后端结合的 WAF》。在过去前端技术尚不发达的年代,这套系统无需验证码也能抵挡绝大多数的恶意提交和 cc 攻击。 在如今,比的就是更巧妙的方案了。

无论怎样,总是可以有更低成本的综合方案,来解决实际问题,而非吊死在一棵树上。

惩罚

外挂是永远不会消失的,而且只会越来越先进。我们不能阻止武器的制造者,但能惩罚滥用的人。

任何一个方案都会被破解,是无法长期对抗的。但可以在它的有效期内,尽可能多的揪出开挂用户,并作出惩罚。尤其是实名制的账号,逮到一个就少一个。

这种方案也未免每次都开启,而是时不时的进行抽查,让用户在使用外挂的具有一定的畏惧性,才是最终目标。

from:http://www.cnblogs.com/index-html/p/4357677.html

10套超漂亮的Bootstrap UI KIT(已转Html格式)

我们平时分享过不少的精品UI KIT PSD素材,这些组件虽然很漂亮,但是要转换成HTML网页格式时却不是一件容易的事情,因为UI组件元素很多,如果要转HTML需要不少的时间,而且要精通前端技术。

今天设计达人网整理自pixelkit上的免费UI KIT素材,这些PSD已经转成DIV+CSS格式,可以直接快速的应用在网页上,更棒的是它使用Bootstrap框架编写,最新的HTML5+CSS3技术都有了,所以你绝对不怕过时!

这次分享的组件带有帮助文档,让你使用的时候更得心应手,如果免费版不满足你,可以购买高级版(Premium Version)而且价格十分便宜!好吧,赶快下载和分享给你的朋友们,免费的哦!(打包下载链接在文章底部)

Funky Tunes

这个Funky Tunes组件设计有梦幻般的美丽,适合用在音乐、视频类的APP或网站。

free-bootstrap-ui-kit-1

在线DEMO | 使用文档 | 高级版(付费)

Skinny Frames

这个Skinny Frames使用了扁平化风格设计,适合于网站平台,如果想跟紧潮流,玩玩扁平化,这个组件可以选择哦,而且配色很容易修改,通过在线网页配色工具来换个颜色主题或许会有另一番风景哦!

free-bootstrap-ui-kit-2

在线DEMO | 使用文档 | 高级版(付费)

City Break

这个City Break使用蓝色Web配色,适合用于旅游、酒店、机票等服务类型网站。

free-bootstrap-ui-kit-3

在线DEMO | 使用文档 | 高级版(付费)

Chubby Stacks

前面介绍平面的设计太多了,再回来看看带质感的UI也很不错的,这套绿色风格的Chubby Stacks组件包设计很漂亮,好在已经写好HTML,节省了我们N多时间哇!

free-bootstrap-ui-kit-4

在线DEMO | 使用文档 | 高级版(付费)

Sweet Candy

精美而又可爱的UI设计组件,用在个人博客、网站很不错呢。

free-bootstrap-ui-kit-5

在线DEMO | 使用文档 | 高级版(付费)

Arctic Sunset

free-bootstrap-ui-kit-6

在线DEMO | 使用文档 | 高级版(付费)

Dark Velvet

暗调的UI KIT,就像黑色一样,看上去很有感觉,如果用在网站上,不知道视觉效果会怎样呢?欢迎尝试。

free-bootstrap-ui-kit-7

在线DEMO | 使用文档 | 高级版(付费)

Vanilla Cream

质感和平面,到底哪个最好,其实没有最好,只有更好。(废话)

free-bootstrap-ui-kit-8

在线DEMO | 使用文档 | 高级版(付费)

Metro Vibes

这个UIKIT最早是在Dribbble上看到的,现在已经有HTML版本,实在太棒了!

ui设计

在线DEMO | 使用文档 | 高级版(付费)

Modern Touch

时尚的扁平化设计风格,这个设计除了桌面平台,也十分适合手持设备,另外配色也很赞!Nice!

free-bootstrap-ui-kit-10

在线DEMO | 使用文档 | 高级版(付费)

from:http://www.shejidaren.com/free-bootstrap-ui-kits.html

常用px,pt,em换算表

pt (point,磅)是一个物理长度单位,指的是72分之一英寸。

px (pixel,像素)是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选。Windows系统默认是96dpi,Apple系统默认是72dpi。

em(相对长度单位,相对于当前对象内文本的字体尺寸)是一个相对长度单位,最初是指字母M的宽度,故名em。现指的是字符宽度的倍数,用法类似百分比,如:0.8em, 1.2em,2em等。通常1em=16px。

字号:是中文字库中特有的一种单位,以中文代号表示特定的磅值pt,便于记忆、表述。

pt和px的换算公式可以根据pt的定义得出:

pt=1/72(英寸), px=1/dpi(英寸)

因此 pt=px*72/dpi

以Windows下的96dpi来计算,pt=px*72/96=px*3/4

字号 pt px em
初号 42pt 56px 3.5em
小初 36pt 48px 3em
  34pt 45px 2.75em
  32pt 42px 2.55em
  30pt 40px 2.45em
  29pt 38px 2.35em
  28pt 37px 2.3em
  27pt 36px 2.25em
一号 26pt 35px 2.2em
  25pt 34px 2.125em
小一 24pt 32px 2em
二号 22pt 29px 1.8em
  20pt 26px 1.6em
小二 18pt 24px 1.5em
  17pt 23px 1.45em
三号 16pt 22px 1.4em
小三 15pt 21px 1.3em
  14.5pt 20px 1.25em
四号 14pt 19px 1.2em
  13.5pt 18px 1.125em
  13pt 17px 1.05em
小四 12pt 16px 1em
  11pt 15px 0.95em
五号 10.5pt 14px 0.875em
  10pt 13px 0.8em
小五 9pt 12px 0.75em
  8pt 11px 0.7em
六号 7.5pt 10px 0.625em
  7pt 9px 0.55em
小六 6.5pt 8px 0.5em
七号 5.5pt 7px 0.4375em
八号 5pt 6px 0.375em

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转换工具(源码)点此下载

from:http://www.cnblogs.com/zhangpengshou/archive/2012/08/04/2623061.html

utf8_unicode_ci与utf8_general_ci的区别

当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt 、Tatar、Bashkir和Mari。

utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß’等于‘ss’。

utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用utf8_unicode_ci的校对规则相比,比较正确性较差)。

例如,使用utf8_general_ci和utf8_unicode_ci两种 校对规则下面的比较相等:

Ä = A

Ö = O

Ü = U

两种校对规则之间的区别是,对于utf8_general_ci下面的等式成立:

ß = s

但是,对于utf8_unicode_ci下面等式成立:

ß = ss

对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集 校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。

utf8_general_ci也适用与德语和法语,除了‘ß’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。

from:http://www.chinaz.com/program/2010/0225/107151.shtml

用transform缩放页面示例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<title>测试页面</title>
<style type="text/css">
div {
width: 600px;
text-align: center;
font-size: 4em;
color: #333;
}
</style>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.js"></script>
<script type="text/javascript">
$(function() {
var r = document.body.offsetWidth / window.screen.availWidth;
$(document.body).css("-webkit-transform","scale(" + r + ")");
$(document.body).css("transform","scale(" + r + ")");
});
$(window).resize(function() {
var r = document.body.offsetWidth / window.screen.availWidth;
$(document.body).css("-webkit-transform","scale(" + r + ")");
$(document.body).css("transform","scale(" + r + ")");
});
</script>
</head>
<body style="height: auto; -webkit-transform-origin: 0px 0px; -webkit-transform: scale(1);transform-origin: 0px 0px; transform: scale(1); ">
<div>改变窗口大小试试,你会发现什么?</div>
</body>
</html>