Pulpcode

捕获,搅碎,拼接,吞咽

0%

Tab

上大学的时候,我就一直疑惑这个制表符有什么用?
但是我当时怕被人鄙视,所有一直没敢问别人。
后来我发现,不仅仅是我,我的一些同学也在不知道。(因为确实不是那个年代的人)

这是早期人们在“绘制”无边框表格的时候必备的东西,
那时候只有纯字符文本,所以表格只能使用文本列对齐的方式实现。

一般的编辑器都可以设置tab键的长度(默认是8个空格长)。
当你输入一个单词后(比如apple 5个字符),按下制表符,那么光标会自动跳到第8个光标位置(相对于行首),和单词长度加起来刚好能被8整除,然后你就可以输入第二个单词了。
这样一行一行下去,每一行都已8个字符长度为单位进行列对齐。

apple    pear    banana    orange
dogdog    catcat    rabbit    monkey

而且,即使你在apple的后面输入一个字符s,也不会影响到这一行的其它字符的位置。
这就是制表符本来的作用。

之后渐渐这个键有了别的作用,比如用它来控制缩进,或者作为补全文本的快捷键。

当然作为缩进,使用空白符还是制表符,这就是一场漫无边际的争吵。

作为python这门语言来说,官方建议是使用空格,因为不同的人设置不同的tab键长度,这样看上去很难看。
所以有的人会将自己的编辑器配置为 “当按下制表符时,自动输入4个空格“。

最近经常要生成一些分析数据,这些数据看上去就像是文本表格。

     apple  pear banana      orange
 dog   cat  rabbit  monkey
   sky moon      grubby     tod

但是这些数据没有对齐,对于我这样的强迫症很是受不了。

所以我用python写了如下代码:

阅读全文 »

开始

之前的项目有这样一个需求,“在会议室申请时需要判断新的申请时间段是否与已存在的会议室申请时间段冲突”

这个问题的本质就是判断两个区间是否有交集
当然这里的区间与常见的编程区间不同,编程中讨论的区间是这样的:[begin, end)
而我要判断的是两个时间段是否冲突,所以我这里指的区间是闭区间:[begin, end]

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool CollisionRange(Range this, Range other)
{
if(this.begin <= other.begin && other.begin <= this.end)
{
return true;
}

if(this.begin <= other.end && other.end <= this.end
{
return true;
}

return false;
}
阅读全文 »

早些年在初学html的时候,经常用类C的注释语法来注释html代码,比如/**///
当然这些都是不能通过的,正确的方式只能是:

<!-- This is a comment -->

然而html不是不能包含这些类C的注释,你可以在html的源码中,那些直接内嵌css和javascript的地方看见这些注释。
之所以html不支持这种写法,是因为DOM(对象文档模型)的原因。 html必须符合DOM的要求,由节点来构成一棵Dom树。
它的节点都是<x>这样的元素构成的,只不过有的节点内部不会在包含其它元素,比如<hr>,而有的节点是要包含其它节点的。比如<a> ... </a>

即使是注释,也要符合DOM的要求,所以html代码的注释只能是这个样子了:

<!-- This is a comment -->

好吧,我其实也不知道自己为什么要写这么一篇Blog。有的时候我都怀疑自己是不是处女座的。虽然我不信星座这种东西,同时我也觉得星座也就能用来骗骗妹子。
可是每每当自己在写 if语句 和看到一些同事写的 很糟糕的if语句 时,我就忍不住去想:怎样写才好?

目录

if … if 和 if … else if … else if … else

这其实并不是写法的问题,其实我发现真的有人会把该用 if ... else if ... else if ... else 的地方写成 if ... if。表面上看起来没问题,其实他们确实是误打误撞,当出错的时候原因是什么都不知道。

首先请看下面两段代码:

阅读全文 »

没有什么比给变量命名更头痛的。类名,成员变量,全剧变量,函数还好。但是那些只用一次的变量给它们命名简直令人头痛。
同时那些a1,a2,aa,bb, 的命名方式又是很欠打的。其实对于这种只用一次的变量,真的需要一个好的方式来为他们命名。

我记得王垠大神曾经写过一篇blog,叫“解决问题和消灭问题”,而消灭问题明显要比解决问题更加的”上档次”。
如果说给临时变量一个好的命名算是处理问题,那么什么才算是消灭问题呢?我觉得就是大多数临时变量就没必要命名
等你明白我的这句话,就会发现你命名的好坏,表示你会不会用临时变量,而这临时变量又和你的代码结构,代码的简练程度息息相关

阅读全文 »