xiaobai050

  • 首页

  • 标签

  • 归档

  • 搜索

在当前目录打开Cygwin的正确姿势

发表于 2019-01-02 阅读次数:

在网上找了一些解决方案,一般都是雷同的方法。对于一些细节并没有兼顾到,比如路径中存在空格的情况,比如根目录与非根目录的路径形式的不同。

改进之后的方案

.bashrc

1
2
3
4
5
6
export _T=${_T//\\//}   # replace backslash to fowardslash
export _T=${_T//\"/} # 如果目录带中文,传入的目录会在首尾加引号,如果无中文则不会加双引号。这里删除首尾双引号,归一处理
if [[ $_T == "" ]]; then
export _T="C:\cygwin64\home\xxx"
fi
cd "$_T"

注册表:HKEY_CLASSES_ROOT\Directory\Background\shell\open in Cygwin\command

1
c:\cygwin64\bin\mintty.exe /bin/env _T="%V/" /bin/bash -l
阅读全文 »

暴力而不失优雅地升级Hexo主题

发表于 2018-11-11 阅读次数:

对hexo页面排版的改动时常需要改主题目录里的文件,但主题也会升级,这意味着用户和主题开发者可能会改动相同的代码,如果不妥善管理代码,需要升级主题时,可能会很不优雅。本文以Next主题为例。

手动升级

面对升级版本之间的改动,一种容易想到的方法是纯手动升级。这里有两个案例

  1. Hexo 主题快速升级办法-知识沉言

    手动保存主题改动过的文件
    如果你在themes/xxx主题文件有自定义的修改,请自行手动备份一下;如果你是大改的话,我也没有好办法

  2. Hexo升级之坑-杨二小

    断断续续折腾了两天,才升级成功。所以,如果有啥感想,那就是:没事别瞎TM升级!当然,如果一定要升级,最好做增量升级:另起炉灶,一项一项地加功能,这样好定位问题,也容易回滚。

看来手动升级不够优雅,容易采坑。

通过git升级

为了避免手动升级,一个思路是采用git仓库管理主题目录,当主题升级时,采用git进行平滑升级。
这看似优雅,却会引入另一个问题:如何在主博客仓库中合理管理一个子主题仓库?NexT Issue #932有很多讨论,也有一些解决方案,这里列出几个:

1 采用数据文件的方式

参考数据文件的介绍和NexT Issue #328。采用数据文件也只能避免_config.yml文件冲突,对于用户修改页面模板情况就没办法了。

2 基于fork + submodule

维护父子两个仓库大大增加了复杂度,还要fork一份冗余的主题仓库,为了不经常有的主题升级增加这样的复杂性,实在没什么必要。

3 同步工具

有用户写了一个hexo同步工具hexo-git-backup,支持博客、主题的同步,支持自定义commit消息。但本质上是个备份工具,需要删除掉主题目录的.git目录,所以也不支持通过git升级主题。

采用git升级的方式,确实能够解放双手,平滑升级,但毕竟还是引入了一定的复杂度。有没有一种既能利用git的平滑升级,又不那么复杂的方案?

暴力但不失优雅的解决方式

由于主题升级的次数相对较少,一般不如用户修改频繁,所以一种简单易行暴力的方式是,git只用来升级,不用来同步,既能利用git进行平滑升级,又避免了引入双层git的复杂情况。

阅读全文 »

模板方法模式和策略模式

发表于 2017-04-03 阅读次数:

模板方法模式

有多个相似的类,找到他们的共性,抽象出来,放入公共的抽象父类,作为模板。

策略模式

1.将算法封装成算法类,变抽象为形象(让不同的算法【抽象】,变成一个个算法策略【形象】)
2.将算法选择逻辑与算法本身解耦(由算法内部if-else代码级耦合【难以维护】,变为客户端选择算法类实例的耦合【灵活】)

不用策略模式:

1
2
3
4
5
6
if(客户=="老客户"){
price*=0.8;
}else if(客户=="大客户"){
price*=0.9;
}
return price;

用策略模式:

1
2
3
4
5
6
7
8
9
10
class OldCustomer implements Strategy{
public int getPrice(int price){
return price*0.8;
}
}
class BigCustomer implements Strategy{
public int getPrice(int price){
return price*0.9;
}
}

客户端:

1
2
3
4
5
6
7
Strategy strategy;
if(客户=="老客户"){
strategy = new OldCustomer();
}else if(客户=="大客户"){
strategy = new BigCustomer();
}
return strategy.getPrice(price);

二者关系

相似点:

没啥太大的相似点,之所以容易混淆,是因为在策略模式中,各个策略比较像,不同的策略类有可能包含同样的方法,这时候可以用模板方法模式构造这些策略类。

不同点:

既然没啥相似点,也不好说不同点。主要比较以下两点:1.实现方式 2.各模式强调了什么。

模板方法模式

  1. 用继承,模板是抽象父类
  2. 强调一个模板,让相似类有所管理

策略模式

  1. 用接口,各算法实现相应的策略接口
  2. 强调策略的形象性,不再操作抽象的算法,而是在客户端中根据情况不同直接选用不同策略。改变、扩展策略类,总比修改源代码中的if-else要优雅。

Echarts坑-动态折线图更新时跳动

发表于 2017-03-18 阅读次数:

用Echarts做动态折线图,参照->这个demo
每次新插入一个点并删除最前面的点,实现随着时间平滑移动。但遇到一个问题,更新数据时会产生跳动。

一番试验找到原因,是定义的data格式问题。是我把demo中的randomData()函数改了个格式

1
2
3
4
5
function randomData() {
var now = new Date();
var value = 1 + (Math.random() - 0.5) * 2;
return [now, value*1000]
}

改完虽然能运行,能实时更新数据,但每次插入一个数据,绘图呈现的效果就是重新绘制全图一样,有一个从水平线扩展成折线图的感觉,所以造成了图形不停跳动。当然,demo中并没有这样的跳动,是很稳定的平移。

解决方法:改成以下格式,也就是demo给出的格式

1
2
3
4
5
6
7
8
9
10
11
function randomData() {
now = new Date();
value = Math.random() * 21 - 10;
return {
name :now,
value: [
now,
Math.round(value)
]
}
}

之后便能平滑的移动了。

总结:返回值必须是一个对象,有name属性和value属性。

群视频课笔记——码农翻身

发表于 2016-10-13 阅读次数:

笔记

  1. 六个月,能否学好web开发?

    不够,六个月只够学习一门技能。

  2. 跟对老板、师傅,能有更多收获,不用重视薪资。

  3. 在做普通项目中脱颖而出?

    做好项目本身
    尽量主动,比如重构代码。忌讳让做什么只做什么

  4. 如何看源码?

    1.跑起来
    2.看业务

阅读全文 »

Hexo+GitHub Pages多终端同步

发表于 2016-10-11 阅读次数:

2016年11月8日更新:
11月3日下午Github Pages升级了Jekyll,导致了next主题下source/vendors路径下的部分js和css无法访问。
解决:在.deploy_git目录中加入名为.nojekyll的空文件。


原文:

博客用Hexo+GitHub Pages搭建,托管在GitHub的一个仓库中,仓库分两个分支:hexo和master。hexo作为默认分支,存放博客源代码,master分支存放博客生成页面。如何实现多终端同步?

阅读全文 »

青蛙过河问题

发表于 2016-09-25 阅读次数:

LeetCode:403. Frog Jump

版本一

深度优先搜索:
从头至尾遍历石头,从每个石头上分别以k-1,k,k+1的力量向前跳一下,如果这三个力量范围内没有石头,则返回;否则继续先前跳一下……直至到达最后一个石头。

阅读全文 »

LeetCode答题框架(Java+Eclipse)

发表于 2016-09-20 阅读次数:

记录我的LeetCode答题框架。

我在LeetCode中答过的题代码全部托管在GitHub:xiaobai050/leetcode

阅读全文 »

平衡二叉树学习

发表于 2016-09-13 阅读次数:

平衡二叉树

平衡二叉树的特点是,小的值在左边,大的值在右边。

阅读全文 »

递归学习

发表于 2016-09-08 阅读次数:

递归、循环的区别:

  • 循环:循环嵌套层数由代码结构决定,维度不可变。

  • 递归:能产生循环嵌套,可以扩展循环层数。

阅读全文 »
Bai

Bai

Remember by heart.
10 日志
7 标签
RSS
GitHub 知乎 LeetCode E-Mail
Creative Commons
0%
© 2016 – 2020 Bai
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
|