分类 默认分类 下的文章

Salesforce Read-only SObject

NOTE: this article is not the final version and will be update later

AttachedContentNote

  • This read-only object contains all ContentNote objects associated with an object. This object is available in API version 35.0 and later.
  • link to developer.salesforce.com

ActivityHistory

  • This read-only object is displayed in a related list of closed activities—past events and closed tasks—related to an object. It includes activities for all contacts related to the object. ActivityHistory fields for phone calls are only available if your organization uses Salesforce CRM Call Center.
  • link to ActivityHistory on developer.salesforce.com

windows不给力,切换到Archlinux

最近windows下面的svchost.exe因为windows update的关系在内存方面兴风做浪,一开机就吃掉了1GB内存。令人抓狂,禁用了windows update服务之后还是觉得这个系统越来越不舒服。想想最近这段时间使用windows也仅仅是上网、收发邮件、coding/matlab之类的活,对文档的编辑也仅仅限于word之类,游戏什么都基本没有碰,所以好吧,我还是切换回archlinux吧。

目前想到的是,code用eclipse代替好了(php、android都可以嘛)、office自然libre-office啦,其他使用svn之类的同步windows和archlinux下面的代码,文档就直接挂载windows分区好了。

不过archlinux由于经常不升级,所以升级老是出现问题,现在apper已经不能用了,只能吃豆人一下。

资源:

  1. Archlinux 删除无用包 pacman -Rns $(pacman -Qdtq)

Android开发学习路径

Android本身是在linux内核上的一套定制操作系统,而app运行环节则是在Android上定制的Java虚拟机。很多app功能的实现除了调用系统函数意外,还需要具有存储和网络功能,我们可能还需要搭建网络服务器来满足app的特定请求。所以,为了开发Android应用程序,所以以上提到的周边都需要(深入)学习。我们可以把它们分成Java基础,Linux基础,Android基础,存储和数据库基础,网站/服务器基础

注:此文参考观点1

一. Java 基础

1.1 Java基础语法 参考《Java知识点列表》v1.0

  • 开发环境:Java SDK 下载和安装、环境变量的配置(path和classpath)
  • 编程基础:标识符命名规范、Java数据类型、运算符与表达式、流控制(if, switch, for, while),函数
  • 面向对象基础:面向对象与面向过程(结构)之间的区别、面向对象基本思想(封装)、类的定义方法、对象和类的关系、对象的创建方法、通过对象使用成员变量和成员函数的方法、构造函数的作用、函数的重载、static的作用、this(self)的作用
  • 面向对象高级:继承(基本思想、作用、语法特点)、super的使用方法、多态(基本思想)、对象的向上转型和向下转型、final关键字的作用、接口和抽象类(定义方法、语法特征、在面向对象中的地位和意义)、设计模式(工厂方法模式)、Java当中异常的定义、异常的分类以及各自的特点、异常(try…catch…finally结构的使用方法、throw和throws的使用方法、自定义异常的使用方法)、内部类(定义方法、常见使用方法、匿名内部类的定义方法)
  • 线程:线程的定义、在Java中实现线程的两种方法、线程运行状态介绍(准备、运行、阻塞、死亡)、线程间通讯的方法、线程同步、线程死锁
  • IO:IO基本概念、输入流和输出流的作用、Java当中IO流的分类方法、常见IO类的使用方法
  • 常见类库:类集框架、日志相关类库的使用方法

1.2 设计模式

下列23中模式引用此文

  • 创建型模式工厂方法模式、抽象工厂模式、单例模式、创造者模式、原型模式

  • 结构型模式适配器模式、装饰器模式、代理模式、桥接模式、组合模式、享元模式

  • 行为型模式策略模式模板方法模式观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

  • 其他模式:并发型模式、线程池模式、MVC模式
    模式之间关系如下图所示
    java.model.relationship.jpg

  • 书籍资源:《Effective Java》 、《Agile Software Development:Principles, Patterns and Practices》和《head first 设计模式》

二. Linux基础

  • 《鸟哥的私房菜》
  • 内核API

三. Android 基础

3.1 Android 基本

  • Android开发和调试环境、Android应用结构、界面组件与界面编程、资源管理、四大组件

3.2 Android 中级

  • 文件IO与SQLite、图形图像与动画、音频视频的录制与播放、传感器编程、GPS应用

3.3 Android 高级

  • 网络编程、OpenGL-ES 3D开发、Java和C相互调用

3.4 资源

四. 存储和数据库基础

4.1 存储

4.2 数据库

  • SQLite

五. 网站/服务器基础

