别再犯这些internet错误

[原文发表地址] Stop Doing internet Wrong [原文发表时间] 2013-06-14 一些日子…一些在web上泄气的日子。我们正在把c++编译到javascript并同时模拟在浏览器 中的运行,2013年,我们还是犯了一样的错误。我们,我的意思是,这些web开发者不是我们 ,对吧亲爱的读者?因为你肯定没做这些事。:) 这些都是可以解决的问题。他们不是技术上的难点,甚至在技术上没什么意思。我认为这些 是“意愿需求”问题。你需要知道这是错误的并且有意去修复。作为用户-和web开发者-我们 需要对恰当的人抱怨并帮助修复。 重定向一个深度桌面链接到一个移动主页 谷歌认为获取完好的像foo.com/something/deep一样的深度链接,检测一个移动设备,然后 重定向到m.foo.com是伤害用户利益的。事实上,GoogleBot将要声明这些“错误的重定向” 并在搜索结果排名中警示这些站点。声明简要: 避免不着边际的重定向很简单:简单的把智能机用户从一个桌面页重定向到它的智能机设备 优化页面。如果内容不是智能机友好的格式,显示桌面内容比重定向到不着边际的页面要好 。 例如,如果我想到http://www.mcmenamins.com/Pubs页面,但我是在移动终端上,它们总是 重定向到/mobile下面。总是这样。甚至哪怕我的小口袋机是个拥有4核处理器上G空间的超级 电脑,我还得上二流的网络。 我不想要你的垃圾APP 说的就是你,Quora。我在自己的浏览器中,除非我要去应用商店,假设我在浏览器中,我想 在web下。 巨型的夹缝中的广告 我看着你呢,Forbes.com。我知道了。你有广告。 有点品味! 输入表单标签 我讨厌看到只能恰好点击到勾选框才能被选中的勾选框。 1: <p>Which fruit would you like for lunch?</p> 2: <form> 3: <input type="radio" name="fruit" id="banana" /> 4: <label for="banana">Banana</label> 5: <input type="radio" name="fruit" id="None"…

0

互联网不是一个黑盒,看看其本质。

[原文发表地址]  The Internet is not a black box. Look inside. [原文发表时间]   2012-11-12 1:27 太多时候我看到程序员试图通过盲目地"来回切换"来解决他们在互联网上的问题。 改变一些东西,在浏览器中点击刷新按钮。"为什么被缓存了?发生了什么?然后再更改其他东西,点击浏览器中的刷新。"到底发生了何事?" 你可能听说过术语"cargo cult programming"(拜物编程,意思是由于对模式的盲目崇拜,在不理解的情况下就使用模式和方法,企图得到好的结果),二战后岛民挥舞棍棒,希望装载补给的飞机会飞过来。他们得出一个结论,挥舞棍棒会造成飞机的到来。 想一想抽象的东西。这是对初学者和资深专家的一个很好提醒。这不仅适用于计算机,而且适用于汽车、 灯泡、 冰箱,以及更多。 你没有看到什么?看看底层。 当在 web 上编码时,请记住没有任何东西可以逃离你的眼睛。 一位朋友给我发邮件,询问有关一些 CSS 文件的问题,不是缓存。这个聪明的人问题写得很长,是有关浏览器中的一个令人困惑的行为。我问-如同我经常问的一样-底层发生了什么事情?你有看过里面吗? 你正在使用Fiddler吗?你有在浏览器中按 f12 键,并探索它们的网络工具吗?你正在使用WireShark吗? 字面上这一时刻,当我编写这篇文章时,我刚刚注意到我博客上的Twitter 框中没有嵌入我最新的 tweet。 我可以多次点击刷新,使用谷歌围绕它含糊地搜索,给朋友发邮件,或者我可以向内看看。 我在我的浏览器按了 f12 键。我查看Network(网络)选项卡,并按状态进行排序。 嘿,突然我的 Twitter API 调用是 404。首次,这就是不对的。它们应该为我重新定向。 看了一眼之后,现在我使用google流行的术语。我搜索”twitter user timeline json api",看到在Twitter Developer Center上他们已经更改了该格式来包括"api."和一个版本号。 我更改我的模板来调用此更改过的 URL https://api.twitter.com/1/statuses/user_timeline/shanselman.json?callback=twitterCallback2&count=10,然后在我的浏览器中点击刷新。 那里有我的 tweet了。不是开玩笑,这正好发生了。良好的时机,我认为。…

