在Git下创建一个空分支

有时候我们需要在Git下创建一个空分支,从头开始Coding —— 这大概是那些重构帝最喜欢的事情。参考了github,才找到一个合适的方法。

怎样安全的进行这项操作

我们需要建一个“孤立”的空分支,为了尽可能的保证数据安全,最好还是重新clone一份代码。

$git clone https://github.com/user/repo.git
# Clone our repo

# Cloning into \'repo\'...
# remote: Counting objects: 2791, done.
# remote: Compressing objects: 100% (1225/1225), done.
# remote: Total 2791 (delta 1722), reused 2513 (delta 1493)
# Receiving objects: 100% (2791/2791), 3.77 MiB | 969 KiB/s, done.
# Resolving deltas: 100% (1722/1722), done.

开工

这里以github的操作为例,下面试图创建一个名为gh-pages的空分支

$cd repo

$ git checkout --orphan gh-pages
# 创建一个orphan的分支,这个分支是独立的
Switched to a new branch \'gh-pages\'

git rm -rf .
# 删除原来代码树下的所有文件
rm \'.gitignore\'

注意这个时候你用git branch命令是看不见当前分支的名字的,除非你进行了第一次commit。

下面我们开始添加一些代码文件,例如这里新增了一个index.html

$ echo \"My GitHub Page\" > index.html
$ git add .
$ git commit -a -m \"First pages commit\"
$ git push origin gh-pages

在commit操作之后,你就可以用git branch命令看到新分支的名字了,然后push到远程仓库。

参考链接

Markdown Preview Plus

Markdown Preview Plus是一个chrome下的markdown预览插件。这个插件基于Markdown Preview的基础上,做了一部分改进。

改进的部分

  • 支持自动加载,这个选项默认是关闭的,可在options中设置。
  • 支持http和https的markdown文件预览
  • 支持部分css样式,例如Github,TopMarks,另外也从Mac下的客户端Mou中导入了Clearness样式

预览

设置界面的预览

\"Markdown

使用详情可参考使用markdown格式写Todo list

做这个插件的初衷

我比较习惯使用vim编辑文件,虽然现在有不少带即时预览功能的markdown编辑工具,仍然无法适应,所以做了这个插件来满足日常的编辑需求。如果有问题,请在github上指出。

mac下快速安装php 5.4

手头的笔记本升级到了OS X 10.8了,但是偶尔还需要写点php调剂一下。看看自带的php版本?

PHP 5.3.13 with Suhosin-Patch (cli) (built: Jun 20 2012 17:05:20)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

对于追新族来说,必须得升级到php 5.4才开心。借助homebrew很快完成升级:

安装过程

三行即可。


brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
brew install php54

这样安装的php路径在/usr/local/bin/php,版本信息:

/usr/local/bin/php -v
PHP 5.4.4 (cli) (built: Jul 27 2012 08:42:32)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

MarkNote 1.0.2

MarkNote 1.0.2可以下载了。这个版本以Bug修复为主,改动如下:

  • 添加了撤销和重作功能.
  • 添加了部分retina高清图标,为了The new iPad.
  • 预览界面里的链接现在是在内置的safari打开,避免点击链接之后无法预览
  • 修复竖持时>按钮无法被按到的问题

下一个版本会做稍大的改动,计划内的改动如下:

  • 补齐retina图标以及app的高清图标
  • 支持MultiMarkdown语法,这样就可以画table了
  • 支持编辑时手动上传

猛击App Store下载

MarkNote for iPad 1.0.1

MarkNote 1.0.1在苹果应用商店上架了。这是一个在iPad上使用的Markdown编辑器,如果你喜欢用Markdown来写一些文字的话,那么这个应用可能就是一个不错的选择。

现在限时降价,6块

1.0.1新增的功能:

  • 新增了多个语言支持
  • 新增了全屏预览按钮
  • 在键盘上新增了两个按钮: < 和 >
  • 解决了第一次打开文件时有可能没有预览的问题
  • 解决了Dropbox同步的一个问题

我借到一个支持Air Print的HP打印机测试了打印功能,MarkNote的打印功能工作正常。

图片预览

新增的全屏预览按键在下图的右下方,可惜被某浪的图片水印盖住了。
\"MarkNote\"

iPhone中png图片格式处理

众所周知,iPhone中应用自带的png图片已经是经过压缩处理的,无法直接查看,但是可以通过工具转换为原图。

转换为原图的方法

在安装好Xcode之后(我安装的版本是4.3),可使用命令行转换

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -revert-iphone-optimizations src.png dst.png

这个命令行太长,不好记,所以我在~/.bash_profile中加入一个alias。

