[CSS]水平垂直居中的几种方式

前言

好久不写CSS和HTML了,今天想着总结一下水平垂直居中定位的几种方式。

绝对定位

1
2
3
4
5
6
7
8
.center_part{
margin: auto;
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
}

Flex布局

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#box1{
display: flex;
flex-flow: row nowrap;
justify-content: center;/*水平居中*/
align-items:center;/*垂直居中*/
width: 200px;
height: 200px;
background-color: red;
}

#box2{
width: 50px;
height: 50px;
background-color: yellow;
}

追女孩套路

我来说一下我是怎么追姑娘,手把手教你追女孩。

首先来说,追姑娘最重要的必要条件,是什么?

匹配!

也就是说你追的姑娘,综合条件下来,你们应该是一个level的,你是矮穷搓,就别想着白富美了。癞蛤蟆不要想吃天鹅肉了。

古话说的好:鱼找鱼,虾找虾,乌龟找王八。

认同这个逻辑后,我们继续说怎么追?

分为四个阶段:

路人阶段
朋友阶段
知己阶段
暧昧阶段

这四个阶段最为重要的原则:DHV,高价值展示,贯穿整个追妹子的主线!

DHV,泡学里面来的,但是我认为仅仅为了骗炮是令人可耻的,单纯为了追妹子谈恋爱,还是得用点技巧的,因为我不用技巧,我连展示真诚的机会都没有啊!!

路人阶段
前提,你俩加了微信,确认妹子是个单身

(大街上搭讪成功加微信的,我见的真不多。万一人家男票在,不打死你啊)

这个阶段,最重要的也是最简单,那就是做好自我形象建设!哪个女的希望自己男人邋里邋遢的呀?

男生,把衣服,袜子,全部去洗干净了,而且买衣服的时候,不要贪便宜,因为质感很重要,在这个阶段,你要给妹子留下的外在印象一定要好,否则的话,后期要想掰扯回来太难了!

如果不会打扮收拾,叫上个妹子,拉出去吃饭,让她帮你选几件衣服,遵循质感第一,价格第二的考虑原则。

这点做好以后,朋友圈里面发的东西很重要!

男生朋友圈怎么发?

1.自己做点酸奶,蛋糕,面包,红烧肉等等(生活价值)

2.养养花,养养鱼(情趣价值)

3.健身房自拍(外貌价值,这个最容易和妹子打开话题!)

4.没事了多去咖啡馆拍一点高达上的图片(社交价值,哪怕你从知乎扒图)

5.隐秘的发一点关于财富方面的(财富价值,记住,不可多发,而且要不经意的显示财富,1个月撑死发一条,千万别天天发)

看出来没,妹子找男人无非这几个条件:高帅壮,有情趣,有品味,有财富。(你要长个鲜肉脸,就更好啦)

有人会说:我长的不帅怎么办?大哥,你可能不知道,男性最大的好处就在于有补偿机制啊。

我长的不帅,可是我身材好啊,我长的不高,可是我可爱啊,我身材不好,可是我有钱啊!!

但是对于女人来说,年龄和长相,一旦处于劣势,怎么找补都找补不回来,甚至成为扣分项(没有物化女人的意思,事实整个社会确实认同这一点,我相信中国以后的男女单身会越来越多的)

比如学历,身高,收入等等。

这一阶段注意,你高价值展示差不多了,目的就一个,吸引女性!

没事了给姑娘朋友圈点个赞,姑娘要对你有兴趣了,你就朋友圈客气的回复一下,不要没事就去私聊,这个时候,高傲点,别一上来就跪舔,毛用没有,而且在女生心中形象极易倒塌。

朋友阶段
这个时候,妹子对你朋友圈有所赞同,你和妹子互动多起来的时候,恭喜你,你已经进入了朋友阶段。

这个阶段主要目的在于,不断的去加强你们俩的交流关系,也就是说聊天在这一阶段太重要了!

我知道好多人死到这一步了,如果你都不知道如何与妹子打开话题,我建议你直接相亲。

中国男性每次聊天的方式真的太令人尴尬了。

微信开头第一句:在吗?干嘛?忙着吗?到了?睡了?醒了吗?

大哥,你这一句话,给我一个男的怎么回答:无非就是告诉你结果。造成的结果就是尬聊啊。

大家都挺忙的,开头问这么一句,真的浪费我时间啊,何况一个妹子!

你就直接有事说事,不要拖泥带水的!

姑娘在这一阶段,都回礼貌性的回复你,回复完了之后,有人又纠结了,怎么回?

就一个方法:状态加感受。

男:我看你朋友圈发的,迪士尼玩的蛮开心的,体验怎么样?

女:还行吧,就是人有点多

男:人多是好事啊,热闹(状态+感受)

女:热闹什么呀,挤死了。。。(妹子肯定balabala发牢骚,这是女性特征,我还真没见过姑娘不发牢骚的,这个时候你就要抓住关键词继续谈感受,我就不说了,不会了知乎上找)

这一阶段就是有事没事的朋友圈点个赞,评论2句,趁着她发朋友圈,多展开话题,为你们dating打好基础。

有人说:我实在找不出话题,怎么办?

我来告诉你万能话题:减肥!(屡试不爽)

为什么?因为妹子普遍都瘦,吃成韩红那样的真的少见(黑一把韩红~~),她们减肥要比男生难多了!所以你可以说你减了多少斤多少斤,妹子一定会给你朋友圈点赞的,或者朋友圈问你的,你就直接私聊。

这个阶段也是最久的最墨迹的,在这个阶段,一定不要暴露自己的需求感,别有事没事就给姑娘献殷勤,她不主动,你不主动,这一阶段保持尊严很重要。

