[诗歌]千古岐山

千古岐山

​ 依依故乡情,乡情浓于酒。俺是在外的岐山人,偶回故乡,觉得2009中国·岐山周文化艺术节上的瞿玄和、凯丽的《千古岐山》诗朗诵令人感动,果断转了,以飨在外滴和在家滴岐山乡党们。

再见2018,你好2019

时光飞逝,2018,转眼已是过去,回首过去这一年,取得过成绩也有过不足,经过同事间的协作与共同努力,发现问题并解决问题。

2019,新的起点,新的希望。从事Android开发四余载,此时站在新的起跑点,更需要总结自己,继承并发扬过去工作中已形成的优点,汲取教训,摒弃不足以更清醒的头脑和奋发的姿态向未来目标迈进。

工作上

在刚过去的2018年里,公司移动端的项目仍然分为BIM以及教育两方面。

教育项目是自从我14年入公司以来一直参与并一直维护至今的一个项目,电子书包学生端,运行在Android pad上的一款移动端项目,18年,电子书包项目并没有太大的版本变更,大多都是性能上的优化以及bug的修复,并且成功在华为pad上申请了超级权签权限。

BIM项目是公司近几年新开设并且大力宣传与开发投入的项目。移动端从最初规划的4D App到5D App,期间有过两次大的版本变更。在4D App基础上的两个4D App 非标项目,5D App 上的一个非标项目,另有上海某院BIM App项目由另外的同事负责开发。

5月份时,将公司开发的BIM引擎进行了二次封装以便用于移动开发调用,并成功用于上海BIM项目中,在此基础上又开发出纯Kotlin开发的BIM 引擎演示App并一直维护并完善以便客户能依此更方便更便捷的基于我们公司引擎开发自己的BIM App。

在开发4D、5D app时,起初api 接口文档使用word书写,随着接口数越来越多,达到近百个时,word显得非常吃力,同时需要与IOS进行公网api对接,最终废弃word,采用gitbook管理,分类管理、目录清晰,可以部署到外网多方协同。

个人技能提升

2018年,除了提升自己Android方面的技能,还学习了新的开发语言Kotlin,谷歌公布Kotlin将作为官方开发语言起就不断地接触过这门语言,初期都是处于写个小demo的阶段,终于在18年下半年下定决心开发一款纯kotlin开发的应用,就是上面提到的演示程序。只能说用过才知道它(Kotlin)的好。

除了kotlin语言,还有Flutter、git、跨平台的Electron、Vue(刚入门)以及学习更高效的使用VS code、AS等开发工具。

闲暇的时间也会去翻翻简书、公众号、知乎(现在的知乎也没有以前好了)阅读一些很有意思的技术类软文,从中也会有很多启发。有时自己在工作中遇到一些问题解决了,并且觉得这些解决方案很有意义记录下便起笔写篇软文发到自己博客上。

未来规划

2019年,仍有很多需要学习提升,已经涉足的kotlin、flutter等还需要更进一步深入学习。

对于过去的得与失,我会汲取有利的因素强化自己的工作能力,把不利的因素在自己以后的工作中排除,一年的工作让我在成为一名合格的职工道路上不断前进,我相信通过我的努力和同事的合作,以及领导们的指导,我会成为一名优秀的员工,充分发挥我的社会能力,也感谢领导给我这一个合适的工作位置,让我能为社会做出自己该有的贡献。

一年来,我做的可能不是最好,但我相信在今后的工作中,仍会继续不断的努力。我相信,只要我在岗位上一天,我就会做出自己最大的努力,将自己所有的精力和能力用在工作上,相信自己一定能够做好!

一张图弄懂开源协议-GPL、BSD、MIT、Mozilla、Apache和LGPL 之间的差别

一张 阮大神的图秒懂各大开源协议差异

另一张来自https://phodal.github.io/licenses/

哪种开源许可证下的软件可以用于商业

Apache License 2.0

