昨晚更新的 3.0.1 版本开始支持第三方主题。

之前的 3.0.0 版本也能够识别第三方主题,但有部分选项可能支持不佳。

示例主题包可以在 这里 下载

主题制作仿照示例主题包即可,主要内容在于图片文件的准备和包内 info.plist 的配置。

1. 图片资源准备

图片资源文件请使用 png 文件,jpg 文件在 iOS 上性能不佳,而且不能实现透明,如果你使用 jpg,所有图标都可能会变成大方块哦~

图片大小请参照实例主题包内的图片大小,稍微相差一点也是没问题的,但最好是偶数像素大小。

图片文件名的格式为 <文件名><@2x>,同示例主题包。

图片文件 可以 用 ImageOptim 等软件适当优化,有利于提高那么些许的性能。不过不优化也是没什么问题的。

图片基本上就这样了。

2. info.plist 文件配置

info.plist 是主题的配置文件,是一个标准的 XML 文件,Windows 平台上可使用 UltraEdit 等软件打开,请注意打开时会提示是否转换到 Windows 标准的换行符,最好不要转换。

在 Mac 上可以直接用 Xcode 改。

打开来可以看到文件基本上是这样的:

配置好每一项就 OK 了。

info.plist 文件内的字段共有三种类型。

字段类型 含义
图片 请使用图片文件 @2x 之前的部分
颜色 使用 Web 标准的 16进制颜色
布尔值 配置为 true 或 false
字符串 字符串本体
字段名 类型 含义
THEME_IDENTIFIER 字符串 主题的标示符,需要保证全世界唯一。没有自己域名的童鞋建议用net.lilybbs.<自己的id>.<主题名字>这样的格式
THEME_DISPLAY_NAME 字符串 主题的显示名字,这个会显示在客户端的“主题”功能内
THEME_AUTHOR_NAME 字符串 作者名字
THEME_AUTHOR_DATE 字符串 主题制作日期
THEME_VERSION 字符串 主题版本
THEME_COMPATABILITY 字符串 主题兼容性字段(暂时不用)
NAVIGATION_BAR_TINT_COLOR 颜色 导航栏背景颜色
NAVIGATION_BAR_TEXT_COLOR 颜色 导航栏字体颜色
NAVIGATION_BAR_BACKGROUND_COLOR 颜色 主题栏背景颜色(一般和上面一个背景颜色设置成一样)
NAVIGATION_BAR_BACKGROUND_IMAGE 图片 导航栏背景图片
TAB_BAR_SELECTED_TINT_COLOR 颜色 底栏选中时图标的颜色
TAB_BAR_TINT_COLOR 颜色 同上
TAB_BAR_SELECTED_TEXT_COLOR 颜色 底栏文字选中时的颜色
TAB_BAR_UNSELECTED_TEXT_COLOR 颜色 底栏文字未选中时的颜色
TAB_BAR_BACKGROUND_IMAGE 图片 底栏背景图片
TAB_BAR_BACKGROUND_COLOR 颜色 底栏背景颜色
TAB_BAR_ICONS_TOPTEN_SELECTED_IMAGE 图片 底栏“全站十大”选中时的图片
TAB_BAR_ICONS_TOPTEN_IMAGE 图片 底栏“全站十大”未选中时的图片
TAB_BAR_ICONS_FAVORITES_SELECTED_IMAGE 图片 底栏“我的收藏”选中时的图片
TAB_BAR_ICONS_FAVORITES_IMAGE 图片 底栏“我的收藏”未选中时的图片
TAB_BAR_ICONS_BROWSE_SELECTED_IMAGE 图片 底栏“浏览功能”选中时的图片
TAB_BAR_ICONS_BROWSE_IMAGE 图片 底栏“浏览功能”未选中时的图片
TAB_BAR_ICONS_PERSONAL_SELECTED_IMAGE 图片 底栏“个人中心”选中时的图片
TAB_BAR_ICONS_PERSONAL_IMAGE 图片 底栏“个人中心”未选中时的图片
TAB_BAR_ICONS_SETTINGS_SELECTED_IMAGE 图片 底栏“设置”选中时的图片
TAB_BAR_ICONS_SETTINGS_IMAGE 图片 底栏“设置”未选中时的图片
TAB_BAR_ICONS_DISPLAY_ORIGINAL 布尔型 是否按原样显示底栏上的图片(若为 false 则 iOS 默认会自动添加灰色的遮罩到图片上)
TABLE_CELL_CACHE_STATUS_COLOR 颜色 帖子的未读提示颜色
NOT_IMPL_TABLE_CELL_TITLE_COLOR 颜色 尚未实现
NOT_IMPL_TABLE_CELL_AUTHOR_COLOR 颜色 尚未实现
NOT_IMPL_TABLE_CELL_BOARD_COLOR 颜色 尚未实现
NOT_IMPL_TABLE_CELL_VIEWED_COLOR 颜色 尚未实现
NOT_IMPL_TABLE_BACKGROUND_COLOR 颜色 尚未实现
NOT_IMPL_TABLE_BACKGROUND_IMAGE 图片 尚未实现
READER_HEADER_COLOR 颜色 阅读时头部版面背景色
READER_HEADER_TEXT_COLOR 颜色 阅读时头部版面字体颜色
STATUS_BAR_STYLE 字符串 此处需配置为“STATUS_BAR_STYLE_LIGHT_CONTENT” 或 STATUS_BAR_STYLE_DARK_CONTENT,即状态栏文字为白色或黑色