0

我是骗子,你是吗?

[原文发表地址] I’m a phony. Are you? [原文发表时间] 2011-08-17 09:15 Phony等同于phoney (fō’nē) 形容词pho·ni·er, pho·ni·est 1. a. 不真实,伪造的:一张伪造的信用卡 b. 假的,有嫌疑的:假名 2. 不诚实不可信,欺骗的:虚假的借口 3. a. 不真诚,伪善的 b. 骗取信任 我除了在微软做一些常规工作之外,我还会指导一些开发者和程序管理人员。最近我和一个年轻人聊了聊,他很有思想,天赋异禀,他说他正历经这一场信心的考验危机。他在自己觉得肯定不会栽跟头的事情上栽了跟头,导致整个项目停滞不前,甚至这种情绪还影响到了他的日常生活。 他说: “内心深处我知道我可以。从13岁开始编程,获得CS最高学位毕业,进入微软工作,但现在我觉得我像是个冒名顶替的。” 我告诉他,站起来,你不是一个人在战斗。 举个例子,我有大概30个域,但我真正出色的只在其中的3个。有时候当我登陆我的DNS管理器,我就会看到我的27个失败案例。我自我安慰说还有27个有潜力的内容,27个可能会很酷的开放源项目,现在只是缺少一点语言而已。如果知道点什么,就可以实现了。多可爱的骗子啊。 一星期前我打开Zero电子邮件,今天看看收件箱里居然有122封邮件,这真把我逼疯了。更搞笑的是我还教别人怎么管理他们的收件箱。多可爱的骗子啊。 我21岁的时候自视甚高。我觉得我就是世界的天才,不用你来告诉我任何东西。而随着年龄的增长,我越来越意识到我不可能知道所有的事情,而且脑袋也没以前转得快了。多可爱的骗子啊。 我试着每年学一种语言,成为一个Polyglot 程序员,但是我明显感觉到F#正渐渐被我遗忘,甚至我都不能完全搞清楚诗一样的Ruby。多可爱的骗子啊。 我以前西班牙语超好,还跟我太太一起学祖鲁语,但现在我跟西班牙当地人讲话,发现我要是能成功地点到一份burrito,就已经很庆幸了。我多年的阿姆哈里语也已经忘得差不多了。我的阿拉伯语,印度语和中文都只剩下一点点词组了。多可爱的骗子啊。(澄清:我绝对不是谦虚的夸耀,我是一个语言学家,语言是我的一部分身份,而我正渐渐失去它,让我异常沮丧。) 但这才是关键,我们有时都觉得自己很有欺骗性。我们都是骗子。但那就是我们长大的方法。我们陷入状况,只差一点点就可以轻易处理掉。然后我们可以处理好,我们不是骗子,我们会安然度过面对下一个挑战。 冒充者综合症不是一个全新的想法了。 尽管他们的能力一眼就显而易见,但是有症候群的那些人还是坚信他们是骗子,根本配不上所取得的成绩。他们把成功归咎于运气,时机,或是骗别人相信他们更智慧 ,更有能力的结果。 这个问题的反面则更有趣,那就是邓宁克鲁格效应。也许你的一两个上司经理就有这毛病。 邓宁克鲁格效应就是一种认识上的偏差,有这种病的人往往能力欠佳,总作出错误的决定,但他们的能力欠佳让他们还在认知 上无法意识到自己的错误。 阅读一下维基百科的文章很不错,不过下面这句话是你最该记住的佳句。 那些真正有能力的人总是低估自己实际有的能耐。 前几年,我收到一封来自播客听众的邮件。我在写这篇博文的时候突然想起来了,我找了些重点的句子放在这里。 我只是一个听你播客的普通听众,非常敬仰你,这点希望你能知道。但听到你最近在播客中说的一点,我感到很震惊,你说“每个人能有一份工作都是很幸运的。”并阐述说你也不例外。 我曾听到那些比你地位和成就低的开发者所持有的态度比你正面多了,他们觉得自己很优秀,所以随时都能找到一份工作,所以没有必要让现在手上的工作给他们太多的压力。你真的觉得你也有找工作的困难或者自己创业的困难吗?如果真是这样,那我觉得你对自己的不自信应该好好纠正一下了。 不过其实我真正担心的倒不是你,而是你说这番话对听众的影响。如果他们听到你这么说,那么他们自己也会受影响觉得要庸人自扰一下。 我非常欣赏这位听众的观点,在回复邮件中我也这么说了。也许我的观点深受西方文化影响,或者是典型的美国观念。我很好奇你们,那些非美国读者的想法。我还是坚持说大部分美国人都是这么觉得的。也许我们无法承认这一点。当我看到程序员写的博客文章标题是“我是个疯狂的忍者”或者“世界顶级程序员”之类的,我真的很好奇他们是不是太活在自己的世界里了,当然也许他们只是不那么谦虚而已。 我还是坚持我最初的陈述,我有时真的觉得自己是个骗子。有时候我开玩笑说,“嘿,今天是个好日子,我的脑子运转正常”或者当人家问我“最近好吗”,我总是回答“我运转正常。”我那么表达是因为我真这么觉得。我很高兴能有一份工作,当然我也可以去别的地方工作。我必须在微软工作吗?当然不是。如果我想努力,我应该可以去任何地方工作,甚至是小黛比点心蛋糕店里的IT部分工作。我把不安全感当做是一种动力去追求成功,继续教学。 我问了一些朋友是否也会这么觉得,下面就是他们的回答。 · 完全没有。我每天都在努力地工作,开发,夯实自己的技能,我试着让自己更创新,做出些结果。 · 很多时候我的确这么想!尤其是最近我在着手一个新的工作,要处理许多我不擅长的语言,然后就会想“哦,我花了10年的时间搞了多少语言”但这不代表我真的很棒。还有很多要学,谦虚的说,还是在不断进取的过程中。…

