Android Studio

Intellij IDEA

Android Studio基于Intellij IDEA 开源的社区版。Intellij IDEA是一个Java IDE,通过插件也可以支持各种语言,由捷克一家专做IDE的jetbrains公司出品。Intellij IDEA的社区版是开源的。Google在其基础上二次开发了Android Studio.

Android N requires the IDE to be running with Java 1.8 or later?

这是因为android studio去引用mac默认安装的jdk6了,在About中可以看看jre和jvm的值。
在点击Android Studio的File-Other Settings-Default Project Structure中也可以看引用的jdk位置。
用java -version查看
path中的java版本。
修改引用的jdk版本
1、在Finder/应用程序中找到Android Studio;
2、右击显示包内容,在子目录下找到 info.plist 并用文本编辑器打开;
3、找到 JVMVersion 并将 1.6*中的版本号改为你系统JDK的版本号,或者修改为 1.8*即可(注意:Android Studio只支持jdk1.6及以上版本)

修改快捷键

快捷键设置位于File–>Settings–>KeyMap
修改编辑提示快捷键:搜索Completion,或者进入其中的main menu/code/completion/,选中basic,右键add,在first stroke中直接按组合键。然后可以右键remove旧的快快捷健。
手动处理错误或警告 control+enter

http://www.cnblogs.com/yuqf/p/5439868.html

gitignore

在项目目录下找到.gitignore文件(一般有两个地方存在该文件:一是根目录下,一是app目录下)
Android项目有一个标准的需要忽略的文件,在GitHub上去下载Android.gitignore文件
https://github.com/github/gitignore/blob/master/Android.gitignore

“#”表示注释,”*”表示通配符,可多个,”/”表示目录,”!”表示不忽略匹配到的文件或目录,”?”表示通配单个字符,”[]”表示包含单个字符的匹配列表。

Instant Run

传统情况下,修改程序后重新运行一次程序需要经历 代码重新编译 -> 停止程序 -> 重新安装 -> 重新启动 的过程,Instant Run则尝试只将程序变更的部分部署到手机上,尽量避免重新安装或重新启动程序,大大提升调试程序的效率。
当我们第一次运行程序之后,Android Studio中的运行按钮的三角形旁边多了一个闪电符号,这就说明现在可以使用Instant Run了。
Instant Run主要分为三种类型,hot swap、warm swap和cold swap,Android Studio会根据代码的修改情况自动选择使用哪种swap类型。

你真的了解 Instant Run 吗?

Android 5.0以下运行时出现 java.lang.NoClassDefFoundError

http://www.jianshu.com/p/8b4f711da0bb
https://developer.android.com/studio/build/multidex.html

Android studio Maven仓库使用

http://www.cnblogs.com/sihaixuan/p/4852974.html

Android Studio 工程结构

http://blog.csdn.net/a_asinceo/article/details/46875119
http://kvh.io/cn/embrace-android-studio-migration.html
http://kvh.io/cn/embrace-android-studio-indepth.html

激活

JetBrains 授权服务器(License Server URL):http://idea.imsxm.com/
http://www.imsxm.com/jetbrains-license-server.html

imsxm提供的在线视频免广告转换播放

http://www.imsxm.com/video.htm

Building Gradle project info

Building Gradle project info,或Refreshing project info 持续很久,修改gradle/wrapper/gradle-wrapper.properties中的distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip,修改build.gradle中的classpath ‘com.android.tools.build:gradle:2.2.0’,从其它正常工程中把.gradle下中的版本号文件夹拷贝到对应目录。重启工程。

React Native运行Android时提示要下载 gradle-xx-all.zip 引发错误

可到androiddevtools网站进行单独下载 http://www.androiddevtools.cn/,下载完成后,不用解压,拷贝到例如 ~/.gradle/wrapper/dists/gradle-2.4-all/6r4uqcc6ovnq6ac6s0txzcpc0 目录中,再重新执行react命令。

工程中常需要修改的配置文件

local.properties

sdk.dir=/Users/admin/Library/Android/sdk

build.gradle
app/build.gradle

使用Android Studio要先了解Gradle
http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0126/2361.html

技术选型

web开发技术选型

