30 个免费的 UI 工具箱

图形界面是用户对我们应用的第一印象,因此有一个良好的UI界面是非常之关键,可很好的引导用户满足他们的期望。好的UI风格必须一致,才能让网站和应用容易被理解和使用。

本文收集了30最好的免费用户界面包:

Retro UI Kit by Liam Wolf

Retro UI Kit by Liam Wolf http://dribbble.com/shots/419835-Retro-Ui-Kit-Free-PSD

Free Vector Facebook Profile Timeline by Tatchies

Free Vector Facebook Profile Timeline by Tatchies https://www.facebook.com/Tatchies?sk=app_252136564867844

Design elements by Dennis Flinsenberg

Design elements by Dennis Flinsenberg http://designmoo.com/3020/design-elements/

4 UI Kits by RepixDesign

4 UI Kits by RepixDesign http://cl.ly/D5Fv

PerfectJane UI Kit by Igor Shkarin

PerfectJane UI Kit by Igor Shkarin http://dribbble.com/shots/350488-PerfectJane-ui-kit

Futurico by Vladimir Kudinov

Futurico by Vladimir Kudinov http://designmodo.com/futurico/#comment-16003

Dark UI Kit by Ivo Mynttinen

Dark UI Kit by Ivo Mynttinen http://fireworkslab.com/2011/05/12/dark-ui-kit/

Official Android 4.0 UI Downloads

Official Android 4.0 UI Downloads https://developer.android.com/design/downloads/index.html

Metallic Orange UI Kit by Aaron Nichols

Metallic Orange UI Kit by Aaron Nichols http://dribbble.com/shots/185564-Metalllic-Orange-UI-Kit

Clean UI Pro by Liam Wolf

Clean UI Pro by Liam Wolf http://dribbble.com/shots/412951-Clean-Ui-Pro-Prev

Black and gold UI Kit by Alexandre

Black and gold UI Kit by Alexandre http://www.launchedpixels.com/article-16-black-and-gold-ui-kit-psd/

Free UI Kit by Edgar Vargas

Free UI Kit by Edgar Vargas http://dribbble.com/shots/359745-Free-UI-Kit

Small UI Kit by Studio4

Small UI Kit by Studio4 http://dribbble.com/shots/469193-Free-Small-UI-Kit

UI Design Kit by Alex Boamfa

UI Design Kit by Alex Boamfa http://365psd.com/day/2-91/

Purple UI Elements by Gil Huybrecht

Purple UI Elements by Gil Huybrecht http://365psd.com/day/2-272/

Blaubarry Free UI Kit 2 by Mikael Eidenberg

Blaubarry Free UI Kit 2 by Mikael Eidenberg http://www.mikaeleidenberg.se/page/blaubarry-ui-kit

Chrome UI Kit by Todd Hamilto

Chrome UI Kit by Todd Hamilto http://hazelmade.com/projects.html

Form UI by icherry

Form UI by icherry http://www.icondeposit.com/design:50

Dark UI Kit by Bogdan Condurache

Dark UI Kit by Bogdan Condurache http://themefuse.com/blog/weekly-freebie-dark-ui-kit/

Free iPhone and iPad App UI Kit by Pixeden

Free iPhone and iPad App UI Kit by Pixeden http://www.pixeden.com/mobile-apps/iphone-and-ipad-app-ui-kit-psd-vol1

Black UI Kit by Jonathan Moreira

Black UI Kit by Jonathan Moreira http://dribbble.com/shots/156769-Black-UI-Kit-free

Dark UI Kit by Lukas Troup

Dark UI Kit by Lukas Troup http://www.breezyprague.com/freebies/dark-web-and-apps-ui-kit/

Light UI Kit by Matt Gentile

Light UI Kit by Matt Gentile http://www.icondeposit.com/design:16

iTunes UI Kit by Susumu Yoshida

iTunes UI Kit by Susumu Yoshida http://freeuikits.com/free-psd-itunes-ui-kit/

Clean UI Kit by Matt Gentile

Clean UI Kit by Matt Gentile http://www.icondeposit.com/design:19

Tron Glow UI Set by Thiyagu Sivanganam

Tron Glow UI Set by Thiyagu Sivanganam http://dribbble.com/shots/446400-Tron-UI-Set

Hand Drawn UI Kit by Vladimir Carrer

