最新 | 最热门 | 最高评价

+0  sproto 的一些更新

Tag: skynet | 语言与设计
云风 发于 2017年03月14日 22:05 | 点击: 405 | 展开摘要
sproto 是我设计的一个类 google protocol buffers 的东西。

在很多年前,我在我经手的一些项目中使用 google protocol buffers 。用了好几年,经历了几个项目后,我感觉到它其实是为静态编译型语言设计的协议,其实并没有脱离语言的普适性。在动态语言中,大家都不太愿意使用它(json 更为流行)。一个很大的原因是,protobuffers 是基于代码生成工作的,如果你不使用代码生成,那么它自身的 bootstrap 就非常难实现。

查看全文: http://www.udpwork.com/item/16176.html

+0  Why 370Z

Tag: Car | Life | Technology
IT牛人.117 发于 2017年03月14日 18:30 | 点击: 330 | 展开摘要
TL;DR

I am going to buy a manual Nissan 370Z - the Fairlady.

Why 370Z?

Engine: VQ37VHR 3.7L V6 245kW/363Nm (redline @ 7500rpm). The best NA V6 engine, I lost count on how many times it has won Ward’s best engine. Really like naturally as

查看全文: http://www.udpwork.com/item/16177.html

+0  Android中一个简单有用的发现性能问题的方法

技术小黑屋 发于 2017年03月13日 21:57 | 点击: 393 | 展开摘要
在Android中,性能优化是我们持之不懈的工作。这其中,在主线程执行耗时的任务,可能会导致界面卡顿,甚至是ANR(程序未响应)。当然Android提供了很多优秀的工具,比如StrictMode,Method Tracing等,便于我们检测问题。

这里,本文将介绍一个更加简单有效的方法。相比StrictMode来说更加便于发现问题,相比Method Tracing来说更加容易操作。

首先,我们有这样一个程序代码

1
2
3
4
5
6
7
8
9
10
11
12
13

查看全文: http://www.udpwork.com/item/16175.html

+0  iOS App 签名的原理

Tag: 技术文章
bang 发于 2017年03月13日 20:46 | 点击: 392 | 展开摘要
iOS 签名机制挺复杂,各种证书,Provisioning Profile,entitlements,CertificateSigningRequest,p12,AppID,概念一堆,也很容易出错,本文尝试从原理出发,一步步推出为什么会有这么多概念,希望能有助于理解 iOS App 签名的原理和流程。

目的

先来看看苹果的签名机制是为了做什么。在 iOS 出来之前,在主流操作系统(Mac/Windows/Linux)上开发和运行软件是不需要签名的,软件随便从哪里下载都能运

查看全文: http://www.udpwork.com/item/16174.html

+0  Pointfree 编程风格指南

Tag: JavaScript
阮一峰 发于 2017年03月13日 06:56 | 点击: 395 | 展开摘要
本文要回答一个很重要的问题:函数式编程有什么用?

目前,主流的编程语言都不是函数式的,已经能够满足需求。为何还要学函数式编程呢,只为了多理解一些新奇的概念?

一个网友说:

"函数式编程有什么优势呢?"

"我感觉,这种写法可能会令人头痛吧。"

很长一段时间,我根本不知道从何入手,如何将它用于实际项目?直到有一天,我学到了 Pointfree 这个概念,顿时豁然开朗,原来应该这样用!

我现在觉得,Pointfree 就是如何使用函数式编程的答案。

一、程序的本质

查看全文: http://www.udpwork.com/item/16173.html

+0  一个前端项目,到底要集成多少库和工具

Tag: Front-end Development | lib | 工具
四火 发于 2017年03月12日 04:52 | 点击: 460 | 展开摘要
最近忙于一些新做的项目,由于新入手,就想着往最佳实践去靠,也寻找一些可以借鉴的模板。其中前端的部分,有很成型的模板可以借鉴。大幅度减少了自己调查和集成的工作量。但是仔细看看,发现这里头的概念太多了,各种开源的库和工具,有人说“前端玩的是广度”是有道理的。

