分类目录归档:工作

给手机大战泼四盆冷水——总结

最近非常非常的忙,第一个原因是在忙自己的事情,第二个原因,你懂的

吴晓波老师的节目隔了好几期,今天吃饭的空听完了《给手机大战泼四盆冷水》,以下是针对节目的总结

一、生态闭环

闭环

闭环是不存在的
乔布斯是早期受益者,但iPhone做的也并不是全闭环
所以闭环是否存在要打个巨大的问号

生态

生态链更不靠谱,为了打造自己的生态,所有内容供应商谈合作,无论视频资源还是音乐资源,重复性都非常大,很难差异化
现在的用户对信息需求是非线性的,对平台没太大的感情
闭环生态几乎痴人说梦

二、粉丝经济

在中国手机已经从粉丝经济打到了价格战
粉丝经济是要形成人情关系,性价比关系就模糊掉。而现在中国厂商所追求的是价廉物美,造成了在中国手机是屌丝经济,为了一块钱的差价,也会很容易背叛,这与粉丝经济有巨大的矛盾,目前而言粉丝经济在中国不存在的

三、缺乏核心技术的行业颠覆

目前所有的手机厂商核心技术都受制于人,系统受制于Android,CPU受制于高通、联发科,摄像头受制于索尼。唯一自己存在的只有组装能力和营销能力。综观经济学历史,颠覆只出现在技术革命领域!

中国在估值200亿智能硬件公司竟然没有发明专利,因为中国的企业具备的是组装与市场营销和鼓吹的能力,而这一切都是根基不稳的

四、我们仍然相信规模决定一切

年初5家手机宣布停掉产量要超过1亿台,第一季度显示手机出货量不到1亿台,平均下来全年销量也就4亿台左右,产能出现巨大过剩!中国企业家始终相信只有了规模以后才能闭环,规模加成本等于中国制造

第三次工业革命与中国制造2025都提出,未来制造业绝对不能成本加规模的方式来进行

手机大战才刚刚开始,是牌对对手的恐惧,我使用比你少的钱,狙击你的成功,我的目的就达到了。而这些钱也是拿资本市场上的钱,跟我个人没什么关系,这就是现今的经济泡沫

手机生产商一定要思考自己做手机的目的是什么,目的的价值决定所牺牲的程度

微信鉴权学习

时序图

这是最近开发应用的一个时序图,里面有两个鉴权的部分,其中的好坏我已经标出来了

以下是我觉得应该向微信学习的地方:

  1. 客户端访问的时候使用临时,一次性的code做传递
  2. 保密的数据通过服务端与服务端传输
  3. 可以把微信的鉴权无限扩展到N个项目
  4. 可以把JSAPI无限扩展于N个项目

以上只需要搭建一个类似于微信鉴权的平台

这是一封接口讨论的邮件,其实写邮件说明这个情况并不是得瑟,是有了想法,不甘于只写到博客里面,因为博客里面看的人实在太少。即使看的人多一些也未必了解情况,而一同做项目的人就不一样了,我发给他们都看的懂,有了想法就交流,这样比较好。但说实话我并没有想要去改动现在的接口,因为信息泄漏的危险实在太小了,我没有动力增加自己与对方的工作量来做这个事情

DNS备份与恢复

有时候需要更换DNS服务器,做好备份与恢复工作显得比较重要,总结最近两次基于Windows DNS的备份与恢复过程,备忘

DNS备份

  1. win + r -> dnsmgmt.msc /s -> 右击机器名 -> 所有任务 -> 停止
  2. win + r -> regedit -> 查找HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS,右击,导出,命名为dns1.reg。
  3. win + r -> regedit -> 查找HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server,右击,导出,命名为dns2.reg。
  4. win + r -> system32 -> 拷贝dns目录下.dns结尾的文件并保存

DNS的恢复

  1. win + r -> dnsmgmt.msc /s -> 右击机器名 -> 所有任务 -> 停止
  2. 把所有后缀为.dns的文件复制到这台机器的%system32%\dns文件夹下。
  3. 将dns1.reg和dns2.reg的文件。双击它们,一次一个,并且确认自己想把它们安装到注册表中。
  4. 重新启动DNS服务。

[转]Chrome 远程调试协议分析与实战

背景

某一天,A 君想获取 Chrome 页面中的性能数据,诸如时间、白屏和首屏等,因为需要和竞品进行对比分析,无法注入代码,该怎么办?

