最新 | 最热门 | 最高评价

+0  飞利浦 Hue 智能照明系统开发(Part 1 - API 入门)

Tag: api | philips hue | programming | smart home
Cat Chen 发于 2018年05月14日 15:21 | 点击: 625 | 展开摘要
我家里有超过 10 个的飞利浦 Hue 智能灯泡,我通常使用 Amazon Echo 和 iOS HomeKit 控制它们,例如说睡觉时对着 Echo 喊「Alexa, turn off bedroom.」,或者在 iPhone 上通过 Control Center 迅速开关一盏灯。在我买了一个 Raspberry Pi 架设加密 DNS 后,我就开始思考是否能在 Raspberry Pi 上跑一个程序控制 Hue 做更复杂的事情。在此之前,我先要自己搞明白 Hue 的 AP

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

+0  接触Python后的一点感受记录

Tag: Other Programming Language | Python
四火 发于 2018年03月25日 07:19 | 点击: 438 | 展开摘要
最近因为工作的关系开始学习Python了。以前从不曾正儿八经地学过,如果说工作学习经验带来改变的话,那么编程语言的学习就是个很好的例子。如果在十年前,我要学习Python的话大概会买本系统介绍的Python教程,然后一页一页慢慢看,估计能够啃完大半本,跳过一些自认为次要的特性。等到在项目中使用已经得是一两个月之后了吧。但是如今我显然不太会做一样的事情,我现在会拿着我那些熟悉的编程语言来比较,不同的特性上面,Python是怎样的,是先进还是落后,适合解决什么问题,在哪些领域可以

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

+0  Go语言的修饰器编程

Tag: Go 语言 | 程序设计 | 编程语言 | functional | Go | golang | Programming | 函数式
陈皓 发于 2017年06月01日 16:48 | 点击: 842 | 展开摘要
之前写过一篇《Python修饰器的函数式编程》,这种模式很容易的可以把一些函数装配到另外一些函数上,可以让你的代码更为的简单,也可以让一些“小功能型”的代码复用性更高,让代码中的函数可以像乐高玩具那样自由地拼装。所以,一直以来,我对修饰器decoration这种编程模式情有独钟,这里写一篇Go语言相关的文章。

看过Python修饰器那篇文章的同学,一定知道这是一种函数式编程的玩法——用一个高阶函数来包装一下。多唠叨一句,关于函数式编程,可以参看我之前写过一篇文章《函数式编程

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

+0  如何重构“箭头型”代码

Tag: C/C++语言 | 程序设计 | 编程语言 | Code Review | Programming | Refactory
陈皓 发于 2017年04月05日 18:07 | 点击: 1123 | 展开摘要
本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法。按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得很多东西可以从一个简单的东西出发,到达本质,所以,我觉得有必要在这里写一篇的文章。不一定全对,只希望得到更多的讨论,因为有了更深入的讨论才能进步。

文章有点长,我在文章最后会给出相关的思考和总结陈词,你可以跳到结尾。

所谓箭头型代码,基本上来说就是下面这个图片所示的情况。

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

+0  Scala的模式匹配

Tag: Other Programming Language | Scala | 模式匹配
四火 发于 2015年09月21日 01:02 | 点击: 1198 | 展开摘要
最近开始学习Scala,相较于学习Haskell的过程来看,Scala真是直观得多,友好得多,更容易上手。以前写过关于从熟悉的Java和JavaScript来逐步学习Groovy和Haskell的文章,这以后再来学习Scala的话,就可以不断比较了。如果和我一样有Java经验的话但是从来没有接触过Scala的话,建议先阅读这篇文章,A Scala Tutorial for Java Programmers,一边比较,一边熟悉,同时配套的还有这个,Scala for Java

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

+0  从Java和JavaScript来学习Haskell和Groovy(汇总)

Tag: Programming Paradigm | Recommended | Groovy | Haskell | Java | JavaScript
四火 发于 2015年07月24日 08:09 | 点击: 966 | 展开摘要
这是这个系列的最后一篇,从编程范型的角度概览,前面几篇的链接在文章后半部分有汇总。

我在之前已经介绍过编程范型的概念,而事实上,我们到现在为止,纠结在这四门迥异的语言上面,浅看是各种语言特性,深看就是编程范型和思维方法。

下面这张“神图”来自于这里,可以说是对于范型和语言归类的概览,从左往右从更强的声明式向着更弱的声明式发展;依据状态分为Unnamed state(串行或并发,包含逻辑式和函数式这几种分类)、Nondet. state(所谓的不确定性状态)和Named s

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