没事了和大家一起出来吃个饭,采摘,密室逃脱等等,千万别单独约啊,除非你确定妹子对你有好感!

知己阶段
这个阶段要开始单约了,就是你们聊的差不多了,妹子也不讨厌你,还给你说她的事情,没事还和你开玩笑什么的。

妹子要是主动找你倾诉,聊天,你就默默的当个垃圾桶,谈感受。在这个阶段你要做的一件事就是当一个垃圾桶,不要过早暴漏需求!

妹子找你无非就几个话题,工作,胖等等,妹子骂某人的时候,你的做法不是给妹子提供解决方案,而是帮她一起骂啊!!!有些妹子向你倾诉,骂领导,结果你特么回复一句:存在即合理。

艹,下面怎么回??

无非妹子觉得,没意思呀。。。。

这个阶段,你可以尝试性的单约妹子出来,具体怎么单约,我告诉你,在这一阶段,多发一些咖啡馆,高达上的西餐厅(地方最好是不好找的,你要是去万达广场,星巴克之类的,等于白发了。。。。)妹子对这玩意都感兴趣,妹子要是问你了,你就单独聊,聊的过程中,妹子肯定说不知道啊,不清楚啊,这个时候你就可以说:要不这样吧,哪天我还要去吃,我到时候带你去。这个时候你要注意,绿茶婊就极容易在这个阶段现行了。

妹子肯定要说:好的。然后你这不就有机会了吗?提前3天约,不要当天约,妹子不洗头啊,不洗脸啊。。。

约的方式:打电话。

因为电话意味着要迅速给出答案!减少拒绝你的机会!让她思考时间变短,万一妹子答应了呢?

微信,QQ,短信嘛。这个思考时间可长可短,意味着本来你邀约,结果妹子把主动权全拿走了。

拒绝你的机会就大大增加了。

妹子答应你了,则OK,提前约的时候,妹子要说:我这周有事啊。。去不了了。

你的回复就是:好的,有机会再去吧。

这个时候你的方法就一个:等+继续高价值展示+回到上一个步奏。

来回重复三次以上,姑娘要都说有事,你就一个方法:不追了。

为啥这么说:

要么你还不值得妹子推掉其他事情来单独和你dating,也就是说,在妹子的心中,感觉一般,不讨厌罢了

要么你追的姑娘是个绿茶婊,她发现你的需求感了,然后要和你玩推拉。

相信我:要是妹子对你有好感的话,一定会给你留下话把的。

我第一次约我女朋友出来的喝咖啡的时候,我是当天打电话约的,这个看时机了,毕竟提前约比较有礼貌,为什么我要当天约?因为我知道她今天早上不准备出门呀(你问我怎么知道的,笨,看微信运动,11点要是妹子的步数还不超过5步,恭喜你,妹子还没起床呢)!

结果妹子在电话里说:今天不行呀,我要出来XXXX。明天行不行?我当时心里面乐开了花呀。。。哈哈。

两次约会:

(一定考虑好,妹子和你去吃饭,你要有主见,点完主菜,征询妹子意见,让妹子点2个菜就可以了,不要一上来就让妹子点,妹子天然纠结的,还有就是别傻呵呵的每次都是真去吃饭了,吃饭的过程中一定要给下一次约出来留下话把啊,借东西,学习,美食,书屋什么的。)

第一次单独dating:

喝咖啡,给你们单独了解的机会,妹子压力不会大的,而且你一定在聊天过程中要给下一次约会留下话把,而且要尊重妹子!不要毛手毛脚的,什么搭肩啊,之类的,但是一定要无意识的碰到妹子手或者胳膊,省的妹子说你揩油!这点要记不住,活该你单身,喝完咖啡,也不要亲自送回家,目送上车就行了,估计个差不多,微信问问到家没,继续聊一聊)

第二次单独dating:

吃日料、自助,看电影也OK,看妹子喜欢吃什么,别吃火锅啥的,除非妹子主动提出来,别拿什么团购卷,要是妹子主动说这家有团购,你就按照团购来,要不说啥,你就按照能力范围内点就OK了,这一次dating,说明姑娘对你有好感的,否则怎么愿意出来呢?

你要做的就是把帐结了,还要去送妹子送到家,还有过马路,坐电梯,上车啥的,别毛手毛脚,拉妹子手。为啥这么说,因为男性的错觉感特别强烈,总有一种她喜欢我的感觉。

相信我:妹子对你有好感的话,而且真心喜欢你的话,你拉手没啥问题,妹子要是不舒服啥的,即使你强制拉住手了,妹子也会送你四个字:负分滚粗。下次可约不出来了。。。

我为啥不主张第二次dating拉手呢?

你要知道手是妹子最具有防范性的地方,暴漏出来的东西,肯定严加看护的。

这一阶段,如果说妹子对你有好感的话,你而且不主动拉手,我告诉你,妹子心里比你着急!!

所以大大方方的就行。

这一阶段就是知己阶段,你们要是吃饭的过程中,妹子想方设法想结账(比如你帮她忙了),你就让她结账吧,这样的话,就有下一次约出来的理由了啊,而且你要记住,追姑娘的时候,要想方设法让她投入,而不是你投入!尤其是感情和金钱!

暧昧阶段
我想说的是,这一阶段一定擦亮眼睛,不然容易被发好人卡的。。。

也就是说,这个阶段你该升级关系,结果你还扭扭捏捏的,妹子就会觉得可能不喜欢我吧,这就尴尬了。基本上你们在一起的概率也没了。

所以,暧昧阶段,妹子肯定知道你对他有意思,其实妹子第一次和你出来dating,就是想了解一下,第二次还愿意出来,那就是有好感了。

第三次约会,这一次约会,你做的事儿就是升级两性关系。

