Emoji 翻译器:表情社交的黄金伴侣

Emoji 表情俨然快要成为一种新语言了,各类社交网络上,人们用 Emoji 恶搞、聊天、表达感情……甚至出现了这样一个群体,他们完全用 Emoji 表情进行交流,Emoji 就是他们全部的文字。 Emoji 并不同于一般的贴图或符号表情,它的简单性、多样性和拟物化使得它具有更强的可玩性,传播广而快。《火星文还是颜文字?不,Emoji》就分析说: Emoji 和 QQ 表情、微信表情以及论坛里的表情不同的是,Emoji 里包含的符号不光只是用来表达情绪,那些鲜花、建筑、海浪等等与现实世界有对应关系的符号,构成一种比较严谨的符号体系。这让 Emoji 超越了一般表情的表达能力,让它得以构成一种特殊的语言,更重要的是,相比起火星文来说,Emoji 更加容易被人理解。   Emoji 的流行也催生了一些输入工具,比如 Emojimo,它是一个 Emoji 表情“翻译器”。一般而言,想要输入 Emoji,你要在表情框中挨个儿查找,插入文字。 Emojimo 的输入方式比较直接:实时翻译。在你输入某个词后,它会自动变成 Emoji 表情,比如输入“see”,输入法直接给出一双眼睛的表情。 当然,Emojimo 也不会把你输入的每一个词都翻译出来,大部分情况下,你打出的文本同时夹杂着文字和 Emoji 表情。 如果你不适应实时翻译,也可以选择“事后翻译”,在输入完成一段话中,用 Emojimo 一键转换成表情语言。这个过程也可以逆向,他人发来的文本如果包含 Emoji,而你无法理解透彻,Emojimo 也可以一键翻译成正常语言。只不过,由于 Emoji 本身没有语法和语序规则,包含着人的主观理解,所以翻译的准确度有所限制。 为 Emoji 而生的表情不止有 Emojimo,另一款 Emojiyo 键盘同样让人方便输入。不同的是,它提供的是单词和词组的 Emoji 建议选项,而不是直接翻译。 对于 Emoji 的流行,人们的反应不一,有人认为它有成为下一个“全球语言”的潜力,有人认为表情仅仅是表达情感的辅助方式。不管争论如何,一个事实是,Emoji 并没有像某些贴图表情一样仅仅“红极一时”,而是保持了旺盛的生命力,这也让围绕着 Emoji 而生的各类应用有了生存空间,让 Emoji 的玩法更加丰富。 Emoji 翻译器:表情社交的黄金伴侣,首发于极客范 –… Continue reading Emoji 翻译器:表情社交的黄金伴侣

除了照明,这路灯还能给电动车充电

  充电时间长、充电站少、续航不给力,这是消费者入手电动车主要的顾虑。汽车厂商们一面努力提升电动车的性能,一面也在想方设法推动充电站的普及。 而为了让更多的人对电动车产生购买欲,宝马在随处可见的路灯上做起了文章,该公司将充电站整合进了路灯中,推出了 Light and Charge 原型。 近日,宝马将 2 个 Light and Charge 路灯安装在慕尼黑宝马总部门前,日后这种路灯有望推广到德国其他的城市。   Light and Charge 路灯将发光二极管与 ChargeNow 充电技术结合起来,并接入当地现有的道路照明基础设施里。除了宝马旗下的 i3、i8 电动车外,其他品牌的电动车也能使用 Light and Charge 路灯。宝马此举是为了更快地推广相关技术,加速电动车的普及。   “如果我们希望未来会有更多的电动车在路上奔跑,那么无缝充电设施就显得非常必要。”宝马管理董事会成员 Peter Schwarzenbauer 谈到。   不过,Light and Charge 路灯并非免费为司机服务,后者需要通过手机 app 支付相应的充电费用。至于充电效率如何,宝马尚未给出答复。 宝马在充电技术上的探索动作频频。9 月份,该公司推出了比 i Wallbox Pure  更加智能的充电器 i Wallbox Pro。此外,宝马已与戴姆勒签署合作协议,将共同研发新一代无线感应充电标准化技术——司机只需将车开到充电器位置,然后按下车上的专用按钮即可充电。 今年 8 月,宝马在慕尼黑宝马博物馆旁安装了太阳能充电站 Point.One S。该充电站的外形类似一个拱形的鸟翼,以太阳能板作为顶棚,内部基于 LED 的电气照明系统可以跟用户进行交互式体验。Point.One S 靠收集太阳能为汽车充电,同时也将平日不用的能量重新输送回输电网。 除了照明,这路灯还能给电动车充电,首发于极客范… Continue reading 除了照明,这路灯还能给电动车充电

