猫窝私语 — Makumo's Blog

玛酷猫的温馨小窝,记录生活点点滴滴。

@玛酷猫12年前

08/16
18:21
项目管理

版本控制与版本号

头几年的工作也都没考虑过版本控制,一方面是和工作条件有关,那时候公司小,架构简单,开发也就1、2个人,交叉部分很少,自己做自己的就好了,另一方面自身也并没有版本控制的概念,直到09年。

那时候技术人员也将近10人,交叉工作比较多,尤其是程序人员和设计人员经常发生文件覆盖事件(那时候项目还没三层化,都混在一起),当时就想寻找一种解决方案才慢慢知道版本控制,于是便向当时领导提出应用版本控制,减少避免此类现象再次发生。虽然当时领导认同这一看法,但却没有实施,一方面可能是版本控制器没人会配置,当时并没有多余的设备用来架设,另一方面现有人员习惯了目前的开发方式,认为版本控制影响效率,版本控制推行难度比较大,最后也就不了了之,多注意多检查罢了。

PS:那是常常想当时可能不是部门负责人,没有资源推动实施,等自己做了负责人之后才发现,并不是成为领导就一定能推得动,新的思想、方法,部门绝大部分人尤其是老员工不支持甚至抵制,实施难度还是很大的。

时间到了今年年初,部门老人走了不少,新人又都比较支持的条件下,才上了版本控制器,也仅仅作为开发使用,一旦开发完毕上线后进入维护阶段,版本控制器也就不再使用,直接在运行的项目上直接修改。安全隐患也是蛮大的。不过自己离开原来单位有段时间了,现在使用状况也不得知。

说道版本控制自然也要牵扯到版本号。对于版本号都不陌生,IE6\7\8\9,office2000\2003\2007等等。这些只是简单的命名方式,常规命名方式主要有三种,以下引用百度百科:

1、 GNU 风格的版本号命名格式
主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]]
英文对照 : Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]
示例 : 1.2.1,2.0,5.0.0 build-13124
2、 Windows 风格的版本号命名格式
主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]]
英文对照 : Major_Version_Number.Minor_Version_Number[Revision_Number[.Build_Number]]
示例: 1.21,2.0
3、.Net Framework 风格的版本号命名格式
主版本号.子版本号[.编译版本号[.修正版本号]]
英文对照: Major_Version_Number.Minor_Version_Number[.Build_Number[.Revision_Number]]

其实大同小异的了,借用原来的网站项目,可以把每次改版作为主版本号,板块的修改和功能的添加作为子版本号,每次的小BUG修改作为修正版本号,最后一项可以用版本控制软件累加的那个计数。版本号最关键的并不是怎么命名上面,而是每次版本变动的版本文档,里面会清楚的记录每个版本添加了什么功能,取消那些设置,修正了那些bug等等。当你向别人介绍产品的时候可以很清楚的说明这个项目经历多少次更新,原来有些什么功能,现在扩展了哪些功能。别人也能了解到你这个项目的发展情况。而这个正是我们现在缺乏的地方,随便抓个人出来连最基本的所有功能都说不全,就甭提其他的了。

其实版本控制并不是仅仅是上一个软件,大家都在用这么简单的事情,它也是一种迭代开发流程和思想,同时也是文档建设的基础。在每次同步版本控制软件的时候,都会有提示添加说明,其实在这里就应该把这次源文件做的哪些变动填写好,便于自己以后查找,同时也便于团队其他成员熟悉,最后也汇成版本文档。

下一篇集中写下开发流程和文档建设。

版本控制与版本号

@玛酷猫12年前

04/28
01:28
心情点滴 计算机

windows2003更换为windows7各种坑爹事件

家里的台式机自从09年买来后就没重装过系统,(当年买来时候的传送门)2003一直跑了3年,总感觉越来越慢,打个游戏经常掉帧,打魔兽世界效果中高下个本就只有20多帧,显卡驱动换了好几次都不行,玩起来真难受。机子里面装的软件游戏也不少,一大堆,还有不少都不清楚是什么软件,估计当初也就用了一次。决定重装下系统。后来一想装2003不如装7试试,说不定效果还好些。我的笔记本用的是windows7,双核1.2+HD3200的集显带魔兽世界都刚刚的,效果低+野外。

