通常情况下,我们利用浏览器来上传文件的时候,常常会限制文件的大小,例如上传图片,自定义头像这些东东,如果让文件数据上传到服务器端,再来判断文件的大小提示用户文件过大,这里会有一些网络的延迟,更重要的是浪费了带宽,今天在研究这个问题的时候,找到了在本地利用javascript来判断文件大小,从而带来了很好的客户端体验,又节约了相当大的带宽,以下是代码片段:
   HTML表单代码片段:

  代码
<form id="uploadfile" name="uploadfile" class="" target="upload" action="http://web.qq.com/cgi-bin/cface_upload" method="POST" enctype="multipart/form-data">
    <input id="custom_face" name="custom_face" type="file">
    <input name="f" type="hidden" value="fallback">
    <input name="go" type="button" value="Upload File" onclick="Upload();">
</form>

  javascript代码片段:

  function Upload()
{
    var form=document.getElementById("uploadfile");
    var face=document.getElementById("custom_face");
    //ReadFFFile(face);
    var fileSize=GetFileSize(face);
    if(fileSize>1024*1024)
    {
        alert("文件不能大于1M");
    }
    else
    {
        form.submit();
    };
};
function GetFileSize(fileObj)  
{  
   var image=new Image();
    var filePath=fileObj.value;
   image.dynsrc=filePath;
   var fileSize=image.fileSize||0;
    if(fileSize==0)
    {
        fileSize=fileObj.files[0].fileSize;
    };
    return fileSize;
};

这里对IE6和Firefox3分别用了image标签的synsrc属性和files数组,从而解决了浏览器获取待上传文件大小的这个问题。在firefox3中,files这个数组的项还有另外一个方法getAsBinary方法,可以获取该文件的二进制流,这样可以对文件进行Hash计算,在一起需要上传需要Hash作为文件名的场合下也是非常有用的,IE6下需要用到ActiveX控件ADO(浏览器自带)也能获取二进制流,不过这里可能会被浏览器的安全设置截获到而无法正常使用。
在ARM Linux上使用Apache+PHP
我相信这篇文章同样是国内很难搜到的一个HOWTO(呵呵,截至到我写出来之前),我的最初目的是在ARM上使用PHP,尝试了Busybox的httpd,以及boa都没有办法很方便的和PHP接口,因此我狠下心来,编译了Apache。在ARM上使用PHP,好处仅仅是脚本比cgi好写一些,付出的代价是速度和蜗牛一样慢,不要指望很多人同时访问可以响应得过来。
另外说件事,BLOG上的文章多了,经常发现有人转载,但是有的人却不注出处……难道要我吧我的名字和邮件地址写到文章的每一个部分吗?也许国人就是这样缺乏某种精神,在我看到的转载我文章的BLOG中,基本都是网上各种ARM Linux文章的集合,不可否认他们搜集的很好,但是看了这么多文章,连一点心得体会都没有么,写点原创的东西就这么难么?不管怎样,我还是坚持EE小站的风格——原创性。下面开始正题,本文分为三大部分,apache、php和配置。阅读全文
定义和用法

NOW() 函数返回当前的日期和时间。
语法

NOW()

实例
例子 1

下面是 SELECT 语句:

SELECT NOW(),CURDATE(),CURTIME()

结果类似:
NOW()   CURDATE()   CURTIME()
2008-12-29 16:25:46   2008-12-29   16:25:46

$sql="select count(*) from Tbl_CCshow where  FQQ='$qq' and FCode=3 and left(FTime,7)=left(now(),7)";
参看:http://www.dreamwing.org/php/zend_studio_70_ea_release_here.html

把Zend Studio 7 OOXX了一下,不过按照惯例还是提供一下注册码:
User Name:mimiz_cn
License Key:3B9B9BB76C218B98BB76C218


什么是计算机域|如何将计算机加入域。什么是计算机的域,什么是电脑域?如何将计算机加入域,电脑如何加入域?如果直接在微软网站搜索,是很难找到答案的,但刚刚接触域的朋友恰恰就需要知道什么是计算机域,计算机域的作用好处是什么,计算机域和工作组计算机有什么区别?《计算机加入域|电脑加入域》这篇文章就解释了计算机中域的概念。