此时,你也许能想到开发者工具(DevTools),也许知道Timeline(包含浏览器完整的行为数据),该怎么自动获取到 Timeline 数据呢?

开发者工具

开发者工具(DevTools)是一个独立的 Web 应用程序(HTML+CSS+Javascript),被集成在浏览器中,通过远程调试协议(remote debugging protocol)和浏览器内核进行交互,直接使用 Ctrl+Shift+I 呼出。

devtools

可以在当前的浏览器页面直接打开 DevTools 调试,也可以在浏览器之外进行调试,本文的实战内容基于 PC 平台浏览器之外的远程调试。

远程调试协议

远程调试协议基于 WebSocket,利用 WebSocket 建立连接 DevTools 和浏览器内核的快速数据通道。DevTools 中的源代码(Main.js:220)如下:

var ws;
if ("ws" in WebInspector.queryParamsObject)
    ws = "ws://" + WebInspector.queryParamsObject.ws;
else if ("page" in WebInspector.queryParamsObject) {
    var page = WebInspector.queryParamsObject.page;
    var host = "host" in WebInspector.queryParamsObject ? WebInspector.queryParamsObject.host : window.location.host;
    ws = "ws://" + host + "/devtools/page/" + page;
}

该协议把操作划分为不同的域(domain),比如 DOM、Debugger、Network、Console 和 Timeline 等,可以理解为 DevTools 中的不同功能模块。

每个域(domain)定义了它所支持的 command 和它所产生的 event。

每个 command 包含 request 和 response 两部分,request 部分指定所要进行的操作以及操作说要的参数,response 部分表明操作状态,成功或失败。

command 和 event 中可能涉及到非基本数据类型,在 domain 中被归为 Type,比如:’frameId’: <FrameId>,其中 FrameId 为非基本数据类型

至此,不难理解:

domain = command + event + type

远程调试协议应用场景

  • 针对移动端的远程调试,因为移动平台一般都不会提供足够大的区域来显示 DevTools,必须要在手机浏览器之外进行远程调试,具体配置请参看这篇文章

  • 获取 JS 的Runtime数据,常用的如window.performancewindow.chrome.loadTimes()

  • 获取NetworkTimeline数据,进行自动性能分析

  • 与强大的phantomjs合体,phantomjs 暂时只支持基于 remote debugging protocol 的调试,希望能支持 Network 及 Timeline 数据的获取,phantomjs 的最新技术请点击进入

远程调试协议结构

以 Page domain 为例

command 结构如下:

Page.navigate
request: {
    "id": <number>,
    "method": "Page.navigate",
    "params": {
        "url": <string>
    }
}
response: {
    "id": <number>,
    "error": <object>
}

执行 Page.navigate 操作,需要参数 url,id 可以随意指定,不过要确认全局的唯一性,因为需要通过 id 关联 request 和 response。

event 结构如下:

Page.loadEventFired
{
    "method": "Page.loadEventFired",
    "params": {
    "timestamp": <number>
    }
}

Page domain 派发 loadEventFired 事件结构数据(通过 WebSocket 的 onmessage 获取),并包含参数 timestamp

type 结构如下:

Frame: object
    id ( string )
        Frame unique identifier.
    loaderId ( Network.LoaderId )
        Identifier of the loader associated with this frame.
    mimeType ( string )
        Frame document's mimeType as determined by the browser.
    name ( optional string )
        Frame's name as specified in the tag.
    parentId ( optional string )
        Parent frame identifier.
    securityOrigin ( string )
        Frame document's security origin.
    url ( string )
        Frame document's URL.

Frame type 为包含 id,loaderId,mimeType,name,parentId,securityOrigin 和 url 字段的 Object 数据类型,其中 loaderId 为另外一个定义在 Network domain 中的 type

更多协议内容请猛戳这里

远程调试协议实战

此协议用于 server 端和 client 端的通讯,所以需要先建立 server 端,然后 client 端通过协议连接到 server 端

开启 server 服务

打开浏览器的远程调试支持,并指定端口号:

./chrome --remote-debugging-port=9222

./chrome 为已安装的 Chrome 可执行程序

获取 server 地址

在浏览器中直接输入:

http://localhost:9222/json

获取所有的 tabs 信息,数据格式如下:

[
    {},
    {},
    {}
]

每个 {} 的内容如下:

