腾讯Web前端团队代码规范
http://alloyteam.github.io/CodeGuide/
2048 分数:0 计数:0 玩法:用方向键操作 提示: 代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>2048</title> <style> *{margin: 0; padding: 0} #div1024{width: 600px; margin: 50px auto;overflow: hidden} .main{float: left;margin-right: 50px;}...
前言 年前刚刚离职了,分享下我曾经出过的一道面试题,此题是我出的一套前端面试题中的最后一题,用来考核面试者的JavaScript的综合能力,很可惜到目前为止的将近两年中,几乎没有人能够完全答对,并非多难只是因为大多面试者过于轻视他。 题目如下: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () { alert (2);}; Foo.prototype.getName = function () { alert...
节食并不能减轻体重?
节食反而会让你超重?
神经学家Sandra Aamodt用自己的节食经历告诉大家:节食并不能有效减肥,过度节食反而会反弹地更厉害。大脑对身体重量有“自己的想法”,对体重有一个设定范围,并根据身体情况自行调节。而关注怎样吃让自己舒服才是最好的方法。
(下文根据视频内容进行整理总结)
为什么节食不能减肥?大脑在调控你的体重
有过节食减肥经历的人想必都有这样的感觉,不管节食了多久,减去的体重总会反弹回来。因为大脑在调控着我们的体重,它对体重有一个设定的范围——“设定值”,并根据身体的具体情况自动进行调节。
当我们进入节食的状态,身体的自我保护机制就会起作用,你的新陈代谢就会被抑制,所以最终你并不能瘦下来。
节食更容易超重
当我们节食,刻意的去少吃或者不吃的时候,如果小小的放纵一次,比如一勺冰激凌,很可能造成节食者的暴饮暴食,当你暴饮暴食后,又觉得违背了你的意志,就又陷入了节食之中。而这种节食和暴饮暴食的循环,也预示着体重的增加和饮食失调的产生。
如何控制自己的健康
即使不能减肥,也能通过控制生活方式来控制自己的健康。让我们来看看这个进行了14年的有关四种健康习惯与死亡风险的研究。
四种健康习惯:吃足够的水果和蔬菜、一个星期锻炼三次、不吸烟、饮酒节制。
下图中的纵轴表示死亡风险,水平坐标上的数字0、1、2、3、4表示一个特定的人拥有健康习惯的个数。从左至右依次是正常者、超重者、肥胖者。结果显示,生活习惯越健康,研究中人们死亡的可能性越小。
并且对于超重者和肥胖者来说,多一种健康生活方式的人,死亡率即可处于正常水平;而拥有四种健康生活方式的人,不论体重如何,死亡都是最低的。
所以,掌握健康的生活方式是关键,降低体重并不是主要目的。
该怎么做来防止增重
节食五年之后,大多数人体重会反弹,其中百分之四十的人甚至比原来还要重。
如果节食并不起作用,而且还有很多弊端,那我们该如何去做?
Sandra Aamodt教授告诉我们,学会留心(mindfulness)。在吃上面多加注意,学会了解身体发出的信号,这样可以让你在饿的时候吃,在饱的时候停下来。因为大量的增重归结为“在并不饿的时候吃东西”。学会在食物面前变得更加释然。
节食的附带危害
节食既浪费时间又浪费精力。人的意志都是有限的,当你把意志放到节食中,你就不再有精力去完成其他的想法或者计划。任何依赖坚持不懈的行动计划,当你把注意力分散到其他方面的时候,最终一定会以失败告终。
//转注:这是一篇趣文哈 小弟年前跳槽进了一家通信公司,开发语言用C#,不过到了公司发现他们的大哥竟然要求用汉字编程,当时的官方解释是不用写代码注释,小弟当前以为只是把类名,变量名,方法名等改成汉字而已,无关大紧(虽然个人认为这是非常“NB”的作法)。可后来才发现他们竟然比这更“NB”的。小弟现列举两条供大家鉴赏: 一、 比如封装一个连接数据库的方法 用“传统”C#的写法应为(已经按我原来相像的汉字编程来写了) 定义: class 数据库连接对象 { 连接(string 服务器名 , string 用户名, string 密码, string 数据库名) } 调用: 数据库连接对象.连接(服务器名 , 用户名, 密码, 数据库名) 用我公司的“汉字C#”的写法是这样(由于定义实在是太麻烦,就不写出了) 调用: 数据库连接对象.连接到(服务器名).用户为(用户名).密码为(密码).数据库为(数据库名称) 关于这第一条的官方解释是这样代码读着通顺,就像文章一样,任何人都可以看得懂! ……%¥……@¥%!%&*%@!...
如何编写规范的Python代码?Python开发文档又该怎样写?Python官方提供的编码风格指南——PEP 8中,明确回答了上述两个问题。PEP 8内容虽然广泛, 但是大部分开发团队并没有止步于PEP 8中的要求。像Flask框架的开发团队Pocoo,就是在此基础上,编写了自己内部的编码规范,对PEP 8中的规定作了细微的调整,并进行了扩展延伸。我们一起来看看Pocoo团队会给出怎样的答案呢。(另外,也可以参考本站编译的Python开发指南:最佳实践精选一文,学习一些Python开发中的最佳实践。) Pocoo Team简介 Pocoo团队的成员来自Python社区,统一以Pocoo的名义参与多个Python库和应用的开发工作。团队由Georg Brandl和Armin Ronacher领导。 团队项目 Pocoo团队开发了许多广受欢迎的项目,其中包括: Flask微网络开发框架 Jinja2模板引擎 Pygments语法高亮包 Sphinx文档处理器 Werzeug WSGI工具集 Pocoo团队编码风格指南适用于所有Pocoo团队的项目。总体来说,Pocoo团队编码风格指南严格遵循了PEP8的要求,但略有一些不同之处,并进行了一定的扩展延伸。 代码布局(General Layout) 缩进(Indentation) 4个空格。不能使用Tab制表符,没有例外。 每行最大长度 79个字符,如果必要可以接受最多84个字符。尽量避免代码嵌套层级过多,可以通过巧妙地使用 break、 continue和 return语句实现。 长语句换行...
MVC模式是软件工程中一种软件架构模式,一般把软件模式分为三部分,模型(Model)+视图(View)+控制器(Controller); 模型:模型用于封装与应用程序的业务逻辑相关的数据以及对数据处理的方法。模型有对数据直接访问的权利。模型不依赖 “视图” 和 “控制器”, 也就是说 模型它不关心页面如何显示及如何被操作. 视图:视图层最主要的是监听模型层上的数据改变,并且实时的更新html页面。当然也包括一些事件的注册或者ajax请求操作(发布事件),都是放在视图层来完成。 控制器:控制器接收用户的操作,最主要是订阅视图层的事件,然后调用模型或视图去完成用户的操作;比如:当页面上触发一个事件,控制器不输出任何东西及对页面做任何处理; 它只是接收请求并决定调用模型中的那个方法去处理请求, 然后再确定调用那个视图中的方法来显示返回的数据。 下面我们来实现一个简单的下拉框控件,我们可以对它进行增删操作;如下图所示: 代码如下: /* 模型用于封装与应用程序的业务逻辑相关的数据以及对数据处理的方法。模型有对数据直接访问的权利。 模型不依赖 "视图" 和 "控制器", 也就是说 模型它不关心页面如何显示及如何被操作. */ function Mode(elems) { // 所有元素 this._elems = elems;...
0x00 简介 OWASP移动安全漏洞Top 10中第4个就是无意识的数据泄漏。当应用程序存储数据的位置本身是脆弱的时,就会造成无意识的数据泄漏。这些位置可能包括剪贴板,URL缓存,浏览器的Cookies,HTML5数据存储,分析数据等等。例如,一个用户在登录银行应用的时候已经把密码复制到了剪贴板,恶意应用程序通过访问用户剪贴板数据就可以获取密码了。 0x01 避免缓存网络数据 数据可以在用户无意识的情况下被各种工具捕获。开发人员经常忽视包括log/debug输出信息,Cookies,Web历史记录,Web缓存等的一些数据存储方式存在的安全隐患。例如,通常浏览器访问页面时,会在临时文件夹下保存页面的html,js,图片等等。当页面上包含敏感信息时,这些信息也会存储在临时文件中。这就造成了安全隐患。在移动设备上尽可能不要存储/缓存敏感数据。这是避免设备上缓存的数据泄漏的最好的方式。 开发建议 为了防止HTTP缓存,特别是HTTPS传输数据的缓存,开发人员应该配置Android不缓存网络数据。 为了避免为任何Web过程(如注册)缓存URL历史记录和页面数据,我们应该在Web服务器上配置HTTP缓存头。HTTP协议1.1版中,规定了缓存的使用。其中,Cache-Control: no-store这个应答头可以满足我们的需要。Cache-Control:no-store要求浏览器必须不存储响应或者引起响应的请求的任何内容。对于Web应用程序,HTML表单输入可以通过设置autocomplete=off让浏览器不缓存值。避免缓存应该在应用程序使用后通过对设备数据的取证进行验证。 如果你的应用程序通过WebView访问敏感数据,你可以使用 clearCache()方法来删除任何存储在本地的文件。 0x02 Android:避免GUI对象缓存 由于多任务处理的原因,整个应用程序都可以驻留在内存中,所以Android应用程序界面也会驻留在内存中。发现或者盗取了设备的攻击者可以直接查看到仍然驻留在内存中的用户之前查看过的界面,并看到仍显示在GUI上的所以数据。银行应用程序就是一个例子,一个用户查看了交易记录,然后“退出”应用程序。攻击者通过直接启动交易视图activity可以看到以前的交易被显示出来。 开发建议 1.当用户注销登录的时候退出整个app。这虽然是违反android设计原则的,但是却更加安全,因为GUI界面被销毁、回收了。 2.在每一个activity(界面)启动的时候检测用户是否处于登录状态,如果没有则跳转到登录界面。 3.在用户离开(切换)应用界面或者注销登录时清除gui界面的数据 0x03 限制用户名缓存 如果缓存了用户名,在运行时,用户名会在任何类型的身份验证之前加载进内存,从而允许潜在的恶意进程截获用户名。 开发建议 很难做到既便利地为用户存储用户名,同时又能避免不安全的存储或潜在的运行时拦截造成的信息泄漏。尽管用户名不像密码那样敏感,但它属于隐私数据应该得到保护。一个安全性较高的缓存用户名的可行的方法就是存储掩蔽的用户名,而不是真实的用户名,如在身份认证的时候用hash值代替用户名。这个hash值可以包含一个唯一的设备token,这个设备token是在用户注册时获取的。使用hash和设备token的好处就是真实的用户名并没有存储在本地,也不会在加载进内存后得不到保护,将这个值复制到其它设备或者在web上使用都会因获取到的设备token值不同而不能使用。攻击者必须挖掘更多的信息(明文帐号、设备特征码、密码)才能成功的窃取用户凭证。 0x04 留意键盘缓存 键盘缓存是意外的数据泄漏问题之一。安卓键盘包含一个用户字典,如果一个用户在文本框输入一些文本,输入法就可能通过用户字典缓存一些由用户输入的数据,用于以后对用户的输入进行自动纠错。而此用户字典不需要什么特殊权限就在任何应用中使用。恶意软件可以通过获取键盘缓存提取这些数据。缓存的内容超出了应用程序的管理权限,所以应用程序不能从缓存中删除数据。 攻击示例:https://www.youtube.com/watch?v=o6SlUy5mmBQ 开发建议...
0×00 背景介绍 很多人都有在使用手机时误删数据的经历,比方说和女朋友分手后把之前一起玩耍的影像资料删除了,结果没过几天又复合了,某天女朋友想和你一起回忆某个温馨时刻,这时候拿不出照片或视频来会非常尴尬。为了避免这类人(Xi)间(Wen)惨(Le)剧(Jian)发生,很有必要掌握一下数据恢复技术。 传统的数据恢复往往借助软件即可完成,例如Easy Recovery,Recuva之类。但这类软件对新的安卓系统手机往往无能为力了,因为从几年前开始,大部分手机生产厂商用“媒体设备”MTP模式替代了大容量USB存储模式,而传统数据恢复软件无法直接对MTP模式加载的手机存储空间进行数据恢复,如图所示。 因此有必要研究适合于目前安卓系统手机的数据恢复方法,本文中主要讨论手机内部存储空间的数据恢复,对于手机TF卡的数据恢复采用传统手段即可完成,本文不再讨论。 目前手机数据恢复的常见方法有三种: 第一种方法:物理拆解芯片进行数据恢复。通过拆解并取出存储芯片后,借助硬件工具读取芯片的数据后进行数据恢复。这种方法的优点在于不会对存储芯片写入新的数据,能够较好的保护数据的原始状态。缺点也显而易见,这种方法对工具和动手能力要求较高,稍有不慎手机和芯片都有报废风险,普通用户较难独立完成这类操作。 第二种方法:借助安装在PC端的第三方工具进行数据恢复。目前网络上名气较大的安卓数据恢复工具主要有Wondershare Dr.Fone,Tenorshare-android-data-recovery,7-Data Recovery Suite 等软件,但这类软件普遍存在的问题是,常常无法与手机建立连接,或者在连接后扫描时提示失败,可能是由于安卓系列手机系统定制化程度较高,每家手机制造商都对安卓系统做了或多或少修改的缘故,导致实际效果并不理想,相信很多朋友在用这类软件时也遇到了类似的问题。 第三种方法:借助安装在手机上的安卓APP进行数据恢复。由于APP直接运行在手机上,因此不存在第二种方法中软件与手机连接失败的问题,这类软件恢复的效果好坏很大程度上取决于软件开发人员使用的数据恢复算法能力的优劣。这类软件有很多,以某数字清理大师为例,某数字清理大师的隐私粉碎功能能够扫描到用户之前删除的部分类型文件,并确实能够对这类文件进行恢复。但其缺点也有很多,主要有四点:一是能够恢复的文件类型有限,主要是针对照片、短信、通话记录等;二是照片时只能一张一张点开恢复,无法批量恢复,操作繁琐;三是数据恢复算法不够强,与传统数据恢复工具如R-Studio和EasyRecovery相比存在不小差距;四是数据只能恢复到手机内部存储空间中,无法选择恢复到SD卡,因此手机原数据存在被新恢复数据覆盖的风险。当然,这些缺点可能与这款软件的定位是隐私粉碎而非隐私恢复相关,这些缺点在很多同类软件上也同样存在,特别是数据恢复能力方面很多软件在这方面功能实在是过于孱弱,第三种方法由于存在诸多弊端同样不能让人满意。 0×01 正确恢复安卓手机数据的姿势 那么到底有没有效果更加理想的数据恢复方法,答案是肯定的。其实以上方法中最大的问题在于,这类软件要么根本不能用,要么恢复能力太弱。如果能借助传统的数据恢复工具的强大算法,那么这类问题自然迎刃而解。下面介绍一种解决方案,能够在很大程度上解决以上方法中的瓶颈。本文中以Nubia Z9 Max NX510J为例进行说明,步骤比较详细以便尽可能照顾不同水平的读者。 第一步,对手机进行Root,Root前需要进入开发者模式并打开USB调试模式。这是最基本的要求,具体如何Root与手机的型号有关,如果实在不会就找身边的异性IT达人帮忙吧。 第二步,在手机中安装BusyBox。建议从Google官方下载,梯子自备,文章中用到的工具会在结尾处提供,懒人自取。BusyBox安装时可选择路径,假设安装在[/system/bin/busybox]。 第三步,将手机与电脑连接。连接后需要安装相应驱动,可借助豌豆荚等工具进行安装。另外需要准备好adb调试工具(adb.exe等文件),可从Android SDK官网下载,Root工具包中一般也会提供。 第四步,电脑中安装32位版本的Cygwin[C:\cygwin],并下载nc.exe和pv.exe,将这两个文件和之前准备好的adb.exe,AdbWinUsbApi.dll,AdbWinUsbApi.dll复制到[C:\cygwin\bin]目录下。 第五步,运行[C:\cygwin\Cygwin.bat],依次输入下图中的命令,输入后窗口保持打开不要关闭: adb forward tcp:5555 tcp:5555...
1.TestDisk 数据修复工具TestDisk能够修复启动分区,恢复一个分区或者删除数据,从无法访问的部分复制文件,还能轻松修复分区表。这款工具可用于诸如FAT、exFAT、NTFS和ext2等不同文件格式。 注:TestDisk与一款PhotoRec的应用程序相捆绑。现在,想要恢复照片、视频及文件仅仅需要点击几下就能搞定了。扫描超出了文件系统进行了延展,可以对与丢失文件相关的数据块(集群)进行彻底检查。 当你开始启动TestDisk时,会收到你是否需要一个日志文件的提示。你会看到一个可以进行挑选的分区列表。它可以帮助应用程序在读取磁盘分区时选择正确的签名。在执行操作之前,软件会提示你有哪些可用的硬盘分区,然后让你选择。 在每个分区你可以进行的操作如下: 1·分析分区结构,来决定适当的恢复顺序 2·操控磁盘的框架 3·清空分区表的数据 4·启动区的恢复 5·进行文件分类和复制 6·执行删除文件的恢复 7·创建分区的图像 如何使用TestDisk? 2.EaseUS Partition Master Free EaseUs是硬盘恢复数据的另一个好帮手。它是最优秀的分区管理者,你可以对分区进行移动、合并甚至是拆分。你还可以进行磁盘转换,恢复已删除或者丢失的分区,检测分区发现错误,OS到HDD/SSD的迁移,同时还可以进行磁盘碎片处理。使用EaseUS Partition Master Free工具,你可以用菜单(顶部)或者左侧窗格的操作对选中分区进行处理。 如何使用EaseUs? 3.WinDirStat WinDirStat是一款用于磁盘清理后的理想恢复工具。它让磁盘数据分布变得可视化,同时还对占用大部分空间的数据类型进行了定义。你启动了应用程序之后,这个工具生成了文件的一个树状视图,你可以选择驱动器进行分析。通过单击图形内部框,你将可以在树状视图中查看到正被搜索的文件。 如何使用WinDirStart? 4.CloneZilla 这个用于硬盘恢复的工具名为CloneZilla。如果你必须对硬盘进行映像和克隆,那最好的选择就是CloneZilla。它既是一个独立工具,它还能与Parted magic绑定使用。CloneZilla分为两种:CloneZilla Live和CloneZilla SE(服务器版)。后者是Linux专用工具,能够安装并进行配置通过网络给多个客户端发送邮件。CloneZilla...