思维碎片

这是一篇草稿了很多年的文章,算是一些记录吧


回复LX1 年前 {LX1 年前: 世界就是由计算机二进制语言组织起来的。不错。}二进制,包括其它的任何理论,都是一种抽象,而抽象必然伴随着信息的丢失。任何理论,都是对现象的描述,不是现象本身。我好像扯太远了

1 年前
已经不记得是初中还是小学时,生出的一个奇怪念头:每个人是否都是在做梦,从一生下来就在做梦,直到最后的醒来,就是死亡。


161221  写给iOS开发人员的一条原则,这些内容好像是不言而喻,应该是开发人员的必备意识

使用任何一个变量(包括对象、属性)时,要事先保证其有效性,尤其是通过调用各类接口返回的值,至少包括以下几种类型:

  • a. 网络接口(比如通过http返回并解析的json)
  • b. 调用操作系统api返回的值(含对象)
  • c. 通过类型转换返回的值,比如json
  • d. 一段时间未使用的系统资源,如socket, 打开的文件handle, 数据库连接对象

非法的使用无效变量后,进程(或线程)立即终止;如果是进程或UI线程异常终止,程序就必然崩溃了闪退。
(在windows程序、java程序、python程序,甚至javascript、php这类解释型程序里,都是如此,我没写过iOS程序,想必也是一样)


161205  BOM开会,

如何利用别人(外界)对我的认识、改善自己的工作.
我作为别人的“外界”,如何反馈出对他人的认识,以便让别人参考,客观评判、不加主观臆断

谁拿结果,谁主导做


程序开发中的命名空间。数据库(包括表前缀、表名、字段名)、变量等等,都有关。引入前缀的目的是避免冲突。而不是“看起来整齐”。事实上,这种所谓的整齐,同时意味着辨识度低,很容易看错。试想,在一大堆长得很像的名字里,一眼区分谁是谁,真有难度。举例:一个站点自用的一数据库,表前缀为了所谓的“整齐好看”,对每个表加个前缀。一个典型是当年动易CMS的数据库(在虚拟主机环境下,很多主机商限制只能有一个数据库,所以动易数据表可能要与别的应用共存在数据库里,所以这个表前缀某些时候还是有用的)。更无语的是,有人更进一步,前缀就是本数据库名,这实在是自找麻烦,掩耳盗铃。同样,对于变量命名,也是类似。相反,在一个庞大的程序代码里,存在相互包含(include),这种情况下,被包含的文件,里面的变量命名,非常有必要使用一定的前缀,以避免冲突。否则将成为调试的噩梦。


fengyqf
2月21日 23:12 来自 微博 weibo.com
哲学,是起源于古希腊的一门学问。哲理,只是名字上带个“哲”字的文学片段。


运营上成功的产品,未必在技术上成功,所以市面上一些成功的产品,未必是好的技术参考。如wordpress, discuz等


横向沟通协作,主动了解,主动提供 from 161029公司培训


痛点、亮点、弯道超车点。 网易考拉CEO总结的三个重要点 from 电视节目《总裁读书会》 161106

C语言踩坑流水帐

语法与语言本身

todo

一些函数

scanf

scanf("%s",str) 并非想象那样把一个完整的字符串读取到str,比如包括空格字符的一句话;事实上,只要有空格就会终止。所以,不要指望用它从stdin中按行读取;可以使用fgets()实现读行,但注意它会带上行尾换行符。

 

 

centos 6下通过yum安装apache模块mod_h264_streaming, mod_flvx, mod_xsendfile等

centos因为上游redhat ep的原因,自带的包相对少一些,centos官方也建议可以安装一些第三方的yum源,如rpmfusion,epel等,本文所说的apache模块,rpmfusion,epel是支持的。

安装epel, rpmfusion源。