树莓派上的立体视觉和深度知觉

随着树莓派超低成本的计算模块的发布(请看see www.raspberrypi.org/raspberry-pi-compute-module-new-product/),依赖于树莓派简单的编程环境,简单硬件扩展和丰富的开发资源,使我们利用树莓派创造大量的产品变得可能, Pi具有强大的多媒体处理能力,但是因为通常在Pi上编程比较简单直接,最大限度的利用其多媒体系统和为它的VideoCore模块编程是较复杂的。 Argon Design精通于在此类系统上的编程,并且可以优化树莓派上的多媒体算法。为了评测计算模块的能力,展示我们的技能,我们设计了本次展示。 这次展示是关于立体深度感知-利用两个放置位置具有一定间距的摄像机,从不同的视角拍摄物体来获取深度信息。与此同时这还使用了树莓派计算模块的另一个令人兴奋的特性,那就是它支持双摄像头(标准树莓派仅仅支持单一摄像头) ###立体深度感知 —————————– 深度感知方面的文献中记录了很多好的算法。它们中很多使用了相同的视频压缩算法,Argon Design在这个领域有丰富的经验。都是基于把图像分成块,对于每幅图像中的每个块,在另外的一个或多个图片中搜索“匹配”的块。 然而,与视频压缩相比,深度知觉需要更加可靠的结果。文献中还记载了很多改善输出的基本算法。因为这只是一个概念验证,所以我们的标准是选择那些不需要花费太长时间去实现的改进算法,这些算法不需要很大的计算量并且可以给出相当好的改善结果。基于块的视频压缩和我们最终的算法之间最基本的差别在于: – 对比两个间距已知的摄像机同时拍摄的两幅图片。这表示我们在测量视差,我们可以通过它来得到摄像机和物体的间距。对于视频压缩我们则会去对比同一个摄像机在不同时期拍摄的几幅图片,所以这种算法意在测量运动。 – 假设摄像机都是水平对齐的。这使得二维搜索降低到一维,节省了大量的处理时间。这需要对摄像机进行校准,不过我们可以使用已知的方法来进行校准,人工的或者自动的都可以。 – 使用更加准确(但是更加耗时)的方法来测量两块之间的相关性,基于如下两篇文章: – [1]. Heiko Hirschmüller, “Improvements in Real-Time Correlation-Based Stereo Vision” CVPR 2001 – [2]. Olivier Faugeras et al, “Real t ime correlation-based stereo: algorithm, implementations and applications” INRIA 1993 特别的,我们决定结合使用[2] 中的”C5″相关方程(“C5″ correlation function)和[1]中提到的多窗口方案(multi-window scheme)。总的来讲,我们的程序既可以使用5×5窗口方案或是7×7方案。7×7的方案计算时间更长但是也会稍微准确一些。 ###性能 —————————— 使用了三种不同版本的实现方式: –… Continue reading 树莓派上的立体视觉和深度知觉

