分类:研究

鹤仙人的芬兰指南:电子产品篇

实体店 Helsinki/Espoo/Vantaa

Verkkokaupa – Tyynenmerenkatu 11

赫尔辛基最大的电子产品商场,各种电子产品和家用电器都有。价格普遍比其他店便宜一些。可以分期付款。

Gigantti

也是一个规模比较大的电子市场,品类齐全。在 Helsinki , Espoo 和 Vantaa 都有分店。虽然号称芬兰最便宜,然而只是同一型号最便宜,选择比 Verkkokaupa 少,有一些更便宜的型号就买不到。还是要实际比较一下。常有导购来搭讪,比较尴尬。

Clas Ohlson

一家比较大型的五金电器连锁,各种购物中心都有分店。也卖一些耳机,音响,鼠标,路由器,网线,USB 数据线什么的。价格略贵,选择也比较少。

GameStop

主机游戏专卖店。二手游戏主机和游戏价格很便宜,喜欢玩游戏的可以去逛逛。

Tiger

小商品连锁,大部分都是中国制造。能买到芬兰最便宜的 USB 数据线:5 欧元,其它地方可能要 15 欧元以上。

Expert

一家家电数码连锁,分店也比较多。店小价格贵。

Teknikmagasinet

卖数码产品和配件的连锁店。店小价格贵。

ANTTILA

貌似是一家什么都卖的商场连锁。选择少,不便宜。

Prisma 和 K City Market

有些地方(比如 Sello)的 Prisma 和 K City Market 这种大型超市也会卖手机,电脑,家电,五金工具,体育健身用品,服装家居等。服装的价格倒是比商场便宜,家用电器和电子产品可能就比较贵。但是偶尔能找到一些小品牌的便宜货。

DNA / Elisa / Sonera

芬兰电信运营商的店,卖合约手机,也卖手机配件什么的。

网店

这几个芬兰的网店的价格很难比较,大致持平,请根据自己购买的产品做具体比较。网站基本都是芬兰语,可以用 Chrome 浏览器的翻译功能,或者 Firefox 浏览器的翻译插件。

https://www.verkkokauppa.com/ – Verkkokaupa 的网店,有很多在商场没有摆出来的可以在网上搜好,让店员给你从仓库里提货。

https://www.jimms.fi/ – 一家专卖 PC 和 PC 配件的网店,DIY 爱好者会比较喜欢。虽然可以切换英文,但是大部分网页内容还是芬兰语的。

http://tietokonekauppa.fi/ – 不太了解

https://www.systemastore.com/ – 不太了解

https://www.pixmania.fi/ – 不太了解

https://www.amazon.co.uk/ – 英国亚马逊,产品比芬兰丰富得多,也便宜。但是运费比较贵。

键盘

在芬兰销售的电脑几乎都是北欧键盘,用惯了中文键盘的用户可能觉得不方便。

典型的北欧键盘布局,你知道如何打 @ 吗?Alt Gr + 2 ……

中文键盘布局和美式键盘布局(US Layout)是一样的。英式键盘布局(UK Layout)的一些标点符号的位置不大一样,比如 @ 在右下角,\ 在左下角,稍有不便。要想买到合适的键盘,要问店员要“English US Layout”的键盘。大多数店很可能会告诉你没有货,你可以问问能不能订购。在网店购买的时候,要搜 US 。

在 Apple 零售商,比如 1Store 订购 Macbook 和 iMac 都是可以定制美式键盘的。

其他的笔记本电脑几乎都是北欧键盘,购买前请三思。

也可以多花一些邮费,在 Amazon UK 上买,那里的 US 布局的键盘很多。

笔记本电源线

笔记本电脑的电源线是可以更换的,换成欧标插头会比较方便外出使用。这种线在 verkkokauppa 就有卖,但价格不菲,三十多欧元。其实你可以在一些二手店淘,只要两块钱一根。

路由器和网线

店里卖的也不是很贵。路由器 30+ 欧元,网线 5 欧元左右。

也可以去二手店或二手网站淘二手的,会比较便宜。

正确设置 GNU/Linux 主机名 Hostname 和域名 Domain

为什么要设置主机名

一些软件需要知道主机名才能工作,不然会有警告和错误,比如 Apache。

可以使用 “hostname” 命令查看现在的主机名,用 “hostname -f” 命令查看完整域名(Fully Qualified Domain Name, FQDN)。如果查找 FQDN 失败,你需要按照以下步骤设置。

个人电脑 PC

