白领们的新型代步工具——魔轮[图文+视频]_汽车工具

696980e0d8d0d5537586c82736e1e1991

  英国一家公司日前推出一款叫做“魔轮”(Magic Wheel)便携式代步工具,能让使用者在街道人群中自如穿行,对于饱受上班高峰交通堵塞困扰的城市白领来说,魔轮不但灵活便利,而且可随身携带,间接解决了防盗问题。

  魔轮红黑相间,由一个大轮和一个小轮组成,大轮直径约为26英寸(约66厘米),小轮则用于稳定整个车轮,使用者骑在上面,最大载重可达120公斤。 “魔轮”作用同自行车类似,只不过少了车座和车把,所以,使用者须将一只脚放在轮子一侧的踏板上,另一只脚则用力蹬地前行。车轮在聚集了足够的冲力时,使用者可以将这一只脚也放在踏板上面,随着车轮向前行。

  “魔轮”的设计师是匈牙利发明家Soma Ungar,目前这款产品已经受到一些商人的青睐,网上每辆售价80英镑。

视频来啦! 

穿越到未来的好办法

 建造蠹孔时光机器的三个步骤(不怎么容易喔)

1. 寻找或制造一个蠹孔: 这是连接空间中两地点的一种隧道。大的蠹孔也许自然存在于太空深处,是大霹雳的遗迹。要不然我们就只好拿次原子蠹孔来充数。它们可能自然存在(有人说它们就在你我周围不断冒出又消失),或是人造的(譬如此处所想像,由粒子加速器制造)。这些小蠹孔必须放大到有用的大小,譬如用上类似大霹雳后让空间膨胀的能量场。

2.使蠹孔稳定:注入负能量,譬如利用开斯米效应(Casimir effect)等量子方式,使讯号或物体得以安全穿越蠹孔。蠹孔倾向于挤压成一个密度无穷大或近乎无穷大的点,而负能量可对抗这个趋势;换言之,它会避免蠹孔变成黑洞。

3.拖曳蠹孔:假设有一艘具有高度先进科技的宇宙飞船,会将蠹孔的两个口分开。其中一个开口或许可置放于中子星表面附近。中子星是极度致密、有强大重力场的星球,此强重力场会使时间过得慢多了。由于时间在蠹孔的另一开口处过得较快,此两开口便在空间及时间上都被分开来了。

自制葡萄酒

●第一步:买葡萄选购葡萄时,可以挑选一些熟透的葡萄,哪怕是一颗颗散落的葡萄也不要紧。这些葡萄一是容易发酵,二是价位相对较低。常见的葡萄、提子、马奶子等,都是可以用来制作葡萄酒的。

●第二步:洗葡萄由于葡萄表皮很可能残留农药,清洗葡萄的环节就相当重要,最好能够逐颗清洗,再用自来水反复冲洗,同时剔除烂葡萄。一些爱干净的人,喜欢把葡萄去皮后酿酒,这也未尝不可,但是少了一些葡萄皮特有的营养。 晾干葡萄把葡萄盛在能漏水的容器当中,等葡萄表面没有水珠就可以倒入酒坛了。

●第三步:选择容器酒坛子可以是陶瓷罐子,也可以是玻璃瓶,但不主张用塑料容器,因为塑料很可能会与酒精发生化学反应,并产生一些有毒物质,危害人体健康。 捏好葡萄放进容器双手洗净后,直接捏葡萄,操作办法是抓起一把葡萄使劲一握,操作前须将手、木棒、容器等先用高锰酸钾水洗一次,再用清水冲一次,然后再去操作,以防止杂菌污染,同时要注意不要使用铁、铜等金属的工具和容器(或用干净铝勺在杯中经消毒)将葡萄捣碎。然后放入酒坛中,再把糖放在葡萄上面,葡萄和糖的比例是10∶3,即10斤葡萄放3斤糖(不喜欢吃甜的朋友,可以放2斤糖,但是不能不放糖,因为糖是葡萄发酵的重要因素)。