{
    description: "",
    devtoolsFrontendUrl: "/devtools/devtools.html?ws=localhost:9222/devtools/page/A12A4B08-E5AF-4A84-A86A-A1C86E731D7F",
    faviconUrl: "http://www.baidu.com/favicon.ico",
    id: "A12A4B08-E5AF-4A84-A86A-A1C86E731D7F",
    thumbnailUrl: "/thumb/A12A4B08-E5AF-4A84-A86A-A1C86E731D7F",
    title: "百度一下,你就知道",
    type: "page",
    url: "http://www.baidu.com/",
    webSocketDebuggerUrl: "ws://localhost:9222/devtools/page/A12A4B08-E5AF-4A84-A86A-A1C86E731D7F"
}

websocket server 端地址:

webSocketDebuggerUrl: "ws://localhost:9222/devtools/page/A12A4B08-E5AF-4A84-A86A-A1C86E731D7F"

建立连接

在任意地址栏中输入 http://localhost:9222 + devtoolsFrontendUrl 值即可(等同于在当前页面直接打开 DevTools):

http://localhost:9222/devtools/devtools.html?ws=localhost:9222/devtools/page/A12A4B08-E5AF-4A84-A86A-A1C86E731D7F"

或直接使用 WebSocket 连接,使用 webSocketDebuggerUrl 值连接:

var ws = new WebSocket('ws://localhost:9222/devtools/page/A12A4B08-E5AF-4A84-A86A-A1C86E731D7F"');

注意:每次只能进行一次 WebSocket 连接,之后的连接都会失败

调用 Command

WebSocket 通道建立完成之后,通过如下方式进行调用:

打开指定页面,并进行事件监听(以 Page.loadEventFired 为例):

ws.onmessage = function(event) {
    console.log(event.data);
};
ws.send('{"id": 1, "method": "Page.navigate", "params": {"url": "http://www.baidu.com"}}')

获取到的 loadEventFired 事件数据如下:

{"method": "Page.loadEventFired", "params": {"timestamp": 1402317772.874949}}

更多连接方式

nodejs ws

非常轻量级的 WebSocket 库,支持 client 端和 server 端,使用方式基本同 HTML5 的标准 WebSocket 库

client 示例:

var WebSocket = require('ws');
var ws = new WebSocket('ws://www.host.com/path');
ws.on('open', function() {
    ws.send('something');
});
ws.on('message', function(data, flags) {
    // flags.binary will be set if a binary data is received
    // flags.masked will be set if the data was masked
});

server 示例:

var WebSocketServer = require('ws').Server
      , wss = new WebSocketServer({port: 8080});
    wss.on('connection', function(ws) {
        ws.on('message', function(message) {
            console.log('received: %s', message);
        });
        ws.send('something');
    });

请移步:官方 ws 库

nodejs chrome-remote-interface

一个实现了 remote debugging protocol 的 nodejs 库,其中 WebSocket 使用的是 ws 库,使用方便,推荐使用

示例代码:

var Chrome = require('chrome-remote-interface');
Chrome(function (chrome) {
    with (chrome) {
        on('Page.loadEventFired', function(time) {
            send('Runtime.evaluate',{'expression': 'chrome.loadTimes()', returnByValue: true}, function(err, result) {
                //console.log(err, result );
            });
        });
        Page.enable();
        Page.navigate({'url': 'http://www.baidu.com'});
    }
});

请移步:官方 chrome-remote-interface

nodejs socket.io

功能强大,支持集成 WebSocket 服务器端和 Express3 框架与一身,使用简单,有兴趣者请移步:官方 socket.io

WebSocket

协议

它是 HTML5 一种新的协议,实现了浏览器与服务器全双工通信,只需要一个握手动作,浏览器和服务器之间就形成了一个快速通道,然后进行数据互传。

优点:

1、交互时的 header 只有约 2Bytes
2、服务端可以主动推送数据给客户端

header 格式(握手时):

request:

Cache-Control:no-cache
Connection:Upgrade
Host:localhost:9222
Origin:http://family.baidu.com
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits, x-webkit-deflate-frame
Sec-WebSocket-Key:TKSQVug6zSIH4uzIyTYBcg==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1914.0 Safari/537.36

response:

Connection:Upgrade
Sec-WebSocket-Accept:HyjfMUpyYgWgkYLn/vDDf6rZLuk=
Upgrade:WebSocket

header 格式(交互时):

request:

User-Agent: Fiddler
Content-Type: application/json; charset=utf-8
Host: fakewebsocket
Content-Length: 211

response:

FiddlerTemplate: True
Date: Fri, 25 Jan 2013 16:49:29 GMT
Content-Length: 51

查看 WebSocket 连接

DevTools

直接使用 DevTools,在控制台建立 WebSocket 连接并交互,在 Network 面板中直接显示

fiddler

fiddler

自定义 fiddler 的规则,根据 WebSocket 特征提取信息并伪造 WebSocket 结构数据

因为伪造时,host 为 fakewebsocket,无法识别,所以通过 AutoResponder 伪造 respose 数据

请移步:Debug / Inspect WebSocket traffic with Fiddler

优化方向 优化手段
请求数量 合并脚本和样式表,CSS Sprites,拆分初始化负载,划分主域
请求带宽 开启 GZip,精简 JavaScript,移除重复脚本,图像优化
缓存利用 使用 CDN,使用外部 JavaScript 和 CSS,添加 Expires 头,减少 DNS 查找,配置 ETag,使 AjaX 可缓存
页面结构 将样式表放在顶部,将脚本放在底部,尽早刷新文档的输出
代码校验 避免 CSS 表达式,避免重定向

更多参考

原文

学习中的致使弱点

我在学习新技术的时候有个弱点,没有一追到底的决心,说的好听点叫不钻牛角尖。比如,在学习JDK的时候,需要JDK的编译环境,我总是对自己说这个环境搭建起来很麻烦,而且后面是否能成功都不一定;当然我说的没错,一些环境搭建确实费时费力,而且也不一定能够达到效果,但如果安装的次数多了,搭建环境也并非不可能的事情,而问题是如果没有这个环境,最终学习的效果就大打折扣。

为什么我网络实验课上的所有内容都给了我很深的印象,原因就是我们都去动手做了,而且达到了一定的效果,而这些效果又震撼了当时的我,所以令我记忆深刻;而这种深刻的记忆后面就由于自己的弱点而没有再次出现过。

做这些事情可能要花一些时间,而这些时间是值得去花的,成功了以后对自己的进步是不可估量的。如果每次都停留在理论的角度,每次都停留在别人做实验的角度,自己的进步可能就会出现瓶颈,自己离达到一个优秀的程序员也将渐行渐远

当然到达某个程度并非一定要使用这个软件,只是你达到这个程度也才能知道使用这个软件的便利性。我以前认为任何一个软件都最好不要作用任何插件,因为软件本身的功能都已经很齐全了,也让我少了很多探索的动力;而现在才发现当时的我是多么幼稚:软件不用来装插件完成各种功能就像你买一个苹果手机而不去App Store去装软件一样,你以为操作系统已经可以完成你自己想要的一切,这是多么不成熟的一种想法啊,想现在任何操作系统都是软件为王的时代,如果不是App Store里面有那么多好用的软件,谁会使用iOS这么封闭的一个系统?

发现了插件的重要性,于是我着手从自己现有的软件开始,VIM, SublimeText和Eclipse,这些IDE是我经常使用的,我需要找一下有没有更适合的软件让他们更好的工作,当然VIM是重中之重,但似乎目前的并不那么的顺利

为知笔记

为知笔记为知笔记为知笔记

看到了以前的一个同事在使用为知笔记,其中最大的功能是可以发送笔记到wordpress,还是非常好用的,但是有个问题就是博客的最后还要带个尾巴,这点让我非常的不爽,一定要想个办法解决掉这个东西。

官方提供了解决的方法——付费成为VIP,但现在中国的互联网哪有付费的习惯呢,所以我觉得不太近人情,由于不太了解客户端的东西,我只好在mxlrpc这边来想办法了,最差的办法就是把尾巴接收但不显示;进一步的办法是在接收东西的时候直接把尾巴去掉
在没有更好的办法的情况下,动态的取消显示也只能算凑合了,但对搜索引擎来说会有知所措
在wp-include/post.php中的wp_insert_post方法中,增加如下一句,就可以过滤掉了

// fix wiz.cn
$postarr['post_content'] =str_replace(wp_slash('<div><a title="来自为知笔记(Wiz)" href="http://www.wiz.cn/i/ca116649">来自为知笔记(Wiz)</a></div>'), '', $postarr['post_content']);
// end fix wiz.cn

最优秀的解决方案应该是在客户端就解决掉,但这个领域不熟悉,只好从wp代码下手了;这东西凑合着能用,谈不上精致,最重要的是解决了我发wp的问题,也解决了我代码高亮的问题,相当于windows live writer的作用,但比wirter好用一些。另外还有便签的功能也非常的不错,但总体感觉还是不能让人满意,有点有道笔记的问题,网页版的通病