前端

将不同的思想和工具进行对比,是一种更好地理解它们的方式

http://developer.51cto.com/art/201207/350506.htm
http://www.codeceo.com/article/top-10-css-ui-framework.html
Jquery、Bootstrap、Angularjs、React、ExtJs、DOJO、JUI(DWZ)、JQueryUI、Flat UI、jQuery UI Bootstrap、

jQuery是一个库

zepto.js是一个专为mobile WebKit浏览器(如:Safari和Chrome)而开发的一个JavaScript框架。它标榜自己在其简约的开发理念,能够帮助开发人员简单、快速地完成开发交付任务。更重要的是这个JS框架,是超轻量级的,只有5KB。zepto.js的语法借鉴并且兼容jQuery

AngularJS是一个重量级框架
使用库是指你的代码决定什么时候从库中调用一个特定的方法;
使用框架则是你实现了一些回调方法,到了特定的时候框架会去调用这些方法。

Backbones是一个轻量级框架,侧重于REST数据交互。

Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。

vue.js是一个简单灵活的框架。
技术上,Vue.js 重点集中在MVVM模式的ViewModel层
Vue.js的API是参考了AngularJS、KnockoutJS Ractive.js Rivets.js
Vue.js根据一些增加的私有的HTML属性来做一些对DOM的处理

nodejs
http://www.csdn.net/article/2014-02-24/2818519-node-js-mvc-frameworks-for-javascript-developers

ExtJS 与 easyUI比较
ExtJS是一种主要用于创建前端用户界面的前端ajax框架。

REST
REpresentational State Transfer,表述性无状态传输,无需session,所以每次请求都得带上身份认证信息。rest是基于http协议的,也是无状态的。只是一种架构方式,所以它的安全特性都需我们自己实现,没有现成的。建议所有的请求都通过https协议发送。RESTful web services 概念的核心就是“资源”。 资源可以用 URI 来表示。客户端使用 HTTP 协议定义的方法来发送请求到这些 URIs。

RestKit是一款主要用于iOS上网络通信的开源框架,旨在与RESTful web服务的交互变得更简单快速。它基于强大的对象映射系统,并且结合了一个干净、简单的HTTP请求/响应API,大大减少了开发人员开发过程中所需的代码量。除了发送请求与接受响应这些基本功能外,还附带coredata,以及将远程JSON映射为本地对象的功能。

ZK是一个Ajax Java Web框架,利用少量代码就能够开发出拥有Rich UI的Web应用。ZK提供基于XUL的标记语言和事件驱动的组件,可以让你像开发桌面应用程序一样简单。

Emberjs是一个用于创建 web 应用的 JavaScript MVC 框架,采用基于字符串的Handlebars模板,支持双向绑定、观察者模式、计算属性(依赖其他属性动态变化)、自动更新模板、路由控制、状态机等。

PHP框架

CodeIgniter,ThinkPHP,Yii,Larval,Zend Framework,CakePHP,Symfony,ThinkPHP,FleaPHP, Smarty

ThinkPHP是 一个是国内框架运营方面的榜样
Yii是国际化的项目,所以代码的注释仍旧是英文
Yii是纯面向对象的的框架,而TP提供了一系列单字母函数
无论从代码规范、设计思路、类库丰富程度上来说,TP都远远不及Yii。简单和简洁不是一回事。TP那叫简单,Yii的代码才叫简洁。

缓存

Redis、Memcached(MC)
OSCache是一个受到争议的开源缓存框架,OpenSymphony网站已经关闭(OpenSymphony可是诞生过Quartz、WebWork、SiteMesh和OGNL等数个非常有名的框架的)了,它也已经不维护了。在JavaEE的缓存框架领域,似乎已经是EhCache等其它支持分布式的缓存框架的天下了,OSCache垂垂老矣?但是OSCache的源代码依然值得一读,一度作为最常用的缓存框架,代码量却不大,绝大部分类一天的时间就可以详详细细地阅读完。

谈谈redis,memcache的区别和具体应用场景
http://www.cnblogs.com/Hondsome/p/5962144.html

NOSQL数据库

Redis、Mongodb
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

web容器或应用服务器

