ios软件要求ios9以上发布服务器有什么要求

扫一扫,随时随地挑选人才和公司
扫一扫,随时随地接单赚钱
随时掌握一手咨询
需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金
ios服务器端后台开发
ios服务器端后台开发
雇主预算:¥15000.00
已收到 12 个服务商的文案稿件
有相似问题想解决?专业顾问来帮助您
通过猪八戒网实名认证,保证身份真实可靠
完成手机认证,保证能随时联系到服务商
该需求下的优秀交稿
TA的交稿:
具体交稿内容请见附件。
TA的交稿:
具体交稿内容请见附件。
TA的交稿:
具体交稿内容请见附件。
交易成功的需求
软件插件开发相关需求操作系统是Window下。
第一步安装软件
1、安装Tomcat6.0.35(Tomcat7.0.34测试通过)
2、安装JDK6(1.6.0_10-rc2,其它版本没测试)
3、安装openssl
第二步配置软件
1、将jdk、jre和openssl的bin目录设置到path环境变量下
第三步生成证书
1、创建一个目录,进入cmd命令行下,通过cd命令进入该目录
2、在指定的目录下运行命令:openssl genrsa -out server.key 1024生成服务器密钥文件。
如果目录下生产server.key的文件,并且文件大小不为0,则说明成功。
如果没成功,查看输出的内容中是否有提示“\usr\local\ssl\openssl.cnf”找不到的问题,如果遇到这个问题,说明你并没有按照第四步的要求将openssl设置到path中,解决的办法有2个,第一个完成第四步openssl的path设定,第二个是将openssl的bin目录下的文件“openssl.cfg”修改个名字,然后在c盘下创建“\usr\local\ssl\”目录,将文件复制进去。
3、再运行命令:openssl req -new -out server.csr -key server.key根据密钥文件生成签署文件。
其中各个设置项中,除了Common Name其它的各项都可以为空,不过为了后期你好辨别证书,最好不要设置空,其中Common Name的值必须是你的服务器ip或者是域名,本机测试的话可以用localhost,但是如果要通过移动设备来访问就不能设置成localhost。
4、再运行命令:openssl genrsa &-out ca.key 1024生成客户端密钥文件。
5、再运行命令: openssl req &-new -x509 -days 365 -key ca.key -out ca.crt生成客户端的签署文件。
填写的内容和第三步一致即可,其中organizationName必须和第三步的一致
6、在当前目录下创建demoCA文件夹,并在demoCA下创建文件index.txt和serial,serial内容为01,index.txt为空,以及文件夹newcerts
7、在命令行中输入:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key让客户端的签署证书能够被网站服务器的签署证书认识
8、运行命令openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12把服务端签署证书转换浏览器可以识别的PCS12格式,密码使用上面输入的密码“123456”。
9、运行命令java -cp jetty-5.1.10.jar org.mortbay.util.PKCS12Import server.p12 &server.jks,使用jetty中的PKCS12Import工具类完成转换,密码同上.(jetty-5.1.10.jar需要放置到当前文件夹中)
如果出现错误:说明你的jetty-5.1.10.jar没有复制到命令行的当前文件夹下。
10、如果你好奇,可以通过命令行keytool -v -list -keystore server.jks &查看下文件的签署内容。
&以上过程总共生成7个文件,我们只关心其中的3个文件,分别是server.p12(tomcat配置用)、server.jks(tomcat配置用)、ca.crt(客户端证书,需要iOS设备下载安装)。
第四步配置Tomcat服务器
&1、打开Tomcat的目录,找到conf下的server.xml文件,打开找到被注释的8443端口部分,修改成如下内容
&Connector port="8443" & & &protocol="org.apache.coyote.http11.Http11Protocol"
& & & & SSLEnabled="true" &maxThreads="150" & & &scheme="https" secure="true" &clientAuth="false" &
& & & & keystoreFile="D:/apache-tomcat-6.0.35/webapps/ROOT/ca/server.p12" &keystorePass="123456" & & &keystoreType="PKCS12"
& & & & truststoreFile="D:/apache-tomcat-6.0.35/webapps/ROOT/ca/server.jks" &truststorePass="123456" & & &truststoreType="JKS"/&
注意:keystoreFile、keystorePass为文件生成的位置和生成证书时输入的密码。
我的工程是发布到ROOT下的,需要你将几个文件同时复制到该文件下:server.p12、server.jks、ca.crt;其中server.p12、server.jks是tomcat的server.xml配置文件要用到的,而ca.crt文件是要发布出去,以供iOS设备下载安装的客户端证书。
另外服务器端也需要安装server.crt证书(如果是仅仅为iOS下载应用服务,这个证书可以不安装),这个证书需要安装到受信任的根目录下。步骤如下:
双击server.crt-&安装证书-&下一步-&选择”将所有的证书放入下列存储”-&浏览选择“受信任的根证书颁发机构”-&剩下的一路点“是”即可。
先关的软件,以及每个步骤的详细的页面截图和说明,请到下面地址进行下载:
http://download.csdn.net/detail/zenjamin/7341345
& 著作权归作者所有
人打赏支持
码字总数 75416
不行啊,楼主,按你的方法 试过 IOS报无法连接 错误
keytool -importkeystore-v -srckeystore
c:\ca\server.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystorec:\ca\server.keystore -deststoretype jks -deststorepass 123456
keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore server.jks
评论删除后,数据将无法恢复
由于大家都知道的原因Dropbox 挂掉了,免费的 https文件分享链接没有了,广大通过 dropbox https 分享链接来发布ios应用的童鞋悲剧了 。今天就给大家支个招儿。 分析 ios 7.1 安装链接 格式 ...
使用UniDAC在Delphi XE4中开发iOS应用   核心提示:Delphi XE4的发布让很多Delphi开发者欣喜若狂,毫无疑问它使得Delphi开发更简单且更容易被理解,而且让开发无论是iPhone、iPad还是iPod的...
  昨天傍晚盘古实验室负责任的披露了针对 iOS 应用的 ZipperDown 漏洞,并提供了检索、查询受影响应用的平台: zipperdown.com。基于目前公开的信息,该漏洞的影响面比较大,15000 多个应用...
