May 1, 2015
ios8中action segue
"os8 action segue 有几种方法,一般选择哪一个,每种方法都有什么用,在什么环境下使用?\nApple的解释在这里: https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/chapters/StoryboardSegue.html 我的翻译: Show: 在master或detail区域展现内容(典型的如iPad的设置界面,左侧是master,右侧是detail),究竟是在哪个区要取决于屏幕上的内容,如果不分master/detail,就单纯的把新的内容push到当前view controller stack的顶部 Show Detail: 大致同Show,在detail区域展现内容,如果不分master/detail,新的内容取代当前view controller stack的顶部 Present Modally:模态展示内容 Present as Popover:在当前的view上出现一个小窗口来展示内容,无处不在的“选中文字后出现 复制/翻译 按钮就是这个 Custom:自定义的"
April 18, 2015
vmware11下安装mac osx 10.10教程(原创)
"推荐此方法:\n一. 安装vmware 12 pro的破解补丁(unlocker207)\nvmware 12 pro unlocker207( 204版本在vm11处可以使用,在vm12下不管用,各版本下载 http://www.insanelymac.com/forum/files/file/339-unlocker/ )\n二. 下载 Yosemite Install(14F27)_10.10.5.cdr 镜像文件。安装方法同windows一样,设置为cd/dvd就可以了。默认vmware只显示iso文件,选择一下显示所有文件即可。\n安装过程中会提示一下信息,和下面教程的错误和解决方法都一样。\n===============================================\n不在推荐使用以下这种方法,网络安装特别的慢,另外版本已经过时。推荐使用上面的方法安装!\n在安装前请检查您的硬件配置是否支持,特别注意是”虚拟化”功能,有的主板虽然支持,但默认是关闭状态的,需要在bios里开启才可以。\n所需软件:\n1.mac 补丁 unlocker 2.mac os x 10.10.3 …"
April 8, 2015
golang中的sync.WaitGroup
"Golang的sync的包有一个并发原语WaitGroup,在日常开发中比较的有用。\nWaitGroup的用途:它能够一直等到所有的goroutine执行完成,在其期间会会阻塞主线程的执行,直到所有的goroutine执行完成。\n这里要注意一下,在其中的多个goroutine 的执行结果是没有顺序的,调度器不能保证多个 goroutine 执行次序,且进程退出时不会等待它们结束。\nWaitGroup总共有三个方法:Add(delta int), Done() 和 Wait()。简单的说一下这三个方法的作用。\nAdd: 添加或者减少等待goroutine的数量\nDone: 相当于Add(-1)\nWait: 执行阻塞,直到所有的WaitGroup数量变成0\n举个例子\npackage main import ( \u0026#34;fmt\u0026#34; \u0026#34;sync\u0026#34; \u0026#34;time\u0026#34; ) func main() { var wg sync.WaitGroup for i := 0; i \u0026lt; 5; i++ { wg.Add(1) go func(n int) { defer …"
April 8, 2015
Golang语言的GOPATH与工作目录详解
"这篇文章主要介绍了Go语言的GOPATH与工作目录详解,本文详细讲解了GOPATH设置、应用目录结构、编译应用等内容,需要的朋友可以参考下\nGOPATH设置\ngo 命令依赖一个重要的环境变量:$GOPATH\n(注:这个不是Go安装目录( GOROOT)。下面以笔者的工作目录为说明,请替换自己机器上的工作目录。)\n在类似 Unix 环境大概这样设置:\nexport GOPATH=/home/apple/mygo 为了方便,应该把新建以上文件夹,并且把以上一行加入到 .bashrc 或者 .zshrc 或者自己的 sh 的配置文件中。\nWindows 设置如下,新建一个环境变量名称叫做GOPATH:\nGOPATH=c:mygo GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下\n以上 $GOPATH 目录约定有三个子目录:\n1.src 存放源代码(比如:.go .c .h .s等)\n2.pkg 编译后生成的文件(比如:.a)\n3.bin 编译后生成的可执行文件( …"
March 30, 2015
亿级用户下的新浪微博平台架构
"序言 新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可用(HA)、高并发访问、低延时的强大后台系统支撑。\n微博平台第一代架构为LAMP架构,数据库使用的是MyIsam,后台用的是php,缓存为Memcache。\n随着应用规模的增长,衍生出的第二代架构对业务功能进行了模块化、服务化和组件化,后台系统从php替换为Java,逐渐形成SOA架构,在很长一段时间支撑了微博平台的业务发展。\n在此基础上又经过长时间的重构、线上运行、思索与沉淀,平台形成了第三代架构体系。\n我们先看一张微博的核心业务图(如下),是不是非常复杂?但这已经是一个简化的不能再简化的业务图了,第三代技术体系就是为了保障在微博核心业务上快速、高效、可靠地发布新产品新功能。\n第三代技术体系 微博平台的第三代技术体系,使用正交分解法建立模型:在水平方向,采用典型的三级分层模型,即接口层、服务层与资源层;在垂直方向,进一步细分为业务架构、技术架构、监控平台与服务治理平台。下面是平台的整体架构图:\n如上图所示,正交分解法将整个图 …"
March 28, 2015
用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
"上篇文章我们介绍了 amqp扩展在windows下的安装方法,这里我们看一下用法。\n消费者:接收消息\n逻辑: 创建连接–\u0026gt;创建channel–\u0026gt;创建交换机–\u0026gt;创建队列–\u0026gt;绑定交换机/队列/路由键–\u0026gt;接收消息\n\u0026lt;?php /************************************* * PHP amqp(RabbitMQ) Demo - consumer * Author: Linvo * Date: 2012/7/30 *************************************/ //配置信息 $conn_args = array( \u0026#39;host\u0026#39; =\u0026gt; \u0026#39;192.168.1.93\u0026#39;, \u0026#39;port\u0026#39; =\u0026gt; \u0026#39;5672\u0026#39;, \u0026#39;login\u0026#39; =\u0026gt; \u0026#39;guest\u0026#39;, \u0026#39;password\u0026#39; =\u0026gt; \u0026#39;guest\u0026#39;, \u0026#39;vhost\u0026#39;=\u0026gt;\u0026#39;/\u0026#39; …"
March 28, 2015
windows下安装rabbitmq的php扩展amqp(原创)
"从php官方下载相应的版本 http://pecl.php.net/package/amqp,我这里使用的是1.4.0版本( http://pecl.php.net/package/amqp/1.4.0/windows) 根据当前使用的php版本选择相应的扩展dll,下载后是一个压缩包,里面有两个dll扩展(php_amqp.dll和rabbitmq.1.dll)。\n我的环境是64位的,php5.5.12.所以使用的是 http://windows.php.net/downloads/pecl/releases/amqp/1.4.0/php_amqp-1.4.0-5.5-ts-vc11-x64.zip\n1.将php_amqp.dll放在php的ext目录里,然后修改php.ini文件,在文件的最后面添加两行\n[amqp\\] extension=php_amqp.dll 2.将rabbitmq.1.dll文件放在php的根目录里(也就是ext目录的父级目录),然后修改apache的httpd.con文件,文件尾部添加一行\nLoadFile …"
March 6, 2015
关于Pull Request的十个建议(转)
"Pull Request是Bitbucket、GitHub等源代码托管系统为了方便开发者之间协作而提供的一个功能,它提供了一个用户友好的Web界面来帮助审查人员进行代码审查。开发人员可以通过GitHub发出Pull Requests要求请求他人将程序拉下来进行代码审查。一个好的Pull Request不仅仅只是代码的事情,还牵涉到代码审查者对代码的审查,所以开发者不仅要写出好的代码,还必须迎合审查者的审查工作,才能给使得自己贡献的代码顺利通过审查并合并到master分支。现对丹麦的程序员、软件架构师、独立顾问Mark Seemann在自己博客中发布的一篇题为《关于Pull Request的十个建议》的文章进行一个全面的整理,以供读者阅读和参考。具体内容如下:\n1. 进行较小的Pull Request 一个小且集中的Pull Request会使得提交的代码更加容易通过审核。据Mark Seemann根据自己的经验透漏,对提交代码进行审查所花费的时间是随着代码大小呈指数增长,而非线性增长;Pull Request多大才合适与Pull Request做了什么相关,最好少于12个文件的改变。如 …"
December 6, 2014
Linux 下添加硬盘/新建分区(fdisk + mkfs.ext4 + mount)
"此教程只供参考,未进行整理!\n使用fdisk命令查看新添加的硬盘\n会看到类似这种页面信息的(说明:这里的图为已经有两个硬盘在使用了, 新添加的硬盘为sdc,尚未使用)\n第一步:添加硬盘/新建分区(fdisk) 第二步:格式化分区(mkfs.ext4) 第三步:加载分区(mount) 1、第一步:添加硬盘/新建分区(fdisk)\na、查看当前系统所有硬盘及分区情况:fdisk -l\nb、在指定的硬盘(例:/dev/sdb)上创建分区:fdisk /dev/sdb , 根据提示进行下一步操作,如:查看帮助(h),新建分区(n),删除分区(d),查看分区情况(p)\nc、分区成功后,写分区表并退出(w)\n注:fdisk 支持硬盘最大尺寸为 2TB,更详细说明请参看 Linux 在线手册(man fdisk)或百度一下。\n2、第二步:格式化分区(mkfs.ext4)\n对新建分区(例:/dev/sdb1)进行格式化:mkfs.ext4 /dev/sdb1 。\n3、第三步:加载分区\na、创建分区挂接目录,例:mkdir /disk-cache-1 和 mkdir /disk-cache-2\nb、 …"
September 14, 2014
使用git-flow来帮助管理git代码
"对git不熟悉的我,经常把git提交搞得很乱,导致在master上有许多无用的commit,最终决定好好地看一下git的使用教程,却不小心发现了还有一个git-flow的工具可以帮助我管理好git项目的代码。\ngit-flow在ubuntu上使用比较简单。首先安装,可以通过apt-get来获取。命令如下:\nsudo apt-get install git-flow\n如果是在windows下,可以参考这篇文章进行安装: http://my.eoe.cn/sunxun/archive/158.html\n如果你的git已经装好,则方便多了,下载下面两个地址的文件,并解压出getopt.exe和libintl3.dll放到git的安装目录的bin目录下。 http://sourceforge.net/projects/gnuwin32/files/util-linux/2.14.1/util-linux-ng-2.14.1-bin.zip/download …"