• 2015-11-11

    CocoaUI 的 CSS 样式应用算法说明和源码解析

    Views: 9896 | No Comments

    W3C 规范中对 CSS 样式的应用算法有规定, 这个规范中的算法比较复杂, 简单来说, 就是根据 CSS 样式选择器中的不同类型的元素出现的次数来计算优先级, 如果某个节点同时命中多个 CSS 样式规则, 以高优先级的样式为准.

    W3C 规范具体可以见这个文档: http://www.w3.org/TR/CSS2/cascade.html, "6.4.3 Calculating a selector's specificity" 一节.

    例如下面的两条 CSS 样式规则和 HTML:

    <style>
    ul li .clz{color: #33f;}
    li .clz{color: #f33;}
    </style>
    
    <ul>
        <li><span class="clz">Hello World!</span></li>
    </ul>
    

    如果按照 W3C 规范来计算优先级, 那么会计算出:

    第一条的优先级: a=0, b=0, c=1, d=2
    第二条的优先级: a=0, b=0, c=1, d=1
    

    Continue reading »

    Posted by ideawu at 2015-11-11 16:26:18 Tags: ,
  • 2015-11-10

    谁在使用 CocoaUI 框架?

    Views: 8752 | 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: 8992 | 3 Comments

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

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

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

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

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

    Views: 5200 | 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: 9691 | 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: 6589 | 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;
    

    或者SHELL命令行

    sudo mysqlbinlog mysql-bin.000001
    
    Posted by ideawu at 2015-09-18 17:08:42 Tags:
|<<<5678910111213>>>| 9/121 Pages, 721 Results.