请问为什么支付宝修改指纹密码的支付密码统一改成了保密程度很低的六位纯数字?谢谢!

支付宝的保密问题是可以自己设置还是系统问题?为什么我后来修改只有系统的问题?_百度知道
支付宝的保密问题是可以自己设置还是系统问题?为什么我后来修改只有系统的问题?
我有更好的答案
自己设置的。。。具体最好咨询下支付宝客服。。。
来自:求助得到的回答
采纳率:43%
为您推荐:
其他类似问题
支付宝的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。大学当兵的利与弊? - 知乎<strong class="NumberBoard-itemValue" title="被浏览<strong class="NumberBoard-itemValue" title=",238,914分享邀请回答1.2K559 条评论分享收藏感谢收起414173 条评论分享收藏感谢收起JetBrains家的IDE很多技巧是通用的,说一些自己日常用得多但不一定仅限于PyCharm的技巧:&br&&br&`ctrl+alt+L`,格式化代码,曾经用Eclipse的时候,格式化代码一定要先选中某个区域的代码块再进行格式化,用了JetBrains的IDE之后就习惯性地格式化一下,还必须手贱多格式化几次才舒服,不过有后遗症,以后到各种编辑框中总喜欢`ctrl+alt+L`几下才舒服&br&&br&`alt+enter`万能键,不同场景有不同的表现方式,在还没import(install)模块名上使用会import(install)相对应的模块,在方法名上使用补注释,在测试中使用帮你补充断言代码……不管出错了不知道怎么办,知道怎么办想这么办时都按下这个快捷键,有惊喜 &br&&br&`ctrl+space` 万能提示键,PyCharm的会根据上下文提供补全。不仅是代码提示,`ctrl+f`搜索的时候,不知道该键入啥时就按下,经常给人惊喜。在windows下由于输入法无法使用这个快捷键,`ctrl+alt+s`打开设置键入 keymap,在Keymap中搜索basic可以找到并修改它 &br&&br&`ctrl+shift+f10`运行当前文件,十分智能,如果是测试代码,则以测试模式run,并列出测试通过情况&br&&br& `ctrl+w`扩展选取和`ctrl+shift+w`缩减选区,根据当前层级一层一层向上伸展选中区域,例如value -&key:value -& dict -& ... ,每按一次就扩展一级,`ctrl+shift+w`用来取消上一次的扩展选取操作,注意后遗症,大部分软件中的`ctrl+w`是关闭!是`ctrl+shift+箭头`而不是`ctrl+w`&br&&br&`ctrl+alt+shift+T`重构选区,可以将选区抽取成变量,方法等。不同的重构方式有不同的快捷键,比如将a.b.c中的a.b抽取出来,选中a.b,键入`ctrl+alt+v`可见效果&br&&br&`ctrl+q`查注释 &br&&br&`ctrl+shift+i`没注释时查源码 &br&&br&`ctrl+p`调用方法时查看参数,在括号内按下,就知道当前位置该给啥参数,不过由于是Python,这里使用`ctrl+space`也可以达到很好的效果&br&&br&`shift+enter`另起一行,光标在行内任意位置都能另起一行,且不破坏当行结构&br&&br&`ctrl+alt+enter`向上另起一行&br&&br&`ctrl+shift+数字键`与`ctrl+数字键`书签功能&br&&br&`ctrl+shift+a`搜索IDE功能,比如想看看这个文件的历史,就键入history 可以找到 Local history &br&&br&变量或表达式的最后键入`.(点)`,出现提示后,看最下面的部分有各种代码模板,例如现有变量a,在下一行键入 a.(点)print 然后键入`tab`,Python2会变成`print a`,Python3会变成`print(a)`,还有if,else等各种常用的代码模板&br&&br&双击`shift`搜索一切,不管是IDE功能、文件、方法、变量……都能搜索&br&&br&各个窗口下,无论是Project,Setting,Debugger...都可以直接键入想要搜索的内容,它会帮你高亮,键入`↑`或`↓`可切换匹配到的目标&br&&br&整合的REPL,由于JetBrains的加成可以实现很多与编辑器内相同的效果 &br&&br&整合了Git,通过插件可以支持 Git flow,十分优秀的代码对比,merge时解决冲突很有帮助&br&&br&Local history,文件夹,每个文件都有记录历史版本&br&&br&整合了source code pro字体+Darcula Theme(暗色主题) ,眼不疼了&br&&br&Tip of the day,总会给人带来一些有用的小功能 ,别嫌烦就给关了啊,写代码累了,Help & Tip of the day点开看看&br&&br&固态硬盘,配合JetBrains碉堡的索引,虽然没什么关系
JetBrains家的IDE很多技巧是通用的,说一些自己日常用得多但不一定仅限于PyCharm的技巧: `ctrl+alt+L`,格式化代码,曾经用Eclipse的时候,格式化代码一定要先选中某个区域的代码块再进行格式化,用了JetBrains的IDE之后就习惯性地格式化一下,还必须手贱…
&p&&b&利益相关:实验楼&/b&&/p&&p&编程是门手艺活儿,如果想从事程序员的工作,项目经验一定是一个绕不过去的坎儿。 之前同事招实习生时面试过一位计科的学霸,一名已经保研的女生,成绩非常好,跟她聊了会项目经验,结论是属于刷题型人才,动手能力基本为0,只能Pass掉…… &/p&&p&所以 Learn by doing 才是正确的技术学习姿势,对于想系统地学习编程,但找不到方法和姿势;或者刚入门编程,找不到项目练手的同学,强烈建议来「&b&实验楼」&/b&做几个项目,在实践中找到代码的手感……&/p&&p&在「实验楼」,你可以发现多条技术路径,每个路径中都由若干个项目组成,并根据难度、类别被划分成不同的模块。其中,Python路径现在有77门课程,包含「入门知识」「Python基础」「Web框架」「基础项目」「网络编程」「数据与科学」「综合项目」这几个模块。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-ac4c8b1b2a9cf20b0c74_b.png& data-rawwidth=&866& data-rawheight=&250& class=&origin_image zh-lightbox-thumb& width=&866& data-original=&https://pic1.zhimg.com/v2-ac4c8b1b2a9cf20b0c74_r.png&&&/figure&&p&项目由易到难,代码量从几十行到几千行,在实验楼的虚拟linux环境中都可以完成。找到你认为有趣的去实现它,把项目做出来,知识才能变成自己的:)&/p&&p&&b&链接在这里&a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/paths/python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python研发工程师学习路线&/a&(建议PC端访问,边看教程边在环境里动手实践,手机上仅可查看教程)&/b&&/p&&h2&「基础项目」:&/h2&&p&1. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/368& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python - 200行Python代码实现2048&/a&&/p&&p&仅用200行的python代码完成2048小游戏的编写。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-feefa8abeebf4cadc9a22d87_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic4.zhimg.com/v2-feefa8abeebf4cadc9a22d87_r.png&&&/figure&&br&&p& 2. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/60& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python开发简单计算器&/a&&/p&&p& 使用 Python 开发一个简单的加减计算器,学习字符串处理、表达式二叉树的生成及遍历。 &/p&&figure&&img src=&https://pic4.zhimg.com/v2-0785f9eebee7c89aba509853_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic4.zhimg.com/v2-0785f9eebee7c89aba509853_r.png&&&/figure&&br&&p&3. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/364& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python 破解验证码&/a&&/p&&p& 通过一个简单的例子来实现破解验证码。 &/p&&figure&&img src=&https://pic1.zhimg.com/v2-adac9f380e9942adb8fce1c_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic1.zhimg.com/v2-adac9f380e9942adb8fce1c_r.png&&&/figure&&br&&p&4. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/651& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python3 图片隐写术&/a&&/p&&p& 通过Python3将关键信息隐藏在图片里,传递你的小秘密~&/p&&figure&&img src=&https://pic3.zhimg.com/v2-e24e84b549f2fa998f34f88f3bbcb496_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic3.zhimg.com/v2-e24e84b549f2fa998f34f88f3bbcb496_r.png&&&/figure&&br&&p&5.
&a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/589& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python3 色情图片识别&/a&&/p&&p& 使用 Python3 识别图片是否为色情图片 。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-31f0ee24e4d7_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic4.zhimg.com/v2-31f0ee24e4d7_r.png&&&/figure&&br&&p&6. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/581& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基于 Flask 及爬虫实现微信娱乐机器人&/a&&/p&&p& 做一个会给你讲笑话的微信后台机器人,学习并实践 python 编程,Flask Web 开发以及微信公众平台开发机器人的基本步骤。 &/p&&figure&&img src=&https://pic1.zhimg.com/v2-ee6e15a4dc29feb25f4ed0_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic1.zhimg.com/v2-ee6e15a4dc29feb25f4ed0_r.png&&&/figure&&br&&p&7. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/729& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python - 使用 Python 解数学方程&/a&&/p&&p& 使用python 来解决方程组问题,微积分问题,矩阵化简 。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b60ba1cc1cd9c38b5fa12_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic3.zhimg.com/v2-b60ba1cc1cd9c38b5fa12_r.png&&&/figure&&br&&p&8. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/637& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python3 & OpenCV 视频转字符动画&/a&&/p&&p& 使用 OpenCV 处理图片视频,将视频转为字符画序列,再在终端中播放字符动画。 效果爆炸。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-c6cfac138ec2b_b.png& data-rawwidth=&528& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&528& data-original=&https://pic2.zhimg.com/v2-c6cfac138ec2b_r.png&&&/figure&&br&&p& 9. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/686& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&川普撞脸希拉里(基于 OpenCV 的面部特征交换)&/a&&/p&&p& 通过 OpenCV 库来实现人脸面部特征交换,其实就是将第二张人脸的眼睛、鼻子和嘴巴通过程序自动裁剪适配并覆盖到第一张人脸上,效果略惊悚……&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a64ffe6bc1_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic2.zhimg.com/v2-a64ffe6bc1_r.png&&&/figure&&br&&p&10. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/49& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pygame开发打飞机游戏&/a&&/p&&p& 使用Python快速开发一款PC端玩耍的微信打飞机游戏,基于pygame实现。 难度比较高。&figure&&img src=&https://pic2.zhimg.com/v2-5aced6a82bbaf3a1_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic2.zhimg.com/v2-5aced6a82bbaf3a1_r.png&&&/figure&&/p&&br&&h2&「网络项目」:&/h2&&p&&b&基本是一些爬虫、信息安全、点对点通讯的课程。相信很多人学Python都是冲着强大的爬虫功能去的。&/b&&/p&&a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/623& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python3 实现火车票查询工具&/a&&p& 使用 Python3 抓取 12306 网站信息提供一个命令行的火车票查询工具。
可以熟悉 Python3 基础及网络编程,以及 docopt,requests,prettytable 等库的使用。 &/p&&figure&&img src=&https://pic2.zhimg.com/v2-dfddb10c9e6078c6bae359d_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic2.zhimg.com/v2-dfddb10c9e6078c6bae359d_r.png&&&/figure&&br&&p& 2. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/595& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python3 实现淘女郎照片爬虫&/a&&/p&&p& 使用 Python 实现一个淘宝女郎图片收集爬虫,学习并实践 BeautifulSoup、Selenium Webdriver 及正则表达式等知识。 &/p&&figure&&img src=&https://pic1.zhimg.com/v2-1fa877b5acc42e5c564df7fc563a65c0_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic1.zhimg.com/v2-1fa877b5acc42e5c564df7fc563a65c0_r.png&&&/figure&&br&&p& 3. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/813& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&给Python3爬虫做一个界面.妹子图网实战&/a&&/p&&p& 利用PyQt和Python爬虫,做一个有交互界面的老司机爬虫程序!&/p&&figure&&img src=&https://pic1.zhimg.com/v2-7e0d8608dfbeae28f161f74e5f09ce40_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic1.zhimg.com/v2-7e0d8608dfbeae28f161f74e5f09ce40_r.png&&&/figure&&br&&p&4. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/81& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flask 实现简单聊天室&/a&&/p&&p& 实现一个基于Server-Sent Event和Flask简单的在线聊天室,需要有 Flask 和 Python 基础。 &/p&&figure&&img src=&https://pic4.zhimg.com/v2-c3e7beeb2083997_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic4.zhimg.com/v2-c3e7beeb2083997_r.png&&&/figure&&br&&p&5. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/594& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python3 实现可控制肉鸡的反向Shell&/a&&/p&&p& 使用 Python3 实现了可控制肉鸡的反向Shell连接,主要学习反向Shell的实现方法。实验涉及Tcp协议、Scoket基本用法、多线程编程。难度较高,需要具备网络编程的知识,以及计算机网络的知识。 &/p&&figure&&img src=&https://pic1.zhimg.com/v2-9a3cc3bab86c4a492688_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic1.zhimg.com/v2-9a3cc3bab86c4a492688_r.png&&&/figure&&br&&h2&&b&「数据与计算 」:&/b&&/h2&&p&&b&Python在大数据领域的应用不必多说,想学习Python数据分析的话可以看看下面的课程。&/b&&/p&&br&&a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/633& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基于 Flask 与 MySQL 实现番剧推荐系统&/a&&p& 基于 Python 的 Flask 框架和 MySQL 实现的简单的番剧推荐系统。 &/p&&figure&&img src=&https://pic3.zhimg.com/v2-d77dbf0bc92ce39bb36baa92be4dfb7a_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic3.zhimg.com/v2-d77dbf0bc92ce39bb36baa92be4dfb7a_r.png&&&/figure&&br&&p& 2. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/677& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python基于共现提取《釜山行》人物关系&/a&&/p&&p&Python文本分析的课程。 使用python编写代码分析文本中人物的共现关系,完成对《釜山行》文本的人物关系提取,并利用Gephi软件对提取的人物关系绘制人物关系图。 &/p&&figure&&img src=&https://pic2.zhimg.com/v2-30d2e5b857a64df598aa9d_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic2.zhimg.com/v2-30d2e5b857a64df598aa9d_r.png&&&/figure&&br&&p&3. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/722& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Twitter数据情感分析&/a&&/p&&p& 使用Spark MLlib对Twitter上的流数据进行情感分析,并且利用Python的工具包basemap可视化美国不同的州对于曾经的总统候选人希拉里及川普的情感分析结果,通过地理信息可视化我们可直观的感受到这两位候选人的受欢迎程度。 &/p&&figure&&img src=&https://pic4.zhimg.com/v2-1add543fab6ac8f60eba2bf7_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic4.zhimg.com/v2-1add543fab6ac8f60eba2bf7_r.png&&&/figure&&br&&p& 4. &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/714& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ebay在线拍卖数据分析&/a&&/p&&p& 利用ebay上的拍卖数据进行数据分析,实现通过数据判断拍卖最终是否可以成功交易和预测最终成交的价格。 &/p&&figure&&img src=&https://pic4.zhimg.com/v2-caee472c7eab38e9f616f_b.png& data-rawwidth=&529& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic4.zhimg.com/v2-caee472c7eab38e9f616f_r.png&&&/figure&&br&&h2&&b&「综合项目」:&/b&&/h2&&p&&b&综合项目难度较高, 对环境占用资源较大,大多属于会员及训练营项目。 &/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a9bb5e9bc1c7e7c00e596bb20a37cd2d_b.png& data-rawwidth=&866& data-rawheight=&968& class=&origin_image zh-lightbox-thumb& width=&866& data-original=&https://pic2.zhimg.com/v2-a9bb5e9bc1c7e7c00e596bb20a37cd2d_r.png&&&/figure&&p&&b&项目就介绍到这里,敲完代码不要忘了上传到GitHub上,对程序员的职业发展很有好处。快去找个喜欢的项目开始撸吧! &a href=&//link.zhihu.com/?target=https%3A//www.shiyanlou.com/paths/python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python研发工程师学习路线&/a&&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d841c6b9b6d390dbfb8a1c3f94d09e26_b.png& data-rawwidth=&200& data-rawheight=&179& class=&content_image& width=&200&&&/figure&
利益相关:实验楼编程是门手艺活儿,如果想从事程序员的工作,项目经验一定是一个绕不过去的坎儿。 之前同事招实习生时面试过一位计科的学霸,一名已经保研的女生,成绩非常好,跟她聊了会项目经验,结论是属于刷题型人才,动手能力基本为0,只能Pass掉………
作为一个文科妹子,我在看过几乎所有热门 github 教程之后依旧一头雾水,在近半年的摸索中终于明白啦~新年初,把自己纯小白的学习经验分享一下吧!&br&&br&&b&#什么是 Github ?&br&&/b&必须要放这张图了!!!&br&&figure&&img src=&https://pic4.zhimg.com/7c9d63fb_b.png& data-rawwidth=&600& data-rawheight=&412& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/7c9d63fb_r.png&&&/figure&(图片来源&a href=&https://www.zhihu.com/question//answer/& class=&internal&&GitHub 是怎样的一个存在? - Deep Reader 的回答&/a&)&br&&blockquote&&p&Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。&/p&&/blockquote&好吧,我相信看到这里你已经晕了,这也是我一开始看那些所谓经典教程的感受。写这些教程的人都是几年以上的程序员呀,他们往往直接就告诉你所有命令的含义或者整个体系。&br&&blockquote&专家盲点(expert blind spot)就是对一个事物知道的越多,就越发不记得“不知道这个事”的情形。&/blockquote&&br&&b&简单来说,Git 是一个管理你的「代码的历史记录」的工具。&br&&/b&&figure&&img src=&https://pic1.zhimg.com/cd910ad32ac_b.jpg& data-rawwidth=&214& data-rawheight=&164& class=&content_image& width=&214&&&/figure&我不是程序员为什么要学这个啊啊啊!又不要管理代码们!&br&&br&别急,虽然 github 学习门槛高,一会你就知道为什么人人都应该会这个啦!&br&&br&----------------------------&br&&b&学习步骤&/b&&br&&br&##注册安装&br&去官网注册一个账号(这个你应该会,恩就不放链接了)&br&然后,下载一个&a href=&//link.zhihu.com/?target=https%3A//desktop.github.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub Desktop&/a& mac客户端是最方便的啦!(命令行什么的真的是会越来越晕!先别管他们!)&br&&br&假设33(珊姗就是我啦)、小四和你三个人一起写一本小说(澄清一下,并没有黑任何人的意思,恩!),暂且叫做...《梦里花落爱吃土时代》&br&--&br&图(脑补)&br&--&br&(⊙v⊙)嗯!终于可以正式开始了!&br&&br&&b&#step1:创建新项目&/b&&br&我们三个人在不同的城市要远程共同写一本书,要有一个漂亮的笔记本吧?&br&&figure&&img src=&https://pic3.zhimg.com/fa17ad198ae_b.png& data-rawwidth=&895& data-rawheight=&334& class=&origin_image zh-lightbox-thumb& width=&895& data-original=&https://pic3.zhimg.com/fa17ad198ae_r.png&&&/figure&&br&「repositories」就是你的笔记本们。你只需知道 Repository 是个放项目的地方就行。有时候会出现 Repositories,是多个 Repository 的意思。&br&&br&**fork**&br&如果你不想新建一个笔记本,看到小四之前写过一个好到炸裂的文章,想把他的直接全部偷过来,修改修改就成你自己的文章了,这应该怎么办呢?&br&github 还提供了一个很赞的功能叫做 fork ,你只需要点击这个神奇的按钮,就可以把他的「笔记本」变成你自己的啦!任意修改都可以哦~&br&&figure&&img src=&https://pic4.zhimg.com/ed6d6fdc68fbfa829997b_b.png& data-rawwidth=&808& data-rawheight=&201& class=&origin_image zh-lightbox-thumb& width=&808& data-original=&https://pic4.zhimg.com/ed6d6fdc68fbfa829997b_r.png&&&/figure&&br&&br&&b&#step2:把「笔记本」克隆到本地&/b&&br&「笔记本」在云端,你要把它摘下来放到自己的电脑上写小说才方便呀,在这里我们叫「clone」是不是很形象?步骤如图:&br&&figure&&img src=&https://pic4.zhimg.com/b5d537f10af3_b.png& data-rawwidth=&838& data-rawheight=&309& class=&origin_image zh-lightbox-thumb& width=&838& data-original=&https://pic4.zhimg.com/b5d537f10af3_r.png&&&/figure&或者是直接去我们的客户端&br&&figure&&img src=&https://pic3.zhimg.com/cde6dbb8be6_b.png& data-rawwidth=&1112& data-rawheight=&773& class=&origin_image zh-lightbox-thumb& width=&1112& data-original=&https://pic3.zhimg.com/cde6dbb8be6_r.png&&&/figure&&br&&b&#step3:可以开始写作啦!&/b&&br&你的笔记本里已经自动有一个文档了,这个时候让我们回到网页版[微笑脸]&br&你只需要在 web 端点开这个README.md可以开始在里面写你的小说了。&br&&figure&&img src=&https://pic4.zhimg.com/5cff90f3bd0cd5e400bcc637_b.png& data-rawwidth=&1024& data-rawheight=&335& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic4.zhimg.com/5cff90f3bd0cd5e400bcc637_r.png&&&/figure&或者直接点开刚刚 clone 到电脑上的文件夹直接在里面写。&br&ps:需要注意的是,文本支持 markdown 格式,可以先参考这个&a href=&//link.zhihu.com/?target=http%3A//www.jianshu.com/p/q81RER& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&献给写作者的 Markdown 新手指南&/a&。&br&&br&&b&#step4:上传你写的小说&/b&&br&在本地写完之后你要上传到云端让我和小四都能看见你写出什么幺蛾子了吧?&br&回到客户端,你发现有变化!!!&br&&figure&&img src=&https://pic4.zhimg.com/2e2d2a0da9ef8005ee01f_b.png& data-rawwidth=&517& data-rawheight=&542& class=&origin_image zh-lightbox-thumb& width=&517& data-original=&https://pic4.zhimg.com/2e2d2a0da9ef8005ee01f_r.png&&&/figure&没错,在你头像旁边给你这次提交内容起一个名字,以后如果再次寻找的时候会很方便。然后点下面的 Commit to master,还有右上角的 Sync 就好啦!&br&&br&&b&#step5:回退到之前的版本&/b&&br&夜深人静的时候,我趁着你们都在睡觉把小说的结局偷偷地改成女主死掉了!&br&你醒来觉得我这结局改的也太悲伤了,完全不能接受!结局必须要和之前那样王子公主幸福的生活在一起的 happy ending!&br&问题又来了,怎么退回到我修改结局之前的 happy ending?&br&&br&还是刚刚那个客户端,选择History 然后点击小齿轮,选择潇洒地点 roll back to this commit!&br&你又回到happy ending的状态啦!!&br&&figure&&img src=&https://pic4.zhimg.com/e2b413faf67ea77b36c93_b.png& data-rawwidth=&301& data-rawheight=&223& class=&content_image& width=&301&&&/figure&&br&&b&#step6:&/b&&br&小四写了一章华丽无比的番外,你要更新本地的小说和他写的保持一致怎么办?&br&git pull&br&&figure&&img src=&https://pic2.zhimg.com/f5c5c0b43d1f9f7ab27267fbcc16d9fd_b.png& data-rawwidth=&279& data-rawheight=&354& class=&content_image& width=&279&&&/figure&&br&-----------&br&好了,知道这些基本操作入门应该够了,我们来回顾一下(不要嫌弃我的画工啊喂!)&br&&figure&&img src=&https://pic4.zhimg.com/6c22d708defbc7df2240b_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic4.zhimg.com/6c22d708defbc7df2240b_r.png&&&/figure&&br&入门初期迅速得到一些正反馈对于学习一门新技能来说实在是太重要了!尤其是编程这么炫酷的事情!&br&所以先不要管什么复杂的 issue 呀 wiki 呀乱七八糟的操作,按照上面的一步一步来,如果遇到什么问题 google 之,一般都会解决的。&br&&br&有一个段子不就是说,当你遇到问题去找最高级的工程师,他们一般都会直接 google 吗?而且自带的帮助手册也是解决问题的好办法,比如你要新建一个 branch=》&a href=&//link.zhihu.com/?target=https%3A//github.com/Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Create a new branch with git and manage branches · Kunena/Kunena-Forum Wiki · GitHub&/a&&br&&br&&b&这种遇到问题先自己尝试解决的小技巧,也是我自从学编程以来最大的收获。&/b&&br&&br&------------------------&br&&br&&b&#除了写代码你还可以用 github 做什么?&br&&/b&&br&回到文章开头,我又不是程序猿不用写代码玩这个干啥?&br&&br&你有没有碰到过团队里几个人共同协作写一个文档的时候?或者说需要反复修改的东西?比如最简单的写论文,用 word 保存一个一个版本 e-mail 给 boss?下次再找上次修改了什么地方简直要死啊有木有!!!&br&&br&相信你看了我的远程协作写小说的例子应该已经明白了, github 说白了就是一个「版本控制工具」。我们所谓的「回退」到历史记录,随时查看更改了什么地方,利用这个功能可以做的事情简直太多啦!&br&&br&就像 github 其中一位创始人[Chris](&a href=&//link.zhihu.com/?target=https%3A//github.com/defunkt& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&defunkt (Chris Wanstrath) · GitHub&/a&)也详细描述了[GitHub初创的前因后果](&a href=&//link.zhihu.com/?target=https%3A//gist.github.com/67060& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Startup Riot 2009 Keynote 路 GitHub&/a&),他说道:&br&&blockquote&&p&Do whatever you want.&/p&&/blockquote&所以不是程序猿可以用这个来做什么呢?&br&&b&1、写书&br&&/b&和 33 一起写小说的例子,还记得吧?几个人你一章我一章共同修改一本书,或是几个出版社的编辑对新书进行校对,利用这个神器就可以随时看到哪里出现了问题和更改。如果想自己写书的话 gitbook 也是不错的选择(又是一个坑。。)&br&&br&&b&2、写文档神器&br&&/b&身为科研狗、产品狗、射鸡湿的你,是不是经常写文档?一个成熟的文档可能会有好几个版本,需要不断地迭代,然后不断提交给老板看哪里需要修改。在不同版本间自如切换就要用到git branch和git rebase了。&br&想想看,用 git 的分支管理不比拷贝粘贴更方便吗?&br&&br&&b&3、健身&br&&/b&有个哥们为了激励自己健身把每日计划都放上去了,还可以邀请其他人一起来相互监督!(我才不会说我自己也开了一个呢哈哈哈)&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/hoosin/EveryDaySport& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hoosin/EveryDaySport · GitHub&/a&&br&&br&&b&4、找男票&br&&/b&没错,看这个项目!利用众包的形式一起罗列男友条件的 list 然后试图自己开发出一个男票233333&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/YixuanFranco/YourBoyfriend& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YixuanFranco/YourBoyfriend · GitHub&/a&&br&有人评论问我用这个找到男票了吗?&br&统一回复:&br&并!没!有!&br&&br&&b&5、用GitHub搭建博客、个人网站或者公司官网&/b&&p&一个有自己域名的独立博客,是不是很帅?!&/p&&p&GitHub本身提供免费的托管服务,又提供了贴心的 Pages 功能,可以绑定你自己的域名,免费、高效、不限流量,做一个个人页面绰绰有余。&/p&&p&Jekyll 的教程和我自己的博客会稍后放出。。(先给自己挖个坑)&/p&&br&&p&&b&6、用GitHub协作翻译&/b&&/p&&p&苹果官方发布的各种官方手册,比如最近开源的 Swift &a href=&//link.zhihu.com/?target=https%3A//github.com/numbbbbb/the-swift-programming-language-in-chinese& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&numbbbbb/the-swift-programming-language-in-chinese · GitHub&/a& 就是国内一个自发组织起来的团队,30多个人用9天时间即将翻译和校对工作全部完成,他们每人都还有自己的事情,上班、上线、创业,这么大的工作量在以往简直是不可能完成的任务!&/p&&br&&p&&b&7、项目管理&/b&&/p&&p&GitHub最初是为了开发的管理而生,当然也就具备了项目管理的潜质,特别是与开发密切联系的项目中,它的优势尽显。比如这篇文章介绍了如何使用GitHub结合 Trello 等其它工具进行项目管理:&a href=&//link.zhihu.com/?target=http%3A//xiaocong.github.io/blog//team-collaboration-with-github/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&使用GitHub进行团队合作&/a&。当然,GitHub还是很偏重开发的管理,一般的项目管理还是适合使用 wortile 之类的产品。&/p&&br&&b&7、政府文件?&/b&&br&之前看到一个知乎回答说:日本政府把宪法放上去了,德国政府也做过类似的事:German Federal Law Now on GitHub。除了德日之外,英美在 GitHub 上也有很多公众服务:英国政府多达 10 页的项目目录:&a href=&//link.zhihu.com/?target=https%3A//github.com/alphagov& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Government Digital Service · GitHub&/a& 其中很多是政府项目的源代码或者设计原则之类。芝加哥的公开地理信息:Forking your CityNew York Open City: City of New York 路 &br&(原谅我找不到这个回答了,欢迎补充)&br&&br&&b&8、科研项目及数据&br&&/b&较早的&a href=&//link.zhihu.com/?target=http%3A//arxiv.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&arXiv&/a&、&a href=&//link.zhihu.com/?target=http%3A//plos.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PLoS&/a&之外,较有气象的可以推荐&a href=&//link.zhihu.com/?target=http%3A//mendeley.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&mendeley&/a&、&a href=&//link.zhihu.com/?target=http%3A//www.doaj.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&开放期刊目录&/a&&br&教育方面:&br&&ul&&li&&a href=&//link.zhihu.com/?target=http%3A//openstudy.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&OpenStudy&/a&:一个社会性学习网络,通过互助来更好地学习,主题涉及到计算机、数学、写作等。&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//openhatch.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&openhatch&/a&: 通过练习、任务等帮助新手更好地进入开源社区&/li&&/ul&&b&9、个人简历&br&&/b&&p&GitHub上的代码无法造假,也容易通过你关注的项目来了解你的知识面的宽度与深度。现在越来越多知名公司活跃在GitHub,发布开源库并招募各类人才,例如:&a href=&//link.zhihu.com/?target=https%3A//github.com/facebook& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Facebook&/a&、&a href=&//link.zhihu.com/?target=https%3A//github.com/twitter& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Twitter&/a&、&a href=&//link.zhihu.com/?target=https%3A//github.com/yahoo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Yahoo&/a& ...&/p&&p&开始有了第三方网站提供基于GitHub的人才招聘服务,例如:&/p&&ul&&li&&a href=&//link.zhihu.com/?target=http%3A//githire.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHire&/a&:通过它,可以找出你所在地区的程序员。&/li&&li&&a href=&//link.zhihu.com/?target=http%3A//www.gitalytics.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Gitalytics.com&/a&:通过它,能评估某位程序员在GitHub、LinkedIn、StackOverflow、hackernews等多个网站的影响力。&/li&&/ul&甚至专门有一个项目就是自动根据你的 GtiHub 公开项目创建个人简历:&br&&a href=&http://www.zhihu.com/question//answer/& class=&internal&&我们可以使用 Git 以及 GitHub 做哪些事情? - Kane Blueriver 的回答&/a&&br&&br&&b&10、设计资源库(重点来了!!!)&br&&/b&做 ppt 不知道到哪里去找高质量美图?&br&最近半年初入设计圈,收集了不少 bookmark 想在年底来一个总结。 于是自己创建了这个Design- Resource List 项目,旨在让更多的设计师找资源变得有章可循。&br&&br& 先更新一部分,大概还有200多个还没放过来。。(吐血) 所以,欢迎大家也推荐自己收藏的资源,加入这个项目并一起持续更新么么哒 :)&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/timmy3131/design-resource& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&timmy3131/design-resource · GitHub&/a&&br&&br&11、&a href=&//link.zhihu.com/?target=https%3A//github.com/explore& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Explore · GitHub&/a& 更多好玩的内容等你自己发现哦&br&&a href=&https://www.zhihu.com/question/& class=&internal&&你在 GitHub 上看到过的最有意思的项目是什么? - 调查类问题&/a&&br&&br&-------------------------------------&br&&b&#更多高阶教程:&/b&&br&&b&如果你已经不满足于上面的基础知识了,欢迎探索更高级的玩法!&br&&/b&1、&a href=&//link.zhihu.com/?target=https%3A//gitcafe.com/GitCafe& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitCafe&/a& / &a href=&//link.zhihu.com/?target=https%3A//gitcafe.com/GitCafe/Help& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Help&/a&&br&2、[git简明指南](&a href=&//link.zhihu.com/?target=http%3A//rogerdudler.github.io/git-guide/index.zh.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&git - the simple guide&/a&)墙裂推荐!漫画的形式很形象(恩我承认比我画的好看多了)&br&&p&3、在线交互学习 github 的网站&a href=&//link.zhihu.com/?target=http%3A//pcottle.github.io/learnGitBranching/%3FNODEMO& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learn Git Branching&/a& 这个也很好玩~&/p&&p&4、[GitHub自身的官方博客](&a href=&//link.zhihu.com/?target=https%3A//github.com/blog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The GitHub Blog · GitHub&/a&)&/p&5、&a href=&//link.zhihu.com/?target=http%3A//danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&git-flow 备忘清单&/a&&br&&br&&b&入门书籍推荐:&br&&/b&&a href=&//link.zhihu.com/?target=http%3A//book.douban.com/subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub入门与实践 (豆瓣)&/a&比较基础&br&&a href=&//link.zhihu.com/?target=http%3A//book.douban.com/subject/3420144/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pro Git (豆瓣)&/a& 更高级的教程,很全面!&br&&br&对了对了,还有阳志平老师的两篇非常全面的旧文(这么称呼好生疏啊2333)&br&&a href=&//link.zhihu.com/?target=http%3A//www.yangzhiping.com/tech/github.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&如何高效利用GitHub&/a&&br&&a href=&//link.zhihu.com/?target=http%3A//www.yangzhiping.com/tech/git.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Git与Github入门资料&/a&&br&&br&------------------------&br&( ⊙ o ⊙ )啊!知乎居然还不支持 markdown 心好累。。&br&&br&祝大家新年快乐。&br&ps:有朋友问我真的用 github 来写小说吗?&br&o(╯□╰)o只是举例子啊!方便大家理解而已...&br&还是会写一点点代码的(*/ω\*)&br&&br&欢迎各位程序员哥哥们纠错呀,别忘了点赞赞赞!!!!!
作为一个文科妹子,我在看过几乎所有热门 github 教程之后依旧一头雾水,在近半年的摸索中终于明白啦~新年初,把自己纯小白的学习经验分享一下吧! #什么是 Github ? 必须要放这张图了!!! (图片来源) …
本文首发于&a href=&//link.zhihu.com/?target=http%3A//Div.io& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&Div.io&/span&&span class=&invisible&&&/span&&/a&: &a href=&//link.zhihu.com/?target=http%3A//div.io/topic/851%3Fpage%3D1%233453& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&我对 React Native 的理解和看法&/a&,最近我们也会持续分析他,并且也在Android上做类似的实现,观点会迭代,文章会更新。&br&&br&- - - - - - &br&&br&React native充分利用了Facebook的现有轮子,是一个很优秀的集成作品,并且我相信这个团队对前端的了解很深刻,否则不可能让Native code「退居二线」。&br&&br&&p&对应到前端开发,整个系统结构是这样:&/p&&ul&&li&JSX vs HTML&/li&&li&CSS-layout vs css&/li&&li&ECMAScript 6 vs ECMAScript 5&/li&&li&React native View vs DOM&/li&&/ul&&ol&&li&无需编译,我在第一次编译了ipa装好以后,就再也没更新过app,只要更新云端的js代码,reload一下,整个界面就全变了。&/li&&li&多数布局代码都是&a href=&//link.zhihu.com/?target=https%3A//facebook.github.io/react/docs/jsx-in-depth.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JSX&/a&,所有Native组件都是标签化的,这对于前端程序员来说,降低了不少学习成本,也大大减少了代码量。不信你可以看看JSX编译后的代码。&/li&&li&复用React系统,也减少了一定学习和开发成本,更重要的是利用了React里面的分层和diff机制。js层传给Native层的是一个diff后的json,然后由Native将这个数据映射成真正的布局视图。&/li&&li&css-layout也是点睛之笔,前端可以继续用熟悉的类css方式来编写布局,通过这个工具转换成constrain布局。&/li&&li&系统只有js-objc的单向调用,就是把原生UI组件的方法通过javascritcore或者webview(低版本iOS)映射到js中来,整个调用过程是异步的,这样的设计令React native可以让js运行在桌面chrome中,通过websocket连接Native code和桌面chrome,极大地方便了调试。对其中的机制Bang的一篇文章写得很详细,我就不拾人牙慧了:&a href=&//link.zhihu.com/?target=http%3A//blog.cnbang.net/tech/2698/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&React Native通信机制详解 <<
bang’s blog&/a& 。但这样设计也会带来一些问题,后面说。&/li&&li&点按操作也被抽象成了一组组件(TouchableXXX),这种抽象方式是我在之前做类似工作中没有想到的。facebook还列出Native为什么和web「手感」不同的原因:实时的点按反馈和取消能力。&a href=&//link.zhihu.com/?target=http%3A//facebook.github.io/react-native/docs/gesture-responder-system.html%23content& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&React Native&/a& 这套相应机制设计得很完善,能像Native code那样控制整个点按操作的所有过程。&br&&/li&&li&Debug相当方便!修改了js以后,通过内建的nodejs watcher编译成bundle,在模拟器里面按cmd+r就可以看到效果。而且按cmd+d,可以打开一个chrome窗口,所有的js都移到了chrome里面运行,所以什么断点单步打调用栈,都不在话下。&/li&&/ol&&br&&p&上面的既是特点也是优点,下面说说缺点,或者应该说:「仍然遗留的问题」,在我看来,这个方案已经超越了Hybird方案。&/p&&ol&&li&系统仍然(不得不)依赖原生组件暴露出来的组件和方法。举两个例子,ScrollView这个组件,在Native层是有大量事件的,scrollViewWillBeginDragging, scrollViewWillEndDragging,scrollViewDidEndDragging等等,这些事件在现有的版本都没有暴露,基本上做不了组件联动效果。另外,这个版本中有大量组件是iOS only的:ActivityIndicatorIOS、DatePickerIOS、NavigatorIOS、PickerIOS、SliderIOS、SwitchIOS、TabBarIOS、AlertIOS、AppStateIOS、LinkingIOS、PushNotificationIOS、StatusBarIOS、VibrationIOS,反过来看,剩余的都是一些抽象程度极强的基本组件。这样,用户必须在不同的平台下写两套代码,而且所有能力仍然强烈依赖 React native 开发人员暴露的接口。&/li&&li&由于最外层是React,初次学习成本高,不像往常的Hybird方案,只要多学几个JS API就可以开始干活了。当然,React的确让后续开发变得简单了一些,这么一套外来的(基于iOS)、残缺不全的(css-layout)在React的包装下,的确显得不那么面目可憎了。&/li&&/ol&&p&另外,React Native仍然很不完善。文档还不全,我基本上是看着他的示例代码完成的demo,集成到已有app的文档也是今天才出来。按照官方的说法,Android版本要到半年后才发布:&a href=&//link.zhihu.com/?target=http%3A//facebook.github.io/react/blog/%23when-is-react-native-android-coming& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Blog | React&/a& ,届时整个系统设计可能还会有很大的变化。&/p&&br&&p&PS,在使用Tabbar的时候,我&b&惊喜&/b&的发现他们居然用了iconfont方案,我现在手头的项目中也有同样的实现,不过API怎么设计一直很头疼。结果,我发现他是这么写的:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&TabBarItemIOS
name=&blueTab&
icon={_ix_DEPRECATED('favorites')}
&/code&&/pre&&/div&&p&在 _ix_DEPRECATED 的定义处,有一句注释: // TODO(nicklockwood): How can this fit our require system?&/p&&br&&br&&p&以上。&/p&&br&&br&&br&&p&下面是一周前,在React native还没开源的时候,通过反解ipa的一些分析过程,有兴趣的可以看看。&/p&&br&&br&------------------------简单粗暴的分割线--------------------&br&&br&&u&背景和调研手段&/u&&br&React Native还没开源,最近和组里兄弟「反编译」了Facebook Group(这个应用是用React Native实现的)的ipa代码,出来几百个JS文件,格式化一下,花了几天时间读了一下源码,对React Native的内部核心机制算是有了一个基本了解。&br&&br&&u&React Native的核心实现:&/u&&br&&br&先简单说几点,详细的等回头更新。&br&&br&1. React Native里面&b&没有webview&/b&,这货不是Hybrid app,里面执行JS是用的
&p&JavascriptCore。&/p&2. 再说React Native的核心,iOS Native code提供了十来个最&b&基本核心的类&/b&(RCTDeviceEventEmitter、RCTRenderingPerf等)、或组件(RCTView、RCTTextField、RCTTextView、RCTModalFullscreenView等),然后由React Native的JS部分,组成二十来个&b&基本组件&/b&(Popover、Listview等),交由上层的业务方来使用(THGroupView)。&br&3. 就如他们在宣传时所说,他们实现了一套&b&类似css的子集&/b&,用来解决样式问题,相当复杂和强大,靠这个才能将Native的核心组件组成JS层的基本组件再组成业务端的业务组件,应该是采用&a href=&//link.zhihu.com/?target=https%3A//github.com/facebook/css-layout& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&facebook/css-layout · GitHub&/a&的C语言版本实现的(在ppt中我们看到了类似flex-direction: column一类的代码,这个正是css-layout支持的语法)。&br&4. 在React Native中,写JS的工程师解决的是「&i&&b&将基本组件拼装成可用的React组件&/b&&/i&」的问题,写Native Code的工程师解决的是「&i&&b&提供核心组件,提供足够的扩展性、灵活性和性能&/b&&/i&」的问题。&br&&br&&br&&u&React Native的设计考虑:&/u&&br&&br&ReactJS对React Native有着直接的影响(我没在生产环境中用过React,只看过代码&用过Angular,如果有误请指出)&br&&br&ReactJS里面有这样的设计:&br&1. ReactJS 的大工厂入口createElement返回的不是某个实体DOM对象,而只是一个数组&br&2. 通过源码中 ui/browser/ 目录中的代码,将这个数组转换成DOM&br&3. 底层的渲染核心是可以更换的&br&&br&另外,Facebook自己有JSX,css-layout等开源项目,基于这些,如果要做一个用 JS来开发Native app的东西,很自然就想到了一套最有效率的搞法:&br&&br&1. 将 ui/browser 里面的代码替换成一套 Native 的桥接JS(实际上,iOS版是通过&br&injectGenericComponentClass方法,将核心组件的方法注入到JS里面 ),就直接复用React的MVVM,自动将数据映射到Native了&br&2. Native code里面实现三组核心API,一组提供核心组件的API(create、update、delete),一组事件方法(ReactJS里面的EventEmitter ),一组对css进行解析(css-layout)以及返回Style的ComputedStyle(React Native里面叫meatureStyle)。&br&&br&这样,用上了ReactJS本身的所有核心功能和设计思路,Native的开发也足够简单。&br&&br&&br&&u&那,React Native是什么?&br&&/u&&br&其实这东西从Native开发来说,相当于重新发明了一个浏览器渲染引擎并且套一个React的壳,从Web开发角度来说,就是把原来React的后端换成了Native code来实现,就跟Flipboard最近搞的React Canvas 一样: &a href=&//link.zhihu.com/?target=https%3A//github.com/Flipboard/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flipboard · GitHub&/a&&b&react&/b&-&b&canvas&/b&&br&&br&&br&&u&React Native的优势和劣势:&/u&:&br&&br&优势相对Hybird app或者Webapp:&br&1. 不用Webview,彻底摆脱了Webview让人不爽的交互和性能问题&br&2. 有较强的扩展性,这是因为Native端提供的是基本控件,JS可以自由组合使用&br&3. 可以直接使用Native原生的「牛逼」动画(在FB Group这个app里面,面板滑出带一点果冻弹动,面板基于某个点展开这种动画随处可见,这种动画用Native code来做小菜一碟,但是用Web来做就难上加难)。&br&&br&优势相对于Native app:&br&1. 可以通过更新远端JS,直接更新app,不过这快成为各家大型Native app的标配了…&br&&br&劣势:&br&1. 扩展性仍然远远不如web,也远远不如直接写Native code(这个不用废话解释了吧)&br&2. 从Native到Web,要做很多概念转换,势必造成双方都要妥协。比如web要用一套CSS的阉割版,Native通过css-layout拿到最终样式再转换成native原生的表达方式(比如iOS的Constraint\origin\Center等属性),再比如动画。另外,若Android和iOS都要做相同的封装,概念转换就更复杂了。&br&&br&更新1:添加了React对React Native的影响。&br&更新2:基本确定其使用了 css-layout,添加了对React Native的总结&br&更新3: React native已经开源了: &a href=&//link.zhihu.com/?target=http%3A//facebook.github.io/react-native/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&React Native&/a&,只有iOS版。我写了几个demo,简单看了看objc代码并和开源前的我们的一些结论(见后文)交叉验证。简单地从前端工程师和系统整体角度说一下React native的特点和优劣吧。&br&更新4: 补充了几条优势和与前端开发的对照
本文首发于: ,最近我们也会持续分析他,并且也在Android上做类似的实现,观点会迭代,文章会更新。 - - - - - - React native充分利用了Facebook的现有轮子,是一个很优秀的集成作品,并且我相信这个…
&figure&&img src=&https://pic2.zhimg.com/v2-69faec9c4fb409df09d261c5e2b748b5_b.jpg& data-rawwidth=&489& data-rawheight=&291& class=&origin_image zh-lightbox-thumb& width=&489& data-original=&https://pic2.zhimg.com/v2-69faec9c4fb409df09d261c5e2b748b5_r.jpg&&&/figure&&p&正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。&/p&&p&正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;
var r = fieldValue.match(reg);
if(r==null)alert('Date format error!');
&/code&&/pre&&/div&&p&下面是&b&技匠&/b&整理的,在前端开发中经常使用到的&b&20&/b&个正则表达式。&/p&&p&&b&1 . 校验密码强度&/b&&/p&&p&密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
&/code&&/pre&&/div&&p&&b&2. 校验中文&/b&&/p&&p&字符串仅能是中文。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^[\\u4e00-\\u9fa5]{0,}$
&/code&&/pre&&/div&&p&&b&3. 由数字、26个英文字母或下划线组成的字符串&/b&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^\\w+$
&/code&&/pre&&/div&&p&&b&4. 校验E-Mail 地址&/b&&/p&&p&同密码一样,下面是E-mail地址合规性的正则检查语句。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?
&/code&&/pre&&/div&&p&&b&5. 校验身份证号码&/b&&/p&&p&下面是身份证号码的正则校验。15 或 18位。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&15位:
^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$
^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$
&/code&&/pre&&/div&&p&&b&6. 校验日期&/b&&/p&&p&“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^(?:(?!]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[1])-31)|(?:[0-9]{2}(?:0[48]|[]|[13579][26])|(?:0[48]|[]|[1)-02-29)$
&/code&&/pre&&/div&&p&&b&7. 校验金额&/b&&/p&&p&金额校验,精确到2位小数。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^[0-9]+(.[0-9]{2})?$
&/code&&/pre&&/div&&p&&b&8. 校验手机号&/b&&/p&&p&下面是国内 13、15、18开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码)&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$
&/code&&/pre&&/div&&p&&b&9. 判断IE的版本&/b&&/p&&p&IE目前还没被完全取代,很多页面还是需要做版本兼容,下面是IE版本检查的表达式。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$
&/code&&/pre&&/div&&p&&b&10. 校验IP-v4地址&/b&&/p&&p&IP4 正则语句。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b
&/code&&/pre&&/div&&p&&b&11. 校验IP-v6地址&/b&&/p&&p&IP6 正则语句。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
&/code&&/pre&&/div&&p&&b&12. 检查URL的前缀&/b&&/p&&p&应用开发中很多时候需要区分请求是HTTPS还是HTTP,通过下面的表达式可以取出一个url的前缀然后再逻辑判断。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&if (!s.match(/^[a-zA-Z]+:\\/\\//))
s = 'http://' +
&/code&&/pre&&/div&&p&&b&13. 提取URL链接&/b&&/p&&p&下面的这个表达式可以筛选出一段文本中的URL。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?
&/code&&/pre&&/div&&p&&b&14. 文件路径及扩展名校验&/b&&/p&&p&验证windows下文件路径和扩展名(下面的例子中为.txt文件) &/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?&&&|]+\\.txt(l)?$
&/code&&/pre&&/div&&p&&b&15. 提取Color Hex
Codes&/b&&/p&&p&有时需要抽取网页中的颜色代码,可以使用下面的表达式。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
&/code&&/pre&&/div&&p&&b&16. 提取网页图片&/b&&/p&&p&假若你想提取网页中所有图片信息,可以利用下面的表达式。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&\\& *[img][^\\\\&]*[src] *= *[\\&\\']{0,1}([^\\&\\'\\ &]*)
&/code&&/pre&&/div&&p&&b&17. 提取页面超链接&/b&&/p&&p&提取html中的超链接。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&(&a\\s*(?!.*\\brel=)[^&]*)(href=&https?:\\/\\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^&]+)&((?!.*\\brel=)[^&]*)(?:[^&]*)&
&/code&&/pre&&/div&&p&&b&18. 查找CSS属性&/b&&/p&&p&通过下面的表达式,可以搜索到相匹配的CSS属性。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}
&/code&&/pre&&/div&&p&&b&19. 抽取注释&/b&&/p&&p&如果你需要移除HMTL中的注释,可以使用如下的表达式。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&!--(.*?)--&
&/code&&/pre&&/div&&p&&b&20. 匹配HTML标签&/b&&/p&&p&通过下面的表达式可以匹配出HTML中的标签属性。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&&\\/?\\w+((\\s+\\w+(\\s*=\\s*(?:&.*?&|'.*?'|[\\^'&&\\s]+))?)+\\s*|\\s*)\\/?&
&/code&&/pre&&/div&&h2&&b&正则表达式的相关语法&/b&&/h2&&p&下面是我找到的一张非常不错的正则表达式 Cheat Sheet,可以用来快速查找相关语法。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-2f43be36dd2dd45848e28ddfe430f333_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic4.zhimg.com/v2-2f43be36dd2dd45848e28ddfe430f333_r.jpg&&&/figure&&h2&&b&学习正则表达式&/b&&/h2&&p&我在网上看到了一篇相当不错的正则表达式&a href=&http://link.zhihu.com/?target=https%3A//msdn.microsoft.com/en-us/library/az24scfc%28v%3Dvs.110%29.aspx& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&快速学习指南&/a&,有兴趣继续深入学习的同学可以参考。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-99cdd76a777a8a2b3767cbe3566dc45c_b.png& data-caption=&& data-size=&normal& data-rawwidth=&705& data-rawheight=&413& class=&origin_image zh-lightbox-thumb& width=&705& data-original=&https://pic1.zhimg.com/v2-99cdd76a777a8a2b3767cbe3566dc45c_r.jpg&&&/figure&&h2&&b&正则表达式在线测试工具&/b&&/h2&&p&&a href=&http://link.zhihu.com/?target=https%3A//regex101.com/%23javascript& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&regex101&/a&是一个非常不错的正则表达式在线测试工具,你可以直接在线测试你的正则表达式哦。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-0c8bf3fc322f9824b0cbd_b.png& data-caption=&& data-size=&normal& data-rawwidth=&746& data-rawheight=&423& class=&origin_image zh-lightbox-thumb& width=&746& data-original=&https://pic2.zhimg.com/v2-0c8bf3fc322f9824b0cbd_r.jpg&&&/figure&&p&另外,我也网上找到几本不错的正则表达式方面的教程和书籍,并将它们分享到了&a href=&https://zhuanlan.zhihu.com/p//jijiangshe.com& class=&internal&&技匠社jijiangshe.com&/a&,如果你有兴趣学习欢迎访问获取。^_^&/p&&p&作者:技匠&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//www.jianshu.com/p/e7bb& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&jianshu.com/p/e7bb97218&/span&&span class=&invisible&&946&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&——————————————————————————————————————&/p&&p&你想更深入了解学习Python知识体系,你可以看一下我们花费了一个多月整理了上百小时的几百个知识点体系内容:&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//www.magedu.com/73198.html%3FPython_wenzhang_zhihu_jinke_zhidaozhe20gezhengzebiaodashinengrangnishaoxie1000hangdaima_& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【超全整理】《Python自动化全能开发从入门到精通》笔记全放送&/a&&/p&
正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基…
&figure&&img src=&https://pic2.zhimg.com/v2-d745cb9e3c3d_b.jpg& data-rawwidth=&717& data-rawheight=&371& class=&origin_image zh-lightbox-thumb& width=&717& data-original=&https://pic2.zhimg.com/v2-d745cb9e3c3d_r.jpg&&&/figure&&blockquote&简评:以下资源多数为英文,可能需要科学上网。&/blockquote&&p&现在随着网上的资源越来越多,大家可能经常也会觉得混乱和迷茫。这里是一份可能简单但对我个人很有价值的列表,希望对你也能有帮助。&/p&&h2&编程实践&/h2&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//git-scm.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Source Control (Git) &/a& - 作为一名开发者,应当学会熟练使用 Git。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//www.atlassian.com/git/tutorials/comparing-workflows& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Git Workflows&/a& - 在使用版本控制工具时有很多不同的管理方法。主流的有:Gitflow workflow, Centralized workflow, Forking workflow。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//www.thoughtworks.com/continuous-integration& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Continuous Integration&/a&(持续集成)- 持续集成是一种软件开发实践,通过自动化的构建流程能帮助开发人员尽快发现问题,提升项目质量。常用的持续集成服务有:&a href=&http://link.zhihu.com/?target=https%3A//jenkins.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Jenkins&/a&, &a href=&http://link.zhihu.com/?target=https%3A//www.buddybuild.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Buddybuild&/a&, &a href=&http://link.zhihu.com/?target=https%3A//circleci.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CircleCI&/a&, &a href=&http://link.zhihu.com/?target=https%3A//travis-ci.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Travis CI&/a& 等等。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//www.atlassian.com/blog/git/written-unwritten-guide-pull-requests& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pull Requests&/a& - Pull requests 是一种非常好的开发方法,可以及时获得关于自己所开发代码非常详细的反馈。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//www.scrumalliance.org/why-scrum/scrum-guide& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Agile/Scrum methodologies&/a& - Scrum 是一种敏捷开发的方法学,有很多现代软件开发团队都在遵循 Scrum 工作方式。&/li&&li&代码质量工具 - 很多公司都在通过代码质量工具来衡量其代码质量。常用的工具有:&a href=&http://link.zhihu.com/?target=https%3A//www.sonarqube.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sonar&/a&, &a href=&http://link.zhihu.com/?target=http%3A//findbugs.sourceforge.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&FindBugs&/a&, &a href=&http://link.zhihu.com/?target=https%3A//github.com/checkstyle/checkstyle& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Checkstyle&/a& 和 &a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/studio/write/lint.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Lint&/a&。&/li&&/ul&&h2&Android 基础&/h2&&p&虽然现在有很多的网站都提供 Android 开发基础的教学,但如果有能力,还是推荐去 Android 的官网看看。&/p&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/guide/components/fundamentals.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&应用基础知识&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/guide/topics/manifest/manifest-intro.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&应用清单&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//codelabs.developers.google.com/codelabs/build-your-first-android-app/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code lab — Build your first Android App&/a&&/li&&/ul&&h2&布局&/h2&&p&Android 中有很多不同的布局方式:&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/reference/android/widget/FrameLayout.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&FrameLayout&/a&, &a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/guide/topics/ui/layout/relative.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&RelativeLayout&/a&, &a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/guide/topics/ui/layout/linear.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LinearLayout&/a&, &a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/reference/android/support/constraint/ConstraintLayout.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ConstraintLayout&/a&, &a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/reference/android/support/design/widget/CoordinatorLayout.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CoordinatorLayout&/a&,确保自己至少能熟练使用这些布局。&/p&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/training/multiscreen/screensizes.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&支持不同屏幕尺寸&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//codelabs.developers.google.com/codelabs/constraint-layout/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code lab — ConstraintLayout&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//codelabs.developers.google.com/codelabs/mdc-android/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code lab — CoordinatorLayout&/a&&/li&&/ul&&h2&构建系统 - Gradle&/h2&&p&了解 Gradle 可能是被一些 Android 开发者所忽视的东西。但了解 Gradle 的基础知识能帮助你更好的编写自己的 gradle 任务。&/p&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//gradle.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Gradle Documentation&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/studio/build/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&配置构建&/a&&/li&&/ul&&h2&网络&/h2&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//www.tutorialspoint.com/restful/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Understanding RESTful Services&/a& - 目前约 69% 的 API 都是 RESTful API,其也是目前最主流的 Web 服务实现方案,你对其应当有基本的了解。&/li&&li&&a href=&http://link.zhihu.com/?target=http%3A//square.github.io/retrofit/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Retrofit&/a& — 适用于 Android 和 Java 的 HTTP 客户端。&/li&&li&&a href=&http://link.zhihu.com/?target=http%3A//square.github.io/okhttp/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&OkHttp&/a& —
同时适用于 Android 和 Java 的 HTTP / HTTP2 客户端。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/studio/profile/network-profiler.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Network Profiler in Android&/a& — Android Studio 中的网络请求监听工具。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//www.charlesproxy.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Charles Proxy&/a& —
非常好用的 HTTP 代理、监视器和反向代理工具。支持 Mac, Windows 和 Linux。&/li&&/ul&&h2&构建 Android 应用&/h2&&p&仅仅知道如何编写 Android 代码还远远不够。优秀的 Android 应用程序需要遵循良好的架构设计才能使其易于测试和维护。常用的架构模式有 MVP, MVVM 和 Clean Architecture。了解这些模式之间的差异和各自的特点还是很有必要的。&/p&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/topic/libraries/architecture/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Architecture Components Guide&/a&&/li&&li&Android Architecture Components (part &a href=&http://link.zhihu.com/?target=https%3A//riggaroo.co.za/android-architecture-components-looking-room-livedata-part-1/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&1&/a&, &a href=&http://link.zhihu.com/?target=https%3A//riggaroo.co.za/android-architecture-components-looking-viewmodels-part-2/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2&/a&, &a href=&http://link.zhihu.com/?target=https%3A//riggaroo.co.za/android-architecture-components-looking-lifecycles-part-3/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&3&/a&)&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3D9QrFMsihBAo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Introduction to Android Architecture Components Video&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//github.com/googlesamples/android-architecture-components& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google Sample App Github Repository&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//codelabs.developers.google.com/codelabs/android-persistence/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code lab — Persistence&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//codelabs.developers.google.com/codelabs/android-lifecycles/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code lab — Lifecycle Aware Components&/a&&/li&&/ul&&h2&测试&/h2&&p&测试也是开发的一个重要部分,其中单元测试和 UI 测试是你必须理解掌握的部分。&/p&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/topic/libraries/testing-support-library/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&测试支持库&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/training/testing/espresso/basics.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Espresso&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=http%3A//junit.org/junit4/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JUnit&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=http%3A//site.mockito.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mockito&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//codelabs.developers.google.com/codelabs/android-testing/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code lab — Android Testing&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//codelabs.developers.google.com/codelabs/android-perf-testing/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code lab — Android Performance Testing&/a&&/li&&/ul&&h2&发布&/h2&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/studio/publish/preparing.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&准备发布&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/studio/publish/app-signing.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&签署您的应用&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/studio/publish/versioning.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&对您的应用进行版本控制&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/studio/build/shrink-code.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&压缩代码和资源&/a&&/li&&/ul&&h2&安全性&/h2&&p&保护自己的应用,确保其他人无法访问未经授权的内容,你需要做很多事情。至少使用 ProGuard,理解什么是&a href=&http://link.zhihu.com/?target=https%3A//zh.wikipedia.org/wiki/%25E4%25B8%25AD%25E9%%25E4%25BA%25BA%25E6%2594%25BB%25E5%2587%25BB& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&中间人攻击&/a&,了解不同的加密方式,在应用中安全的存储信息,保护你的 API Token,证书什么的。&/p&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/training/articles/security-tips.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&安全要点&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//square.github.io/okhttp/3.x/okhttp/okhttp3/CertificatePinner.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Certificate Pinning&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/training/safetynet/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SafetyNet API&/a&&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//developer.android.com/training/articles/keystore.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android 密钥库系统&/a&&/li&&/ul&&h2&Android 高级主题&/h2&&p&如果上面的基础知识你都已经了解了,那么就可以进一步了解下下面的进阶内容:&/p&&ul&&li&&a href=&http://link.zhihu.com/?target=https%3A//kotlinlang.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kotlin&/a& - 推荐阅读 &a href=&http://link.zhihu.com/?target=https%3A//kotlinlang.org/docs/tutorials/koans.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kotlin Koans&/a& 和 code lab 的 &a href=&http://link.zhihu.com/?target=https%3A//codelabs.developers.google.com/codelabs/build-your-first-android-app-kotlin/index.html%230& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Build Your First Android App in Kotlin&/a&。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//github.com/ReactiveX/RxJava& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&RxJava&/a& - 推荐看著名的 &a href=&http://link.zhihu.com/?target=https%3A//github.com/JakeWharton& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Jake Wharton&/a& 关于 RxJava 的&a href=&http://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DhtIXKI5gOQU& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&演讲视频&/a&(在 Youtube 上)。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//google.github.io/dagger/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dagger&/a& - 最流行的 Android 依赖注入框架。&/li&&li&&a href=&http://link.zhihu.com/?target=https%3A//material.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Material Design&/a& - Google 官方推荐的 Android 应用设计指南。&/li&&li&&a href=&http://link.zhihu.com

我要回帖

更多关于 支付宝怎么改密码 的文章

 

随机推荐