JBoss、Tomcat、GlassFish、Geronimo、Tomee、Wildfly、Jetty、Tiny、Jonas、Resin、Caucho、Enhydra、Nginx

商业完整应用服务器

Websphere、WebLogic

j2ee框架

Solr、Hadoop、Netty、Struts、Hibernate、Spring

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包

Finagle是Twitter基于Netty开发的支持容错的、协议无关的RPC框架,该框架支撑了Twitter的核心服务。来自Twitter的软件工程师Jeff Smick撰文详细描述了该框架的工作原理和使用方式。

消息框架

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,如今已经成为OASIS规范。是一个客户端服务端架构的发布/订阅模式的基于二进制消息传输协议。

物联网(Internet of Things,IoT)机器之间(Machine-to-Machine,M2M)的大规模沟通对传统的HTTP请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式。这就是轻量级、可扩展的MQTT(Message Queuing Telemetry Transport)。MQTT规范很简单,非常适合需要低功耗和网络带宽有限的IoT场景。

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线,是一个队列项目,支持MQTT、AMQP等协议。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

MQTT-Node.js实现-Mosca简介
http://www.jianshu.com/p/8315acec4e6b
MQTT入门篇
https://zhuanlan.zhihu.com/p/20888181
物联网核心协议—消息推送技术演进
http://www.cnblogs.com/Free-Thinker/p/5559798.html
物联网MQTT协议分析和开源Mosquitto部署验证
http://www.cnblogs.com/Free-Thinker/p/5559816.html

全文检索引擎

sphinx、coreseek
Coreseek是基于Sphinx开发的一款软件,对Sphinx做了一些改动,在中文方面支持得比Sphinx好。
http://www.coreseek.cn/
http://www.oschina.net/question/84274_11938
目前coreseek已经很久不更新了,稳定版3.2.14内带的的sphinx还是 0.9.9 release版本的
http://blog.csdn.net/ownfire/article/details/39316743

android 资源

几种DisplayMetrics
DisplayMetrics{density=3.0, width=1080, height=1920, scaledDensity=3.0, xdpi=403.411, ydpi=403.041}  360点宽

DisplayMetrics{density=1.5, width=480, height=800, scaledDensity=1.5, xdpi=270.93332, ydpi=270.93332} 320点宽

在mac版本的safari浏览器中,打开网页后,在开发/进入响应式设计模式,可调试移动版本界面。

android经典开源代码分享
http://www.23code.com/

安卓巴士精品源码
http://www.apkbus.com/forum-417-1.html

Android Design Support Library
zblibrary

ORM

  • Hibernate
  • Mybatis

Ibatis,ORM领域中一个框架,相对hibernate而言,ibatis更加小巧,更易于学习,对数据库设计不太友好的,使用ibatis比hibernate更合适。ibatis不会像hibernate一样生成SQL,而是需要开发人员自己去写SQL语句,这一点也给于了开发人员更灵活的设计与操作。hibernate相对来说,在一些复杂的数据处理方,并不如ibatis灵活。
2010年这个项目由apache software foundation 迁移到了google code,ibatis3.x更名为Mybatis

php,jsp

Php是解释执行的服务器脚本语言,语法和c语言比较象

Java首先要编译成字节码.class文件,然后在java虚拟机上解释执行。Java的web开发首先最容易想到的就是JSP(现在已经到JSP2.0),原来的java的web开发都是用servlet来实现的,用servlet来开发需要程序员在java的源文件中嵌入大量的html代码。所以后来就出现了JSP,JSP可以方便的嵌入到html文件当中,其实jsp文件在服务器上执行的时候首先会被应用服务器转换成servlet,然后再编译执行。Java的web开发属于SUN公司定义的J2EE其中的规范。J2EE适合于做大型的企业级的应用。

PHP对于不同的数据库采用不同的数据库访问接口,数据库访问代码的通用性不强。Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库,访问数据库的接口比较统一。用Java开发的web应用从MySQL数据库转到Oracle数据库只需要做很少的修改。
PHP开发的程序的源代码是公开的,用户拿到php代码后可以进行修改。
Java开发的程序,最后用户拿到的是一些编译好的class类,无法看到完整的源代码,安全性高。