什么是计算机的域,什么是电脑域,什么是工作组计算机
活动目录SEO博客的解释:一台Windows计算机,本来是独立的,为了便于互相传递共享文件,我们把计算机用网络连接起来,微软就给这么一群计算机电脑的网络起了个名字,叫做工作组。其中所包含的计算机,就是咱们常说的工作组计算机。

工作组计算机本来停方便,可是一旦数量多了,就变得不容易用,也不容易管理了。这些困难有几个方面:您看到的文章来自活动目录seo http://gnaw0725.blogbus.com/c1404552/
1、找电脑困难。你打开网上邻居,找一台电脑,可偏偏好死不死就是看不到需要的电脑。
2、共享困难。你需要很麻烦的共享文件夹,然后还要想办法告诉你的朋友,用户名和密码是多少,如此折腾一番,还不如用qq传文件来的方便。
3、访问困难。你的朋友不得不记住n多的共享名字和密码,每打开一个就要输入一个账户密码,多了就记不住。

活动目录seo博客注:由于工作组计算机没有什么好的管理方式,随之而来的就是咱们经常碰到的种种问题,例如看不到打不开找不到不显示工作组计算机 不能访问工作组 打不开找不到工作组  工作组列表无法使用 没有权限访问工作组 工作组看不到自己

为了更好的解决这些困难,微软用一台服务器,把局域网中的各种可以用的资源信息收集整理,例如计算机、电脑、共享文件夹目录、用户账户、工作组、各种权限设置等等,并用规范的目录列表的形式,发放给局域网中所有计算机电脑使用,而且这个目录列表是很灵活的,可以很方便的管理维护,彻底改掉了工作组计算机的种种恶习。微软把这个灵活的目录列表,就叫做活动目录,也就是域。它还有一个英文名字,active directory,大伙为了方便,有时也管它叫做ad,windows ad,计算机域,电脑域等等。您看到的文章来自活动目录seo http://gnaw0725.blogbus.com/c1404552/

那么管理维护活动目录的服务器,就叫做域控制器,英文名字 domain controller,简称dc。在windows 2000之后的活动目录域中,域控制器分为两种:首要域控制器(primary dc)和额外域控制器(additional dc)

计算机、电脑要么在工作组中,要么就在域中,没有其他状态。

活动目录seo注:就在活动目录博客首页的最上方,我们对ad活动目录域有一个比较精炼的解释。AD活动目录作用通过活动目录域,把电脑等组织成的windows20038活动目录架构,活动目录中的电脑域信息就在Windows活动目录这个计算机的域中共享,配合活动目录组策略Active Directory Group Policy形成Windows AD计算机网络域的安全规范管理。

对比一下微软的解释,看看哪个更容易懂?这就是活动目录seo博客创建的宗旨,也是ITPro特别是MVP的责任。
注:MVP(微软最有价值专家)

微软的解释:域是一个有安全边界的计算机集合,在同一个域中的计算机彼此之间已经建立了信任关系,在域内访问其他机器,不再需要被访问机器的许可了。您看到的文章来自活动目录seo http://gnaw0725.blogbus.com/c1404552/

活动目录服务是Windows 2000操作系统平台的中心组件之一。理解活动目录对于理解Windows 2000的整体价值是非常重要的。这篇关于活动目录服务所涉及概念和技术的介绍文章描述了活动目录的用途,提供了对其工作原理的概述,并概括了该服务为不同组织和机构提供的关键性商务及技术便利。

今天,对于在商业运作中保持竞争力而言,网络化计算变得比以往任何时候都更为重要。为此,就要求现代化的操作系统具有管理存在于构成网络环境所需分布式资源中的一致性和关联性的机制。目录服务提供一定空间,用于存储与基于网络的实体相关的信息,例如应用程序、文件、打印机和人员。同时,该服务也提供用于命名、描述、定位、存取、管理及保证独立资源信息安全性的一致性方法。

更形象地说,目录服务在网络操作系统中扮演着一个接线总机的角色。它是通过对一致性进行管理,并调度那些分布式资源间关联,从而使它们共同工作的中心授权机构。由于目录服务提供这些基础的网络操作系统功能,它必须与用于管理和提供安全性的操作系统机制紧密结合在一起,从而保证网络的完整性和保密性。同时,目录服务也在组织机构的下列能力中发挥至关重要的作用,这些能力包括:定义和维护网络基础构件的能力,执行系统管理的能力以及控制一家公司信息系统中全部用户经验的能力 。

