Fser

迷蒙的醒不如热烈的梦,一杯清水,胜过一碗黄汤。


  • Home

  • Archives

  • Tags

  • Categories

  • About

Hello World

Posted on 2019-01-11

旅行的意义

Posted on 2018-10-10 | In 生活

环青海湖告一段落,旅途的结束总是充斥着些许的失落,虽然收获满满,但难免会有得到之后的空虚感。

7月或者8月产生环湖的念头,抽十一假期决定践行一下这个念想。十一前半段陪家人在北京看人海,十一后半段骑驴环青海。蓄谋两天安排行程,网上订好自行车,机票,静待时间的到来。有些许的兴奋,毕竟不是人生的第一次独自远行。屁股也体会过什么叫如坐针毡,眼睛也看过大山大河,不会因为有那么多未知感到亢奋。

为什么选择青海湖?鬼知道。就像这次经历,如果不写下来,几年后再回忆就是一团浆糊,就像梦一样,醒了就忘了。7,8月产生的念头现在连根毛都记不得,可能是网上看到一张图片,可能是和别人随口说的一句玩笑话,现在再去细究只剩下一堆可能。为什么十一去呢?十一是小长假啊,也是青海湖游玩的淡季,大部分人应该不会喜欢去这片“荒凉”的地方,大部分人不会去所以就去咯。

4号晚上抵达曹家堡,到西宁住一晚。一进酒店大门就闻到浓浓的烤羊肉味,瞬间胃就起反应了。5号上午搭乘大巴赶往西海镇,到了已经是中午了。太阳虽然很毒,一下车还是感到一丝凉意,在西宁还觉得衣服带多了,到这儿才知道带的衣服刚刚好。接下来联系租车行去试车子,老板还挺热情,客套一顿,说就等我了,要不今天等路上那批回来就关门了。这边做生意的基本都是外地人,当地人基本不做生意,所以过了旺季基本就关门过逍遥日子去了。然后就是问老板住和吃的地方。老板带我去了隔壁那家美利达租车行,然后介绍我去他家住。美利达老板姓闫,长得高高瘦瘦,一身运动装,是个四十上下的中年汉子。拿着行李和老闫去他家看住宿的地方,可能是我蹩脚的普通话发音暴漏了我的家乡,路上老闫问我哪里人,我说邢台,老闫突然一句,“邢台啊”(一口纯正邢台地区发音),一下子老乡见老乡的热泪盈眶场景从脑海涌现出来。通过我们原声原味的乡音扫除了陌生人之间的矜持和距离。在老闫家喝了会儿茶,唠了唠嗑,得知老闫还是个骑行达人,有自己车队,还经常参加很多比赛并且取得不错的成绩。前几个月还参加越野赛摔折一根肋骨,人到这个岁数还能有这份激情,敬佩之心油然而生。本来约着下午一起去骑一圈,结果老闫店里有点事只好自己去溜溜新的坐骑,毕竟后面几天要一起相伴上路的,先相互熟悉一下,下面也好有个照应。

出了镇子,眼前辽阔的大地一下激活了波澜不惊的小心脏。蓝天,白云,黄山,沙丘,雪山。随处可见的牛,马,羊,好像见惯了像我这种没见过世面的游客,连头都懒得抬,漫布在苍茫的天地之间,安逸的荒废着大好时光。突然有一瞬间想变成这里的一只牲口,直到晚上吃了一大盘儿肥美鲜嫩的羊排,才改变之前愚蠢的想法。第一天的小试牛刀,使我对后面的行程充满了期待。本来以为晚上只有我自己,到晚上陆续来了一批刚骑完的人,晚上和刚独自环骑完的小陈一起吃了一顿羊排,小陈是个一个不安分的少年,虽然差着几岁,或许我们身上有一些共同点,边吃边聊着个自的生活工作,度过了一个愉快的夜晚。

