正式从Typecho转向WordPress

2018停了一年没更,之前一直用得好好的廉价VPS也在2018年频繁更换域名,不安定的感觉越来越强烈。再加上VPS也要到期了,用来作图床的七牛想绑定个域名又要备案啥的,干脆一不做二不休就抛弃掉VPS了。

不再使用廉价VPS就不需要考虑Blog应用大小的问题了,这可是我当初决定选用Typecho的一大理由。加之Typecho也已经有一段较长的时间没进行更新了,而从插件方面来说社区力量还是比较薄弱的。于是也就让人自然而然的回到了Wordpress的怀抱中。

当然,我还是挺喜欢Typecho的。

接下来就是要稍微整理下之前的文章、图片了吧,看看还能不能找回之前散落在各大图床的图片。😂

RecyclerView 滚动定位至目标 Item 并对齐顶部

关于使用LinearLayoutManager的RecyclerView需要滚动定位到指定Item,基于之前对ListView的使用,我们很容易就从RecyclerView中找到这样的方法。

scrollToPosition(int position)

smoothScrollToPosition(int position)

但是使用过的同学都会发现它存在着这么一个问题:当你要定位的Item已经完全显示时,RecyclerView并不会产生滚动行为;当你要定位的Item并不完全显示或在显示区域以外时,RecyclerView虽然会产生滚动行为,但是只要Item完全显示后滚动行为就会停止,即Item有可能会在RecyclerView显示区域的顶部,也有可能在显示区域的底部。

这样一来,面对“需要滚动定位到Item时,Item对齐到顶部”的需求,就很尴尬了。 😯

这尴尬事刚好我前几天就碰上了,在网上一搜发现很多文章介绍的方法都是想方设法地计算目标Item离当前位置的距离,用上了scrollBy(int x, int y)smoothScrollBy(int dx, int dy),还要监听下滚动事件作最后的修正处理什么的。

我也确实按这些个方法试了下,最终效果不佳,尤其是我的每一个Item的高度是不固定的,甚至会出现Item高度大于RecyclerView高度的情况,也就是RecyclerView的显示区不能完全展示这个Item。所以还是自己动手丰衣足食啊~~ :mrgreen: Demo扔在最后~~ 继续阅读“RecyclerView 滚动定位至目标 Item 并对齐顶部”

[Typecho插件] Smilies 1.1.0

Smilies 1.1.0

  • 在后台编辑文章或独立页面时,编辑页面右侧增加表情贴图;
  • 前端展示文章或独立页面时,解析表情贴图;
  • 修复插件配置页的交互Bug。

Smilies这个插件原本是给原生的评论系统增加表情贴图功能之用的,在我使用Typecho的时候拿到的是羽中的Smilies 1.0.7版本。这个新版的Smilies插件在Typecho 1.0上也能运行,所以刚一拿到的时候我就立马给换上了Hangouts的表情,用了起来。

因为用着不错,所以我也给Babycong的博客用上了这个插件……

然后,随之而来的就是Babycong对表情功能更进一步的需求——在文章里发表情!哈哈,不想码字的懒人啊,这就是所谓的「字数不够,表情来凑」。 ➡

正因为有这个需求,所以在羽中的Smilies 1.0.7 上进行个性化的修改了。 😆

在后台的文章/独立页面的编辑页右侧选项中加入表情选择器。后台编辑页面

在前端的文章/独立页面中,对文章内容进行表情解析。前端展示页面

Bento——近距接触,想放就放

开篇当然是要感谢一下「笔戈玩」给我这个试用的机会啦!这是我第一次在笔戈玩上进行的试用申请,也很荣幸第一次就获得了试用名额。下面就闲话少说,直奔主题吧~

Bento——近距接触,想放就放

Bento是Oaxis出品的一款近距离接触式音箱,形如其名——「Bento」,像一个饭盒一样,有方有圆,外表简单干练。目前Bento有黑白两款,我拿到的是黑色版的,但我想白色版的视觉效果应该会更胜一筹。

在笔戈玩上初见Bento的时候,我脑海里勾勒出的场景是Bento静静地躺在我的床头柜上,早上起来或在晚上睡前可以轻松随意的打开手机音乐,往Bento上轻轻一放,美妙的音乐悠然响起~

Bento

当然了,幻想和现实是不一样的,Bento一到的时候我就迫不及待地开箱、充电、上手机,声音一放出来,跟想象的不一样啊!相比手机外放,音乐细节与层次会有丢失,声音相对浑浊且低音不足,而且手机的外放不能过低,出现断续的情况偏多。