0

大脑、字节、后背、臀部——程序员的优先事项

[原文发表地址]Brain, Bytes, Back, Buns – The Programmer’s Priorities [原文发表时间]2011-10-05 08:16 我最近在推特上发表了一番话: “如果你是一个开发者,那你就要在一台不错的电脑,性能出色的显示器,舒适的座椅和柔软的床上花很多钱”——Scott Hanselman 这个140字的友好陈述也许会被误解,我的意思不是好的开发者要买多昂贵的器械,我是说,要在配置工具上投入很多。 臀部 我最近听到一个设计师朋友一直在心疼购买的700美元的椅子。我发现每个人赚钱多少取决于他们生活在世界的哪一个角落,我倒是无所谓。这个设计师花了几个月来确定购买这把椅子是否是个好想法,“这太贵了!我应该花那么多钱买它吗?” 现在,我们谈论的不是珠宝,或者电脑游戏和奢华的裤子。我们说的是一把椅子,一把你每天工作时坐上几小时的椅子,而且至少可以坐几年。假设一年有50周,可以用3年(至少),每天5个小时(因为这些只是粗略的数字),那就是说第一年至少有1250小时(很可能更多),算3年的话,就有3750小时。也就是说每小时只要花19美分就可以享受舒适的座椅。这是在给你自己的屁股投资呢。 我一点都不后悔买了Herman Miller Aeron 座椅。重要的是我是为我自己而买的,5年前用我自己的钱买的。现在我每天都拥有它,享受它,我每天的使用成本都在降低。 后背 我花了一笔很客观的钱买了一个很不错的床垫,因为我的背是程序员的背。我每次都惊讶于跟那些买廉价床垫和廉价座椅的开发者说话的时候,他们总会抱怨背痛。浑身酸痛的程序员可不敬业。引用Wu Tang Clan的话来说,保护好你的脖子,不要吝啬于床榻。 不谈其他的健身器材,花点钱在瑜伽这类伸展运动和定期运动上,保护好你的背是很重要的。如果你每周都要花上8小时来做些什么的,那就在这件事上做些研究和投资吧。你三分之一的人生是在无意识的背上度过的。请尊重那些时间,保养你自己的身体吧。其中一个必不可少的工具就是一张高质量的床。我一直很喜欢投资新电脑,不过最近我发现买高质量的床垫和新电脑其实同样有价值,能够改善生活。 我还有一张可调高度的桌子(钢弹壳系列7),我也很喜欢。我还会时不时去拜访脊医,不过却发现这很容易到手,于是我二话不说就买下了它,。它是电动的,有预设,所以根据站着和坐着的高度来转换设置是很方便的。如果你觉得其中哪个对你有帮助,那就跟人事部说一下,并申请工效评价。问一下不会怎样的,倒是如果你不问,那你就会伤害到自己的身体了。 字节 没错,我不能说“电脑”,这样就会让我的押头韵前功尽弃。当然你可以理解的,亲爱的读者。我最讨厌人家使用那种烂透了的硬件。我跟一个用老的Mac用了4到6年的绅士在微博上纠结了很久,他觉得我提倡,或者暗示一个好的程序员必须有出色的硬件。我的本意并非如此,但是这点还是真的。如果你在等你的电脑反应,那你就是在浪费时间。不要跟我来宗教争论这套,我不在乎它是不是你的操作系统,你的文本编辑器,或者你称之为的硬盘驱动。如果它让你等了又等,那就让它扫地出门吧。 可以从获取一个SSD开始。推特上的同行使用稍稍老一点的硬件时,在机器上都有一个SSD。每个人都能使用SSD。世界上有很多可以改变生活的硬件可供购买。为自己挑选一个吧。他们是记忆储存,SSD和显示器。无论你运行的是什么操作系统,起码要保证4G的内存。你现在花不到100美元就可以获得一个小小的SSD,如果容量再大点的可能也只要200美元。我在256 G的OCZ Vertex上放了一个触发器,尽管只留存一年,每天也只要2美元,而你可以享受很不错的PCI。超过一年后,每一天成本都会相应降低。 无论多大的显示器都没有关系,只要你高兴就好。我有三款喜欢的显示器。而关于笔记本,我喜欢15寸的。一些同仁用13寸的液晶屏也很不错,但还有些喜欢更大的。我想说的是,如果你对现有的显示器状况不满意,那就换掉。这是值得的,因为这会让你工作更有效率。 而且,一如既往的,如果你拥有程序员的手,顺便考虑一下你的键盘和鼠标。我发现你们很多人坚持使用标准直板键盘来打字,关键是你要考虑自己的状况。如果你的桌面为你设置好了,那很好。如果没有,那就去弄一个支持你和你工作方式的吧。 大脑 书本,课程,经验,挑战,这些都在推动你的大脑。我经常会讲一个高级开发者的故事,他有20年的从业经验。问题是这20年重复的是同一年的经验。在第5年或者第14年,你可能会觉得这个开发者会注意到这点然后有所突破。我想说的是,你不仅要做一个为自己身体考虑的程序员,你还要考虑你的大脑。如果你的工具变钝了,那就有意识想想有什么可以尝试去把它磨尖锐的。 当我在用户小组会议,地区会议和代码营中演讲时,我经常会告诉大家这些: “你们今天出现在这里,就代表你们是开发界顶级的开发者。我不知道你们有多少才能,有多少经验,但是你们出现在了这里。你们出席是因为你们想要进步。对于这份进取之心我表示感谢。” 你要时刻注意着这点,来提升自己的价值,不是仅仅作为一个活体,更重要的是长期的规划。如果你有这个意识,那你就走在别人前面了。我们忽视的时候往往就是麻烦的开始。时间一分一秒地流逝,直到多年后才清醒过来发现自己都没有新的经验,没有新的知识,不停地重复。有时候你必须醒过来然后有清醒的意识要做一些改变。每个全新的日子都可以是一个改变局势的机会。上课没什么不好的,买些新书,开始新的关系都是很好的。快点去获取他们,装进自己的脑子里吧。他们会永远追随你的。 喜剧大师Paul Reiser在Marc的播客上跟Marc Maron说过这么个很棒的故事。Paul遇到演员Peter Falk,问他写电影剧本有什么秘诀,Peter Falk说“拿些纸,放进打字机,打开始。然后不停地打字。” 有人问我如何做个成功的程序员,我觉得这个答案也是可以套用的。注意,照顾好自己,投资一些工具,然后开始工作吧。