加封保存将酒坛子密封,如果是陶瓷罐的话,可以到买黄酒的小店要点酒泥,加水后糊住封口。加封后,酒坛子需放在阴凉处保存,平时不要随意去翻动或打开盖子。 发酵是将葡萄皮汁中的糖分经酵母的作用产生酒精和二氧化碳,红葡萄酒的前发酵过程是皮汁混在一起的,酵母在葡萄破碎时已接入汁中,因为葡萄皮上的白霜存在有酵母,所以自制葡萄酒在发酵时可以不另外加入酵母。发酵的温度最好在15~25℃,不应超出35℃,但用小型容器发酵,散热较容易,一般可以达到不超过32℃。当皮汁装入容器后,一般经过一天即可开始发酵。

液面开始是平静,这时已有微弱的二氧化碳气泡产生,表示酵母已开始繁殖,经过2~3天有大量二氧化碳放出,皮渣上浮结成一层帽盖,口尝果汁,甜味渐减,酒味渐增。发酵时每天应将上浮的葡萄皮用消毒筷子压到汁内两次,这样做一方面防止葡萄皮生霉,变酸,同时可将皮上的色素浸入汁中,且排出CO2,使酵母得到氧气,发酵更旺盛。高潮后,发酵势头开始减弱,此时可以进行加糖,加糖是用葡萄原酒来溶解,而不要用水化糖后再加入,等白糖完全溶解后,继续在容器中进行发酵,最后二氧化碳放出至微弱而接近平静,酒精味很浓、糖分减少至1%以下,汁液开始清晰,即为发酵结束,进行压榨,将皮汁分离。


●第四步:压榨。压榨的方法是用洁净的布袋或纱布,进行挤压或扭压,红葡萄酒液即流出来,称为元酒。

●第五步:现在已经可以饮用。但要求卖相的话,可以加入蛋清,30毫升葡萄原酒约加鸡蛋清一个。方法是将鸡蛋清打成泡沫状,用少量酒充分搅拌混合,然后加入酒中,再充分搅拌和静置,至酒液清透明,将沉淀物弃掉。

●第六步:葡萄酒的加糖。大多数人的习惯是觉得葡萄酒应该是甜的,因此,需将葡萄酒进行加糖调配,加糖量约12~14%,溶解糖时要用原酒搅拌溶解。这样,具有浓厚的“玫瑰”香味,酸甜适口的红葡萄酒制成了,但如果在容器中密闭贮存2个月,则酒的风味更加醇厚。

人人可做的小闪电 – 马克思发生器

首先推荐一下该站,挺不错的!

前些日子介绍了特斯拉线圈的做法,效果相当壮观,但是工程也相当浩大,造价挺高,并不是每人都能亲手做一个的。

如果你只是想领略一下高压电火花的魅力,马克思发生器是一个比较好的选择。只要几个电容、电阻,简单的组合一下,很容易得到几厘米长的电弧,相当漂亮。

下面是一款简版的马克思发生器电路图:

这款马克思发生器总共有六级,每一级由0.002uF 20kV的电容和两个1m欧姆的电阻构成。左边是一个霓虹灯变压器(9kV 30mA),它产生的高压交流电,通过10个1N4007串联组成的整流器整为直流电,给并联的六组电容充电,当电容充到一定电压的时,就会击穿电容间的放电尖隙,这时6组电容就变成了串联的形式,电压骤增,开始放电,发出很大的声响并能产生5厘米左右的电弧,大约每2~3秒放电一次。把电容间的放电尖隙改造成球隙,电弧长度还可以大幅度提高,达到15厘米左右。够简单吧!

简单组装:

放电效果:

下面这款是改进型,主要是将上面的霓虹灯变压器换成了自制的高压发生器。它由555时基集成电路和高压晶体管构造而成,驱动一个电视机用的高压包,产生12kV~20kV的高压。