在看了下其他网友的试用评测后,发现大家都是多赞少弹,我也感到挺奇怪的。后来经过更长一段时间的使用,我真两只木耳也渐渐感觉出了点什么……

Bento

我听得歌基本上都是经典的粤语歌,属于八九十年代的粤语流行金曲基本上都是咬字清晰、节奏舒缓、音乐有起有伏。而对于这种时而轻声细语时而激情高歌的歌曲,对于Bento的接触式音频技术来说就有点难以捕捉了,导致手机外放音量不大的情况下出现频繁断续的情况。

而对于我手头上的魅蓝Note来说,Bento的托盘显得有点小。由于手机喇叭基本要放置在托盘上标志的音频接触点附近,近距离接触式播放的效果才最好。所以想魅蓝Note这种外放喇叭设置在设备底部而不是设备背部的播放设备来说,接触式播放的效果也是有所下降的。

Bento

当然啦,我在这里并不是只弹不赞,只是Bento并不太适合我所喜欢听的音乐罢了。但是从总体来说,Bento还是一件很不错的产品,虽然近距离接触式播放的声音还原度还是有所欠缺,但是随放随播的特性还是很方便很有意思的。可惜的是我拿到的这台Bento在音频线播放上有点问题,没有办法通过音频线播放音乐~这算是一个小小的遗憾吧~

人生是奔波的

看上去博客好像断更了有一段时间了,其实中间有文章在写的,只是前段时间工作比较紧张,一直都没有写完,所以文章就一直停留在草稿阶段没有发布出来。

今天倒是突然有感,小更一下吧!

「人生是奔波的」,为什么这样说,其实也是毕业后开始工作了才感悟出来的。因为上班的路途算是比较遥远,一大早出门上班,晚上到家吃个饭就可以洗洗睡了,也能算是早出晚归了吧,所以工作日的时候感觉在为生活而奔波着;休息日就那么两天一个周末,平日里除了工作就没干过别的事了,总要玩一下、娱乐一下吧,于是休息日就在为娱乐、消遣而奔波。

回头一看,其实所有的时间,7X24小时,基本都是在不断地奔波着~

[Typecho插件] GravatarServer : 瞎鼓捣的Gravatar头像插件

GravatarServer 1.1.0 更新(2015/05/03):

  • 增加默认头像设置功能

其实一直以来都没有很care评论中Gravatar头像经常显示不出来这个问题,因为……

到现在为止都木有人在这里留下过评论~so sad ~既然木有评论,看也看不到,那就这样过吧……

但是BabyCong的博客不一样啊,至少我经常踩啊!看着评论前面,头像的位置打着X,顿时又有点不爽了……

Gravatar头像叉叉图

想想还是上网找解决办法吧(我真懒~~)。上网转了一圈(我真的很懒,转多几圈都没心思),发现与Typecho相关的资源不多啊,最后发现其实也就两种方法——缓存和替换Gravatar服务器。

对于我等穷X,空间何其珍贵,缓存?咔嚓!(有现成的插件都不敢用,哭~)

只能替换Gravatar服务器了。Typecho 1.0版默认用的是www.gravatar.com ,上网搜了一下,发现可以替换的服务器还真不少啊——cn.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com、3.gravatar.com还有多说的Gravatar镜像( gravatar.duoshuo.com )。马上测试一下,起码cn、3、和多说都是OK的,0、1、2不行,少说也有3个备选,不错不错,哈哈~

但是,尼玛居然没有现成的插件给我用!摔~摔~~摔~~~

虽然我不大懂PHP,对于Typecho而言我也只是个使用者而已,但是换个url string毕竟是没有技术含量的事,没有现成插件也不好做伸手党啊,看来还是自己动手吧!

直接动Typecho /var目录里的东西真心不好,虽然方便,但毕竟要考虑到以后的升级。顺便吐槽下——怎么Typecho还是1.0啊啊啊~
还是做成插件吧,刚好Widget_Abstract_Comments有gravatar这个接口,做完试试也还好使,就放出来吧。完全没有技术含量,代码都是照搬了/var/Widget/Abstract/Comments.php中的gravatar()和/var/Typecho/Common.php中的gravatarUrl()。

Gravatar头像棒棒哒

第一次,工作上的「断·舍·离」

