一位新入职的Web开发工程师只有编写并独自使用代码的经验,大致掌握了必要的技术领域

首先

雖然我在大學和研究生院的資訊科學系攻讀了六年,最終成為了一名web工程師,但所謂的「web工程師」必須知道或使用的技術領域太廣了,讓我感到無所適從,只能在學習和失敗的過程中不斷前進…我認為這種情況可能在許多人中也很常見。就像企業介紹幻燈片上經常出現的技術堆疊,我對這些軟體庫完全不了解…看著同年級的同學從大學時代就接觸了許多web技術,我感到很自卑,但我還是盡力跟上步伐…。

因此,对于迄今为止只擅长科技计算领域的学生,只会写和运行自己编写的代码,且只有教科书上的知识,我决定撰写一篇以名称为基础的文章,大致总结与网络领域相关的必要技术范围,以作为搜索的指南。

Web开发工程师的技术领域。

计算机科学通常

在中国,最好拥有应用信息技术师考试水平的知识。如果对操作系统等底层知识有一定了解,能在调试中提供帮助。而异步处理和垃圾回收等方面,也有些部分无法完全理解,需要低层编程语言的知识。

基础设施

服务器构建的自动化

Ansible

Ansibleをはじめる人に。
入門Ansible

Chef
puppet
Itamae

国産。Cookpad製。

服务器配置测试 de

    Serverspec

虚拟机/虚拟环境

    • Vagrant (サーバクライアント型)

 

    • docker (コンテナ型)

Kubernetes (Docker オーケストレーションエンジン)

这里经常用于各种软件的实践操作,所以学习一下会很有好处。
特别是Docker和Kubernetes(通常简称为k8s,与i18n等类似)是现代软件工程中常用的技术栈之一。由于其容易扩展性,许多应用程序都会在k8s上进行实际生产操作。在后面提到的云服务中,如Amazon EKS(AWS)、GKE(GCP)等也提供了使用k8s的可能性。

基础设施即服务 (IaaS)、平台即服务 (PaaS)、软件即服务 (SaaS)

    • AWS (Amazon Web Services)

 

    • GCP (Google Cloud Platform)

 

    Azure (Microsoft)

有越来越多的企业并非必须自己拥有基础设施。

网络

    • 知識

OSS基本7レイヤー
TCP/IPの基本
L7

HTTP/HTTPS

HTTP2/SPDY/QUIC/websocketのようなalternative protocol

NTP (Network Time Protocol)

NTPとは? NTPの仕組み含めておおまかに解説

ソフトウェア/ツール

GUI

wireshark(パケットキャプチャツール)

CUI

ping/nslookup等の基本コマンド

作为网络工程师,我发现网上的这些资料非常有条理,看起来很适合学习。

安全

    • 暗号化基礎

共有鍵暗号・公開鍵暗号

SSL, HTTPS
Web アプリケーションにおける様々な脆弱性

XSS
CSRF
OSコマンドインジェクション
SQLインジェクション

如果你想系统地学习这方面的知识,推荐一下所谓的“徳丸本”。

研发

编程的一般话题

    • (Web開発における)プログラミング言語

筆者は Java はじめとした JVM 系の言語を利用する Web エンジニアだが、世間一般では Ruby, Perl, PHP, Python などのスクリプト言語もよく使われる。
関数型言語

Haskell, Scalaとか。

KISS, DRY, YAGNIなどの基本原則
非同期プログラミング

リアクティブプログラミング

RxJava, Reactor..

コルーチン

应用程序(通用)

设计 (shè jì)

デザインパターン

一般的なものは知識として知っておくと便利

UML (Unified Modeling Language)

設計を図にするための共通プロトコル的なもの
クラス図・シーケンス図あたりは頻出
PlantUML という UML 言語があるのでそちらも合わせて覚えよう.

MVC, MVVM等のMV*アーキテクチャ

最近は Flux も流行り。

供应链管理 lǐ)

    • git

 

    subversion

版本控制工具。这可能是许多人在大学里也使用过的。Git已经相当普遍了,但Subversion到现在仍在使用。作为托管服务,GitHub和Bitbucket很有名。还有可以在本地运行的GitLab和GitHub企业版。

网络上的供应链管理

    • GitHub

 

    • GitLab

 

    Bitbucket

构建自动化/持续集成/持续部署

    • Jenkins

 

    • CircleCI

 

    • TravisCI

 

    Drone

参考页面:尝试向只有在Eclipse中执行Java应用的新人解释”构建工具是什么”……然后再讲到 CI。

考试

    • TDD

 

    • Unit test

 

    • 境界値分析

 

    Performance Test / Stress Test

应用程序(服务器)

