Haskell 中的递归思维 之前对于函数式编程语言一直没有系统学习过,只是在 C# 、Objective-C 等语言中接触过闭包等概念,但这些只是函数式编程的一点皮毛。当然这也正说明了函数式编程语言对传统面向过程/面向对象编程语言的深刻影响。 与 Scala 仍然兼容面向过程/面向对象不同,Haskell 是一种纯粹的函数式编程语言。 最近一段时间对 Haskell 的学习,几乎颠覆了以往面向过程、面向对 2014-09-27 编程 算法 Haskell
基本数据结构和算法的 Golang 实现 记得大一上《数据结构》的时候,老师一开始就跟我们讲: 程序 = 数据结构 + 算法 虽然知道这个很重要,但说实话这几年在项目中确实也没怎么用到过真正意义上的数据结构和算法。 当然这可能跟 Java / C# 等偏应用层的语言做了高度封装有关,像链表、哈希表等都帮你实现好了。 但是,一直觉得作为一个有追求的程序员,绝对不能仅仅满足于会用,还要“知其所以然”。 2014-08-30 编程 Golang 算法
Rust 浅尝辄止 大概是今年初的时候第一次听说 Mozilla 发布的新编程语言 Rust ,作者是 JavaScript 之父。 但由于个人一直对 JavaScript / HTML5 这些 Web 前端的东西不感冒(现在也就写 blog 用下 MarkDown / HTML ),所以当时也没怎么去深入了解。 后来偶然了解到,Rust 和 Golang 一样标榜的是高并发、系统编程语言,于是 2014-07-19 编程 Rust
在 Golang 中操作 MongoDB 除了 Redis,MongoDB 也是广泛使用的 NoSQL 数据库,甚至有人认为它会全面取代 MySQL。 与 Redis 面向键值存储不同,MongoDB 是面向 BSON 文档的。 虽然在操作方式上和传统 SQL 有些区别,但基本概念还是相似的,而且基于 JSON 的数据操作令开发者很舒服。 MongoDB 官方驱动还没有提供 Golang 支持,mgo 是目前几个开源项目中最出色的。 它 2014-06-13 编程 Golang MongoDB
在 Golang 中操作 Redis 最开始是去年在上家公司通过《Go 语言编程》这本书接触到的 Golang,据说是作者、七牛 CEO 许式伟送给公司的。 虽然个人感觉这书的内容过于蜻蜓点水,不过至少还是通过大致翻看让我对 Golang 这门语言产生了浓厚兴趣。 2014-06-07 编程 Golang Redis
iOS 中 NSUserDefaults 的默认值初始化问题 iOS 中的 SettingsBundle 可以很方便的实现应用设置界面,你甚至都不用像 Android 中一样去自己写 PreferenceActivity ;然后通过 NSNSUserDefaults 就可以像 Android 中的 SharedPreferences 一样存取信息。 而且,与 Android 只能在读取时设置默认值不同;对于 iOS ,你可以在创建 SettingsBun 2014-05-23 编程 iOS Objective-C
iOS / Objective-C 在 API 层面与 Android / Java 的类比 其实在 11 年学 Android 开发之前,本来是准备学 iOS 的。后来因为某些原因([之前文章](/blog/2013/06/25/dev/)有提到过),不得不作罢。 去年入手了 Macbook Pro ,但那时候还纠结于”App or Game”的路线问题,今年初才正式将学习 iOS 提上日程。 2014-05-16 编程 Android Java iOS Objective-C
adb connect 连接 Android 设备的相关问题 最近在公司参与了一个 Android 机顶盒 App 开发,因为设备接口和驱动等原因,不像 Android 手机那样能方便地直接通过 USB 进行调试,只能通过 adb connect 以 TCP / IP 协议通信。 首先让 IT 给机顶盒分配了一个内网 IP ,并和 PC 接入同一局域网,然后在 PC 端运行 adb connect 192.168.xxx.xxx ,很快就连上了,跟 2014-04-10 编程 Android ADB
Java 中 String 的坑:从源码分析 replace 与 replaceAll 的异同 最近快播出了个云帆搜索,公司的项目要用到它的视频搜索 API。 它返回的链接并不能直接调用 QVOD 插件播放,而是先 redirect 到另一个 HTML 页面,然后根据一堆关键字以及 index 从页面或者隐藏的一个 JS 文件中抓取 qvod:// 协议的 URL。 这看起来真的很像是写 Web Spider 了,还好 Java 的 String 类封装了一大堆方法,不然如果用 C 语言连个 2014-02-23 编程 Java
Android 中 Dialog 的 Context 暗藏玄机 今天在开发中遇到了一个关于 Dialog 的 Context 的诡异问题。 原本定义了一个 Dialog 的派生类 BaseDialog ,并调用其重载的构造方法设置了 Theme 。 然后还定义了一个继承 BaseDialog 的 MyDialog ,由于在一个 private 方法中需要用到 Context 的方法,不得已在前面直接声明了一个 Context 对象。 但是在后面调用时发现,由于 2014-01-14 编程 Android
解决 Android 4.0 新的 GC 机制导致的 JNI 异常 今天更新了 Android SDK ,然后在维护 AND-WebP 项目的时候报了一个 JNI 异常: JNI ERROR (app bug): accessed stale local reference 0xe7b00025 (index 9 in a table of size 8) 之前版本的 Android ,虽然使用的是直接指针,但是 GC 不会随便回收对象,因此一般不会出问题。当 2014-01-07 编程 JNI
Hello, Golang! 早就听说 “Golang 是下一代 C “、”Golang 是为云端而生的语言”,前段时间有空学了下语法,确实为其精妙的设计感到叹服: 首先它确实很多地方借鉴了 C 语言,比如 printf 函数、结构体、指针(单凭这个就可见其性能)等,让人感到很亲切; 然后就是升级版的数组 – Slice,这个确实很强大;Java 的 subString() 和这个比都弱爆了,它可是支持任意类型数组,而且 2013-12-14 编程 Golang
解决 Android 中 Camera 在 Preview 和图像输出时的 Rotation 问题 之前项目中拍照都是调用的 android.media.action.IMAGE_CAPTURE 这个系统组件实现,其实很多应用都是的,包括微信。因为这样省心,不用考虑数据处理和兼容性问题。 但是最近这个外包项目中因为要求连续拍照 16 张,在多次调用这个组件的时候,发现很多机型会报一个莫名其妙的错误(具体记不清了,反正不是 Java 层的什么 Exception ,应该是 native 层的异常) 2013-11-18 编程 Android 图像采集
Android 中图片的缩放和压缩问题 最近接的一个外包项目中有拍照上传的操作,而且坑爹的是需要连续拍 16 张后一起上传!这样就不得不对图片进行压缩处理了,而且客户对尺寸和大小都有要求。 大小压缩比较常用的是通过 bitmap.compress() 方法中的 quality 参数控制,而尺寸压缩的方法就比较多了: 直接调用系统裁剪组件 com.android.camera.action.CROP ; 调用 Bitmap 的 cre 2013-11-17 编程 Android 图像处理
Android 中实现 ScrollView 的滚动事件监听 最近在自己实现一个类似 Pinterest 瀑布流展示效果的组件,GitHub 上其实有类似项目,比如 PinterestLikeAdapterView 、PinterestListView ,但都或多或少有些不足(详见这篇文章的分析),然后自己想基于 ScrollView 去嵌套多列 LinearLayout 实现。 坑爹的是系统自带的 ScrollView 功能相当粗糙:连个最基本的 setO 2013-11-16 编程 Android