我说的两性关系不是说你要带妹子开房,而是牵手。

看电影+吃饭,这一次你要准备的就是一束花或者小礼物,要是正好过节,那就太好了,花+礼物。礼物怎么选,别选什么泰迪熊之类的大玩具,还有香水这种比较贵重的。

一束玫瑰(别选红玫瑰了,大街上的花店里面,红玫瑰真的太难看了,也别选菊花….送菊花是怎么事,菊花痒了?)

礼物(建议选择口红,为啥这么说,这玩意因为送不错呀,你就买爆款,杨树林迪奥香奈儿阿玛尼的热门款,尤其显白色的,最好包个包装,妹子要是不喜欢,她可以转手卖了的)

首先要做的就是去接妹子,为啥这么说要去接妹子?展示真诚!

你要是约妹子出来,提前打电话的时候就告诉她,我去接你,妹子肯定一百个欢喜呀,不好拒绝。因为你约她的时候,至少1周时间吧,然后她既然答应你了,就说明哪天肯定没别的事儿要干了,毕竟第三次约会了,妹子肯定要打扮的漂漂亮亮的去和你dating。(要真出现妹子说早上有事的情况,也没事,都第三次了,直接拿着花和礼物去电影院或者约会地方就OK了)

你就拿着花和礼物去她楼下,送花这种事儿,其实就是为了满足虚荣心的,花本身不重要,体验很重要,妹子一下楼,发现你带了一束花,超出预期了。

你就说:我看这花蛮漂亮的,就买了送给你。

要是过节的话,理由就更自然了,今天过情人节/圣诞节,挺漂亮的,买一束花送给你。

妹子肯定要接过花的,你打量一下她,问:好看吗?

妹子肯定会说:好看!(即使你选的有些丑,妹子对你有好感的话,心中窃喜,毕竟你有那份心嘛,也会尴尬的说好看的)

你就补充到:可是再好看也没你好看啊。

这个时候妹子要么害羞要么哈哈一乐。

你就说:这样吧,我等你,你把花送上去?还是你今天要一直拿着?

这时候妹子绝大多数是要送上去的,毕竟拿着不方便,而且碰到熟人,妹子也会有些害羞的,当然不送也没关系的。

然后等她下来,直接伸手到她面前,说:走看电影去!

一定要大大方方的,不要扭捏,自信一点!!!

妹子刚拿了你的花(拿人手短啊),而且你还那么撩了一下,完全超出预期了,心里的小鹿早乱撞了。

十有八九会主动把手放你手心的。但是妹子要是不放也没事,笑一笑就行啦,千万别问妹子为什么?

拉手这基本上就是定了,你可以晚上适当送礼物的时候表白了(表白的时候要是还不答应,哥们,恭喜你获得一个称号:备胎)。

要是没拉手的话,看电影吃饭的过程中不要强行拉手,就正常吃饭就行,吃完饭,送完礼物,送回家。晚上回去微信告诉她,到家了,然后说:今晚因为有你的陪伴,所以显得更加弥足珍贵,是我在XX(城市)最幸福的时光。

妹子回答的要是简单干脆或者是个表情包,你就不要回了。要是说的多,就继续撩,撩到高潮时候,主动离场!

接下来一周,你要做的一件事,就是干等!!!

冷落她,朋友圈也不要去点赞!你要让她自己感觉到,我对你是诚心的,你没拉我的手,我生气了,也许你就回失去我这个朋友了。

1.要是妹子翻过头找你,你就说最近忙,没时间,哪天一起出来吃饭啊。继续进行上面的操作。

2.要是妹子比你还有耐心,你就主动找她,原因也说,最近忙,没时间,哪天一起出来吃饭啊。继续进行上面的操作。

重复上述1/2操作2遍以后,发现妹子还是不答应。

这个时候,你就应该明白,她不喜欢你,只是想你对她好罢了。

你就彻底断了联系,追寻下一个目标吧。

总结:
很多人说:你不猛烈的追,还是因为不那么喜欢罢了。

我想说的是:爱情是平等的,做为一个男人,我可以走九十九步,但最后一步,我希望,她走。

更换SSL证书

前期准备

以前使用的是Cloudflare SSL证书,但是这货有个毛病,中国国内无CDN,所有IP都会解析到CF公司的CDN节点,导致访问速度非常慢,XX之后,速度蛮快的。
但是我的博客就是写给中文用户看的,所以找了一下免费的SSL证书,更换为Let’s Encrypt SSL证书了。

  • Let’s Encrypt SSL证书
  • Coding Pages服务(免费哦)

更换原因

  • Coding国内访问速度快
  • 小绿锁hin好看
  • CF的SSL证书生效速度慢
  • 装逼

感想

其实当初想加https的时候,就是为了小绿锁,很好看,而且有逼格,按照网上搜索的guide一步一步来做的,花了很多时间,但是真的感觉很好看啊。。。。
哇咔咔。

没事了就看看《蜗居》

每当我不开心或者不高兴或者颓废的时候,我就会去看看《蜗居》。
一部都快过了7年的电视剧了,现在还是很喜欢,同时代的还有《亮剑》《暗算》《武林外传》等等…..
书读百遍其义自见,我觉得不仅仅是书,Everything is the same。

之前看的时候应该是在大学时代,尚未进入社会,只是凭借着自己的道德标准来判断是非。这次看后,
感觉这部剧非常现实的将人性的弱点毫不掩饰的暴露在阳光下。

早年我和我爸妈说道,以后我靠自己买房子,不靠你们,到真正去买房子的时候,发现自己收入根本赶不上房价上涨的速度,
这和郭海萍,苏淳到处买房子一样,不过现在来看,那时候上海的房价可真是便宜。