这边昼夜温差比较大,日落时间要比北京时间晚上一两个小时,所以骑行尽量都赶在太阳当空照的时候。6号早早就醒了,但还是等到8点才起,到9点收拾好行装。买了俩个面包两包奶,早饭吃一半,剩下的留着路上饿的时候吃,出发已经是9点半。早起的气温足以使空气凝结成雪花,那边艳阳高照,这边还哈哧哈哧的在冰晶中爬坡,湿润的空气加上空旷的山野使人心旷神怡,消除了爬坡带来的疲惫感。眼前的随处可见现实版的桌面背景,四个眼睛已经不够用,恨不得浑身是眼,360度记录经过的每幅画面。出来玩最大的乐趣就是,美景永远在后面,你永远不知道后面等待你的景象是多震撼人心。翻过二十几公里的山丘,一大片金黄色草原映入眼帘,天色也完全放晴,一条笔直的公路直通湖边。远处若隐若现湖面粼粼的波光,沿着像水流一样的公路一路滑行至湖边。穿越湖边金色的草地,一片沙丘浮现在眼前,干净细软的沙丘勾住了想要赶路的人儿,放下驴,连滚带爬的去沙堆里戏耍一番。继续翻过几个坡,可以看到远方的雪山在云里呼唤你,“放驴过来吧,远方的人儿,别看我们咫尺之遥,到我跟前你还得哈哧多半天。”或许这就是骑行的乐趣,美景就在眼前,你却只能远观不可亵玩。迎着雪山,沿着蜿蜒曲折的湖边公路一圈一圈的行进。路过几个镇子,没有一点饥饿感,也没做停留,继续贪婪的汲取大自然取之不尽的景色。到下午2、3点路过一片晚秋的油菜花,左手边连绵的雪山,右手边碧绿的湖泊,背阴处小风带来丝丝凉意,路边顽皮的藏民小孩看到孤独的行者经过,朝这边大喊,“帅哥,加油”,瞬间一股暖流流经全身。此情此景,不做停留都觉得浪费。把车子停在路边,背靠雪山,面朝大海,啃完备用的面包。后面有一大段漫长的平缓路段,一个面包的热量很快就消耗殆尽,在暖暖的阳光下匀速的行进,渐渐产生了困意,无意间瞅一下心率,飙升到200,打个激灵吓得赶紧停下车子稍作歇息。等心率降下去后,肚子产生了强烈的饥饿感,看到路边的牛羊开始产生幻想,满眼香喷喷牛肉羊肉。在距离下个镇子还有十几公里的地方实在饿的不想动了,正好这里路边很多卖虫草酸奶的藏民,在路边买了一碗酸奶喝,瞬间能量爆棚。一口气在太阳落山前杀到黑马河。

成也酸奶吐也酸奶。晚上开始阵阵的呕吐感,满嘴的酸奶味。晚饭不能不吃,要不晚上肯定会饿的睡不着。强忍着反胃,吃了一碗牛肉面,一盘烤串。第二天也是早早就醒了,起来准备去盐湖耍一圈,淡季唯一的不好就是去景区成本需要独自承担。最大不好就是,承担了成本还得不到预想的美景。去完盐湖更加确定了我对景区的偏见,网上那些照片是真照骗。回来已是下午2点,吃完饭出发已是3点,不过还好今天行程也不算远,在终点遇到了独自骑行的华哥,一起搭伴找了个宾馆。天色尚早,于是和华哥一起去后面山上的沙陀寺感受一下藏传佛教文化。寺中播放的诵经曲飘荡在辽阔的大地上空,布哈河在夕阳余晖中缓缓汇入青海湖。

第三天空气有点凝重,太阳好像有点偷懒了,突然感觉进入了冬天。只好在外面加层衣物,抵挡一下提前到来的寒意。和华哥一起出发,配速上的不同我们约好在下一站碰头,于是分开各自行进。没有大太阳的湖边是另一番风景,前面晴空万里,眼下却阴云密布。湖边已经开始结冰,可能是风景没有那边那么漂亮,这边路上基本碰不到什么行人了,连车几乎都很少经过。这不就是最大乐趣了,广阔天地任我行。

Never Skip Or Do It Later

Posted on 2017-02-23 | In 感悟

“问题已经解决了,原因是什么以后再说,这个很经典先收藏下来,以后再看”,在工作和生活中我们经常遇到这样的场景,这种心态如果深入骨髓,整个人的成长就像是踩着棉花登高一样,脚下无根行动摇摆不定。

这是一种可怕的心态,只要有这样的想法,当下就可以囫囵吞枣,本该全力以赴的阶段放松了要求,本能走的更远更高的路折于半路。永远想着以后,以后变成了永远,现在变成了以后,以后没了以后。