3. 调试

使用文件传输工具(OS X 平台可使用 iExplorer,Windows 平台可使用 iFunbox)将主题文件夹传输至小百合 App 的 “Documents\Skins” 目录,打开 App 内的“个人中心\主题”即可看到新的主题。

目前,主题内配置的颜色可实时生效,底栏的图片需要重启 App 生效。

就是这么简单~

工作原因需要用到 Autocad,而 Retina Macbook Pro 用 Bootcamp 装 Windows 的惨况想必大家也都清楚,因此只好安装 OS X 版。

安装过程一切顺利,Autocad 在 Retina Macbook Pro 上运行得也很流畅,直到一会儿之后。。。

在一次重启之后,系统莫名其妙地变卡了!

难以用言语描述这种卡顿,简单来说差不多像这样子:

  1. 来回切换桌面空间时会发现画面出现卡顿,同时 Dock 附近出现画面撕裂。
  2. 屏幕顶端菜单栏右侧不断闪动。

一开始以为是 Bartender 或者 Window Tidy 的问题,但在卸载并重启后故障依旧。

这一定是体制问题。。。

折腾了一个小时后,开始回想最近的安装历史,突然想到了刚安装的 Autocad!

然后又经过一个小时的折腾,成功定位了故障。

原来,只要在退出 Autocad 前在 Preference 里面把下图所示的选项取消即可。

看起来似乎是 Autocad 的 bug,最令人恼火的是 每次打开 Autocad 时这个选项都会默认被选中,实在是令人发指。

不管怎么说,这个莫名其妙的 bug 就这么莫名其妙地被解决了。

首先,直接从 iOS6 升级是无需重新激活的,测试版 iOS 仅会在激活时验证开发者身份。而从 iOS6 “升级”到 iOS7 是无需重新激活的,也就意味着并不需要开发者身份即可使用。

但非开发者使用 iOS7 是违反苹果的条款的,这点苹果说得很清楚。

This is an Apple Confidential pre-release seed. Your use is subject to and licensed only under the terms and conditions of the iOS Developer Program License Agreement (“iOS PLA”), including any applicable consent to collect diagnostic data set forth therein. If you have not agreed to the iOS PLA, you are not permitted to use this software.”

这也意味着去淘宝买 UDID 开发者认证本身是违反条款的,苹果可以随时中止相关开发者账号,所以不用浪费钱了。

综上所述,以下内容是给开发者计划中的开发者们准备的。

首先要纠正一个概念,目前刷 iOS7 还不能叫“升级”,因为升级往往代表更好的表现,而iOS7目前还没有达到这个程度,bug比较多,比较卡顿,电池表现也非常烂。因此只建议开发机安装,不建议日常使用。