骑上这只轮子,其他交通工具都黯然失色

  独轮车是一种短距离交通解决方案,近一两年走入大家视野,但骑上这款,可不止代步那么简单! 外形威猛似擎天柱,动力强悍如大黄蜂,小造(trendmakers)真想用世上最彪悍的词语来形容这款颇具科幻色彩的电动独轮摩托车。   电动独轮摩托车名为 RYNO,由波特兰摩托车制造商 RYNO Motors 今年推出,据说开发需求来自他家老板的女儿,女儿在游戏里看到一款摩托车感觉很酷,爸爸于是经过5年研发创造了了 RYNO。   RYNO 主要部分就是一个25英寸(约合63.5厘米)摩托车轮胎,重量为57公斤,虽然通过电力驱动,最高时速也可达40km/h。   其内置了一块可拆卸的锂离子电池,一次充电需 90 分钟,充电1000次以上没问题。RYNO 可以应付最高30度斜坡,在地势较高地区也可以正常使用。   RYNO 只能坐一个人,最大载重仅为113公斤,这就是一个轮子的代价呀!带女友去兜风正常体位就甭想啦,除非你们能发掘个新姿势。   单个轮子操作平衡一定是难度最大的,但 RYNO 采用独有的自平衡技术,操作方式也和普通电动独轮车相同,前倾加速,后倾减速,即使驾驶者身体倾斜幅度过大也能保持平衡。   RYNO 的通途十分广泛:可以用来公园遛弯散心;也可以开着它进电梯然后直奔办公桌;最主要的还是骑着它刷街、勾搭妹子神马的,绝对是神器中的神器!   如此扮酷耍帅的独轮电动摩托车当然价格也不会太亲民,不然如何彰显其逼格范,目前其官网售价为2250英镑,约是咱天朝货币22029元~ 骑上这只轮子,其他交通工具都黯然失色,首发于极客范 – GeekFan.net。

偷了『半条命2』源代码的那小子