PC 通常没有域名和固定不变的 IP 地址。通常情况下,PC 的软件是不需要主机名和域名来运行的。但是如果你开启了某些网络服务,就可能需要它了。

如果你没有注册过任何互联网域名,可以用一个假的,比如 yourname.local ,yourname.lan ,yourname.geek 之类的。因为 .local .lan .geek 目前不是 ICANN 顶级域名,因此不可能和任何互联网站点冲突。例子:

  • linux-desktop.guoyunhe.local
  • samba-storage.guoyunhe.local
  • laptop-1.guoyunhe.local

如果你已经注册了一个域名,像是 yourname.com ,你可以用它来命名你的计算机设备的域名。因为你自己就可以确保相同域名不会被用在别处。例子:

  • desktop.guoyunhe.me
  • laptop.guoyunhe.me
  • old-thinkpad.guoyunhe.me

第 1 步:修改 /etc/hostname 文件。主机名只能包含数字,字母和连字符。

linux-desktop

第 2 步:修改 /etc/hosts 文件。把完整域名 FQDN  “linux-desktop.guoyunhe.local” 放到主机名 “linux-desktop” 之前。

127.0.0.1    localhost
127.0.1.1    linux-desktop.guoyunhe.local linux-desktop

第 3 步:重启系统。

检查主机名和域名: “hostname” 命令输出 linux-desktop , “hostname -f” 输出 linux-desktop.guoyunhe.local 。

服务器

如果你有一个服务器,绑定了多个域名:

  • guoyunhe.me
  • www.guoyunhe.me
  • wiki.guoyunhe.me
  • shop.guoyunhe.me

你可以选择 “www”, “wiki” 和 “shop” 中的任何一个作为主机名。也可以另取一个,比如 “server” , “vps-1″。

第 1 步:修改 /etc/hostname 文件。主机名只能包含数字,字母和连字符。

server

第 2 步:修改 /etc/hosts 文件。把完整域名 FQDN  “server.guoyunhe.me” 放到主机名 “server” 之前。

127.0.0.1    localhost
127.0.1.1    server.guoyunhe.me server guoyunhe.me www.guoyunhe.me wiki.guoyunhe.me shop.guoyunhe.me

第 3 步:重启系统。

检查主机名和域名: “hostname” 命令输出 server , “hostname -f” 输出 server.guoyunhe.me 。

验证码:UX 终结者

网络验证码技术虽然是外国人发明的,但却在天朝泛滥成灾。

我们有那么多同学去做 UX ,花了那么多心思给用户提供更好的体验。到最后,被一个验证码全毁了。万恶的验证码,以及走不动的进度条,总是最烦人的。

简单的麻烦——淘宝的滑动验证码

48022-20160305151513034-1640022452

淘宝和微博目前使用这个验证码,原理和 Google 的 reCAPTCHA 2 类似。第一步让用户拖动滑块(触屏或鼠标),然后记录鼠标或手指触摸的轨迹,猜测用户是人还是机器。同时还会测试浏览器的排版引擎,JavaScript 引擎等等,确定这是一个人类使用的浏览器,而不是机器人程序。

在滑动过程中,鼠标位置/手指位置的数据是发送到服务器进行验证的(密文,如下图)。由于这一过程很短,采样率有限,而且直线滑动的人为特征性也不是很明显,即使算法再好也很容易被破解程序骗。

Spectacle.G10324

如果第一步判断不是人或者把握不准,则进入第二步,即传统的图形验证码。

e3d4062a23f78089d8463eb8a87d9414_r

有没有必要

它挡不住破解程序。滑动验证比图片验证要弱,所以图片验证码才会作为第二道防线。只要写一个程序控制鼠标,并且让鼠标轨迹看起来不那么有规律就可以了。(配合浏览器,骗过浏览器性能验证机制)

如果是通过用户的交互行为来判断其是人还是机器,大可不必显示这个滑块。用户在浏览网站或使用应用的过程中必然要进行大量交互,记录这些数据要比滑动那么一下有效得多。

滑动验证是不能证明其对错的,它的数据和算法都是不透明的,而且可以推测其原理极其复杂。即使用户觉得自己是滑动到了最右端,它仍然可以强硬地不通过验证,给用户一种很无奈的挫折感。目前看来这算法确实有问题,因为通过率出奇地低于文字验证码的通过率。如是玄学,寡人不服 XD

这就造成了两种常见结果:

  1. 破解程序没被挡住。
  2. 一些用户验证了两步。

在我使用的十次当中,有七次没有通过滑块验证码,而不得不使用图形验证码。滑动和使用图形验证码所需的反应时间其实是差不多的,这意味着我比使用单一图形验证码反而多用了 70% 的时间。

