sohu
- 优先使用https登录方式,失败后再尝试http
- 密码加密方式: md5
腾讯
- 根本不使用https
- 密码加密方式和sina基本完全一样
DevOps
patch是个什么东西?有什么用呢?
从一个实际的例子说起吧,看一些linux上crond 的源码: http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/vixie-cron-4.1-72.el5.src.rpm
打开该文件后,会发现里面有很多的patch文件,要想看到完整的cron的源文件,需要自己打这些patch,如果不了解patch命令还不太好办。
首先解压该文件,目录结构大概为:
/
1.patch
2.patch
…
vixie-cron-4.1.tar.gz // 打patch之前的源文件
vixie-cron.spec
首先从vixie-cron.spec中grep出来要打的patch:
grep -i “^patch” vixie-cron.spec |awk ‘{print $2}’ >~/phpor
然后解压vixie-cron-4.1.tar.gz
tar -zxf vixie-cron-4.1.tar.gz
cd vixie-cron-4.1
while read p; do patch -p1 <../$p; done <~/phpor
这样就ok了。
关于patch命令的参考资料:
http://blog.chinaunix.net/uid-9525959-id-2001542.html
patch练习:
1. 创建一个patch文件
diff -uN oldfile newfile>1.patch
2. 打patch
patch <1.patch
给目录打patch
1. diff -uNr olddir newdir>2.patch
2. 打patch
patch <2.patch
diff 参数说明:
-u : 使用统一的输出格式 (默认的格式打patch不太好使)
-N: 对于目录比较来讲,新文件也打进去
-r: 对于目录来讲,递归处理子目录
http://baike.baidu.com/view/1139590.htm
http://baike.baidu.com/view/4369217.htm
作为一个和linux打交道的技术人员,需要了解linux、kernel、gnu、centos、redhat、RHEL等名词。
想看一下centos上的cron的源代码,不知道哪里找去;cron是centos发行版中自带的软件,你们http://centos.org 上应该有的吧,去了才发现里面都是二进制的代码包,根本没有源代码;最后是在http://redhat.com上找见的,为什么呢?这就是上面提到的需要了解的东西。
linux通常指:kernel+gnu; kernel指的是内核,而gnu是一系列的开源的工具集;kernel+gnu依然是一个概念,不是一个可以使用的操作系统,而centos、redhat等等就是一个打包好的操作系统,就是我们通常所说的“发行版”;“发行版”是已编译好的操作系统,提供二进制的发布,不提供源代码,所以在centos.org上是找不到源代码的
centos5的源代码地址: http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/
搜索方式: 在google中搜索:
vixie-cron-4.1-72.el5.src.rpm site:ftp.redhat.com
了解了这些之后,查看操作系统的源代码就方便多了,就不用到处去搜了
centos 安装文件: http://mirrors.sohu.com/centos/5/isos/i386/
主要js文件:
http://imgcache.qq.com/ptlogin/ver/10013/js/xui.js?v=10007
建议将该文件格式化后分析,可以通过fiddler 自动响应的功能使用格式化的文件,然后在函数: onQloginSelect 上设置断点,然后跟踪下去就行了。
关键技术:
1. 浏览器插件,IE下使用 ActiveObjectX ,其它浏览器使用embed
2. 登录请求通过对域名的限制来实现
QQ登录插件文件:
C:\Program Files\Tencent\QQ\Bin\TXSSO\bin\npSSOAxCtrlForPTLogin.dll
分析的结果和下面文件中描述的一致,所以不再细说。曾经分析过,只是没有记录,都给忘了,这里记录一下。
相关参考资料: 搜索关键字:“embed application nptxsso”
http://1.lanz.sinaapp.com/?p=152
http://www.dewen.org/q/1027
http://www.udpwork.com/item/7598.html
学到的一些知识:
——————————————– 摘自上面参考资料
原来,QQ 使用了历史很悠久的 NPAPI(Netscape Plugin Application Programming Interface)接口。NPAPI 几乎支持所有主流浏览器,包括 FireFox、Chrome、Opera(IE 从 5.5 后停止支持 NPAPI,转而使用 ActiveX)。
打开 chrome://plugins/ 我们可以发现自动登录的有关插件,而在路径 C:\Program Files (x86)\Common Files\Tencent\TXSSO 下就可以找到关于 SSO 的相关动态链接库。
np 插件一般命名都会加np前缀 如 QQ 的这个 npSSOAxCtrlForPTLogin.dll,只要按照标准的写法,放在浏览器会加载的地方,用的时候写个标签就可以在 js 里面调用了。于是跨浏览器(无视 IE)的插件开发变得相当可行。运行在 NPAPI 插件中的代码拥有当前用户的所有权限,不在沙箱中运行,所以它的扩展程序在被 Chrome 网上应用店接受前要求人工审核。
————————————————–
注意“插件”与“扩展”的区别,这里说的是“插件”; 上面提到的“人工审核”机制是怎么做到不审核就无法使用的呢? 在浏览器上通过都需要该浏览器的厂商审核通过?
Linux 中的flock等待锁的时候在做什么呢?是在循环检查锁是否已释放吗?
1. 将等待锁的进程置为阻塞状态
2. 当锁被释放时,再把等待锁的进程唤醒,等待锁的进程都在文件的结构中已链表的形式排队呢
3. 当进程意外死亡时,内核会自动释放其获得的锁资源
参考资料:
Linux 2.6 中的文件锁:http://www.ibm.com/developerworks/cn/linux/l-cn-filelock/index.html
摘录:
类型 | 字段 | 字段描述 |
struct file_lock* | fl_next | 与索引节点相关的锁列表中下一个元素 |
struct list_head | fl_link | 指向活跃列表或者被阻塞列表 |
struct list_head | fl_block | 指向锁等待列表 |
struct files_struct * | fl_owner | 锁拥有者的 files_struct |
unsigned int | fl_pid | 进程拥有者的 pid |
wait_queue_head_t | fl_wait | 被阻塞进程的等待队列 |
struct file * | fl_file | 指向文件对象 |
unsigned char | fl_flags | 锁标识 |
unsigned char | fl_type | 锁类型 |
loff_t | fl_start | 被锁区域的开始位移 |
loff_t | fl_end | 被锁区域的结束位移 |
struct fasync_struct * | fl_fasync | 用于租借暂停通知 |
unsigned long | fl_break_time | 租借的剩余时间 |
struct file_lock_operations * | fl_ops | 指向文件锁操作 |
struct lock_manager_operations * | fl_mops | 指向锁管理操作 |
union | fl_u | 文件系统特定信息 |
一个 file_lock 结构就是一把“锁”,结构中的 fl_file 就指向目标文件的 file 结构,而 fl_start 和 fl_end 则确定了该文件要加锁的一个区域。当进程发出系统调用来请求对某个文件加排他锁时,如果这个文件上已经加上了共享锁,那么排他锁请求不能被立即满足,这个进程必须先要被阻塞。这样,这个进程就被放进了等待队列,file_lock 结构中的 fl_wait 字段就指向这个等待队列。指向磁盘上相同文件的所有 file_lock 结构会被链接成一个单链表 file_lock_list,索引节点结构中的 i_flock 字段会指向该单链表结构的首元素,fl_next 用于指向该链表中的下一个元素;当前系统中所有被请求,但是未被允许的锁被串成一个链表:blocked_list。fl_link 字段指向这两个列表其中一个。对于被阻塞列表(blocked_list)上的每一个锁结构来说,fl_next 字段指向与该锁产生冲突的当前正在使用的锁。所有在等待同一个锁的那些锁会被链接起来,这就需要用到字段 fl_block,新来的等待者会被加入到等待列表的尾部。
http://blog.csdn.net/dog250/article/details/6596046
http://blog.c114.net/html/02/157502-59605.html
http://blog.csdn.net/dog250/article/details/5302773
http://basiccoder.com/intro-linux-kernel-hash-rt-1.html
问题:
1. 出现swap换入就意味着缺页吗?
2. 如何查看一个进程的换入换出?
3. 如何演示swap的换入换出?
解答:
1. 需要查一下
参考资料:
http://hi.baidu.com/shichaojiang/item/6fd7aa7950dd8235714423c2
这个写的还不错,一定要看一下
2. 查看进程的换入换出
查看100次,间隔为1s
sar -x pid 1 100
查看子进程的换入换出
sar -X pid 1 100
3. 需要思考一下