2004年5月7日早6点,德国小镇黑林山区舍瑙,Axel Gembe醒来时发现床边围满了警察。全自动武器指着他的头,耳边响起一句“快起床,不准碰键盘”。 Geme知道他们此行的目的,但睡眼惺忪的,他还是问了原因。 (『半条命2』壁纸) “你被指控入侵Valve公司网络,窃取视频游戏『半条命2』,泄露到互联网上,造成的损失超过2.5亿美元,”对方回答到。“穿好衣服。” 七个月前,2003年11月2日,在美国西雅图,Valve公司主管Gabe Newell醒来时发现公司开发了近五年的游戏源码被泄露到互联网上。 这个游戏本应该在几周之前发布,但由于团队开发滞后导致延误。滞后了12个月。半条命2要推迟发布,Newell还未承认会推迟多久。这次的泄露不只是经济上的威胁,也是一个很尴尬的场面。 思考这些迫在眉睫的问题片刻之后,Newell的脑中闪过许多问题。这件事是如何发生的?泄露是从公司内部流出的吗?团队中的哪些成员花费多年时间编写这个游戏却又可能在最后关头危及整个项目? 黑林山区舍瑙小镇,Gembe 2003年和他父亲居住的地方 如果不是内部问题,这件事又是如何让发生的?有人能够访问过Valve公司的网络服务器吗? 但是所有问题中最突出的,也是任何一个曾经被盗过东西的人都无可避免会想的问题:这是谁干的? 反叛者1号 “我进入黑客领域是在自己被病毒感染之后,”Gembe今天说。“那是一个伪装成魔兽争霸3密钥生成器的程序,我愚蠢地运行了那个程序。那是sdbot程序,当时很流行的一款恶意软件。” 这个年轻的德国人很快意识到他在自己的电脑上安装了什么。但是他没有删除该恶意软件,也没有遗忘,而是对该程序进行逆向工程,查看它是如何工作的,做了哪些事情。 被控制的恶意软件引导他进入IRC服务器。通过追踪,Gembe能够定位恶意软件的操纵者。Gembe没有举报这个人,而是就这款恶意软件向他请教了些许问题。他有了一个计划。. “虽然现在我的Steam账户上有2000欧元,但是在那时我买不起游戏,”他解释道。 “所以为了解锁那些我想要玩的关卡,我编写自己的恶意软件用来窃取光盘密钥。它立刻成为当时最优秀的恶意软件之一,主要是因为我开始利用Windows平台的漏洞编写一些补丁。” 跟随弗里曼 一发现突破口,Newell的第一个想法是去警局。第二个想法是去接近游戏玩家。 2003年11月2日晚上11点,Newell在『半条命2』官方论坛上发布一则消息,题为“我需要社区援助。” “是的,已经发布的源代码是『半条命2』的源码,”消息中他承认。Newell接着概述了Valve公司到目前为止能够团结在一起的事实。 他解释道,有人在近三周前登录了他的邮件账户。不仅仅如此,公司里的大部分主机上都被安装了击键记录程序。据Newell所言,这些程序是专门以Valve公司为目标所创建,所以这些程序不能被任何的病毒扫描程序发现。 不管是谁做的,这个人聪明能干,对他的公司非常感兴趣。但为什么要这样做? 进入地点 虽然不可否认剥削和伤害,但Gembe编写恶意软件的罪行是受游戏热情驱使而并非利润。 他最喜欢的游戏是半条命。在2002年,像很多系列粉丝一样,Gembe对即将发布的续集的细节非常痴迷。当时他就产生了这种想法。如果他能入侵Valve的网络,他就可能发现一些其他游戏玩家不知道的东西。 一个不善社交,在艰苦环境中成长的人,通过吸纳社区玩家提供内幕消息能够在社区中获取地位。这值得尝试。 “我真没期望能得到什么,”Gembe说。“但是第一次入侵很容易。事实上是偶然发生的。” “当时我正在浏览Valve网站,查找我认为可能存放游戏的可访问网页服务器。Valve的网站对外部来说非常安全,但缺点是他们的域名允许匿名AXFRs,这给了我很多信息” AXFR全称是匿名完整区域传送,一个用于同步主服务器数据到备份DNS服务器的工具。但这也是黑客们用来偷窥一个网站数据的协议。通过传输这些数据,Gemebe发现ValveSoftware.com所有子域名。 “在端口浏览记录中,我发现一个很有趣的服务器,它从Valve网站延伸到另一家名叫Tangis的公司,这家公司致力于可穿戴计算设备,”他说。 “该服务器网页根目录是公开可写的,这样我能够上传ASP脚本到该目录并通过网页服务器执行这些脚本。Valve在内部网络中没有对该服务器使用防火墙。” Gembe首次尝试就发现一个无防备的通路可以进入网站。 “Valve的主域控制器用户名为‘build’,密码为空,”他说。“这允许我找出系统的哈希密码。于此同时, Eidgenössische Technische Hochschule Zürich 提供了一个在线的哈希破解器”,所以我能立刻破解密码。“ ”一旦我完成了那些…那么,基本上我就拥有了通往这个王国的钥匙。“ 牵连设备 此时,Gembe并不担心踪迹的掩盖。到目前为止,他没有什么要隐藏的。但是随着探索的深入,他想确认自己是否仍未被发现。 “那时我唯一关心的不被踢出,”他说。”但是我能够访问数量无限的代理服务器,所以我并不担心。首先,我找到一个可以建立某种隐藏的主机。“ Gembe开始四处查找游戏的信息。他发现了各种游戏开发的设计文档和备注。这正是他期望查找的,也是他此行的目的。 过了几周时间,Gembe意识到Valve内部没有人注意到他存在于公司网络中。他开始一点点前进。 就在那个时候他点击了下载,获取了期待已久的游戏的源代码。 这太有诱惑力了。在2003年9月19号,Gemebe点击了下载按钮,偷走了Valve的王冠。 “获取源代码很容易,感谢Perforce客户端的网络性能,但用SourceSafe客户端获取游戏数据却很可怕,”他解释道。 “因为这个原因,我编写了自己的客户端,该客户端通过TCP有自己的数据传输机制,通过散列检测发生变化的文件并进行传输。” “游戏并不能在我的计算机上运行。我对一些代码做了修改让它在一个基本形式下运行,没有着色器或其他任何设备,但这并不好玩。还有,我仅仅拥有游戏开发的主分支。他们有很多开发分支以至于我甚至没有来得及去检测它们。” 直至今日,Gembe依旧坚持他不是上传源代码到网络的人。但是不可否认的是让将源代码给了那个上传代码的人。 “我不这么认为,”他说。“当然,这有一些吹嘘的成份。但我分享源代码给那个人时,他承诺我不会外传。但他没有。” 一旦游戏出现在BT上,它就无处不在。 “事情已经发生,”Gembe说。“你无法能阻止网络。” “好日子”… Continue reading 偷了『半条命2』源代码的那小子

用Python实现KickStarter跟踪器(1)