5.1 前端

  • HTML5基础:基本HTML和HTML5标签、常见表单标签
  • CSS3基础:基本CSS3语法、bootstrap等框架
  • JavaScript基础:JavaScript基本语法、JavaScript面向对象基础、JSON语法
  • Ajax:XMLHttpRequest和异步请求、发送请求和处理响应、常见Ajax库(jQuery等)

5.2 后端

  • 语言:php、python、Java、asp任意一种以上
  • 数据库:MySQL、noSQL等任意一种以上
  • XML:XML基本规则、DTD和Schema、XML和样式表、基于XML的数据交换

探索Typecho --2-- Sae memcache

SAE memcache

SAE的memcache基本继承了php本身的memcached,基于memcached有所优化

Typecho Mostcache 插件

Mostcache插件提供了MySQL的cache和SAE的memcache两种方案,因为路上部署在SAE上面,所以直接使用memcache方案。

使用memcache后,chrome浏览器的函数调用从53000+降低到了5300左右,也就是说只有原来的十分之一,而IE11和firefox则更加明显,直接降低到700-800,即只有原来的1.4%左右。换而言之,使用memcache后,性能提升明显。

使用cache后IE/firefox的函数调用图
callgraph1426240020-752.png

究其原因,因为Typecho在设计之初,对数据库进行了充分(过分)的抽象,导致加载页面的时候,会产生过多(复杂)的数据库查询。这就降低了整个网站的效率。

从第一个图片可以看出,在数据库查询是,对mysql_query的查询Inc:104.455ms,Excl:104.455ms,产生了62次调用;对Tyecho_Db_Query::filterColumn的查询Inc:101.316ms,Excl:87.362ms,产生了234次调用,而其对ctype_alnum则有15736次调用。两个大的数据库查询函数调用占到了接近50%(25%+24%)的总执行时间(416.407ms)。从第三个图,也就是采用了cache之后IE访问的函数调用图可以看到:总的执行时间为46.084ms,而且关于数据库查询的时间占用也下降到了<20%。

这再次说明cache是多么的重要!

意外发现

  1. chrome 对后台的调用比IE和firefox多了7倍(5300/750),而且还调用了两次
  2. 采用了gzip压缩网站之后,经常会出现ERR_CONTENT_DECODING_FAILED的错误,导致网站加载失败。。

探索 Typecho --1-- 选择和部署

为什么选择 Typecho

之前花了一个星期调试和优化emlog,使其能够更好的运行在SAE上。但是搞来搞去没搞个结果的时候,(准确说是寻找一个好用的markdown 框架/编辑器的时候),突然注意到Typecho。Typecho简单漂亮的界面吸引到了我,如果继续搞emlog,我还要进行前端的大修(HTML5+CCS3化),这是一个巨大的工程。但是Typecho则完全不用,前端非常简洁和漂亮。就如Typecho官网所说的那样,作为一个写代码的,有时候需要的就是些简单高效记录自己思考和学习的轻博客而已。Typecho很符合这个要求,也符合我的需求。而且居然已经有了SaeUpload这样适用于SAE 环境的插件,免得我再去coding。只是尼玛一个星期的时间完全做无用功实在是浪费啊

如何部署在SAE上

因为之前部署emlog的时候使用的是SAE上面的应用,结果发现其版本严重落后,导致增加了大量的后续修补工作。所以这次部署Typecho时,虽然SAE也有应用,但是还是采用了下载Typecho官方版本,然后再部署到SAE的方式。

步骤

  1. 新建一个应用,使用带有svn的IDE(Netbeansphpstorm等)update这个应用仓库来创建一个新的项目
  2. 从官网上下载最新版本的Typecho,合并到新创建的项目中,再commit到应用仓库中
  3. 下载SaeUpload插件,合并到项目中,再commit到应用仓库
  4. 输入 应用网址/install.php Typecho会识别出SAE环境,按照指引填入信息。由于SAE不能直接写入文件,所以Typecho会提示手动建立config.inc.php文件。
  5. 在IDE或者SAE提供的代码编辑器中建立config.inc.php文件,复制Typecho产生的内容保存到其中。如果是IDE下建立则还需要合并config.inc.php文件并commit到应用仓库中。
  6. 登录刚才建立的Typecho博客后台,开启SaeUpload功能。至此,Typecho博客系统就算真正部署在SAE上面了。

后续

  1. 添加了几个插件
  • google code prettify : 让代码部分看起来更漂亮一些
  • 多说插件: 使用多说社会化评论框架
  1. 添加了几个分类
  • 生活
  • Code (Android, webfrontend,webbackend)
  1. 想完成的事情
  • 同步所发日志到各个平台(Qzone, LJ, etc.)
  • 添加除了首页之外的其他分类