电脑配置如下:AMD7750,4G内存,迪兰4830显卡,技嘉770主板,3块硬盘。

先是备份数据了,桌面上东西还是蛮多的,还有收藏夹、C盘各种地方。幸好之前我的文档是放在别的盘符上面。然后清理了一下装过的程序,不认识的和基本用不到的,该卸的卸,该删的删。之后就调分区大小,我笔记本上C盘30G的空间现在只剩下3G多了,台式电脑C盘才20G,推荐下“分区助手”这个小软件,不到2M,有绿色版,简单明了,还是很好用的,地址就不贴了,百度下就行了。

先试下升级,毕竟能升级是最好了,很多软件、游戏都不用重装了。把光盘插入光驱,运行安装,一步一步,选升级,第一个坑爹事情出现了,提示不支持从2003升级到7,我擦。

虽说已经料到可能没法升级,没想到果然这么不给力,就是没法升。那简单,冲光盘启动,一步一步来好了。重启,启动菜单选光驱,进入安装界面,一步一步,选自定义安装,选盘符,提示有系统。小意思,选更多选项,格式化干掉你。再重复,选盘符,这时坑爹的事情再次发生,系统提示:无法创建分区或者选取该分区(大概这个意思)。我顿时就斯巴达了。

想想以前都是用U盘装的WIN7,PE系统里面带一个windows7的安装工具,也没这些问题。不过U盘丢在办公室了,家里还真没能用的U盘,在一番翻箱倒柜之后,翻到了一张256的SD卡。这个还是当年玩GBASP的时候烧录卡用的。怀着侥幸心理那这张卡做了一个U盘启动PE(幸好还有笔记本,要不真要出去买张带PE的XP盘了)。话说以前用SD卡/TF卡做了好几次U盘启动,都没成功过,不是不认识就是卡死。漫长的等待()这张卡速度真慢。。)做好后插到电脑上面,重启,启动菜单USB-HDD。屏幕上熟悉的load XXXXXX兴奋了半天。不过这张卡也真够慢的,进PE进了半天。

进去就好说了,运行windows安装工具,加载镜像,选好盘,下一步,预装,重启。正准备用笔记本刷会微博呢,台式机屏幕上没出现微软图标,倒是一行小字:OS load error 。这不坑爹吗。搜索了下,貌似应该是找不到引导分区,这个简单。重新进PE,用硬盘工具把引导干掉,重新新建引导,PE一个小软件修复引导,这个软件居然提示我检测到安装引导类型为windows xp/2003,吐血呀。。。按照windows7强行重建,显示发现6.X系统,然后直接重建失败。。。。

后来想了想会不会是挂了3块硬盘的原因,有点混乱。于是把另外两块拔掉,重新有走了一遍安装流程,这下终于顺利进系统了,关机,插上两块硬盘,一切OK,重新整理下盘符顺序。然后就是装驱动、常规软件、恢复游戏注册表(不少游戏都是硬盘版的,自带都有注册表工具),这个工作估计还要弄个1-2天,慢慢来吧。困了,睡觉。。。

话说刚装好系统的时候开机那个叫速度呀,估计也就20+秒,关机5秒不到。等都弄好以后试试游戏有没有什么改进,哈哈。。。

windows2003更换为windows7各种坑爹事件

@玛酷猫12年前

04/25
20:35
计算机

也说垃圾评论

网络营销看来是遍布互联网的边边角角,就我这个小博客,每天也就是10来个访问量,一周下来也有近百个垃圾评论,话说很早就想吐槽这个了。现在连微薄现在都讲究高级僵尸粉了,这帮网络广告公司还在搞这种低级的机器人群发,WP就不用说了,akismet插件那是异常强大,其他的微博评论管理功能肯定也强大的要命,更不用说像新浪搜狐那些门户的微博了。国内互联网环境这种恶劣情况下,搞不好哪天就因为一篇评论关站的大环境下,各种过滤保护措施层出不穷,这种单纯的广告机发出去的评论最后能显现出来的近似于0,一旦被屏蔽,基本会进入黑名单,更别说像新浪那种大型的博客系统。