0

杰出的.NET开发人员应该知道的事情(更多NET面试问题)

[原文发表地址] What Great .NET Developers Ought To Know (More .NET Interview Questions) [原文发表时间] 2005-2-21 19:56 之前我在帖子中列出来了一系列关于ASP.NET的面试问题. 传统的智慧被拆分了,半数人说我发疯了,这是 一系列琐事的列表。其他的人一般说“太棒了,我可能会查找一些。”对我来说,这 才是我希望的回应。 当然我并不是想把所有.NET软件开发的问题归结于几个“琐碎”的问题。相反地我是在努力让人们去思考更多。我相信真正优秀的ASP.NET 开发人员远远不只在于将控件拖动到设计器上,然后期待这就是最好的了。一个好的赛车手清楚地了解他的车所能做的以及不能做的。 因此,以下是另外一个清单,以供参考(扩展过的清单)。这是我在上周从博伊西飞往波特兰的航班上写的。我曾经考虑过,我的清单上包括一些不符常理的琐碎问题,我努力把它们组织成不同的部分。如果你从来没有接触ASP.NET,你显然就不会知道ASP.NET 的各个部分。如果你是一名独立的顾问,你可能从来都没有遇到过这些概念。然而这个列表上的每个问题在我过去的四年里遇到过不只一次。所以是否透彻地知道这些问题并不能说明你是一名优秀的或者差的开发人员。但是当出现问题时,它可以节约你的时间。 杰出的.NET开发人员应该知道的事情 面向编写代码的人员 · 描述线程和进程之间的区别 · 什么是Windows Service?其生命周期与"标准"的 exe 文件有何区别? · 可以解决 Windows 上任何单一进程的最大内存量是多少?它与系统最大虚拟内存有区别吗?这会如何影响系统的设计? · EXE 文件和 DLL文件之间的区别是什么? · 强类型与弱类型的区别是什么?哪一种更适用?为什么? · Corillian 的产品是一个"组件容器"。列出至少3个Windows Server Family附带的组件容器。 · 什么是PID?它在进行系统故障排除时起到了什么作用? · 在单个TCP/IP 端口下可以监测多少个进程? · 什么是GAC?它可以解决什么问题? 面向中级NET开发人员…

