IT职场人生系列之十九:危险职业(中)

cesium加载天地图 加载wmts 【代码】cesium加载天地图 加载wmts。 阅读详情

这是IT职场人生系列的第十九篇。(序言,专栏目录)

这本来是危险职业的下篇,但感觉还有很多危险职业,所以留着以后写。

窄出路职业

泛指所有越走越高但越走越窄,前途无量但是需求量很少的职业,典型的是质量和过程管理工作,以及咨询师。

质量管理/过程管理

这个曾经是我放弃了在即将上市的公司做技术骨干的机会而投身去做的一个工作,结果……

先说说质量和过程管理是管理什么的:首先不是测试,所以手底下一般没有那么多兵;其次也不是做研发/生产的,所以不是一个技术积累型职位;然后也不是和销售/市场等业务相关的职业。其具体工作,一般是负责制定和改进企业的过程,以达到更高的管理水平。

这个本来是很好的一个职业,但是在中国存在以下潜在问题:

a. 如果过程改进是必需的,那么研发总监或部门经理早就会为了部门的业绩驱动起来这个工作了(确切说他们已经做了一些工作了)。所以能留给专职质量或过程管理的人所作的事情,基本上就是培训,认证,评级这些比较虚的工作。

b. 国内企业由于不重视这个职业,所以经常选择一些实际上是新手的人在这个部门工作,真正的技术或管理高手,常常陷于日常业务而难以进入这些部门,使得这个部门只能非常虚地工作,难以有实质性的改进。

c. 偶然有一两个高手进入这个部门,由于多数情况人少钱少,周围又都是刚刚毕业的PPQA围住,基本上难有作为。

但是还是那句话:人是活的,怎么办呢?

1. 在生产线上做改进。

如果你正是一位程序员,项目经理,或产品经理,但认为过程改进才能做好企业,那么请在自己的位置上遵循无我、无住、共振的法则直接做改进,而不要认为一定要到专业的岗位上。

由于离一线很近,无论定位问题还是定位答案,都更容易切中要害。由于利害干系人都在身边,只要大家同意,往往一个方案就可以实施了,比作为质量人员去推进别人实施你的想法要容易得多。

2. 在质量/过程岗位上的改进。

如果不慎……还是到了质量岗位上,有两种选择。

一种是走一线道路,就是与生产团队保持密切的联系,不要做得太“专业”,这样能渗入到团队里边做半个队员,技术上业务上不至于太过于脱节。这样存在回到一线的可能。

二种是走专业道路,这个比较复杂一些,要求本来就有很好的功底(因此很理解一线人员的思维和行为方式),主要工作方式不是研究最好的过程,而是研究如何发动一线人员摸索和改进自己的过程,自己做一个旁观者/润滑剂。

后者是一种专业道路,日后可以选择在多种企业任职,或者做咨询师。尽管出路仍然很窄,但可能做到很高的职位或很好收入的咨询师。

咨询师

咨询师是一个很令人羡慕的职业,但是也是一个很窄的职业。

说了这么多“窄”字,到底多窄算是窄呢?

这么说吧,中国有400万程序员,2万家软件企业,需要40万个项目经理,至少10万个产品经理;外加大约5~10万个部门经理,5~10万多个各种总监,但只需要1000个全职质量和过程改进人员(多数企业没有),外加50个CMMI咨询师(其中活跃的10人),50个敏捷咨询师(其中活跃的10人)。

从这个角度上讲,咨询师有点像影星一样,不是一个职业,而是在机缘巧合的时候,就走上的一条道路。

因此尽量不要选择咨询师这条出路。

尤其是IT业的咨询师,由于产业过于年轻,更新换代又过于快速,常常面临因远离一线而技术落伍的困境。

咨询师就说这么多,就不说如何做好下一步了,仁者见仁。

cesium中添加天地图底图 天地图主要使用的是WGS84坐标系,并提供了矢量、影像、地形等多种底图。可以利用cesium的WebMapTileServiceImageryProvider完成天地图底图的加载。 阅读详情

相关推荐

【WebGIS】Cesium:天地图加载

天地图是中国国家基础地理信息系统,由中国测绘地理信息局和国家地理信息公共服务平台共同开发和运营。它提供多项地理信息服务,包括地图数据、地理编码、路径规划以及地理搜索等。天地图的目标是为各行业提供高质量、全面的地理信息数据和解决方案。

2303_80346267的博客 2573

Cesium加载天地图

Cesium加载天地图。

qq_26610239的博客 3520

PCIe扫盲(三)

需要特别注意的是,PCIe的Spec中明确规定只有Root有权限发起配置请求(Originate Configuration Requests),也就是说PCIe系统里面的其他设备是不允许去配置其他设备的配置空间的,即peer-to-peer的配置请求是不允许的。当配置请求进行BDF路由的时候,正是依靠这些信息来确定要找的设备的。前面的文章还介绍过,Root和Switch的每一个端口中都包含一个P2P桥,并且知道桥的配置空间头(Configuration Space Header)是Type1型的。

Liuqz2009的专栏 2402

cesium加载天地图