而某些破解程序,已经能够做到 80% 以上的成功率。令人唏嘘不已。

两步验证码的组合更是浪费时间。

我只能说:这不合理。

四处滥用

昨天,有个人在微博上给我发消息,我用 Android 应用回他一下,然后就冒出了验证码,必须要完成验证才能发送消息。然后连续输入错误,消息没有发送成功。

我今天在淘宝注册账号,更改设置,总共输入了十几次验证码。即使我已经输入了短信验证码,后续还是被要求输入滑动验证码。

对于已经登录的用户,验证码通常是没有必要的。如果想验证用户是不是机器人,为什么不在登录的时候提前验证好?如果想验证用户是不是本人,则应该输入密码或者短信验证码。

我在使用 Facebook 和 Twitter 的这些年里,除了短信验证码和手机令牌,从来没有遇到过滑动验证或文字验证码的时候。Paypal 和 Amazon 的验证码也出现得极少,甚至于我都忘记了他们的验证码是什么样子。

当一个交互过程需要安全检查,而人们又想偷懒的时候:加个验证码吧。

验证码是一个在设计过程中绝对应该尽可能避免的东西。不管形式怎么变,用户都会反感,因为它带来了麻烦,且不止一次。它不能保证安全,任何现有的验证码机制都有破解之法。越复杂的验证码,对于人类的挑战也越大。

Sweet Captcha

Spectacle.N10324

参考链接

  1. Inside reCAPTCHA – Google “点击验证”的原理和简单破解方法
  2. 淘宝滑动验证码研究

MariaDB 全文索引

MariaDB 和 MySQL 的全文索引的建立方式与查找方式,都和普通的索引不同。

建立索引

建立索引的语法可以简单也可以复杂:

FULLTEXT(title)
FULLTEXT(title,content)
FULLTEXT INDEX post_title_content_ft_index(title,content)

查询

1. 按照自然语言查询,匹配完整单词。比如查询 rabbit 可以匹配 rabbit, rabbits, Rabbits,但是查询 rab 不能匹配 rabbit 。

MATCH(title,content) AGAINST('rabbit')

2. 按照字符匹配查询,从单词开头开始。查询 rab 可以匹配 rabbit ,但是查询 bit 不能匹配 rabbit 。

MATCH(title,content) AGAINST('rabbit' IN BOOLEAN MODE)

多列索引与单列索引

对于普通的索引,如果建立了(title,content)的联合索引,就不必单独建立 title 和 content 的索引,也可以搜索单列。但是全文索引就不行,索引的列必须和查询的列完全一致。如果查询 title ,就要建立 title 单列的全文索引;如果查询 (title, content) 就要建立只包含 (title, content) 两列的索引。

搜索中文

MySQL 和 MariaDB 的全文索引一开始就不是为东亚语言设计的。单词断字是按照空格和标点符号的,但是中日韩文字单词之间没有空格。因此搜索“明月”无法匹配“床前明月光”。使用 IN NATURAL LANGUAGE MODE 只有在搜索整句的时候才能匹配到,基本上没有什么用处。使用 IN BOOLEAN MODE 的时候,只能搜索一句的开头,比如“床前*”可以匹配,而“明月*”就不行。* 通配符只能放在单词的结尾。

因此对中文而言,全文索引反而没有 %LIKE% 的效果好,虽然 %LIKE% 的效率很低。小型网站,可以采用。

MySQL 提供了额外的 ngram 技术,支持每 n 个字符断字。这样就可以用逐字搜索中日韩文字。但 MariaDB 还没有引进此功能。

色情界的一颗新星(伪)

周一完成了我的 Porn Button 。最开始的设计是比较隐晦的,但老师说不够直接不够大胆,于是最后的设计就比较淫秽了……题目要求是只能依靠触觉反馈,而不能有视觉和听觉传达。充分体现了以往看过的小黄漫中的精髓,简而言之就是还原性行为。

通过压力传感器采集手指按压的动作,电机拉动皮筋和半个气球使之收缩。本来想用一只避孕套的,然而其强度太差,玩不了几次就坏了。最基本的反射是按压的力气越大,收缩越剧烈。松开手指,收缩也会复位。然而这样一点也不智能也不色情乎。微控制器还会计算按压频率,频率升高也会使收缩更剧烈。有点类似生物的反应了。最后还有,如果玩过头就会触发崩坏——整个机器停止工作,需要二十秒冷却时间。(心领神会即可)

IMG_20160124_151045

最开始想做成这样的盒子。