其实,听说“断·舍·离”已经有好长的一段时间了,但是一直都只停留在字面上的了解而已。直到前几个月开始,因为工作的事略有点烦心,在书城闲逛的时候想起来了,便买了本书打算好好拜读拜读,看看能不能对自己的情绪整理提供点帮助。

这一路看下来,倒是有不少收获,我也思考了好些个问题——“这份工作是不是真的适合我?”、“这份工作是不是我想要的?”、“我真正想要的工作到底是怎样的?”……

其实这些问题从前并不是没有想过,但是在步入社会工作了半年之后再来想这些问题,又有了更深层的思考。刚刚毕业的我们总是希望能遵从着自己的专业去找一份好工作,总不愿说一毕业就把自己花费4年(或更多时间)所学的专业知识舍弃掉。但是往往事与愿违,很多人因为各种原因无法从事专业对口的工作,我很幸运,一毕业就从事与专业对口的工作,但不幸的是我却渐渐发现它并不是我想要的。

「断」——因为在进行充分的考虑后,我觉得这份工作并不适合我,我有着自己更为向往的事业。所以我选择“断”。
「舍」——一份稳定的工作,虽然收入不高,发展空间也不大,但是因为“稳定”,所以总能让人有“坚持”的想法。但我还是选择“舍”。
「离」——犹犹豫豫只会让行动变得拖沓,最终让自己坐立不安无所适从,所以要当机立断,拿出破釜沉舟的勇气,我要“离”。

Excel中引用其他工作薄的数据

在统计工作中,往往需要从其他Excel工作薄中引用部分需要的数据,在当前工作薄中进行统计操作。

那么如何在当前工作薄中引用其他工作薄中的数据呢?这个问题,我今天也遇到了,于是决定把方法记录一下。


公式:=[XXX.xls]Sheet1!A1
描述:=[被引用工作薄文件名]被引用工作表!被引用数据所在单元格
前提:XXX.xls文件在打开的情况下,该引用公式才能引用到对应数据。


如果希望引用多个工作薄中的数据,可以对这些工作薄进行简单的批量重命名,例如重命名为"1 (1).xls"、"1 (2).xls"、"1 (3).xls"……

公式:=INDIRECT("[1 ("&A1&").xls]Sheet1!B1")
解析:使用了INDIRECT函数,如A1的值为“1”,则返回"[1 (1).xls]Sheet1!B1"。倘若A列从A1=1向下递增,则使用该公式时通过下拉可以实现对"1 (1).xls"、"1 (2).xls"、"1 (3).xls"等工作簿Sheet1工作表中B1单元格数值的批量引用。


当需要对未打开的Excel工作薄中的数据进行引用时则需要在公式中[被引用工作薄文件名]前加上文件的绝对路径。即:
公式:=X:/workspace/[XXX.xls]Sheet1!A1

九连环

小学的时候,出于好奇,在书城买了个“九连环”。说明书中只有一开始的寥寥十步,刚到手看完说明书就迫不及待地开始折腾了。记得当时是一边跟着爸妈逛街一边把玩,貌似经历了两个多小时,回到家里之后才解开。当时的感觉——好复杂的玩意啊!

玩到初中,虽不能说炉火纯青,但也已经轻车熟路,解个九连环也就十来二十分钟,当然了,和世界纪录比还是有很大差距的。当时的感觉——我真是心灵手巧啊~这九连环原来基本不用动脑啊~

正因为“基本不用动脑”的这个感觉,所以初中之后这个九连环就在家中尘封了,高中时候玩的魔方,感觉比九连环难多了,渐渐地我也开始淡忘了“九连环”这个玩物……

直到昨天,BabyCong来我家提起了他们小学的校本课程里有“九连环”的相关课程,一下子又勾起了我的回忆。遂又找出了昔日的九连环,好好地把玩了一番,顺便给BabyCong讲解了一通,这一来有多了不少以往所没有的感悟,于是便来这里记下。

九连环


先来说说九连环

九连环,是源于中国的传统益智玩具,用九个圆环相连成串,以解开为胜。据说它的发源地是山西,起源自西汉。西汉才女,辞赋家司马相如之妻卓文君,在写给司马相如的《怨郎诗》中就曾提及九连环:

……,七弦琴无心弹,八行书无可传,九连环从中折断,十里长亭望眼欲穿,百思想,千怀念,万般无奈把郎怨。……

但能确认就是九连环的记载是明代杨慎的《丹铅总录》,并不早于欧洲。


解九连环