话说回来,也要说说机器人,回帖机的效率确实高,而且还能记录账号信息,识别验证码,在论坛上面使用效果也还不错,毕竟论坛为了正常的发帖,并没有非常严格的过滤,还是需要人工审查的。但是在微博上面,效果还是差很多。垃圾评论无外乎是做SEO,增加一些站点的外链,被人点的几率非常低。

针对博客的机器人式的营销推广也需要更换一种方式,论坛那套明显效果很差,可以设置一定量的关键词库和对应的回复内容,针对博文内容分词或者就针对博文设置的关键字,筛选回复一些相关的东西,回复的内容可以完全不出现链接或者推广的关键字,只要在电邮、网址上面体现就好了,效率肯定会大幅度降低很多,但至少通过审查相对来说轻松一下。

也说垃圾评论

@玛酷猫12年前

04/6
11:52
JS&JQUERY

正则表达式中的断言和非捕捉组

前段时间在cnblogs看到一道有意思的题目,传送门地址。题面很简单:将一段数字从右到左每隔三位插入一个逗号 ,也就是通常说的插入千分位符,使用javascript实现,据说是某大公司的面试题。动态语言就没有什么难点了,现成的函数都有。我第一反应也就是把类似字符串倒转原理的操作,只不过不是一位一位,是三位三位,然后用分号连接起来。各式各样的解答和效率测试就不多说了,源地址的博客中都有说明。单单说下其中的一个解答,如下:

var cuter2 = function( str ){//abcd
     return str.replace( /\B(?=(?:\d{3})+$)/g, ',' );
};

看到这个解答很神奇,单单一句正则就搞定,虽然效率一般,在页面大量需要此操作的情况下并不是很适用。老实说正则也写过不少,以前做页面抓取,各式各样的匹配也写过,但是这个正则表达式基本理解不能。幸好手上有正则利器,一个叫“Regex Match Tracer”的小工具(我就不贴下载地址,可自行搜索),可以分解测试正则表达式。去掉/g全局参数和开头的/,正则的结构分解的很清楚,见右图。其中有两个词倒是第一次见,一个是零宽度断言,另一个就是非捕捉组。网上搜索一下,明了很多。

先说非捕捉组,这个很好理解,用法(?:Expression)。非捕捉组主要是整体效率的考虑,因为并不是所有的捕捉组都是我们需要的,有一些为了方便分割,有一些是必须使用捕捉组的形式,往往并不关心捕捉组的具体内容,每一个捕捉组都会消耗一部分内存,当一个很长或者重复很多的时候,这些捕捉组消耗的内存就不是个小数目了。

再说说断言,这个比较难理解,先引用网上搜索到的说明:

元字符/b、^、$都匹配一个位置,且这个位置满足一定的条件。在此,把满足这一个条件称为断言或零宽度断言。

表达式(?=experssion)、(?!experssion)、(?<=experssion)和(?<!experssion)都是匹配一个位置。
(?=experssion)又称为零宽度正预测先行断言,它断言自身位置的后面能够匹配表达式experssion。
(?<=experssion)又称为零宽度正回顾后发断言,它断言自身位置的前面能够匹配表达式experssion。
(?!experssion)又称为负向零宽度断言或者零宽度负预测先行断言,它断言自身位置的后面不能匹配字符串experssion。
(?<!experssion)又称为零宽度负回顾后发断言,它断言自身位置的前面不能匹配字符串experssion。

说明比较绕口,个人理解为一般的正则是匹配字符或者字符串,而断言是匹配符合一定条件的位置,就拿上面那个正则说明(个人理解):\d{3}是三位数字组,(?:\d{3})非捕捉组,(?:\d{3})+贪婪模式,一个或者多个三位数字组合,(?=(?:\d{3})+$)断言,以一个或者多个3位数字组合结尾的那个位置,最后前面的/B是匹配不是在字符的开始或结束位置,防止字符串正好是3的倍数,千分号打在最开头。/g全局模式,因为一次只能将一个位置替换成逗号。其实弄清楚了每一小部分,整个正则还是很好理解的。主要就是能不能想到这个方法。