Apache 和 Tomcat

Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP、PHP)
Tomcat是一个servlet容器,可以认为是apache的扩展,但是可以独立于apache运行
Apache和Tomcat整合使用可以减少Tomcat的服务开销。

国际化

要做国际化,则编码中的文字资源不能用中文标识,而要用英文标识,因为程序代码是基于英文的,这样在编码工作时开发工具会自动提示字符串资源标识。Android开发就是这样的规则。

jsp vs php
在我理解,其实PHP就是一个页面语言,所有东西都是在同一页面完成的,而JSP跟PHP的本质区别在于JSP有后台,可以把页面里的内容发送到后台,经过后台处理后再返回,这样才真正意见上的把数据跟显示分开,而PHP虽然可以通过框架,或者自己写个函数来把数据和显示分开,但是,它们最后都得通过require命令导入到同一个文件里,也就是说,其实最后所有的代码都是在同一个页面里,试想一下,所有的事情都在同一页面里完成,那它的后期维护是多么的恐怖啊,我想这也是为什么大型网站一般都不会用PHP的原因吧。

CSS预处理器框架

CSS预处理器是一种语言,基于并扩展了CSS语法,并且为CSS增加一些编程的特性,例如可以在 CSS 中使用变量、简单的程序逻辑、函数等, 使CSS 更见简洁,灵活。
CSS预处理器定义了一种新的语言将Css作为目标生成文件,然后开发者就只要使用这种语言进行编码工作了。预处理器通常可以实现浏览器兼容,变量,结构体等功能,代码更加简洁易于维护。
预编译生成css目标文件是在发布前完成的, 而不是让浏览器处理的。
常见的 CSS 预处理器框架: Sass、Less、Stylus。
还有SCSS是SASS的新语法,是Sassy CSS的简写。

但预编译不是万金油,CSS的好处在于简便、随时随地被使用和调试。预编译CSS步骤的加入,让我们开发工作流中多了一个环节,调试也变得更麻烦了。更大的问题在于,预编译很容易造成后代选择器的滥用。曾经有一个观点是预编译可以解决样式覆写的问题,而有的观点认为正是预编译语言模糊了样式覆写的问题,而导致要解决样式相互覆写的问题时,问题已经变得规模庞大而难以解决。

SOA

SOA (Service-Oriented Architecture) 面向服务的体系结构
SOA是一个组件模型,它把应用程序的不同功能单元称为服务,这些服务通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,被广泛应用于阿里巴巴集团的各成员站点。Dubbo自2011年开源后,已被许多非阿里系公司使用。

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。另外一个是Windows注册表文件。

thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

Apache Storm与Apache Spark,它们都能提供良好的实时处理能力。两套方案都归属于Apache软件基金会,而且除了在功能方面的一部分交集之外、两款工具还各自拥有着独特的特性与市场定位。

搜索服务

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二最流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

工程管理

Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。