自从发现了HDMIPi KickStarter,我就经常关注KickStarter上其它的众筹项目。我现在就粉着4,5个项目。它们能实现目标吗?还是会失败呢?这很值得关注,但是密切关注1个或2个以上的项目是很浪费时间的。如果我能让一个小小的电脑和屏幕替我关注这些项目,比如,每分钟访问一次,然后再回馈它们的状态给我,不就很棒吗? 我知道一个非常赞的Python模块,urllib2。我以前就用它做过一些简单的事情。那么它到底有多难呢?答案是,真的不太难。我花了大概一个半小时用它来搭建基本框架,跟踪了1个项目。但是用了更多的时间来把其它的项目也添加进去,还有,把输出弄得好看一点(你也会这么做)。 所以怎么实现呢? 和所有程序一样,你只要把它分解为几个小部分就可以了。然后你就开始搬砖,记得每部分搬完之后要进行测试喔。其实基本上只要有个树莓派就够了… 访问跟踪项目的Kickstarter页面 在html中查找我们想要的数据 把这些数据抓出来 让它优雅地出现在屏幕上 等一会儿 再全部执行一次 所以我们需要做的第一件事情就是想办法在网页的html中找到我们想要的数据。这需要费一点手动研究的功夫。 查找数据 许多浏览器都能查看html源代码。你只要访问你想跟踪的那个项目的网页,然后让你的浏览器查看就行了。在Mac上使用Chrome的话,它的步骤是这样的: View > Developer > View Source 在这段源代码中使用快捷键CMD+F(PC是CTRL+F)来查找字符串pledged,我找到了一行有3个有效数据的代码。这是HDMIPi KickStarter page的第842行。 我想要的大多数数据它都有,但我还想要知道项目的剩余时间。然后我在网页的上部找到了它。(HDMIPi page的第88行) 当然啦,进行中的项目所剩时间肯定和这个不一样的。(比如,16个小时或者24天什么的,而不是0秒) 所以我们就找到从2行HTML中抓有效信息的方法啦。 data-goal=”55000.0″ 告诉我们目标资金是多少(单位是英镑或者美元) data-percent-raised=”4.750008363636363636363636364″ 这个数字乘以100就是现在已经达到目标的百分之几了。在程序里,我们会把它分为两个部分。 data-pledged=”261250.46″ 告诉我们现在已经筹集到多少钱了 twitter:text:time” content=”0 seconds” 告诉我们这个项目还剩多少时间。 现在我们要做的就是让电脑找到它们,把源代码分离出来,切出数据,然后用你喜欢的方式来把它显示出来。听起来是不是灰常简单呀:) 开始搬砖 所以要想知道如何找到数据,或者至少要知道它在哪一行的话,我必须要做点urllib2的功课了。我以前就知道它可以用来加载一个网页,只是方式比较野蛮。我在Python官方文档里面发现了一个超棒的方法来完成。基本上,就是导入urllib2中所有需要的对象,然后把urlopen() 塞进 try: except: 中的空白就好了。这样的方法能够处理断网或者网页没有响应的情况。它不会退出程序,而是进入“Exception”,告诉你出什么错了,然后再运行一次。所以我刚才说它“野蛮”。 现在我们加入URL吧 如果我们不给someurl 一个URL网页地址的话,这段代码就是一个花瓶。所以我们就在上面添加传递地址的代码,并且让程序在html文件中查找我们需要的源代码行,找到之后把它们打印出来。 这个结果是在… 现在我们要分离代码行啦 所以那2行源代码已经被我们找到了。现在我们要做的是将数据从源代码行中切出来。那这是怎么做到的呢?我们将用一个神器级函数, split() 来实现。 下面代码的第20行,我们写到 days_left=line.split(‘”‘)[3] 这是用 split() 来把整行源代码分离成… <meta property=”twitter:text:time” content=”0 seconds”> …N个字符串。每遇到字符 ” ,它就将前后字符串分离(并且删去 ” )。所以它就会把这行源代码分离成一个包含一下元素的变量列表: <meta… Continue reading 用Python实现KickStarter跟踪器(1)

Adafruit的树莓派教程第十三课:电力控制