最后再多说一些,随着javascript的框架应用层出不穷,很多做前端的为了开发效率考虑,直接就使用框架来开发,在这个速成的时代,甚至有些前端只会使用框架写法,基本的javascript都写不出几行出来。这是一个很恐怖的事情,就好比一个学步的人,天天使用代步工具,汽车、飞机、甚至电动轮椅,一旦脱离这些东西,这个人将寸步难行。框架也是同样的原理,不管什么语言的框架,都是为了更高的开发效率,但是框架的实现原理也需要研究弄懂的,大部分框架都是开源的,花些时间研究并不是很困难的事情,一方面可以巩固自身的语言基础用法,最重要的是从架构上理解开发者为什么要这样部署框架结构,框架运行思想,也能从中发现存在的瑕疵或者不适应自身项目的地方,加以完善或者改进调整,同时也能为自身在系统架构认识上面,增加不少的经验。

正则表达式中的断言和非捕捉组

@玛酷猫12年前

03/13
21:31
计算机

u盘产量导致USB设备无法使用解决办法

昨天好不容易把坏掉的黑盘产量修复完毕,结果今天早上一上班就发现USB的鼠标不能用了,灯都不亮。还好用的是笔记本,鼠标出问题了还有触控板。一开始怀疑是USB鼠标坏了,毕竟之前出现过一次接触不良导致鼠标满屏幕乱飞的情况。拔下来插到别人电脑上一切正常。插回来下面红光闪了一下就灭了。重启电脑,鼠标反应正常,下面灯也亮着,一进系统,鼠标灯瞬间灭了。。无语。试了下U盘,一点反应也没有。难道是悲剧的USB接口坏了,不过系统启动前还是好的,重启能使用U盘启动,初步估计系统问题。

系统是win7的,检查了下设备控制器,通用串口总线控制器下面所有的设备都显示黄色感叹号,估计是usb的设备驱动出问题了,把所有的感叹号设备删了,重新扫描硬件变动,问题依旧。。。

于是祭出万能的谷歌,找到了处理办法,虽然说原理不是很清楚:

“开始菜单”-“运行”-输入命令:regedit,打开系统注册表。依次展开下面的注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}(适用于Windows 7系统)
或者
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/(适用于Windows XP系统)
在这下面有很多用“{}”括起来的项,一个一个的点开,看右面窗口有没有“通用串行总线控制器(Universal Serial Bus controllers)”这些文字,在右面窗口找到“upperfilter”项或“lowerfilter”项并删除。

之后重启下问题解决。如果担心删除了,最好先备份下注册表。

u盘产量导致USB设备无法使用解决办法

@玛酷猫12年前

03/12
22:48
计算机

金士顿黑盘特殊芯片修复经历

上个月买的8G金士顿黑盘终于挂掉了,当时买的时候看这做工这价格就知道是黑盘,还从熟人那拿的。本来也不准备放什么重要的数据,就做个系统修复U盘,就一些PE工具和ghost镜像和win7的光盘镜像,所以贪个小便宜。结果没想到坏的这么快。不过坏了到不怕,以前产量过好几个U盘,产量化一下应该就能修复。

症状:U盘文件目录乱码,显示容量扩大了好几倍,无法正常格式化。使用磁盘工具检查容量正常,删除分区,重建分区无法保存分区,提示芯片写保护。

使用u盘芯片检测工具chipgenius,检测U盘信息为:

芯片厂商: Alcor Micro(安国)
芯片型号: SC908L(FC8908L)/AU6998(L/NL)/AU6989(L/NL) – F/W EE37
闪存识别码:  45DEA882 – SanDisk(闪迪) – 1CE/单通道 [TLC-8K] -> 总容量 = 8GB

能检测出U盘型号就简单了,网上找到安国的产量化工具,运行,检测出U盘,SDTNNNAHEM-008G,开始产量化,郁闷的一幕出现了,提示:30D30:请使用特殊版本产量工具!换了其他几个版本的产量工具,要不检测不出来,要不提示芯片类别错误,要不就是上面这个提示。

有互联网在,不怕,继续搜索。终于在数码之家的一个帖子中,有位高手(xumuwu2004)回答了这类问题,原话引用:

