代码改变世界

随笔档案-2012年02月

Linux 操作系统安装盘的定制

2012-02-27 11:23 by htc开发, 490 阅读, 收藏,
摘要: 本文阐述如何以一个现有的 RedHat Linux系统安装盘为蓝本,定制符合需要的 Linux 系统安装盘。1 引言通常由于某种实际应用,需要一个包含所有最近更新的RPM包的操作系统发布盘,以备在安装时一次完成所有的更新操作,或者是想定制一个有自己特色的操作系统发布盘,如将自己开发的应用程序通过创建RPM包,加入到操作系统中,在系统安装时一次完成,形成包含自己产品的操作系统发布盘。这些都需要重新生成安装盘,而且生成安装盘也是十分必要的,因为操作系统发布商在每一次正式发布后,总会对一些漏洞进行更新处理,有些还是与安全相关的,在重新生成安装盘时就可以将这些bug修复添加进你自己定制的安装盘中,对一 阅读全文

Linux安装程序Anaconda分析(续)

2012-02-27 10:07 by htc开发, 1656 阅读, 收藏,
摘要: (1) disptach.py: 下面我们看一下Dispatcher类的主要接口。 1)gotoNext & gotoPrev:这两个接口分别从当前安装步骤前进(后退)到下一个(上一个)具有用户界面的安装步骤,在图形界面安装模式下,由InstallControlWindow类调用,在字符模式下,由InstallInterface类(在text.py和cmdline.py中)调用。这两个函数只是简单的设置安装方向,然后调用moveStep函数,其核心操作是moveStep。 2)moveStep:我们来重点分析movestep函数,代码如下:[python] view plaincopy 阅读全文

Linux安装程序Anaconda分析

2012-02-27 10:06 by htc开发, 4512 阅读, 收藏,
摘要: 1、概述 Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序的功能是把位于光盘或其他源上的数据包,根据设置安装到主机上。为实现该定制安装,它提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)。Anaconda的大部分模块用Python编写,有少许的载入模块用C编写。 Anaconda支持的管理模式: (1)Kickstart提供的自动化安装; (2)对一个RedHat实... 阅读全文

X Window System介绍

2012-02-27 10:06 by htc开发, 326 阅读, 收藏,
摘要: 1、概述 X Window System是1984年由麻省理工学院(MIT)和DEC公司共同开发研究的,是运行在UNIX系统上的视窗系统。严格地说,X Window System并不是一个软件,而是一个协议,这个协议定义一个系统成品所必需具备的功能(就如同TCP/IP、DECnet或IBM的SNA,这些也都是协议,定义软件所应具备的功能)。能满足此协议及符合X协会其他规范的系统便可称为X。X Window System独有的网络通透性(Network Transparency),使其成为UNIX平台上的工业标准,现在UNIX的工作站或大型主机几乎都执行着X Window。X Window是非常 阅读全文

《算法导论》第9章 顺序统计学 (2)随机选择

