Mac下安装过octopress导致ruby版本不对,cocoapods无法使用的解决方法

由于之前弄过octopress,最近要用cocoapods发现无法使用:

boxertandeiMac:~ boxertan$ pod
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:296:in `to_specs': Could not find 'cocoapods' (>= 0) among 35 total gem(s) (Gem::LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:307:in `to_spec'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb:47:in `gem'
from /usr/bin/pod:22:in `<main>’

因为cocoapods需要用到比较新的ruby版本,而octopress要用1.9.3,所以,我们用rvm安装2个版本,然后用到哪个就切换一下版本即可。

Read on →
| Comments

Mac上搭建django环境备忘

由于项目需要,快速搭建一个demo,要用到一个后台环境。于是研究了一下django框架,挺不错的。下面是一些搭建过程。

Python用的是mac自带的,2.7.x版本,到django官网下载最新版本1.6.5。

Read on →
| Comments

学习ios蓝牙技术,仿写lightblue

前言

bluetooth

上一次我们研究完iBeacon,发现iBeacon是基于蓝牙4.0的一个封装而已。那么,今天我们来研究ios的蓝牙4.0的应用。最出名的app当属lightblue,我们不妨来仿写一个lightblue,这样基本的ios蓝牙编程就算入门了。

基本理论

框架与概念

在ios中使用蓝牙技术,会用到CoreBluetooth框架。

里面对设备有2个定义:周边(peripeheral)设备 与 中央(central)设备。发送蓝牙信号的是周边设备,接收蓝牙信号的是中央设备。

可以这样理解,周边设备是服务端,中央设备是客户端。中央设备可以去搜索周边有哪些服务端,可以选择连接上其中一台,进行信息获取。

支持蓝牙4.0的手机,可以作为周边设备,也可以作为中央设备,但是不能同时既为周边设备又为中央设备。

类解读

中央设备用 CBCentralManager 这个类管理。

周边设备用 CBPeripheralManager 这个类管理;

周边设备里面还有服务类 CBService,服务里面有各种各样的特性类 CBCharacteristic

仿写lightblue

基本流程

  1. 假设我们有2台以上可用设备。
  2. 其中一台作为调试机,用来搜索其它设备,并连接上去。所以,是中央设备central
  3. 其它设备设置为蓝牙发射器,即是周边设备peripheral
  4. 调试机先扫描周边设备,用UITableView展示所扫描到的周边设备。
  5. 点击其中一台设备,进行连接connect
  6. 连接上后,获取其中的所有服务services
  7. 对其中每个服务进行遍历,获取所有的特性Characteristic
  8. 读取每个特性,获取每个特性的值value

至此,lightblue基本的仿写思路就清晰列出来了。

Read on →
| Comments

在xcode5上开发iBeacon的ios7应用

titlepic

前言

iBeacon的用处和好处我就不介绍了,大家可以看我最后面附录的参考文章。

本文重点介绍如何写一个app,通过2台iphone来实现iBeancon的收发。

强调一点,就是ibeacon是不能进行数据交互的,只能广播信号。

所需材料

iBeacon 使用低功耗的蓝牙技术,所以你必须要有一个内置有低功耗蓝牙的 iOS 设备以便与 iBeacon 协同工作。

为了做完这个实验,你需要其中2台如下的设备:

  1. iPhone 4s 或更新的
  2. 第三代 iPad 或更新的
  3. iPad mini 或更新的
  4. 第五代iPod touch 或更新的

另外,还需要一个开发者帐号进行真机调试,或者请同事亲戚朋友导出他的开发者证书到你机器上,又或者这2台设备都已经越狱。

基本概念

iBeacon 需要掌握的基本概念只有3个:ProximityUUID、major、minor。

ProximityUUID:感应标识符,全球唯一的标识符,128bit,通过命令uuidgen即可生成。用这个来区别其它公司或者机构的iBeacon产品。例如我们的咖啡店用下面的感应标识符:

boxertandeiMac:boxertan.github.io boxertan$ uuidgen
E172F7F9-4F2F-4378-A3A8-737433C6F9B1

major:主要值,扩展字段,16bit,比如说用来区别公司下属的分公司或者分店。例如我们的咖啡店分店:1为南山店,2为福田店,3为罗湖店,等等。

minor:次要值,再细分的扩展字段,16bit,比如说咖啡店南山分店用了10个 iBeacon 发射器,那么分别为1-10。

思路

  1. 实现发射器
  2. 实现接收器
Read on →
| Comments

车载导航升级凯立德的步骤

基本概念

先介绍下升级车载导航必须知道的几个概念:

  1. 车载一体机:就是有导航、音视频、倒车影像等综合功能的机器,已经安装在车上的。我们不折腾这个。

  2. 凯立德、高德、道道通、城际通等等:导航软件,我们的折腾的目标。导航软件升级分两部分:程序和地图。 如果你的导航版本比较新,那么只要下载最新的地图,拷贝到卡里覆盖文件即可。 如果导航版本比较旧,就要升级最新的程序,才能使用最新的地图。 如果比较懒,还可以下载懒人包,里面就已经打包好了最新的程序和地图。

  3. 端口、速率:每一个车载一体机出厂时候都已设置好对应的端口与速率,提供给导航软件搜索GPS卫星。我们修改导航软件的端口和速率,与车机匹配,这样才能使用到GPS卫星,软件才能正常导航。

  4. 高清、普清:800*480以上为高清,以下的为普清。下载地图要注意。

  5. 普通版、3D版:一般性能好的车机会上3D版本,其它的车机用普通版。下载地图要注意。

基本步骤

  1. 弄清自家车机的品牌和型号,从而找到说明书参数里所使用的端口速率。比如我的是com6,4800。

  2. 下载最新的懒人包,我这个是800*480的普通版全国地图,只用来学习和研究使用,请下载后24小时内删除。

    链接: pan.百度.com/s/1qW哈哈去掉M5lGo 密码: d800 上面链接需要处理下

  3. 下载端口、速率修改工具(only for Windows)

    链接: pan.百度.com/s/1c0k哈哈去掉tT6o 密码: 9k5k

  4. 到车上把卡从车机拿下来,然后通过读卡器插到电脑里,把卡里的东西拷贝出来,备份好。如果另外买一张大容量的卡更好,可以做N合一导航。

  5. 解压懒人包,打开端口速率修改软件,找到懒人包的naviconfig.dll,只修改端口和速率,其它不要改

  6. 整个文件夹拷贝到卡里,拿回车上,找到对应的NaviOne.exe,运行即可

其它问题

  1. 我的车机没有说明书,实在找不到端口和速率,怎么办?

    去官网找找说明书,也可以找网上的软件放到卡里,再到车上查看。具体方法请自行搜索,网上文章很多。

  2. 我的卡容量不够,怎么办?

    可以精简地图,也可以下载已经精简好的地图。比如我搞了试验了一下只有广东地图,整个程序和地图加起来才800m左右。

原载于:boxertan’s blog http://boxertan.github.io

如需转载请以链接形式注明原载或原文地址。

| Comments

xcode5编写ios7应用中UITableView、UIWebView嵌入UIScrollView混合编程心得

前言

在项目练习中,需要用到uiwebview、uitableview的混合编程。老罗是把UIWebView嵌入UITableView的第一个cell来实现。 而我发现,苹果官方不推荐UIWebView、UITableView、UIScrollView混合编程。想验证一下,究竟官方不推荐的原因是什么?

核心思想

灵感来源于这篇文章

最关键的一点,就是了解UIScrollView的2个核心内容,framecontent

  1. UIScrollView就好像我们窗户的上下拉动的窗帘。
  2. frame就是窗帘大小。设置大了,我们能看到窗外的景色就越多,设置小了,我们看到窗外的景色就少了。
  3. content就是外面世界的大小。可以是无穷大,也可以因为各种原因,设置比窗户大一点,或者小一点。
  4. content设置比frame大了之后,UIScrollView就能出现滚动条,让我们可以拖动着看外面大大的世界。
  5. 我们可以把frame设置为屏幕大小(相当于我们的窗户),把content大小随着内容改变而改变(外面世界可大可小)。

主要步骤

  1. 先创建一个UIScrollView,然后把UIWebView、UITableView作为UIScrollView子视图。
  2. 2个子视图都设置为不显示滚动条,设置的技巧下面会提到。
  3. 当UIWebView加载完毕后,获取实际大小,并把它的frame设置为实际大小。
  4. 当UITableView加载完毕后,计算每个cell的总高度,并把它的frame设置为实际总大小。
  5. 把UIScrollView的contentSize总高度设置为UIWebView实际高度加上UITableView实际高度。
Read on →
| Comments

Mac上逆向app步骤

  1. 想办法下载一个ios app到mac上,最好是没加密版本,比如说旧版本什么的
  2. 右键,查看包内容
  3. 找到bin文件,拉出来
  4. 用Hopper Disassembler打开bin
  5. 搜索字符串之类,就跟Windows下逆向思路差不多了!
| Comments