“出现这个不良的原因是目前大家所熟知的 都是87的量产工具,插上了89(87升级版主控)主控的产品所提示的现象。flash 技术日新月异,nm制程的更新,导致flash本身对ECC能力的要求提高,所以方案工具也在更新自己的主控来兼容后面新出的flash。目前89做的绝大部分都是TLC芯片(之前是SLC MLC 现在发展是TLC),这个芯片读写速度普遍慢,擦写寿命普遍短。。。我不建议数码发烧友自己用这样的U盘来拷很重要的东西,如果条件允许,可以弄个好点的,碰到这样的U盘,尽可能的找个没人的地方,挖个坑,埋起来,再尿泡尿上面,以免祸害其他朋友,谢谢”

数码之家下载文件需要点数,可怜新注册后点数还是负的。幸好互联网是开放共享的,知道产量工具的名称编号,终于让我搜到了下载源。之后就简单多了,插上U盘,运行产量工具,漫长的等待(果然像上面所说,这个主控读写真的很慢),产量成功,一半的坏块,容量变成4G,这个也比较符合黑盘大部分都是翻倍扩容的U盘。

反正这块U盘也就平时维护电脑、重做系统用,凑合着先用着了、

好东西要大家分享,产量工具115的下载地址:AlcorMP_D3eD3 115貌似没法下载了,更换新浪微盘地址:AlcorMP_D3eD3

金士顿黑盘特殊芯片修复经历

@玛酷猫12年前

03/12
14:12
数据库

mysql定时任务以及乱码处理

前几天接到一个工作需求,在OA中增加一个功能,每天给当天过生日的同事发送一封生日快乐的邮件,并发送站内短信给所有人,提醒今天某某过生日。这个需求不错,很能体现人文关怀,如是乎构思如何实现。

先说下背景情况,OA是完全自行开发的,CI框架,WIMP架构(最初建设的时候由于各种原因,等接手的时候已经是这种别扭的架构)。最一开始准备用windows的任务计划。制作一个单页实现功能,在定时任务里面设置执行一个vbs文件,访问下该文件。内容类似如下

DIM IE
SET IE = CREATEOBJECT("INTERNETEXPLORER.APPLICATION")
IE.NAVIGATE("网址")
IE.VISIBLE=0
SET IE = NOTHING

后来考虑这一系列都是数据路操作,没必要绕一大圈,又写php程序又在windows下面建计划任务,mysql已经支持计划任务。于是乎就准备在mysql里面建一个存储过程一个计划事件搞定它。定时任务需要mysql版本在5.1以上,版本不够的话可以用上面的方式。

MYSQL的存储过程还是第一次写,以前只在MSSQL里面写过存储过程和触发器。不停地查找写法资料才完成如下代码(初次写难免存在问题,欢迎指正),

