数据库随笔

2017-10-30
阅读 2 分钟
2k
在移动端亦或是后端开发中,很多时候,我们会感觉到无论是 ORM 还是其他方案,都会存在着一些缺点,其实这来源于数据库本身和开发语言本身的冲突,现代化的语言基本上都是面向对象开发,面向对象是从软件工程基本原则(如耦合、聚合和封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著...

kubernetes 实战[1]

2017-04-29
阅读 3 分钟
4k
Docker 容器算是目前最火的云计算产品了,因为它解决了很多运维和开发上的痛点问题,比如抹平了开发和生产的环境区别,甚至可以做到在生产环境使用 RHEL,而开发使用 Ubuntu,也能平滑部署,但是想要真正的将其投放到生产环境中,实际上还有很多问题亟待解决。而 kubernetes 就是这样一个 Best Practise

iOS 只使用私钥生成证书请求文件

2017-01-20
阅读 1 分钟
3.6k
很多时候开发者经常忘记备份私钥公钥,私钥如果没有保留,就无法让多个证书共享一个私钥,而公钥没有保留则会导致无法生成 CSR,不过我们可以通过私钥重新生成公钥。也可以使用 openssl 产生 CSR 请求文件。

Ghost 博客升级 node6.x 问题手记

2017-01-08
阅读 2 分钟
2.9k
笔者博客是用 Ghost + PostgreSQL 搭建的,最近官方出了 RoadMap 做了 LTS 支持,因此做了 Ghost 的升级,同时也顺手把 node 升级到了 6.x 版本,本以为小版本升级轻松无压力,结果重启 Ghost 的时候直接报错

Swift 后端开发

2016-11-20
阅读 6 分钟
5.4k
作为一门新兴的现代化语言,Swift 可以说是苹果在开发语言上的一次集大成之作,吸收了很多语言的优点。而且苹果还期望 Swift 能在服务端开发上能发挥作用。更加诱人的是,作为一种编译型语言,有着 C++ 一般的性能,并且相比 Golang、Java 来说使用 ARC 管理内存避免了 GC 导致进程停顿。可以说 Swift 就是程序员梦寐以...

CentOS 生产环境配置

2016-11-12
阅读 2 分钟
8.3k
生产环境和开发环境测试环境都不一样,所以配置都不能随意,对于大多数情况来说,RHEL 绝对是一个最佳选择,除了最稳定的内核发布和最全的驱动支持,还能享受到 RHEL 10 年生命周期中 SoftwareCollection 所提供的最新稳定的软件包集合,尤其是 OpenJDK 的支持,让用户没有任何后顾之忧。不过由于国内云服务器基本不提供...

来自天国的 kubernetes

2016-10-05
阅读 5 分钟
14.7k
为什么叫来自天国的 kubernetes 呢,这就得吐槽一下 GFW 了。kubernetes 1.4 版本新推出的 kubeadm 命令没有随二进制包释放,必须自己到 master 分支编译,或者使用 Google Cloud 提供的 yum 源安装。But...,GFW 墙了 Google Cloud,导致服务器根本没法连上。当然,最后还是解决了.

React Native 整合指南

2016-10-03
阅读 5 分钟
5.1k
React-Native 目前是一个不错的多平台开发和快速开发的解决方案,它解决了很多开发上的痛点,并且作为 facebook 大厂出品,维护上有保障,因此学习 RN 是有好处的。当然,它目前还存在着很多的问题,但是都可以通过一些方案来规避和解决。RN 目前来说对 iOS 开发者比较友好,而 Android 开发环境则比较难以配置。

Kubernetes 尝鲜

2016-08-30
阅读 3 分钟
3k
容器技术在目前很火,而且确确实实的解决了很多的痛点,但是如果只使用目前 Docker 官方提供的 engine+compose+swarm 方案,是很难再实际生产中使用的。Kubernetes 是谷歌官方根据自己容器经验 Borg 开源的产品。当然,这不可能是 Borg,而且它的底层是替换成了 Docker,但是这不能掩盖它解决的问题。因此笔者决定尝试玩...

后端语言选型浅谈

2016-08-04
阅读 3 分钟
12.6k
前不久回答了一个关于后端语言选型的问题,写的回答也让笔者有了很多感触,因此在这里谈论下自己对后端语言选型的心得体会,姑且算是抛砖引玉,希望大家能分享各自的心得。

Docker 和 Node.js 最佳实践

2016-07-31
阅读 1 分钟
5.4k
默认情况下,Docker 容器内是以 Root 权限运行的,因此可能会带来一些安全问题,而且在某些情况下可能需要以非 Root 权限运行容器,可以通过如下方式进行:

PHP 开发的 Docker 实践

2016-06-20
阅读 8 分钟
10.5k
环境部署一直是一个很大的问题,无论是开发环境还是生产环境,但是 Docker 将开发环境和生产环境以轻量级方式打包,提供了一致的环境。极大的提升了开发部署一致性。当然,实际情况并没有这么简单,因为生产环境和开发环境的配置是完全不同的,比如日志等的问题都需要单独配置,但是至少比以前更加简单方便了,这里以 PH...

Xcode 依赖管理带来的静态库动态库思考

2016-06-09
阅读 3 分钟
9.8k
最近整理一些项目以前依赖留下的问题,在使用 CocoaPods 和 Carthage 的时候引出了关于静态库和动态库的思考,手动编译静态库的朋友应该知道,如果自己编译了一个静态库,这个静态库依赖了 iOS 自带的库,即使你在 Xcode 中显式指定了依赖,当你在另一个工程中使用这个静态库的时候,依旧需要显式在那个工程指定这个静态...

Docker for Mac 初体验

2016-05-11
阅读 2 分钟
17.7k
Docker 作为一个集成的、易于部署的环境,在很多方面都有广泛的应用,但是由于其使用了 Linux 内核的容器技术,所以很依赖 Linux 环境,在其他系统环境下必须要使用虚拟机启动一个 Linux 系统然后在此基础上使用 Docker,非常不方便。而前不久 Docker 推出了 Mac 和 Windows 的全新 beta 版本,允许 Docker 以更贴近用户...

AFNetworking详解(2)

2016-05-05
阅读 13 分钟
5.3k
源代码剖析 AFSecurityPolicy AFSecurityPolicy 类用于服务器 SSL 证书安全连接,不讲解,自行观看其实现。 AFURLRequestSerialization 这里包含了三个类和两个函数: AFHTTPRequestSerializer AFJSONRequestSerializer AFPropertyListRequestSerializer NSString AFPercentEscapedStringFromString(NSString string) NS...

AFNetworking详解(1)

2016-05-05
阅读 9 分钟
4.5k
AFNetworking 是一个 iOS 平台的网络框架,简洁易懂,所以在实际项目开发中用的极多,AFNetworking 本质上还是基于苹果自身的网络通信机制,这里就剖析一下其内部代码。

理解Cocoapods

2016-05-01
阅读 4 分钟
15.3k
对于做 iOS 开发的朋友来说,Cocoapods 是一件不必可少的得利工具,它是一个管理第三方库,并且解决其依赖关系的工具,但是有很多朋友对其运作的机制知其然却不知其所以然。笔者就在这里简单的讲解一下。

Docker容器的Nginx实践

2016-04-23
阅读 5 分钟
10.2k
作为目前最火的应用,Docker 确实存在着其独到之处,无论是程序猿还是运维都应该听说过 Docker 的大名,Docker 已经走过了许多的坑,目前最新版本是 v1.11.0 版本,应该说是完全能承载开发使用和运维监控,这款工具能帮助我们高效的打包、发布和运行承载着应用程序的容器系统。而且收集日志、帮助 App 的快速开发都有很...

PHP命名空间和自动加载类

2016-04-02
阅读 6 分钟
9.3k
最近有个朋友问我 PHP 命名空间是咋样的,但是由于长期不做开发,笔者实际上也已经忘得差不多了,所以也回答不出来。只是记得和 Java 挺像的。事后重新查了一下 PHP 的官方文档,并且和 Java 做对比,Java 的命名空间实际上来自于 JVM 本身的机制,JVM 是基于 class 字节码文件加载类,由于类很容易出现重名的情况,换言...

OAuth2.0认证

2016-03-31
阅读 14 分钟
6k
移动 App 的开发是基于现有的 Web 开发的基础上产生的,所以网络通信一般都是基于 HTTP 协议通信,而 HTTP 是一种无状态协议,所以针对 HTTP 协议状态保存一直都是永恒的话题。对于传统 Web 开发来讲,Cookie 和 Session 是最好的选择,在最早的时候,只有 Cookie 一种方案,但是这种方案存在缺陷,也就是容易被修改,所...

iOS自动化版本号和编译号

2016-03-24
阅读 3 分钟
15.1k
在实际开发中,经常会遇到批量版本号更新的问题,一般情况下都是手动修改,但是笔者最近在看官方文档的时候发现了苹果提供的自动化工具,特此分享。版本号和编译号分别是代表了正式发布版本和内部版本,agvtool 是一个自动增加版本号的命令行工具。注意:版本号是给用户看的,用于标明当前的发行版本,并且被存储在 App ...

[单刷APUE系列]第十七章——高级进程间通信

2016-03-21
阅读 7 分钟
3.8k
前面讲述了各种进程间通信和网络IPC的内容,除此以外,还有一种非常常用的IPC——UNIX域套接字。这种套接字实际上就是一种文件,能够让本机的进程之间互相通信。

[单刷APUE系列]第十六章——网络IPC:套接字

2016-03-19
阅读 8 分钟
4.1k
前一章中讲了经典Unix进程间通信,但是对于不同计算机的不同进程通信是无法使用这种技术的,所以就有了网络间新进程通信的机制。而网络套接字解释一种非常实用的技术。进程将套接字绑定在端口上,通过该接口向其他进程通信,这一章实际上是很重要的一章。

Nginx反向代理绕过备案

2016-03-17
阅读 1 分钟
17.8k
之前笔者在腾讯云搞过一个Wordpress博客,然后域名备案也是在腾讯云上面搞的,后来又撸了个阿里云的服务器,想把博客迁移到阿里云并且使用Ghost博客,然后使用二级域名链接到阿里云,结果出事了。我大天朝的备案的备案主体居然是服务器。对于备案的速度,大家应该都懂得,(⊙v⊙)嗯,国情嘛,但是博客想快点折腾,所以就拿...

[单刷APUE系列]第十五章——进程间通信

2016-03-17
阅读 11 分钟
4k
在前面章节中讲解了进程的派生和常见调用,但是进程之间通信的唯一途径就是通过打开的文件,或者是使用进程之前信号传输,由于这些技术的局限性,Unix系统提供了一种进程间通信模型(IPC)。IPC是进程通信各种方式的统称,目前只有一些经典的IPC方式能做到移植使用:管道、FIFO、消息队列、信号量、共享存储。还有基于套...

[单刷APUE系列]第十四章——高级I/O

2016-03-16
阅读 12 分钟
4.1k
在最前面,我们讲过IO分成带缓冲的IO和不带缓冲的IO,但是实际上,这个区别并不是很大,因为缓冲区并没有影响到实际的读写。我们知道,系统调用实际上分成两种,高速的系统调用和低速的系统调用,换句话说,低速的调用会导致系统永久性阻塞,但是需要注意的是,并不是磁盘IO都是低速调用。比如open、read、write函数,如...

[单刷APUE系列]第十三章——守护进程

2016-03-14
阅读 5 分钟
3.8k
守护进程对于Unix运维来说应该是不陌生的,所有的提供服务的进程基本上都是守护进程,通常也可以称为服务。它们由init进程启动,并且没有控制终端,是一种执行日常事务的进程。在Unix系统下,有很多守护进程,在基于BSD的系统下运行下列命令

[单刷APUE系列]第十二章——线程控制

2016-03-11
阅读 6 分钟
3.7k
在前一章中,都是使用的函数默认的属性来赋予线程,但是pthread允许我们通过设置对象关联的不同属性来细调线程和同步对象的行为。而管理这些属性的函数基本都是形式相同的。

Cocoa依赖包管理工具

2016-03-10
阅读 3 分钟
5.3k
iOS 作为目前最大的移动端开发平台,开发者的生态环境也是非常繁荣。在 iOS 早期时候,开发者想要使用第三方库就必须将其源代码引入工程,或者说是以 git submodule 的形式引入项目,但是这样子非常繁琐,并且还不能让多个项目公用,所以就有了著名的 iOS 依赖管理工具 CocoaPods。确实 CocoaPods 非常好用,而且已经成...

[单刷APUE系列]第十一章——线程[2]

2016-03-10
阅读 7 分钟
3.8k
线程由于共享同一个进程的内存空间,所以资源的访问也应当如同操作系统一样受到限制,一个线程在读取的时候其他线程不能写入,这种限制被称为同步措施。在学习操作系统原理的时候应当都听过锁的使用。一个资源,如果想要被多个进程访问,最好使用锁机制来确保一致性,不会出现访问冲突。线程也是一样,对于这个情况最简...