要点:Apache Licence是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

BSD开源协议(Berkerley Software Distribution)

要点:商业软件可以使用,也可以修改使用BSD协议的代码。

GPL ( GNU General Public License )

要点:商业软件不能使用GPL协议的代码。

LGPL ( GNU Library or “Lesser” General Public License )

要点:商业软件可以使用,但不能修改LGPL协议的代码。

MIT ( MIT license )

要点:商业软件可以使用,也可以修改MIT协议的代码,甚至可以出售MIT协议的代码。

MPL ( Mozilla Public License 1.1 )

要点:商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者。

CDDL (Common Development and Distribution License )

要点:商业软件可以使用,也可以修改CDDL协议的代码。

EPL (Eclipse Public License 1.0 )

要点:商业软件可以使用,也可以修改EPL协议的代码,但要承担代码产生的侵权责任。

  1. 阮一峰的网络日志
  2. phodal/licenses
  3. 哪种开源许可证下的软件可以用于商业

Activity启动模式(lauchMode)

launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。

Android版本和API Level对应关系

平台版本 API 级别 VERSION_CODE 备注
Android 10 29 10 平台亮点
Android 9.0 28 Pie 平台亮点
Android 8.1 27 Oreo 平台亮点
Android 8.0 26 Oreo 平台亮点
Android 7.1 25 Nougat 平台亮点
Android 7.0 24 Nougat 平台亮点
Android 6.0 23 Marshmallow 平台亮点
Android 5.1 22 LOLLIPOP_MR1 平台亮点
Android 5.0 21 LOLLIPOP
Android 4.4W 20 KITKAT_WATCH 仅限 KitKat for Wearables
Android 4.4 19 KITKAT 平台亮点
Android 4.3 18 JELLY_BEAN_MR2 平台亮点
Android 4.2、4.2.2 17 JELLY_BEAN_MR1 平台亮点
Android 4.1、4.1.1 16 JELLY_BEAN 平台亮点
Android 4.0.3、4.0.4 15 ICE_CREAM_SANDWICH_MR1 平台亮点
Android 4.0、4.0.1、4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2 13 HONEYCOMB_MR2
Android 3.1.x 12 HONEYCOMB_MR1 平台亮点
Android 3.0.x 11 HONEYCOMB 平台亮点
Android 2.3.4 Android 2.3.3 10 GINGERBREAD_MR1 平台亮点
Android 2.3.2 Android 2.3.1 Android 2.3 9 GINGERBREAD
Android 2.2.x 8 FROYO 平台亮点
Android 2.1.x 7 ECLAIR_MR1 平台亮点
Android 2.0.1 6 ECLAIR_0_1
Android 2.0 5 ECLAIR
Android 1.6 4 DONUT 平台亮点
Android 1.5 3 CUPCAKE 平台亮点
Android 1.1 2 BASE_1_1
Android 1.0 1 BASE

摘自Android Developers#

Flutter 路由跳转

静态路由

1. 注册

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    return new MaterialApp(
title: 'Flutter 示例',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter 示例主页'),
routes: { //静态注册路由,不能传递参数
"SecondPage": (BuildContext context) => new Second()
},
// routes: <String, WidgetBuilder>{
// // 这里可以定义静态路由,不能传递参数
// '/router/second': (_) => new Second(),
// },
);

2. 使用

1
2
///这种路由的缺点是不能传递参数。
Navigator.pushNamed(context, "SecondPage");

动态路由

有参跳转

1
2
3
4
5
6
7
8
//跳转到新的 页面我们需要调用 navigator.push方法  -
Navigator.push(context,
new MaterialPageRoute(
builder: (BuildContext context) {
return new Second(title: "第二个页面");
}
)
);

无参跳转

1
2
3
4
5
6
7
//跳转到新的 页面我们需要调用 navigator.push方法  -
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new Second()
)
);

apkgithub

本站总访问量 | 本文总阅读量