活动目录是Windows 2000网络体系结构中一个基本且不可分割的部分。它在Windows NT 4.0操作系统的域结构基础上改进而成,并提供了一套为分布式网络环境设计的目录服务。活动目录使得组织机构可以有效地对有关网络资源和用户的信息进行共享和管理。另外,目录服务在网络安全方面也扮演着中心授权机构的角色,从而使操作系统可以轻松地验证用户身份并控制其对网络资源的访问。同等重要的是,活动目录还担当着系统集成和巩固管理任务的集合点。 您看到的文章来自活动目录seo http://gnaw0725.blogbus.com/c1404552/

计算机域的作用好处是什么

活动目录的首要任务或者说主要目标是 客户端的安全管理,然后是客户端的标准化管理。再对这两个概念进行一下扩展:
安全管理:说的形象一些,举个例子。你的用户使用计算机是不是经常的乱装软件,乱拷东西,然后病毒一堆,而这些破事儿却要怪罪到你的头上?
标准化管理:也举个例子。你的老板是不是曾经让你把所有计算机的软件或者桌面都统一一下,不要在桌面上放超级女生快乐男孩的图片?
如果这两点完成了,那么再往高级了说,活动目录将成为企业基础架构的根本,所有的高级服务都会向活动目录整合,以利用其统一的身份验证、安全管理以及资源公用。>>> 更多内容请点击 活动目录ActiveDirectories的作用以及优势

计算机域和工作组计算机有什么区别 工作组和域的区别

了解了什么是工作组计算机,什么是计算机域,那么工作组和域的区别也就是很容易看到了。工作组的资源管理是分散在网络中的各计算机上;而域提供了将全部用户集成一个单独数据库的能力,在一个域里被认证、授权。这个数据库利用Windows 2003 server服务器作为域控制器来进行管理。当用户登录到一个Windows 2003网络的域上时,域控制器将对其合法性及权限进行鉴别,这种合法性及权限使用有权访问网络上的指定的资源。您看到的文章来自活动目录seo http://gnaw0725.blogbus.com/c1404552/
如何入域:
参考:http://gnaw0725.blogbus.com/logs/18397536.html


一般来说,会从三个方面进行限制:

1、公司策略;
2、网络接入;

3、资源访问。

首先必须有公司制度和规范进行强制要求,才能名正言顺地强制用户加入域。

一般情况下,在技术上实施的,是网络访问控制,一般控制入口和出口,也就是用户必须登录域才能访问企业网络和访问Internet。

额外就是根据条件进行资源控制,如果全部都是微软平台,可以强制IPSec,但是如果有很多异构系统,那就只能通过接入控制来实现了。
//========================================================================
//TITLE:
//    WinXP与WinCE串口的运行机制之比较阅读全文
ARM主板相对于X86主板的优点:
    (1)、功耗:这是ARM主板最大的优点之一,一般的VIA的X86主板,功耗都在40W左右或者以上,而ARM主板的功耗极低,EICB系列主板功耗整体也只有1W左右。
    (2)、发热:ARM主板不会发热,主板温度一般是常温,因此可以一直常年累月开机在线工作,不会出现任何问题。而X86主板CPU必须配风扇而且不能长期工作,否则主板产生的温度会让主板整体性能寿命降低。风扇的工作寿命也会影响主板的寿命。
    (3)、开机时间:ARM主板的开机速度非常快,一般只有几秒就可以了,而X86需要开机一段时间,Windows系统才会起来。
    (4)、性能:目前来看,ARM主板的性能已经越来越接近X86主板,甚至在某些方面超过了它。从视频多媒体、数据通信等几个方面,基本和X86类似。
    (5)、工作时间和环境:ARM主板不受时间限制,可以一直开机工作,无须人员去维护,而且在调电情况下,只要来电,那么就会自动启动,无须人员去开机或者关机,而X86主板却要人员维护,而且不能长期工作,否则会让主板寿命大大降低。
