官方原文

浏览器环境下使用本地化插件

ionic native拥有130多个移动SDK插件,这点使得可能构建强大的ionic app。

由于历史原因,在浏览器环境下测试这些本地插件是很困难的,要求ionic开发者比如在物理设备或者虚拟机中进行测试,这是相当慢的一个过程。

ionic native3.0现在允许开发者能够伪装,在浏览器环境下通过重写类,是的能够提供测试数据,或者访问本地化API,比如HealthKit。

阅读全文 »

英文原版
大家好,很高兴的宣布,ionic cli v3版现在可以使用啦!
自从我们发布CLI v3 Beta版和我们的彩蛋,我们已经见证了众多的早期Beta测试者在他们的ionic项目中成功的使用。这些测试者提供了大量的反馈,当然也有机会中奖。事实上,他们中的许多人几个小时内就找到了其中的彩蛋。尤其最近,当开发者在我们上周举办的编程马拉松中成为了Ionic Jedi Hacksters,我们获得了更多的回馈
(编程马拉松战绩在这里)除了版本改变外,什么使得这个CLI这么特别呢,让我们看下这版CLI的几个关键点吧。

除了版本变化,这版的CLI特殊在哪呢,我们看下以下几个关键点吧:

速度+指南

你可能会留意到这版CLI的安装是如此之快,部分原因是在消除了超过90MB的依赖和成千上万行的旧程序code!如今,当你安装CLI的时候,你会得到更小的空间占用,安装时间也会更短。所以,CLI的速度和表现是我们主要考虑点之一。

另一个考虑点是我们要提供更多的帮助、指南和反馈。大量的命令现在提供所需的交互信息,CLI试图在问题出来时,能够是有用的,有效的。命令帮助已经提升。
仅仅加上--help参数到任意的命令上,就可以得到详细的输入信息和参数信息。我们也提供普通使用的样例信息,比如试下下面的这句命令ionic start --help

阅读全文 »

使用文字界面来设定,对于了解Linux有一定的帮住,平时不免接触,常用命令总结如下。

系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uname -a # 查看内核,操作系统,CPU信息 
head -n 1 /etc/issue # 查看操作系统版本
env # 查看环境变量

# centos版本查看
cat /etc/redhat-release

# cpu
cat /proc/cpuinfo

# 内存
cat /proc/meminfo

# 修改时区
timedatectl set-timezone Asia/Shanghai

进程状态

阅读全文 »

在利用webpack2作为构建工具打包Angular4时,出现一个问题就是有两个文件打包出来的哈希值不变。

文件如下:

1
2
'common': './node_modules/moment/moment.js',
'polyfills': `./client/${platform}/polyfills.browser.ts`,

这两个文件,一个是服务于moment这个时间类库,一个是服务于处理SPA应用的浏览器兼容性问题,这两个文件,在webpack配置文件中我的配置方式如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
* Options affecting the output of the compilation.
*
* See: http://webpack.github.io/docs/configuration.html#output
*/
output: {

/**
* The output directory as absolute path (required).
*
* See: http://webpack.github.io/docs/configuration.html#output-path
*/
path: helpers.root('dist'),

/**
* Specifies the name of each output file on disk.
* IMPORTANT: You must not specify an absolute path here!
*
* See: http://webpack.github.io/docs/configuration.html#output-filename
*/
filename: '[name].[chunkhash].bundle.js',

/**
* The filename of the SourceMaps for the JavaScript files.
* They are inside the output.path directory.
*
* See: http://webpack.github.io/docs/configuration.html#output-sourcemapfilename
*/
sourceMapFilename: '[name].[chunkhash].bundle.map',

/**
* The filename of non-entry chunks as relative path
* inside the output.path directory.
*
* See: http://webpack.github.io/docs/configuration.html#output-chunkfilename
*/
chunkFilename: '[id].[chunkhash].chunk.js'

},

阅读全文 »

还有ionicv4?

ionic官方仓库已经创建了v4分支,也给出了v4的介绍及愿景,这里我翻一下,想看原文点击这里

翻译

ionic组件向着以下目标发展

  • 用户继续用angular组件开发APP和组件
  • 开发和构建不会有变化
  • 用户使用上的改变将会最小化
  • 减少构建时间
  • 减少启动时间
  • ionic组件的异步加载将会成为缺省配置
