在AR类中如何为任意命名的字段创建关系

故事是这样的,在我的业务模型里,有些东西是常态并且固定化的,比如User,这是一个网站的用户,有一张用户表与其对应。但是有些东西,却不是那么常态,比如我们的网站要经常搞活动,搞活动的时候,临时开发一个功能,加一个表来存储活动数据,日后,活动下线了,这个表也就没有用了,可能会被删除。活动频次非常高,所以不同的开发都会快速地进行开发,于是出现了命名不一致的情况,比如大家都是要关联User(活动跟用户有关,非常自然),在表A中,代表用户的字段叫user_id,表示User的主键,但是在表B里面,因为习惯使然,代表用户的字段叫uid,然后问题就产生了,当表A和表B需要联表查询时候,怎么设置这个relations呢? Continue reading “在AR类中如何为任意命名的字段创建关系”

关于越狱

今天闲着没事,我将手机升级到iOS 8.1后,尝试了下国人出的越狱,据说,这是第一次由中国人率先出品了越狱的版本,盘古。

越狱过程流畅无比,但是看完越狱后的界面,一朵阴云已经浮上我的心头。在越狱的开始界面上,我明显去掉了“支持盘古,安装PP助手”的选项,然而越狱结果页面,赫然安装了PP助手。接着,我开始在Cydia中安装软件,莫名奇妙,突然打开了App Store,是游戏刀塔传奇的页面。

10分钟后,当App Store再次无故启动,定位到携程的页面的时候,我知道,我在自己的手机里,安装了一个巨大的流氓软件,而且还获得了root权限。我还傻傻的使用它的重置OpenSSH密码功能,我重置的任何密码,都会被它知道,不是么?

技术的运用,真的是存乎一心之间。盘古这种丧心病狂的行为,我已经不能多说什么了,你们势必在自取灭亡的道路上越走越远。以这种方式去运用技术来谋取商业利益,我也只能说,我羞于与这样的人为伍。

祝盘古早日倒闭。

一个14岁的人怎样学习机器学习最好?

如果你正在斯坦福、Coursera或者可汗学院学习在线课程,那么这种开始方式,已经很好了。

你可能还需要尽可能多地去学习数学(包括统计),因为数学是机器学习的基础。

我非常推荐的一本书是Programming Collective Intelligence。这本书的数学很浅,只需要基本理解Python就可以通读此书而没有什么障碍。如果你已经在学习大学级别的机器学习课程,你可能会觉得这本书对你来说太过基础了一点。

Programming Collective Intelligence: Building Smart Web 2.0 Applications: Toby Segaran

对于一些更高级的话题,你可以试试如下的书,基本按照需要数学知识的多少来排序:

Amazon.com: Risk Assessment and Decision Analysis with Bayesian Networks (9781439809105): Norman Fenton, Martin Neil: Books

Artificial Intelligence: A Modern Approach (3rd Edition): Stuart Russell, Peter Norvig: 9780136042594: Amazon.com: Books

Learning Bayesian Networks: Richard E. Neapolitan: 9780130125347: Amazon.com: BooksEdit

Quoar原帖

Updated:

另一个回帖的人,认为学习Machine Learning没那么简单,并提出该学科是一个高度交叉学科,想要深入,需要准备好很多先修课程的知识,包括但是不限于:

1. 微积分。最好所有的知识都具备,极限(Limits),differentiation,integration。
2. 线性代数。甚至要理解最简单的回归模型,都需要它的知识。通常是机器学习课程最先教的东西。
3. 统计学。超级重要。机器学习其实是一族统计分析的方法,所以它是在统计学的根基上发展起来的。对所有的统计分析方法,有一个很好的掌握,是绝对必须的。
4. 计算机科学基本知识。具体说,算法,包括数值算法(从牛顿法,到蒙特卡洛模拟技术)。这与机器学习在很多地方是重合的,而且经常被用于机器学习的一些基础算法。
5. 编程。机器学习是一个应用学科,你需要掌握一门编程语言来运行算法。Python学习简单,在机器学习专家中,应用广泛。

从头开始学C语言:char* 和 char []

想要把丢掉的东西捡起来,还是很辛苦啊,今天我就发现,我连char* 和 char []的区别都不知道。

  1. #include <stdio.h>
  2.  
  3. int main(int argc, char* argv[]) {
  4.     char* buf1   = "this is a test";
  5.     char  buf2[] = "this is a test";
  6.     printf("size of buf1: %d\n", sizeof(buf1));
  7.     printf("size of buf2: %d\n", sizeof(buf2));
  8.     return 0;
  9. }

结果是:

  1. $ > ./main
  2. size of buf1: 4
  3. size of buf2: 15

在Linux系统中/bin/false和/sbin/nologin的区别

http://serverfault.com/questions/519215/what-is-the-difference-between-sbin-nologin-and-bin-false

http://unix.stackexchange.com/questions/10852/whats-the-difference-between-sbin-nologin-and-bin-false

在Mac上使用Homebrew的时候调整PATH顺序

在Mac上,管理命令行软件包,使用Homebrew,它的原理主要就是将软件安装在一个固定的目录,然后将二进制文件的路径,加入到系统的PATH中,
这样,系统就可以正确识别到命令。PATH的顺序会影响到系统搜索命令的顺序。

brew使用的/usr/local/bin默认已经在Mac系统的PATH里了,但是在最后面。通过 echo $PATH命令可以查看。

但是对于想要使用新版本的人来说,这就不方便了。所以,就要想办法调整PATH的顺序。

sudo vi /etc/paths

就可以在里面调整PATH的搜索顺序了,这个我特意去Linux系统里看了一下,不是这样的,看来是Mac系统特有的。
一般在Linux系统里调整PATH顺序都是在 .bash_profile或者 .bashrc里面,执行

export PATH=/usr/local/bin:$PATH