风吹走了我

Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法

导致这种原因发生的问题在于硬盘分区所给的Label name/etc/fstab这个文件中对应的“LABEL”项不匹配所导致的。


在此先献上解决办法供大家参考,后面还会提到一个地方自己无法理解,希望拿出来和大家探讨!


好了,废话不多说,解决办法有两个:(前提是开机都必须选择进入到单用户模式)

方法一:

1、  在此处输入root用户密码;

Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法 - po-jung - 〒.简简单单.

2、  通过blkid找出LABEL=”/date”的设备/dev/sdb1

(由此两幅图我们已经看到fsck.ext3:Unable to resolve ‘LABLE=/data/dev/sdb1LABEL=”/date因为写错一个字母所导致系统开机在通过/etc/fstab文件进行自动挂载时,因为找不到Label name=/data的磁盘导致的无法正常开机,因为我们磁盘sdb1是叫/date嘛!)

         #blkid        ——出入如下图所示

Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法 - po-jung - 〒.简简单单.

3、通过e2label/dev/sdb1Label name改成/data即可解决;

         #e2label /dev/sdb1 /data

4、最后就是重启了;

         #init 6


方法二:

1、  与方法一的第一步一样,输入root密码;

2、  重新挂载/目录,因为现在我们只有r读的权限,而没有w写的权限

#mount –o remount,rw /         ——此处是重新挂载/,并给予rw读写的权限

3、  与方法一的第二步一样,通过blkid查看发现/dev/sdb1Label name=/date

#blkid        ——出入如下图所示

Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法 - po-jung - 〒.简简单单.

 4、对/etc/fstab进行修改,将对应的LABEL=”/data”改成LABEL=”/date”

         #vim /etc/fstab

Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法 - po-jung - 〒.简简单单.

Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法 - po-jung - 〒.简简单单.

然后就是保存退出了;

5、最后就是重启啦

         #init 6

有兴趣听我继续扯下去的可以接着往下看啦! 

如果我有什么说的不对的地方大家可以留言提出进行改进,大家相互交流学习啦!

我们知道,在linux下面挂载硬盘分区到某个目录下有两种办法:

我拿硬盘的sdb1来做说明(此处指的是SATA接口的硬盘,IDE接口的硬盘应该是hdb1啦),我要将其挂载到/date下。

方法一:#mount /dev/sdb1 /date  ——直接指明设备挂载到/date目录下

方法二:#e2label /dev/sdb1 /date          ——对sdb1给予/date的标签命名

              #mount /date  /date                   ——再通过标签名对硬盘挂载

由此我们知道,linux挂载硬盘可以使用设备来挂载,也可以通过label name来对磁盘进行挂载。而/etc/fstab下的这个文件是在告诉系统每次开机对硬盘自动挂载到相应的目录下。