语言

Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发。
Erlang([‘ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。顺序执行的Erlang是一个及早求值, 单次赋值和动态类型的函数式编程语言。
Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

概念

SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),the application service provider(ASP,应用服务提供商),hosted software(托管软件)所具有相似的含义。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。

Paas,Platform as a Service: 平台即服务, 是面向软件开发者的服务, 云计算平台提供硬件, OS, 编程语言, 开发库, 部署工具, 帮助软件开发者更快的开发软件服务. 比如Google的GAE.

SaaS: 软件即服务, 是面向软件消费者的, 用户无需安装, 通过标准的Internet工具(比如浏览器), 即可使用云计算平台提供的软件, 比如Salesforce的CRM管理系统, Google的Gmail.

还有IaaS 基础设施即服务, 这个跟PaaS的区别倒是不那么明显, 比如Amazon的IaaS服务AWS越来越像PaaS了.

领域驱动设计(DDD)
面向对象是大部分语言的一个基本特性,像C++、Java、C#这样的静态语言,Ruby、Python这样的动态语言都是面向对象的语言。但是面向对象语言并不是银弹,如果开发人员认为使用面向对象语言写出来的程度本身就是面向对象的,那就大错特错了。实际开发中,大量的业务逻辑堆积在一个巨型类中的例子屡见不鲜,代码的复用性和扩展性无法得到保证。为了解决这样的问题,领域驱动设计提出了清晰的分层架构和领域对象的概念,让面向对象的分析和设计进入了一个新的阶段,对企业级软件开发起到了巨大的推动作用。

HTTPS
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯。

CRM
客户关系管理,对客户关系管理应用的重视来源于企业对客户长期管理的观念,这种观念认为客户是企业最重要的资产并且企业的信息支持系统必须在给客户以信息自主权的要求下发展。

LVS (Linux Virtual Server),是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

什么是C100K,要解释这个就先得从大名鼎鼎的C10K Problem说起。
随着互联网的迅速发展,越来越多的网络服务在处理数以万计的客户端连接时,往往出现效率低下甚至完全瘫痪的情况,这就是C10K问题。解决C10K问题,通俗地讲,就是通过硬件和软件的配合,达到单台服务器可以淡定地处理 10*1000=10000 条来自客户端的长连接,可以称之为是IT界的“极限运动”。硬件和软件技术日新月异,C10K如今已经是“小菜一碟”了,更高的目标,比如C50K、C100K、C200K、C1M等等,也相继地被牛人们斩于马下。

HTML

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

nodejs框架

Express.js无疑是当前Node.js中最流行的Web应用程序框架。另外两个最流行的框架分别是Koa和Hapi。
LoopBack 是建立在 Express 基础上的开源 Node.js 框架,专门为 Mobile,Web 和其他设备做了优化。LoopBack 能够连接到多个数据源.

ES6 的出品为 JS 成为企业级语言扫清障碍,与之配套的,我们需要一个真正的企业级框架。Express 像一个精巧的微内核,不足以支撑起一个大项目。 而 LoopBack 是一个真正的企业级框架。

LoopBack 是建立在 Express 基础上的企业级 Node.js 框架,这个框架支持
node 框架 LoopBack 教程
http://cnodejs.org/topic/57e5b2859c495dce044f397c
Loopback 2.0
http://loopback.io/doc/en/lb2/Remote-methods.html#overview
Loopback 3.8.0
http://apidocs.strongloop.com/loopback/#model-remotemethod
http://apidocs.strongloop.com/loopback/#persistedmodel-create
https://loopback.io/doc/en/lb3/Remote-methods.html

Unit.remoteMethod(
        'deleteRecursive',
        {
            description:'',
            accessType: 'WRITE',
            accepts: {arg: 'id', type: 'string',description: '机组 id', http: {source: 'query'}},
            returns: [{arg: 'status', type: 'string'}],
            http: [
                {verb: 'delete', path: '/deleteRecursive'}
            ]
        }
    );
#source的选择有 body,path,query

OpenResty®
通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台

TiledMap

http://www.mapeditor.org/

在地图中选中图块,按键盘“X”快捷键可以实现图块水平翻转,“Y”是垂直翻转,“Z”键可以循环90度翻转。

还有一个随机模式的按钮,选中之后,在地图块上按住右键框选一大块地图,这时候在地图上绘制的时候会随机从选中的很多图块中里面选取一个绘制在地图上。

新建地图时设置的块大小和导入的图片源时设置的块大小可以不一样,在地图块填充的时候会发现,TileMap会自动以左下角为
对齐点,那么超过的部分就自动向上和向右延伸。

cc_vertex=automatic
cc_vertexz=-1000
cc_vertexz=automatic
cc_alpha_func=0.4
setTileGID

http://www.tairan.com/archives/3480

Xcode

生成发布ipa文件

  1. 选择运行设备 iOS Device模式
  2. Product/Archive 编译
  3. 自动进入Organizer-Archives界面,选中生成的项,点击Distribute…按钮,
  4. 在弹出的界面中选择第2项,Save for Enterprise or Ad Hoc Deployment
  5. 选择签名证书,点击Export按钮,保存生成的ipa文件

删除残留的Provisioning Files

到目录~/Library/MobileDevice/Provisioning Profiles中删除

Xcode下载地址

需要先登录开发者账号,修改其中的版本号来下载更新的版本

Xcode8.3.3百度网盘下载
http://www.swift51.com/xcode/8.33.html
http://adcdownload.apple.com/Developer_Tools/Xcode_7.1/Xcode_7.1.dmg
http://adcdownload.apple.com/Developer_Tools/Xcode_8.3/Xcode_8.3.xip
或者 https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.1.1/Xcode_7.1.1.dmg

在迅雷中下载时,可以选择登录服务器,并输入开发者账号,才能正常下载。

Xcode 7 error: “Missing iOS Distribution signing identity for …”

http://stackoverflow.com/questions/32821189/xcode-7-error-missing-ios-distribution-signing-identity-for

I also faced the same issue today. The following steps fixed my issue.

Download https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Double-click to install to Keychain.
Then in Keychain, Select View -> “Show Expired Certificates” in Keychain app.
It will list all the expired certifcates.
Delete “Apple Worldwide Developer Relations Certificate Authority certificates” from “login” tab
And also delete it from “System” tab.
Now you are ready go.

Xcode快捷键

option 对应符号 ^,对应alt键
command 对应符号 #花,对应win键
control 对应符号 z-,对应ctrl键
shift 对应符号 向上箭头

切换头/源文件 command+option+上箭头
重复 command+shift+z
注释 command+/
文件首行 command+上箭头
文件末 command+下箭头
行首 command+左箭头
行末 command+右箭头
上一单词 option+左箭头
下一单词 option+右箭头
格式化代码:选中后 ctrl+I,

用模拟器截图时要使模拟器比例在100%才能截出原尺寸的图片

WordPress

安装插件提示输入FTP账户信息问题

出现这个的问题的原因是Apache/Nginx的执行身份不是文件属主身份
解决办法:
把网站目录所有者修改为www服务器:

chown -R www 网站目录

或者在wp-config.php里加入下面代码

define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);