相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点...
在51CTO学院开线上视频课程已经3个多月了,也上了不少课。不过发现还有很多课没有开。现在就将未来的开课计划公布一下。计划分为两个阶段。第一阶段主要是Cocos2d-x和Cocos2d-js的游戏开发培...
androidguy
  iOS 7已经发布了六个测试版,除了beta 6进行了小幅修正外,其他几个测试版都有不小的改动。昨天有消息说苹果将在9月10日发布iOS 7正式版,那么GM版很快将会与开发者见面。在iOS 7来临前夕...
fangzhou99
谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本
12:26编辑: 枣泥布丁分类:程序人生来源:程序师 跨平台Google Flutter预览版本 招聘信息: 图像处理及模式识别工程师 C/C+...
“每一次的改变总意味着新的开始。”这句话用在iOS上可谓是再合适不过的了。GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目...
一直想开发手机应用,也跟着教程学做了两个iOS小应用,但开发思维上的转变需要一个长期的过程,而且iOS系统功能很强大,陌生的地方也很多,很多功能不知道该自己开发还是系统上已经存在,也不...
Xamarin iOS开发实战1.1.3Xamarin版本 Xamarin提供了免费版和付费版。免费版本包含Xamarin Studio服务。付费版本分为普通版299美元/年、商业版999美元/年和企业版1899美元/年。开发者可以根据...
没有更多内容
加载失败,请刷新页面
反射 目录介绍 1.反射概述 1.1 反射概述 1.2 获取class文件对象的三种方式 1.3 反射常用的方法介绍 1.4 反射的定义 1.5 反射的组成 1.6 反射的作用有哪些 2.反射的相关使用 2.1.1 通过反射获...
学习 openssl 证书命令 1、参考 https://blog.csdn.net/madding/article/details/、在我电脑建立好一个目录,并启动 terminal ,进入该目录 cd /Users/dhbm/Desktop/ssl...
完整代码: https://gitee.com/yizhichao/boss 工具下载: axis2 https://pan.baidu.com/s/1FlO5wYYTxkfVSI4fHM84rg bossService.wsdl &?xml version="1.0" encoding="UTF-8"?&&wsdl:defin......
hive 语句执行顺序 大致顺序from... where.... select...group by... having ... order by... explain查看执行计划 hive语句和mysql都可以通过explain查看执行计划,这样就可以查看执行顺序...
一、JVM 内存模型   根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。   1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着...
一、sqoop1.4.6 to hbase1.2 in hue4.1 CM安装 cdh 5.15.x,因想用简单的sqoop1所以parce装的sqoop1 client,经测试报:SQOOP_CONF_DIR找不到,mysql drive no find ,检查发现安装目录和class...
&html lang="en"&&head&
&meta charset="UTF-8"&
&title&Title&/title&
margin: 0;
padding: 0;
height: 800
职能概览 前端工程师首先是个程序员,其次也是个软件工程师,他们工作在离用户最近的地方,负责人机交互和用户体验,虽然叫“前端”,但其实他们的工作边界其实已经很宽了。展望未来,我想前...
平台为linux redhat7.2,数据库版本为11.2.0.4 与12.2.0.1.0 限定特定IP访问数据库可编辑sqlnet.ora文件 sqlnet.ora文件路径在$OREACLE_HOME/network/admin/samples下有模板,可以copy到$OR...
golang pprof 当你的golang程序在运行过程中消耗了超出你理解的内存时,你就需要搞明白,到底是 程序中哪些代码导致了这些内存消耗。此时golang编译好的程序对你来说是个黑盒,该 如何搞清其...
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定取消删除此文章吗?
亲,自荐的博客将通过私信方式通知管理员,优秀的博客文章审核通过后将在博客推荐列表中显示
确定推荐此文章吗?
确定推荐此博主吗?
聚合全网技术文章,根据你的阅读喜好进行个性推荐
指定官方社区
深圳市奥思网络科技有限公司版权所有使用脚本一键打包iOS应用ipa和上传到ftp服务器 - 简书
使用脚本一键打包iOS应用ipa和上传到ftp服务器
使用脚本一键打包iOS应用ipa和上传到ftp服务器
由于开发时间的经常,测试的繁琐,无可避免的会频繁的打包ipa并上传到公司的服务器.
一次两次我们获取能够接受.但是要是赶上高峰期,一天下来打包几十次,有谁能受的了呢?
于是想到了脚本打包和上传ftp,github上搜索一下,还有不少,果断选择一个star最多的试试
1.您的xcode 必须附带“Command Line Tools”
拥有它,你就 =可以通过命令行来完成iOS工程的编译和打包工作。脚本正是基于此完成的。
2.脚本下载下来,你会看到很多脚本 ,选择ipa-build
3.打开终端,把ipa-build 的脚本拖进去, 然后,再去你的工程,把你的工程拖进去,按下回车即可开始自动打包
注意:你的工程中,最好自己配好打包证书
本来以为超级简单,但是发生问题了
出现了这样的log
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
网上搜索一下
Xcode升级到8.3后 用命令进行打包 提示下面这个错误
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
后面根据对比发现新版的Xcode少了这个PackageApplication
先去找个旧版的Xcode里面copy一份过来
放到下面这个目录:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
然后执行命令
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication
如果没有PackageApplication的我这里分享一份出来
密码: y8q1
满心欢喜终于搞定,继续跑脚本,泪崩,又出新log
这里写图片描述
好吧,脚本是3年前的,果然是过时了,没有关系,自己参照修改即可
终于,在此基础上新的脚本出炉
xcode_shell :
使用方法还是一样,下载下来后讲build拖到终端,再将项目拖入终端,回车
这里写图片描述
这里写图片描述
当然还有上传ftp服务器的脚本
在终端vim upload
这里写图片描述
配置好你的ftp服务器的地址,用户,路径等即可
之后就可以使用upload一键上传了
当然你也可以使用ipa-build直接打包上传.
这里写图片描述
xcode_shell :
https://github.com/spicyShrimp
http://blog.csdn.net/spicyshrimp
特别说明:如果项目没有采用Cocoapods管理,没有.xcworkspace,只有xcodeproj;只需要将脚本中这句 xcodebuild \ archive -workspace ${project_path}/${project_name}.xcworkspace...
本文始发于我的博文详解Shell脚本实现iOS自动化编译打包提交,现转发至此。 目录 前言 Shell脚本涉及的工具xcodebuild和xcrunaltoolfir-cliPlistBuddy 一些概念的区别 具体实现xcodebuild和xcrun准备Plist文件获取...
背景 新项目这边每次版本移交, 给测试都是直接xcode挨个拿手机安装的流程. 一次两次还好,天天这么搞,而且每次一大波手机扔过来,瞬间觉得,自己好像是个疫苗注射员似的,顺次给每个手机打一针. biu! NEXT... biu! NEXT... biu! NEXT... ....
目录 一、什么是持续集成? 二、我们为什么要用持续集成? 三、安装环境配置 四、iOS 项目配置 五、Android 项目配置 六、写在最后 一、什么是持续集成? 持续集成指的是频繁主动的将代码集合并到代码仓库当中,方便产品保持高质量的快速迭代。持续集成的好处主要有: 1)...
欢迎到我的 个人博客 http://liumh.com 浏览此文 本文最终实现的是使用脚本打 Ad-hoc 包,并发布测试,当然稍微修改一下脚本参数就可以打其他类型的 ipa 包了。另外该脚本还实现了将生成的 ipa 包上传至蒲公英进行测试分发。文中内容包括: xcodeb...
定义: 模块之间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类产生的 接口或抽象类不依赖于实现类 实现类依赖接口或者抽象类 面向接口编程 实例: 依赖的三种写法: 构造函数注入,构造函数传递以来对象。(指的是实现接口的实体类中的构造函数的...
放学后,我对课上看似随意其实用心的“涂鸦”十分的爱不释手。 因为,这就是我梦想中的家。 因为,在我心灵深处,只有有一个偌大的图书馆,附加上阅览室、植物房、安放着黑白色钢琴的工作室,和明亮开朗宁静的高层阳台,才是理想中完美的房屋格局。 遐想一下也很开心。 就算这辈子实现不了,...
#每天一千字#6月17日,day2打卡。今日感受:多爱自己一点,把糊涂的事理清楚,此事一千字… 昨天是第一天打卡,种种不适! 从小到大,我似乎都愿意生活在理想的世界里,自己本能的排斥着不喜欢的人或事,很注重自我感受。当然,这里不是指自我封闭、利己的个性。相反,因为自己的心无...
主成分分析 PCA: principal component analysis 主成分分析是一种简化数据集维数的技术。特点是保存数据集中对方差影响最大的那些特征。 在信息理论中,信号会有较大的方差,噪声会有较小的方差。用我们自己的想法,在多维数据中选出最有代表性的一维一定是...
玉雕栏,画眉艳, 梦里江山, 舴艋舟里锦云帆。 商女犹怜日暮还, 雨落泪眼湿, 星沉沉。ios企业版发布 https证书以及服务器设置
我的图书馆
ios企业版发布 https证书以及服务器设置
& & & & 苹果的企业开发证书,可以不经app store,直接发布到自己的网站上。其他人可以直接下载安装。但前提要用苹果自带的浏览器(safari)才能下载,其他浏览器不能识别该协议。& & & & 一、制作证书& & & &打开Keychain Access工具,把Keychain的配置改为如下图:并从菜单中选择Keycahin Access-&Certificate Assistant-&Request a Certificate From a Certificate Authority...如下图所示:&填写必要的信息,生成证书保存在桌面或其他地方,等会要用到:&&二、生成并安装证书& & & & 用企业版的apple id登陆苹果开发者中心: https://developer.apple.com, 登陆后选择对应的选项,上传之前生成的证书文件,如下图:&&生成证书文件后,下载下来,双击打开即安装。三、增加APP ID四、生成Profiles文件在开发中心点击Provisioning Profiles中的Distribution, 点击“+”,增加Profiles。APP ID选择刚才增加的。如图&添加好之后,就可以下载下来,把它拖到Xcode中。或是拖到Organizer中。如图:&五、发布应用在XCode的Targets中选择签名:&在XCode的菜单Product-&Archive中选择打包。打包时要把iPad或是iphone接到电脑上,并选择目标是iPad或是iphone才能成功。&&Required的信息填写即可,save,则会同时生成ipa和plist 文件,如下&apple文档地址:以无线方式安装应用程序iOS 支持以无线方式安装企业级应用程序,这可让您在不使用 iTunes 的情况下将内部软件分发给用户。要求已鉴定的用户可访问的安全 Web 服务器.ipa 格式的 iOS 应用程序,经构建用于发布/生产(使用了企业级预置描述文件)本文稿中稍后描述的 XML 清单文件可让设备访问 Apple iTunes 服务器的网络配置安装应用程序很简单。用户可以将清单文件从您的网站上下载到他们的 iOS 设备上。该清单文件会指示设备下载和安装该清单文件中所引用的应用程序。您可以分发 URL 以便通过短信或电子邮件来下载清单文件,也可以将它嵌入您所创建的其他企业级应用程序中。由您设计和主管用于分发应用程序的网站。确定用户已被鉴定(可能是使用基本鉴定或基于目录的鉴定),并确定网站可通过内联网或互联网进行访问。您可以将应用程序和清单文件放入隐藏的目录中,或任何可使用 HTTP 或 HTTPS 来读取的其他位置中。准备企业级应用程序进行无线分发若要准备企业级应用程序进行无线分发,您应该构建归档的版本(.ipa 文件),以及构建清单文件以启用应用程序的无线分发和安装。使用 Xcode 来创建应用程序归档。使用您的分发证书给应用程序签名并在归档中包括您的企业级开发预置描述文件。有关清单文件的信息,请参阅以下内容。有关构建和归档应用程序的更多信息,请访问 iOS Dev Center(iOS 开发中心)或参阅《Xcode User Guide》(Xcode 使用手册),可通过 Xcode 中的“Help”(帮助)菜单来访问该使用手册。关于无线清单文件清单文件是 XML plist 格式的。iOS 设备使用它在 Web 服务器上查找应用程序,以及从 Web 服务器上下载和安装应用程序。清单文件是由 Xcode 创建的,使用您在共享归档的应用程序以进行企业级分发时所提供的信息。请参阅上一节。以下栏是必填的:项目描述URL应用程序 (.ipa) 文件的完整合格的 HTTP 或 HTTPS URL。display-image下载和安装过程中显示的 57 x 57 像素 PNG 图像。指定图像的完整合格的 URL。full-size-image用来在 iTunes 中表示应用程序的 512 x 512 像素 PNG 图像。bundle-identifier您应用程序的包标识符,与 Xcode 项目中指定的完全一样。bundle-version您应用程序的包版本,在 Xcode 项目中指定。title下载和安装过程中显示的应用程序的名称。仅对于“报刊杂志”应用程序,需要填写以下栏位:项目描述newsstand-image完整大小的 PNG 图像,用于显示在“报刊杂志”书架上。UINewsstandBindingEdgeUINewsstandBindingType这些键必须与“报刊杂志”应用程序中的 info.plist 中的键相符。UINewsstandApp指示该应用程序是“报刊杂志”应用程序。您可以使用的一些可选键如示例清单文件所述。例如,如果应用程序文件太大并且您想要在执行错误检验(TCP 通信通常会执行该操作)的基础上确保下载的完整性,则可以使用 MD5 键。您可以使用单个清单文件安装多个应用程序,方法是指定&items&数组的附加成员。本文稿末尾列出了示例清单文件。构建网站将这些项目上传到您网站上已鉴定的用户可以访问的区域:应用程序 (.ipa) 文件清单 (.plist) 文件您的网站设计可以像用来链接到清单文件的单个页面那么简单。当用户轻按 Web 链接时,清单文件会被下载,并触发它所描述的应用程序的下载和安装。以下是一个示例链接:&a href="itms-services://?action=download-manifest&url=http://example.com/?manifest.plist"&Install App&/a&请勿添加归档的应用程序 (.ipa) 的 Web 链接。载入清单文件时,设备会下载该 .ipa。虽然 URL 的协议部分是 itms-services,但 iTunes Store 并不参与此过程。设定服务器 MIME 类型您可能需要配置您的 Web 服务器以便正确地传输清单文件和应用程序文件。对于 OS X Server,将以下 MIME 类型添加到 Web 服务的“MIME Types”(MIME 类型)设置中:application/octet-stream ipatext/xml plist对于 IIS,使用 IIS Manager 在服务器的“属性”页面中添加 MIME 类型:.ipa application/octet-stream.plist text/xmlopenssl使用的是macos系统自带的版本,关键点是不同直接使用ios设备打开https的链接,需要将证书发到系统的mail里,安装到设备,如果命令执行不成功,用sudo执行。1.生成服务器的私钥openssl&genrsa&-out&server.key&10242.生成签署申请(注意除Common Name以外可以为空,Common Name必须为服务器的ip或域名)openssl&req -new&-key&server.key&-out&server.csr3.生成CA私钥openssl&genrsa&&-out&ca.key&1024&4.利用CA的私钥产生CA的自签署证书openssl req& -new -x509 -days 365 -key ca.key -out ca.crt5.在当前目录创建demoCA,里面创建文件index.txt和serial,serial内容为01,index.txt为空,以及文件夹newcertsopenssl&ca&-in&server.csr&-out&server.crt&-cert&ca.crt&-keyfile&ca.key将ca.crt文件通过邮件发送到ios设备的Mail上,进行证书的安装nginx https配置:&&& & server {& & & & listen & & & 443;& & & & server_name &ios.xxx.& & & & error_log &/dev/& & & & ssl & & & & & & & & && & & & ssl_certificate & & &server.& & & & ssl_certificate_key &server.& & & & ssl_session_timeout &5m;& & & & #ssl_protocols &SSLv2 SSLv3 TLSv1;& & & & ssl_protocols &SSLv3 TLSv1;& & & & ssl_ciphers &ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;& & & & ssl_prefer_server_ciphers && & & & root & /workspace/& & & & #add_header Content-Disposition: '';& & }
喜欢该文的人也喜欢51CTO旗下网站
写给那些傻傻的,想做服务器开发的应届生
猿题库刚刚结束了北京地区的大规模校园招聘,国庆之后打算转战外地进行校招。我本人深度参与了此次的校招工作,包括笔试题命题、面试题命题以及具体的面试工作。
作者:来源:| 14:29
猿题库刚刚结束了北京地区的大规模校园招聘,国庆之后打算转战外地进行校招。我本人深度参与了此次的校招工作,包括笔试题命题、面试题命题以及具体的面试工作。
我在面试中发现了一个非常有意思的现象,就是大多数应届生都想做服务器端开发,但是他们却又不清楚服务器端开发具体要做些什么。
我和同事聊天的时候说起此事,我们认为可能应届生觉得:做服务器端开发可以让自己写的程序运行在很多台机器上,并且处理海量的数据,这很「牛逼」。而做客户端或前端开发太简单,成长会比较小。
于是我就写了本文,想给这些单纯的应届生泼泼冷水。先说说我的背景吧,我同时做过服务器端和客户端的开发。我在网易有道做过 1
年半的服务器端开发,产品涉及网易邮箱和微博产品,之后做了 3 年的 iOS
开发,产品涉及有道云笔记,猿题库和小猿搜题,所以我能够给大家分享服务器端和客户端开发的差别。
对服务器开发的误解
很多应届生认为做服务器端开发可以处理海量数据,管理上百台服务器。
处理海量数据就牛逼了?NO!
服务器端开发经过多年的发展,对于海量数据的处理早有了很多固定的解决方案。不管是用云服务,还是用 Hbase ,你都可以很轻松地依赖开源库,解决海量数据的存储问题。
还有一些同学想做大数据分析,如果你写过 MapReduce 程序就不会这么想了。现在的 MapReduce 程序写起来太 easy 了,很多时候简单到你就只需要写一条类似 SQL 的查询就行了。
运行在上百台服务器上就牛逼了?NO!
现在虚拟化技术发展迅猛,像小猿搜题所有服务都通过 Docker 来部署。很多时候,部署上线就是在 Web 管理界面上点击一个「Deploy」按钮即可。即使在过去,实际操作这些上百台服务器的也是运维同学,轮不到你来操作。
所以,除了 YY 一下这些程序跑在多个机器上,这并没有什么可以带来成就感的地方。
还有一些应届生觉得自己在学校做过网站,觉得在服务器开发方面有基础,做这方面更顺手。NO!企业里面的服务器开发完全不是你想的那样,基本上大家在学校做网站的经验等于零。
服务器开发的苦
我给大家分享一下做服务器开发有什么苦的地方吧。
永远只能半夜上线
做为互联网公司,我们希望给用户提供 7 x 24 的不间断服务,那么服务万一需要中断怎么办?半夜上线呗。
根据我多年的观察,晚上 12 点一般都是上网高峰,所以上线一般都是凌晨 3 点-4 点的时候进行。但是,你以为上线就是凌晨 3
点点一下「Deploy」按钮就完了吗?NO! 一般上线都会涉及功能升级,难免会有考虑不周到的情况,于是就会发生,上线出问题的情况。
上线出问题怎么办?在网易,我们一般是两种做法:
在线调试和修改 Bug,通常顺利的话,到早上 7,8 点的时候一般就能搞定了。
在线调试和修改 Bug,如果不顺利的话,到早上 7,8 点的时候回滚数据。然后,我们需要回家休息半天之后,继续在下一个凌晨 3 点上线。
当然,不会每次上线都是这种大升级,但是基本上,1、2 个月搞一次这种大上线还是挺常见的。
相对来说,客户端同学在这方面要轻松得多。iOS 和 Android 都是提交应用市场审核,所以客户端的同学可以选一个白天上班的时候提交审核,而不用等到半夜。
永远需要立即响应
服务器端的问题,只要出现,影响都是巨大的,所以服务器端的同学需要随时待命,一旦有服务器异常报警,就立即处理,以免影响到用户。所以做服务器开 发的同学手机都是开着的,在服务不稳定时,一不小心,几十条报警短信就过来了。服务器开发出去旅游什么的,一般都带着笔记本,以便出问题时能够及时响应。
相对来说,客户端同学在这方面要轻松得多,因为即使出现了 Bug,iOS 和 Android 客户端也是无法马上修复的,因为用户手机中的版本不会立即更新。所以客户端同学最多也是加班发布一个紧急版本提交审核,在时间上不会像服务器端那么着急。
另一方面,很多客户端的 Bug,可以通过服务器端通过一些「兼容」来处理,这其实就是替客户端「擦屁股」。例如,假设某应用的 iOS
1.2.0 版本当获得服务器端返回的用户头象是 png 格式的时候会闪退,那么服务器端可以特殊处理,对于这个版本的应用把 png 图片转成
jpg 返回。你看,最终还是服务器端同事成了要立即响应的人。
服务器端轮子太多
服务器端的开发经过了 10 多年的发展,而客户端的开发才刚刚兴起。2009 年&&推出之后,国内才有人做 iOS App 的开发,Android 开发的兴起也基本在。算下来,客户端的开发才经历了 6 年而已。而服务器端的开发呢?光&&就出现了 10 多年了。
服务器端的技术长久发展的结果就是,基本上每个业务需求都已经有现成的轮子了。所以做服务器端开发很多时候就是学习各种开源组件的用法,并且熟悉这些组件的一些性能特点和坑。
你以为这很容易吗?其实不是的!这些轮子发展那么多年,已经非常复杂了,光 Spring 就包括非常多的特性,写一本 1000 页的书来介绍它也不为过。如果不是多年的使用,你能搞明白它的各种功能的优缺点吗?如果你搞不明白,遇到问题的时候除了抓瞎还能干嘛?
所以做服务器端的同学,要经过非常长时间学习(至少半年左右),才能上手进行实际的开发工作。上手之后,又需要经过非常长时间的学习,才能够熟悉自己使用的各种开源组件的特点和使用细节。
相对来说,客户端同学在这方面要轻松得多,基本上不管是 iOS 还是 Android,新手只需要一个月左右就能入门,三个月左右就能够比较熟练了。
分工与细化
刚刚说到服务器端复杂,这带来的结果就是分工与细化。每个做服务器开发的同学,可能只会涉及服务器开发的某一部分的业务逻辑和功能,甚至是某一部分业务逻辑的某一层。比如我在网易邮箱做服务器端开发时,就只是负责 Restful Api 这一层的开发工作。
从业务上来说,将复杂的系统拆分,然后每个人做独立的某一块当然是好的。但是对个人来说,服务器端开发却使终是一块迷雾环绕的大山,在这座大山上,你对你走过的路线很熟悉,而那些你没有接触过的服务器端技术,你使终是不清楚的。
对于一个服务器端开发同学,特别是进入大公司的应届生来说,在他头几年的工作中,肯定只会围绕着非常小一块功能业务来学习,那么一两年之后,他顶多是熟悉了他工作涉及的那些东西,对于别的东西仍然是不清楚的。
从这一点来说,去创业型的公司做服务器端开发又要比去大公司要好得多。
相对来说,客户端同学在这方面要爽得多。因为移动开发技术刚刚兴起,很多技术方案和框架还没有复杂到无法全面掌握的程度。移动开发技术就像一棵快速 成长的小树,客户端同学将有幸伴随着它一起成长,等 5
年之后,移动开发技术成变成一棵参天大树,这一代的程序员,将会是唯一亲身经历它演进的人,每一处演进带来的改变,都将使得我们更加深刻理解移动开发系统 的设计原则。
眼界和非技术成长
某种程度上说,服务器端开发在业务方面是轻松的,因为他们只需要设计好 API 接口,返回 JSON 数据,不用考虑 UI 的设计,交互细节的处理。服务器端开发经过了多年的发展,单元测试和性能测试框架也非常成熟,所以开发起来非常有章法。
所以服务器端的同学大多数时候只需要关注纯技术的知识,例如如何保证高可用,高扩展性,高并发,数据一致性,数据安全等。
客户端就苦了,UI 需要和美术设计得完全一样,交互细节还需要做到流畅,很多时候产品用一用觉得一些 UI
和交互有问题,我们还需要被迫接受调整。另外在测试上,因为和界面耦合太紧,虽然业界有一些解决方案,但基本上不管是 iOS 和 Android
都还没有非常成熟好用的单元测试框架。大部分的测试工作都是由黑盒的手工测试完成的。
但是,正因为客户端需要密切和产品经理,UI
设计师打交道,所以他们会频繁接触到产品设计思想和设计思想。这使得客户端的同学更加容易学习和积累编程之外的技能,包括产品和设计的思想以及沟通能力。 另外,因为用户的 bug 都是通过客户端反馈,客户端同学还更容易接触到真实的用户。
所以相对于服务器端同学来说,客户端的同学的眼界更宽,由于非技术方面的沟通更多,所以他们的非技术方案的成长也越多。
技术挑战和工资待遇
从纯技术上的挑战来说,服务器端明显更大。服务器端开发动辄超过 10 人的团队,代码量稍微复杂一些就是接近百万行。而客户端一个平台的研发大多数也就在 5 人左右,代码量多在 10 万行以内。
但是,技术挑战大就表示工资待遇高吗?NO!市场价格是由供求关系来平衡的。虽然客户端的技术挑战小,但是基本上所有应届毕业生都想做服务器端开 发,所以没有人做客户端开发呀!于是很多公司被迫从培训机构招人,很多人刚刚培训了 3 个月,就可以拿非常高的工资。这一点和 Web
前端类似,牛逼的 Web 前端人才非常少,但是不影响这个领域稍微牛逼一点的人拿非常高的薪水。
另一方面,由于服务器端人才的饱和,也使得竞争变得非常激烈,除非你成为这个领域的顶级人才,否则从平均薪资来说,做客户端开发的同学应该和服务器端的同学类似。
其实我这篇文章故意写得很片面,目的就是想让各位应届生同学们能够更加辩证地看待互联网行业中的工作。与其什么都不懂傻傻地选择服务器端开发,倒不如做客户端开发更有前途。
我以上所说的,都是错的。
作者: @唐巧_boy【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
热点头条关注头条关注
24H热文一周话题本月最赞
讲师:26787人学习过
讲师:15451人学习过
讲师:58385人学习过
精选博文论坛热帖下载排行
20多年以来,《软件工程:实践者的研究方法》一书是最受学生和行业专业人员欢迎的软件工程指南。它在全面而系统、概括而清晰地介绍软件工程...
订阅51CTO邮刊

我要回帖

更多关于 软件要求ios9以上 的文章

 

随机推荐