环境:ARM主板一般都是工业极,不受环境影响,最低温度可以在-20摄氏度左右,最高温度可以在70摄氏度左右,而X86一般都不行。
    (6)、数据安全性:ARM主板都采用高度集成方式,数据一般都放在Flash内部,都是二进制格式,外部无法直接拷贝内部数据。而且最大的优点是:目前ARM主板的系统都是WinCE系统或者Linux系统,不会受病毒感染,客户无须担心病毒感染而导致数据泄漏,尤其是一些对于数据安全性要求很高的场所。ARM主板非常适合而X86刚好相反,由于都采用了Windows XP、2000等常用系统,而且采用了DOM盘或者硬盘,因此数据很容易被病毒感染或者被人偷取,因此安全性无法相比。
    (7)、主板安全性:ARM主板的内存以及所有芯片都采取了贴片方式,因此在周围环境震动情况下,不会松动,而X86是采用了直插方式,比如内存条和DOM盘等,因此一旦时间长久,就会出现松动情况从而影响系统运行。
    (8)、灵活性:ARM主板可以根据用户的需要来进行灵活配置,比如logo,内存大小,系统驱动程序裁减,周围芯片的裁减,系统软件的加载等等,无论软硬件都是非常灵活这样也会大大降低客户的成本和系统整体的维护成本和性能,而X86却无法做到这一点。期越科技完全可以根据用户的需要来进行配置,无论软硬件都可以进行。
    (9)、价格:ARM主板目前价格都非常低,而且ARM主板已经包含了内存和存储介质,无须外部购买配件,因此整体系统成本比X86价格要低很多。阅读全文
glibc_fwrite_warning.patch

到memcache目录下:
[root@localhost memcached-1.4.25]# patch -p0 < glibc_fwrite_warning.patch
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- memcached-1.4.20/memcached.c.orig  2014-05-11 02:59:58.000000000 -0400
|+++ memcached-1.4.20/memcached.c       2015-01-13 18:05:43.000000000 -0500
--------------------------
File to patch: memcached.c
patching file memcached.c
Hunk #1 succeeded at 1283 (offset 9 lines).

=====================================================



1) diff/patch这对工具在数学上来说,diff是对2个集合求差,patch是求和

diff A B > C 生成A和B的diff文件C

patch A C 给A打上diff文件得到B

patch -R B C B还原为A

2) 内核补丁

生成

diff -uNr linux-2.6.xxx linux-2.6.xxx.1 > diff.patch

升级

cp diff.patch linux-2.6.xxx/.

cd linux-2.6.xxx

patch -p1 < diff.patch

可以参考$(linux_src)/Documentation/applying_patches.txt

还可以参考这一篇:http://www.hzlitai.com.cn/bbs/dispbbs.asp?boardid=28&id=1215
概述
——

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。阅读全文
接下来,我要跟各位介绍一下 wait_queue 的用法,以及用一个例子来说明如何使用 wait_queue。最后,我会带各位去 trace 一下 wait_queue 的原始程序代码,看看 wait_queue 是如何做到的。

我想有件事要先提及的是 Linux 在 user space 跟在 kernel space 上的差异。我们知道 Linux 是 multi-tasking 的环境,同时可以有很多人执行很多的程序。这是从 user 的观点来看的。如果就 kernel 的观点来看,是没有所谓的 multi-tasking 的。在 kernel 里,只有 single-thread。也就是说,如果你的 kernel code 正在执行,那系统里只有那部分在执行。不会有另一部分的 kernel code 也在运作。当然,这是指 single processor 的情况下,如果是 SMP 的话,那我就不清楚了。我想很多人都在 Windows 3.1 下写过程序,在那种环境下写程序,每一个程序都必须适当的将 CPU 让给别的程序使用。如果有个程序里面有一个

while (1); 阅读全文
我对功率控制是外行。由于要做一个温度控制设备,最近看了一些固态继电器、可控硅方面的资料。资料看后,人有些迷糊了。这里高人多,请指点一下.
   都说交流型SSR等同于一个双向可控硅+过零触发电路。我没看到有关可控硅的通断寿命问题(因此我认为可控硅作为开关本身其开关次数可以无限次),但有资料说ssr的通断寿命在10的8次方-9次方之间。既然ssr由可控硅构成,为什么还有寿命问题?
  另外,继电器、双向可控硅、固态继电器三者中,通常认为可控硅控制温度最精确。但是既然ssr也是可控硅,按理我也可以用调波控制可控硅的方式来控制触发ssr,达到同样精确控制温度的效果? 但在温度仪表中,我看到往往是2-3秒通断一次的方式来控制ssr.很明显是作为普通继电器的一个替代品使用。请问这是为什么? 阅读全文