这个新项目并不算特别复杂,大致的技术是基于React+Redux的,但是大体上集成完毕以后,完成了几个demo的代码之后,粗粗地过了一遍,除了传统意义上的HTML+CSS+JavaScript(遵循ECMAScript 6

查看全文: http://www.udpwork.com/item/16172.html

+0  轻舟已过万重山——真正的技术派公司是怎么联调、测试和发布的? - 旁观者

旁观者 发于 2017年03月11日 09:58 | 点击: 612 | 展开摘要
【摘要】说句狠话:没有趁手的利器,生产效率打完对折再打对折,勿谓言之不预也。 阅读全文

查看全文: http://www.udpwork.com/item/16171.html

+0  编写地道的Go代码

Tag: Go
鸟窝 发于 2017年03月10日 10:36 | 点击: 854 | 展开摘要
在阅读本文之前,我先推荐你阅读官方的 Effective Go文档,或者是中文翻译版: 高效Go编程,它提供了很多编写标准而高效的Go代码指导,本文不会再重复介绍这些内容。

最地道的Go代码就是Go的标准库的代码,你有空的时候可以多看看Google的工程师是如何实现的。

本文仅作为一个参考,如果你有好的建议和意见,欢迎添加评论。

注释

可以通过 /* …… */ 或者 // ……增加注释, //之后应该加一个空格。

如果你想在每个文件中的头部加上注释,需要在版权注释

查看全文: http://www.udpwork.com/item/16139.html

+0  为 Go Mutex 实现 TryLock 方法

Tag: Go
鸟窝 发于 2017年03月09日 17:49 | 点击: 400 | 展开摘要
Go标准库的sync/Mutex、RWMutex实现了sync/Locker接口, 提供了Lock()和UnLock()方法,可以获取锁和释放锁,我们可以方便的使用它来控制我们对共享资源的并发控制上。

但是标准库中的Mutex.Lock的锁被获取后,如果在未释放之前再调用Lock则会被阻塞住,这种设计在有些情况下可能不能满足我的需求。有时候我们想尝试获取锁,如果获取到了,没问题继续执行,如果获取不到,我们不想阻塞住,而是去调用其它的逻辑,这个时候我们就想要TryLock方法

查看全文: http://www.udpwork.com/item/16169.html

+0  继续说说“在家办公”

Tag: Engineering Culture | 在家办公
四火 发于 2017年03月09日 13:49 | 点击: 420 | 展开摘要
我在几年前写过一点对于在家办公的理解,经过最近几年的感受,时不时地需要在家办公,零零散散陆陆续续有了一些新的感受。

首先要明确的是,团队的支持是最重要的。需要一个宽松的团队氛围,能够获得足够的信任,这些都是软基础。如果同事和上司不信任,这件事情是不可能办成的。对于那些把员工视为不可靠、不安全因素的公司,在家办公也是难以实现的。

开发环境。以往我一个不愿意在家办公的重要原因是,我的开发环境都部署在desktop上面,从家里无论是通过Microsoft Remote Desk

查看全文: http://www.udpwork.com/item/16168.html

+0  关于苹果警告

Tag: 互联网
bang 发于 2017年03月09日 11:36 | 点击: 510 | 展开摘要
昨天早上 iOS 开发者们陆续收到苹果邮件,警告去掉动态下发功能,覆盖面很广,内容没有明确指示是什么库,导致大家各种猜测。

其实上周已经有少量用户收到苹果这份警告邮件,当时还以为是特例,现在看来是在灰度测试扫描代码,可见这事苹果应该讨论已久,并专门排期开发测试了扫描程序,直到昨天才正式上线。

从各方信息看起来,很不幸主要禁的还是 JSPatch / wax/ rollout 这样的热修复框架,特点是可以通过 JS 脚本调用和替换任意 OC 方法,而像 React Nati

查看全文: http://www.udpwork.com/item/16167.html

+0  Ramda 函数库参考教程

Tag: JavaScript
阮一峰 发于 2017年03月09日 08:35 | 点击: 338 | 展开摘要
学习函数式编程的过程中,我接触到了 Ramda.js。

我发现,这是一个很重要的库,提供了许多有用的方法,每个 JavaScript 程序员都应该掌握这个工具。

你可能会问,Underscore 和 Lodash 已经这么流行了,为什么还要学习好像雷同的 Ramda 呢?

回答是,前两者的参数位置不对,把处理的数据放到了第一个参数。

var square = n => n * n;
_.map([4, 8], square) // [16, 64]

上面代码中,_.

查看全文: http://www.udpwork.com/item/16166.html
|<<<3456789>>>| 一共1215页, 14571条记录