All Questions
Questions Per Page:
  • 几年前,作为一名开发人员,你需要的就是编辑器、编译器,以及某种版本控制系统。(可悲的是,许多开发人员目前仍然不能正确地使用版本控制系统) 现在,即使是要做基本的软件开发工作,你也需要知道地更多。下面是每个现代开发人员应该知道并会使用的十大工具列表: Git和GitHub:尽管有些公司仍然在使用SVN或CVS,甚至可怕的Clearcase,但并不建议你用这其中任何一个工具。Git现在是一个基本的技能,就像穿鞋或拼写检查一样。 SSH:是的,我知道,你是一个Windows开发人员,你不需要使用那个讨厌的shell。但是,你需要使用它来创建SSH密钥或使用其他SSH功能。所以,你现在可以学习SSH了。 终端服务或远程登陆:即使你平时使用的是Linux或Mac,你早晚也会用到Windows。你可以利用这些工具来访问Windows。 Amazon Web服务:AWS不仅仅是云端,而是还是你不用等待IT的里有。虽然还有其他的云服务供应商,但你早晚会涉及到AWS。AWS已经变得非常之大,你甚至都无法全面地了解AWS,但你至少需要了解一下EC2。 JavaScript:如果一个产品或工具需要添加脚本类型的API,那很可能就是JavaScript。 Bash和PowerShell:虽然,更现代的devops工具使用起来是方便,但总有一天它会停止工作。所以,对于要编写一个重启脚本,从一个退出命令中获取错误码,或者在一个循环中做一些事情,Bash(在Linux,许多Unixes,MacOS和Windows 10中)和Microsoft的PowerShell都能为你做到。另外,增加一个像grep(PowerShell中等效的工具是Select-String)这样的工具,这两个工具的功能会变得更强大。 MongoDB:你至少需要知道一个文档数据库的使用方法。MongoDB是最容易学习的,无论你最终是否使用MongoDB都没有关系,重要的是学习如何使用新一代的数据库。如果你要使用像Apache Solr(它是基于文档的)那样的索引,或者你平时经常使用纵列数据库,那么MongoDB的使用技能对你来说就非常有用。 Curl和Invoke-RestMethod:大多数软件现在都有REST API。在Mac和Linux上,curl是一个命令行工具,可以让你针对REST API进行测试,甚至编写脚本。在PowerShell中,可以用Invoke-RestMethod这个工具代替(尽管像PowerShell一样,它需要打更多的打字)。另外还有像Postman这样的GUI工具可以完成同样的工作,但一个认真负责的开发人员需要能够通过使用点选式的界面来提高效率。 Markdown:这是GitHub中README.md文件的格式。你应该能够读写一个简单的Markdown文档。这很容易,因为它只有七个符号(#是标题,##是子标题,*是着重号,__和**是粗体,_和*是斜体,`是等宽体,而—是间隔符)。Markdown编辑器通常会支持扩展语法,但这些是基础。通过这个基本的标记语言,你可以输出幻灯片、PDF和HTML格式的文件。通常,这些输出格式可以通过CSS或其他方式进行格式化。 基本的HTML:不论你是要标记某些内容还是要解析HTML,你都需要了解一些Web标记语言的基础知识。

    cook Asked on 2017年6月16日 in android.
    • 1042 views
    • 0 answers
    • 0 votes
  • 本文算是一篇漫谈,谈一谈关于android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构。本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板。 AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 关于Android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的。 从艺术的角度看,其实我们是在追求一种美。 本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板。 1. 微盘 微盘的架构比较简单,我把最基本,最主干的画了出来: 第一层:com.sina.VDisk:com.sina(公司域名)+app(应用程序名称) 。 第二层:各模块名称(主模块VDiskClient和实体模块entities) 第三层:各模块下具体子包,实现类。 从图中我们能得出上述分析中一个最简单最经典的结构,一般在应用程序包下放一些全局的包或者类,如果有多个大的模块,可以分成多个包,其中包括一个主模块。 在主模块中定义基类,比如BaseActivity等,如果主模块下还有子模块,可以在主模块下建立子模块相应的包。说明一点,有的时候如果只有一个主模块,我们完全可以省略掉模块这一层,就是BaseActivity.java及其子模块直接提至第二层。 在实体模块中,本应该定义且只定义相应的实体类,供全局调用(然而实际情况可能不是这样,后面会说到)。在微盘应用中,几乎所有的实体类是以 xxx+info命名的,这种命名也是我赞成的一种命名,从语义上我觉得xxxModel.java这种命名更生动更真实,xxxModel给我一种太机 械太死板的感觉,这点完全是个人观点,具体操作中以个人习惯为主。还有一点,在具体的xxxInfo,java中有很多实体类中是没有get/set的方 法,而是直接使用public的字段名。这一点,我是推荐这种方式的,特别是在移动开发中,get/set方法很多时候是完全没有必要的,而且是有性能消 …

    ladz Asked on 2017年5月17日 in android.
    • 1069 views
    • 0 answers
    • 0 votes
  • 史上最全的录屏指南 刘丢丢3 小时前 屏幕录制算不上刚需,但绝对是个痛点。当你想把手机、电脑屏幕上的一段内容录制下来时,通常为了省事儿会直接用手机拍,但手头可能没有多余的手机,或者腾不出另一只手,身边又没有人来帮你拍。就算拍到了,这种方法拍到的视频也会抖动,或者不清晰,这时候你需要一个趁手的屏幕录制软件。 下面就是为大家整理的全平台屏幕录制攻略,包含移动端 iOS、Android,桌面端 Mac、Windows 四大平台,赶紧收藏备用吧! Android Android 4.4 版本中添加了对屏幕录制的支持,但只有少数手机自带录屏功能,所幸 Android 平台有很多第三方录屏软件。对于 Android 平台的录屏软件,以下面这些标准为参考,共有以下三个软件推荐大家使用。 豌豆荚智能录屏 操作最简单的,但有些功能可能不满足,而且录制视频必须 10 秒以上。 …

    ladz Asked on 2017年5月17日 in android.
    • 1157 views
    • 0 answers
    • 0 votes
  • 从trust zone之我见知道,支持trustzone的芯片会跑在两个世界。 普通世界、安全世界,对应高通这边是HLOS,QSEE。 如下图: 如下是HLOS与QSEE的软件架构图 HLOS这两分为kernel层,user层。user层的通过qseecom提供的API起动trustzone那边的app。 qseecom driver 除了提供API,还调用scm函数做世界切换。 scm driver 那边接到qseecom的调用后,会把HLOS相关数据(包括指令参数)放入指它buffer,然后执行scm调用。 qsapp通过qsee提供的api接受来自HLOS那边的请求,并把执行结果返回HLOS。 qsee除了提供API,还与从monitor把来自HLOS的数据传给qsapp,然后把qsapp的数据返回给HLOS。 monitor就不用说了,切换世界用的,还处理shared buffer的内容。 是大概的架构图,细节比较复杂,没有开元。 下面通过一个简单的qseecom_security_test代码来说明整个调用流程。 如下图: qseecom_security_test.c …

    hlos Asked on 2017年4月28日 in android.
    • 1096 views
    • 0 answers
    • 0 votes
  • EGL接口介绍 标签: bufferimport平台api图形null 2011-12-15 14:40 5930人阅读 评论(3) 收藏 举报 分类: Android(141) 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口。本章主要讲述 OpenGL ES 的 EGL API ,以及如何用它创建 Context 和绘制Surface 等,并对用于 OpenGL 的其他视窗 API 做了比较分析,比如 WGL 和 GLX 。本章中将涵盖如下几个方面: EGL 综述 EGL 主要构成( Display , Context , Configuration ) 在 Brew 和 Windows …

    gles Asked on 2017年3月16日 in android.
    • 1053 views
    • 0 answers
    • 0 votes
  • 面向忙碌开发者的 Android 视频教程(Tuts+) Android 开发资源列表(Sharif Ahmed) 我如何在23天内开发了一款 Android 游戏?(Bigosaur) Android 学习教程 Android Bootstrap [PDF] Android 性能小贴士(Romain Guy & Chet Haase) …

    haidao_74 Asked on 2016年11月29日 in android.
    • 1017 views
    • 0 answers
    • 0 votes
  • 假设我想研究Android的UI系统,首先要找什么和UI有亲戚关系吧! View大神跳出来了,沿着它往下找找看,发现它在贴图在画各种形状,但是它在哪里画呢,马良也要纸吧? 开发Android的同学逃不掉Activity吧!它有个setcontentview()的方法,从这个名字看好像它是把view和activity结合的地方。赶紧看它的实现和被调用,然后我们就发现了Window,ViewRoot和WindowManager的身影,沿着WM和WMS我们就惊喜会发现了Surface,以及draw的函数,它居然在一个DeCorView上画东西哈。借助Source Insight, UIJava层的横向静态图呼之欲出了。 完成这个静态UML,我觉得我可以开始功能实现上追踪了,这部分主要是C++的代码(这也是我坚定劝阻的放弃Eclipse的原因),我沿着draw函数,看到了各个层级的关系,SurfaceSession的控制和事务处理,SharedBuffer读写控制,彪悍的SurfaceFlinger主宰一切,OpenGL ES的神笔马良。FrameBuffer和FrameBufferDevice的图像输出,LCD设备打开后,开始接收FBD发过来的一帧帧图像,神奇吧。 好吧,就这样,再往底层我爱莫能助了!

    whoaiwho Asked on 2016年11月4日 in android.
    • 1256 views
    • 0 answers
    • 0 votes
  • 由于工作需要大量修改framework代码, 在AOSP(Android Open Source Project)源码上花费了不少功夫, Application端和Services端都看和改了不少. 如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行. 但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结. 知识 Java Java是AOSP的主要语言之一. 没得说, 必需熟练掌握. 熟练的Android App开发 Linux …

    silenceofwater Asked on 2016年11月4日 in android.
    • 1506 views
    • 0 answers
    • 0 votes
  • 原创 编码之妙 2016-10-09 17:11 首先,说一句题外话,如果有一天从你的全世界路过,张天爱做了一名黑客,或者是程序员,你知道送她什么礼物能打动她吗?不是车子,不是房子,这些估计你也送不起,送他一副好的机械键盘,定能迎得他的芳心。(这些我可没有告诉李晨)。【清华女神大奶茶和一个程序员的故事(下)】 程序员的工作就是和键盘较劲,疯狂的程序员从来不用鼠标,只用一块键盘就能控制整个电脑。老程序员装逼最常用的手段就是把手放在桌子底下,然后让电脑的窗体按自己的意愿疯狂的跳转切换编辑,你眼巴巴的看着程序员大叔如山一样淡定的坐在那里,工作就这个完成了,有一个词是专门为程序员而创造的,叫运指如飞。 这些神技是如何达成的呢?其实,就是研究各种快捷键,熟练运用快捷键。每一个新的开发套件的推出,对程序员来说,有一个重要的环节,就是研究这套环境的快捷键,要是有自定义快捷键功能,那就态妙了。 今天,我们就来逛一逛android studio的快捷键。 Ctrl+Shift+N,Ctrl+N外带Shift ,等于更强大的打开功能,对,他可以打开任何一个文件,快速的。 Ctrl+E,你最近编辑了那些文件?你想知道吗,那么,这个快捷键有用。 Shift+Click 按住Shift 键,用鼠标点击打开的标签页,神奇的事情就发生了,标签页被关掉了。注意,这个Click 可不是一个键盘上的键,而是你的鼠标,android studio的这个设计,可谓是脑洞大开。 Ctrl+ [ Ctrl+],这一套兄弟,大家估计都认识,似乎每一套IDE都有这个设计,对他就是跳转到匹配的括号另一端。 …

    编码之妙 Asked on 2016年10月9日 in android.
    • 1194 views
    • 0 answers
    • 0 votes
  • 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。 作者:wwww1988600来源:wwww1988600的博客|2012-03-01 14:04         在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。 下面看例子: package org.thread.demo;   class MyThread extends Thread{   private String name;   public MyThread(String name) {   super();   this.name = name; …

    lizq1 Asked on 2016年10月8日 in android.
    • 1210 views
    • 0 answers
    • 0 votes