alias pngcrush=\"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -revert-iphone-optimizations \"

所以之前的命令可以简化为

pngcrush src.png dst.png

批量转换png

用简单的shell就可以批量转换png图片为原图。

for i in `ls *.png`; do pngcrush $i /tmp/$i; mv /tmp/$i $i; done

小说跟踪器 —— 另一款iPhone上的小说阅读,更新提醒应用

不才的另一个iPhone应用 —— 小说跟踪器也已经出现在苹果的应用商店。

小说跟踪器的用途

小说跟踪器可以试阅起点中文网的小说,订阅小说的章节更新通知。因为目前的阅读软件已经多的不得了,所以这款应用没有把阅读功能作为重点来做,只提供了基本的试阅功能。但是你会发现它的 章节更新通知 功能很好用,很及时而且也稳定,最重要的是,还免费

所以,这个应用适用于起点小说的重度书友,跟书不愁。

目前支持的设备有iPhone以及iTouch,在iOS 4.3及以上版本都可以使用。

应用截图

书架
\"书架\"

章节通知
\"章节通知\"

阅读界面
\"阅读\"

网站

MarkNote – iPad上的Markdown文本编辑器

不才用业余时间鼓捣出一个叫MarkNote的iPad应用,用来给geek们编辑Markdown文本。使用方式是左侧编辑,右侧预览生成的HTML,然后接下来可以选择Email或是打印,复制之类。

MarkNote的功能

  • 实时预览
  • 自动保存
  • 多个主题选择,甚至可以做为一个简单的待办事项列表来使用(使用TopMarks主题)
  • 和Dropbox同步
  • 以html格式打印或邮件递送内容
  • 复制内容到其它应用中使用

真相图

\"TopMarks样式\"

\"夜间样式\"

BTW:这个应用苹果的审核人员只用一个小时就通过了,可见是多么简单的一个应用。

干掉xcode 4.2里的performselector警告

xcode 4.2非常可恶,原来的代码里有调用performselector:withObject:的地方无一例外获得一个警告:

Semantic Issue
PerformSelector may cause a leak because its selector is unknown

warning倒是不影响程序运行,但是这人要是有点代码小洁癖的话,那日子就没法过了,这warning怎么看都碍眼。所以必须得想办法把它弄没了:

#pragma clang diagnostic push
#pragma clang diagnostic ignored \"-Warc-performSelector-leaks\"
    [self performSelector:nextView];
#pragma clang diagnostic pop

世界清静啦

iOS 5的文件存储策略应对

苹果在iOS 5系统时,对app的文件存储提出了新的要求。从它的guildline来看,是推荐开发者尽量把app生成的文件放在Caches目录下的。原文如下:

Only user-generated data or that cannot otherwise be recreated by your application, should be stored in the /Documents directory and rest should be stored to /Library/Caches directory。

照做会怎么样?

如果这么做的话,会出现两种情况

  1. 如果对此置之不理,继续把应用生成的文件放在Documents目录下,那么这些文件会被备份到iTunes或者iCloud。如果这些文件很大,那么用户可能需要为了同步消耗不少流量,然后苹果可能会因此拒绝你的应用上架,这是一个悲剧。
  2. 如果开发者照Apple说的干,把应用生成的文件放在Caches目录下,那么苹果不会拒绝你的应用,很happy。但是iOS 5会在磁盘空间紧张的时候删除Caches目录下的文件,这对用户来说可能是一个更大的悲剧。

如何应对新的文件存储策略?

开发者在这时陷入了两难的境地,但是到了iOS 5.0.1的时候,开发者多了第三种选择:

  • 继续把文件存储在Documents目录下,但是标记这些文件为不需要备份。详情请参考 technote (QA1719)

原文如下:

Q: My app has a number of files that need to be stored on the device permanently for my app to function properly offline. However, those files do not contain user data and don\’t need to be backed up. How should I store those files in iOS 5?

A: Starting in iOS 5.0.1 a new \”do not back up\” file attribute has been introduced allowing developers to clearly specify which files should be backed up, which files are local caches only and subject to purge, and which files should not be backed up but should also not be purged. In addition, setting this attribute on a folder will prevent the folder and all of its contents from being backed up.

代码示例

给文件加上\”do not back up\”属性的代码如下,需要注意这个是iOS 5.0.1才有效,低于这个版本就别费劲了。


#include 
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    const char* filePath = [[URL path] fileSystemRepresentation];
 
    const char* attrName = \"com.apple.MobileBackup\";
    u_int8_t attrValue = 1;
 
    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
    return result == 0;
}