0%

工欲善其事,必先利其器。

一、团队协作

团队协作

远程

  • TeamViewer:安全远程访问和支持
    TeamViewer 基于最广泛的平台和技术,连接全世界的人、地区和事物。

  • 向日葵:简单好用的远程控制软件

  • mstsc:运行 win+r,输入 mstsc。不要忽略 windows 自带的强大远程桌面连接工具

    注意:真的不要再用 QQ 远程了,真的很卡!

笔记备忘

  • 印象笔记:工作必备效率应用
  • 有道云笔记:网易出品,获得 5000 万用户青睐的笔记软件。提供了 PC 端、移动端、网页端等多端应用,用户可以随时随地对线上资料进行编辑、分享以及协同。
  • 日事清:怕工作进度延误 就用日事清
  • 滴答清单:一个帮你高效完成任务和规划时间的应用

二、图形与设计

思维导图与原型设计

  • XMind:思维导图,框架图等等,非常推荐。收费软件,部分功能可用
  • MindManager:让思考、计划和沟通变得更容易
  • 百度脑图:在线免费脑图,推荐
  • Mockplus:更快、更简单的原型设计
  • Axure RP:是一款专业的快速原型设计工具

绘图工具

  • Visio:微软绘图工具,以直观的方式工作,轻松绘制图表
  • 亿图:国产综合图形图表设计软件。类似 visio 的绘图工具(完美破解版
  • ProcessOn:支持流程图、思维导图、原型图、UML、网络拓扑图、组织结构图等
  • draw.io:free online diagram software for making flowcharts, process diagrams, org charts, UML, ER and network diagrams
  • StarUML:A sophisticated software modeler for agile and concise modeling(总之 UML 绘图神器)

平面与视频设计

只会写代码,设计都不会?本人从事过多年平面设计和视频相关的工作,这里也给大家推荐一些平时做设计的时的一些软件。

三、版本控制

SVN

  • Subversion (SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史
  • 工具下载:tortoiseSVN
  • 学习资源

Git

Git 工作流

Git 托管平台

  • Github:全球最大的程序员社交网站(同性交友网站)
  • 码云:国内比较大的 Git 托管平台。码云专为开发者提供稳定、高效、安全的云端软件开发协作平台。无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发
  • CODING:国内 Git 托管平台,Coding,让开发更简单

自主搭建代码托管平台

  • GitLab:可以使用 GitLab 官方的服务,也提供了开源社区版供团队搭建使用。(推荐使用 Docker 可实现一键自动化搭建)

  • Gogs:一款极易搭建的自助 Git 服务,通过 Go 语言写的,适合在 Linux 服务器上搭建

  • VisualSVN:VisualSVN Server allows you to easily install and manage a fully-functional Subversion server on the Windows platform.

  • iF.SVNAdmin:The iF.SVNAdmin application is a web based GUI to your Subversion authorization file. It is based on PHP 5.3 and requires a web server (Apache) to be installed. (通过 PHP 在 Linux 上搭建 SVN 平台,并且有 web 管理页面)

四、全栈开发

数据库管理(以Mysql为例)

  • Navicat Premium:可以连接所有数据库,配套Navicat也针对不同的数据库有不同的版本,请点击进入官网自行查看,收费软件,需要百度自行破解。
  • SQLyog:Administrate MySQL Databases With Ease Using a Graphical Interface,免费

SSH 连接工具

推荐:以上三款工具我都使用过,目前已经弃用 Xshell 和 SecureCRT,推荐使用 MobaXterm

SHELL

接口调试工具

  • 抓包工具1 | Fiddler:The free web debugging proxy(很优秀的抓包工具,目前似乎只支持 windows 用户)
  • 抓包工具2 | charles:Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet.(MacOS的必备抓包工具)
  • 接口调试 | postman:Developers use Postman to build
    modern software for the API-first world.

轻量级开发工具

容器化技术

  • Docker:秒级启动虚拟机容器技术。真正一次编写,到处运行。(一定要学!)

五、文档技术

在团队协作中必须会涉及到文档交互部分,这里推荐以下几个文档平台和开源项目

文档平台

  • 看云:专注于文档在线创作、协作和托管(极力推荐,每个文档只有50Mb的免费空间,超过需要收费)

自动文档生成工具

  • ApiDoc:Inline Documentation for RESTful web APIs,可以通过命令行将代码中的注释生成在线可调试的文档,开发者的福音啊
  • Swagger:The Best APIs are Built with Swagger Tools,在 Java web 项目中用的比较多

开源框架

  • ShowDoc:一个非常适合IT团队的在线 API 文档、技术文档工具。使用 PHP 开发的文档框架
  • MinDoc:MinDoc 是一款针对IT团队开发的简单好用的文档管理系统
  • vuepress:vue 官方团队的文档解决方案,适合于静态博客或是文档
  • docsify:类似 gitbook 和 vuepress 的文档解决方案
  • hexo:markdown 编写,自动生成静态博客

前端三要素

  • HTML(结构):超文本标记语言(Hyper Text Markup Language),决定网页的结构和内容
  • CSS(表现):层叠样式表(Cascading Style Sheets),设定网页的表现样式
  • JavaScript(行为):是一种弱类型脚本语言,其源代码不需经过编译,而是由浏览器解释运行,用于控制网页的行为

结构层(HTML)

表现层(CSS)

CSS 层叠样式表是一门标记语言,并不是编程语言,因此不可以自定义变量,不可以引用等,换句话说就是不具备任何语法支持,它主要缺陷如下:

  • 语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器;
  • 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护;

这就导致了我们在工作中无端增加了许多工作量。为了解决这个问题,前端开发人员会使用一种称之为 【CSS 预处理器】 的工具,提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。大大提高了前端在样式上的开发效率。

什么是 CSS 预处理器

CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行 CSS 的编码工作。转化成通俗易懂的话来说就是“用一种专门的编程语言,进行 Web 页面样式设计,再通过编译器转化为正常的 CSS 文件,以供项目使用”。

常用的 CSS 预处理器有哪些

  • SASS:基于 Ruby,通过服务端处理,功能强大。解析效率高。需要学习 Ruby 语言,上手难度高于 LESS。
  • LESS:基于 NodeJS,通过客户端处理,使用简单。功能比 SASS 简单,解析效率也低于 SASS,但在实际开发中足够了,所以我们后台人员如果需要的话,建议使用 LESS。

行为层(JavaScript)

JavaScript 一门弱类型脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。

Native 原生 JS 开发

原生 JS 开发,也就是让我们按照 【ECMAScript】 标准的开发方式,简称是 ES,特点是所有浏览器都支持。截止到当前博客发布时间(2018 年 12 月 04 日),ES 标准已发布如下版本:

  • ES3
  • ES4(内部,未正式发布)
  • ES5(全浏览器支持)
  • ES6(常用,当前主流版本)
  • ES7
  • ES8
  • ES9(草案阶段)

区别就是逐步增加新特性。

TypeScript 微软的标准

TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。由安德斯·海尔斯伯格(C#、Delphi、TypeScript 之父;.NET 创立者)主导。

该语言的特点就是除了具备 ES 的特性之外还纳入了许多不在标准范围内的新特性,所以会导致很多浏览器不能直接支持 TypeScript 语法,需要编译后(编译成 JS)才能被浏览器正确执行。

JavaScript 框架

  • jQuery:大家熟知的 JavaScript 框架,优点是简化了 DOM 操作,缺点是 DOM 操作太频繁,影响前端性能;在前端眼里使用它仅仅是为了兼容 IE6、7、8;
  • Angular:Google 收购的前端框架,由一群 Java 程序员开发,其特点是将后台的 MVC 模式搬到了前端并增加了模块化开发的理念,与微软合作,采用 TypeScript 语法开发;对后台程序员友好,对前端程序员不太友好;最大的缺点是版本迭代不合理(如:1代 -> 2代,除了名字,基本就是两个东西;截止发表博客时已推出了 Angular6)
  • React:Facebook 出品,一款高性能的 JS 前端框架;特点是提出了新概念 【虚拟 DOM】 用于减少真实 DOM 操作,在内存中模拟 DOM 操作,有效的提升了前端渲染效率;缺点是使用复杂,因为需要额外学习一门 【JSX】 语言;
  • Vue:一款渐进式 JavaScript 框架,所谓渐进式就是逐步实现新特性的意思,如实现模块化开发、路由、状态管理等新特性。其特点是综合了 Angular(模块化) 和 React(虚拟 DOM) 的优点;
  • Axios:前端通信框架;因为 Vue 的边界很明确,就是为了处理 DOM,所以并不具备通信能力,此时就需要额外使用一个通信框架与服务器交互;当然也可以直接选择使用 jQuery 提供的 AJAX 通信功能;

UI 框架

  • Ant-Design:阿里巴巴出品,基于 React 的 UI 框架
  • ElementUI:饿了么出品,基于 Vue 的 UI 框架
  • Bootstrap:Twitter 推出的一个用于前端开发的开源工具包
  • AmazeUI:又叫“妹子 UI”,一款 HTML5 跨屏前端框架

JavaScript 构建工具

  • Babel:JS 编译工具,主要用于浏览器不支持的 ES 新特性,比如用于编译 TypeScript
  • WebPack:模块打包器,主要作用是打包、压缩、合并及按序加载

注:以上知识点已将 WebApp 开发所需技能全部梳理完毕

三端统一

混合开发(Hybrid App)

主要目的是实现一套代码三端统一(PC、Android、iOS)并能够调用到设备底层硬件(如:传感器、GPS、摄像头等),打包方式主要有以下两种:

  • 云打包:HBuild -> HBuildX,DCloud 出品;API Cloud
  • 本地打包: Cordova(前身是 PhoneGap)

微信小程序

详见微信官网,这里就是介绍一个方便微信小程序 UI 开发的框架:WeUI

后端技术

前端人员为了方便开发也需要掌握一定的后端技术,但我们 Java 后台人员知道后台知识体系极其庞大复杂,所以为了方便前端人员开发后台应用,就出现了 NodeJS 这样的技术。

NodeJS 的作者已经声称放弃 NodeJS(说是架构做的不好再加上笨重的 node_modules,可能让作者不爽了吧),开始开发全新架构的 Deno

既然是后台技术,那肯定也需要框架和项目管理工具,NodeJS 框架及项目管理工具如下:

  • Express:NodeJS 框架
  • Koa:Express 简化版
  • NPM:项目综合管理工具,类似于 Maven
  • YARN:NPM 的替代方案,类似于 Maven 和 Gradle 的关系

附:当前主流前端框架

Vue.js

iView

iview 是一个强大的基于 Vue 的 UI 库,有很多实用的基础组件比 elementui 的组件更丰富,主要服务于 PC 界面的中后台产品。使用单文件的 Vue 组件化开发模式 基于 npm + webpack + babel 开发,支持 ES2015 高质量、功能丰富 友好的 API ,自由灵活地使用空间。

备注:属于前端主流框架,选型时可考虑使用,主要特点是移动端支持较多

ElementUI

Element 是饿了么前端开源维护的 Vue UI 组件库,组件齐全,基本涵盖后台所需的所有组件,文档讲解详细,例子也很丰富。主要用于开发 PC 端的页面,是一个质量比较高的 Vue UI 组件库。

备注:属于前端主流框架,选型时可考虑使用,主要特点是桌面端支持较多

ICE

飞冰是阿里巴巴团队基于 React/Angular/Vue 的中后台应用解决方案,在阿里巴巴内部,已经有 270 多个来自几乎所有 BU 的项目在使用。飞冰包含了一条从设计端到开发端的完整链路,帮助用户快速搭建属于自己的中后台应用。

备注:主要组件还是以 React 为主,截止 2019 年 02 月 17 日更新博客前对 Vue 的支持还不太完善,目前尚处于观望阶段

VantUI

Vant UI 是有赞前端团队基于有赞统一的规范实现的 Vue 组件库,提供了一整套 UI 基础组件和业务组件。通过 Vant,可以快速搭建出风格统一的页面,提升开发效率。

AtUI

at-ui 是一款基于 Vue 2.x 的前端 UI 组件库,主要用于快速开发 PC 网站产品。 它提供了一套 npm + webpack + babel 前端开发工作流程,CSS 样式独立,即使采用不同的框架实现都能保持统一的 UI 风格。

CubeUI

cube-ui 是滴滴团队开发的基于 Vue.js 实现的精致移动端组件库。支持按需引入和后编译,轻量灵活;扩展性强,可以方便地基于现有组件实现二次开发。

混合开发

Flutter

Flutter 是谷歌的移动端 UI 框架,可在极短的时间内构建 Android 和 iOS 上高质量的原生级应用。Flutter 可与现有代码一起工作, 它被世界各地的开发者和组织使用, 并且 Flutter 是免费和开源的。

备注:Google 出品,主要特点是快速构建原生 APP 应用程序,如做混合应用该框架为必选框架

Ionic

Ionic 既是一个 CSS 框架也是一个 Javascript UI 库,Ionic 是目前最有潜力的一款 HTML5 手机应用开发框架。通过 SASS 构建应用程序,它提供了很多 UI 组件来帮助开发者开发强大的应用。它使用 JavaScript MVVM 框架和 AngularJS/Vue 来增强应用。提供数据的双向绑定,使用它成为 Web 和移动开发者的共同选择。

微信小程序

mpvue

mpvue 是美团开发的一个使用 Vue.js 开发小程序的前端框架,目前支持 微信小程序百度智能小程序头条小程序支付宝小程序。 框架基于 Vue.js,修改了的运行时框架 runtime 和代码编译器 compiler 实现,使其可运行在小程序环境中,从而为小程序开发引入了 Vue.js 开发体验。

备注:完备的 Vue 开发体验,并且支持多平台的小程序开发,推荐使用

WeUI

WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。包含 button、cell、dialog、toast、article、icon 等各式元素。

Yarn和npm命令对比

npm yarn 说明
npm install, npm i yarn 安装所有依赖包
npm install react –save, -S yarn add react 添加依赖包
npm uninstall react –save yarn remove react 移除依赖包
npm install react –save-dev, -D yarn add react –dev 将依赖项添加到不同依赖项类别中
npm update –save yarn upgrade 升级依赖包

npm uninstall 模块:删除模块,但不删除模块留在package.json中的对应信息

npm uninstall 模块 –save 删除模块,同时删除模块留在package.json中dependencies下的对应信息

npm uninstall 模块 –save-dev删除模块,同时删除模块留在package.json中devDependencies下的对应信息

yarn和npm淘宝镜像

1
2
3
4
5
npm config set registry https://registry.npm.taobao.org
npm config set disturl https://npm.taobao.org/dist
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/
1
2
3
4
5
npm config set registry https://registry.npm.taobao.org
npm config set disturl https://npm.taobao.org/dist
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/

持久化文件路径在 C:\Users\用户名 .npmrc和.yarnrc文件

解决方案

docker exec进入容器

1
sudo docker exec -it mysql bash

注意:mysql是容器的别名

将 character-set-server=utf8 写入mysql配置文件

1
echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf

重启mysql 容器使以上修改生效

1
sudo docker restart mysql

启发

永久性处理方案是在创建容器的时候直接增加下列参数

1
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

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
[mysqld]
basedir = path # 使用给定目录作为根目录(安装目录)。
datadir = path # 从给定目录读取数据库文件。
pid-file = filename # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);


socket = /tmp/mysql.sock # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)
port = 3306 # 指定MsSQL侦听的端口
key_buffer = 384M # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。
索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。
table_cache = 512 # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
sort_buffer_size = 2M # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
read_buffer_size = 2M # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
query_cache_size = 32M # 指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size = 8M # 改参数在使用行指针排序之后,随机读用的。
myisam_sort_buffer_size =64M # MyISAM表发生变化时重新排序所需的缓冲
thread_concurrency = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
thread_cache = 8 # #缓存可重用的线程数
skip-locking # 避免MySQL的外部锁定,减少出错几率增强稳定性。
[mysqldump]
max_allowed_packet =16M # 服务器和客户端之间最大能发送的可能信息包

[myisamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M