0

用微软Word 2010和Gabriola中OpenType的连写和风格化设置来制作超赞的婚礼文件

[原文发表地址]Making awesome Wedding documents using OpenType Ligatures and Stylistic Sets in Microsoft Word 2010 and Gabriola [原文发表时间]2011-08-02 11:32 我的内弟再过几周就要结婚了,介于我是家里默认的IT男孩,我也就被分派去制作派发给宾客的CD和CD文本了。其中就涉及到要做当天的日程安排,还有宾客桌上的菜单。谁都会在word里新建一个简单的文本并且选一种特别地字体来做这个,但是我想做点不一样的出来。 微软Word 2010不仅支持先进的OpenType字体,还支持TrueType字体。在Word中OpenType最酷的一点就是它支持连写。以下来自维基百科: “在编写和排版中,两个或更多的字形被连接成一个简单的字形时连写会产生。” 比如说,是这里有小写字母“fi”和小写字母“fl”, 一开始没有连写,然后是用了: 看到两个字母是如何通过连写互相连接的了吗?下面提供更多的单词例子,比如“office”,“afflict”和“fine flavor”。 在复杂的脚本中开放的连写确实是明显的的(并且动人心弦的,如果你像我一样希望字体以一种模式存在个20年),像很多随Windows 7一起诞生新字体中的Gabriola一样。 Gabirola字体用先进的Open Type特色来填充。 字形会根据它们周围其他字母的内容改变。比如,注意看单词murmur中第二个m怎样避免字母r侵占它的空间这不同于第一个字母m。 这只是默认的行为,但有了Word 2010,你就可以在字体菜单中的高级标签里进行设定。比如,我想要创建一个婚礼菜单,下面是Gabriola字体的默认式样: 现在我在Menu上右键选择字体,然后点高级。会出现很多风格的设定,当然这取决于你用的是什么字体。我喜欢设置6的样式。 下一步,对于第二第三行,我选择风格设置5,它有内容选择,可以给我更多选择。比较一下两者。变了很多,一些很微妙,一些不一样。注意大写的S,还有缩小的C,还有L的附加以及小写的n和p的小尾巴。 还有很多其他的样式可以制作,取决于你的个人喜好,当然,这些只是我们现在能看到的Gabriola字体。 字体还会根据其所在的行数来改变,比如,在开头,中间和结尾的amazon,(选自字体设计师John Hudson的这篇文章): 此外,这些变化是随着你打字而变化的。你得眼见为实。我在开头做了一个GIF的动画,这样你就可以看到效果了。这可能对英语/拉丁语系使用者来说很奇怪,但如果你曾经用动态连写写过印度语或者阿拉伯语,你就不会奇怪了。 Word 2010还支持多种模式的数字,就像古老风格的数字形式一样。注意第一行数字和第二行数字的基准线如何不同并且它们的尺寸被调整过了吗? 都是些Word 2010中为您使用而设置的很酷的东西,希望你们喜欢!