(#mount -a ——挂载所以未挂载的磁盘到相应的目录这条指令也是通过读取/etc/fstab文件进行挂载的。

Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法 - po-jung - 〒.简简单单.

当我们在/etc/fstab下面将LABEL这一项写错时,就会导致Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机,至于解决办法前面已经提到了。

但是这有个很奇怪的地方,就是当/etc/fstab下面的挂载点写错时,确不存在无法正常开机的现象。

正如上面所提到的当/etc/fstabLABEL=/data,而/dev/sdb1Label name=/date时无法正常开机;

而当/etc/fstabLABEL=/date,与/dev/sdb1Label name=/date相符合,而在/etc/fstab文件中LABEL=/date相应的挂载点写的是/data,但/目录并不存在一个挂载点为/data的情况下,却能正常的开机启动,不同的是/dev/sdb1(也就是/date)在开机后没被挂载上来而已。

正如,当我们要将一个U盘挂载到/mnt/u目录下面,我们需要做如下步骤:

#mkdir /mnt/u                    ——需要先为u盘创建一个目录做挂载点

#mount /dev/sdc /mnt/u           ——此处假设u盘为sdc设备

/mnt下面不存在u这个目录的时候是会报错而无法挂载。


    系统在开机读取/etc/fstab这个文件进行自动挂载时,因为找不到LABEL=/data(因为/dev/sdb1Label name=/date)而无法正常开机,那为什么系统开机在读取/etc/fstab这个文件进行自动挂载时,不会因为找不到LABEL=/date所对应的挂载点/data(如果/目录下存在的一个是/date目录而不能正常开机呢

 

Thinkphp 定制错误页面

默认情况下,ThinkPHP在发生错误的时候,显示的是系统默认的错误页面,正式上线的时候,为了统一用户体验,我们可以定制自己的错误页面,通常有两种方法:

一、定制系统错误页面模板

系统默认的错误模板位于:ThinkPHP/Tpl/think_exception.tpl

我们只需要在项目中修改TMPL_EXCEPTION_FILE配置参数重新指定错误模板即可。

'TMPL_EXCEPTION_FILE'=>'./App/Tpl/Public/error.html' // 定义公共错误模板

注意错误模板的路径是基于入口文件的相对地址或者使用服务器的绝对地址,错误模板中可以使用的变量有:

$e[‘file’] 异常文件名

$e[‘line’] 异常发生的文件行数

$e[‘message’] 异常信息

$e[‘trace’] 异常的详细Trace信息

因为异常模板使用的是原生PHP代码,所以还可以支持任何的PHP方法和系统变量使用。

二、设置错误重定向页面

如果想网站发生错误的时候重定向到一个指定的URL 而不是读取错误模板,我们还可以直接设置ERROR_PAGE参数。

'ERROR_PAGE'=>'/Public/error.html' // 定义错误跳转页面URL地址

注意ERROR_PAGE所指向的页面不能再使用异常的模板变量了。

PHP如何生成N个不重复的随机数?

有25幅作品拿去投票,一次投票需要选16幅,单个作品一次投票只能选择一次。前面有个程序员捅了漏子,忘了把投票入库,有200个用户产生的投票序列为空。那么你会如何填补这个漏子?

当然向上级反映情况。但是我们这里讨论的是技术,就是需要生成1-25之间的16个不重复的随机数,去填补。具体怎么设计函数呢?将随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数。

<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成一定数量的不重复随机数
* $min 和 $max: 指定随机数的范围
* $num: 指定生成数量
*/
function unique_rand($min, $max, $num) {
    $count = 0;
    $return = array();
    while ($count < $num) {
        $return[] = mt_rand($min, $max);
        $return = array_flip(array_flip($return));
        $count = count($return);
    }
    shuffle($return);
    return $return;
}

$arr = unique_rand(1, 25, 16);
sort($arr);

$result = '';
for($i=0; $i < count($arr);$i++)
{
	$result .= $arr[$i].',';
}
$result = substr($result, 0, -1);
echo $result;
?>

程序运行如下:

2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24

补充几点说明:

生成随机数时用了 mt_rand() 函数。这个函数生成随机数的平均速度要比 rand() 快四倍。

去除数组中的重复值时用了“翻翻法”,就是用 array_flip() 把数组的 key 和 value 交换两次。这种做法比用 array_unique() 快得多。

返回数组前,先使用 shuffle() 为数组赋予新的键名,保证键名是 0-n 连续的数字。如果不进行此步骤,可能在删除重复值时造成键名不连续,给遍历带来麻烦。

免费DNS解析服务器的又一个选择

话说国内用户最多的免费智能DNS解析服务,应该是DNSPod。但是随着用户的增多,DNSPod免费服务似乎越来越不让人满意了。万网的域名解析系统已经升级为阿里云解析,并且永久免费向非万网域名开放服务。

如果你之前使用过DNSPod这类DNS解析服务,应该很容易就可以将你的域名设置为阿里云解析。只需要按照下面几步操作即可:

其实,最主要的一步就是到域名注册商那里修改一下DNS即可,不需要你将域名转到万网。好了,感兴趣的朋友自己试试吧!

阿里云解析:http://dns.www.net.cn/

为什么 Facebook 发明新语言“Hack”(php的一种派生语言)

(注:Hack是一种PHP的派生语言)
为了替换掉那些有年头的老代码,Facebook创建了一个新的语言。这篇文章将会告诉背后的故事。
By Steven Melendez

这个故事来自Facebook工程师Julien Verlaguet和Ed Smith的一次访谈。2004年2月,扎克伯格(Mark Zuckerberg)的哈佛同学们第一次登陆Facebook,服务器里运行着PHP。那个时候PHP击败了Perl成为最炙手可热的Web开发语言。

使用类似Ruby的Rails或者Python的Django这些当下最流行的开发框架都不是那个时候的选择。Rails第一次发布是在几个月之后(注:2004年7月),而Django在一年后才被发布(注:2005年)。十年后,PHP因为笨拙的库,不一致的命名规则,内置定义的函数,在多语言程序中语法和语义与相关语言巨大差异使人混淆,过去的设计原则极容易导致安全性问题等而被指责。

“每一个PHP程序员日复一日地处理着难以捉摸或者棘手的任务”,Facebook的工程师Julien Verlaguet和Alok Menghrajani在最近的公司博客上写道。

但是,PHP并没离开Facebook,并且其他的大公司和工程的数百万行代码都是用这个语言写的。程序员们仍然得益于PHP的快速开发和部署,且努力去除那些不好的特性。

减轻PHP程序员的痛苦不是说抛弃这个语言和多年的开发成果。Facebook开发了Hack,这是一种新的,派生于PHP的语言。它将与已有的代码和谐相处,增强了安全特性源于函数式编程语言和学术研究。

“这是一种很特别的设计,能与PHP进行无缝的交互”,Verlaguet说。技术引领着Hack项目的发展,它的背后是一份混合编程语言和行业经验的正式学术研究。Facebook已经在内部使用和发展Hack大概有两年时间了。最近,已经将项目开源,并且在4月9日安排公开的“开发者日”。

“我们这样做的目的是希望能更好地倾听来自社区的反馈, 同时开源社区也会让Hack面对Facebook外的开发者有更好的体验”,Verlaguet说。

也许Hack的主要创新是引入了自动类型判断,概念类似于深奥难懂的Haskell和 ML语言但是比他们少得多的命令行,同时更接近主流的编程语言。

传统的PHP是动态类型,这意味着在代码中的基本的本质的变量类型是一个数还是一个字符串或者其他类型是不确切的,除非程序实际运行着。程序员们享受这种灵活,却为错误开辟了空间,它不像Java或者C那样的静态类型语言,代码被写出来的时候就明确告诉你变量的类型。

Hack走了一条中间路线:它可以基于变量怎样被使用的使用逻辑让开发者指定类型,如果代码的逻辑冲突,就会给出一个错误(error)。这个概念本身不是新的,但是它以前都是被用在编译型语言上的,开发者需要等待他们的源代码被转换成机器码,不能像PHP程序员希望的那样点完保存立即执行,Verlaguet说。

“解决方案在于建立了一个类型检查守护进程”,他说。关于这个后台程序运行在开发者的电脑里。它代替等待开发者去显示调用一个编译器,当源代码文件被改变的时候,类型检查进程要求操作系统去通知编译器。这类似于同步文件需要更新时,Dropbox就得到一个信号。

被改变检查的有效的方法是通过类型检查器被反复检测,直到其确认与其他的代码是一致的。只要类型检查器足够快,程序员基本就不需要等待,类似于在Git版本管理系统上转换到新分支那样,Verlaguet说。

Hack还有其他一些特性,增强的集合类型如vector和set来增强PHP的数组,匿名函数被使用在函数编程上。新的语言让Facebook逐步提升已有的PHP代码,使得长期投资在PHP上的价值继续发挥作用, Ed Smith说,Facebook的HHVM运行引擎将会同时提供给Hack和PHP。

“Hack 让我们能在同一时间和同一文件上动态转换我们的代码”,Smith说,“换做其他的一种语言将会有很大的困难”你认为是吗?

其他的公司和工程转换到时髦的Hack还为时尚早,项目刚刚开源,Verlaguet说。不过,从对他采访的记录来看,整个项目目前是处于积极的态势中。

英文原文:fastcolabs

中文摘自:http://www.oschina.net/news/50565/why-facebook-invented-a-new-php-derived-language-called-hack?from=20140414

安装SQL2005图文教程(windows 7系统)

由于工作需要,今天要在电脑上安装SQL Server 2005。以往的项目都是使用Oracle和MySQL,MS sql2005的数据库还真很少用到,安装Oracle已经轻车熟路,但装SQL Server好像还有点小麻烦,所以记录下来,以留备用。

————————————————————————————————-

操作系统:Microsoft Windows 7 旗舰版(32位)

数据库版本:SQL Server 2005 简体中文开发板

数据库下载链接:http://pan.baidu.com/share/link?shareid=322740&uk=268517599 (地址已更新2013-03-09)

————————————————————————————————-

安装过SQL Server的人可能知道,它的有些服务要依赖于IIS,所以为了保证数据库的顺利安装,先启用IIS服务吧!Win7比XP好的一点是:启用IIS功能无需借助系统安装盘了,只要在控制面板里启用即可,如图:

安装SQL2005图文教程(windows 7系统)

step1

安装SQL2005图文教程(windows 7系统)

step2

安装SQL2005图文教程(windows 7系统)

第三步需要注意的是,选中红框中的复选项,分别为“Internet Information Services 可承载的 Web 核心”、“Web 管理工具”和“万维网服务”,这里我不确定“Web 管理工具”是否需要,因为我选中它们的父节点“Internet 信息服务”后选中了它的一些子项,多选总比少选全面,需要将它们的子项全部选中才显示为“√”,否则显示为“■”,记住,一定要显示为“√”才行,效果就 和step3一样就可以了!点击确定后会出现线面的框框

安装SQL2005图文教程(windows 7系统)

如果我们不启用IIS功能,在后续安装SQL Server时会遇见如图画面

安装SQL2005图文教程(windows 7系统)

到此,IIS功能就算启用完成了,下面开始安装SQL Server

 

安装文件解压后是一个ISO的镜像,其实是一个DVD文件,将两张光盘合并到一起了,所以你的电脑需要安装虚拟光驱,虚拟光驱不会用请先百度一下,我就不在这里赘述了。

首先启动虚拟光驱软件,把SQL Server的镜像加载进来,如图

安装SQL2005图文教程(windows 7系统)

此时我们可以在我的电脑里看到这张虚拟的安装盘了,如图

安装SQL2005图文教程(windows 7系统)

如果没有自动运行,那么我们就点双击H盘图标,进入安装

安装SQL2005图文教程(windows 7系统)

紧接着进入如下画面

安装SQL2005图文教程(windows 7系统)

我的系统是32位的,我自然选择基于x86的,之后点击“服务器组件、工具、联机丛书和示例(C)”

安装SQL2005图文教程(windows 7系统)

紧接着弹出对话框,点击“运行程序(R)”

安装SQL2005图文教程(windows 7系统)

接着出现,勾选,下一步

安装SQL2005图文教程(windows 7系统)

安装程序会检查所需组件,点击“安装”

安装SQL2005图文教程(windows 7系统)

点击“安装”

安装SQL2005图文教程(windows 7系统)

安装SQL2005图文教程(windows 7系统)

点击“下一步”后,安装程序会监测计算机配置

安装SQL2005图文教程(windows 7系统)

紧接着跳转为安装向导

安装SQL2005图文教程(windows 7系统)

点击“下一步”

安装SQL2005图文教程(windows 7系统)

我们看到,所有的项目都成功,如果之前没有启用IIS功能的话,出现的画面就是之前的那个样子,点击“下一步”

安装SQL2005图文教程(windows 7系统)

输入公司名后,点击“下一步”

安装SQL2005图文教程(windows 7系统)

这里需要注意,如果你的界面只有最后一个复选框可选,其他都为灰色不可选,那说明你的版本有问题,不是开发版,请马上放弃安装,从上面我给的下载地址下载开发板进行安装。全部选中后点击“下一步”

安装SQL2005图文教程(windows 7系统)

默认安装到系统盘下,我们可以点击高级进行修改,点击“浏览(R)”

安装SQL2005图文教程(windows 7系统)

我将“C”修改成了“D”,点击“确定”

安装SQL2005图文教程(windows 7系统)

点击“下一步”

安装SQL2005图文教程(windows 7系统)

我选择的“默认实例”,也可以选择“命名实例”,点击“下一步”

安装SQL2005图文教程(windows 7系统)

一切默认,点击“下一步”

安装SQL2005图文教程(windows 7系统)

因为其他程序也可能连接数据库,所以选择“混合模式”,并键入sa密码,点击“下一步”

安装SQL2005图文教程(windows 7系统)

默认,点击“下一步”

安装SQL2005图文教程(windows 7系统)

默认,点击“下一步”

安装SQL2005图文教程(windows 7系统)

默认,点击“下一步”

安装SQL2005图文教程(windows 7系统)

漫长的安装才刚要开始,点击“安装”

安装SQL2005图文教程(windows 7系统)

该过程很耗时,慢慢等待吧

安装SQL2005图文教程(windows 7系统)

安装中途,遇到的第一个弹出窗口,点击“运行程序(R)”

安装SQL2005图文教程(windows 7系统)

安装了一会,结果又弹出,继续点击“运行程序(R)”

安装SQL2005图文教程(windows 7系统)

所有模块都安装完毕了,点击“下一步”

安装SQL2005图文教程(windows 7系统)

到这里就接近尾声了,点击“完成(F)”

安装SQL2005图文教程(windows 7系统)

 

这个界面是登陆到刚刚安装的数据库,因为安装的时候我们使用的是“默认实例”,也就是计算机名称,“IceWee-PC”是我的计算机名称,点击连接就登陆到数据库了。

我个人感觉安装SQL Server需要注意的地方有两点,一是IIS功能的启用,二是一定要选对安装版本,我第一次就下错了,下的企业版,结果
就只能安装“工作站组件、联机丛书和开发工具”。

 

关于局域网内其他计算机要连接上这个数据库我也遇到了点小麻烦,折腾了半天才搞定。

首先,系统防火墙和其他第三方防火墙,如360、QQ电脑管家、杀毒软件等,这个是常识了

其次,使用telnet命令进行连接,如果能够连上,那么肯定就能访问了,命令格式:

telnet 数据库IP 1433

连不上就会出现如下画面

安装SQL2005图文教程(windows 7系统)

 

就为了能telnet上我的数据库,折腾了半天啊!折腾了半天!哈哈,最后终于解决了

开始-》Microsoft SQL Server 2005-》配置工具-》SQL Server Configuration Manager

 在弹出窗口中,按照下图点开左侧树

安装SQL2005图文教程(windows 7系统)

我们看到红框中的“TCP/IP”协议是“已禁用”状态的,我们把它启用后,再重启SQL Server就能telnet上了!