每一天都是人生的最后一天,这才是进阶的基石,不能不求甚解,时不我待。

时间

Posted on 2016-12-14 | In 感悟

一天很长,一天也很短
一天能做的事很多,一天能做的事也很少

一年很长,一年也很短
一年能做的事很多,一年能做的事也很少

很多的事一天天做
很多事需要一天天做

既然青春留不住2

Posted on 2016-12-06 | In 感悟

在完全依附于“做出正确选择”或“朝着正确的方向”这种正统思想之前,在还没有担负着必须承担起的责任之前,在还有能力和冲动的时候,听从内心的声音做一个自然人,哪怕之后还是会乖乖做回社会人。

作为一个程序员,如果不喜欢编程就是政治不正确,就会被别人的蔑称为码农。虽然经常编程到深夜凌晨,或者为了八哥苦苦难眠,然而我确实对编程没什么兴趣。前段时间被所谓的政治正确虐的暂时放弃了找工作,就在几天前我还认为是我不够热情,没有做到干一行爱一行的要求。细细追问下去,自己喜欢的到底是啥,没有兴趣又怎么会投入这么多精力在里面,为了钱,或许刚入行的时候是,但随着钱越来越数字化,暂时来看钱似乎也不那么重要。那又是为什么,细细回想敲出的代码,解决掉的八哥,变现的想法,对,是那种解决问题的喜悦。编程只是一种手段,解决的过程才是真正吸引人的地方,从陌路时的不起眼,到真正接触了解之后的敬畏折服,惊叹于完美的算法,仰视巍峨坚实的工程,沉浸于攀登或绕过大山柳暗花明的喜悦。对,就是这种感觉,去探索去征服。

那么面试现在来看其实就很扯淡了,拿谷歌百度就能得到答案的问题,拿来测试一个人的记忆力,而不是这个人的想法,招到的人,也不过是喜欢编程的码农,你又何必去为这样的公司耗费自己的青春。这里漏掉一点,如果对方一点都不了解你,你连基本的编程都拿不下,对方怎么敢确信你的想法不是你编的呢。所以洗洗去编程吧。

既然青春留不住

Posted on 2016-12-05 | In 感悟

I Don’t Live in a Dream

既然青春留不住,那又何必去挽留。

在此之前过着安分守己的生活,努力去走应该的路,除了偶尔有的一点点小特立独行,如果没有意外会一直这样活下去。看轻一切青春的放纵,年少的无知。

感觉就像溪流一样,不急不慢缓慢的流过身体的每个角落。我静静站在岸边,看着它肆意的流淌。嗨了就嗨上天,苦闷了就闷到深渊,不去阻碍每一种情绪心情感觉到释放,作为本分的人自然不会表现于外人,但内心却是极其的纵容与平静。因为她真实的在你存在,既然做不到扼杀这种性情的反应,那就去尽情的去感受她的流动。细细的品味每一次歇斯底里的哭、笑、吵、闹,感受无法抑制的冲动,体会手脚冰凉的紧张,像对待吃饭一样对待她们,既然免不了要成为大部分人,何不放大这点小小的自我。不是修行,不是成长,随我而来随我而去。

每一次的决定都是如此荒诞,对于一个习惯了规律生活的人无异于一颗定时炸弹。决定做的太早,每天过得寝食难安;决定做的太突然,小心脏会受到不小得迫害;决定做的太荒谬,无异于自残。过早的决定,每天都是心心念,对于未知的到来,要么紧张于一切的未知,要么恐慌结果不尽如人意。就是现在。做了个决定,紧张的感觉充斥着身体的每一条脉络,可怕的是,睡不着了,又亢奋着做更荒唐的决定。

心态一定要放端正

Posted on 2016-11-28 | In 感悟

Master of War —— Bob Dylan

所有看似困难的问题都不是没有解,但一旦有畏难情绪,基本就是没解了。

复杂的问题可以分解成简单的部分,繁琐的过程可以顺藤摸瓜,找到切入点,只要坚持总有方法可以破解的。方法不一定是随手可得的,需要不懈的努力去尝试。

困难是因为无知,知道了会更困难,但起码之前困难的部分不再困难,或者困难的程度被缩减,增加的是更高一层次的挑战。