项目管理的方式

现在项目管理的工具已经有很多,其实我并不太赞同作为软件开发人员去使用别人开发的工具,但学会使用别人的成果在软件开发人员这里也是一个很重要的技能,因为大家都在重复的开发轮子。

其实我觉得,任何一个工具只要有人去使用它了,使用的人多了才会有意义。比如邮箱,现在工作的人基本上都会有一个,邮箱的好处是不管你们是不是一个团体,它都属于自己的私有空间,收到的信也都是只有自己才能看到(当然这是理想的情况了)所以大家都喜欢用邮箱。

我不太赞同使用QQ这样的即时软件,这样的软件当然可以更及时的传递一些信息,但要知道,有些东西后面还是会找出来查看的,如果丢弃了以后查看的可能对我们有可能是得不偿失的,而邮件却没有这样的问题。

两个项目管理的工具:Tower和明道,明道太繁重了,把各种功能都加上了,相对于大公司可能比较喜欢用这个东西吧,万达就在内部部署了这样的一套系统,然后再使用别人开发的客户端登录,这样使用是不错,但大家在上面的积极性不是太高,主要还是靠自上而下的推进,也是冷冷清清没有人气。而Tower相对则非常的灵活,不但如此,所做出的东西也非常的精致,让人用起来非常的舒服。我非常喜欢这种感觉,但现在不能实施的主要原因是,如果我创建了一个团队,一个项目,那么我将是这个团队与项目的管理员,这样即使我把这个项目的人都拉进来,他们也是非常不情愿的,因为我们并不再是对等的关系了,可能有时候他们的职位比我还要高,所以这就造成了他们不太愿意用这个东西。

其实如果把Tower用好的话,现在文档的管理也非常的方便,还有比较的功能,文件上传在Chrome非常的灵活,任务的统计,日历等功能基本上能涵盖项目的方方面面,但思考了这么久还是没有足够的力量推进这个东西,因为推进以后就变成了老板监控我的一个工具了,我最多再对客户负责一下就行了,而这样的任务现在的邮件系统应该能够完成的不错

md明道

towertower

而现在Tower和明道的宣传又明示的过于理想化,想让任何人都按照一定的思路来工作是不现实的,任何人都有自己的个性,都有自己喜欢和讨厌的东西,而这些东西是非常难以改变的,所以这种项目管理推进的难度还是非常大的

机房记录

专业机房很少去,到目前为止才去过两家,一家电信,一家就是这家,地址:泰谷路77号

第一家的时候感觉比较严格,进去都要安全锁的,但是有一个问题就是管理人员跟机房之间就没有什么安全的东西了,而第二家,也就是下面这家,机房管理人员跟真正的机房是完全隔开的,其实就是在两个楼里面;这样的好处是大家减少了辐射,但不好的地方是要去处理一些事情都要跑到里面才能处理。这家的机房还有更搞笑是的有很多铁丝网,好像分属于不同的主机托管单位;整体感觉里面太挤了,相比前一家调试起来不方便;另外这家单位办公环境也真不怎么样,到处都给人一种乱的感觉,但具体到让你指出哪里乱了,你也不能很好的指出来,总体来说机房的环境比办公环境要好很多(除了噪声和辐射)

IMG_0268

机栕看起来整齐

 

IMG_0267

铁丝网真不知道是用来做什么的

恶心的单位,丑陋的嘴脸

本来这些天没什么好写的,不成想今天的调研竟然给我送来的素材。其实这个单位我已经去过一次,第一印象就极为不好:第一个是里面的建筑结构十分的压抑;可能是由于房子比较旧的原因吧,里面不但冷冷清清,不知道的还以为我们又回到了大学的教室呢。第二是里面的人都十分的滑头!不是自己的事情一点不做,是自己的事情也要推七分,做三分,这已经是求爷爷告奶奶的结果了,所以上次的几个问题拖了几个月一个也没给解决,这次我还需要再去一次。第三是里面都是男人,这不是最主要的,每个人的办公桌上都是乱的一塌糊涂,你进去都不知道该坐哪,该找谁!

