作为过来人,我想告诉准程序员的那些事
小编今天在知乎的各大论坛上看到这样一个标题“作为过来人,你想告诉准程序员些什么”。小编作为过来人感触颇深,留下几点建议送给那些即将入坑的准程序员们。1.不要迷信“大牛”看到你问题里面提到“大牛”,就放前面说说:网上的“大牛”多半不靠谱。其一是真正的大牛没时间混迹在网上做人生导师,整天出现在你Timeline里的人要么半吊子水货,要么另有所图。(我黑起人来连自己也不放过)其二就算是大牛,他的经验对你未必有用。大牛说我学Python也就翻了下基本语法,当天就上项目开干了。(大神说我觉得没有顺手的语言,就发明了Python)2.少说废话,多写代码废话有很多种,程序员届最多的大概就是整理哪个语言/框架/平台/技术好,准程序员则喜欢问,我是不是应该学Javacphp……学了是不是有用之类。技术讨论并不完全无意义,但在你打好计算机基础、熟练掌握至少一门语言、开发过一个能看的项目之前,这些讨论对你来说就是浪费时间的废话,而不是今天跟风学这个,明天又听人说那个好。不要等毕业的时候说出XX技术学校没教过,所以我不会这种话。有这时间
淘汰?不存在的!Java程序员如何避免职业危机
Java行业在当下人才是供不应求,但是作为[Java程序员]的你也得居安思危,你要知道你身处的是一个高速变化的行业,稍不留意你的位置还是存在被取代的风险,那么对于一个Java程序员来说,要如何避免被淘汰呢?1.时刻关注Java行业动态每一个Java程序员该做的,除了日常的工作外,要花点时间在Java行业动态上,不要轻易相信那些对Java不好的言论,比如“Java将死”,从而产生极大的焦虑,你要做的就是根据Java行业动态冷静分析,实时对自己的发展方向做出调整。2.不断学习新出Java技术很多Java程序员,一直固守不前就是因为觉得自己当下的Java技术应付当下的工作绰绰有余了,而不重视新的Java技术的学习。你要知道你这就是安于现状,那么你就真的只是一直会是低级Java程序员,因为你的Java技术不更上时代的发展,即使你在Java行业从事再多年,你依旧胜任不了高级[Java工程师]的工作,自然面临淘汰。3.学习和总结的能力[程序员]是很容易被淘汰、落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命
一个前端程序员的一个月原生 Android 开发体验
一个前端程序员的一个月原生Android开发体验。自从我写了Android应用后,上知乎的时间变得更长了。自从我写了Android应用后,上知乎的时间变得更长了。哦,不对,你理解错了,我的意思是:编译代码、打包APK、运行在设备上需要时间。可不像前端,一保存代码,就自动刷新页面。是的,从上上周一开始,因为项目缺人的原因,作为一个有Java开发经验的大前端,我又又双叕进入了原生Android开发的世界。这一个月下来,也算是有一些写XML的心得吧——不对,写Java代码,看Kotlin代码的心得。总的来说,Android与前端的差异并不是非常大,在某些东西上,他们还是蛮相似的。怪不得像我这样的程序员,会将Android开发也归类到大前端上去。如果你是一个前端程序员,想学习移动开发;又或者是一个移动开发,想接触前端开发;那么,本文可能就很适合你去了解两者间的差异。本文包含了以下的内容:编码效率vs可维护度MVPvsMV:后天的MV静态语言vs动态语言View与DOM代码
谈技术建议书编写(1.8)
做售前有两个重要工作,一个是售前PPT讲解材料编写,一个就是应标的时候技术方案或者叫技术建议书的编写,今天先谈下应标过程中的技术建议书编写要点。1.通读标书了解项目范围和目标当拿到标书的电子档材料候,首先应该通读整个标书,特别是里面的项目背景,目标,项目建设范围,详细的技术规范书说明,如果有详细打分表的还需要详细阅读技术打分表,了解项目技术打分的重点。一般拿到标后,甲方都会安排一次标前答疑,对于应标团队要高度重视标前答疑工作,准备好相应的问题。其中问题重点还是应该是项目建设范围和实施范围,项目的关于技术约束,产品选型要求,同时也需要对标书中本身出现的前后不一致内容进行答疑。这些都是需要甲方进一步进行澄清的内容。当然如果应标团队有些关键技术不满足,或者觉得甲方设置不合理也可以标前答疑提出来,甲方认为建议合理也可以进行修正。界定清楚项目范围是应标前最重要的事情,范围的不确定将导致后面建设和实施工作量出现成倍的差异。举例来说一个软件项目建设完成后,究竟是实施5个子公司还是30个子公司,这将带来工作量和项目费用的巨大变化。因此务必重视第
argparse模块简要用法
argparse是Python用于解析命令行参数的模块,拥有更强大的功能、更友好的使用方法,用来替代原始的sys.argv。argparse的大致用法如下:importargparse#导入模块parser=argparse.ArgumentParser()#创建解析器parser.add_argument()#添加参数args=parser.parse_args()#解析参数创建解析器时的可选参数很多,但没有特殊需求的情况下,默认参数就能很好的工作,所以这部分使用时临时查文档就能解决,不做过多记录。这里仅记录下添加参数时的各种选项搭配,使用方法和选项如下:ArgumentParser.add_argument(nameorflags...[,action][,nargs][,const][,default][,type][,choices][,required][,help][,metavar][,dest])每一个参数的含义:nameorflags-名称或选项字符串列表,例
SQL Server Service Broker创建单个数据库会话
概述SQLServerServiceBroker用来创建用于交换消息的会话。消息在目标和发起方这两个端点之间进行交换。消息用于传输数据和触发消息收到时的处理过程。目标和发起方既可以在同一数据库引擎实例的同一数据库或不同数据库中,也可以在不同数据库引擎实例的同一数据库或不同数据库中。每个ServiceBroker会话都有两个端点:会话发起方和目标。您将执行下列任务:为目标创建一个服务和队列,并为发起方创建一个服务和队列。创建请求消息类型和答复消息类型。创建约定,指定请求消息从发起方传递到目标并且答复消息从目标传递到发起方。
vue初尝试--新建项目
这是一篇技术贴--如何新建一个基于vue的项目1、下载对应版本的nodejs安装,下载的nodejs都集成了npm,所以nodejs安装完成之后npm也对应安装完成了。安装完成之后可以在cmd命令中查看一下是否安装完成,出现对应的版本号即安装完成。node-vnpm-v2、npm成功安装之后,就可以用npm命令安装vue,npminstallvue,可能会出现如下错误,那是因为没有package.json文件
❄️ SegmentFault 2017 年第四季度 Top Writer
一群卓越的开发者,他们分享知识与经验,他们布道技术未来,他们让众多开发者受益,他们叫TopWriter。上周守候还问起,为什么第四季度的Top-Writer还没出来,这不,来了,让大家久等了~说真的我特别好奇第四季度的Top-Writer归属。为什么?因为感觉有很多优秀的文章出现在我脑子里,玩转农药的betacat,从放弃迅雷和IDM到自己开发下载工具的mokeyWie…不知道他们是否在文章区的Top-Writer中。也不知spencerht大兄弟忙于工作加班后,问答季度排行榜第一是谁。这些问题都在下面的列表中找到答案,以下为是第四季度所有问答和文章的TopWriter,以及他们的高票内容。问答
React系列——快速理解babel6配置过程
繁琐的配置?你能快速读懂babel的官方文档吗?你能根据官方文档快速配置好babelrc吗?你能明白自己需要哪些插件吗?没有搞明白这3个问题,请往下看。快速理解babel6来看一张让人颤抖的babel插件图下图仅仅截取了部分,一屏都截取不完,还有babel插件隐藏在下面,你害怕了吗?忘记上面的图吧,那是罪恶之源当你忘记一切的时候,你只需要理解几个基本的东西即可。只需要下面几个babel插件,就能解析大部分ES方法1、babel-core//必备的核心库2、babel-loader//webpackloader配置必备3、babel-preset-env//有了它,你不再需要添加2015、2016、2017,全都支持4、babel-preset-stage-0//有了它,你不再需要添加stage-1,stage-2,stage-3,默认向后支持5、babel-plugin-transform-runtime6、babel-runtime//5和6是一起使用的,支持helpers,polyfill,regen
开源!js实现微信/QQ直接跳转到支付宝APP打开口令领红包!附:demo
最近支付宝的领红包可真是刷爆了各个微信群啊,满群都是支付宝口令。可是这样推广可不是办法,又要复制又要打开支付宝又要点领取,太麻烦了。于是乎,提出了一个疑问!是否可以在微信里面点一个链接然后直接打开支付宝并自动领取呢???就像下面这样!上图解说:1、点击一个url2、立即跳转到支付宝APP3、并且秒领红包对,没错,上面就是本次案例的demo大家可以扫码体验:实现的原理很简单源码只有一个html文件和js文件html只要是方便加载jsindex.html
WebVR开发——Web Audio实现3D音效
在VR开发中,除了图形视觉渲染,音频处理是重要的一环,好的音频处理可以欺骗用户的听觉,达到身临其境的效果,本文主要介绍WebVR音频是如何开发的。VRAudioVR音频的输出硬件主要是耳机,根据音频源与场景之间的关系,可将VR音频分为两类:静态音频和空间化音频(audiospatialization)。静态音频这类音频作用于整个VR场景,可简单的理解成背景音乐,音频输出是静态的,比如微风雨滴声、闹市声等充斥整个场景的背景音效。对于环境音效的开发,我们可以简单的使用标签进行循环播放。空间化音频音频作用在空间的实体上,具有发声体和听者的位置关系,音频输出会根据发声体与用户的距离、方向动态变化,它模拟了现实中声音的传播方式,具有空间感。实现原理:在虚拟场景中,通过调节音频的振幅来描述发声体与听者之间的距离,再通过调节左右通道(audiochannel)之间的差异,控制左右耳机喇叭输出,来描述发声体相对听者的方位。从发声体与用户两点间的距离来看,如距离越远,音频音量(振幅)应越小;从发声体与用户的方向来看,如发声体位于听者
React 性能优化大挑战:一次理解 Immutable data 跟 shouldComponentUpdate
原文出处:TechBridgeWeekly/huli前陣子正在重構公司的專案,試了一些東西之後發現自己對於React的渲染機制其實不太了解,不太知道render什麼時候會被觸發。而後來我發現不只我這樣,其實還有滿多人對這整個機制不太熟悉,因此決定寫這篇來分享自己的心得。其實不知道怎麼優化倒還好,更慘的事情是你自以為在優化,其實卻在拖慢效能,而根本的原因就是對React的整個機制還不夠熟。被「優化」過的component反而還變慢了!這個就嚴重了。因此,這篇文章會涵蓋到下面幾個主題:Component跟PureComponent的差異shouldComponentUpdate的作用React的渲染機制為什麼要用Immutabledatastructures為了判別你到底對以上這些理解多少,我們馬上進行幾個小測驗!有些有陷阱,請睜大眼睛看清楚啦!React小測驗第一題以下程式碼是個很簡單的網頁,就一個按鈕跟一個叫做Content的元件而已,而按鈕按下去之後會改變App這個component
JavaScript高级程序设计01
functionoutside(x){functioninside(y){returnx+y;}returninside;}fn_inside=outside(3);//Thinkofitlike:givemeafunctionthatadds3towhateveryougiveitresult=fn_inside(5);//returns8result1=outside(3)(5);//returns8这里内部函数inside(),可以访问外部函数outside()里的变量x。而在外部只能调用outside()。第一次调用时,可以理解为outside(3)=3+y。多层嵌套函数functionA(x){functionB(y){functionC(z){console.log(x+y+z);}C(3);}B(2);}A(1);//logs6(1+2+3)这里的作用域链是(C,B,A,全局/windows)B形成了一个包含
从零收拾一个hybrid框架(一)-- 从选择JS通信方案开始
相信很多人都在项目里熟练使用各种Hybrid技术,无论是使用了知名得WebViewJavascriptBridge框架来做自己的HybridWeb容器,又或是自己从头着手写了一个满足自己业务需求的bridge,从而构建起自己的HybridWeb容器,也有的干脆直接使用了cordova这一大型Hybrid容器框架,cordova+ionic来进行Hybrid的开发拆解学习框架源码是一个好事,但是在拆解优秀框架源码的背后,如何将多个优秀源码的精华打碎重塑,结合自己的产品业务需求重新组合成为适合自己的,并且扎实掌握可以灵活修改自如控制的代码,这也算是另一个层面的提升。选择合适的JS通信方案实现基本的JSBridge能力尝试拓展JSBridge的额外能力这一篇先重点聊聊JS与Native通信的通信方案几种JSNative相互通信方式的介绍大家可能看了很多大框架源码,无论是cordova还是WebViewJavascriptBridge他们核心的通信方式就都是假跳转请求拦截但其实JS与Nati
JSON和JSONP
前言说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要讲述的内容。JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的“暗号”,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。看到没?一个是描述信息的格式,一个是信息传递双方约定的方法。既然随便聊聊,那我们就不再采用教条的方式来讲述,而是把关注重心放在帮助开发人员理解是否应当选择使用以及如何使用上。什么是JSONJSON的优点基于纯文本,跨平台传递极其简单;Javascript原生支持,后台语言几乎全部支持;轻量级数据格式
如果你想开发一个应用(1-16)
1.png总体布局经过原型图,我们可以分析出首页的大概结构:头部是一个包含三个item的tab,用于控制内容区域显示不同的组件足部是疑似导航效果的三个按钮,分别对应开启新记录,开启新的图片记录,以及当前月的记录数目。剩下的就是内容主题部分。暂时只考虑日记这个tab节点的内容部分。它是一个月份列表内嵌套了一个本月的日记的列表,所以需要一个月份字段,并且由于日记是分组的,当前显示的组也需要记录,同时,还要知道页面内正在显示的月是哪一个月,也就是,在页面右下角记录条目要知道根据那个月份和组来进行计算。然后看记录的框框内都有什么内容:首先,是记录时间,包括星期,日期,时间,但这些可以用一个date对象代表,然后日记的标题,日记内容,发送日记时候的心情,天气,以及是否打了标记,这些为了前后端方便,均用int型来表示。所以最终经过分析最终的数据模型设计如下:indexTodos:[{month:0,//月份default:1,//正在显示的月份todos:[{createTime:n
CSS效果篇--纯CSS+HTML实现checkbox的思路与实例
checkbox应该是一个比较常用的html功能了,不过浏览器自带的checkbox往往样式不怎么好看,而且不同浏览器效果也不一样。出于美化和统一视觉效果的需求,checkbox的自定义就被提出来了。这里对实现方法做个总结。实现思路纯css实现的主要手段是利用label标签的模拟功能。label的for属性可以关联一个具体的input元素,即使这个input本身不可被用户可见,有个与它对应的label后,用户可以直接通过和label标签交互来替代原生的input——而这给我们的样式模拟留下了空间。简而言之就是:隐藏原生input,样式定义的过程留给label(那为什么不直接改变checkbox的样式?因为checkbox作为浏览器默认组件,样式更改上并没有label那么方便,很多属性对checkbox都是不起作用的,比如background,而label在样式上基本和div一样'任人宰割')而在选择事件上,由于css的“相邻选择符(E+F)”的存在,让我们
重温webpack:骨架搭建
github地址找到skeleton分支什么是骨架:个人觉得:就是可以简单打包css,js,html,这样的使用场景比较多的是应用在于企业官网的开发。目标开发一个官网,你肯定不止一个页面,所以我们需要多个页面入口,多页面出口设置。比如|----build//存放webpack配置类似vue-cli生成的目录//打包结构|----dist|----index.html|----list.html|----css|----index.css|----list.css|----img|----js|----index.js|----list.js//目标结构|----src|----modules//存放公共文件|----css|----js|----pages|----index|----list//html,css,js都放入对应的文件夹Tips我们不会只有一个简简单单的webpack.config.js文件。我们想要高性能开发,就需要分别配置开发环境与生产环境。所以我们最开始的目录就是放
图表库源码剖析 - Chart.js 最流行的 Canvas 图表库
首发于前端新能源写文章登录图表库源码剖析-Chart.js最流行的Canvas图表库无止休7hoursago引言,为什么想要研究Chartjs继之前我们研究了SVG.js和FrappeCharts后,我们对于svg的图表库已经有了初步的了解,但是对于可视化世界的canvas,我们更应该投入精力去了解学习.在看到chartist.js讲到自己的优势的时候,提到一些图表库使用了错误的技术canvas,那我们就更有兴趣去了解,为什么会有这种说法.首先让我们一起来了解一下Chartjs.Chartjs介绍Chartjs的官方介绍是一个简单灵活的图表库,相对而言Chartjs在图表库中的优势,主要是配置简单,动画比较优雅,而基于canvas的特性,让Chartjs性能会更有优势.Chartjs目前拥有34.4K的star,几乎已经是canvas版本的图表代名词,也是最流行的基于canvas的图表库.在GitHub上搜索chart,可以看到
AutoMapper 使用总结
AutoMapper使用总结初识AutoMapper在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层、业务逻辑层、服务层、数据访问层。层与层访问需要数据载体,也就是类。如果多层通用一个类,一则会暴露出每层的字段,二者会使类字段很多,而且会出现很多冗余字段,这种方式是不可取的;如果每层都使用不同的类,则层与层调用时,一个字段一个字段的赋值又会很麻烦。针对第二种情况,可以使用AutoMapper来帮助我们实现类字段的赋值及转换。AutoMapper是一个对象映射器,它可以将一个一种类型的对象转换为另一种类型的对象。AutoMapper提供了映射规则及操作方法,使我们不用过多配置就可以映射两个类。安装AutoMapper通过Nuget安装AutoMapper,本次使用版本为6.2.2。AutoMapper配置初始化先创建两个类用于映射:publicclassProductEntity{publicstringName{get;set;}publicdecimalAmount{get;set;