其实这就是现实。现实到郭海萍为了买房子可以逼着公公婆婆去拿钱,苏淳借了高利贷,郭海藻为了帮助姐姐去找宋思明。
我觉得苏淳有一句话说的挺现实:

四万是你妈,六万是咱妈,要是没钱,那就是他妈的。

海萍为了家有错误吗,如果真的势力,为钱,不可能嫁给苏淳这样一个人,但是你也可以看到,一个城市是看人的。

这个城市能容忍你享受了这个城市的资源,必定要向你获取一些你没有的属性。

这些属性包括,自然属性和社会属性。

自然属性:长相,身高,身体情况,性能力等等

社会属性:钱,地位,权力等等

自然属性早期就可以看出来(除了胖子),颜值高、身材好的大学生毕业去公司上班了绝大多数还是颜值高、身材好。
相对于自然属性来说,社会属性的人早期较难看出来。学生时代的骄子毕业后也许混得差,学生时代不起眼的人毕业后也许一跃成为全班首富。

如果一个人一辈子都特别看重自然属性而不是社会属性,那么他上中学时就可以找到他要的那一类异性。譬如说中学爱美女、大学爱美女、上班后还是爱美女。

如果一个人看重社会属性,那就麻烦一点,如果不考虑富二代官二代的话,请问你能看出谁在未来能够飞黄腾达?你是看不出来的。

就像相亲的时候说:没感觉就是丑,不合适就是穷一样

人类都有一个特点——在生命很早期被父母保护的时候比较忽视权、钱的重要性,在轮到自己独立的时候才开始体会到权、钱的重点性。

很麻烦的是,人类几千年以来,当女性体会到钱、权重要性的时候,她往往希望她的男友乃至丈夫在这方面不要太差。

对于看这部电视的未婚(甚至未恋)女观众乃至有未成年女儿的男观众而言,这部电视给人的启示是————就是女人要尽早建立牢固的金钱观。爱钱不可耻,爱男人的钱也不可耻,最恐怖的事情就是人生早期很重自然属性但是后来很重视社会属性而且因为这个转变见异思迁(抛弃穷帅哥而另找更有钱的),这样的女人最容易被男人挞伐,前任穷男友可能指责其拜金,后任富男友若知道真相也会很不愉快的。

不靠男人最好。如果要靠,早点想清楚这一点,越早越好。

但是,如果一个特别年轻的女生想清楚了这个道理,除了富二代官二代之外,她根本搞不清楚自己班上哪个男同学未来能发家致富。所以,女生可以适当晚一点谈恋爱。恋爱太早,很容易陷入我说的人生早期很看重男人自然属性,后来很看重男人社会属性的那一套。

还有人说女孩要富养,其实所谓女孩富养的观点太肤浅了。“女孩要富养”的精神内核是要让小孩子(尤其是女生)正确认识“钱”这个玩意的意义,以及如何获取钱(靠自己还是靠男人还是两者皆靠)。如果很爱钱,获得钱的过程中能不能稍微理智、体面一点,把对自己与他人的伤害降到最低。

如果是女生,在她中学阶段,就可以跟她探讨男朋友乃至老公赚钱能力不行怎么办。怎么体面的规避这个问题带给自己或他人的伤害。

人都需要金钱观的教育,小女生尤其需要。

作为男的,我觉得这幅图大赞。

d7c69145e89ec45ded637e9d44ffc3de_b.jpg

Hexo安装RSS订阅功能

一、安装RSS插件

执行以下命令安装 RSS 插件
npm install hexo-generator-feed --save

二、开启网站 RSS 支持

编辑网站根目录下的 _config.yml,添加以下代码开启

1
2
3
4
5
6
7
plugin:
- hexo-generator-feed
# Feed Atom
feed:
type: atom
path: atom.xml
limit: 20

三、主题开启 RSS 支持

主题不同开启方法不同,我的是 NexT 主题,默认就可以;其他主题请参考主题说明。

四、生成 RSS

执行 hexo clean && hexo g重新生成博客文件完成部署即可。

Markdown里表格用法

因为Hexo对于markdown的兼容性不是特别好,有时候你按照markdown语法写完之后,发现居然不好使。。。。
关于表格,找了好多方法,不好使,今天才知道,必须要有空格才可以开始写表格的!!!

Tips:注意下面代码中第二行的冒号的位置

1
2
3
4
5
| 显示1 | 显示2 | 显示3 |
|:-----|:---:|----------:|
|左对齐| **居中** |右对齐|
|左对齐| **居中** |右对齐|
|左对齐| **居中** |右对齐|
显示1 显示2 显示3
左对齐 居中 右对齐
左对齐 居中 右对齐
左对齐 居中 右对齐
显示1 显示2 显示3
左对齐 居中 右对齐
左对齐 居中 右对齐
左对齐 居中 右对齐

多说评论实现和UA样式分享

更新:多说已挂,没有用了。

倒腾了一晚上,各种更改,基本上也是OK了!

JS代码
先本地化embed.js,这个我就不赘述了,然后在embed的头部贴入以下代码
注意以下的

e.user_id == ‘123456’

//*123456改为自己的多说ID

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
function sskadmin(e) {
var ssk = '';
if(e.user_id == '123456' ){
ssk = ' sskadmin '
}
return ssk;
}