网络框架

    • Ruby on Rails (Ruby)

 

    • Spring (Java)

 

    • Play (Scala/Java)

 

    • Laravel, CakePHP (PHP)

 

    • Django, Flask, Pyramid (python)

 

    Express (Node.js・サーバサイドJavascript)

其他的库和中间件等

事件总线
    Akka
消息队列
    • Kafka

 

    • RabbitMQ

 

    • ActiveMQ

 

    Redis

我认为这里有其他关于分布式消息传递中间件的详细比较示例。同时也要注意推送和拉取的区别。作为资料,我认为这份比较较为适合。

应用程序 (客户端)。

请用中文将以下内容进行释义:

Paraphrasing means rephrasing a sentence or a piece of text using different words, but without changing the meaning. It is often used to simplify complex ideas or to avoid repetition.

    • Android

 

    iOS
游戏引擎 xì

Unity (C#)
Cocos-2dx (C++)
Unreal

其他
    • アーキテクチャ。MVVM, MVP, クリーンアーキテクチャ…

 

    Flutter などのモバイルアプリケーションフレームワーク

JavaScript / HTML / CSS 可以被概括为前端开发技术。

MV*库(框架)

React + Redux
Angular2
Vue.js

框架的框架(?)
    • Next

 

    Nuxt

包含了Node.js服务器,并且可以轻松地支持SSR等功能。

用户界面库
    • bootstrap

 

    material-ui
jQuery是一个流行的JavaScript库,它简化了网页开发中的诸多任务。
    jQuery
软件包管理器
    • npm

 

    • yarn

 

    bower
任务执行器
    • Gulp

 

    Grunt
转译器
    • webpack

 

    browserify

– 巴别塔

提供了一个能够将JS方言转换为可以在浏览器中读取的工具。

线头软毛刷
    ESLint
JavaScript的变体
    ES6, TypeScript, CoffeeScript
CSS预处理器
    • SASS(SCSS)

 

    • Stylus

 

    LESS

数据库

关系型数据库管理系统

    • MySQL

 

    • PostgreSQL

 

    • SQLite

 

    Oracle (商用)

非关系型数据库

    • Key-Value

Redis, memcached

Row oriented

HBase, Cassandra

Document DB

MongoDB

Graph DB

Neo4j

我认为通常会使用RDBMS的原则,但随着扩展性和处理复杂性增加,NoSQL的重要性也在提高。

TSDB(时间序列数据库)

    • InfluxDB

 

    • OpenTSDB

 

    • Druid

 

    Prometheus

日志分析

由于日志分析具有一些特殊性,并牵涉到许多中间件,因此我们需要单独对其进行分类。这张幻灯片上的图非常易于理解。

聚合器,流处理

    • Fluentd

 

    • Apache Flume

 

    Logstash

比较请看这边。
在这篇文章中也比较了push和pull。

日志数据存储

    • Elasticsearch

 

    • Prometheus

 

    InfluxDB

通常会使用专注于时间序列处理的工具。因此,常见的是TSDB(时间序列数据库)。

流式处理

    • Apache Spark (Spark Streaming)

 

    • Apache Flink

 

    • Apache Storm

 

    • Apache Samza

 

    Kafka Streams

听说分散流处理引擎目前存在着众多竞争对手。我们来简单比较一下在物联网时代中处理流数据并快速发展的 Apache Flink。说真的,为什么 Apache Foundation 内会有这么多相似的项目存在呢。。

日志可视化 / 商业智能工具

    • Kibana (from Elastic Stack)

 

    • Grafana

 

    Tableau

Elasticsearch + Logstash + Kibana = ELK 堆栈
Elasticsearch + Fluentd + Kibana = EFK 堆栈(在日本很受欢迎)

日志的SaaS解决方案

    • Newrelic

 

    Mackerel

数据分析

有人可能会说这不是Web技术的话题吧,但最近工程师可能面临着大量进行大数据分析的需求,因此我将其作为一个重要的主题单独分开讨论。

Hadoop 生态系统

用于大规模数据分析的技术集合体。

Hadoop 核心

    • YARN

リソース管理

HDFS

ファイルシステム

MapReduce

分散データ処理

其他

    • Apache Spark

高機能な分散データ処理。MapReduce を置換する。

Apache Impala / Apache Hive

SQL による HDFS 上のデータの分析

Apache Zeppelin

Spark などの処理を web 上で記述できる notebook アプリケーション。

Apache Kudu

HDFS と HBase の間を補完するカラムナ(列志向)ストレージエンジン。
Cloudera 製。

其他的分析环境

    • R

 

    Python

有人说这些是数据分析师经常使用的语言。在CV领域中,MATLAB也经常被使用。

广告
将在 10 秒后关闭
bannerAds