+0  从Java和JavaScript来学习Haskell和Groovy(DSL)

Tag: Programming Paradigm | Groovy | Haskell | Java | JavaScript
四火 发于 2015年07月13日 01:03 | 点击: 1066 | 展开摘要
这是《从Java和JavaScript来学习Haskell和Groovy》系列的第四篇。

首先来理解DSL。

DSL(Domain Specific Language)指的是一定应用领域内的计算机语言,它可以不强大,它可以只能在一定的领域内生效(和GPL相比,GPL是General Purpose Language),表达仅限于该领域,但是它对于特定领域简洁、清晰,包含针对特定领域的优化。

当我们面对各种各样的特定需求的时候,一个通用的语言往往不能高效地提供解决问题的路

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

+0  从Java和JavaScript来学习Haskell和Groovy(元编程)

Tag: Programming Paradigm | Groovy | Haskell | Java | JavaScript
四火 发于 2015年06月26日 08:16 | 点击: 979 | 展开摘要
本篇文章的话题是元编程。首先来认识元编程,我在第一篇《引子》里面已经介绍:元编程,指的是在运行时改变“类”的定义,例如访问、增加或修改等等。一言以蔽之,就是“用程序来写程序”。在第二篇的《类型系统》里面已经借由继承和接口的实现,介绍了一些利用元编程特性来增加或改变子类行为的方法。回顾语言发展的长河,其实是经历了一个从“对象 -> 类 -> 元类”到“对象 -> 原型”的发展过程的。所以,无论是类,还是元类,这样的概念其实都不是非有不可的,只是因为我们思考的习

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

+0  Setup a AQI(Air Quality Index) Monitoring System with Dylos and Raspberry Pi 2

Tag: around my life | beijing | desktop | gadget | programming
jaseywang 发于 2015年05月26日 22:41 | 点击: 1130 | 展开摘要
I have been using air purifier for years in Beijing, China. So far so good except the only problem troubles me, is that effective? is my PM2.5 or PM10 reduced? the answer is probably obvious, but how effectively is it? Nobody knows.

At th

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

+0  从Java和JavaScript来学习Haskell和Groovy(类型系统)

Tag: Programming Paradigm | Groovy | Haskell | Java | JavaScript | 类型
四火 发于 2015年04月19日 14:31 | 点击: 756 | 展开摘要
接上文《从Java和JavaScript来学习Haskell和Groovy(引子)》。

首先搞清几个概念:

动态类型(Dynamic Typing)和静态类型:区别的核心在编译期还是运行时。静态类型的语言系统在编译期就明确知道每一个变量的类型,如果发现不合法的类型赋值就在编译期报错;动态类型则直到运行时才会报错。

类型推导(Type Inference),类型推断是指可以在上下文中,编译器来推导实际的类型,也就是代码使用隐式类型指定。比如一个简简单单的“var

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

+0  从Java和JavaScript来学习Haskell和Groovy(引子)

Tag: Programming Paradigm | Groovy | Haskell | Java | JavaScript
四火 发于 2015年04月12日 13:51 | 点击: 1070 | 展开摘要
我记得刚接触计算机的时候,我就受到了两个非常巨大的错误观念的影响,这个观念最初是来自于老师的传授还是学长的教诲已经记不清了,但是直到我工作几年以后,才慢慢有了实际的体会:

学习和使用什么编程语言不重要,重要的是算法和设计;

程序员学习的精髓是面向对象的设计模式,掌握以后,一通百通。

简直就是是胡扯啊。也许在某个极其狭隘的上下文中还能这样说,但是泛泛而谈,这样的态度无疑是误人子弟的。

就说第一条,编程语言不但重要,而且太重要了。换句话说,学习一门新的编程语言,可能学习的

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

+0  stdio 的 buffer 问题

Tag: *nix | programming
jaseywang 发于 2015年04月01日 10:32 | 点击: 1040 | 展开摘要
下面会涉及到一些底层的函数库以及系统调用,不想看过程的直接跳到最后看结论好了。

一段代码,通过 tail -f 看打的 log,发现很长时间都没有输出,然后突然一下子输出了好多条,猜想可能跟 buffer 之类的有关系。这个问题其实很早就遇到过,最初以为是什么 bug,直到看到自己写的代码也出现类似的现象之后才决定看看是怎么回事。

先来看看下面这一小段代码。

$ cat demo1.py

import time, sys

for i in range(50

查看全文: http://www.udpwork.com/item/14045.html
|<<<1234567>>>| 一共9页, 99条记录