//UA detect start
function ua(e) {
var r = new Array;
var outputer = '';
if (r = e.match(/MSIE\s([^\s|;]+)/gi)) {
outputer = '<span class="ua_ie">Internet Explorer ' + r[0].replace('MSIE', '')
} else if (r = e.match(/Edge\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_ie">Mcirosoft Edge ' + r1[1]
} else if (r = e.match(/FireFox\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_firefox">Mozilla Firefox ' + r1[1]
} else if (r = e.match(/Maxthon([\d]*)\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_maxthon">傲游浏览器 ' + r1[1]
} else if (r = e.match(/UBrowser([\d]*)\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_ucweb">UC浏览器 ' + r1[1]
} else if (r = e.match(/MetaSr/ig)) {
outputer = '<span class="ua_sogou">搜狗高速浏览器'
} else if (r = e.match(/MicroMessenger\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_qq">WeChat ' + r1[1]
} else if (r = e.match(/QQBrowser\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_qq">QQ浏览器 ' + r1[1]
} else if (r = e.match(/QQ\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_qq">手机QQ ' + r1[1]
} else if (r = e.match(/MiuiBrowser\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_mi">MIUI浏览器 ' + r1[1]
} else if (r = e.match(/Chrome([\d]*)\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_chrome">Google Chrome ' + r1[1]
} else if (r = e.match(/safari\/([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_apple">Apple Safari ' + r1[1]
} else if (r = e.match(/Opera[\s|\/]([^\s]+)/ig)) {
var r1 = r[0].split("/");
outputer = '<span class="ua_opera">Opera Browser ' + r1[1]
} else if (r = e.match(/Trident\/7.0/gi)) {
outputer = '<span class="ua_ie">Internet Explorer 11 '
} else if (r = e.match(/weibo__([^\s]+)/ig)) {
var r1 = r[0].split("__");
outputer = '<span class="ua_qq">新浪微博 ' + r1[1]
} else if (r = e.match(/LBBROWSER/ig)) {
outputer = '<span class="ua_lbbrowser">猎豹安全浏览器'
}else {
outputer = '<span class="ua_other">Unknown Browser'
}
return outputer+"</span> ";
}
function os(e) {
var r = new Array;
var os = '';
if (e.match(/Windows/ig)) {
if (e.match(/NT 5.1/ig)) {
os = '<span class="os_xp">Windows XP'
} else if (e.match(/NT 6.1/ig)) {
os = '<span class="os_7">Windows 7'
} else if (e.match(/NT 6.2/ig)) {
os = '<span class="os_8">Windows 8'
} else if (e.match(/NT 6.3/ig)) {
os = '<span class="os_8_1">Windows 8.1'
} else if (e.match(/NT 10.0/ig)) {
os = '<span class="os_8_1">Windows 10'
} else if (e.match(/NT 6.0/ig)) {
os = '<span class="os_vista">Windows Vista'
} else if (e.match(/NT 5/ig)) {
os = '<span class="os_2000">Windows 2000'
} else if (r = e.match(/Phone OS ([^\s]+)/ig)) {
//WP7-7.5
os = '<span class="os_windows">Windows ' + r[0].split(';')[0]
} else if (r = e.match(/Phone ([^\s]+)/ig)) {
//WP8+
os = '<span class="os_windows">Windows ' + r[0].split(';')[0]
} else {
os = '<span class="os_windows">Windows OS'
}
} else if (r = e.match(/android ([^\s]+)/ig)) {
os = '<span class="os_android">' + r[0].split(';')[0]
} else if (r = e.match(/iPhone OS ([^\s]+)/ig)) {
os = '<span class="os_ios">' + r[0].replace('iPhone OS', 'iOS').replace('_', '.').replace('_', '.') + '<span class="os_ios">for iPhone'
} else if (r = e.match(/CPU OS ([^\s]+)/ig)) {
os = '<span class="os_ios">' + r[0].replace('CPU OS', 'iOS').replace('_', '.').replace('_', '.') + '<span class="os_ios">for iPad'
} else if (e.match(/ubuntu/ig)) {
os = '<span class="os_ubuntu">Ubuntu '
} else if (e.match(/linux/ig)) {
os = '<span class="os_linux">Linux '
} else if (r = e.match(/Mac OS X ([^\s]+)/ig)) {
os = '<span class="os_mac">' + r[0].split(')')[0].replace('_','.').replace('_', '.')
} else if (e.match(/unix/ig)) {
os = '<span class="os_unix">Unix '
} else if (e.match(/symbian/ig)) {
os = '<span class="os_nokia">Symbian'
} else if (e.match(/meego/ig)) {
os = '<span class="os_nokia">MeeGo'
} else {
os = '<span class="os_other">Unknown OS '
}
return os+"</span>" ;
}

以下是CSS样式,也是从别人那里copy过来稍微改了一下,自己反正蛮喜欢的~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/*多说UA开始*/
span.ua{
margin: 0 1px!important;
color:#FFFFFF!important;
/*text-transform: Capitalize!important;
float: right!important;
line-height: 18px!important;*/
}
.ua_ie{
background-color: #428bca!important;
border-color: #357ebd!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_firefox{
background-color: #f0ad4e!important;
border-color: #eea236!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_maxthon{
background-color: #7373B9!important;
border-color: #7373B9!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_ucweb{
background-color: #FF740F!important;
border-color: #d43f3a!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_sogou{
background-color: #78ACE9!important;
border-color: #4cae4c!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_2345explorer{
background-color: #2478B8!important;
border-color: #4cae4c!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_2345chrome{
background-color: #F9D024!important;
border-color: #4cae4c!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_mi{
background-color: #FF4A00!important;
border-color: #4cae4c!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_lbbrowser{
background-color: #FC9D2E!important;
border-color: #4cae4c!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_chrome{
background-color: #EE6252!important;
border-color: #4cae4c!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_qq{
background-color: #3D88A8!important;
border-color: #4cae4c!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_apple{
background-color: #E95620!important;
border-color: #4cae4c!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_opera{
background-color: #d9534f!important;
border-color: #d43f3a!important;
border-radius: 4px;
padding: 0 5px!important;
}
.ua_other{
background-color: #8B8B7A!important;
border-color: #01B171!important;
border-radius: 4px;
padding: 0 5px!important;
}

.os_vista,.os_2000,.os_windows,.os_xp,.os_7,.os_8,.os_8_1 {
background-color: #39b3d7!important;
border-color: #46b8da!important;
border-radius: 4px;
padding: 0 5px!important;
}

.os_android {
background-color: #98C13D!important;
border-color: #01B171!important;
border-radius: 4px;
padding: 0 5px!important;
}
.os_ubuntu{
background-color: #DD4814!important;
border-color: #01B171!important;
border-radius: 4px;
padding: 0 5px!important;
}
.os_linux {
background-color: #3A3A3A!important;
border-color: #1F1F1F!important;
border-radius: 4px;
padding: 0 5px!important;
}
.os_mac{
background-color: #666666!important;
border-color: #1F1F1F!important;
border-radius: 4px;
padding: 0 5px!important;
}
.os_ios{
background-color: #D1D1D1!important;
color:#000000!important;
border-color: #1F1F1F!important;
border-radius: 4px;
padding: 0 5px!important;
}
.os_unix{
background-color: #006600!important;
border-color: #1F1F1F!important;
border-radius: 4px;
padding: 0 5px!important;
}
.os_nokia{
background-color: #014485!important;
border-color: #1F1F1F!important;
border-radius: 4px;
padding: 0 5px!important;
}
.os_other{
background-color: #8B8B7A!important;
border-color: #01B171!important;
border-radius: 4px;
padding: 0 5px!important;
}
.sskadmin{
background-color: #D4D4D4!important;
color:#000000!important;
border-radius: 4px;
padding: 0 5px!important;
}
/*多说UA结束*/

Github Pages+ Hexo 搭建博客


一、 前言

这是一篇使用GitHub Pages和Hexo搭建免费独立博客的总结。

作为一个前端小白,虽说是个码农,但是一开始照着网上的各种教程去搭建的时候,还是云里雾里的。记得几个月前刚接触GitHub(哈哈,对大四来说确实有点晚),对版本控制几乎一点概念都没有,更别说使用GitHub Page能做出一个好看又好用的博客了。所以第一次的尝试失败了。

后来的两三个月里,开始逐渐地把日常的学习都迁移到GitHub上进行,慢慢熟悉了Git的版本控制。

我所总结的是单纯地利用GitHub Pages搭建自己独立博客的过程,并没有额外使用独立域名之类的(谁让我穷 o(^▽^)o )。

如果是小小白,可以先花时间去了解下:

二、 必要配置

2.1 GitHub Pages 仓库

2.1.1 创建对应仓库

在自己的GitHub账号下创建一个新的仓库,命名为username.github.io(username是你的账号名)。

在这里,要知道,GitHub Pages有两种类型:User/Organization Pages 和 Project Pages,而我所使用的是User Pages。

简单来说,User Pages 与 Project Pages的区别是:

  1. User Pages 是用来展示用户的,而 Project Pages 是用来展示项目的。
  2. 用于存放 User Pages 的仓库必须使用username.github.io的命名规则,而 Project Pages 则没有特殊的要求。
  3. User Pages 将使用仓库的 master 分支,而 Project Pages 将使用 gh-pages 分支。
  4. User Pages 通过 http(s)://username.github.io 进行访问,而 Projects Pages通过 http(s)://username.github.io/projectname 进行访问。

2.1.2 相关资料

2.2 Git

2.2.1 安装 Git

在windows下安装git比较常用的有两种方式:

  1. Git 官方版本的安装
  2. GitHub for Windows

2.2.2 配置 Git

当安装完Git应该做的第一件事情就是设置用户名称和邮件地址。这样做很重要,因为每一个Git的提交都会使用这些信息,并且它会写入你的每一次提交中,不可更改:

1
2
$ git config --global user.name "username"
$ git config --global user.email "username@example.com"

对于user.email,因为在GitHub的commits信息上是可见的,所以如果你不想让人知道你的email,可以Keeping your email address private:

  1. 在GitHub右上方点击你的头像,选择”Settings”;
  2. 在右边的”Personal settings”侧边栏选择”Emails”;
  3. 选择”Keep my email address private”。

这样,你就可以使用如下格式的email进行配置:

1
$ git config --global user.email "username@users.noreply.github.com"

2.2.3 相关资料

2.3 Git 与 GitHub

2.3.1 git与github的区别

这里,我们要区分清楚git与github。

git是一个版本控制的工具,而github有点类似于远程仓库,用于存放用git管理的各种项目。

2.3.2 与github建立联系

为了能够在本地使用git管理github上的项目,需要进行一些配置,这里介绍SSH的方法。

2.3.2.1 检查电脑是否已经有SSH keys。
1
2
$ ls -al ~/.ssh
# Lists the files in your .ssh directory, if they exist

默认情况下,public keys的文件名是以下的格式之一:id_dsa.pub、id_ecdsa.pub、id_ed25519.pub、id_rsa.pub。因此,如果列出的文件有public和private钥匙对(例如id_ras.pub和id_rsa),证明已存在SSH keys。

2.3.2.2 如果没有SSH key,则生成新的SSH key。
1
2
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label

之后一路回车即可。

2.3.2.3 向ssh-agent添加key。

首先确保ssh-agent可运行:

1
2
# start the ssh-agent in the background
$ ssh-agent -s

然后添加SSH key:

1
$ ssh-add ~/.ssh/id_rsa
2.3.2.4 在GitHub添加SSH key。

首先,拷贝key:

1
2
clip < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your cllipboard

然后,在GitHub右上方点击头像,选择”Settings”,在右边的”Personal settings”侧边栏选择”SSH Keys”。接着粘贴key,点击”Add key”按钮。最后,测试链接:

1
2
$ ssh -T git@github.com
# Attempts to ssh to GitHub

如果你看到:

1
2
3
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

就键入:yes。之后将会看到如下信息:

1
2
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

2.3.3 相关资料

2.4 Hexo

2.4.1 安装Hexo

安装Hexo相当简单。在安装之前,必须检查电脑中是否已经安装下列应用程序:

  • Node.js
  • Git
    如果您的电脑中已经安装上述必备程序,那么恭喜您!接下来只需要使用 npm 即可完成 Hexo 的安装。
    1
    $ npm install -g hexo-cli

2.4.2 使用Hexo建站

安装完后,在你喜欢的文件夹内(例如D:\Hexo),点击鼠标右键选择Git bash,输入以下指令:

1
$ hexo init

该命令会在目标文件夹内建立网站所需要的所有文件。接下来是安装依赖包:

1
$ npm install

这样,我们就已经搭建起本地的Hexo博客了。可以先执行以下命令(在对应文件夹下),然后再浏览器输入localhost:4000查看。

1
2
$ hexo generate
$ hexo server

这个博客只是本地的,别人是浏览不了的,之后需要部署到GitHub上。

2.4.3 相关资料

三、一般的搭建方法

在上面,我们已经配置好了所需的所有东西,也成功地搭建了一个本地Hexo博客。现在,需要使用GitHub Pages搭建一个别人能够访问的Hexo博客了。

3.1 使用默认theme

我们继续使用上面的文件夹D:\Hexo(也可以新建一个文件夹重新生成),然后编辑该文件夹下的_config.yml。

默认生成的_config.yml:

1
2
3
4
# Deployment
### Docs: http://hexo.io/docs/deployment.html
deploy:
type:

修改后的_config.yml:

1
2
3
4
deploy:
type: git
repo: 对应仓库的SSH地址(可以在GitHub对应的仓库中复制)
branch: 分支(User Pages为master,Project Pages为gh-pages)

为了能够使Hexo部署到GitHub上,需要安装一个插件:

1
$ npm install hexo-deployer-git --save

然后,执行下列指令即可完成部署:

1
2
$ hexo generate
$ hexo deploy

之后,可以通过在浏览器键入:username.github.io进行浏览,开心吧~

3.2 其他theme

如果想要使用其他主题,可以使用git clone将别人的主题拷贝到D:\Hexo\themes下,然后将_config.yml中的theme: landscape改为对应的主题名字。

详细步骤可以参考网上的指南。

四、 优化部署与管理

4.1 概述

Hexo部署到GitHub上的文件,是.md(你的博文)转化之后的.html(静态网页)。因此,当你重装电脑或者想在不同电脑上修改博客时,就不可能了(除非你自己写html o(^▽^)o )。

其实,Hexo生成的网站文件中有.gitignore文件,因此它的本意也是想我们将Hexo生成的网站文件存放到GitHub上进行管理的(而不是用U盘或者云备份啦(╬▔皿▔)凸)。这样,不仅解决了上述的问题,还可以通过git的版本控制追踪你的博文的修改过程,是极赞的。

但是,如果每一个GitHub Pages都需要创建一个额外的仓库来存放Hexo网站文件,我感觉很麻烦(10个项目需要20个仓库(ˉ▽ˉ;)…)。

所以,我利用了分支!!!

简单地说,每个想建立GitHub Pages的仓库,起码有两个分支,一个用来存放Hexo网站的文件,一个用来发布网站。

下面以我的博客作为例子详细地讲述。

4.2 我的博客搭建流程

  1. 创建仓库,jetyu.github.io;
  2. 创建两个分支:master 与 hexo;
  3. 设置hexo为默认分支(因为我们只需要手动管理这个分支上的Hexo网站文件);
  4. 使用git clone git@github.com:jetyu/jetyu.github.io.git拷贝仓库;
  5. 在本地jetyu.github.io文件夹下通过Git bash依次执行npm install hexo、hexo init、npm install 和 npm install hexo-deployer-git(此时当前分支应显示为hexo);
  6. 修改_config.yml中的deploy参数,分支应为master;
  7. 依次执行git add .、git commit -m “…”、git push origin hexo提交网站相关的文件;
  8. 执行hexo generate -d生成网站并部署到GitHub上。

这样一来,在GitHub上的jetyu.github.io仓库就有两个分支,一个hexo分支用来存放网站的原始文件,一个master分支用来存放生成的静态网页。完美( •̀ ω •́ )y!

4.3 我的博客管理流程

4.3.1 日常修改

在本地对博客进行修改(添加新博文、修改样式等等)后,通过下面的流程进行管理:

  1. 依次执行git add .、git commit -m “…”、git push origin hexo指令将改动推送到GitHub(此时当前分支应为hexo);
  2. 然后才执行hexo generate -d发布网站到master分支上。

虽然两个过程顺序调转一般不会有问题,不过逻辑上这样的顺序是绝对没问题的(例如突然死机要重装了,悲催….的情况,调转顺序就有问题了)。

4.3.2 本地资料丢失

当重装电脑之后,或者想在其他电脑上修改博客,可以使用下列步骤:

  1. 使用git clone git@github.com:jetyu/jetyu.github.io.git拷贝仓库(默认分支为hexo);
  2. 在本地新拷贝的jetyu.github.io文件夹下通过Git bash依次执行下列指令:npm install hexo、npm install、npm install hexo-deployer-git(记得,不需要hexo init这条指令)。

五、结尾

好累 (-.-)=

毕业了

回忆过去的四年。

过些天,答辩完事也就得出来住了,为了提前适应生活,所以事先搬出来了,找房子,买东西,突然才发现,锅碗瓢盆,柴米油盐酱醋茶,这些东西看似很小,其实很啰嗦。做了几天饭,想了很多,那句话说的挺对的,你出了学校,真就再也找不到1200就能住一年的房子了,再也找不到那么便宜又好吃的饭菜了,别说学校饭贵,仔细去别的学校看一看,三期饭真的便宜,尤其炒菜。
用一句话说:毕业这事真的不敢想。
想想当初大一的时候,懵懂啊,无知啊,各种玩,没人管我了,自由了,想着以后自己立足。后来发现,根本不是那么回事,正如张泉灵所说:你选的是你父母喜欢的专业,你选的是容易得学分的课,你又凭什么要求过上自己想要的生活!每个人都想着活着,以前看陈丹青谈中国人的信仰的时候,他说:中国人的信仰就是他妈的活下去,活下去最要紧。其实自己想,不无道理,这是最简单的信仰也是最伟大的信仰。我们吃转基因食品,喝着毒牛奶,用着地沟油,吸着雾霾天,真是同呼吸,共患难,中国人身体内元素周期表里的元素该都有了吧,活下去,真的不容易啊。
大一碰见了很多好老师,陈昊老师,这老师人很nice,我老乡啊。。。哈哈。数学课板书一笔一划写着,很认真,大一快毕业的时候,他说,这是最后一节课了,我也不准备多讲点什么:我就给大家说一下,大学四年过的真的很快,不要想着这才大一,就整天玩儿什么的,多看看书,不一定是专业课的书,游戏少打一点,没多少用,毕竟靠游戏能吃饭的人很少,炮灰很多。花了接近20分钟讲“马太效应”,其实以前听过,但是真的没怎么去深入理解,富人越来越富,穷人越来越穷,这话到底有什么深刻含义,直到他说,不仅适用于经济,更适用于职场等一系列情景,试想:如果同样都是给报社投稿,报社是要作家的稿子呢,还是要你的稿子?一语惊醒梦中人!
再就是大二遇见徐学超老师和郝金彪老师,可以说,影响巨大,先来说说教日语的徐学超老师吧,老师上课很幽默,人很好,绝对严师一枚,对我们很严格,当时我其实不是很喜欢日语,我喜欢学英语,所以准备考试的时候就没怎么关注日语,想着随随便便差不多就可以了吧,后来成绩下来的时候,英语过了,日语没过,这对我打击很大,我知道老师对我抱有很大的期望,让老师失望了,随后还是准备考N2吧,好好复习了一下,最后终于过了,也算没让老师看错我这个人,那天还在B2遇见老师,老师还问我说:还继续学日语吗?我说学啊。老师说那就好,如果说没有老师的当时的鼓励与欣赏,我估计现在连工作都没有,更不要说是去自己选企业了。
再来说说郝金彪老师,这老师一天到晚白大褂一传,搞的我们以为是医学院的。其实老头人很好,敢说真话,实话,这点我觉得对于我们这帮小屁孩来说,绝对受益匪浅,因为这世界上,假的太多了,敢说真话的人太少了。

最后再来说说实习这点事儿吧,好在在IBM遇见了好多人,许宁,小伙伴,人都很好,虽然刚去的时候,让许哥每天说的,你这不对那不对,一天累的跟狗似的,我觉得这才真是帮你的人,许哥,可以说让我学到了很多,受益匪浅,有些东西有些公司的人不一定教你。顺便说一句哈,你在我们第三批入职的里面,大家都一致认为你长的很帅,很有大叔范儿,秋实姐啊杨璐啊很多人背后偷偷叫你:许叔。哈哈。
再就是我的那帮小伙伴和B组的同学们,每天和小伙伴们一块上班下班,吃中午饭,下午饭,一天好的不得了,也没有什么不开心的。记得有一次我犯二了,回去取badge了(怎么2的我就不提了),小伙伴们为了等我,一直没有坐摆渡车,导致后来大家做的班车去的,差点还迟到了,当时特别感动,这件事记忆犹新啊,再就是在QA的时候,有些人说QA屋子那么的冷清,压抑,是啊,一天天神经崩的很紧,能不压抑吗?最逗的是,范志康,这哥们,当时做了一个MINI剃须刀,我到现在想起来都想笑,当然B组的人都很不错,王一涵,高微等一系列我现在想不起来名字的人都帮了我不少忙,虽然不是同一批入职的,但是大家都很好,很和气,simple。
所以当时也就造成了一个现象,我reject率为何那么低的原因(我记得很清楚,只记了三个人)。也不是说我为了还人情,那么做,我不往QA track上面记录,那是因为我觉得大家来都不容易,无论做的有多差或者说是态度有多恶劣的。大家一天累死累活的做那么多,最后改了还让QA给记上去,给谁谁爽啊。所以我能改的就改了,最后call你一下,下次别犯错。听说三星那个项目组,QA丝毫不手软,现在想想是不是我当时多记一点,心里落差就不会这么大了。
再就是小组里面的人,李月,江南,文静,小丽姐,人都很好,其实大家B组里面最应该感谢的就是这些人啊,我当时让他们说有些人就QA别记了,他们帮了我不少忙,当然也帮了你们不少忙。好几次我task没做完,原因在于我就是自己改,我知道大家都忙,李月最后还帮我Q了不少东西,你是个好人呢啊,月姐。
其实,小伙伴们我发现找工作其实并不难,难的是找一份适合自己的,无论现在,是否拿得到offer那么,觉得就像我妈所说的,找工作和爱情是一样的。该来的时候,缘分来了自然会来的。所以有时候看淡一点可能会有更大的惊喜吧!