换成自制的高压发生器以后,整个体积就袖珍下来了,可以全部装配在一块小木板上。需要注意的是高压晶体管容易发热,需要配块大点的散热片,最好还装个小小的散热风扇。这款高压发生器可以拉出10厘米长的电弧,够你乐一阵子了!

往下看,还有款9级的,国人制造。

友情提醒:高压危险,玩的时候小心点!

淘宝网:前端安全须知

一、网络安全

机密性(加密)、完整性(防伪造)、来源可靠性(签名)

程序漏洞

二、web前端安全

XSS:Cross Site Script(跨站攻击脚本)

往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行。

XSS的种类:

1.XSS-基于DOM的XSS

产生原因:当web page含有一些不受服务器端控制的DOM的时候发生,通过form、referer、location修改页面DOM。

解决方法:避免客户端的脚本对DOM的重写、重定向及其它敏感的操作,需要在客户端对form输入进行过滤。

可被攻击者利用的脚本:

URL相关操作

document.location=…
document.location.hostname=…
document.location.replace(…)
document.location.assign(…)
document.URL=…
document.referrer
document.URLUnencoded
window.navigate(…)
window.location

直接运行脚本

eval(…)
window.execScript(…)
window.setInterval(…)
window.setTimeout(…)

直接写入html代码

document.write(…)
document.writeln(…)
document.body.innerHtml=…

直接修改DOM

document.forms[0].action=…
document.attachEvent(…)
document.create…(…)
document.execCommand(…)
document.body
window.attachEvent(…)

打开或修改窗口

document.open(…)
window.open(…)
window.location.href=…

2.XSS-非持久性跨站

产生原因:直接将form或者query(cookie)中的字符带入到页面中,危险query字符参与html的构成(query字符并不被存储)。

解决方法:对输入进行过滤,对输出进行编码。

3.XSS-持久性跨站

产生原因:其破坏页面html结构的原理和非持久XSS一样,只是危险脚本来源不是query字符,而是数据库数据。

解决办法:对输入进行过滤,对输出进行编码。

4.XSS-基于字符集的跨站

产生原因:页面字符集不固定,用户输入非期望字符集的字符,有时会绕过前端的过滤。

解决办法:Web页面一定要指定字符集(GBK),XML中不仅要指定字符集,而且标签要闭合。

5.XSS-基于flash的跨站

产生原因:As脚本可以接受用户输入并操作cookie,攻击者可以配合其他XSS方法将恶意swf文件嵌入页面中。

解决办法:严格管理cookie的读写权限,对flash能接受的用户输入进行过滤和限定。

6.XSS- Self-inflicted XSS

产生原因:攻击者先把页面搞出漏洞,让其他用户再浏览这个有漏洞的页面的时候遭受攻击。这里已经不是严格意义上的XSS了。

解决方法:页面登录超时。

7.XSS-未经验证的跳转构成的跨站

产生原因:如果服务器端做302跳转,跳转的地址来自用户的输入,攻击者可以输入一个恶意的跳转地址来执行脚本。
解决方法:在后端来限定所接收的URL来自淘宝并做过滤。

8.XSS-Cookie构成的跨站

产生原因:破坏页面结构的原理和非持久跨站一致,Js或as可操作cookie,通过cookies提交query。

解决办法:一切来自客户端的cookie是不可信的,后端必须对客户端cookie做验证。

9.XSS- Escape-based XSS

产生原因:其破坏页面语义构成的原理和非持久XSS一致,使用畸形的UTF8字符串拼成URL。

解决方法:对输入进行过滤,对输出进行编码。

CSRF:Cross Site Request Forgery(通过肉鸡)(跨站伪造请求)

CSRF的发生:所有需要登录页面中的交互、表单提交、AJAX

CSRF的防范:临时签名(验证码、时间戳)、crumb

淘宝对CSRF的防范:在表单中指定token;

<input type=”hidden” value=”{$token}” name=”_tb_token_”>