阅读全文 »

What is git and why should I use it? - Quora

想玩好Github开源项目,不懂Git不行,所以这里记录下,在使用中,用到的一些命令,方便自己以后去反复记忆,同时也希望能帮到一些朋友。
主要的命令记住,方便操作,其余的会查询即可。
以实际例子来说明,我在实际使用中用到的一些命令

Getting and Creating Projects

1
2
3
4
5
6
7
8
# 创建一个空的Git仓库,或者对于已存在的仓库,进行重初始化
git init

# 配置
git config [--global] user.name "alanhg"
git config [--global] user.email "i@xx.x"

git config --global --add push.default current
阅读全文 »

查看expressAPI
对于文件下载,最简单的实现下载方法为如下

1
2
3
4
5
6
7
8
9
res.download('/report-12345.pdf', 'report.pdf', function(err){
if (err) {
// Handle error, but keep in mind the response may be partially-sent
// so check res.headersSent
} else {
// decrement a download credit, etc.
}
});

但是这种方法在实际使用中,发现了问题,那就是苹果safari浏览器在下载时候,文件标题会自动截取一段,或者乱码,或者问号,
一开始表示不解,IE都没事,利用fiddler进行抓包分析,发现res头部信息不对劲儿,存在两个filename,也就是不同浏览器对于重复filename处理,不一样,或者说safari对于重复filename会有问题,也就是res.download的写法毕竟是高度封装的,
换句话说,不要用这种高度封装的写法就好了,那么如何解决呢。
如下一种写法,这种没有高度封装,自己去写返回头部信息,经测试Safari下载果然没问题了。

1
2
3
4
5
6
7
8
let filename = "你好,地球人你好,地球人你好,地球人你好,地球人.pdf";
let filePath = path.resolve(__dirname, '..') + '/static/pdf/test.pdf';
let mimetype = mime.lookup(filePath);
res.setHeader('Content-Disposition', 'attachment; filename=' + new Buffer(filename).toString('binary'));
res.setHeader('Content-type', mimetype);
let filestream = fs.createReadStream(filePath);
filestream.pipe(res);

对比发现,写法1比写法2简单的多,但是目前对于Safari、IE支持是不好的,如果直接用写法2,Edge又会有问题,这时又要牵扯对于不同浏览器,文件名中英文一堆的逻辑判断处理,
所以最好的解决办法是根据请求头部,对应处理下。
对于浏览器判别可以用下面的类库

阅读全文 »

由于业务需要,进行了反编译的学习,有几点收获,这里总结下。

什么是反编译

APP开发是将项目代码打包成一个APP,如果是安卓版就是个APK包,最终通过商店或者其它渠道,安装在用户的手机上。
而反编译是将APP包,进行逆向工程,最大程度的拿到原来的所有资源,如项目代码。

Android,iOS可行?

阅读全文 »

不知不觉,一年过去,回顾2016,蓦然发现,全年度几乎在做一个项目,一个项目复杂,难度,庞大,大到我需要付出大半年的时间去学习,去开发。与其说是项目的艰巨,不如说是自己的太差,时刻面临着挑战,这种感觉用战战兢兢,一点不为过,性格使然,家风使然,我不喜欢糊涂这么个词,于是我不断的打磨,打磨到客户都觉得慢了,中间,也做了数次的妥协,但今时今日再看自己付出心血参与的项目,内心的感觉,有安心,开心,也有眼泪,更有说不出的感慨。当项目日臻成熟,跃跃上线时,我少了那份焦躁,磨练出的是镇定的看待他人反馈的任何问题。

时间,打磨一个事儿,更修炼一个人。

全年的日夜奋战,拖垮了身体的大半(.1的夸张)但但凡的付出也总是换来不菲的回报,如今再看任何的技术,所谓的牛,我也不再是以前的那般感觉,我更相信掌握技术需要的是扎实的内功,敏捷的思维,足够的勤奋,及对所做的事,影响的人乃至自己有足够多的尊重,而已。

于今年,我感谢指导我的人,支持我的人,关心我的人。

于未来的一年,我更希望平衡工作与生活,实现良性的节奏感。

阅读全文 »
0%