程序员心得体会
志_祥
C/C++/Java高级程序员,系统架构师,WebKit专家,目前从事Chromium-Android内核开发。
展开
-
关于浏览器核心的一些思考
在Chromium项目最让人感兴趣的2个声明:将WebCore核心模块化,以及用JS重新实现DOM。前者应可使得WebCore核心layout的代码结构更为清晰,第三方的定制裁剪也将更为方便,后者能,据说去除了罗哩罗嗦的JS-C++ bindings代码能能够进一步提高性能。这第2个目标一则反映了Google guys对他们的V8引擎很有信心,二来我想象不出什么是纯JS的DOM实现,反原创 2014-08-06 23:54:27 · 1525 阅读 · 3 评论 -
OpenStack是下一拨的技术潮流吗?
OpenStack到底是什么东西?这一点很让我困惑。看了市面是目前出版的几本书,无非就是原创 2014-08-07 00:06:30 · 957 阅读 · 0 评论 -
WebKit代码在资源受限的嵌入式环境下的定制问题
WebKit代码在资源受限的嵌入式环境下的定制问题传统的WebKit及Chromium为了性能和丰富的HTML5功能特性而优化,即使是iPhone或Android这样的手机移动设备,其内存也动辄以2G以上计。那么,当我需要在资源受限的嵌入式环境下运行WebKit,如何进行节省资源的裁剪定制呢?这里所谓的资源受限,指的就是像车载设备、智能电视这样的终端,CPU通常原创 2014-09-04 12:33:57 · 1928 阅读 · 0 评论 -
突破上下文约束的泛型迁移计算模型
突破上下文约束的泛型迁移计算模型本文设想的是一种未来的可能情形,作者不能保证它一定能被实现,至少这是一个不错的想法。TCS(理论计算机科学)还在为是否P=NP纠结,对NPC类问题而言,有个奇妙的说法叫“多项式归约”,或者简单地说,“归约”(reduce)通过多项式归约,所有的NPC问题可以看作计算机复杂度等价的,只是这种归约方法仍然需要人来想出来。这原创 2014-09-04 13:09:38 · 1186 阅读 · 1 评论 -
难以写对的quicksort
摘要:quicksort是Donald发明的算法,是平均性能最好的内排序算法。本文通过对照quicksort的标准写法和自己的写法,发现了一些隐藏的编程陷阱,故记录下来以供学习交流。 关键字:C/C++算法 程序设计 快速排序1 quicksort的主要思想从待排序的数组元素中选取一个作为中值元素(pivot),将原数组划分(partition)为2部分:小于p原创 2014-09-22 13:29:45 · 1457 阅读 · 0 评论 -
小米模式。。。
所谓的小米模式(饥饿营销)原创 2014-09-15 12:14:52 · 1099 阅读 · 0 评论 -
解决CSDN博客在Chrome浏览器上无法登陆的问题
在尝试登录CSDN博客时,原创 2014-09-15 10:28:33 · 1608 阅读 · 0 评论 -
使用Python语言编写简单的HTML5语法解析器
使用Python语言编写简单的HTML5语法解析器摘要:通过使用Python语言编写一个简单的HTML5语法解析器作为例子,探讨了在设计手写的递归下降语法解析器程序时需要注意的一些事项。 关键字:PythonHTML5语法解析器 正则表达式 递归下降 编译器技术 1 问题 如何编写一个语法解析器(Parser)呢?在C/C++语言领域,我们有le原创 2014-09-04 10:35:23 · 3510 阅读 · 1 评论 -
C++ 11:比较诡异的一些语法
C++ 11:比较诡异的一些语法目录 1 右值(&&)与move语义 2 函数返回值的类型推导+类型提示 3 OOP中成员函数的控制 4 编译期计算 5 原始正则表达式常量 6 unique_ptr 7 shared_ptr vs weak_ptr [1] 8 模板别名 9 Lambda原创 2014-09-14 18:13:39 · 1183 阅读 · 0 评论 -
Windows平台上编译Qt-4.8.x Debug版注意事项
Windows平台上编译Qt-4.8.x Debug版注意事项跳转至: 导航、 搜索目录1为什么要编译qt-4.8.x的Windows Debug版?21 MSVC版本的选择32 WinRAR的问题43 qmake子项目裁剪54 调试QtWebKit0 为什么要编译qt-4.8.x的Windows原创 2014-09-16 09:55:46 · 1677 阅读 · 0 评论 -
在Windows Qt-4.8.x平台上编译Qt-5.0+ WebKit(即qtwebkit-2.3.x) Debug版注意事项
在Windows Qt-4.8.x平台上编译Qt-5.0+ WebKit(即qtwebkit-2.3.x) Debug版注意事项跳转至: 导航、 搜索目录1C++编译问题1.1从idl生成.h/.cpp失败?1.2VS编译器版本1.3名字导出问题1.4找不到int64_t类型?1.5Windows上需要pt原创 2014-09-16 10:04:02 · 2559 阅读 · 0 评论 -
In-Place Merge Sort(这个描述实在太简单了,我一下子就明白了!不过这算MergeSort吗?算插入排序还差不多)
In-Place Merge Sort *If you want to avoid the space complexity required by having a scratch array, you can use the merge sort algorithm, but then move the data around within the original array. Thi转载 2014-09-26 23:23:01 · 2166 阅读 · 1 评论 -
修改Wordpress-4.0的文章编辑区内容(MCE控件)跟随最外面垂直滚动条滚动的问题
我架设的本地Wordpress-4.0,用于收集有用的文章。恼火的是,当粘贴的内容很长时,文章编辑区MCE控件不出现垂直滚动条,倒是最外面的窗口出现了滚动条,这种情况下,当前视图位置定位到编辑区底部,看不到标题输入input每次都必须鼠标拖动窗口滚动条使得标题输入input出现最好的解决方法自然是修改CSS,不过,这个目前不知道在什么地方修改有一原创 2014-09-27 12:33:44 · 2162 阅读 · 0 评论 -
Python计算机视觉编程 笔记
Python计算机视觉编程目录1基本的图像操作和处理2局部图像描述子3图像到图像的映射4照相机模型与增强现实5多视图几何6图像聚类7图像搜索8图像内容分类9图像分割10OpenCV11附录A 安装软件包12附录B 图像集基本的图像操作和处理PIL转化成灰度:g = Image.open('a原创 2014-10-07 22:57:15 · 2414 阅读 · 0 评论 -
浏览器新实用功能开发研究:启动到浏览器(Fire OS, Chrome OS, Web OS)与浏览器容器化
启动到浏览器(Fire OS, Chrome OS, Web OS)与浏览器容器化本文试图阐明2种不同的技术方案:一个是启动到浏览器(如Fire OS, Chrome OS, HP Web OS, Tizen Web Rutime),另外一个我称为浏览器容器化启动到浏览器相信大家多少已经有了解,它就是通过底层的驱动支持、HTML5 Device API等等,把浏览器内核做成整个原创 2014-10-26 23:06:01 · 1385 阅读 · 0 评论 -
做事情的真正态度
做事情的真正态度,就是说,你应该从中学到什么东西。如果说,你并没有学到什么东西,而是把你已经掌握的知识熟练地重新运用了而已,那这件事情其实没什么意义。再者,所谓学到什么东西,应该是学到你自己感兴趣的东西,及能够带来物质回报的东西。假如仅仅从金钱回报上来看是否是学到东西的标准,那么你无非是在拿自己的生命(时间精力)换钱。而这种行为,和奴隶没什么本质的不同。原创 2014-10-10 15:57:42 · 1264 阅读 · 0 评论 -
浏览器内核引擎开发工作的主要关注点
浏览器内核引擎开发工作的主要关注点跳转至: 导航、 搜索目录1稳定性2性能3功能4其他因素稳定性 对Android浏览器这种既有Java代码又有C++代码来说,稳定性意味着:Java代码不应该有NPE(空指针异常)C++代码不能出现内存错误,包括:null deref指针越界访问原创 2014-10-29 15:50:28 · 1294 阅读 · 0 评论 -
上海这边的租房行情(浦东/张江)
一个房间:1600好一点的差不多要2200单室套:3000赶集网上所谓1000左右的都是假的小于1500的没准也是假的都是黑中介拿来收集供求信息的而且似乎非常紧俏?那个什么人才公寓(据说有政府补贴,凭工作证明什么的不清楚)居然说都租满了??靠原创 2014-11-15 21:51:01 · 2008 阅读 · 0 评论 -
Windows上成功安装Ruby-1.9.3 gem mysql2
之前可能需要从libmysql.dll生成libmysqlclient.a: 来源cd C:\xampp-1.8.3\mysql\libC:\DevKit-tdm-32-4.5.2-20111229-1559-sfx\devkitvars.batpexports.exe libmysql.dll > libmysql.def //来源:C:\strawberry\c原创 2014-11-01 20:34:13 · 1584 阅读 · 0 评论 -
Windows上安装Redmine-2.6.0的日志(话说这个软件还是不如JIRA好用,话说是不是再尝试一下trac?)
C:\redmine-2.6.0>gem install bundlerFetching: bundler-1.6.2.gem (100%)Successfully installed bundler-1.6.21 gem installedInstalling ri documentation for bundler-1.6.2...Installing RDoc docum原创 2014-11-01 21:35:20 · 2923 阅读 · 0 评论 -
奇怪的undefined reference to `QString::free(QString::Data*)'链接错误
在将Qt-4.8的代码迁移到Qt-5.3时,(.text$_ZN5QListI7QStringE4freeEPN9QListData4DataE[QList::free(QListData::Data*)]+0x34): undefined reference to `QString::free(QString::Data*)'原创 2014-10-14 18:54:16 · 3844 阅读 · 4 评论 -
人生找不到安顿的感觉。。。
我希望这个世界哪一天会崩溃掉,但在那一天到来之前,首先崩溃掉的也许是自己。在激情的指引之下,我觉得我平淡的人生需要一点改变。但有时寻求安逸的想法忽然击中我的心灵,我知道是否应该追求一种安稳安顿。那个张爱玲的“岁月静好,现世安稳”成为许多年轻小美女的座右铭,多少美丽的脸蛋啊,最终都变成了毫无特色的熟女的脸。在这一时,我感觉到我人生的Loser和悲惨,我想我也就只能原创 2014-11-19 22:59:39 · 1050 阅读 · 0 评论 -
吃螃蟹的乐趣
今天忽然兴致所来,打算中午吃螃蟹。楼下卖水产的店问了问价钱,大的40一斤,买了1公1母,一共25块钱,不贵。叫买家用绳子把2只螃蟹扎好了,拎回去,先用盆水泡上一回,清清里面的泥沙和腥味。OK,是时候了,把电饭锅倒上水,把2只螃蟹放进蒸笼里,按下电源按钮,开煮了大概半个小时过去,估摸着应该好了,打开盖子,螃蟹的背部泛着股橙黄色,熟了。还是冷原创 2014-10-19 22:06:50 · 1121 阅读 · 0 评论 -
我想跟你说说,今天这一天发生的事情(心外)
见了一些人,其中有一些美好的容颜,还没来得及问他名字就已经各奔东西,又说了一些话,都是些不值得一提的生活琐事,正如生命中的一段时间8个小时,忽然就已经到了傍晚时分我在这一天里体悟到了什么吗?只是若有所语,却刹那间已经忘言;若有所思,却疏忽之间已经惘然原创 2014-11-22 20:37:40 · 1423 阅读 · 0 评论 -
特别好用!把软件做成‘耐用品’——读周鸿祎《我的互联网方法论》有感
特别好用!把软件做成‘耐用品’——读周鸿祎《我的互联网方法论》有感从他说的2个例子:用户下载了软件却不知道点击安装、以及那个“云同步”软用户上传到云服务器端就以为本地的可以删除了(可见所谓的同步软件本质的作用是通过备份增加数据安全,而用户只是想通过数据上传节省本地存储空间),这可以看出,注重用户体验,把软件做到“特别好用”,是有很大的挑战性的。我进一步可以总结出,不仅仅是要特别好用原创 2014-10-21 14:12:17 · 1275 阅读 · 0 评论 -
微型信用支付:网络微型金融的未来
现在所谓的微型金融模型是:消费者需要预存一笔钱给托管运营商,比如支付宝。但这种模式导致大量的钱囤积在一家,用户损失了现期可支配收入、淘宝赚了利息收入不说,实际上还有3个缺点: 1、 托管行收取手续费,这对“自由的贸易”(也就是服务的交换)是巨大的伤害;2、 托管行有可能拿这些圈水池里的钱去投资,当然,目前的模型只有余额包这种垃圾例子,但不管怎么说,任何投资带来了风险;3、 用户原创 2014-10-21 11:11:10 · 1160 阅读 · 0 评论 -
CreateDialog Win32 API调用的一个小问题
在老版本的VC编译器上,关键调用是以下2句: InitCommonDialogs(); HWND hwndDialog = CreateDialog(hInstance, "IDD_XXX", ...);但是在新版本的VS上,InitCommonDialogs这个API似乎已经没了,而CreateDialog还有,问题是,对话框的界面出不来,什么原因呢?原创 2014-11-03 17:46:23 · 1561 阅读 · 0 评论 -
也许一个人成熟的标志,就是对别人的痛苦毫不关心
对别人的痛苦毫不关心,并不代表不尊重,想法,相信一切都只靠自己,也只能依赖自己,这是对自己能力的信心有些事情其实并非没有能力去做,只是没有机遇、或者,没有时间既然相信一切靠自己,对于别人,这个标准也是一样的假如别人正在感受人生的痛苦,恐怕那是他自身的立场所造成的。同时,假如某种他人的痛苦,竟然能使得你灵魂颤抖,恐怕你的心灵还不够坚定真的勇士,应该有勇气面对所有的失去原创 2014-11-22 20:25:46 · 1201 阅读 · 0 评论 -
记下一点东西吧,Sublime Text 3快捷方式:Ctrl + P,可以快速输入关键字以模糊匹配文件名
Sublime Text这种软件的意义在于什么?事实上,它比VS做得好的是:加载大型目录层次结构时,速度飞快可能是因为它底层模块化+插件式按需加载的架构决定的VS2010以上版本加载大型软件(比如说WebKit)时,由于预处理需要分析C++头文件的递归包含进行索引什么的导致性能狂差,设计上最垃圾的就是,这些本来应该是后台处理的过程却阻塞了主UI线程,导致界面失去响应,Shit原创 2014-11-27 21:45:24 · 4277 阅读 · 0 评论 -
回到阔别两周的南京
晚7点到了虹桥站居然没票然后被一女的忽悠上了一辆大巴1508点左右开车,中途在无锡、常州、丹阳下客然后终于在12点左右到达了南京打的额外20到了租住的地方另外2个房客居然也不知道跑哪里去了见鬼我在想提前买了星期天晚上回上海的票是不是太急躁了点重开迅雷一点速度也没有了看来这宽带网络也没有什么用处了娘的原创 2014-11-29 01:24:28 · 2659 阅读 · 0 评论 -
腾讯的垃圾电话面试,补充更新
2周之前经由猎头推荐给腾讯深圳投了份简历于是2周后我收到了电话面试的机会???我告诉他最近已经入职了然后他似乎有点不爽我说可以聊聊于是他开始得意洋洋地逼问我问题他可能以为我一直是做Android Chromium的然后问我移动网络下如何解决浏览速度问题我说先从DNS解析开始,找最快的服务器于是他追问,如果有几个服务器,如何处理?我说那就并发地发请求当原创 2014-11-29 01:42:15 · 9757 阅读 · 34 评论 -
编程语言的书,写“深入”、“高级”的通常都不值得看,但是说“入门”的却往往难度很大
当然,我不是说中文类的书中文类的计算机书,偏学术的基本上都是抄的国外的,偏实用的则功力都不够譬如最近的《Go并发编程》厚厚的一大本,可书的前2/3基本上都是在谈Go的基本语法概念然后是并发的基本概念(并发的几种模型,如何保证一致性和同步)最后仅有一小部分内容(代码示例)才是符合书名的我严重怀疑作者是不是要故意写一本大部头的书来让初学者对他高山仰止?我虽然不对那个大部头的原创 2014-12-01 20:21:07 · 1574 阅读 · 1 评论 -
有个非计算机专业的问我:怎么学写游戏?
下面是我的回答:1、游戏分为不同的平台类型:网页游戏、移动端的手机游戏、PC端游戏、专用主机游戏,作为个人开发者,基本上只有第二种能够赚钱,第一种需要服务器端的运营,后2种就不用考虑了2、写游戏用什么软件工具?简单的说来,就两个:2D的用Cocos-2D,3D的用Unity 3D。且它们都有一个好处:可以直接跨平台部署到Android/iPhone上去(甚至网页端)。3、但关键的问题是原创 2014-12-01 21:20:02 · 1461 阅读 · 0 评论 -
Linux环境下的Git服务器配置
Linux环境下的Git服务器配置跳转到: 导航, 搜索目录 [隐藏] 1安装Git -1.8.0(服务器端&客户端)2生成客户端SSH公钥密钥对(也可在服务器端生成,并将密钥拷贝到客户端用?)3将客户端密钥添加到服务器端4服务器端初始化代码库5客户端初始化代码库,并push到服务器端6从另一个客户端执行git c原创 2014-12-17 23:42:44 · 926 阅读 · 0 评论 -
Chromium M34上图像(IMG元素)的直接合成,不走NativeImageSkia::draw路径的相关代码
// An image can be directly compositing if it's the sole content of the layer, and has no box decorations// that require painting. Direct compositing saves backing store.bool CompositedLayerMapping:原创 2015-01-06 15:24:16 · 1075 阅读 · 0 评论 -
Android Chromium:成功地获取到用户自定义的系统默认字体设置
这个事情的原理是这样的:Android系统官方是不支持修改系统默认字体的,所有能够修改的情况都是OEM产商修改了framework层的代码,同时集成了高权限的预安装应用服务。怎么做的呢?其实很简单:修改android.content.res.Configuration类,Configuration类保存系统级别影响所有的Activity View显示的设置。如果Configuration类原创 2015-01-27 18:17:58 · 2453 阅读 · 1 评论 -
垃圾的LinkedIn(领英)网站
突然收到LinkedIn的一封邮件,说某某猎头看过我的简历问题是链接点击去之后还不能查看这个人的资料需要发送InMail什么是InMail呢?不知道反正是需要升级账号每个月20美元?!去他妈的滚垃圾的LinkedIn试图用名字搜索,找不到这个“浏览过我简历”的人问题是、重点!这个人我认识!妈的再骂一句,垃圾的LinkedIn网站!原创 2014-12-18 14:32:36 · 2771 阅读 · 0 评论 -
不幸的问题还是出现了:Chromium代码上整理patch(working目录/master分支),部分文件做了git checkout恢复,结果GYP再编译就出错了
redtea@Lenovo:~/Projects/Chromium/src$ ninja -C out/Release android_webview_apkninja: Entering directory `out/Release'[3/24] CXX obj/android_webview/browser/android_webview_common.shared_renderer_原创 2014-12-19 15:12:36 · 2600 阅读 · 1 评论 -
最近的工作记录:键盘敲入的Linux Shell命令,哈哈
2023 sudo /home/cteng/ProgramFiles/Android/sdk/platform-tools/adb kill-server 2024 sudo /home/cteng/ProgramFiles/Android/sdk/platform-tools/adb start-server 2025 adb install -r out/Release/apks原创 2014-12-19 13:35:47 · 1465 阅读 · 0 评论 -
阴冷天,偶有所得
发现许多人活在这个世界上的意义就是为了装逼。。。真无聊做好产品的根本指导思想就是:与客户(用户)有谈恋爱的感觉。只有这种感觉才能带来感情,而感情是维持长久关系的前提。小米把它的垃圾手机升级一下装备并提价,这是自抬身价的行为。令人厌恶。原创 2015-01-30 09:49:39 · 905 阅读 · 1 评论