概览 树莓派可以成为你家里强大的自动化控制终端,但最实用的应该是控制家用电器以及灯的打开关闭了。那就意味着小派应该能够安全的控制110V电力。 这节课里,你将学习把在第十二课中接触到的PIR\(人体热式传感器\)与Adafruit电力开关尾插Module 2型结合,在检测到与运动时自动开关设备。 你需要的 要完成这节课的内容,你需要下面的东西: PIR 人体热式传感器 电力开关尾插2型模块(Powerswitch Tail 2 Module) 树莓派扩展板 小块面包板 树莓派 一把跳线 硬件部分 Adafruit电力开关尾插2型看起来是一个110V插头中间带了一个小盒子。 如果你主要使用的是220V电压,那么这篇教程不适合你 – 如果我们获悉了某种等效的220V电力控制器,我们会在这里附上链接的 那个小盒子实际上是一个光隔离固态继电器。光隔离的意思是实际上在低电压与100V主电压转换之间并没有电力连接。这对于小派来说非常的安全,大大降低了烧毁小派的可能性。 更进一步的是它的控制输入电流是3mA,输入电压是3.3V,这意味着我们能够直接通过小派的输出针脚控制它。 PIR传感器将会连接到与第十二课不同的针脚上,所以请确保黄色针脚连接正确。 电力开关尾插带有一个LED指示灯来显示它是否是开着的,所以你不需要在上面连接高电压。 软件部分 这个项目可能是所有自动控制灯项目中被过度设计(over-engineered)的一个。实际上你不需要一个树莓派来开关电力,但是这个实例可以很容易的被应用到其他用途上。比如,你可以通过结合温度,湿度,光线或者一些互联网的天气预报信息来控制加热器,风扇或者是加湿器。 import time import RPi.GPIO as io io.setmode(io.BCM) pir_pin = 24 power_pin = 23 io.setup(pir_pin, io.IN) io.setup(power_pin, io.OUT) io.output(power_pin, False) while True: if io.input(pir_pin): print(“POWER ON”) io.output(power_pin, True) time.sleep(20);… Continue reading Adafruit的树莓派教程第十三课:电力控制

Adafruit的树莓派教程第十二课:感知运动

概览 在这节课里,你将学习到如何使用PIR人体热式传感器连接GPIO来激活门禁。 这节课,我们将把注意力放到感知运动和激活门禁开关上。我们会在第十三课构建这个安全感知系统,使用小派作为数字输出来在侦测到运动时控制电力设备。 你需要的 要完成这节课讲述的内容,你需要下面的东西。 PIR人体热式传感器(Adafruit 189号产品) 电磁门禁传感器(Adafruit 375号产品) 树莓派扩展板 小型面包板 一把跳线 最后,当然是小派啦 硬件部分 我们将会把两个传感器都连接到树莓派上。两个传感器都不需要额外的部件。 PIR人体热式传感器是带插座的引脚。一定要确保引脚插得是正确的,红色的应该插在5V上,黑色接地,黄色的插在扩展板的18引脚上。 尽管PIR传感器需要5V的电源供电,但它的输出却是对小派友好的3.3V,所以它可以直接连接到GPIO的上作为输入。 门禁开关使用了一个叫做磁簧开关(reed switch)的东西。在一个玻璃管里装着两个簧片相互连接,然后外面包裹着塑料。当一个磁性物体(另一个白色方块)靠近这个磁簧开关的时候,两个簧片接触,然后开关关闭。因为这是个开关,所以正着接反着接都行。 我们会利用小派自身来在磁簧开关针脚上创建一个内部的上拉电阻,所以我们就不需要额外的上拉电阻了。 软件部分 这个程序只是一个循环,在侦测到运动的时候打印一个消息,或者磁力从门上移除。 程序使用了Rpi.GPIO类库。见第四课。 import time import RPi.GPIO as io io.setmode(io.BCM) pir_pin = 18 door_pin = 23 io.setup(pir_pin, io.IN) # activate input io.setup(door_pin, io.IN, pull_up_down=io.PUD_UP) # activate input with PullUp while True: if io.input(pir_pin): print(“PIR ALARM!”)… Continue reading Adafruit的树莓派教程第十二课:感知运动