1. VC实际上没有想象中那么流行,有被夸大的成分。国外我不了解,只谈国内。
  曾经连续若干年,无论是学校图书馆,还是新华书店,还是XX培训班,VC绝对是主力。
  很多大学在开设C/C++课程时,要么还停留在TurboC时代,要么就是一律VC++,鲜有
  其它开发环境。图书馆和书店,铺天盖地都是VC++,都是24小时精通,都是速成,都是
  深入浅出,都是内幕云云。几乎看不到其它开发工具的影子。这给我们一种错误的讯息,
  VC很强大,整个社会都在用VC。当我第一次看到Linux的时候,甚至有些恐惧,竟然还有
  这么不一样的windows。当我头一回用GCC和Vim的时候,惊慌失措。我想,很多人应该跟
  我境遇差不多,身边充满VC的影子,多到让人窒息。其实,脚本语言也挺流行的,只不过
  大环境让我们直到工作后才体会得到。

2. VC真的在没落。
  桌面软件的开发,曾经是VC独步天下,C#刚出来的时候,被不少人当作笑柄,要装一个巨大
  无比.net才能使用。直到现在,使用C#开发桌面软件仍然是少数,至少我电脑里只有一个索
  爱手机的管理软件。这种情况将要得到改写,因为Vista开始,.net已经默认集成到操作系统
  中了,就跟以前的MFCxx.dll和MSVCRT.dll一样。用过C#的人都知道,C#很方便,无论是对OO
  思想的支持程度,还是做GUI的RAD,都非常方便。再看VC,MFC渐渐淡去,这么多年也几乎没
  多少进步,微软对之支持力度也是远远不如.net, WTL是好东西,可是没有官方支持。即使是
  VC.net,也比不上C#,毕竟C#是为了.net而生的。

3. VC在很多方面开发效率不高。
  并不是说VC在退步,而是他进步缓慢。在很多领域,取代VC的工具渐渐崭露头角,Python的快速
  开发能力相当惊人,Java也有非常丰富的库支持,本来用VC做的一些小项目,拿他们来做,节省
  了大量的开发时间。微软的VC类库,倒是很多年没大动静了。特别是涉及到互联网功能的地方,
  VC被很多工具超越。 阅读全文
$f = 'mood.txt';
echo( getMood($f) );


function getMood ( $filename )
{
  $fp = fopen($filename,"r");
  $d = fgets($fp,1024);
  fclose($fp);
  return $d;
}

function writeMood ( $filename , $mooddata )
{
  $mooddata = trim( $mooddata ) . "\n";//先去掉首尾空格,再加上\n
  $fp = fopen($filename,"w+");  //只有一个人写,无须锁定
  fwrite($fp,$mooddata);
  fclose($fp);
}
务必注意如下:
配对标记名的结尾标记名应单独一行,前后均不允许输出字符...(例如空格等不可见但存在的字符..)