在cookie中指定_tb_token_;尽量使用POST方法;Ajax时附带token。

 三、Javascript安全须知

  1. 禁止使用外部引用的js,外链应当完全使用a.tbcdn.cn上的资源文件
  2. 慎用eval,setTimeout,setInterval和从不可信站点获取的字符串操作的函数。
  3. cookies操作一定要征询后端工程师的意见,避免撑破cookies的大小限制了。
  4. 前端代码禁止获取referer,所有referer的操作由后端工程师处理。
  5. 禁止发送页面相关信息到第三方站点
  6. 如果JSON返回的信息里含有用户的私密信息,需要加_tb_token_
  7. 禁止使用script标签来达到跨域访问的目的,应当使用flash实现跨域访问,可信域之间的跨域可以使用iframe
  8. 所有使用的数据必须经过服务端的验证。
  9. js代码需要经过jslint的测试

我们还需要安全规范

页面级的html规范/标准

  • 统一的编码标准(URL/GBK/js unicode)
  • 标签完整性

代码级的coding规范

  • 统一的ajax接口规格
  • 页面中php/jsp和js代码的参数传递
  • 规范的javascript编写习惯

代码review制度

PPT下载:http://www.box.net/shared/qr9t7559a3

我的第五代选择器Icarus – 司徒正美 – 博客园

Icarus是我目前匹配精度最高(通过470个单元测试保证精度),速度最快(IE67下力压jQuery,其他浏览器都是使用querySelectorAll不分上下)的选择器,并且它全面支持CSS3的所有新增伪类,支持jQuery所有自定义伪类,并且支持对XML的查找,支持XML带命名空间的元素的查找(jQuery只能支持不带命名空间的,并且非常容易报错)。

Icarus与jQuery1.7在slickspeed中的速度比赛结果(数值最大代表越慢):

Icarus jQuery1.7 比率
IE7 443 657 1.5
IE6 975 1570 1.6

如果对比早期的jQuery.42就更不用说了,是其两倍以上。

Icarus最大亮点是对XML的完美支持,为此它用得到xpath与getElementsByTagName,对于命名空间的支持,请使用”aaa\\:bbb”方式来查找。

以下就是Icarus用到原生查找API:

  • getElementById
  • getElementsByTagName
  • getElementsByTagNameNS
  • getElementsByClassName
  • evaluate (xpath)
  • selectNodes (xpath)
  • querySelectorAll

Icarus的代码量为930行(不依赖dom的其他模块),jQuery的Sizzle为1500行。

Icarus对CSS3伪类是按W3C的规范来查找,比如:not反选伪类,只支持单个表达式,如div:not(.a),不能用div:not(.a.b),要用就需要多个的反选,div:not(.a):not(.b)。

Icarus虽然支持jQuery的自定义伪类,但并不提倡使用,如位置伪类(:first,:last,:even,:odd,:eq…),我们完全可以使用标准的子元素过滤伪类要代替(:last-child,:first-child,:nth-child(even)…),对于jQuery的自定义表单伪类(:text,:radio….),我们也完全可以使用属性选择器来代替(input[type=text],input[type=radio]….)。总之,不标准的东西活不长,希望大家切记。

