Skip to content

Ider

沉淀我所学习,累积我所见闻,分享我所体验

Primary Navigation Menu
Menu
  • Home
  • About Ider
    • Who Ider?
    • Why Ider?
    • How Ider?
    • Where Ider?
    • What Ider?
2013-06-06
06 June
On June 6, 2013
In Article Collection(聚宝收藏), Knowledge Base(心得笔库), Language Tips(语言初试)

小心程序运算符的陷阱

每一门程序语言都会提供各种运算符(Operator),每个运算符都会有特定的含义和规则,去完成指定操作最后给出相应的结果。有些运算符会普遍出现在各种语言中,比如加减乘除这些算数运算符;有些运算符则为某些语言特有,比如取地址运算符和反引用运算符只在C/C++中用到而Java,C#这类不能直接访问地址的程序语言就不具有;有些运算符因为特定的需要,还会改变其一般的含义,比如加法运算符在很多语言都被作为字符串拼接的操作符。学习一门程序语句,除了学习其语法以外还要了解其所拥有的运算符,但是因为各个语言运算符的相似性,常常让人简单略过对它们的了解。

运算符最主要有两个特性:优先级(Precedence)和结合律(Associativity)。在很早以前我的《两年半大学总结》讲到过自己对运算符, 特别是优先级的问题上的一些理解。在之后的学习和编写程序的过程中,我常常发现原来运算符的这两个特性会给代码带来隐形的意想不到的陷阱。所以我将实际中碰到的一些关于运算符的问题罗列于此,希望能对这些问题提高警惕以免跌入陷阱。
Read More →

2013-05-21
21 May
On May 21, 2013
In Algorithm Analysis(算法分析), Front Interface(界面构想), Knowledge Base(心得笔库), Mathematical Theory(数学理论)

连续平滑的贝塞尔曲线

在我研究生的时候,我上了一门OpenGL的课程。我非常喜欢OpenGL,因为它让我写的程序从此不再只局限于黑白的终端界面,而变得艳丽多彩。从那么课上,我也第一次认识了“贝塞尔曲线Bézier Curve”,它是那么的神奇,仅仅用几个点通过一个公式就能表现出一条优美的曲线。

这让一直热爱数学的我无法自拔,仿佛又回到了高中,坐在课堂里听着彪哥(我的高中数学老师)给我们讲述着各种曲线方程:抛物线、椭圆、双曲线……可惜怎么就从来没有提到过贝塞尔曲线呢。好吧,不在高考考纲之中。

贝塞尔方程的优点在于可以利用较少的存储几个点就能描绘出光滑的曲线或者曲面。而方程的计算也不会消耗太多的时间,真可谓是图形学中的一把利器。虽然后来并没有继续学习和使用OpenGL,但是也在其它很多方面又再次接触到了贝塞尔曲线,比如CSS中的一些渐变方法(Timing Function),iOS动画的时间方程。
Read More →

2013-04-23
23 April
On April 23, 2013
In Algorithm Analysis(算法分析), Data Structures(数据结构), Mathematical Theory(数学理论), Special Tricks(奇技妙招)

寻找比特位

人类有十个手指,所以我们的算数都是10 进制的,而计算机的世界里,所有事物都只由0和1呈现出来,所以数字也只能用2进制表示。因为2进制的表示方式,在计算机里对于数字的运算,除了现实中常用的“加减乘除”,更多了“与非或”这些位运算。

在进行数学运算的过程中,我们经常会总结出一些技巧方法,而这些方法其实跟进制有很大的关系。比如小学老师就告诉我们:检查一个整数能否被3整除,只要派定各个数位上的数字加起来是否能被3;判定一个整数是否能被5整除,只要看最后一位是不是0或5。而这些规律却不能适用到2进制表示的数字上。

不过利用2进制的特殊性,我们也能从位运算上找到很多的技巧。比如一个常见的面试问题:

有一组数包含了1到100的整数,且每个整数只出现一次且随机出现于数组中,现在有一个数被从中删除,请找出被删除的数。

Read More →

2013-03-14
14 March
On March 14, 2013
In Data Structures(数据结构), Knowledge Base(心得笔库), Language Tips(语言初试)

DOM事件触发顺序

对于如何给DOM绑定JavaScript的事件,在之前的文章已经比较详细的介绍了三种方式的区别和优缺点。不过,仍然还有一些遗留问题没有详细讲述,比如addEventListener的第三个参数useCapture有何神奇之处;假如HTML元素的自身和其父结点都绑定了相同类型的事件, 这些事件的激发过程又是如何处理的呢。