然后修改确保wordpress\wp-content\plugins目录可写权限

可能要使用的插件

  • Akismet:Used by millions, Akismet is quite possibly the best way in the world to protect your blog from comment and trackback spam. It keeps your site protected from spam even while you sleep. To get started: 1) Click the “Activate” link to the left of this description, 2) Sign up for an Akismet API key, and 3) Go to your Akismet configuration page, and save your API key;
  • Chinese UserName:允许用a-z0-9_.-@和汉字作为用户名;
  • Disable Google Fonts:Disable enqueuing of Open Sans and other fonts used by WordPress from Google;
  • Login Wall:This plugin enables LoginWall Protection for WordPress logins;
  • Simple Local Avatars:Adds an avatar upload field to user profiles. Generates requested sizes on demand, just like Gravatar! Simple and lightweight;

Eclipse

ADT

ADT:android developers tools
android develop官网上下载eclipse sdk整合包adt-bundle-mac-x86_64.zip,其中包括了Elipse+ADT plugin、Android SDK Tools、Android Platforms-tool、The latest Android platform。

解压adt-bundle-mac-x86_64.zip 到用户目录,其下有两个目录 eclipse和sdk,其中eclipse是整合了ADT插件的eclipse。

javadoc

在eclipse的android工程中添加外部javadoc.jar包
外部的jar包常带一个开发文档即javadoc,可以把它导入eclipse,在写代码事自动提示。
在Libraries选项卡中,展开jar,设置javadoc location。

修改perspective

preferences/run/debug/perspectives中可调节使用的perspective

修改字体和颜色

修改java代码页面的字体大小:wiondow–preferences–general–appearance–colors and fonts–java–java editor text font,点右边的edit,修改字体。

修改xml页面的字体大小:Window –> Preferences –> General –> Appearance –> Colors and Fonts –> Basic –> Text Font –> Edit

修改编译级别

在JAVA 1.5和1.6中@override的用法是有区别的,虽然改变了JRE但eclipse还是会报错。
解决办法:Windows->Preferences–>java->Compiler–>compiler compliance level设置成6.0,清理工程重新编译。

设置代码模板中的用户名

方法一. 修改Eclipse 启动参数
在Eclipse启动时加入启动参数或eclipse.ini中添加一句 -vmargs -Duser.name=myname