C:const和static关键词

Posted on 2014-07-15 | In C/C++

简单比较

const修饰的变量值一旦设置就不能再改变。
static变量的生命周期存在于程序的整个执行过程,变量值只在程序启动之前初始化一次。所有的static变量如果没有准确的被赋值也会被初始化,初始化的方式和时间都不确定。

const与pointers

指针常量,str不能再被其他指针赋值,但是str所指值可以改变。例如,声明指针常量char * const str = "hello world";

//试图改变指针值,错误
char * hello = "hello, universe";   //ERROR
char * const str = "hello, world";  //ERROR
str = hello;                        //ERROR
//
//指针所指的值可以被更改
char * const str = strdup( "hello, world" );  //Correct
str[ 0 ] = 'a';                               //Correct
//

声明char类型常量的指针const char * str = "hello, world";与上述正好相反,指针可以指向其他变量,但是不能改变指针所指的值。

static的两种含义

  • 在函数内部声明,static变量的被初始化一次,之后一直存在直至程序结束。例,与普通局部变量的区别
#include <stdio.h>
void foo( void ){

    int x = 0;
    printf( "X - foo: %i\n", x );
    x++;
}
void bar( void ){

    static int x = 0;
    printf( "X - bar: %i\n", x );
    x++;
}
int main( void ){

    foo();
    foo();
    foo();
    bar();
    bar();
    bar();
    return 0;
}

输出结果:

X - foo: 0
X - foo: 0
X - foo: 0
X - bar: 0
X - bar: 1
X - bar: 2

  • 在函数外部声明,创建文件内的(file scoped)全局私有变量,也就是说外部其他文件不能获得static修饰的全局变量的值。

C++中的static

在C++中声明的static成员变量只能通过类调用,其值为所有该类的实例所共用

public class Test
{
    public static int test;
}
Test myTestObject=new Test();
myTestObject.test=2; //ERROR
Test.test=2;         //Correct

参考:

  1. C: const and static keywords,
  2. What is the difference between a static and const variable?,
  3. Static(C++),

为Octopress添加Category

Posted on 2014-06-20 | In Octopress

导航栏添加自定义category列表

前两天参考别人在侧边栏加category列表的方法给自己的博客添加了category导航。

基本步骤

首先在plugins/路径下添加category_list_tag.rb文件

其次jekyll的插件category_generator.rb默认在创建categories目录时是不存在index.html索引文件的, 因为她无法知道你每次创建category的路径地址, 所以我们只能手动在source/blog/categories/路径下创建index.html文件

index.html
1
2
3
4
5
6
7
8
9
10
11
12
13

---
layout: page
title: Categories
footer: false

---

<div>
<ul id="categories">
{% category_list %}<!--此处是中文输入,不要直接复制-->
</ul>
</div>

最后在source/_includes/custom/navigation.html中加如下代码:

1
<li><a href="/blog/categories">Categories</a></li>

现在就可以为博客归一下类了

1
2
3
4
5
6
7
8
9
10

---
layout: post
title: "为Octopress添加Category"
date: 2014-06-20 18:29:46 +0800
comments: true
categories: octopress

---


关于第一次rake generate 遇到的Liquid Exception: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string) in index.html问题,原因是正则字符串以ASCII-8BIT被编译,只需在category_list_tag.rb文件头部加上如下声明,当Ruby在语法分析时,你代码中每一个字符(包括正则,字符串等等)都会被设定为UTF-8编码:

1
#encoding: utf-8

参考:
链接1 , 链接2 , 链接3

关于中文category

上面的流程走完之后,于是顺手给一篇文章加了个中文名称的分类,WTF,文件路径都正确就是,索引文件也有,就是找不到。仔细观察url发现category的url没有被读取为字符串-字符串而是直接以实际的形式(即中文编码后的格式)链接过去,但实际public/blog/categories/下各个子分类都是以字符串-字符串的命名存储的,这也就是为什么找不到目录下的索引文件。知道原因,这样问题就好办了。首先我选择了最笨的办法就是找到那篇博文的主人直接问人家,然后就没有然后了……

好吧只能靠自己了,url读取问题应该是出在正则表达式上,打开category_list_tag.rb文件,也找到正则这句