#这个是最原始版本,实际应用版本做了修改优化#
DROP PROCEDURE IF EXISTS `pro_birth`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_birth`()
BEGIN
	DECLARE t_uid INT;
	DECLARE a_uid INT;
	DECLARE t_username VARCHAR(255);
	DECLARE t_depname VARCHAR(255);
	DECLARE done INT DEFAULT 0;

	DECLARE cur1 CURSOR FOR 当日过生日人员名单SQL;
	DECLARE cur2 CURSOR FOR 全员名单SQL;
	DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

	OPEN cur1;
	REPEAT
	FETCH cur1 INTO t_uid,t_username,t_depname;
	IF NOT done THEN

		#生日邮件
		SET @TEMP_STRING = CONCAT("'<div style=font-size:14px><p>亲爱的",t_username,":</p><p>  祝您生日快乐!</p><p>  感谢您为公司发展付出的辛勤劳动和努力。在您生日到来之际,公司代表全体员工送上衷心的祝福:生日快乐!愿所有的快乐、所有的幸福、所有的温馨、所有的好运都永远围绕在你的身边。</p><p style=text-align:right>",DATE_FORMAT(CURDATE(),'%Y年%m月%d日'),"</p></div>' ");
		SET @MAIL_STRING = "插入邮件表SQL";
		PREPARE mail_stmt FROM @MAIL_STRING;
		EXECUTE mail_stmt;

		#全员站内短信提醒
		OPEN cur2;
		REPEAT
		FETCH cur2 INTO a_uid;
		IF NOT done THEN
			SET @TEMP_STRING = CONCAT("亲爱的伙伴:今天(",DATE_FORMAT(CURDATE(),'%m月%d日'),")是",t_depname," ",t_username,"的生日,快去给TA送祝福吧!");
			SET @PM_STRING = "插入短信表SQL"
			PREPARE pm_stmt FROM @PM_STRING;
			EXECUTE pm_stmt;
		END IF;
		UNTIL done END REPEAT;
		CLOSE cur2;

	END IF;
	UNTIL done END REPEAT;
	CLOSE cur1;
END
;;
DELIMITER ;

本机测试正常,在服务器上创建存储过程的时候却报错。“#1271 – Illegal mix of collations for operation ‘concat’”,谷歌了一下,都说是编码问题导致。检查了下服务器上牵扯到得几个表,用户表、邮件表、短信息表都是utf8的编码。心想是不是存储过程中间的中文导致报错,于是重新改写了下代码,新建一个临时表,将存储过程中的文字存放在库中,读取出来替换掉中间的关键字。代码类似,就不在重复贴了。服务器重新创建存储过程的时候执行成功,但是运行存储过程后,插入邮件表和短信息表的内容还是乱码,中文部分全都是用?代替。看来还是没有解决中文乱码的问题。

多番网上查找后,有位同仁也遇到此类问题,他的表和库都是utf8的编码,同样存储过程运行后中文都是??,这时候我才发现我这服务器上库的编码居然是latin1_swedish_ci,存储过程肯定也是这个编码,虽然表的数据都是utf8的,经过存储过程一弄,就全变??了。解决办法其实也很简单,变量声明的时候定一下编码格式。

DECLARE t_username VARCHAR(255) CHARACTER SET utf8;
DECLARE t_depname VARCHAR(255) CHARACTER SET utf8;

这个也不是彻底的解决办法,最终需要统一库的编码格式。

定时事件就简单多了,新建一个事件,每天凌晨6点运行下就好了。要核对下mysql的系统时间,像我的是+8区就不用调整了,如果默认的话需要对应做个加减。如下

DROP EVENT IF EXISTS `EVENT_BIRTH`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` EVENT `EVENT_BIRTH` ON SCHEDULE EVERY 1 DAY STARTS '2012-03-08 6:00:00' ON COMPLETION NOT PRESERVE ENABLE DO CALL pro_birth()
;;
DELIMITER ;

最后,最关键一点,开启mysql的定时事件。我就是忘开启了,结果等了一天没动静。。。今天的手动执行了下存储过程。

set global event_scheduler = 1

mysql定时任务以及乱码处理

@玛酷猫15年前

12/13
02:32
WordPress 建站日志

小窝顺利更新至wordpress 2.7 正式版

昨天(准确的说是前天,已经过了12点了=。=!)登陆后台发现wordpress 2.7 正式版已经发布了,当时太晚了,也就没来的及更新。刚刚把2.7DOWN了下来,依旧老样子的程序:备份文件,备份数据库,覆盖程序,最后upgrade一下,一切都很顺利,有不少人说2.7版和mg12的主题有些冲突,不过我这是没有遇到过。

一进后台超级不适应,整个后台大换脸,看来还是要有短时间来适应下,不过整体来看还是很漂亮的,使用起来非常舒服,新加入的评论分页还没有机会尝试,毕竟来小窝串门的人还不是很多,以后还是有机会的,其他的新功能在慢慢研究了,已经2点了,明天还要去单位参加培训,休息去喽O(∩_∩)O

小窝顺利更新至wordpress 2.7 正式版

@玛酷猫15年前

11/30
21:51
读书笔记 前端

读书笔记(一)——可以遗忘的HTML标签