如果你觉得这些后果 OK,想体验一下的话,只需如下步骤:

  1. 确认机器处于非越狱的 iOS6 状态,如果越狱了,先下个 iOS6 的最新固件恢复一下(即使没越狱也建议下一份,因为大多数人很快就会刷回来的)

  2. 用 iTunes 备份手机,并把 iTunes 的备份文件夹本身备份一遍,因为如果刷了 iOS7,备份就会被更新而无法用于 iOS6 了,如果没有老的备份的备份,就等着哭吧。。。

Windows 的 iTunes 备份文件夹位于

C:\Users\(用户名)\AppData\Roaming\Apple Computer\MobileSync\Backup\

OS X 的 iTunes 备份文件夹位于

~/Library/Application Support/MobileSync/Backup

如果只想备份这个 iPhone 的,那么备份该文件夹下这个 iPhone 的 UDID 对应的那个文件夹即可,比如我的是:

~/Library/Application Support/MobileSync/Backup/591*************************653
  1. 下载对应机型的 iOS7 固件,然后在iTunes里面进入iPhone的页面

Windows 的话按住 shift 然后点更新,

OS X 是 option 点更新

选择 iOS7 的 ipsw,然后开刷,然后就是 iOS7 了。


====================我是邪恶的分割线😈====================


ooxx 体验完之后,估计起码半数的人会想刷回来。刷回来的过程也是很简单的。

  1. 先确认你备份好了原先 iOS6 的备份,如果没有,请先准备好哭吧。

  2. 选择你刚才已经下好的 iOS6 固件,按照刚才的 shift/option + 更新大法,选择 iOS6 的固件。

  3. 如果一切正常就会顺利回到 iOS6 了,关 iTunes。

  4. 去 iTunes 备份文件夹把备份删了,把之前备份好的 iOS6 时候的备份拷进去。

  5. 开 iTunes,然后从备份恢复手机。

  6. 好了,折腾完毕,又回到了之前的状态。

Tips:

  1. 刷的过程中遭遇任何 3194,16XX 错误的,请检查 hosts 文件,把有关 apple.com 的行数统统干掉,重启,台式机的话换机箱后面的口,笔记本换个确认接触比较好的口。要是还刷不成就别刷了,没缘分,省得刷来刷去刷出错误-1,到时候哭都来不及。

  2. 如果只是想刷一下 iOS7,把玩一下然后吐槽,“靠,这卡货/丑货”,然后刷回来的,那其实不用刷,因为有很多人帮你吐槽过了,玩微博的这个界面也见得多了,不差你一个。

  3. iPhone5 刷了之后流畅度表现尚可,iPhone4S 在程序开多了的情况下会比较卡顿,至于 iPhone4 的表现,个人不抱期望。所有机器都会遭遇比较严重的耗电和发热问题。

  4. 没图是因为个人感觉已经说得够明白了,对于 iTunes 比较熟悉的人不会在乎有没有图。这个不是手把手的教程,只能算是个让比较熟悉的人少绕弯路的介绍。想看手把手教程的,前面左拐是 Weiphone。

  5. 对于抱着调试程序目的,也不是很建议刷,我个人的感觉现在 UIKit bug 比较多,等稳定了再调试也来得及,按照以往的尿性 beta3 之后会比较靠谱。况且兼容 iOS7 也不是直接用 iOS7 SDK 编译一下就能解决的,这回 iOS7 的更新还会带来交互、贴图等等更大的问题。

总的来说就是现在没什么好刷的,除非你热爱穷折腾。

有段时间没在学校了,昨天回来发现终端里的用户名变成了 IP。

Google了一下之后发现其实原因很简单,在这里:

因为学校修改了 DHCP 服务器的配置,因此会给每个设备分配一个 NetBIOS 名称,而在 OS X 里面呢,终端会优先显示 NetBIOS 名称。

解决方法很简单,在终端中执行:

sudo scutil --set HostName "你喜欢的名字"

如下图

要把名字改回来也很简单,执行

sudo scutil --set HostName ""

即可。

原版权归属于

http://code.google.com/p/njuthesis/

我做了一些改动,使之更适合在 OS X 下编译。(理论上 Linux 也适用)

优化后的版本请:

git clone https://github.com/fireblue/NJUThesis

