• 2015-11-10

    谁在使用 CocoaUI 框架?

    Views: 7689 | 2 Comments

    首先介绍下 CocoaUI 框架. CocoaUI 是我开发的一个 iOS UI 开发框架, 用来解决 iOS 设备上的界面布局和多设备屏幕适配问题. 当初, 在开发懒投资 iOS app 的时候, 我们都没有多少 iOS 开发的经验, 根据我们做 Web 开发多年的经验, 我们认为 iOS 的约束布局方式不符合大多数程序员的思维, 所以有必要借鉴 Web 界面布局(主要是流式布局, HTML+CSS 定义), 来开发 iOS 应用.

    所以, CocoaUI 框架应运而生了. CocoaUI 在 2015-06-17 开源了, 源码托管在 GitHub 上面. 并且, 我还弄了一个以 cocoaui.com 为域名的网站, 在上面放 CocoaUI 相关的文档等.

    有了 CocoaUI, 懒投资 iOS app 的开发速度非常快速, 我们多个传统的 Web 程序员同时开发, 协作得非常好. 由于完全是代码布局, 没有使用 XIB/StoryBoard 这些高度集成的受限技术, 整个项目模块划分非常清晰, 从来不会遇到代码冲突, 做界面的单元测试也极其方便.

    我多次说过苹果的约束布局为什么那么落后, 是一项非常丑陋的技术. 而 CocoaUI 使用 Web 浏览器的布局思路和技术, 具有广大的用户基础, 上手非常简单.

    目前, 我知道的使用 iOS CocoaUI 框架开发的大中型 app 有: 懒投资, 爱尚三福. 当然, 还有很多 app 没有主动给我反馈. 但 CocoaUI 已经应用非常广泛了.

    Posted by ideawu at 2015-11-10 12:21:00 Tags:
  • 2015-10-11

    低级程序员和高级程序员的区别

    Views: 8455 | 3 Comments

    低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的表象而看不到本质. 所以, 低级程序员总结出的一切东西, 你都可以大胆地忽略.

    所以, 我们来听听高级程序认为自己与低级程序员的区别是什么. 高级程序员之所以高级, 在于他们认识到代码 bug 是不可避免的, 有千万种理由可以导致 bug, 但他们可以在设计和逻辑上保证(追求)滴水不漏, 并用逻辑的百分之百准确性来减少代码 bug. 没错, 严谨的逻辑能力是高级程序员区别于低级程序员的最主要原因.

    可以举一个简单常见例子: 网络购票终端的开发. 当然, 比低级程序员还低级的程序员做不出来. 我们先看看低级程序员是怎么做:
    Continue reading »

    Posted by ideawu at 2015-10-11 13:03:02
  • 2015-09-29

    SSH 信任限制只能执行 rsync 命令

    Views: 4573 | No Comments

    业务场景:

    * server A 经常需要使用rsync将文件同步至 server B
    * rsyncd 的配置稍显复杂,不想在 server B 上配置rsyncd
    * 出于安全性的考虑,不能完全开放 server A 至 server B 的ssh权限

    解决方案:

    配置server B上的~/.ssh/authorized_keys, 允许server A使用ssh连接至server B, 但是限制只能使用rsync命令,并且限制rsync上传的目录

    在server A上创建用于专门用于rsync验证的ssh密钥

    ssh-keygen -C rsync_key -f ./rsync_key -P '' -N ''
    #or
    ssh-keygen -t rsa
    

    在server B下载 rrsync 存放至 $HOME/bin/rrsync

    在server B的~/.ssh/authorized_keys中加入以下内容,行尾的部分即是第一步生成的rsync_key.pub的内容:

    command="$HOME/bin/rrsync /data/work/package/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAA**content of rsync_key** rsync_key
    

    在server A上可以通过下面的rsync命令把local_name上传至server B的/data/work/package/remote_name来传输文件:

    rsync -av -e 'ssh -o StrictHostKeyChecking=no -i /path/to/rsync_key' local_name user@serverB:remote_name
    

    参考链接:Restricting SSH Access to rsync

    转自: http://oylb.in/blog/2015/09/01/restrict-rsync-with-authorized-keys/
    原标题: 使用authorized_keys限制rsync

    Posted by ideawu at 2015-09-29 19:27:48
  • 2015-09-24

    iOS 滚动选择器控件 iOSScrollPicker

    Views: 8423 | No Comments

    滚动选择器控件, 不同于系统(框架)自带的 UISlider, iOSScrollPicker 支持:

    • 甩动选择
    • 点击选择
    • 支持竖直(上下)滚动
    • 支持水平(左右)滚动

    这有点像 iPhone 系统里的时间设置控件(日历控件), 或者说老虎机效果. 一般的实现是用 UIScrollView 来实现, 但用 UITableView 来实现, 可以更简洁, 减少很多偏移量的数值计算.

    代码下载: https://github.com/ideawu/iOSScrollPicker

    截图:

    iOS 滚动选择器控件 iOSScrollPicker

    Posted by ideawu at 2015-09-24 17:49:24 Tags: , ,
  • 2015-09-18

    MySQL binlog查看和清理

    Views: 5718 | No Comments

    显示 binlog 文件列表

    show binary logs;
    

    清理 binlog 文件

    purge binary logs to 'mysql-bin.000001';
    

    查看 binlog 内容

    show binlog events in 'mysql-bin.000001' limit 1000, 10;
    
    Posted by ideawu at 2015-09-18 17:08:42 Tags:
  • 2015-08-21

    CSS 样式规则的匹配算法实现

    Views: 9211 | No Comments

    CSS 的完整英文名称是: Cascading Style Sheets, 级联样式表. 除了可以定义丰富的样式, 以及进行界面控件布局外, CSS 最重要的特性便是名字中的"级联(Cascading)"一词. 级联代表了父子关联, 天生便是和数据结构中的"树"相关的.

    我创建的 CocoaUI iOS UI 框架, 是一个使用 CSS 进行 iOS 上流式布局的开发框架, 极大地方便了 iOS 应用的界面开发, 轻松适配多种屏幕. 因为 CocoaUI 使用 CSS 来进行界面布局和定义界面样式, 所以需要对 CSS 的样式规则进行匹配, 将某一条 CSS 样式作用到某一个 UIView(IView) 上面.

    Continue reading »

    Posted by ideawu at 2015-08-21 15:49:14 Tags: , , ,
|<<<5678910111213>>>| 9/120 Pages, 720 Results.