开始:
<?php
$countwis = 21;
$ishper4 = 100;
$countwish4 = 128;
$countwishper4 = 666;
echo <<<EOF
</li> <li><span class="lb">其他:</span><span class="scale blue"><img src="images/vote_blue.gif" width=eval($countwishper4*2.35) height="8" /></span><span class="scalenum">{$countwish4}(({$countwishper4}%)</span></li> </ul>
EOF;


?>


run:

jackxiang@Tencent:~/php> /usr/local/php/bin/php eval.php
PHP Warning:  Module 'sockets' already loaded in Unknown on line 0
</li> <li><span class="lb">其他:</span><span class="scale blue"><img src="images/vote_blue.gif" width=eval(666*2.35) height="8" /></span><span class="scalenum">128((666%)</span></li> </ul>

why:
width=eval(666*2.35)

我是想让php计算出来给width的,为什么???

<?
if(test case)
print<<<EOT
<....html code....>
EOF;
else
print<<<EOT
<....html code....>
   EOF; //没有顶格写会报错:Parse error: syntax error, unexpected $end in
?>


如上写法是不可以的,需要把EOF标识符顶格:

<?
if(test case)
print<<<EOT
<....html code....>
EOF;
else
print<<<EOT
<....html code....>
EOF;
?>



补充上月票哥的:

<<<EOT,这个后面不能有空格
EOT;首先,要顶格,其次,分号后不能有空格。

定界符这个东西功能很强大,特别是在引用多行HTML代码的时候,方便了PHP的开发者,但其实他的使用很妖异【没装过PHP5.3,所以不知道新的有没有变化】

1、heredoc syntax 里面只能是文字,凡是涉及到的变量都会被解析

2、不要妄想在定界符内赋值、计算等,如果是变量的相乘,请在外面解析完了放进来。。。

3、大括号要注意着使用,无论如何,大括号内不要同时出现多个变量

4、定界符标志后面不能有任何空格,如 <<<EOT,EOT;,这两个符号后都不能有任何字符,EOT;就是占一行,谁也不能抢它

就想到这么多。以后想到再写

顺便说明一下,PHP的文件还是有规范的。。
点击在新窗口中浏览此图片
例如

1、空文件,一般代码为<?php,如果就这样写,肯定报错,最少在<?php后面得加一个空格

2、文件结尾,上面说的定界符,就是一例,如果文件正好是EOT;结尾,后面又没有 ?> ,文件绝对报错,所以必须要在EOT;后再敲一个回车。。。。

妖啊。。实在是妖啊。。



彪哥的url:
http://www.neatcn.com/show-924-1.shtml
背景: 外包的代码里有很多windows换行符号,只想查找不想替换,于是对这个^M符号产生了新的看法。
没有:
cat content.php |grep -rin "\r\n"
有:
cat index.php |grep \r\n
$setData['username'] = $data->username;
但这都是不对的:
回忆未来-向东-Jàck  下午 05:40:02
怎么查找文件里有windows换行啊?兄弟。我硬是拦住了。
我想grep一整个目录,查到有windows换行的文件。
老罗新  下午 05:57:46
window换行是ctrl+V+M
grep -R */* "^M"
老罗新  下午 05:59:08
或者
find .  -type f|xargs grep "^M"
回忆未来-向东-Jàck  下午 05:59:36
我用了\r\n,我试试哈:
[root@localhost site]# find .  -type f|xargs grep "^M"
[root@localhost site]#
里面有一个文件有window换行,没找到呀,哈。

老罗 下午 06:11:54
俺这里是没有问题的。
find ./ -name a.c -type f |xargs grep "^M"
是不是那个"^M",你输入的不对?
—————————这玩意输入不能粘贴:注意:一跟三两种方法中的^M都是ctrl+v再ctrl+m后产生的———————
老罗新  上午 10:22:34
你输入的^M是使用ctrl+v+m敲出来的吧。
回忆未来-向东-Jàck  上午 10:23:10
不是。
我直接贴的你的。
老罗新  上午 10:23:42
怪不得。要先按着ctrl不松,然后依次按v和m
回忆未来-向东-Jàck  上午 10:24:18
哈哈,就是这个问题,好了。
那在vim里查找哩?
也这样可以吧,哈哈。
老罗新  上午 10:24:44
也一样
回忆未来-向东-Jàck  上午 10:25:56
复制粘贴都不行,非得这样整出来。
————
以前都是dos2unix,是想给外包找到这些文件,
这玩意太高深了,吼吼,多谢多谢,这方法好。
老罗新  上午 10:26:22
不客气

按Ctrl+v+m即可,复制粘贴有可能会提示找不到^M:
http://www.dbdream.org/?p=454

实践OD:
http://www.boyunjian.com/do/article/snapshot.do?uid=net.csdn.blog/wzb56/article/details/6860358
先生成一个换行(\n, 0x0A)和回车(\r, 0x0D)组合的文本
$ echo -en '12\n34\r56\n\r78\r\n' > tmp
以十六进制方式查看文本
$ od -t x1 tmp
0000000 31 32 0a 33 34 0d 35 36 0a 0d 37 38 0d 0a
实践:
[root@test od]# echo -en '12\n34\r56\n\r78\r\n' > tmp  
[root@test od]# ls
tmp
[root@test od]# od -t x1 tmp
0000000 31 32 0a 33 34 0d 35 36 0a 0d 37 38 0d 0a
0000016
————————————————————————————————
Linux编辑器vim中删除行尾的^M

有时候,在 Linux 中使用打开曾在 Windows 中编辑过的文件时,会在行尾看到 ^M 字符。看起来总是感觉很别扭。
删除方法如下:
在 Vim 的命令模式中输入 :%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。
注意: ^M 要用 Ctrl + v,  Ctrl + m 来输入,M 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配到的内容都要置换。


OJ判题时发现一个问题:用%c读入的代码都会报wa。后来发现跟scanf有关。在linux下使用%c会读到\n和\r两个字符。所以需要将^M(也就是\r)字符删掉
删除方法不少。找了一个比较简单的。
要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符
来自:http://hi.baidu.com/xyhouse/item/1598874e9bc2f80f6dc2f09c

linux 去除 windows 换行符:
解决方法:

1.通过sed命令解决

就是这个破命令废了我好大劲
1
  
sed -i -e "s/\cM//g"  filename

之前走了弯路虽然实现了但是总是觉得不爽才发现可以这么使用。之前写的命令是”s/[^A-Za-z0-9\"\)\_]$//g”其实这样也是可以的,原理很简单因为一般的匹配开始无法找到^M但是我发现通过正则匹配是可以匹配到的。因此上面那个公式的意思就是查找行尾除了字母数字符号以外的符号,其实就剩下控制符啦。很山寨哦
2.通过vim转换文件格式解决

这个方法虽然早就知道但是不适合我这次的需求但是写出来备档

:set fileformat?查看当前文档格式会显示为fileformat=[unix|dos|mac]其中过一种
把一个dos格式的文件转换成unix格式可以通过以下两步完成:
:set fileformat=unix
:write

3.通过tr命令解决

tr -d “[\015]” < file >/tmp/file

tr是个很好处理控制符号的程序但是没弄明白怎么修改当前文件,因此多数只能用作转换,file为源文件。/tmp/file为转换后的文件

其实很简单的问题解决起来也未必简单,希望这里的备档能给大家帮助
来自:http://www.wo1768.com/?p=1073


Windows和Unix的换行符处理^M


在windows上写好的文件,在Linux或者Unix下打开,每一行都会出多出^M这样的字符,这是因为Windows与*nix的换行符不同所致,如果是一般的文件影响倒是不大,但如果是写的脚本文件,那有可能就执行不了。对于行数比较少相对简单的文件来说,直接删掉然后保存就可以了。

1、但是如果这个文件要是有几百上千行,一行一行删除是要累死人的,有没有好的办法呢?
答案是:在Vi的命令模式中输入:%s/^M$//g后,回车即会自动删除该文件中的所有^M字符。
%指匹配整个文件,s是置换的意思,^M要分另用(Ctrl+V)和(Ctrl+M)来输入,M后面的$代表匹配行尾的内容,最后的g则表示每行中匹配到的内容都要置换。

2、如果我某一目录下有很多这样的文件怎么办?总不能每个文件都用Vi修改一次吧?
答案是:用unix2dos来解决。在Freebsd系统ports安装unix2dos很简单:
root# whereis unix2dosroot# cd /usr/ports/converters/unix2dos root# make install clean

安装完之后,就可以运行这个命令进行转换了:
root# dos2unix /root/tmp/*

3、如果我有很多目录及子目录都有这样的文件怎么办呢?别急,我们用find的递归命令处理:
root# find /root/tmp –type f –exec dos2unix {} \;

此命令之后,tmp目录下所有文件及子目录下的文件全部都被转换了。简单吧!

备注:unix2dos还有另外一个作用就是把unix格式的文件转化成Windows格式的文件,就是命令反过来:unix2dos ,比如我想看一下Apache的日志,就需用这个命令转换一下。

来自:http://hi.baidu.com/izhaohan/item/042709bd6b6136d084dd79d9
分页: 207/272 第一页 上页 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 下页 最后页 [ 显示模式: 摘要 | 列表 ]