make.sh 文件作用:

  1. 关闭当前打开的编译过的文档窗口。(仅对系统的“预览”有效)
  2. 清空之前的临时文件。
  3. 编译。
  4. 自动打开编译完成的pdf文件。

需要编译新版本时,直接编译即可。

系统会找到开着编译后 pdf 文件的窗口并且把它关掉。

编译完成后打开。

tex.sublime-build 文件作用:

将文件拷贝至 ~/Library/Application Support/Sublime Text 2/ 目录下,即可在 Sublime Text 的 “Tools” => “Build Systems” 菜单下看到 tex。

因此操作就变成:

  1. 写文章。
  2. ⌘ + B 即可编译。

Have Fun~

最新版的小百合 iOS 客户端中加入了图文混排的新浪微博分享。

这个功能实现的原理很简单,其实就是对 UIWebView 进行了一次截图,然后保存并分享。

我的这段代码可以对 UIWebView 截图,并且到某个特定的html标签时停止。

需要吐槽的是,任何涉及到网页的东西有的时候都需要一定的hack,UIWebView也不例外。

因此,这个功能看起来很简单,其实花了不少时间,现在把代码贴出来,让大家都少走些弯路吧。

使用的时候,一定要注意网页的 viewport,切记!

同时需要注意的是内存,这种方式内存消耗比较大

在更新了10.8.3正式版之后,我的登录界面出现了一些小问题。

底下三大天王变成了 Sleep,Restart 和 Shutdown。

就连输入密码的占位符都变成了 Password。

总而言之,整个界面变成了英文。

但是登录进系统后,确是正常的中文。

这种情况的解决方案很简单。

打开“应用程序”=>“实用工具”=>“终端”

然后输入这个命令:

sudo languagesetup

输入用户密码后,出现语言列表。

在我这里中文是 17,因此输入 17,并回车。

不用重启,问题解决。

新年伊始,很快无所不能的大家就发现了新版微信(4.3.3)内置了一个控制台,不仅可以显示一些信息,还可以让用户在里面执行一些简单的debug命令。

其实很简单,在控制台顶上就可以看到,微信使用的是iConsole。

简单Google了一下就在Github上找到了这个项目的主页:

https://github.com/nicklockwood/iConsole

在最新的RabbitHole里试了一下,还不错,只是有一个bug:

只要在包含UIScrollView的视图里唤出Console,这个UIScrollView表现就会不正常。

这是因为iConsoleWindow中用了如下两个函数来捕获和响应三指上滑和下滑的操作:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

- (void)sendEvent:(UIEvent *)event

于是fork了一下,用两个UIGestureRecognizer代替了原先的这俩函数。试验了一下完全ok,完事儿~~

enjoy~

对了,忘了贴我的fork的地址:

https://github.com/fireblue/iConsole

Happy Coding :)

目前我能想到和找到的能够最完美匹配url的正则表达式。

好东西要共享。

(((http|ftp|https)://)(([a-zA-Z0-9.–]+.[a-zA-Z]{2,6})|([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%./–~–]*)?)

enjoy~

submodule是git的一个很方便的功能,对于像笔者这样的更新强迫症患者绝对是个福音。将Github上的项目作为submodule添加到自己的项目中后,能够很方便地进行更新。

本文是我在git submodule使用过程中积累下的几个简单用法,放在这儿留档的同时分享给大伙儿看一下~

  1. 添加submodule

很简单,一句命令即可

git submodule add git://yourhost/repo.git Externals/repo

  1. 删除submodule

相对于添加略微烦一点,按照如下步骤即可:

先在git中删掉这个submodule

git rm —cached Externals/repo

rm -rf Externals/repo

接着修改.gitmodules,删掉当中对应于这个submodule的部分

vim .gitmodules

接着修改.git/config

vim .git/config

修改完成之后理论上submodule就从当前的工作目录消失了,于是commit一下

git add .gitmodules

git commit -m “Farewell my submodule”

还不放心就同步一下

git submodule sync

  1. 更新submodule

很简单,先cd到需要更新的submodule

cd Externals/repo

然后pull一下

git pull origin master

完事

当然,一般而言一个项目是绝对不可能只用到一个submodule的,下面这个命令可以事半功倍:

git submodule foreach git pull origin master

当然还有很多其它的办法,欢迎分享~