下面是Icarus对命名空间的支持演示,例子是inline SVG,由于IE9不支持,请在高版本的标准浏览器中看。在IE10支持SVG后,SVG的应用就大大增多了,因此命名空间的支持是必须的。

        <head>
            <title>icarus svg by 司徒正美</title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <script src="http://files.cnblogs.com/rubylouvre/icarus.js"></script>
            <script>
            
                window.onload = function(){
                    alert(dom.query("svg\\:feOffset:first")[0].tagName)
                }
            </script>
        </head>
        <body>
        <svg:svg height="0">
            <!-- Create the filter. Make sure it uses the sRGB colorspace or you're in for some nasty surprises. -->
            <svg:filter color-interpolation-filters="sRGB" id="perspDisp" filterUnits="userSpaceOnUse" x="0%" y="0%" width="512" height="512"  >
                <!-- Move the video 128px to the bottom/right so that the displacement filter can reach 128px to the top/left without reaching beyond the image -->
                <svg:feOffset
                    x="128" y="128" width="256" height="256"
                    dx="128" dy="128"
                    result="displacement"
                    />
                <!-- This actually loads our texture-->
                <svg:feImage
                    id="textureLoader"
                    x="0" y="0" width="256" height="256"
                    xlink:href="texture.tinman.png"
                    />
                <!-- Tile the texture to fill the whole viewport so that the displacement filter can also reach 128px to the bottom/right without leaving the texture -->
                <svg:feTile
                    x="0" y="0" width="512" height="512"
                    result="texture"
                    />
                <!-- Apply the displacement -->
                <svg:feDisplacementMap
                    x="128" y="128" width="256" height="256"
                    in="texture"  in2="displacement"
                    scale="255"
                    xChannelSelector="R" yChannelSelector="G"
                    />
                <!-- Apply the alpha of the displacement map to the final image, so that whatever is transparent in the map is also transparent in the final image -->
                <svg:feComposite
                    in2="displacement"
                    operator="in"
                    />
                <!-- Move the image back to the top/left -->
                <svg:feOffset
                    x="0" y="0" width="256" height="256"
                    dx="-128" dy="-128"
                    />
            </svg:filter>
        </svg:svg>
    </body>
</html>

后话,javascript的选择器基本是为了兼容IE678(IE8的querySelectoAll支持种类太少),以后的选择器基本上是用querySelectorAll与evaluate与matchesSelector来写了,CSS4也很快到来了,带来更多伪类,因此jQuery的自定义伪类基本没有存在的必要。

平衡计算过程分析 翻译

https://sites.google.com/site/onewheeledselfbalancing/Home/links-to-other-self-balancing-projects/self-balancing-software

//手动测试获取一个平衡点的值. 设置这个值让她保持平衡
balance_point = 520; // 它的取值范围为 0 – 1023 需要根据自己的做的设备找个平衡值

加速度计信号处理:

  / *减去偏移* /

 x_acc=(float) (accsum/20) – Balance_point;  // 采集20个加速度值样本,求平均值  再减去我们上面测试出的平衡点, 这样x_acc的平衡点就是0

 if (x_acc<-250) x_acc=-250;  //让加速度值保持在 [-250, 250] 超过的就已经没有意义了. 直接取最大值

  if (x_acc>250) x_acc=250;

/* 测试一个合理的量,我们这里以3.45个单位量等于1度 ( 其实就是吧0-1023区间转换成了 0-360, 这样就可以很清晰的被我们理解, 这样x_acc就变成度数了 ) */

 x_accdeg= (float) x_acc/-3.45; // 这里的这个负号 只是改变下加速度方向

陀螺仪信号处理:

 

  / *减去偏移:传感器读数是1023,因此将是“平衡点”,即我所需的零点,读数减去512 * /

//gangleratedeg 这是角度变化率, 这基本和加数据的处理方法一样.

gangleratedeg=(float)(gyrosum/20 – 508)/4.096;

//限制下取值范围

if (gangleratedeg < -92) gangleratedeg=-92;

if (gangleratedeg >92) gangleratedeg=92;

/*

接下来需要测量下程序运行周期, 测试的时候可以在程序中写入

 PORTB &= (0<<PB2);

然后将示波器接在B2口上这样主程序每次循环的时候都会变化, 这样就能检测出程序的周期了

*/

// 接下来的cycle_time 就是程序的运行周期了, ti 是一个缩放因子 

gyroangledt = (float)ti*cycle_time*gangleratedeg;

// 1度=π/180弧度( ≈0.017453弧度 )  这里是将角度转换为弧度

gangleraterads=(float)gangleratedeg*0.017453;

aa=0.01; // 这个是指在一个周期中, 使用多少加速度去修正上一周期角度, aa 是一个比例值