每一个HTML页面,在被浏览器解析后,都会生成一个树形结构,而每一个结点都是一个对应于标签(Tag)的DOM(Document Object Model)实例。树形数据结构上,其深度体现着父子关系(parent/child),其广度表现为兄弟关系(sibling)。这些DOM实例首先是用作呈现页面,在页面呈现上(若不指定特殊的布局样式,如z-index、relative position、float):子结点会被父结点包裹,但是父结点会被子结点全部或部分覆盖,而同层的结点则按从上往下,从左往右的顺序依次排布——(这只是对HTML页面呈现的简单布局流描述,其实根据样式的不同,过程更复杂)。另一方面,它们还是事件目标,用来接收页面上触发的事件。
Read More →

2013-02-28
28 February
On February 28, 2013
In Article Collection(聚宝收藏), Mobile Development(移动开发)

iOS开发官方文档汇总

程序员的学习过程是无止境的,程序员学习的途径是多样的。可以从视频教程中领悟,也可以从他人的代码中理解。但当我们专注于某一个平台在开发的时候,对于某个API使用或者功能实现有疑问,通常简单的测试可以让我们知道可能的效果,异或网上搜索一下别人的经验,不过最好的途径应该还是阅读官方的文档解释。常常可以更全面,具体的了解。当然也不排除有时候官方文档说了跟没说似地,或者根本说得文不对题。

半年多里一直从事Mobile游戏的开发,Android和iOS平台都有接触,不过还是以iOS为主,为了解决问题也查阅了不少的文档资料。就像以前学.NET一定会去MSDN,iOS上的问题就会先去查阅Apple Developer。总得感觉Library的文档还是MSDN做得比较好,说明详细例子也比较多。而Apple Developer上对于API的注释都不够详细,而且没有例子告之该如何使用。

apple-pdf不过Apple的文档也有它独有的好处,比如绝大部分的文档都有相应的PDF格式文件提供下载,对于离线阅读十分的方便,而且还可以在PDF做一些相应的笔记,针对某几页进行打印等等。

另外,Apple还会给出该API所对应的框架结构使用的文档,其中会有一些代码例子。但是其实那些例子依然不够,还是需要到其它地方寻找。但是这些讲述结构的文档却是体现出API设计的来源,所以十分值得阅读,只是需要花时间了理解和消化。Read More →

2013-02-21
21 February
On February 21, 2013
In Design Patterns(设计模式), Knowledge Base(心得笔库), Language Tips(语言初试)

DOM的JavaScript事件绑定方式比较

JavaScript语言是当前十分流行的语言。它从前端页面走来,产生了像jQuery这样的强大框架;它向后端服务器走去,有了Node.js;它更被微软接受为平等于C#和VB.net的第三种可用于开发Windows8应用的语言。

不过说到底,JavaScript的本家还是在前段网页界面的上的使用,而真正让JavaScript变得如此强大的还在于它能对文档对象模型(Document Object Model),也就是俗称的DOM进行操作。这其中,又要数“事件处理(Event Handling)”让用户交互(User Interaction)体验得到了巨大的提升和丰富。

如果没有事件处理,其实根本不会需要添加JavaScript到页面上,本篇文章就来总结一下JavaScript中DOM事件绑定和激发的一些方式和机制,有助于在以后的开发上有更好的设计和理解。
Read More →

2013-01-24
24 January
On January 24, 2013
In Article Collection(聚宝收藏), IT Products(数码产品)

GitHub被墙,我们还有更多Git托管服务

Git最近几年非常火的版本控制(Revision Control)软件,我也在大概一年前从SVN转到了使用Git。对于大部分业余项目其实就我一个人在操作的情况下,Git明显比SVN给我带来更多的优势。后来随着GitHub的兴起,我同样可以想SVN一样有一个中心代码库,而且还可以通过网页展示来当做一份在线简历。

不过GitHub在国内真正被(非技术人员)广为知晓,还是感谢春运刷票插件拖垮GitHub这一事件吧。这也算是给GitHub做了一次超强压力测试吧。随后插件似乎被铁道部叫停,但是显然这是不可能阻止已经安装在各个浏览器上的插件的。于是他们直接拿出杀手锏:把GitHub阻挡在GFW之外。

不过好像也听说并不是应该插件的原因,而是GitHub的一些wiki页面出现了敏感词句。原因不重要,但是GitHub被墙显然是对程序员来说很大的冲击。程序员从《一些视频教程网站推荐》中学到的是怎么写代码,而从GitHub中看别人的代码可以学会怎么写好代码。
Read More →

