web工程师的自我修养

  • 杂货

    1. hack:不优雅的解决方案
    2. 软件工程师事业指南:技术、成长、声望
    3. sublime编辑器比用dreamweaver更有优势–这两个是编辑器,是文件级别的,即打开某个语言文件执行,而pycharm这种是IDE(集成开发环境)是项目级别的,是一站式的服务,缺点是比较重量级
    4. 前端工程师重要的技能有:关于网络性能和HTTP协议
    5. 作品集:github,dribbble(设计师的舞台),github pages(相当于有了自己的域名,jekyll通过几行代码就可以新建站点框架,博客编辑器,web作品集推荐使用这种方式github pages+jekyll/dexy),还有一些社交网站可直接生成作品集:Linkedin/about.me
    6. 在最新的linux中,线程是基本的运作单位,进程是线程的容器
    7. apache是用的最多的服务器。经常用的服务器搭配是:前段并发用Nginx,apache处理后台请求.
    8. TCP/IP协议规定三次握手才建议一次连接
    9. 通过chrome开发者工具中的pagespeed工具,可以快速获得关于站点性能优化的建议。
    10. 计算机科学中最令人无奈的两件事是缓存失效和命名
    11. grunt等发布流程的成熟,让前端工程师免除了很多枯燥的工作。–grunt和gulp是前段的构建工具
    12. 要用原生技术开发app,一定要好好阅读人机交互指南
    13. chrome备受好评的原因是使用高性能的V8引擎,执行js效率非常高。
    14. VPS虚拟专用服务器–每个VPS可分配独立公网IP地址、独立操作系统,磁盘空间,内存,CUP资源,进程和系统配置
    15. DRY-dont repeat yourself
    16. stackoverflow全球最大的技术问答网站
  • Web性能优化

    1. 压缩源码和图片:js文件采用混淆压缩,css采用普通压缩,JPG根据质量压缩为50%-70%,PNG根据开源压缩软件压缩,比如可以24色变8色,去掉png的一些格式信息
    2. 选择合适的图片格式:图片颜色较多的话用JPG格式,如果颜色较少就用PNG格式,如果能通过服务器端判定浏览器支持WebP,那么就用WebP和SVG格式
    3. 合并静态资源:包括css、js喝小图片,减少HTTP请求。将同一域名下的css合并为一个。将图片组合为css贴图。
    4. 开启服务器端的Gzip压缩:对文本资源非常有效,图片效果不明显。4gzip。
    5. 使用CND,使用第三方提供的静态资源地址,能够增加并行下载和与其他网站共享缓存。
  • HTTP优化

    1. 前端工程师视角:尽量减少同一域名的HTTP请求数,以及尽量减少资源的体积。
    2. 后台工程师视角:让服务器尽快响应,提高服务器的请求处理能力。
  • 缓存(高性能网站的关键)

    1. 数据库缓存
      • Mysql可以开启查询缓存,每一次select结果都被缓存起来,直到所查询的表发生变化。
      • 也就是说,如果数据库的查询语句多过修改语句,那么是很适合做查询缓存的。
      • Mysql自带的缓存实在服务器上开辟的,内存空间有限。memcached应运而生,是一个分布式内存对象缓存系统
    2. 文件缓存
      • 频率高的文件缓存在硬盘上,由于硬盘比内存大, 所以可以缓存更多的数据,缺点是没有内存缓存快。
    3. 服务器缓存
      • expires。设定一个过期时间,在这段时间内,将http请求缓存在硬盘上。
      • last-modified。对于可能会过期的请求,先将文件缓存好,然后请求时询问资源有没有修改,如果没有修改则返回304然后就可以获取缓存里的内容,如果没修改则返回200。这种缓存仍旧需要一来一回,所以不如expires方便。
      • 对于服务器来讲,304太多不好,因为这意味着有很多人访问未修改的数据,这种情况就把他改成expires会更好。所以最好是保证304和200的比例在一个合理的范围内。
      • 浏览器缓存设置最佳实践1.动态生成的HTML使用HTTPS头:Cache-Contro:no-cache
        2.对于静态的HTML使用HTTPS头:Last-Modified
        3.其他所有文件类型都设置Expires头,并且在文件内容有所修改时修改Query String
  • 岗位要求

    1.初级工程师

    • 了解兼容性
    • 了解HTML、CSS、JS语法和原理
    • 熟悉编辑器和插件
    • 了解调试工具
    • 会使用前端库/框架
    • 了解标准和规范。
      2.中级工程师
    • 注重代码规范和质量
    • 熟悉js单元测试
    • 会性能优化
    • 懂SEO
    • 会代码部署
    • 懂移动Web
      3.高级工程师
    • 代码架构
    • 安全
    • 会自动化测试
  • 要向移动端转型

    • 混合模式app,部分界面实用WebView技术实现,一般使用WebKit渲染。
    • 使用HTML5 Manifest技术实现资源缓存
    • 不要把整个APP的主要逻辑都用webview来实现,要根据它和原生技术的优缺点选择。
    • phonegap,使用web技术创建各个平台都可用的app.用的是javascript,缺点是app包大,js精通成本高,不如学原生技术,动画性能不佳,如果是图书类查询类要求不高,那么用这个很好。
    • web技术写的app,没有固定的继承开发环境,代码透明,谁都能看到。原生技术运行在服务器端,是隐秘的。这种说法不绝对,如果使用SASS编译成CSS,或者CoffeScript编译成javascript,或者用jade编译成HTML,那么用户就看不见源代码了。
  • 版本控制

    • 使用最广的工具是git,其次是svn.
    • 版本号:1.2.3
      第一位:主要版本号,有API变更导致不兼容旧版本的时候使用
      第二位:次要版本号:新增功能,但是向后兼容
      第三位:修复向后兼容的bug时使用
    • 各种语言都有各自的包管理。比如Node.js 使用npm;PHP的composer;python有pip可以创建一个依赖文件的目录。
    • Node.js/gulp/grunt
      • node.js 不是框架如django,不是库如jquery,而是服务端的开发平台
      • 而gulp是构建在Node.js之上的,grunt和gulp都是前端构建工具。
      • 所谓构建工具,就是为了解决开发过程中重复或者需要自动化智能化完成事情
  • VPS(虚拟专用服务器)

    • 服务器安全
      • 新建一个普通用户,以后都不要用root登录了。
      • 使用SSH(secure sheel)名值对登录,禁止用户名和密码登录
      • 禁用root账户通过SSH登录
      • 安装一个防火墙
      • 安装fail2ban,杜绝字典共计
    • 选择操作系统
      • 有Linux/centos/debian/ubuntu/fedora
      • CentOs学习成本最低
      • Debian很稳定,但是帮助文档少,新手推荐这两个
    • DNS(domain name system)域名解析
      • 万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串
      • 推荐奖域名服务器设置为国内的DNS提供商
  • 云服务器

    • 如果用户量不大,不用VPS
      • 构建自己的博客之类的,可以用静态网页实现。那么可以托管到github pages这类云服务器上,最后免费绑定域名即可。
      • 如果想要架设静态资源库,那么可以放在国内的云储存商上,比如七牛云存储,除了稳定还有CDN(Content Delivery Network)的支持
      • 如果想要架设API,速度快价格低的SAE不错
  • 设计模式

    • 这一部分应该找专门的书,根据代码看,看文字描述的用处不大。
  • 高效工程师

    • 阅读英文资料
    • 先google,再stackoverflow(全球最大的技术问答网站)
    • 设计
      • 《响应式web设计全流程解析》,作者提出一种新的开发响应式Web界面的方式,即设计师不用ps而用web技术创建动态的设计稿。
      • 这种方式实际并不是太管用,更好地方式是程序员学会一些设计理念,然后再由设计师确认。
      • 约书亚树原理–就是在不知道这个树的名字的时候随处可见,但是并不在意,知道名字之后,只要见到立马就知道它是什么。换成别的方面,比如我们每天都看到大量的广告,动画,图片,潜意识里我们是知道什么是美的,但是我们不知道怎样让它变美,这,就是我们日常生活中的约书亚树。
    • 设计工具
      • 至少熟练PS和fireworks工具来分离图层、导出格式、批量切图,这是最基本的要求,跟设计感无关
      • 创作工具:Axure,sketch,quartz composer
      • 卓有成效的管理者–管理者不是由有没有下属决定的,而是由是否有决策权决定的
        有效的管理者知道自己的时间花费在哪里,重视对外界的贡献,必须善于做有效的决定。
        根据员工的特质来授权,对于有意愿能力不够的要多讲做事的方法,对于有能力但是医院不够的,多进行情感的沟通,搞清楚为什么意愿不够。既有能力又有意愿的员工是好苗子。
      • 面试时不要问被拒绝的原因,可以问面试表现的怎么样。HR会避免陷入无休止的
      • 跟上司沟通是,立场要尽可能简单,且要一直围绕自己的立场讲述
      • 演讲要尽可能多展现自己,即ppt文字一定要少。设定进度。对待错误要放松。
      • 内向性格的竞争力。能灵活适应各种社交场合的内向者,要具有很强的自我意识,社会意识,自我管理和关系管理能力。这就是我最终要达到的状态,加油。

猜你喜欢

转载自blog.csdn.net/weixin_42662126/article/details/82559279