前一阵子在项目组中讲了一个关于CSS的Session,在讲之前我曾收到了许多意见,大部分是希望能讲讲CSS实用性的技术,比如盒模型,CSS3之类的。干货人人都喜欢,因为看得见摸得着,拿来就有用,但我最后还是决定讲一些”湿货“。因为在Code Diff的时候我发现了许多样式的问题不是由于不会写CSS导致的,而是由于在错误的地方使用了写在错误地方的样式。
其实CSS很简单,没有计算没有流程,只是一直描述,无论什么复杂的效果,你只要Google一下就知道怎么写了,甚至可以直接copy。但CSS又很复杂,一个元素的表现会受到它旁边的兄弟元素,也会受到内部的子元素影响,还会受到父元素影响,在这种多重影响下,一个元素的显示逻辑会变得错综复杂。
继续阅读 »
在以前的十多年里,我们通常会把web页面根据视觉分成不同的节(或者叫做块,盒子,区域等)。问题是我们从没有一款工具可以去做这种划分。往往是网页开起来是分块的,但是底层结构确是用编号标题(h1,h2,h3...)和非语义化元素堆积起来的。因为我们可以用来实现视觉上的分块,但是其表现与不同。对于AT用户和数据挖掘软件并不认为div分块是文档内容的分块
现在H5最终有了可用的section元素,但是很多人都不情愿去使用。为什么?因为我们是一个反对改变的群体,而且也因为说明文档与建议存在一些差异。事实上,该建议与section的算法比先前的实现更容易使用。
没错,section元素可以帮助你构建文档结构,这是w3c说明文档里的说到的。接
继续阅读 »
最近有几次面试,也碰到过一些人,写下一些面试的东西,希望对自己或者别人有些帮助。
你觉得HTML哪里难
我说出了在之前文章中写过的语义化,不管别人怎么看,我始终认为语义化是一个比较考验经验和开发人员是否谨慎认真的东西,虽然不难,却需要细心。
继续阅读 »
注意
本文转载自http://nshipster.cn/clang-diagnostics/
概要
诊断结合了逻辑与分析来得出一个结论。这是最纯粹的科学和工程学,也是人类最有力的推理。
more
在医学界,诊断是通过实验室样本做后盾的本能来判断。而对于工业制造,则是通过在统计和方向都等同应用来诊断产品故障。
对于我们开发者来说,我们通过代码通知后续代码的生产,创建了一个在过去半个世纪里呈几何级数发展的技术的正反馈循环。尤其对于我们的 Objective-C 开发者来说,最有效的诊断来自 Clang。
Clang 是 C / Objective-C 的前端的 LLVM 编译器。它对 Objective-C 的语义和语法有
继续阅读 »
新类型有自己的 data constructor (literals 可以看成特殊的 data constructor),由这一点来区分是否创建了新类型。
data 创建了新类型,可以有多个 data constructor。
newtype 创建了新类型,只能有一个 data constructor,同时新类型的内存布局与原来的类型相同。
type 没有创建新类型,只是建立了 alias,没有新的 data constructor。
type
常用于语义化类型,是业务逻辑层的概念。
```haskell
type ID = Int
a = 1 :: ID
b = a + 2 -- legal
showID :: ID -
继续阅读 »
xrepo 是一个基于 Xmake 的跨平台 C/C++ 包管理器。
项目源码
官方文档
它基于 xmake 提供的运行时,但却是一个完整独立的包管理程序,相比 vcpkg/homebrew 此类包管理器,xrepo 能够同时提供更多平台和架构的 C/C++ 包。
并且还支持多版本语义选择,另外它还是一个去中心化的分布式仓库,不仅仅提供了官方的 xmake-repo 仓库,还支持用户自建多个私有仓库。
同时,xrepo 也支持从 vcpkg/homebrew/conan 等第三方包管理器中安装包,并提供统一一致的库链接信息,方便与第三方项目的集成对接。
如果你想要了解更多,请参考:在线文档, Github 以及 Gitee
继续阅读 »
在程序界的远古时期,大神们手持键盘敲着机器语言跟庞大的机器打着交道,那时候机器语言还没有语义和语法,更没有封装的概念。后来进化到汇编语言,C语言时期,基础的功能特性就已经能满足当时的需求了,比如函数封装使其得于复用,但随着计算机的普及,操作系统的到来,面向过程语言已无法继续满足复杂的需求。
继续阅读 »
十多年来,我们一直使用 XMLHttpRequest(XHR)来发送异步请求,XHR 很实用,但并不是一个设计优良的 API,在设计上并不符合职责分离原则,输入、输出以及状态都杂糅在同一对象中,并用事件机制来跟踪状态变化。并且,基于事件的模型与最近流行的 Promise 和 generator 异步编程模型不太友好。
Fetch API 旨在修正上述缺陷,它提供了与 HTTP 语义相同的 JS 语法,简单来说,它引入了 fetch() 这个实用的方法来获取网络资源。
在 Fetch 规范中对 API 进行了定义,它结合 ServiceWorkers,尝试做到如下优化:
改善离线体验
保持可扩展性
写这篇文章时,Fetch AP
继续阅读 »