长久以来项目网站首页结构一直没有改变,依旧是TABLE结构,随着越做越大,栏目内容越来越多,网站首页也越来越臃肿,访问打开时间也越来越长。趁着年末改版,首页DIV+CSS化也提上日程,虽然这部分工作主要是设计部门处理,不过也借着这个机会好好学一学页面重构方面的知识。最近借阅了本《CSS实战手册(CSS THE MISSING MANUAL)》,还在慢慢阅读中。俗话说:好记性不如烂笔头。把一些好东东记录下来,方便日后查找。这次主要提下一些可以遗忘的HTML标签和一些技巧。 😉

可以遗忘的标签:

<font>标签:这个在自己设计页面是也经常用到,有时候为了某几个字的表现效果,懒得去设置一个新的样式,直接使用<font>标签了,常常一个页面有着许多font,代码看起来有些凌乱,修改起来也不是很方便。

<b>、<i>粗体和斜体标签,这个自己倒是不用,基本在用<strong>,用Dreamweaver设计直接Ctrl+B就OK,斜体自己似乎从做网页也来就没有用过,总感觉字变斜了看起来怪怪的。 :bhan: 做图片的时候到偶尔会用用。

用于网页布局的<table>标签。这个就是自己期望达到的目标:除了显示数据表、图表之外,少或者不用<table>来显示网页结构,这个还需要慢慢来,毕竟是改变一种设计习惯,还需要一定过程

一些展现表现形式的标签属性,类如:color,backgroud,border,一系列调整边距属性,对齐属性等等。如果用过Dreamweaver CS4会发现在元素的设置里面没有了 backgroud 这个填写框了,(家里没装CS4,明天去单位补个图),这些效果的代码代码都很长,使代码变得臃肿的主要原因之一,而且可读性也大幅度下降,其实这些都可以用CSS来定义表现。

不要滥用<br />标签。这块就不是很明白,按书上所写“浏览器自动地——有时令人愤怒地——在段落之间插入空格”,我倒是还没遇到过,先记下来了,或许书中后面、以后工作中会慢慢搞清楚。

一些技巧:

使用<h1>等系列标签来表示标题,使页面层次更分明,更主要的是有助于搜索引擎的收录;
使用无序列表<ul>来显示菜单、一些相关项目;使用有序列表<ol>来显示排名、有顺序的项目;使用<dl><dt><dd>来显示术语表;
使用一些生僻的标签来展示一些特殊的信息,如<cite><address>等等;
注意标签闭合;
使用W3C校验器来校验,能发现一些不容易看出的拼写、不规范等等错误;

暂时先写到这吧,书才刚开始看。以后再慢慢写了 :mrgreen:

PS:读书学习中,难免有一些认识不足或者错误理解,欢迎斧正。

PS2:发现用高亮代码显示来当做<ol>用也挺不错 😀

读书笔记(一)——可以遗忘的HTML标签

@玛酷猫15年前

11/29
23:42
WordPress

wordpress自带标签云设置

总觉得标签云有些怪怪的,感觉使用标签不止这么多,而且最大的字体有些大了。于是乎发动懒猫精神上网搜索了下,这一刻搜索引擎是强大的 😀

在[name]Slyar,http://www.slyar.com/blog/[/name]的blog上看到相关的一篇文章[name]修改WordPress标签云的字体大小以及显示数量,http://www.slyar.com/blog/tag-cloud-font.html[/name]介绍到标签云的一系列参数,顺便也转录过来了:

smallest – Adjusts the size of the smallest tags in the cloud. Default is “8”.
largest – Adjusts the size of the biggest tags in the cloud. Default is “22”.
unit – Sets the unit type for font size (i.e. point or em). Default is “pt”.
number – How many tags will display in the cloud. Default is “45”.
format – “Flat” displays an inline cloud with each term separated by whitespace. “List” generates an unordered list. “Array” lets you define an array of tags. Default is “flat”.
orderby – Sort the cloud by “name” or “count”. Default is “name”.
order – Sort the cloud in ascending or descending order. Default is “ASC”.

把参数值写入wp-includeswidgets.php中的wp_tag_cloud()函数中即可,例如:

wp_tag_cloud('unit=px&smallest=12&largest=20&number=50&orderby=count');

即把标签云设置成最大字体20像素,最小字体12像素,显示数目50,按照使用次数排序

wordpress自带标签云设置