九连环,每个圆环上都连着一根直杆,除最后一环的直杆外每根直杆都从后一环内穿过,以此形成环环连环相扣的样式,除此以外各直杆底部还穿过同一个剑框。长剑实为一个长环,每一环都套在长剑上,而每一环的直杆都穿过长剑。

九连环

九连环的最外环,也就是位于长剑剑尖的一环为第一环,第一环可以随意装卸。往后每一环的装卸都有1个前提:除前一环为装上状态外,前一环之前的圆环必须为卸下的状态。例如,想对第5环进行装卸,则前提是第4环已装上,第1、2、3环已卸下。


解九连环有感

说实话,解九连环其实并不费脑力,只是繁琐而已,所以在初中认识到这一点后就没有再玩九连环了。时隔多年,昨天再解九连环,反倒有了一些感悟……

  1. “不积跬步无以至千里”
    九连环的操作只有简单的两步——“装”和“卸”。
  2. “任何大目标都可以细分成一个个小目标”
    要想卸第5环,需留第4环,卸第1、2、3环;要想卸第3环,需留第2环,卸第1环;要想卸第2环,需留第1环。
  3. “迷惘之时应该静下来想一想,当初为何出发”
    越解到后面的圆环,繁琐的装卸步骤越容易让你忘记下一步要干什么,想想大目标再从中细分出小目标即可。
  4. “做事要有耐心,切不能半途而废”
    解九连环,步骤繁琐多重复。
  5. “做事情要一步步来,不要妄想一步登天”
    每一环的装卸都需满足前一环已装上,且前一环之前的圆环都需先依次卸下,一个不留。

九连环与格雷码

这是后来在维基百科上查“九连环”时才了解到——

格雷码(循环二进制单位距离码)是任意两个相邻数的代码只有一位二进制数不同的编码,它与奇偶校验码同属可靠性编码。
格雷码(Gray code)是由贝尔实验室的Frank Gray在1940年提出,用于在PCM(脉冲编码调变)方法传送讯号时防止出错,并于1953年三月十七日取得美国专利。格雷码是一个数列集合,相邻两数间只有一个位元改变,为无权数码,且格雷码的顺序不是唯一的。

查“九连环”之所以能引申出“格雷码”,是因为九连环背后的数学结构和格雷码的编码结构完全相同,下面就由我(假装很NB的样子)来说一说吧~

九连环,每次操作只有简单的两种选择——“装”和“卸”。
格雷码,任意两个相邻数的代码只有一位二进制数不同的编码。

把九连环中各个圆环的状态用二进制的“0”和“1”表示,“0”为卸下,“1”为装上。每一次操作后,九个圆环的状态都可以用一个九位的二进制数表示当前九连环的状态,其中第N位表示第N环的状态。例如,000000000表示9个环皆已卸下;111111111表示9个环皆已装上;000110111表示第6、5、3、2、1环已装上,其余已卸下。

下面从000000000开始,可以用格雷码表示九连环从完全卸下到装上的步骤过程,同时列出标准二进制数:

|步骤|格雷码|二进制|
|:—–:|:——–:|:——-:|
|0|000000000|000000000|
|1|000000001|000000001|
|2|000000011|000000010|
|3|000000010|000000011|
|4|000000110|000000100|
|5|000000111|000000101|
|6|000000101|000000110|
|7|000000100|000000111|
|8|000001100|000001000|
|9|000001101|000001001|
|10|000001111|000001010|
|11|000001110|000001011|
|12|000001010|000001100|
|13|000001011|000001101|
|14|000001001|000001110|
|15|000001000|000001111|
|16|000011000|000010000|
|•|•|•|
|•|•|•|
|•|•|•|
|338|111111011|101010010|
|339|111111010|101010011|
|340|111111110|101010100|
|341|111111111|101010101|

由上可见,共341步可把九连环装上,过程可逆,也就是解九连环共需341步,且仅有一种方法。


附上转换方法(十进制和二进制之间的转换太简单我就不说了):

二进制转格雷码:

二进制数ABCDEFGHI=>格雷码(0+A)(A+B)(B+C)(C+D)(D+E)(E+F)(F+G)(G+H)(H+I),遵循“1+1=0,0+0=0,1+0=1,0+1=1”。

格雷码转二进制:

格雷码ABCDEFGHI=>二进制数abcdefghi,二进制高位补零成0abcdefghi,遵循“1-1=0,0-0=0,1-0=1,0-1=1”。
a=0-A
b=a-B
c=b-C
d=c-D
e=d-E
f=e-F
g=f-G
h=g-H
i=h-I