2012-02-25 23:00 by htc开发, 202 阅读, 收藏,
摘要: randomized_select使用划分方法randomized_partition(),返回主元位置q(第k小元素)。要查找的是第 i 小元素,若恰好等于k,那么直接返回。如果 i < k,则继续在[p, q - 1]中搜索第 i 小元素。如果 i > k,则继续在[q + 1, r]中搜索第 i - k 小元素。int randomized_select(int A[], int p, int r, int i) { if (p == r) return A[p]; int q = randomized_partition(A, p, r); ... 阅读全文

《算法导论》第9章 顺序统计学 (1)最小值和最大值

2012-02-25 22:58 by htc开发, 340 阅读, 收藏,
摘要: 1. 查找最小值逻辑比较简单,用第一个元素来初始化最小值min,然后与数组中其余元素比较,找出最小值。时间复杂度是O(n),已经最优化了。int minimum(int A[], int len) { int min = A[0]; int i; for (i = 2; i < len; i++) if (A[i] < min) min = A[i]; return min; }2. 同时找最大和最小值如果依然采用前面的方法,用第一个元素初始化min和max。然后将min和ma... 阅读全文

《算法导论》第7章 快速排序 (四种变形)

2012-02-24 23:19 by htc开发, 259 阅读, 收藏,
摘要: 这一章的正文及思考题部分讲到了快速排序及其几种变形,包括:Hoare快排,普通快排,随机快排,三数取中快排。这些快排的区别主要是划分方法PARTITION算法的不同:如何选取主元,划分出的两部分范围是什么。根据划分出的范围不同,各变形的QUICKSORT有微小的差别。1. Hoare快排Hoare划分是最初的版本,与《算法导论》中的划分版本相比,它选取第一个元素A[p]为主元。划分后的两部分是:A[p..j]和A[j+1..r],主元可能放入某一个之中。int hoare_partition(int A[], int p, int r) { int x = A[p]; in... 阅读全文

关于linux图形界面的基本知识[新手必读]

2012-02-24 17:54 by htc开发, 370 阅读, 收藏,
摘要: 关于Linux图形界面的基本知识很多LINUX的初学者分不清除linux和X之间,X和Xfree86之间,X和KDE,gnome等之间是什么关系.常常混淆概念,我想以比较易于理解的方式说明一下X,X11,XFREE,WM,KDE,GNOME等之间的关系.由于本人水平有限肯可能存在错误,请高手指正. 一 linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的. 图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,linux和Xfree的关系就相当于当年的DOS和WINDOWS3.0一样,windows3.0不是独立的操作系统,它只... 阅读全文

iphone开发如何隐藏各种bar

2012-02-24 16:02 by htc开发, 177 阅读, 收藏,
摘要: 状态条StatusBar[UIApplication sharedApplication].statusBarHidden = YES;导航条NavigationBar[self.navigationController setNavigationBarHidden:YES];TabBar方法1[self.tabBarController.tabBar setHidden:YES];这个方法有问题,虽然tabBar被隐藏了,但是那片区域变成了一片空白,无法被其他视图使用。方法2对于navigationController+tabBarController的结构,可以在push下一级的child 阅读全文

linux 磁盘分区,格式化操练手记

2012-02-24 10:45 by htc开发, 335 阅读, 收藏,
摘要: 操练开始......[root@Fedora root]# fdisk -l//先查看哈已知的分区信息Disk /dev/sda: 8589 MB, 8589934592 bytes255 heads, 63 sectors/track, 1044 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System/dev/sda1 * 1 13 104391 83 Linux/dev/sda2 14 979 7759395 83 Linux/dev/sda3 980 阅读全文

《算法导论》第6章 堆排序 (4)Young氏矩阵

2012-02-22 22:08 by htc开发, 190 阅读, 收藏,
摘要: 1. 什么是Young氏矩阵?一个 m * n 的矩阵,其中每一行的数据都从左到右排序,每一列的数据都从上到下排序。其中用 ∞ 代表不存在的元素,一共可以存放 r ≤ mn 个有限的数。如下面程序实现中用来测试的Young氏矩阵:{ 1, 3, 5, 7, 8, 11 }{ 4, 6, 9, 14, 15, 19 }{ 10, 21, 23, 33, 56, 57 }{ 34, 37, 45, 55,∞, ∞}2. 相关问题及思路2.1实现EXTRACT-MIN的算法,使其运行时间为O(m + n)。参考最大堆的方法MAX-HEAPIFY,两者的相似性是:一个元素 i 的改变,破坏了堆... 阅读全文

Iphone NSMutableArray,NSMutableDictionary AND 动态添加按钮

2012-02-21 17:53 by htc开发, 318 阅读, 收藏,
摘要: 一.NSMutableDictionaryNSMutableDictionary * tags;1.NSMutableDictionary 添加内容:[tags setValue:xxx forKey :xxx];2.NSMutableDictionary 遍历:for(NSString * title in tags){ //其中得到的title是key}3.NSMutableDictionary 根据key取得value:[tags valueForKey :xxx];二.NSMutableArrayNSMutableArray *buttons;1.NSMutableArray添加内容: 阅读全文

Apache+MySQL+Python+Django在Windows下环境搭建指南

2012-02-20 22:45 by htc开发, 469 阅读, 收藏,
摘要: 本文所使用的软件版本如下:python-2.5.2.msiapache_2.2.10-win32-x86-no_ssl.msiDjango-1.0.2-final.tar.gzmod_python-3.3.1.win32-py2.5-Apache2.2.exemysql-5.1.37-win32.msistep 1,安装python到python官方网站下载,如2.5.2。http://www.python.org/download/releases/2.5.2/下载python-2.5.2.msi目前最新版本是2.5,x86系列cpu装python-2.5.2.msi,AMD系列CPU装:p 阅读全文

搭建python的web开发环境 windows下

2012-02-20 22:14 by htc开发, 295 阅读, 收藏,
摘要: 本文以Windows XP/Windows 2003为例,介绍windows环境下Python web开发环境的安装配置: 1. 安装Apache 下载win32版的Apache msi程序直接安装即可,我用的版本是: apache_2.2.9-win32-x86-no_ssl-r2.msi,下载地址:http://apache.freelamp.com/httpd/binaries/win32/apache_2.2.9-win32-x86-no_ssl-r2.msi。下载后直接安装,一路Next安装完成。2. 安装Python 下载win32版的ActivePython msi程序直接安装即 阅读全文

《算法导论》第8章 线性时间排序 (1)计数排序

2012-02-19 15:32 by htc开发, 134 阅读, 收藏,
摘要: 一种简单的实现是得到数组C,C[i]表示数组A中值为i的元素个数。C = { 2, 0, 2, 3, 0, 1 }就表示两个0,两个2,三个3,一个5。然后将这些数字依次存到数组B中。#include <stdio.h>#include <stdlib.h>void printArray(int[], int);void counting_sort(int A[], int B[], int len, int k){ int* C = calloc(k + 1, sizeof(int)); int j; for (j = 0; j < len; j++) C[A[ 阅读全文

《算法导论》第6章 堆排序 (2)优先级队列

2012-02-17 22:25 by htc开发, 124 阅读, 收藏,
摘要: 6.5 优先级队列在实际中堆的一个很常见的应用:用来实现高效的优先级队列。优先级队列分为最大优先级队列和最小优先级队列。最大优先级队列的一个应用是在一台分时计算机上进行作业调度。需要在堆中的每个元素里存储对应对象的柄(handle)。#include <stdio.h>#define PARENT(i) ((i) / 2)int heap_maximum(int A[]){ return A[1];}//HEAP-MAXIMUM与HEAPSORT中的for循环体一样。// 将最后一个元素挪到根位置,堆大小减一,保持堆性质。int heap_extract_max(int A[], 阅读全文

关于程序员成长的一点思考

2012-02-16 21:32 by htc开发, 125 阅读, 收藏,
摘要: 如果止步不前,多少年后,我们与新进入这个行业的新人们没多少区别。工作经验是廉价的,熬年头就能换来,我们没有多少竞争力。只有努力提高自己,让时间换来的不仅仅是工作经验的增加,而是内力的增强,才会让自己更有价值,不会轻易被淘汰。转载自:http://hp.dewen.org/?p=56程序员的我们,是否想过今后的路该怎么走、如何发展、技术怎样提高?其实这也是我一直在思考的问题。下面就此问题,分享下我的看法。因为我阅历有限,有什么说的不对的,大家一起喷!一、程序员应该打好基础1. 现在开发工具众多、语言泛滥,经常听人说”不学C\C++神马都是浮云”、”C\C++才是万王之王”,C\C++就真比PHP 阅读全文

iphone UITableView及UIWebView的使用

2012-02-16 20:06 by htc开发, 203 阅读, 收藏,
摘要: 1。新建一个基于Navigation-based Application的工程。2。修改原来的RootViewController.h,RootViewController.m,RootViewController.xib为MyTableViewController.h,MyTableViewController.m,MyTableViewController.xib。3。点击MainVindow.xib,将Rot View Controller的class设置为:MyTableViewController。4。新建文件:DetailViewController.m文件并选择自动生成.h与.x 阅读全文

简单实现iphone页面跳转和页面间数据传递

2012-02-16 10:26 by htc开发, 210 阅读, 收藏,
摘要: 废话就不说了,直接上步骤和代码:1 创建一个基于Navigation-based Application的iphone工程,为什么要创建基于Navigation-based Application的工程呢,因为这样系统就会自动将Navigation视图加到我们的窗口视图中,这样我们就不用自己手动去加,并且可以用[self.navigationControllerpushViewController:otherviewanimated:YES]去跳转页面。当设置每个页面的标题后会在页面左上角自动生成后退导航按钮,多方便呀,当然需要在建立后将xib文件里面的tableview去掉加入view。2 阅读全文

《算法导论》第6章 堆排序 (3)K路归并

2012-02-15 21:58 by htc开发, 228 阅读, 收藏,
摘要: 问题描述:问题来自习题6.5-8 给出一个时间为O(nlgk),用来将k个已排序链表合并为一个排序链表的算法。此处n为所有输入链表中元素的总数。(提示:用一个最小堆来做k路合并)。在K路归并问题中,取出最小堆的根元素(最小元素)后,如果此元素没有后继元素(next为空),则有两种方案:一、从K路中的另一个链表取出一个元素放到根位置。二、将堆底部最后一个元素挪到根位置,并将堆大小减一。此处采用方案二。堆大小每减一,说明K路中某一个链表已处理完。当堆大小为零时,处理结束。源码与注释:// 链表结点类classNode {intvalue;Nodenext;}publicclassKMerge {p 阅读全文

《算法导论》第6章 堆排序 (1)最大堆与堆排序

2012-02-14 22:40 by htc开发, 184 阅读, 收藏,
摘要: 6.1 堆“堆”这个词最初是在堆排序中提出的,但后来就逐渐指“废料收集存储区”,像Lisp和Java中提供的那样。(二叉)堆是一种数组对象,可以被视为一棵完全二叉树。length[A]是数组中的元素个数,heap-size[A]是存放在A中堆的元素个数。树的根是A[1]。堆的重要函数:max_heapifybuild_max_heapheapsort6.2 - 6.4 最大堆// 将LEFT和RIGHT定义为宏(避免小函数调用的开销)// 注意宏的定义要加上括号避免文本替换时运算符问题#include <stdio.h>#define LEFT(i) (2 * (i))#defin 阅读全文

iPhone程序运行流程浅谈

2012-02-13 09:45 by htc开发, 175 阅读, 收藏,
摘要: 我在刚接触iOS开发的时候,也对这个运行流程模糊不清。希望这边文章能对初学的朋友给予帮助。1. 和大多数语言一样,每一个iPhone应用也都是从主函数开始运行,它的main函数都在XCode的Other Reasource逻辑目录下。 [cpp] view plaincopyprint?UIApplicationMain(argc, argv, nil, nil); UIApplicationMain(argc, argv, nil, nil); 系统会自动给你生成上面的代码,第三个参数和第四个参数指明了应用程序的生命周期管理类和对生命周期管理类产生事件进行响应的委托类,第三个参数被指定为ni 阅读全文

《C和指针》第14章 预处理器

2012-02-12 17:57 by htc开发, 161 阅读, 收藏,
摘要: 14.2.1 宏#define包括一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)。#define SQUARE(x) x * x则程序中的SQUARE(5)会被替换成:5 * 5警告:例1:a = 5;printf("%d\n", SQUARE(a + 1));会被替换成5 + 1 * 5 + 1,打印结果是11,不是36。例2: #define SQUARE(x) (x) + (x) a = 5; printf("%d\n", 10 * SQUARE(a));会变成10 * 5 + 5,打印结果是55,不是100。正确定义为:#de 阅读全文

《Shell脚本学习指南》第四章 文本处理工具

2012-02-11 22:47 by htc开发, 206 阅读, 收藏,
摘要: 4.1 排序文本4.1.1 行的排序未提供命令行选项时,整个记录会根据当前locale所定义的次序排序。在传统的C locale中,也就是ASCII顺序。4.1.2 以字段排序-k选项的后面接着的是一个字段编号,或者是一对数字。每个编号后面都可以接一个点号的字符位置,或修饰符字母。如果仅指定一个字段编号,则排序键值会自该字段的起始处开始,一直继续到记录的结尾(而非字段的结尾)。如果给的是一对用逗号隔开的字段数字,则排序键值将由第一个字段值的起始处开始,结束于第二个字段值的结尾。使用点号表示字符位置。-k2.4, 5.6指的是从第二个字段的第四个字符开始比较,一直比到第五个字段的第六个字符。$ 阅读全文

《Shell脚本学习指南》第三章 查找与替换

2012-02-11 17:10 by htc开发, 353 阅读, 收藏,
摘要: 3.1 查找文本grep:使用POSIX定义的基本正则表达式(BRE)。egrep:使用扩展正则表达式(ERE)。fgrep:快速grep。使用优化的算法,匹配固定字符串而非正则表达式。1992 POSIX标准将这三个改版整合成一个grep程序。$ who | grep -F austen使用-F选项查找固定字符串。事实上,只要匹配的模式里未含有正则表达式的meta字符,则grep默认行为模式就等同于使用了-F。3.2.6 在文本文件里进行替换一般来说,执行文本替换的正确程序应该是sed - 流编辑器。sed 's/:.*//' /etc/passwd | 删除第一个冒号之后的 阅读全文

SHELL 综合水平测试

2012-02-07 17:33 by htc开发, 160 阅读, 收藏,
摘要: 按:SHELL 水平测试系列并非覆盖 SHELL 的所有方面,而是挑选一些题目以引发思考,以管中窥豹的方式达到检验水平的目的.希望回答问题时不是简单地 Yes or No. 而是写出解决方案。很多问题在不同的 shell 或 工具之间表现不同, 请列出不同之处 [ SHELL 水平测试 ][ OVERVIEW 篇 ]1. 有很多种 shell, 你熟悉几种? 各个 shell 的 home page 在那里?2. 为什么说 zsh 是目前为止功能最为强大的 shell.3. 为什么说 pdksh 功能较弱?4. ksh88 与 ksh93 有何区别?5. 为什么 shell 编程最... 阅读全文

Linux内核管理之内参数介绍

2012-02-07 10:59 by htc开发, 219 阅读, 收藏,
摘要: RedHat向管理员提供了非常好的方法,使我们可以在系统运行时更改内核参数,而不需要重新引导系统。这是通过/proc虚拟文件系统实现的。/proc/sys目录下存放着大多数的内核参数,并且设计成可以在系统运行的同时进行更改。下面我们以打开内核的 ip转发功能为例说明在系统运行时修改内核参数的两种方法。IP转发是指允许系统对来源和目的地都不是本机的数据包通过网络,RedHat默认屏蔽此功能,在 需要用本机作为路由器、NAT等情况下需要开启此功能。 方法一:修改/proc下内核参数文件内容 直接修改内核参数ip_forward对应在/proc下的文件/proc/sys/net/ipv4/ip... 阅读全文

Linux网络管理之网络抓包

2012-02-07 10:59 by htc开发, 281 阅读, 收藏,
摘要: linux tcpdump命令需要以root身份使用。举例:抓本机8804端口上的数据,并将抓包结果保存在test.cap文件中tcpdump -X -s 0 -w test.cap port 8804tcpdump -X -s 0 -w test.cap host 220.194.51.1tcpdump -X -s 0 -w test.cap port 8804-X Print each packet (minus its link level header) in hex and ASCII.-s snaplen Setting snaplen to 0 means use the req 阅读全文

Linux系统管理之查看系统是32位还是64位

2012-02-07 10:58 by htc开发, 217 阅读, 收藏,
摘要: 1用uname -a命令64位系统输出如下信息:Linux server141.guodu.net 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux32位系统输出如下信息:Linux bank.guodu.net 2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39 EST 2005 i686 i686 i386 GNU/Linux2 file /sbin/init64位系统输出信息如下:sbin/init: ELF 64-bit LSB executab 阅读全文

Linux系统管理之设置系统时间

2012-02-07 10:57 by htc开发, 277 阅读, 收藏,
摘要: Linux下的时间分为两种,系统时间与硬件时间。我们一般看到的时间就是系统时间,比如现在是11:45 AM。硬件时间指的是主板上CMOS中的时间,这两个时间并不是总是同步的,一般情况下大约11分钟同步一次。 Linux系统启动时,从CMOS中读取当前时间,作为系统时间,从此以后系统时间独立tick,此时如果你用date命令修改了系统时间,硬件时间是不受影响的,就是说如果此时关机,下次的系统时间还是不对。要想将系统时间保存到硬件时间,可以是用hwclock 或者clock命令,hwclock就是hardware clock的意思。 一个完整的修改linux系统时间的过程如下所示: 注意先改... 阅读全文

Linux服务器架设之FTP

2012-02-07 10:57 by htc开发, 206 阅读, 收藏,
摘要: 一、VsFTPd的简述VSFTP(Very Secure FTP Daemon,非常安全的FTP服务器)。顾名思义,VSFTPD设计的出发点就是安全性。同时随着版本的不断升级,VSFTPD在性能和稳定性上也取得了极大的进展。除了安全和性能方面很优秀的外,还有很好的易用性。二、企业Linux下VSFTPD实战方案(1)要求:1. 用户:netseek_com;FTP:ftp.netseek.com(192.168.0.21,我已经配置好了相关的DNS)2. 禁止匿名登陆,禁止用户离开用户目录3.命令通道端口使用5021,数据通道端口使用5020(你可以改成你想设置的端口如1021,1020)4. 阅读全文

Linux系统管理之安装RZ/SZ

2012-02-07 10:56 by htc开发, 286 阅读, 收藏,
摘要: 一,如果配置了yumyum install lrzsz二,手动安装定制安装的linux可能没有把rzsz包安装到系统,这对用securecrt这样的windows工具传输文件特别不方便。为了使用这个方便的法门,可以手动安装之。1、 下载软件 rzsz-3.48.tar.gz。登录linux,用命令wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz下载。2、解压 tar zxvf rzsz-3.48.tar.gz3、安装 cd rzsz-3.48 ; make posix 。注意:这个软件安装与常规的GNU软件不同—没有config 阅读全文

《C和指针》读书笔记

2012-02-04 16:21 by htc开发, 237 阅读, 收藏,
摘要: 看过了经典的K&R C,又看了这本Pointers on C,温习了C语言的基本语法。在重温过程中,感觉需要重点把握的知识是指针、结构和动态内存分配。这对今后的算法和操作系统方面的研究学习很有帮助。3.2.3 声明指针int* b, c, d;本以为这条语句把三个变量声明为整型的指针,但事实并非如此。星号*只对b有用,其余两个变量只是普通的整型。正确语句:int *b, *c, *d;3.3 typedef允许为各种数据类型定义新名字。#define无法正确地处理指针类型,如下:#define d_ptr_to_char char *d_ptr_to_char a, b;只正确地声明了 阅读全文