方法二. 修改Eclipse代码模板
通过菜单 Window->Preference -> Java -> Code Style -> Code Templates 在右侧选择Comments,将其中的Types项,然后选右边的”Edit”,进入编辑模式,将 @author ${user} 中的${user}修改为myname。

Mac Eclipse中找不到SDK Manager菜单

解决:Window/Customize Perspective/Command Groups Availability中,勾选Android SDK and AVD Manager

You must restart adb and Eclipse

关掉eclipse,然后在命令行运行命令

adb kill-server
 adb start-server

启动eclipse

快捷键

移除未使用的导入
移除某个类中的,在Java类中按键Ctrl+Shift+O
移除整个包中的,在Package Explorer下右键点击包名,依次选择Source——Organize imports
保存时自动移除,Windows——Preferences——Java——Editor——Save Actions,选择Perform the selected action on save,再勾选Organize imports
删除行 ctrl+d
快速查找文件 ctrl+shift+r  菜单项位于Navigate/Open Resource
xml文件中注释:CTRL + SHIFT + /
xml文件中撤销注释:CTRL + SHIFT + \
为了使用android.support.v4.widget.SwipeRefreshLayout,更换了较新的android-support-v4.jar,却找不到SwipeRefreshLayout,刷新并清理下工程即可。

中文字体很小

点击菜单栏上的“Windows”——点击“Preferences”——点击“Genneral”——点击“Appearance”——点击“Colors and Font”——在右侧框展开“Basic”文件夹–双击“Text Font”——在弹出窗选择“Courier New”(注:这里可能找不到“Courier New”,点击字体选择框左下角的“显示更多字体”链接来打开设置字体的控制面板,找到“Courier New”,右键选择“显示”即可激活该字体)——点击按钮“确定”——点击按钮“OK”,完成。

输入时自动提示本类的成员

进入配置preferences—>Java—>Editor—>Content Assist,在auto activation triggers for java 后面的输入框中输入 .abcdefghijklmnopqrstuvwxyz

java项目导出为可运行的jar包

1.右击项目,
Export->java->Runnable Jar file
2.选择launch configuration(程序入口配置)
3.Exportdestination(导出目标)
4.Library handing:
若选择第一个,引用的jar包会整合到项目中去。
若选择第二个,引用的jar包会单独放在项目根目录下(推荐)。
若选择第三个,引用的jar包会单独放在一个文件夹下,这个文件夹和导出的jar放在同一目录下。
5.finish
6.运行

java -jar x.jar

android工程中引用aar的方式

例如 CircularFloatingActionMenu-1.0.2.aar, 总的来说是解压后在主工程中把它以一个lib工程的方式引入。

seo

PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。一个访问者在24小时(0点到24点)内看了网站几个页面。同一个人浏览网站同一个页面,不重复计算pv量。 PV之于网站,就像收视率之于电视,从某种程度上已成为投资者衡量商业网站表现的最重要尺度。

UV(unique visitor),指访问某个站点或点击某条新闻的不同IP地址的人数。在同一天内,uv只记录第一次进入网站的具有独立IP的访问者,在同一天内再次访问该网站则不计数。独立IP访问者提供了一定时间内不同观众数量的统计指标,而没有反应出网站的全面活动。

在macOS下使用Visual Studio Code进行C/C++开发
https://zhuanlan.zhihu.com/p/25006796

vmware

1.在虚拟机中访问共享文件夹
通过 //.host/Shared Folders

2.加载一个已存在的虚拟磁盘,vmdk文件
当遇到虚拟机苹果系统进不去了,问题类似下面链接中描述,可以在另一个虚拟系统中加载出问题的系统的vmdk文件,把有用的数据拷贝出来。必竟系统可以重装,数据不能重来。
操作方法:在硬件tab的下方,添加/硬盘…

 

3.启动虚拟机系统时提示内部错误

查看vmware服务未完全启动,应该是依赖的其它服务未启动的原因。

最后查到Windows Management Instrumentation 未启动。

在注册表中查看,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\winmgmt,DependOnService值除了有RPCSS,还多了一个zhslEzOKLServices,不知道是哪个软件安装后写进来的,但是它又卸载找不到了。果断删除对zhslEzOKLServices的依赖。重启电脑。