2013-01-16
16 January
On January 16, 2013
In Article Collection(聚宝收藏)

一些视频教程网站推荐

程序员是一个艰苦的职业,因为作为程序员总是要取追逐和学习日新月异的各种编程语言和技术,而也正是因为这样才让程序员的自学能力往往强于其它从事其它职业的人员。程序员的会从各种渠道获得学习资源,包括书籍、博客、论坛、社区、搜索、交流。还有一种重要的途径就是通过视频来学习。

计算机方面的视频教程很多,视频有着类似课堂教学的感觉,又在一些方面优于课堂教学:可以暂停、回放、加速,可以参照着一起动手编写代码。唯一的缺点可能就是无法提问和互动,对于冒出的想法和问题不能得到即时的反馈 (不过大学里有多少人上课会提问呢)。

视频教程对程序员帮助很大,但是好的视频教程在网上流传似乎都太分散,这加大了观看的难度也不利于互相分享学习。所以我在这里收集了一些比较好内容比较丰富的在线视频教程的网站,可以方便大家挑选学习。另外这些网站上的视频大部分都可以下载,方面放在电脑、手机、平板上随时随地观看学习。

这些网站上的视频都是系列型的,要看完一个系列还是需要花些时间。当然用来对已知知识进行复习也是不错的。对于每个网站我也会推荐一些我在上边看过的视频教程系列。
Read More →

2013-01-02
02 January
On January 2, 2013
In Article Collection(聚宝收藏), Knowledge Base(心得笔库)

代码中的美元$

Dollar symbol
这个题目其实有点标题党了,其实本篇文章主要内容应该是说“代码中的美元符号(dollar sign)”。想总结一下我所看到的美元符号在代码中的起到的作用,当然了并不是说它作为格式化字符时出现在数字前当钱币单位的作用。
Read More →

2012-12-08
08 December
On December 8, 2012
In Knowledge Base(心得笔库), Language Tips(语言初试), Special Tricks(奇技妙招)

JavaScript字符串操作的偏方怪法

字符串和数组在程序编写过程中是十分常用的类型,因此程序语言都会将String和Array作为基本类型,并提供许多字符串和数组的方法来简化对字符串的操作。JavaScript里面也提供了String类型和Array类型,并且有很多基本的String方法和Array方法来方便地对字符串进行合并、查找、替换、截取等处理。

JavaScript作为一个脚本语言,又提供了一种动态解析运行的机制,而这特性,又让使得在String操作的时候出现一些结合使用Array的有趣方法。这些方法可能有些偏门有点奇怪,但有时在效率、可读性、复用性上表现得却更好。
Read More →

Posts pagination

Previous 1 … 8 9 10 11 Next
Facebook
Twitter
LinkedIn
RSS
ZhiHu

Recent Posts

  • 三年居家工作感受
  • Pixel Watch智能手表和Pixel 5, 6 Pro 及 7 Pro手机
  • 我拥有过的无线耳机
  • 毕业工作一个月,我差点被开除
  • 我拥有过的移动硬盘
  • ProtoBuf 2.0 method count optimization for android development
  • 面过100场行为面试后

Categories

  • Algorithm Analysis(算法分析)
  • Article Collection(聚宝收藏)
  • Data Structures(数据结构)
  • Design Patterns(设计模式)
  • English Posts(英文写作)
  • Front Interface(界面构想)
  • IT Products(数码产品)
  • Knowledge Base(心得笔库)
  • Language Tips(语言初试)
  • Mathematical Theory(数学理论)
  • Mobile Development(移动开发)
  • Programming Life(程序人生)
  • Reading Notes(阅而后知)
  • Software Engineering(软件工程)
  • Special Tricks(奇技妙招)
  • Tangential Speech(漫话杂谈)

Tags

Aero Android API Bash Binary Search Bitwise Operation Book C/C++ Career Chrome Conference CSS Debug Device DOM Extension Framework Game Gradle Hearthstone HTML Initialization Intellij Interview iOS Java JavaScript jQuery Keyword Language Issues Mac Microsoft Mobile Modifier Objective-C PHP Principle Reference Regular Expression Static String Tools Tutorial UI XML

Blogroll

  • Ahmed's Blog
  • Gert Lombard's Blog
  • Gordon Luk
  • Jack & Allison
  • 开发部落

Archives

Designed using Chromatic. Powered by WordPress.