Hand Drawn UI Kit by Vladimir Carrer http://www.handdrawnicons.com/#Hand-Drawn-UI-Kit

Moonify Ui by Joachim Löfstedt

Moonify Ui by Joachim Löfstedt http://365psd.com/day/2-63/

Media Player GUI PSD

Media Player GUI PSD http://freeuikits.com/media-player-gui-psd/

Detailed UI Kit by Matt Gentile

Detailed UI Kit by Matt Gentile http://www.icondeposit.com/design:24

via awwwards

开发者应该关注的五项 Web 新兴技术

Bruce Lowson是Opera开放web标准的撰写人员之一,一些没有包含在HTML5之内的浏览器技术十分奇妙,包括WebGL和SVG,作者希望通过本文与共同爱好者们分享。

最近一位HTML5专家Rich Clark(作者的好朋友)为大家做了一个HTML5 APIs的简介,在文章中为大家指向了一个令人迷惑的网页(web平台:浏览器技术http://platform.html5.org/),其中包含两 个很长的专栏和小正文并提及到一些让人感到迷茫的技术,例如“window.crypto.getRandomValues”和“DOM Mutation observer”。

别担心,咱们不去管那些啦,因为有些还远远没有完成呢,在浏览器中见到它们还要等一阵子。然而,其它已经在浏览器中,或者距离您很近,或者马上就要 出现。人们可能将称之为“HTML5”,尽管它们并不是。其实,它们都属于令人激动的新兴Web技术(New Exciting Web Technology),值得每个开发者关注。

 

WebGL

WebGL是一种基于Web的Graphic库,由非盈利组织Khronos运营,目前结合HTML5<canvas>元素广泛应用在3D图形开发中。

学习WebGL比较困难,因为它是底层开发——它运行在GPU上面,而且它实际上是一个OpenGL的JavaScript port,是一种游戏开发者使用的已经长期建立的API集。WebGL的主要受众是哪些已经拥有丰富OpenGL经验的游戏开发者,他们可以通过 WebGL为web平台编写游戏。

好在有很多资源可以帮助您学习WebGL,这些资源不仅仅是关于游戏开发的,还有很多奇幻的图形、视觉和音乐视频等方面。作者个人比较推荐的是:

 

WebGL目前在所有桌面浏览器(发布版和开发频道)中都支持,除了IE10(微软表示不支持)。对于移动产品来说,已经在Opera Mobile 12中发布了,最终会出现在Android,BlackBerry Playbook 2.0,Nokia N900,SonyEricsson Xpertia Android Phones等以及Firefox移动浏览器中。

SVG

SVG(Scalable Vector Graphics)已经在Opera,Firefox,Chrome中存在多年了,但是直到IE9开始支持它之后才渐渐变得主流一些它在 HTML5<Canvas>的光环下显得有点暗淡,尽管SVG和HTML5<canvas>是面向不用应用的不同工具。

Canvas2D可以迅速paint图形到屏幕上面,这一点很犀利。但是其全部功能就是paint了,没有内存来做那些(位置,顶层或其他)其他功 能。如果您需要那种book-keeping工作,就只能自己用JavaScript实现,因为Canvas2D不会把DOM保存到内存中,也正因为如此 Canvas2D速度快,十分适合第一人称射击类应用。

与Canvas2D不同,SVG在您需要保存DOM的时候就给力了。使用JavaScript,所有的Objects都可以移动并且与动画无关。您 可以试试Daniel Davis做的复古类SVG游戏Inbox Attack(http://people.opera.com/danield/svg/inbox-attack.svg)来体验一下,并且看看源代 码来了解如何完成动画效果。

因为shape和path是用Markup来描述的,所以他们可以用CSS来定型。与<canvas>不同,text在SVG中保持 text格式并且更加的灵活,更加可扩展,更加易于访问。在Canvas中,text变成了像素,就像Photoshop中的图形text。

SVG最强大的特性是它基于矢量,这样您的插图,图形和UI图标等都是矢量图了,这样无论是在50英寸的电视屏还是手机屏幕桌面上,看上去感觉都是 一样的清晰。在当今这样一个web应用无处不在的时代,SVG图形甚至可以包括媒体查询(http://my.opera.com/ODIN/blog /2009/10/12/how-media-queries-allow-you-to-optimize-svg-icons-for- several-sizes),可以是响应式的,可以根据不同的目标设备做尺寸的调整。

综上所述,在最新的桌面浏览器中SVG已经能被广泛支持了。在移动产品方面的支持总体上来说也很好,以及预期在Android 3.0版本之前原生浏览器也会支持它了。

Daniel Davis有一些SVG 介绍性的资源(http://my.opera.com/tagawa/blog/learning-svg),作者个人也推荐一本免费的电子 书:Learn SVG(http://www.learnsvg.com/book-learnsvg/),您也可以看看《SVG or Canvas?Choosing Between the Two》(http://dev.opera.com/articles/view/svg-or-canvas-choosing-between- the-two/)来了解二者的区别。

getUserMedia

不像那些被错误地称为HTML5的API,getUserMeida(在下文中简写为gUM)有个相对正当的理由:起初它是HTML5<device>元素,之后它改名了然后离开了W3C WebRTC规范集合。

gUM允许访问用户的摄像头和麦克风,本来是在WebRTC规范中在浏览器中进行P2P视频会议的,当gUM拥有了其他的用途,就离开了WebRTC。

摄像头的访问最终在Opera12安卓版,Opera桌面实验室和Google Chrome Canary里面实现了,不过Opera和Chrome都还没有实现麦克风的接入。

W3C规范依然在用,所以Opera和Webkit有不同的语法规范,这样的麻烦被一个叫做The gUM Shield(https://gist.github.com/f2ac64ed7fc467ccdfe3)的小JavaScript片段搞定了。如果 您想更深入地了解这方面请看作者的另一篇文章:It’s Curtains for Marital Strife Thanks to getUserMedia(http://html5doctor.com/getusermedia/

当视频从设备开始流传输的时候,源数据可以被做成变成了<video>元素,如果需要的话还可以被定为到屏幕外面,然后拷贝 到<canvas>里面进行所需要的操作。Paul Neave写的《HTML5 变成玩具!》(http://neave.com/webcam/html5/)为了方便操作把流媒体数据拷贝到WebGL中。作者在.net 杂志的226话有采访他的报导(http://www.netmagazine.com/shop/magazines/april-2012-226)。

如果想把web app的功能做得像native app,gUM需要做很多的工作。试了一下Neaver的gum和WebGL 在Opera Mobile 12上面的demo,感觉和平台独有的app一样富有响应式并且很时髦。当在浏览器产品中其功能被广泛应用的时候,作者语言会有很多基于web的QR代码 阅读者以及很多增强现实的应用。

File APIs

W3C File APIs允许JavaScript访问本地文件,其中最常用的API是FileReader,可以从Opera,FireFox,IE10平台等的预览版看到(不包括Safari)。

这一份W3C规范“为了在web应用中提供API来代表文件对象,以及编程选择和访问数据”。例如:你可以上传文件到浏览器中,并本地查找相关信息 (例如文件名,尺寸,类型)而不需要到服务器端。您也可以打开文件,操作内容,这样可以加强基于浏览器的应用的交互性,用起来更像是本地应用。

另一个常用的用途是使传统的图像上传兑换狂更具有Web2.0特色:通过允许在浏览器内部的Drag and Drop,而不是本地文件系统中改变。

您可以通过使用一个普通的<input type=”file”>开始,然后循序渐进地提高。HTML5 Drag&Drop支持特征检测,如果存在的话就使用<div>替换<input>,那就是您的drag图像目标了。当 图像被drag到目标的时候,使用File Reader API来显示一个指甲盖大小的图像。您可以看一下Remy Sharp的demo(http://html5demos.com/file-api)。

还有很多写文件和操作文件系统的规范,不过这些对目前的跨浏览器应用来说还不太够:

W3C文件API:(http://dev.opera.com/articles/view/the-w3c-file-api/)非常基础的介绍。

开发文件系统API:(http://www.html5rocks.com/en/tutorials/file/filesystem/)HTML5 Rocks文章,(仅限Chrome)。

Feature-detecting, progressive enhancement and upgrade messages(特征检测,渐进式增强和消息通知)

诚然,在没有那些奇幻的API的时候,大家总是试图使用渐进式增强和HTML语义的方法让网站照常工作。然而有时候却不能这样,例如Paul Neaver的《HTML5变成玩具》中,如果gUM和WebGL现在不存在的话,其网站不能有什么补救措施了,整个网站的核心都没了。

在这样的情况下有两种典型的惯例:要么是显示一条消息说“你的浏览器太垃圾了,塞油哪啦”或者说“你必须用Chrome6/Firefox 4/Opera10等[插入能支持你应用的浏览器]才能访问”。第一种方法又没用又粗鲁,没有建议和补救措施;第二种方法是个临时办法,因为六个月之内所 有浏览器可能都能支持你现在使用的技术了,让你在网站上留下的信息过时:例如您写的解决方案是建议使用Firefox4来访问,可是半年后用户安装着 Firefox7回来访问你的页面了,这可就真的没救了。

如果您真的不能使用渐进式增强,那么就用新型的HTML 5 Please API吧(http://api.html5please.com/)。这是Jon Neal,Divya Manian和其他几位大虾创作的。通过使用它,可以先查询caniuse.com然后返回一个最新(能支持你的新特性的)的浏览器版本列表。

如果您已经做了一个需要Canvas或WebSQL DB技术的DEMO或者网站,恐怕你已经处在一个这样的尴尬境地了:您只是在告诉访问者们他们的浏览器不咋地。但是您不能只推荐他们使用一个能支持这些特 性的浏览器来补救,例如“找个支持WebRTC性能的浏览器再来吧”,这样对于大家都没啥效果。

HTML5 Please API把开发人员的语言(和特性)翻译成用户能理解的语言(浏览器)。通过调用这个API你就可以得到一些HTML返回值来告诉访问者,或者返回一个带有 相关数据的JSON对象(包括浏览器Logo及下载介绍等信息)。这样您可以根据不同的客户来显示不同的补救信息了。

使用这种方式最令人欣慰的是:如果所有新特性在客户当前浏览器的升级版都能支持的情况下,Please API值建议访客对浏览器升级,而不是让访客单纯为了访问你这个页面而更换浏览器。效果图如下:

结束语:

正如您所看到的,大量的令人惊喜的新技术正在接踵而至,您着手研究上述某项技术的时候恐怕又要担心更新鲜的技术到来了吧。希望您开发得愉快,请记得让您所开发的应用在尽可能多的浏览器上面测试一下。

Java 8 新功能

我们已经急不可待想知道Java 8可用的新功能,其中大部分是以前为Java 7设计的新功能,但不得不推迟。现在,甲骨文承诺,他们在“革命”,而不是“进化”新版本。未来Java语言有什么呢?

马克·雷纳德,甲骨文的Java的总设计师,在2011年JavaOne大会上,给观众提到了Java 8预计会有什么,并谈到即将到来的Java 9一点点计划。这是不幸的,本来将会在Java 7实现的五个重要改进,有两个由于Java构建发布日期而不得不作罢。马克承认,Java 7的更新是非常重要的,但他暗示,Java 8的发布会改变语言基本水平的上运作方式。从即将到来的功能列表来看,非常有可能是真的。

在Java 8发布包含两个主要项目:Lambda和Jigsaw。Lambda项目使Java有能力,更有效地工作于多核心处理系统,多核是Java运行最常见的硬件,这对在这些系统上获得更好的的处理性能非常有意义。 LAMBDA项目还包括另外一个新的处理系统,可使代码像数据一样建模的编程模式。这个新系统将允许方便地使用Lambda表达式,因为这是处理多核处理器最好的方式。这些新功能包括: 

  • 使用Lambda表达式
  • 扩展目标类型
  • 方法和构造方法引用
  • 缺省的方法

如果你是想知道Lambda项目的更多信息,去这里:http://openjdk.java.net/projects/lambda/

Java 8 第二个令人兴奋还有 Jigsaw 项目。 Jigsaw项目的目标是创建在JDK设计和实施模块系统有用的方式,然后应用该系统到JDK本身。这一点使处理大块代码更易于管理,并促进跨应用程序的代码复用和更好的维护。 Jigsaw项目将带来许多新的功能涉及封装,重构,版本和模块集成。

 

Jigsaw项目的进一步细节,可在这里:http://openjdk.java.net/projects/jigsaw/

此外,除了这两个项目,将有一些其他的语言功能的补充,如核心Java库的升级,更容易快速的进行并行计算,并虚拟扩展方法允许加入方法指定引用到缺省实现的接口,将为代码部署选项增加一个新的日期/时间API。

 

JavaOne会上甲骨文展望了未来,讨论了Java 9候选发展的关键领域。他们正在寻找加入一个自我调整的JVM,改善本地集成和大规模多核的可扩展性。他们还着眼于通过添加新的元对象协议实现跨语言支持和云应用资源管理。Java正成为编程世界上最常用的编程语言,要让每个人对新功能都高兴变成一个问题。

来源: http://www.learncomputer.com/java-8-new-features/                中文编译:IT瘾  转载请保留原文链接

创建响应式的页面 – 20个炫酷的 jQuery 插件

FitText

 

Blueberry – A simple, fluid, responsive jQuery image slider

 

Response JS: mobile-first progressive enhancement in HTML5

 

The Heads-Up Grid

 

jQuery Masonry

 

Isotope

 

scrolldeck

 

Elastislide – A Responsive jQuery Carousel Plugin

 

Responsive Image Gallery with Thumbnail Carousel

 

Supersized – Full Screen Background Slideshow jQuery Plugin

 

PhotoSwipe

 

ResponsiveSlides.js

 

Automatic Image Montage with jQuery

 

Hoverizr – A responsive jQuery Image manipulation and overlay plugin

 

FitVids.JS

 

Doubletake

 

Adaptive Images in HTML

 

Convert a Menu to a Dropdown for Small Screens

 

计算机战争背后的死亡商人揭秘:漏洞高价出售

计算机战争背后的“死亡商人”

上个月,谷歌(微博)在温哥华举办了一个比赛,会上这家搜索巨头以安全著称的Chrome浏览器被黑客们两度攻陷。这两种新的黑客攻击方法都利用了一个作弊网站来绕过Chrome的安全保护,结果成功侵入了目标电脑。虽然这两次黑客攻击都攻破了谷歌的防护措施,但这只是第三次真正成功地入侵谷歌系统。

来自法国安全公司Vupen的黑客团队采取了不同的做法。他们没有参加谷歌的比赛,而是通过破解Chrome的安全保护以赢得惠普(微博)在同一场大会上赞助的另一场黑客比赛。虽然谷歌向那两位赢得其比赛的黑客各提供了6万美元奖金,条件是他们要告诉谷歌他们的攻击细节,并帮助谷歌修复他们利用的漏洞。Vupen的CEO兼首席黑客查欧基·贝克拉(Chaouki Bekrar)表示,他的公司根本不想将其秘密技术告诉谷歌——当然不会为了6万美元而进行这种愚蠢的交换。

“我们不会把这种技术告诉谷歌,即使给我们100万美元也不行。”贝克拉说,“我们不想告诉谷歌任何可以帮助他们修复这个漏洞或其他类似漏洞的知识。这是为我们的客户保留的。”

毕竟,这些客户的目的不是修复谷歌或其他任何商业软件供应商的安全漏洞。他们是政府机构,购买了“零天攻击”(指在软件安全漏洞被发现的头一天便遭到攻击——译注)技术或那些利用了软件中未公开漏洞的黑客技术。他们的目的显而易见,就是侵入或干扰犯罪嫌疑人和情报目标的电脑和电话。

在阴暗但合法的安全漏洞市场上,“零天攻击”技术可能会使黑客从软件公司手中得到2,000或3,000美元,但打算秘密使用这个漏洞的间谍和警察可能会给出10倍甚至100倍的价钱。贝克拉没有详细说明Vupen的确切定价,但Frost&Sullivan公司(将漏洞研究领域的“2011年度创业公司”奖授予了Vupen)的分析师表示,Vupen的客户每年支付大约10万美元的会员费,从而获得购买该公司技术的特权。

这些黑客技术包括了攻击微软(微博)Word、Adobe Reader、谷歌安卓系统、苹果iOS系统和许多其他软件的技术。Vupen在惠普举办的黑客比赛上夸口说,他们已经掌握了各大浏览器的漏洞。熟悉该公司业务的知情人士表示,Vupen销售目录上仅一项技术的价格常常都远远超过其六位数的会员费。

即便价格如此之高,Vupen也没有将其发现的安全漏洞只卖给一家,而是同时出售给多个政府机构。这种商业模式常常使其客户你争我夺,生怕在间谍军备竞赛中落后。

贝克拉声称,Vupen会仔细核查客户的背景,只向北约国家的政府和“北约的合作伙伴”出售安全漏洞。他表示,该公司还有其他的“内部程序”来过滤那些非民主国家,并要求买家签署合同,不得公布或转售这些漏洞。但即便如此,他承认该公司的黑客攻击方法仍有可能落入不法分子之手。“我们尽力确保这些漏洞不会从买家的手中外流。”贝克拉说,“但如果你将武器出售给别人,就无法保证他们不会再卖给其他人。”

这种武器贸易的比喻很合Vupen批评者的胃口。隐私保护活动人士克里斯·索菲安(Chris Soghoian)和开放社会基金会(Open Society Foundations)的同仁们把Vupen称作“为计算机战争提供弹药的当代死亡商人”。在有个漏洞被售出后,索菲安说:“它在黑洞里消失了。他们不知道这个漏洞被如何利用,是否得到了许可,或者是否违反了人权。”

这个问题在去年明明白白地摆在了世人眼前。当时,加州森尼维尔市蓝衣系统公司(BlueCoatSystems)的监视装置被出售给了一家阿联酋公司,但最后却在叙利亚被用来监视不同政见者。“Vupen不知道他们的漏洞被如何利用,他们可能也不想知道,只要支票兑现就行。”

Vupen并不是唯一一家出售安全漏洞的公司,但与这家位于法国蒙彼利埃的小公司相比,其他买卖黑客技术的公司,包括Netragard和Endgame以及Northrop Grumman和Raytheon等规模更大的公司,则更加守口如瓶。贝克拉用“透明”来形容自己的公司,而索菲安则说这家公司“无耻”。

“Vupen就是这个行业的Snooki(美国真人秀节目《泽西海岸》的明星,行为大胆出格——译注)。”索菲安说,“他们寻找宣传自己的机会,但他们甚至没有意识到,他们根本不入流。他们就是漏洞交易领域里的《泽西海岸》。”

即使如此,贝克拉也不愿公布收入数据,虽然他坚称公司实现了盈利。但有个人愿意公布这类销售数据。他是南非的一位黑客,人称“Grugq”,住在曼谷。一年多来,除了担任安全研究员的薪水之外,Grugq还以高端漏洞经纪人的身份赚“外快”,为其黑客朋友和其政府买家牵线搭桥。他表示,他收取15%的销售佣金,今年很可能从这类交易中挣到100多万美元。他说:“我现在拒绝做2.5万美元以下的生意。”仅在去年12月,他就从政府买家手中赚了25万美元。“年终时的收入简直肥得流油。”

但Grugq认为,贝克拉的初创公司都是自己寻找安全漏洞,因此更加赚钱得多。“他真他X的聪明。”Grugq说,“主动权完全在他手里。他可以要求客户按照他提出的价格购买,否则就卖给其他人。”

尽管贝克拉谈到了“透明”,但关于他的个人经历和在创建Vupen之前的工作,甚至是自己的年龄,他都不愿意多说。Vupen是他创建的第三家公司,专注于发现软件中的安全漏洞。他之前创建的K-Otik和FrSIRT公司都曾公布他们发现的漏洞。即便是在2008年创建了Vupen(这个名字代表了“漏洞研究”和“渗透测试”)之后,贝克拉及其研究人员起初也是与软件供应商合作,帮助他们修复漏洞。但从360资本合伙公司(360 Capital Partners)和甘特合伙公司(Gant&Partners)获得150万美元风险投资之后,贝克拉发现公司可以赚到远远更多的钱,方法就是不公开公司发现的安全漏洞,而是以高价出售。

后来,贝克拉甚至公开嘲笑那些产品被其黑掉的公司。2011年5月,Vupen发布了一段视频,显示该公司可以侵入运行Chrome的电脑,但没有向谷歌提供进一步的信息。当谷歌回应称Vupen利用的是Chrome的Flash插件而不是Chrome本身时,贝克拉在Twitter上指责谷歌试图淡化其安全漏洞,并说谷歌“太差劲”。作为回应,谷歌的安全人员指责贝克拉无视用户隐私,并说他是“挑战道德的机会主义者”。

贝克拉对这种批评不屑一顾。“我们不会这么努力地去帮助数十亿美元的软件公司编写安全的代码。”他说,“如果我们想做志愿者,我们会去帮助无家可归的人。”