0

使用代码签名证书标记已下载的MSIs和建立IE9 SmartScreen信任

[原文发表地址] Using Code Signing Certificates to sign downloaded MSIs and build reputation with IE9 SmartScreen [原文发表时间] 2011-06-27 11:39 首先,我想说,如果你希望很多人下载,千万别忘了在标题中显示“HTML5”,“支持”和“更新/升级”。那些研发Diablo 3的人如果把它称作”Diablo 3 HTML5 Support Update”,我相信会有更多数以万计的人去下载的。 就是说,Web平台和工具团队中的一队人为Visual Studio 2010编辑器创建了支持HTML5的Web标准升级包。 这个Web标准升级是团队中任何人都能发布的,只需将Visual Studio用标准方法扩展开来。和其他在Visual Studio Extension Gallery中的大部分扩展一样,它并没有被“签名”。它不是微软的正式项目,而是我们一群人利用闲暇时间为社区而做的。至于它为什么会被关注,是因为它支持HTML5和CSS3。 在短短四天之内它就成了Visual Studio Gallery中最热门的,显然,很多人都想要它。去NuGet获取吧!;) 这就是麻烦的根源。它在报刊中被谈论,就好像是种“过失”一样。我承认我们(我占主导)在这方面很逊,没能从一开始就讲清楚这个升级只是一个内部团队升级。可以说,这不是正式的,不过我们倒是很希望在下一版Visual Studio升级时能有官方支持。 由于所有的MSI都没有被签名,你用IE9下载MSI 安装器时,会收到这样的消息: 这很正常,而且挺可爱的。然后会跳出这样一个令人毛骨悚然的红色警示条(是由另一个gallery item发出的): 这是IE9的SmartScreen系统在警告我们,这不是经常下载的项目。实际上,这是IE9一个非常有用的功能,并且在现有的浏览器中独一无二。它使用一些特别的辅助(一些推断,数理,十进制)来公正地判断此项下载。就算是来自Microsoft.com网站的,也一视同仁。SmartScreen是公正的,没有看见过的,一律不信任。 更新:就像我刚刚的测试那样,SmartScreen现在将我们的下载认定为是安全的! 此时,如果我点击 继续 ,会看到这个。(没错,我知道这些截图不是所有都符合标准。) 实际上,对大多数人来说,他们甚至还不能点击“总是运行”。他们必须点 更多选项来看见总是运行按钮。(如果我是开发者型而且一直点更多选项,我要么很清楚我在做什么,要么我喜欢冒险。更多选项会在几次下载之后保持打开状态。这会省下我点击的次数,但其他的警告仍然存在。) 作为发布者,我们有一些选择。我们可以用微软代码证书来签名二进制文件(MSIs),但是这就需要高管签字明确声明微软官方发布此代码。这是件大事情。介于这并不是官方发布,像这样的情况,我们就不能用微软来签名。代码签名证书保证了文件不被篡改,且有已知的通过验证的组织或个人担保。 最后SmartScreen会识别出我们的MSI很安全,但我们不知道这需要花费多久。可能是几周,也可能是几个月,这要视情况而定。不管怎样,无论你是个人还是小公司,你都得为你的代码签名。比如,如果我下载了 Eric Lawrence的Fidder或者Rick Brewster的Paint.NET,他们都是签过名的,我可以在用户帐号控制(UAC)对话中找到他们的名字。我可以点击查看他们的证书,这样就知道我在下载的文件是有人担保的。 记得去Authenticode Code…

0