angle = (float)((1-aa) * (angle+gyroangledt)) + (aa * x_accdeg);

 anglerads=(float)angle*0.017453; //转换为弧度

//定义水平值在-1 与 +1 ,这就代表电机占空, 应该可以理解为平衡

//下面 机器平衡与移动 所要使用的公式:

//level=(float)((k1*anglerads)*overallgain

// 机器的角度乘以 扭矩     陀螺仪测量角度乘以功率  计算出转矩

balance_torque=(float)(4.5*anglerads) + (0.5*gangleraterads);

// 其中 anglerads 这个值包含了陀螺仪的值, 相当于实际的倾斜角, 并且这个值是经过长时间的纠正了的.  gangleraterads反应了陀螺仪长期的值….. 这样做实际上用到P(比例),I(积分)和D(微分)计算上面的公式

// cur_speed 这是一个稳定移动过程中速度的值,移动过程中角度可能会发生一些变化希望能保持一定值, cur_speed 是一个平衡值,  在后面乘以0.999 防止在前进过程中,突然向导致移动突然停止

cur_speed = (float)(cur_speed + (Throttle_pedal * balance_torque * cycle_time)) * 0.999;

// overallgain 这个是启动速度调整

 level = (balance_torque + cur_speed) * overallgain;

//开始做写安全方面的判断

//当电机已经达到最大马力时, 如果还继续向前倾斜, 这将是相当危险的, 所以我们就必须要做个提示器,避免危险发生, 在B1口安装一个LED灯提示或者蜂鸣器, 提示是否走的太快了.

  if (level<-0.7 || level>0.7) {

   PORTB |= (1<<PB1);    //i.e. turn on a warning buzzer

                   }

  else {

   PORTB &= (0<<PB1);

                   }

 //开始启动过程, 每个周期添加0.001 是为了让这启动过程像加速度, 避免突然启动.

  softstart = (float) softstart+0.001;

  if (softstart>1.0) softstart=1.0;

 

刚刚开始测试的时候, 尽量在有护的地方进行. 避免事故

AirScouter 通过小型镭射投影仪投影到视网膜上

前段时间有不少朋友被谷歌眼镜的趣味与实用性所叹服,而事实上日本兄弟公司早在2年前就已推出过功能类似的头戴式显示眼镜了,最近它们对老产品进行了升级,也就是这两款带镜片的WD-100G(裸眼)和不带镜片的WD-100A(戴眼镜人士专用)。其中WD-100G镜片具备视力矫正功能,两款眼镜显示分辨率均为800 × 600 ,显示效果就像是站在1米远的地方观看16英寸显示屏,如果你有兴趣可以试试站在10米远的地方,这时的效果就类似于观看156英寸的显示屏了。

Brother AirScouter使用时需与电脑连接,支持网络电话和实时摄像功能。目前只知道售价可能是199,800日元也就是15495元人民币,我滴个天啊真心贵,不过感兴趣的童鞋可到Brother的官网进行订购,今年8月份上市哟。

购买链接: http://www.brother.co.jp/product/hmd/info/wd100ga/photo/index.htm
https://secure6.brother.co.jp/enquete/form/wid/index.htm

Google 宣布针对青少年的在线科学博览会

小学老师最爱带孩子们去旅游的地方就是科技馆了,这可以让青少年对科学产生浓厚的兴趣,在娱乐中获得知识。于是Google也宣布了一个针对青少年的活动:在线科学博览会(Google Science Fair)

Google Science Fair是跟CERN、乐高集团、国家地理和科学美国人联手举办的在线活动,向全球13-18岁青少年开放,个人或团队可以通过照片和视频提交一个项目、新想法,也可使用Google Site来全方位对自己的想法进行阐述,比如像这样

获奖者将可跟随国家地理探险到加拉帕戈斯群岛探险,可获得奖学金,甚至是可以获得一份工作机会。Google将把所有进入半决赛的15份作品放到网上,邀请他们于7月中旬到Google总部展示自己的项目。