天地图提供了经纬度投影和球面墨卡托投影两种服务,该示例使用了球面墨卡托投影服务。其中的切片方案tilingScheme使用cesium提供的web墨卡托切片方案new Cesium.WebMercatorTilingScheme()在地图服务简介中,提示要想使用底图服务,需要申请key,点击申请key,跳转到如下页面。天地图地图服务采用OGC WMTS标准,可以使用下面两个类来实现底图的加载。在开发资源中找到地图API,可以查看到天地图提供的底图服务资源。要想使用天地图提供的地图资源,需要登陆。

半路转行的Giser 3612

Bladed风电仿真软件新手必看:从界面操作到功率曲线计算的完整指南

本文为风电工程师提供Bladed仿真软件的完整入门指南,涵盖界面操作、功率曲线计算及动态仿真等核心功能。通过实战技巧和常见问题解决方案,帮助新手快速掌握这款全球领先的风电机组仿真工具,提升风电项目开发效率。

weixin_30839881的博客 102

机器学习之性能度量

废话不说,本文分为两个部分: 第一部分,我对周志华教授《机器学习》这本书中性能度量知识点中疑难点的学习感悟;第二部分,我感觉该书2.3节 性能度量 中最后部分的代价曲线表述有误,苦于没找到联系教授的正确方式,故希望与广大网友一起探讨。

hustqb的博客 4628

IT职场人生系列之十九:危险职业(中)

这本来是危险职业的下篇,但感觉还有很多危险职业,所以留着以后写。 窄出路职业 泛指所有越走越高但越走越窄,前途无量但是需求量很少的职业,典型的是质量和过程管理工作,以及咨询师。 质量管理/过程管理 这个曾经是我放弃了在即将上市的公司做技术骨干的机会而投身去做的一个工作,结果…… 先说说质量和过程管理是管理什么的:首先不是测试,所以手底下一般没有那么多兵;其次也不是...

weixin_34080903的博客 201

PaddleOCR实战:如何在CentOS 8.5上搭建高性能OCR识别环境

本文详细介绍了在CentOS 8.5系统上搭建高性能PaddleOCR识别环境的完整指南。从系统环境准备、PaddlePaddle框架部署到PaddleOCR的定制化安装与性能优化,提供了针对生产环境的解决方案,包括GPU/CPU环境配置、内核参数调优及常见问题排查,帮助用户实现高效OCR识别。

weixin_29223603的博客 349

IT职场人生系列之十九 危险职业(中)

IT职场人生系列之十九 危险职业(中)

hdfyhf的博客 231

vhr 微人事系统安装与部署教程(SpringBoot + Vue 项目实战)

vhr(微人事)是一个开源的人力资源管理系统项目。系统采用前后端分离架构,主要技术栈包括:后端:MyBatis前端:VueElement UIAxios数据库:MySQL系统通常包含以下模块:员工管理部门管理职位管理薪资管理权限管理系统管理整体功能已经接近企业级后台系统。vhr(微人事)是一个非常经典的开源人力资源管理系统项目,基于SpringBoot + Vue 前后端分离架构。系统包含:员工管理部门管理权限管理薪资管理。

m0_69484557的博客 486

CANoe.DiVa的应用——生成测试用例过程流程详解(一)

Diva 生成用例过程

LOVE135149的博客 7926

Cesium--加载天地图

背景:vue-admin-temlate + cesium +天地图。1,天地图使用方法(点击开发资源即可看到此页面)最要为了获取key (后面使用是token)步骤一:申请成为天地图开发者,创建应用。步骤二:cesium加载天地图。2,点击控制台-登录账号。

JessicaLi的博客 1905

基于OpenCV和Dlib的头部姿态估计详细教程

本文详细介绍了基于OpenCV和Dlib的头部姿态估计方法。通过分析2D人脸特征点与3D头部模型的对应关系,利用PnP(Perspective-n-Point)算法求解头部在三维空间中的姿态。文章首先阐述了坐标系统转换原理,包括世界坐标系、相机坐标系和图像坐标系的转换关系,随后深入讲解了PnP问题的数学表述及求解步骤,并提供了使用Dlib检测68个面部特征点的代码示例。最后介绍了3D通用头部模型的构建方法,包括6点和14点模型的选择,为计算机视觉中的头部姿态估计提供了完整的技术实现方案。

FJN110的博客 338

【GIS】Cesium:快速加载地图

本教程将帮助初学者从零搭建 **Cesium 开发环境**,并构建一个最基础的 Cesium 项目,逐步学习如何加载影像数据(包括 **天地图** 和 **OpenStreetMap**),实现一个可用的三维数字地球场景。

2303_80346267的博客 2808

【Linux命令大全】006.网络通讯之netstat命令(实操篇)

本文详细介绍了Linux系统中netstat网络诊断命令的实用技巧。主要内容包括:1) 基本功能与参数详解,展示如何查看网络连接、路由表和接口统计;2) 安装方法及基础用法,如查看TCP/UDP连接、显示进程信息和路由表;3) 高级应用技巧,包括监听端口检查、连接状态统计和实时监控。文章通过表格和代码示例,系统性地呈现了netstat在系统管理中的核心应用场景,是网络故障排查和性能监控的实用指南。

yuhuasheng1997的博客 705

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: IT职场人生系列之十八:危险职业(上)
下一篇: IT职场人生系列之二十:危险职业(下)
火星人陈勇
博客等级 码龄18年 4899粉丝 381原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值