1
category_url = File.join(category_dir, category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase)

好吧,大致没看懂,但它确实是把category的名字完全匹配到了,这里是不是有个汉字转拼音的插件就可以解决问题呢?Google一下你就知道了。还真有ruby-pinyin,看起来好复杂。再看看还有别的筏子吗,打开plugins/category_generator.rb文件,看看它到底是肿么把汉字转成字符串-字符串格式的路径的,看到这句时眼前突现了日出东山的万丈光芒:

start:111
1
self.write_category_index(File.join(dir, category.to_url), category)

看样子category.to_url应该就是干这个活儿的,那么用它把category_list_tag.rb中的正则替换掉应该是能行,下面是修改后的样子:

category_list_tag.rb
1
2
#category_url = File.join(category_dir, category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase)  
category_url = File.join(category_dir, category.to_url)

新问题:codeblock没法使用start:# mark:#,#-#

[译]为视图控制器减重

Posted on 2013-11-28 | In 翻译

原文地址:链接

原文作者:Chris Eidhof

在iOS项目中ViewController经常是最大的文件,而且还包含了很多不必须的代码。不仅如此,在整个项目中ViewController还常常是代码复用最少的部分。接下来我们学习一下为ViewController减重的技巧,提高代码的可重用性,把代码放置更恰当的位置。

##分离数据源(Data Source)和其他协议(Protocols)

把UITableViewDataSource部分从你的代码中挪到它自己的类里。假如你不止一次的这样做,你将开始接触设计模式和为此创建可复用的类。

例如,在我们的例子中PhotosViewController类有下面的方法:

title:PotosViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma mark Pragma

- (Photo*)photoAtIndexPath:(NSIndexPath*)indexPath {
return photos[(NSUInteger)indexPath.row];
}

- (NSInteger)tableView:(UITableView*)tableView
numberOfRowsInSection:(NSInteger)section {
return photos.count;
}

- (UITableViewCell*)tableView:(UITableView*)tableView
cellForRowAtIndexPath:(NSIndexPath*)indexPath {
PhotoCell* cell = [tableView dequeueReusableCellWithIdentifier:PhotoCellIdentifier
forIndexPath:indexPath];
Photo* photo = [self photoAtIndexPath:indexPath];
cell.label.text = photo.name;
return cell;
}

这些代码中许多都和数组有关,其中一些提供ViewController管理的照片。那么让我们试一下把和数组相关的代码挪到它自己的类中。我们通过块(block)来配置cell(也可以通过委托(delegate)来设置,取决于你自己的情况和偏好)。

title:ArrayDataSource.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@implementation ArrayDataSource

- (id)itemAtIndexPath:(NSIndexPath*)indexPath {
return items[(NSUInteger)indexPath.row];
}

- (NSInteger)tableView:(UITableView*)tableView
numberOfRowsInSection:(NSInteger)section {
return items.count;
}

- (UITableViewCell*)tableView:(UITableView*)tableView
cellForRowAtIndexPath:(NSIndexPath*)indexPath {
id cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier
forIndexPath:indexPath];
id item = [self itemAtIndexPath:indexPath];
configureCellBlock(cell,item);
return cell;
}

@end

你可以创建这个对象的实例,把它作为表格视图的数据源来取代在你ViewController的那三个方法

1
2
3
4
5
6
7
void (^configureCell)(PhotoCell*, Photo*) = ^(PhotoCell* cell, Photo* photo) {
cell.label.text = photo.name;
};
photosArrayDataSource = [[ArrayDataSource alloc] initWithItems:photos
cellIdentifier:PhotoCellIdentifier
configureCellBlock:configureCell];
self.tableView.dataSource = photosArrayDataSource;

现在你不用在考虑筹划索引路径(index path)在数组中的位置,每次你想要在表视图中展示一个数组的内容你都可以重用这部分代码。你还可以额外实现像tableView:commitEditingStyle:forRowAtIndexPath:这样的方法,在你的ViewController中共用这些代码。

美妙的是你可以单独的测试这个类而不用考虑重新在写。假如数据不是数组这个方法同样适用。

youger

youger

A hungry hunter.

10 posts
5 categories
3 tags
© 2019 youger
Powered by Hexo
|
Theme — NexT.Pisces v5.1.4