我平时都是骑单车上下班的,为了方便带些东西,我买了个帆布挎包,像这样:
这种斜挎包有个缺点,就是骑热了以后,由于背带的阻挡,衣服无法敞开。所以我一直想找一个骑车时能背,不骑时能挎的包包,最好包里还能装一台笔记本电脑。直到我遇到Decathlon(迪卡侬)旗下的Newfeel Backenger,才一了夙愿。
Newfeel Backenger的包包是这样的:
它的背带是活动的,可以从底下抽出形成双肩式,如图这样:
可以背,可以挎,还可以拎!另外包里的空间也够大,可以放台16寸的笔记本电脑,能放好多件衣服;两侧边还有水瓶袋和信用卡仓;包的面料还是防泼水的。上下班以及出差用非常之方便!
不愧是获得2012年奥克西兰创新大奖的,赞一个!
下面的视频是它的在大奖会上的表现:
上面这张图是典型的刷票机工作记录表,从图上有两点发现:一是刷票机没有采用伪造HTTP头的办法突破IP限制(HTTP_X_FORWARDED_FOR中没有路由中转地址),估计是HTTP代理(IP没有规律);二是刷票机采用多线程高频率来发送数据,这样会造成IIS负载增大,以致无法响应其它用户的请求,所以在一小段时间里都是该刷票机的记录。
刷票机之所以能如此疯狂地工作,前提是它要突破两道限制,一是验证码,二是IP地址。
验证码是防机器最有效的手段,可我没有能力写出坚强的验证码,所以一直以来都在寻找免费开源产品。最先考虑使用Google的reCAPTCHA的验证码系统,但由于实在不易辨认以及“墙”的原因很多地方无法显示,而被迫放弃。后来又找到国内的“皕应HCaptcha”验证码,不知是由于免费版的缘故还是其它什么原因,该验证码仍然可以被破解。对此我没有办法,只能今后加强学习,弥补此处的不足。
关于IP限制是一个地址只能投一票,据我所知目前有四种方式突破: 阅读全文…
目的:将textarea标签中的行内容用逗号串起来
测试代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <form method="post" action="">
<textarea name="flist" cols="40" rows="2" wrap="OFF" style="width:98%"></textarea>
<input type="submit">
</form>
<?php
$list = '';
$flist = (isset($_POST['flist'])) ? $_POST['flist'] : '';
$flist = explode("\n",$flist);
for($i=0 ; $i<count($flist) ; $i++)
{
if ($list == '')
{
$list = $flist[$i];
}
else
{
if(!empty($flist[$i])){
$list = $list . ',' . $flist[$i];
}
}
}
echo $list;
?> |
<form method="post" action="">
<textarea name="flist" cols="40" rows="2" wrap="OFF" style="width:98%"></textarea>
<input type="submit">
</form>
<?php
$list = '';
$flist = (isset($_POST['flist'])) ? $_POST['flist'] : '';
$flist = explode("\n",$flist);
for($i=0 ; $i<count($flist) ; $i++)
{
if ($list == '')
{
$list = $flist[$i];
}
else
{
if(!empty($flist[$i])){
$list = $list . ',' . $flist[$i];
}
}
}
echo $list;
?>
结果:分行成功,但空行无法过滤!
原因:回想工作环境是apache+php,感觉分行符不是“\n”而是“\r\n”,修改上述代码,过滤空行成功!
1
| $flist = explode("\r\n",$flist); |
$flist = explode("\r\n",$flist);
虽说win7任务栏右侧有“显示桌面”按钮,但违反了我的使用习惯,使用起来总感觉很别扭,所以动手恢复类似winxp中的“显示桌面”图标。
步骤如下:
1、右击任务栏,工具栏→新建工具栏。
2、选中%userprofile%\AppData\Roaming\Microsoft\Internet Explorer目录下的Quick Launch文件夹,单击“选择文件夹”。
3、右击任务栏,将“锁定任务栏”的勾去除,再把Quick Launch工具栏拖到最左边。
4、右击Quick Launch工具栏,将“显示文本”、“显示标题”两项前的勾去除。
5、在%userprofile%\AppData\Roaming\Microsoft\Internet Explorer目录下新建文本文件,内容如下:
[Shell]
Command=2
IconFile=%SystemRoot%\system32\SHELL32.dll,34
[Taskbar]
Command=ToggleDesktop |
[Shell]
Command=2
IconFile=%SystemRoot%\system32\SHELL32.dll,34
[Taskbar]
Command=ToggleDesktop
文件名称改为:显示桌面.scf
6、此时任务栏上已经出现“显示桌面”图标了,接着锁定任务栏。
“好记忆不如烂笔头”,以备后用!
记录中有一个字段名是:cfield,内容如这样:2,4,7,17 现在要通过一次SQL查询取出所有该字段中包含7的记录。这时候使用mysql自带的instr函数将非常方便。测试代码如下:
1
2
3
4
5
6
| $aid=7;
$sql="SELECT * FROM news WHERE instr(','+cfield+',',','+$aid+',')>0";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row['title'].'<br>';
} |
$aid=7;
$sql="SELECT * FROM news WHERE instr(','+cfield+',',','+$aid+',')>0";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row['title'].'<br>';
}
需要注意的是:要在字段cfield和变量aid前后加逗号,这样可以解决7与17混淆的问题。
(2016-2-3)注:上述语句中+号的用法会使MYSQL尝试将两端字符进行相加运算,出现了异想不到的结果。比较稳妥的是用CONCAT函数相接:
1
| $sql="SELECT * FROM news WHERE instr(concat(',',cfield,','),',$aid,')>0"; |
$sql="SELECT * FROM news WHERE instr(concat(',',cfield,','),',$aid,')>0";
或
1
| $sql="SELECT * FROM news WHERE concat(',',cfield,',') LIKE '%,$aid,%'"; |
$sql="SELECT * FROM news WHERE concat(',',cfield,',') LIKE '%,$aid,%'";