IMG_20160124_162344

然而最后必须要用一个木头盒子把内容完全封闭起来,让人看不到里面,以隔绝触觉之外的感官。

IMG_20160125_144811

盒子上不会标记这个 Button 的主题,因此体验者需要自己体会联想其中含义。但每个盒子有个字母标签方便评分,老师说必须要把“H”留给我……

IMG_20160126_104712

周一的时候已经给我的一些同学玩过了,都觉得确实是那个意思……嗯。周二展示的时候也获得了强烈反响,相比其他主题这个真是太特殊了。男生比较喜欢,女生的态度则褒贬不一。很多人告诉我她们对我有了新的认识……But, I don’t care!

IMG_20160126_110343

ownCloud 服务器升级 openSUSE

su

zypper ref

zypper up

sudo -u wwwrun php occ maintenance:mode --off

sudo -u wwwrun php occ upgrade

志愿者模式和激励设计

我的硕士毕业设计题目是免费的互助共享社群,群体范围限定在阿尔托大学 Otaniemi 的学生村里。租借,共享,共享消费之类点子很多人已经做过了。这个项目的特别之处在于没有资金流动:借得东西,获取帮助的人不需要付费;借出东西,给予帮助的人也不会得到物质回报。当然,也没有押金。

不需要付费会更加方便,也更经济。但是会带来两个严峻问题:

  1. 在没有租金和押金的情况下,陌生人之间如何信任?物品的价值如何影响人们的选择要不要信任他人?信任建立的过程中,有哪些有趣的互动?
  2. 人们不仅要贡献自己的所有物,还要贡献宝贵的时间。在没有物质回报的情况下,如何激励人们持续贡献,如何给予他们精神回报和满足感?

第一个问题似乎比较容易用实验的方法得到结论,因为我们已经知道在一些案例中,陌生人是可以建立信任的,这就是 Airbnb 的核心理念之一。

第二个问题就难了。 (更多…)

互联网内容的语言

世界上的语言有成百上千中,不只有英文,俄文,法文,西班牙文,中文这样的广义语言,还有方言,古语等狭义语言,比如美式英语,英式英语,简体中文,繁体中文,文言文,吴语,粤语等。地理分布越广,文化组成越复杂的语言,其分支往往越多。中文尤其复杂。

如果要设计一个互联网应用,并希望支持多语言,就有很多问题需要考虑。 (更多…)

霍金:机器人是否会导致人类大规模失业

译文:

如果机器生产一切人类所需,那么结果取决于我们如何分配这些财富。如果机器生产的财富能被所有人共享,每个人都能享受富足的生活;如果机器的拥有者阻止财富的再分配,大多数人最终会非常穷困。

到目前为止,趋势似乎倾向于后者。科技的发展导致不断增加的不公平。

— 史蒂芬·霍金

原文:

If machines produce everything we need, the outcome will depend on how things are distributed. Everyone can enjoy a life of luxurious leisure if the machine-produced wealth is shared, or most people can end up miserably poor if the machine-owners successfully lobby against wealth redistribution.

So far, the trend seems to be toward the second option, with technology driving ever-increasing inequality.

— Stephen Hawking

芬兰语基础对话

Q: Mitä kuuluu? (How are you? 你好吗?)
A: Hyvää, kiitos! (Fine, thanks! 我很好,谢谢!)

Q: Miten menee? (How is it going? 事情怎么样了?进展如何?)
A: Hyvin, kiitos. (Well, thanks! 很顺利,谢谢!)

Hyvää 和 Hyvin 不通用。两者都有“好”的意思,但 Hyvää 接近于英语的 Fine,“我很好”;而 Hyvin 接近于 Well,“事情做得很好”。

Hyvää 的使用非常有限,用于回答“你好吗”、“好吃吗”这种问题。Hyvä 则是单纯地表示“好”,使用场景更多。

A: Mä jätin mun poikaystävän. (I dumped my boyfriend. 我甩了男朋友。)
B: Hyvä! (Good! 干得好!)


Q: Puhutko sinä suomea? (Do you speak Finnish? 你说芬兰语吗?)
A: Kyllä, puhun vähän suomea. (Yes, I speak a little Finnish. 是的,我会说一点芬兰语。)

据老师说,如果你懂一点点芬兰语,当别人问你 Puhutko sinä suomea? 时,回答 Kyllä, puhun vähän suomea. 比 Ei. 要好。这有助于让谈话继续下去,说更多学更多。如果对方知道你在学芬兰语,多半都会热情地跟你聊上两句,指点一二。 (更多…)