本来已经有心理准备了,但可能是我准备的还是不够充分,里面的一个极品男突破了我的心里底线。刚进去,上次接待我们的王老师(看着怎么真的像在学校啊)就把我带到对面的一个副主任的办公室,同样这家伙的办公室也好不到那去。刚开始说话就是一副不关我事的嘴脸,踢皮球一样把一些问题又踢给了我。我在想,你一个技术部门买台服务器难道还需要我给你太多建议吗?后面接着聊项目的事情,很明显,作为一个技术部门的人,他对技术的了解是比王老师要多的多的,但这家伙一个劲的不往正题上说,只说我们机房是没什么,没什么,接入我们机房需要很多很多的花销什么的,总之一句话,这不是我的事,跟我什么关系,干嘛放在我这里,还摆出一副领导的架势,看,我给你提供了几条意见,提示一下你们。王老师提到了要拨经费给他们来购买服务器,这家伙马上就来了精神,又是推荐windows又是推荐linux,又是可以找电信,又是可以办备案,总之你给钱,什么事都能给你办,完全不像前面说的那样趾高气昂,也收敛了那种丑恶领导的嘴脸。最后来建议把数字图书也做下来,这样可以再买硬件,他可以再从中捞一笔罢了。

临走的时候我都想恶心的吐他一口口水

给自己一些“压力”

在学车的时候,看到有人说,开车时有一点紧张是最佳的状态。他的意思是说,一个新手开车完全不紧张是不对的,过于紧张也是不对的。我也赶忙对号入座,觉得自己目前的车技就是开车时有一些紧张的状态。

大约一年前的时候,我拿着从同事那里借来的大部头《鸟哥的私房菜》linux基础篇,在拥挤的地铁上认真研读,虽然很多时候车上的人都不能让你把书完全伸展开来,虽然有时候连掏出书的机会也不太多,但我还是坚持每天把他放到书包里,因为我知道一旦放弃,就不知道下一次会是什么时候再拿起来了。但遗憾的是,看完了shell编程以后,还是把那本书给还了,但这段时间的知识积累为我后期的服务器管理提供了扎实的基础。

同样,后来我又买了很多书,大部分都在我的办公床上“睡觉”,尽管我每天的真正干活的时间不多,但我也不想拿着一本书在那里正经的看上一眼,而当初买它们的时候可是想的好好的。如果当初能够继续Oracle培训的状态,如果能够继续正则的学习,如果能够进一步深入js的学习,也许现在的我又是另外一个境界,而不会永远只在入门的边缘,虽然我号称以知识面宽广而“闻名”

越来越发现在电脑上深入阅读是一件困难的事情,电脑适合的是查资料,我们可以通过搜索找到我们不知道的知识,但如果让你深入学习一样技术,或者了解一件历史事件,电脑显得那样的力不从心,我们在网络面前是那么容易迷失方向……所以现在出现的“厕所阅读”的现象——给你印象最深的是你在厕所阅读的东西,即使是初期的厕所广告,到后来手机阅读。网络的诱惑性太大,而最后的结果是在浪费时间。你可能一上午都在刷新你的微博页面,而当你总结上午所能列出来的成就时,你会发现,其实上午我什么也没干,同样,让你总结一天的成就时,你会发现其实我一天什么也没干。

春节回家的近10天里,上网条件不好,跟别人一起找别的方式消遣,但一遇到需要网络的时候,利用网络的效率绝对是令人瞠目结舌的!就连赶火车的空隙都不忘写下千字记事,可见天天面对网络却做不出什么成就来是一件多么可悲的事情。也许可以责怪是网络的诱惑,但到底是自己的自控力不够罢了。

曾经想过,每次上网的时候都能定一个目标,这样就不会迷茫于网络中的事情。我现在很会“跳跃”性思维,可能就是得“益”于网络——每次别人跟我谈论这件事情的时候,我总在想着另外一件事情,这是一种思维障碍。设定目标有助于改变漫无目的浏览网页的习惯,甚至有时候一遍遍刷新某个页面而不知道自己接下来又要做什么

认真实在一件事情是令人愉快的,比如认真读完了一本书,认真完成了驾照的学习与考试,认真做完了一个工程。但认真完成的过程不是那么轻松可以实现的,所以这就是一个冲突的地方。冲突的原因是兴趣,如果你有兴趣,你可以很快完成,那怕是需要花钱的,如果你没有兴趣就是比较痛苦的一件事情了,因为你会很抗拒这件事情的发生。但最终我们还是要花时间完成的,为什么不早一些时间呢?

对自己的要求从来不会减少,但真正能做到的从来不会太多,我了解我自己,只能这样碌碌无为一生罢了