• BLOG
  • ARCHIVE
  • X
  • GITHUB
  • ABOUT
  • RSS
  • IOS之控制器数据传递和代理总结

    Dec 6, 2014

    copy: NSString/NSMutableArray
    weak:代理/UI控件
    strong: 其他OC对象

    #1. Segue

    storyboard上每根界面跳转的线, 都是UIStoryboardSegue对象

    每个Segue对象都有三个属性:

    • 唯一标识(@property (nonatomic, readonly) NSString *identifier;),
    • 来源控制器(@property (nonatomic, readonly) id sourceViewController;)
    • 目标控制器(@property (nonatomic, readonly) id destinationViewController;)

    ##1.1. Segue的类型

    • 自动型: 点击某控件后, 自动执行Segue,自动完成界面跳转(由控制拖出, 用于不需要做任何判断直接跳转界面的情景)
    • 手动型: 需要手写代码才能完成界面的跳转(按住control, 由来源控制器(不是按钮)拖线到目标控制器, 需要设置标识)
    ...more
  • Python爬虫(二)--豆瓣抓站小计

    Dec 5, 2014

    #1. 豆瓣抓站流程

    1. 分析url特征(菜鸟阶段)
    2. 对需要抓取的数据设计正则表达式
    3. 处理HTML中一些特征字符,换行符等

    注意异常的处理和字符编码的处理

    #2. 实现的功能

    简单的实现了抓取豆瓣电影Top100的电影名称

    #3. 后期工作展望

    • 抓取更多的有用数据(如:准确抓取导演, 抓取一个电影评论)
    • 使用多线程爬虫
    • 学习第三方的爬虫框架(Scrapy)
    • 深入理解HTML编码和文本处理
    ...more
  • Python爬虫(一)--学习笔记

    Dec 5, 2014

    #1. 初探urllib2模块

    • 浏览器相当于客户端, 向服务器发出资源请求(node.js充当的是服务器)
    • http是基于请求和应答机制, 客户端发出请求, 服务器应答请求
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import urllib2
    response = urllib2.urlopen("http://www.baidu.com/") #使用urlopen进行url请求, 返回应答对象response
    html = response.read() #去读取应答对象的内容
    print html

    import urllib2
    req = urllib2.Request("ftp://www.baidu.com/") #使用url创建一个Request对象
    response = urllib2.urlopen(req)
    html = response.read()
    print html
    ...more
  • IOS之多控制器管理

    Dec 1, 2014

    #1. 创建控制器的方式

    1. 控制器首先应该设置自身的class
    2. 设置所监控的View(控制器的view是延迟加载的, 用到时加载)
    3. 控制器的view加载完毕后会调用viewDidLoad方法

    ##1.1. 直接创建

    直接通过alloc 和 init 创建控制器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //创建一个窗口
    self.window.backgroundColor = [UIColor whiteColor]; //设置窗口的背景色

    ViewController *one = [[ViewController alloc] init]; //此处ViewController为自定义的集成UIViewControl的类, 创建控制器
    one.view.backgroundColor = [UIColor blueColor]; //设置view的背景色
    self.window.rootViewController = one; //设置窗口的根控制器

    [self.window makeKeyAndVisible]; //窗口设置为主窗口并显示
    return YES;
    }
    ...more
  • 分布式系统读书笔记-同步互斥

    Nov 30, 2014

    同步


    分布式系统中, 有一个重要的问题: 如何取得时间上的一致

    • 单CPU系统中, 所有进程使用同一个始终, 内部保持时钟不变
    • 多CPu系统中, 每个CPU有自己的时钟,导致时钟偏移.

    ##1.1. 时钟同步算法

    基础模型: 每台机器有一个每秒产生H次中断的计时器, 当计时器中断时, 终端处理程序将软件时钟加一, 每件时钟记录从过去某个约定时间开始的计数.

    • Cristian算法

    适用于只有一台机器有时间服务器(time server), 其他所有机器都要与这台机器同步.

    主要问题:

    1. 时间不可倒退(发送请求着时钟快于时间服务器, 接受时钟会导致严重错误)
    2. 时间服务器英法到达发送者有不确定的延迟.
    ...more
  • 分布式系统读书笔记(一)

    Nov 30, 2014

    分布式系统:若干独立计算机的集合, 这些计算机对于用户来说就像单个系统

    分布式系统构造带来的挑战:

    • 异构性(如何处理不同操作系统, 不同硬件, 不能编程欲然带来的差异)
    • 开放性(如果形成统一的接口)
    • 安全性(如果处理隐私, 信息安全问题)
    • 可扩展性(如果在用户激增情况下, 保持系统性能)
    • 故障处理(如果大型网络中, 检测故障, 隐藏故障和处理故障)
    • 并发(如果处理数据共享的一致性问题)
    • 透明性(如果使系统的某些特性对用户不可见)

    分布式系统特性:

    • 计算机之间的差别和计算机之间的通信方式的差别对用户是透明的
    • 用户和应用程序能够以统一和一致的方式与分布式系统通信
    ...more
  • 或许你会更喜欢我眼中的Chrome插件和使用

    Nov 28, 2014

    你站在桥上看风景,
    看风景的人在楼上看你。 —<断章>


    或许我眼中的Chrome的使用会让你眼前一亮呢? 会让你更优雅的使用Chrome呢? 尝试一下总会有一些意外的收获? 那么我们开始吧

    文章主要分成三个部分:

    • 常用的Chrome快捷键(主要针对Mac, 优雅的使用Mac不应该更多的使用键盘吗?)
    • 一些我在用的搜索技巧(强大的Chrome的搜索能力不是简单的搜索技巧能涵盖的, 学会更多的使用技巧, 或许会让你事半功倍)
    • 我眼中的优雅的Chrome插件(他们的优雅不仅仅的在于易用性, 对我来说已经产生了一种用户粘性, 简直欲罢不能)
    ...more
  • Python编码规范

    Nov 28, 2014

    Python,一门简洁,全能的胶水语言, 牺牲性能换来的多面手的特性, 最近写Python比较多, 通过这篇博文我试图形成自己的编码规范.为以后的代码重构和阅读埋下铺垫. 主要参考的是google编码规范, 毕竟大公司

    大部分.py文件不必以#!作为文件的开始. 程序的main文件以 #!/usr/bin/python2或者 #!/usr/bin/python3开始.(#!先用于帮助内核找到Python解释器, 但是在导入模块时, 将会被忽略. 因此只有被直接执行的文件中才有必要加入#!.)

    ##1.1. 分号

    不要在行尾加分号, 也不要用分号将两条命令放在同一行

    可能之前用C/C++比较多, 刚开始写Python的时候, 总是会在行尾加上分号,而且不会报错, 不过最近python写的比较多,所以也改过来了

    ...more
  • Python代码风格<译>

    Nov 27, 2014

    其实翻译并没有想象中那么简单, 在豆瓣上看过很多对于翻译的吐槽, 没有真正去做一件事情就没有资格去评论其中的对与错, 简单的一次翻译体会到了翻译的个中艰辛, 这篇翻译主要起于自己想制定一个适合自己的Python编码规范, 其中内容并没有认真校对, 见谅, 能力有限. 有错误请指出, 感谢.

    当你询问一个程序员为什么最爱Python语言, 他们常说它可读性很高. 确实, 高度的可读性是设计Python语言的核心.

    一个使Python代码易读,易理解的原因是Python语言相对完善的编码风格和Pythonic的风格

    并且, 当一个经验丰富的Python开发者指着一段代码说”这段代码不是Pythonic风格”, 这常常意味着这些代码没有遵循一个普遍的代码准则, 没有通过最好的方式表达出它的意图.

    在一些情况下, 没有一个约定的最好方式在Python代码中表达意图, 但这样的情况是比较少的.

    ...more
  • Sublime Text 2/3使用心得

    Nov 25, 2014

    Sublime Text号称最性感的编辑器, 跨平台, 免费使用

    PS:本文主要针对Mac下的Sublime Text配置, 其他的请自行对快捷键修改, 之前写错了, Mac下使用的是Sublime Text2, 在另一台电脑用的Sublime Text3, 混肴了, 但在配置方面2/3只有少量的差别, 更多的版本差别体现在插件的支持上

    #0. 设置subl命令行

    1
    2
    3
    4
    5
    6
    7
    #如果是在默认shell下, 
    sudo ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/bin/subl

    #使用zsh的可以使用以下命令
    alias subl="'/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl'"
    alias nano="subl"
    export EDITOR="subl"

    测试使用一下命令

    1
    $ subl

    使用方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    用法:
    subl [arguments] [files] 编辑指定的文件edit the given files
    or: subl [arguments] [directories] 打开指定的目录
    or: subl [arguments] - 编辑stdin

    参数Arguments:
    --project <project>: 载入指定的project
    --command <command>: 运行指定的命令
    -n or --new-window: 打开一个新的窗口
    -a or --add: 添加文件夹到当前窗口
    -w or --wait: 返回前等待文件关闭
    -b or --background: 不激活该应用程序
    -s or --stay: 文件关闭后保持应用程序激活状态
    -h or --help: 显示帮助并退出
    -v or --version: 显示版本信息并退出

    如果从标准输入--wait是隐式的。 使用--stay当文件关闭是不切换到后台控制台(只与是否有等待的文件有关)

    文件名可以通过加:line或者:line:column后缀来指定打开的定位。
    用法摘自官方文档
    ...more
PREVNEXT

© 2014 - 2026 Andrew Liu, powered by Hexo and hexo-theme-apollo.