gymgle / gnotes Goto Github PK
View Code? Open in Web Editor NEWblog and tips
blog and tips
先把故事写一下来,看过了或许可以再读一遍,也许你也会有故事之后我一样的想法。
谨以此向工作在大城市,付出了青春、爱情、亲情甚至生命的人。
人的一生很短暂,希望大家给自己多一些时间,给家人多一些关爱。
大学里第一次看到这个故事,那时多么向往小强的一辈子,自己的梦想就是回家种那一亩三分地。
几年后再次读到这个故事,想法已经同以前大不一样了。在老家,我有这样的儿时伙伴“小强”,现在在家种地养鸡做买卖,而他眼中在外奔波的我们却是让他羡慕的对象。
其实,几乎能读到这篇文章的都是那个“小明”,而写这篇文章的也肯定在现实中是那个“小明”,而“小强”是不会看这样的书读这样的文章,没兴趣。写这篇文章的“小明”也明显偏向了“小强”,虽然“外面的世界很精彩,外面的世界很无奈”,但“里边的世界有安逸,也有无味”,哪一样的人生有哪一样的精彩。
围城心态这么说:
围在城里的人想逃出来,城外的人想冲进去。对婚姻也罢,职业也罢,人生的愿望大都如此。
自己的幸福都在别人眼里。明白了这一点,就不再去想人生该怎么选择怎么走了。那天看到道哥的黑板报《歪打正着》,有句话正戳中了我的想法。
“人生中会不断面临选择,选择了,必然就有得有失。但微妙的是,在得失之间,未必会有对错之分。也许每条路都能走的通,只要你坚持走下去。 所以最重要的,并不是选择的路是否正确,而是做出决定本身。”
这周折腾了新鲜东西,用了两天的时间部署了局域网聊天服务Candy-基于Jabber服务的Javascript,以后可以不再用飞秋了。
开始让我放弃飞秋的原因很简单,和我聊天的人虽然和我处于一个公司内部的局域网,却不属于同一个深度,我的IP是10.0.xxx.xxx,对方的确实192.168.xxx.xxx。我们使用飞秋回碰到这样的情况:对方可以随时给我发消息,我却不能随时给他发消息,时常碰到飞秋提示对方一下线,很明显,我处于他的上级网络中。
Candy的搭建如官网所介绍,确实十分简单,但一路搭建下来,碰到不少问题,现正总结中,打算把部署过程写一遍。
好了,接下里去博客更新了。
技术改变生活,感谢这么多开源的项目和那些辛勤和汗水下无私奉献的人们!
聚首,欢乐,我都得跟你们告别
驻足,感怀,再回不到过去
不论这世道的艰难,扭曲
我还要去那繁华的都市
继续我未完成的梦想
舍弃欢聚
用一个人的伤
浇铸孤独的精彩
2013年还是在入门徘徊,2014加油!
自己弄过站点以来,本打算定期推荐好的软件,不想开始的时候需要推荐的优秀软件多,后来就没得介绍了,而且发现一款好软件需要运气和时间,于是,站点荒凉得长草了。
这让我想到微信公众账号们每天一推的文章,真佩服他们的坚持,而且坚持每天都有新文章。
坚持每天写东西是个好事情,想想自己初中高中时几乎每天都写日记,虽然写完之后再也没读过。每天写东西,偶尔会产出一片高质量的文章,而想保证每天文章的质量真有些难度。如我愚笨之人,好几个月也许才会有那么一点半点的想法。
由此想到每天一推送的微信公众账号。最先注意到微信公众账号是为因为媒体转载WTP的《互联网时代的时间管理》,开始关注他的Github和微信账号以及他推荐的账号。几天下来,微信里的公众账号增长到十几个,慢慢的,文章读不完了,只挑着自己感兴趣的文章看两眼,其他索性就不去读了。
微信里不适合关注新闻类的公众账号,否则一天下来,互联网上,手机上看到的都是重复的新闻。微信的个人公众账号是否也不需要关注这么多?虽然写出好的文章很不容易,一旦成为好文章,就会被各类互联网媒体转载,即便没有使用微信,也会读到它,当初《互联网时代的时间管理》就是这样。又比如道哥的黑板报的《**黑客传说:游走在黑暗中的精灵》。这样就可以清理一批不再需要的关注了。
坚持写文章,好的文章总会被发现。不过既然在互联网上可以看到,又何必在手机上呢,何况手机的屏幕受限,看起来费劲。
从最简单的开始,有这样一个题目:1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
于是,我这样写了:
// Test 1
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int i, j, k;
for (i = 1; i < 5; i++)
{
for (j = 1; j != i && j < 5; j++)
{
for (k = 1; k != i && k != j && k < 5; k++)
{
printf("%d%d%d\t", i, j, k);
}
}
}
return 0;
}
运行结果是:
321 421 431 432 请按任意键继续. . .
显然这是错误的。
修改for循环,改成:
// Test 2
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int i, j, k;
for (i = 1; i<5; i++)
{
for (j = 1; j != i, j<5; j++)
{
for (k = 1; k != i, k != j, k < 5; k++)
{
printf("%d%d%d\t", i, j, k);
}
}
}
return 0;
}
运行结果显然也是错误的:
111 112 113 114 121 122 123 124 131 132
133 134 141 142 143 144 211 212 213 214
221 222 223 224 231 232 233 234 241 242
243 244 311 312 313 314 321 322 323 324
331 332 333 334 341 342 343 344 411 412
413 414 421 422 423 424 431 432 433 434
441 442 443 444 请按任意键继续. . .
Test 1 中,当i = 1
时,j = 1
会因条件j != i && j < 5
导致不执行第二层for循环,继而i++
而成为2.
Test 2 中,for中的判断语句使用了逗号表达式,逗号表达式又称顺序求值运算符,对于表达式1, 表达式2, ..., 表达式n
,整个逗号表达式的值是最后表达式n
的值。这样就能理解Test 2 的结果为什么是这样了。
这个题目正确的代码应该是这样的:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int i, j, k;
for (i = 1; i<5; i++)
{
for (j = 1; j<5; j++)
{
for (k = 1; k < 5; k++)
{
if (i != j && i != k && j != k)
printf("%d%d%d\t", i, j, k);
}
}
}
return 0;
}
正确的结果应该是:
123 124 132 134 142 143 213 214 231 234
241 243 312 314 321 324 341 342 412 413
421 423 431 432 请按任意键继续. . .
总结:
竟然有这样的博客系统,如此的漂亮和纯粹!
Closed.
又到了填报志愿的时候。
依稀记得05年填报志愿前后的一些片段,已经模糊了,连不起来了。
应该还有那个时候的日记,写过之后再没看过。
一晃八年过去了。
能不老么。
/*
* 题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
*/
#include <iostream>
using namespace std;
int main()
{
long f1, f2;
f1 = f2 = 1;
for (int i = 1; i < 24; i += 2)
{
cout << "第 " << i << " 个月有 " << f1 << " 对兔子" << endl;
cout << "第 " << i+1 << " 个月有 " << f2 << " 对兔子" << endl;
f1 += f2;
f2 += f1;
}
return 0;
}
运行结果:
第 1 个月有 1 对兔子
第 2 个月有 1 对兔子
第 3 个月有 2 对兔子
第 4 个月有 3 对兔子
第 5 个月有 5 对兔子
第 6 个月有 8 对兔子
第 7 个月有 13 对兔子
第 8 个月有 21 对兔子
第 9 个月有 34 对兔子
第 10 个月有 55 对兔子
第 11 个月有 89 对兔子
第 12 个月有 144 对兔子
第 13 个月有 233 对兔子
第 14 个月有 377 对兔子
第 15 个月有 610 对兔子
第 16 个月有 987 对兔子
第 17 个月有 1597 对兔子
第 18 个月有 2584 对兔子
第 19 个月有 4181 对兔子
第 20 个月有 6765 对兔子
第 21 个月有 10946 对兔子
第 22 个月有 17711 对兔子
第 23 个月有 28657 对兔子
第 24 个月有 46368 对兔子
请按任意键继续. . .
当然还可以计算36个月的情况,如果要算48个月、60个月等等更大的数据,要使用long long
类型了定义f1
f2
。
该做点什么了,每天一个练习。
大学那会,玩过很长一段时间的神泣。现在想想为什么不玩了,一个是因为耗时间,升级超级慢;一个是因为国服的外挂满天飞。
毕业后几年后的今年,想起神泣来,找到了美国服务器,发现大学同学已经在美服玩过一段时间了。兴冲冲地回味大学的激情,发现没了时间,没有悠闲,再也没有了大学的悠哉无虑。
接着用按键精灵写了脚本,调试完了挂在那里让猎人自己打怪升级了。
再后来又觉得无趣无味,按键精灵自动打怪的小小成就感消失之后,再也没打开过游戏。
又开始弄网站,放弃GAE上搭建的网站;发现了Farbox,很新鲜这样的模式,无奈模版少,又不能搜索;又发现了Jekyll,开始折腾;又发现了Openshift,又开始折腾;在Godaddy上买域名;又发现了JekyllBootstrap框架,终于又用JB搭建了Github上的博客,上一周就像打了鸡血一样,不辞辛苦地折腾,折腾得津津有味,每小有进展,欣然忘食。
但是Github上搭建的博客如果不是为了Project,真是对不起Github。虽然我很喜欢Markdown的简洁,但把曾经的几十篇文章转换为Markdown的过程中,发现Markdown也让人烦,链接必须用或者[][]片尾批注,图片也是这样麻烦。如果使用了Jekyll,还必须在每篇文章中加上YAML头。
虽然折腾完了Jekyll,现在也不想在Github上做博客了。倒是Github的Issue博客依然可以用来写。
新鲜的东西了解后,又要去发现新鲜了,这样才能不断地汲取到久违的成就感。
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
#include <iostream>
using namespace std;
int main()
{
int x, y, z, tmp;
cout << "Input three integer:" << endl;
cin >> x >> y >> z;
if (x > y)
{
tmp = x;
x = y;
y = tmp;
}
if (x > z)
{
tmp = x;
x = z;
z = tmp;
}
if (y > z)
{
tmp = z;
z = y;
y = tmp;
}
cout << x << y << z << endl;
return 0;
}
如果只是想找出三个数中最大或最小的那个,要求不使用if语句,如何实现?
#include <iostream>
using namespace std;
int findMax(int a, int b, int c)
{
return ((a > b) ? a : b) > c ? ((a > b) ? a : b) : c;
}
int findMin(int a, int b, int c)
{
return ((a < b) ? a : b) < c ? ((a < b) ? a : b) : c;
}
int main()
{
int x, y, z;
cout << "Input three integer:" << endl;
cin >> x >> y >> z;
cout << "Max: " << findMax(x, y, z) << endl;
cout << "Min: " << findMin(x, y, z) << endl;
return 0;
}
《C++ Primer》被评为久负盛名、无可替代的C++经典著作当之无愧,最近开始温习C++,从大学一直没弄懂的一些东西,终于有所领悟,知其然,知其所以然了。
比如:
int ival(1024);//这是直接初始化
,int ival = 1024;//这是复制初始化
;const
和引用
不神秘;string
和vector
是最基本的标准库类型;string
中,当进行string
对象和字符串字面值混合连接操作时,+
操作符的左右操作数必须至少有一个是string
类型;(P75中文第4版 or P86 英文第4版);现在把《C++ Primer》第4版中的习题3.13实现一下,这是一个关于vector使用的小题目。
习题3.13
读一组整数到vector对象,计算并输出每对相邻元素的和。如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其值。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec;
int ival;
cout << "Enter numbers(Ctrl+Z to end):" << endl;
while (cin >> ival)
ivec.push_back(ival);
if (ivec.empty())
{
cout << "No element?!" << endl;
return -1;
}
cout << "Sum of each pair of adjacent elements in the vector:" << endl;
for (vector<int>::size_type index = 0; index < ivec.size() - 1; index += 2)
{
cout << ivec[index] + ivec[index + 1] << "\t";
if ((index + 1) % 6 == 0) // Output six numbers every line
{
cout << endl;
}
}
if (ivec.size() % 2 != 0) //The last element is not summed IF the total number is odd
{
cout << endl
<< "The last element \""
<< ivec[ivec.size() - 1]
<< "\" is not been summed." << endl;
}
return 0;
}
在《C++ Primer 4th》中介绍了第三种C++标准库:bitset,能够简化位集的处理。
习题3.24
考虑这样的序列1,2,3,5,8,13,21,并初始化一个将该序列数字所对应的位置置为1的bitset<32>对象。然后换一个方法,给定一个空的bitset对象,编写一小段程序把相应的数位设置为1。
使用 Visual Studio Express 2013 for Windows Desktop 实现如下:
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
/*
因为bitset读入位集的顺序是从右向左:最右侧是低阶位,最左是高阶位。
00000000010000000010000100101110是满足要求的序列,
其对应的十六进制表示是0x20212e,
最简单的方法是:
bitset<32> bitvec("00000000010000000010000100101110");
或者是:
bitset<32> bitvec(0x20212e);
以下使用另一种方法:
*/
bitset<32> bitvec;
int x = 0, y = 1;
int z = x + y;
while (z <= 21)
{
bitvec.set(z);
// 1,2,3,5,8,13,21 其实是斐波那契数列
x = y;
y = z;
z = x + y;
}
cout << bitvec << bitvec.count() << endl;
return 0;
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.