参看rpmfusion官方的“重要提示” (http://rpmfusion.org/Configuration) 说,安装rpmfusion前要先启用epel源

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

yum makecache

rpm -ivh http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm

rpm -ivh http://download1.rpmfusion.org/nonfree/el/updates/6/i386/rpmfusion-nonfree-release-6-1.noarch.rpm

h264模块是非自由(nonefree)软件,要启用nonefree源才可以。不是“非免费”,不收钱的~~

上面的rpm文件,可能会随着新版本的出现而有所改变,因此,请参看其官方的安装说明操作。

装过上述两个yum源后,然后直接yum install即可

yum install mod_xsendfile

yum install mod_h264_streaming

yum install mod_flvx

 

 

 

 

linux初学者简明指导手册

linux是什么

如何学习

选择发行版

安装,虚拟机环境,硬盘、光盘、U盘

目录结构,挂载

认识终端命令行,基本命令:cd, ls, mkdir, cat, less

yum

三板斧:yum update, yum install, yum erase

yum进阶:yum provides, yum list, yum grouplist(groupinstall)

vim生存技能:模式,移动光标,保存搜索

bash进阶:多任务,jobs, &, bg, fg, kill

 

使用linode clone功能把一个vps整机迁移到另一vps上

前些天linode九周年促销活动时,抢买了一512的vps,想把原vps上的数据全部迁移过去,然后把旧vps撤销掉,这样可以省三个月的费用,还是很值的。买过后却懒得迁移数据,因为配置环境还是一件麻烦的事情,虽然没有多高技术含量。一个多月时间,也只配置了个最基本的环境,当时把配置过程实录下来,写了篇新手教程,然后就完全搁置了。其实环境还没有真正配置好。

今天偶然间看到linode后台里的clone功能,上网查了下,果然就是vps整机迁移的,这简直太方便了,跟linode迁移数据中心/机房一样简单,甚至更简单,不用给客服发ticket,完全自助!

于是在仔细确认后关掉新vps,把原vps clone过来。clone时,源vps不关机,直接迁移,理论上这样会造成一些问题,但考虑到vps工作负载并不高,其实只是个人wordpress博客,访问量很少,所以数据一致性问题应该可以忽略。

clone时,选中启动配置,而不是下面的硬盘,因为我需要的是整个服务器迁移,而不是只迁移某个硬盘。但是报错说“空间不足”,于是去把硬盘删掉,这样再操作,就通过了。因为两个vps在同一个机房(Fremont),所以速度很快,十几分钟就完成了。

启动vps,但失败了,发现是用的原来的启动配置,注意到在 Select Configuration Profiles 里有两个配置,默认选中的是原来的配置,改选中用另一个,再启动,成功。把前一个启动配置删掉,只保留可用的这个。

ssh连接,提示WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

因为RSA host key变了,所以ssh警告。

$ vim ~/.ssh/known_hosts

把旧的rsa key删掉,保存,再ssh连接,正常进入。

因为在vps上没有使用本机静态ip地址的配置,所以不需要做任何设置修改,直接运行了。

nginx编译后写入/etc/rc.local,所以自动启动了。

测试clone迁移后的vps上的站点是否正常运行,把浏览器的代理设置成vps ip地址80端口,然后通过域名访问,但wordpress提示“无法连接数据库”,难道是迁移后mysql挂了?ssh上检查没有mysqld的进程,想起好像当时没有把mysqld 设置为自动启动,于是到setup里查看,果然。设置自动启动,然后/etc/init.d/mysqld start ,然后再次访问网站,完全正常!

再检查了一下其它站点、备份数据之类,确认没有问题,到dnspod上把域名解析到新的vps上,然后两边都运行着,这样dns解析没有生效的用户,访问旧vps还是可以正常打开的,不至于造成流量丢失,或者被se蜘蛛“反感”。

几个小时后,把旧vps关掉,再次确认没有问题,这下就可以撤销掉旧vps了,今天8月1号,或许这一个月的费用就可以不付了。撤销掉vps后,看到账单里有个0.64刀的账单,看来这个月还是算用了一天吧。不过也还好,至省下了8-9月两个月的vps费用,好歹也两百多RMB。接着给客服发了个ticket,问问是remove掉vps后否还有其它事情要做,客服说要付掉那0.64的账单,别的没有。

于是付款,然后,没事了。写下这篇文章记念一下。

简单命令对mysql数据库的备份与还原

使用phpMyAdmin备份mysql数据库

备份mysql的最简单方法是的使用phpMyAdmin的“导出”功能,导出成sql文件,不用管其它选项,只管导出就可以,这就是mysql标准的备份文件。

导出时,一般不要勾选压缩选项。因为如果备份文件大到一定程度,就会因为php分配不到足够内存而死掉;经验是50M以上的表,就不要压缩了。这是个蛋疼的事情:小文件不值得压缩,大了反而压缩不动。所以不压缩就是了。

还原mysql数据库

要还原mysql数据库时,使用phpMyAdmin是个简单的方法,但更容易因为备份文件过大而超过php内存限制而死掉,这时你会有种痛不欲生的感觉。

推荐使用命令行连接mysql,以source命令导入还原,这个导入过程是件愉悦的事情。

不幸的是如果你在windows下,会比较啰嗦:

把你的mysql备份文件放到一个比较浅的目录里,比如放在 E:\120507.sql ,你要还原的数据库叫mydata

找到你的mysql安装在哪里,假如你的mysql安装在D:\Program Files\MySQL\MySQL Server 5.0 ,那么你的mysql命令行客户端将位于D:\Program Files\MySQL\MySQL Server 5.0\bin ,按着按下面的步骤来:

  • 1. 开始-运行,输入cmd,确定,你将进入命令行界面
  • 2. 输入 d: 然后回车,进入D盘
  • 3. 输入cd "D:\Program Files\MySQL\MySQL Server 5.0\bin" 再回车(注意,如果路径中有空格,那引号是必须的)
  • 4. 输入mysql -uroot -p123456 --default-character-set=utf8 --max_allowed_packet=16777216 --net_buffer_length=16384 回车(假设你的mysql的root用户密码是123456, 注意,这里u与p后面带不带空格都可以,我习惯不带; 你只需改这行命令里的密码部分,其它不需要改变,照用即可)
  • 你将看到

    注意到光标闪烁处的mysql> ,这就说明已经成功连接到本机的mysql数据库。
  • 输入use mydata 回车 ,进入mydata数据库
  • 输入source E:\120507.sql 回车,你将看到一行行快速滚动的信息。滚动完毕就导入完成了。
  • 输入exit驾车即可。回到phpmyadmin里看导入的结果吧.

核心回顾

mysql备份,使用phpMyAdmin,导出需要的表,或整个数据库,注意最好不要勾选压缩

还原,使用命令行客户端连上mysql服务器,mysql -uroot -p123456 --default-character-set=utf8 --max_allowed_packet=16777216 --net_buffer_length=16384,然后use mydata进入需要还原的数据库,运行source x:\bakup_file.sql 导入备份。

excel表格导入mysql方法(手工导入)

这不是最好的办法,但对于只导一次的数据,却是一个有效的方法,虽然非常麻烦。

microsoft office/excel 在日常的应用中,还是相当广泛,但它不是个好工具。把excel导入mysql表,是一个无法忍受的麻烦工作;尤其是表格里带大字段的列,使用phpMyAdmin导入经常是失败的。如果你也遇到这种问题,可以尝试以下方法。

1. 在excel里选中所有数据列,执行替换,把 ' 替换成 \' (把单引号替换成斜杠加单引号,即mysql中的单引号转义)

2. 在excel表格里插入一列,根据mysql表结构,写个excel公式,其实只是个字符串拼接操作,目的是构造一个mysql插入语句,形式大至如下

="insert into `article`(cat_id,title,content,add_time) values('"&D3&"','"&A3&"','"&B3&"',1330516016);"

3. 复制该列,并作为新列粘贴值到旁边(选择性粘贴);或者粘贴到新表格里也可以。

4. 除了刚才的新数据列,把其它列全部删掉,另存为unicode文本格式(实际是utf-16的csv)。

5. 使用记事本打/或其它纯文本编辑工具打开该文件,另存为utf-8编码。(windows下所谓的unicode格式实际是utf-16,这是M$在误导大家)

6. 使用editplus等文本编辑工具,打开该utf-8格式的文件,查找替换,把 ""  替换成 " (两个连续单引号替换成一个单引号); 因为M$的CSV使用两个双引号来转义双引号,这是个非常愚蠢的约定!MS/windows很多地方都是这样愚蠢的做双字符转义!而标准的csv使用斜杠做特殊字符转义的。

7. 把 "\n\" (行尾双引号与下一行的双引号) 替换成 \n (亦即把行首及行尾的双引号删掉)

8. 把文件最开头及文件最末尾的双引号删掉。

9. 现在就是可以在mysql里执行的insert插入语句了,拿到mysql里执行吧。如果数据量大,推荐使用mysql命令行下导入,连接时最好加上参数 --default-character-set=utf8 ,这样不容易出现乱码。

mysql -uroot -p --default-character-set=utf8

php 通过mssql_xx函数读mssql 2005记录, text/ntext字段非常速度慢

使用php写的web程序,从mssql 2005读取一个文章列表,要读取出文章内容,在列表页面里显示出一部分,起先使用:

SELECT top 20 [id],[title],[content], FROM [news] where xxx

这是很自然直接的写法,但是发现运行速度非常的慢,浏览器访问经常要花费好几秒到几十秒才打开页面,慢的时候还会php脚本执行的超时;该表建有必要的索引,数据量只有几万条而已。通过定时追踪发现问题就出在这个语句上,改成如下的形式:

 $sql="SELECT top $pagesize * from 
    (
        SELECT top $top [id],[title]
         ,convert(varchar(30),[updatetime],120) as [updatetime] ,[keyword]
         ,[picture],convert(varchar(500),content) as concent
        FROM [news] ";
 $sql = $sql.$sql_where." 
        order by updatetime desc
    ) as bb order by updatetime asc";

目的是方便分页,不读取出没用的记录。但事实上并没有起色,还是非常慢(这个写法读出来的记录集其实是倒序的,要在读出到数组里后使用array_reverse来反转一下)。而当把sql语句里的content字段去掉不读,就会快如飞一般。就算是改换$sql_where 里的条件也一样的快(这样mssql就不会使用其内部缓存,方便比较语句效率)。

这么看,text型字段实在是mssql里sql语句效率的杀手;可悲的是,这个内容字段是一定要读取的,这是web系统的功能要求,使用缓存是一个方法,但就算使用缓存,在生成缓存时,也一样会非常慢,甚至超时。

几乎是异想天开的念头:拆成多个语句,先读出不带text字段的记录集,再通过php程序遍历id号,然后一条一条的读出text字段,并拼到结果数组里,没想到,居然速度快多了,打开速度维持在0.5秒内,虽然并不够理想。

实在是无法想像,无法理解为什么是这样子!

代码大致如下:

function get_content($id)
{
	global $conn;
	$content='';
	$sql='select convert(varchar(max),content) as content FROM [news] where id='.(int)$id;
	$rs=mssql_query($sql,$conn);
	if($row=mssql_fetch_assoc($rs)){
		$content=$row['content'];
	}
	$content=substr(strip_tags($content),0,500);
	return $content;
}

$top=($page +1)*$pagesize ;
 $sql="SELECT top $pagesize * from (SELECT top $top [id],[title] ,convert(varchar(30),[updatetime],120) as [updatetime] ,[keyword],[picture] FROM [news] "; $sql = $sql.$sql_where." order by updatetime desc) as bb order by updatetime asc";
$rs=mssql_query($sql,$conn) or die($sql);
$data=array();
while($row=mssql_fetch_assoc($rs)){
	$row=$row+array(
		'content' => get_content($row['id'])
		);

	$data[]=$row;
}
$data=array_reverse($data);

关于流氓

http://comment.tech.163.com/tech_bbs/78JBAHK5000915BF.html
最新跟贴 (跟贴6条 有6人参与)

网易网友网易网友 ip:*.*.*.* 2011-07-10 11:19:53 发表

网易广东省深圳市网友(112.95.*.*)的原贴: 1

TABLE(Tencent、Alibaba、Baidu、Leijun、Zhouhongyi)
求解 zhouhongyi? 是谁

网易北京市网友 [姜义铮]: 2

就是那个流氓360

如果你网龄超过6年的话,应该知道有个叫“3721上网助手”的软件,几乎就是是“流氓软件”这个概念的代名词,就是现在360老板的作品。昔日的流氓换了身衣服、戴了个领章,称自己是公共保安。

--------------------------------------

如果你网龄超过6年的话,应该知道有个叫“3721上网助手”的软件,几乎就是是“流氓软件”这个概念的代名词,就是现在360老板的作品。昔日的流氓换了身衣服、戴了个领章,称自己是公共保安。

不引用外部图片文件,实现往网页html里插入图片

看这是一张图片,但并没有文件引用任何外部图片文件而是直接写在html里的base64代码!

形式大致如下

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnoAAAHfCAIAAABI8eKbAAAgAElEQVR4nOydd3wTR/r/1+buUn65S7+7XL6XS3I50i+FJHQwSYAkdEyH0EMgGEwH021sg42pNsWYZooLxr1X2ZYsd8tW79XqXe5F3t8faxRFWq3WnXDzvN4vv1azz8w8M7szH83uag3R

今天实然发现的,windows下prt src 抓屏,直接在wordpress后台编辑器里ctrl+v粘贴即可。