你如何收费build设一个网站?
有人找我build立一个小企业的网站。 在定价方面,按照build立网站的要约提供什么协议?
我是否收取页数? 如果他们想要高级function(Flash,Ajax等),那么每小时的开发价格是多less? 如果我不知道要花多长时间呢? 有没有什么好的方法来看看类似的网站,以帮助确定是否将是一个20小时的工作或100小时的工作。
在确定网站开发工作的范围和定价时是否有任何标准模板?
这个问题与“build造房子需要多less钱”完全一样? 在这两种情况下,答案取决于客户想要的。 你可以build立一个“房子”less于100美元,特别是如果住在房子里的人有四条腿和一条尾巴。
在讨论成本之前,先了解一下业务需求。 客户对于“页面”的看法与您的想法截然不同。 (“你是说什么意思,你是在为我的购物车额外收费,而这个购物车会自动查询和更新我的库存,当我的供应不足时联系我的供应商,并发出一份调查问卷的感谢信呢?在一个页面!“)
如果企业不知道自己想要什么(而且会经常发生这种情况),那么他们会收取一天的时间来模拟许多不同的想法。 (你需要强调一个模拟的意思,很多人认为一旦显示一个页面,所有的工作就完成了。)
一旦你知道足够的信息达到目标 – 即使这不是网站的最终目标 – 然后你可以估计你的时间和精力。
我强烈推荐Steve McConnell撰写的Software Estimation:揭秘黑色艺术 。 祝你好运。
我的build议是,除非你确切地知道你需要写什么,并且让客户在范围内签字 ,否则不会引用。 如果他们改变主意,确保他们明白你的报价不再有效,并且会花费更多的钱。
根据需要,您可能想要坚持原始的HTML / CSS,利用CMS,甚至从头开始编写Web应用程序。
根据上述决定以及您以前使用这些技术的经验(如果有的话),您可以对每个function或所需页面进行分类,以便估计需要多长时间。 高估而不是低估。 添加样式和布局的开销,还有一些更多的部署和错误修复,并将其用作估计的基础。
例如,如果您被要求编写一个网站,其中包含5个相当静态的信息页面,10个客户需要更新的页面和两个function相当复杂的页面(例如,网点和服务计算器的映射),你可能会把它分解如下:
- 风格和布局开销:5天
- 静态页面x 5:每页1天= 5天
- 可编辑页面x 10:每页2天= 20天
- 复杂页面x 2:每页6天= 12天
- 部署和更改:3天
- 总计:45天
乘以小时费率,你很高兴,并有你的报价。
也就是说,如果你真的不知道事情要花多长时间,那么无论如何你都会提供一个球场评估。 尽你最大的努力来估计(尽可能地分解事情) ,提供一个引用,并且交叉你的手指,你没有严重低估它。 如果发生这种情况,请确保您从错误中学习。
更新:我偶然发现了devise隔间的博客文章,您可能也会发现它很有用。 在devise网站前询问客户的问题 。
每周结算周期收取 费率x小时 (这是我一直使用的)。
从我的回答到在自由网站开发中遇到的最常见的问题是什么?
可怜的支付结构 – 我每周都做一次,我每周都有一次,所以我希望每周都有一次付款。 这是一个完全自动化的东西(我用于项目的服务的一部分),我不确定这是否会超出这个范围,但是你真的想尽可能的接近这个。 你肯定知道你从第一个7-12天就得到了付款(这里有一个延迟,对于评论等)。 另外,如果一路上,客户在经济上出了问题,那么在几个星期内你肯定会发现,而不是几个月。 当然,你会尽早找出答案,但是如果出错,你的影响会很小。
这意味着您需要从一开始就提供价值 ,这是健康的。 与客户进行对话,重点是确定他们想要达成的主要目标,以及最佳的起点 。 这是基于你的客户的优先事项和你自己的知识,即使你不知道需要多less努力,你通常会有一个总体的想法,即不同的主要需求是多么复杂其他。
向他们解释,继续下去的最好方法就是把问题分解出来,并把重点放在一些能够为他们创造价值的function上。 build议他们在哪里集中注意力,并尽量保持其他function完全不在图片中 。
形成一个总体的想法,对于那些将在范围内的人员采取什么措施……只是详细说明你将在前两周/你需要估计和承诺的内容。 在进入第一周的细节时,使用任何偏差来了解整体偏差 – 使用这种调整后的总体估计值会增加(一点点)准确性。
如果他们不去购买前两周产品的价值和成本,通常最好走开(参见上面的链接中的其他人的答案 – 学会说不 )…它很有可能它会因客户错误的期望而结束。 不要让他们淡化所涉及的努力,如果你还想继续努力,就需要花费一些东西 – 让他们知道你会在第一个x的价格中打折x个小时/或x $周。
用你在第一个星期所学到的知识来指导你在前几个星期的前进方向。 保持与客户的持续沟通。 如果你和你的客户build立了信誉关系,那么他们就会更less关心估计,并且会更多地谈论下一步他们会得到什么。 确保提出任何你看到的麻烦 ,永远不要等到本周结束。
一定要记住,你会估计五个广泛的部分(尽可能less),更详细的几个星期, 我们正在谈论时间估计不是几天 。
我只是告诉你,我的公司是如何做的,因为它对我们有用:我们很高兴,我们的客户很高兴(据我们所知)。
对于非保留的工作,我们总是按小时收费。 无论我们在做什么types的工作(例如:WordPress皮肤与定制电子商务平台),我们都会收取相同的费用,因为我们觉得我们的时间值得。 在一些时间紧迫的项目中,我们每小时收取额外的费用,因为我们不得不推迟其他项目,这使得我们的业务盈利减less。 尽pipe如此,我们可以自行决定,去年只增加了一到两次。
到底什么时候开帐单要多less钱。 处理了各种各样的从母亲到大公司的客户,我可以告诉你,当你的账单会因客户而异。 对于中小型公司来说,在我们做任何工作之前,预付三分之一作为存款是有效的),一旦达到一些里程碑,则在中点的另一个三分之一,以及在完成和交付之后的最后三分之一。
这一点非常重要,特别是对于小公司,因为这样可以让他们免于担心每两周削减一次支票,这对于他们自己的客户和账单来说有时很难。 另外,考虑到小企业通常只有less数人,很less有专门的会计师。 这意味着,如果您构build频繁付款的结算方式,他们往往会迟到,拖延项目。 不太频繁的计费意味着开具发票less,这通常对您和客户都很好。
在计费方面,中型到大型企业有更多的select。 您可以按里程碑,双周或在交付时进行计费。 这真的归结于你和客户可以达成的共识。 较大的企业通常会有自己的发票系统,这可能会决定什么时候以及如何计费。 这听起来不像这种情况适用于你的情况,因为这似乎不是你的正常工作。
决定收费是最困难的部分。 其他人则引用霍夫斯塔特的法律 ,他们是正确的。 在你估算任务和总体项目时间的经验分享之前,很有可能你会一直低估。 有人build议把你的时间乘以2或3,但这可能有点过分。 我个人并不关注这个学派,因为我认为这对客户是不公平的,而且通常以收费为结束,但如果您必须使用乘数,则1.5可能更合适。 如果我不能确定一个具体的组件需要多长时间,我会在那里增加几个小时,但是我并不把整个项目视为一个巨大的未知数。
我们通常不会按页面数量收费,因为我们发现对于我们所做的大部分工作来说这是一个糟糕的指标。 经过一段时间的工作,我发现确定一个特定任务需要多less时间会更容易。 尝试将网站的区域分解为尽可能特定的模块。 这将更容易确定需要多长时间。 这绝不是一份完整的清单,而且会因客户的不同而有所不同,但关键领域包括:
- 数据库devise
- 楷模
- 查看
- 控制器
- HTML / CSS实现加上额外的时间来debuggingIE(有趣的是,但完全准确)
- JavaScript(如果项目是JavaScript重的,那么客户端会有额外但相似的区域)
- CMS /pipe理控制(如果适用)
- 内容input(这应该是从客户端提供的内容中复制和粘贴的,并且每页应该占用很长的时间)
对于需要大量实际编程或变化可能性较大的更复杂的开发项目,我们包含一个时间块,时间长达总项目时间的20%,用于质量保证和修订 。 这有几个好处。 首先,它保护你。 我们都知道,开发的越多,特别是对于大型,复杂的系统,您将不得不进行更多的debugging – 特别是如果您针对多个平台(例如:跨多个浏览器的CSS / JavaScript兼容性)。 其次,它使您的客户有适当程度的灵活性,可以在不修改现有合同的情况下要求进行小的更改。 这个第二个好处是有一个告诫,即一个消息不好的客户将会对此不利(见下面的段落),并且它允许你为你的客户提供应得的服务(他们正在付钱给你所有),并灵活地稍微移动规格(因为他们都转移),这使得你看起来更好,让他们开心。
教育你的客户总是很重要的,即使他们对你的服务types并不陌生。 客户的行为将与您通知他们的方式相当。 如果您不告诉他们关于您的stream程的任何信息,您打算如何计费,里程碑是什么,您打算与他们沟通的频率,作为次要修订的资格以及需要修改合同的内容,为什么要收费他们正在收取什么,你到底是什么,他们没有得到什么,等等,然后他们可以自由地期望你不能提供的东西。 这从来没有创造一个好的情况。 这对开发人员来说是令人沮丧的,而且会让你对客户很不好。 总是有合同,并且尽可能在合同中拼写出来。 它保护每个人。
这个话题已经有好几年了,这些只是更广泛和更重要的一点,但无论如何,我希望这是有帮助的。
过程如下:
1) 确定你在市场上的价值。 如果你对自己的技能有信心,有一个坚实的投资组合,并有经验的市场经验,那么你应该像律师一样收费。 做促销和广告等业务需要花费,您必须在结算中加以补偿。 如果你缺乏像律师那样创办公司和开立账单的信心,那么你还没有做好独立咨询的准备。 如果你像专业人士一样收费,你将被视为专业人士。 如果你像小孩一样收费,你会像小孩一样被对待。 如果我是一个自由职业的商业代理人,那么我的时间就是每小时150美元 ,这在很多不同的领域是相当标准的外部商业服务费率。 如果您是程序员或数据库架构师,则可以收取更多费用。 你必须记得作为自由球员你没有401K,健康保险,或其他公司的好处。
2) 通过书面合同启动每项工作。 这个合同必须定义如下:
2a)您的帐单费率。 除非需要旅行,否则不要将业务费用作为额外费用。 您的帐单费率应足够高以抵消任何业务费用。
2b)如果旅行费用存在,那么您需要写入合同,您将提供在标准账单之外发生的旅行相关费用的收据。 合同中必须有语言来定义是否有旅行,并且与旅行有关的费用将在您的标准账单之外向客户收取。
2c)在合同中增加一条明确定义的需求由客户签署的清单之前,应该说明不会进行工作。 要求的完成是他们所付出的,并表明你将要做的工作。 不要提供任何其他的工作,也不要做其他的工作。 如果你作为一个慈善机构,并提供额外的服务或超出要求工作,那么你还没有准备好自己的工作。
2d)定义可交付成果和任何其他外部要求。 你可能不会读人的思想。 如果客户想要一些特定的东西,那么他们会提供一些粗略的规格。
2e)包含您不会提供超出定义的书面要求的额外工作的语言。
2f)包括任何一方可以随时解散合同的语言。 说明保证金不会退还,但如果合同没有达到规定的标准,所有账单将退还。
2g) 让律师写下你的合同的语言,你需要审查和质疑这种语言的清晰度。 律师经常不会说人的语言,有时他们必须被带回地球。 如果客户不能理解你的合同,那么他们可能不会遵循它,你可能不会执行它。
3) 收取保证金。 一些客户认为他们有莱昂纳多和米开朗基罗合并的愿景,但是当他们的规格书中创造的作品没有达到他们的期望时,他们完全感到惊讶。 在这种情况下,客户可能会要求您在不收取额外费用的情况下完成工作。 你不是慈善机构 收取比您的账单费率高出两到三倍的固定入账率。 这是投资收入,以确保在客户完成项目之前,如果客户退出,您至less得到了一些东西,这往往是因为您拒绝免费提供工作。
4)如果对提供给您的说明书进行了工作,并且客户不满意,请向客户提交一份额外的合同,并将其称为变更附录 。 如果他们不喜欢这个结果,那么他们可以给你更多的钱去做更多的工作,或者他们可以继续提供工作。 你不是一个慈善机构,所以如果工作不在书面要求范围之外,就不要两次执行同样的工作。
5) 不要超出你的能力允许销售。 如果你已经写了一个月的JavaScript,不要期望卖掉你的服务,因为它能够完全基于JavaScript交互构build一个交互式的AJAX就绪网站。 如果你收取足够高的费用并企图欺骗你的客户,他们可能会起诉你。 如果需要额外的技能,则将项目交给其他人或聘请合伙人。
6) 直到所有要求都被明确定义之后,才能开始工作。 这可能需要几次会议和许多通信给客户。 跟踪这个时间,因为计划一个项目花费的时间是应该被计算的工作。 项目后期可能存在需要确定需求的开发依赖项。 在这种情况下,将项目分解成多个阶段,并为每个项目阶段制定一份需求清单。 同样,在需求被定义,写入和签名之前,不要执行任何工作。
7) 你没有义务要求每一个请求你服务的客户。 你可以毫无理由地把任何人都带走。 如果一个客户看起来不可靠或者你认为他们会浪费你的时间,那就不要去做他们的工作。 时间就是金钱,你不是一个慈善机构。
8)如果客户无休止地浪费你的时间,那么简单地解散合同,退还任何付费账单,然后走开。
9) 像律师那样收费,绝不提供报价。 只要计划和执行工作需要一个项目。 那个时间完全是相对于要求而言的,与客户的支票簿没有任何关系。 告诉客户您的账单费率,如果他们已经死在报价上,那么您可以给他们一个初步的时间估计,他们可以自己计算一个报价。 只要记住告诉他们,估计不是反映报价,甚至把这种语言放入你的合同。
10) 始终提供最优质的工作,而不是最快的工作。 这就是为什么你要像专业人士一样收费。 如果你的工作比其他一些可比较的顾问花费的时间更长一些,那就简单地解释一下你的服务在可访问性法则,可调整特性,效率,安全性等方面的价值。 通过将这些特征的重要性明确地解释为需求的定义,您可以改变客户的计划决策,以保证项目质量。
11) 客户是老板,支付账单。 即使你试图说出来,他们也可能做出一个非常糟糕的决定。 不要争吵。 简单地做你的工作,并进入下一个项目。 如果你不能听从这个build议,那么你还没有做好独立顾问的准备。
如果可能的话,我肯定会按小时工作收费。 你不需要把很多时间放在单个页面上, 所以根据客户的要求,他们可以得到便宜(即你使用更less的时间),或更好,更昂贵(你帐单更多的小时)。
尝试在两个星期的块充电。 承诺在这两周内交付一定数量的function,在两周结束时,您将有机会重新评估情况并根据需要改变方向。 客户在两周之内从不缺货,客户可以在两周后获得一些有用的信息,并且可以改变他们想要做的事情,而无需担心范围的变化。
我通常所做的只是按小时收费,按照我估计的时间完成工作。
那么我通常会在1-2个星期的时间内完成工作(取决于工作的复杂程度),因为我总是低估所需的时间。 即使考虑到我估计的很低(霍夫斯塔特定律),我通常最终估计的很低。
您可以通过多种方式来实现这一点,具体取决于客户,以及他们对自己的需求有多确定。 我build议给他们一些select:
- 固定成本网站 – 基于特定页数和标准devise。 你必须强调,这是一个不太灵活的select,但一旦完成,他们可以改变为小时率。
- 自定义模板 – 基于小时费率,然后是每个页面的固定成本。
- **自定义网站 – 基于小时费率。
如果你每小时工作一次,他们需要一些准则价格,然后试着把它分解成一些工作项目,并估计每件物品的时间和成本:
- 基本的模板devise – 4小时 – $ 200
- CMS设置 – 2小时 – $ 100
- 联系和关于页面 – 1小时 – $ 50
- 新闻页面 – 1小时 – $ 50
- 总成本$ 400 @ $ 50每小时
你也应该每小时更换一次费用。
有很多不同的方法来估计上述时间。 最好的衡量标准是以前的项目将花费多长时间的经验,但如果这是你第一次做这个,那么这是不可能的。 如果你有另一个网页devise的朋友可以帮你validation你的号码,那么这也是有用的。 希望有所帮助。
每小时通常对您来说风险较低,因为滑点和function蠕变因此成为客户的问题。
另一方面,与客户谈判固定成本项目通常要容易得多:对他们的风险要低得多,而且他们不需要考虑如何确定自己是否真的在工作,只是回答StackOverflow问题:-P
如果您必须与其他人竞争项目,固定成本往往会更具竞争力,但风险更大。 只要您估计完成该项目,您最终可能会花费十倍的时间…
虽然固定成本确实对您有一个主要优势:灵活性。 如果这个项目只需要1个小时,而且你花费了10个小时的固定费用呢? 你已经赚了9个小时,在闲暇时间浏览StackOverflow。 或者换一种说法:你不再有任何责任来解释你的动作或行为,或logging你的工作时间,或者不要在工作时间内用Google或其他任何方式与人交谈。 我觉得这很好
至于“每页”或其他什么…更一般地说,我会尽量把这个项目分成几个小块,在每个点上都采取具体的技术上客观的措施,让客户签字,并为你支付这些块完成它们。 这样,对于您和客户来说,几乎没有什么惊喜。 客户得到一个温暖和模糊的感觉,你正在做的事情,并及时进展:他/她可以看到,这是相当透明的。 你轮到你也得到了类似的保证,客户不只是在代码的末尾跑掉,因为客户在这个过程中付出的代价是很小的。 最后,如果你发现自己已经高估或低估了时间,那么稍后你可以通过与客户的谈判来修改它们,但这种情况对你们来说是相当透明的。 这不像你工作几个月,然后意识到实际上将需要几年…
概要:
- 固定成本风险较高,但给你更多的灵活性,往往更具竞争力
- 每小时是低风险的,但是并不令人兴奋:编码没有直接的回报,而且你有义务制定时间表,除了那些工作之外什么都不做,等等
- 固定成本,保持低风险,客户高兴,把项目分成小块,让客户看到工作正在进行,意味着您可以随时向客户开账单,而不是在客户提交巨额账单最后,以及与此相关的压力和风险
对于第一个版本,我估计要花费的小时数/天数,然后根据我的小时/天费率*收取一个固定的价格。
我们的照片和托pipe是直接向客户收取的,任何对商定的第一个版本的更改都按我的小时收费。
作为一名自由撰稿人,如果可能的话,我还会每周/每两周一次地收取费用,不仅可以提前获得资金,还可以集中我的思想和客户。
客户总是会试图摆脱你,所以你必须严格要求什么在第一个build设和什么不是。
*(然后我的项目经理/妻子乘以3)。严重的是,开发人员在预测需要多长时间时会感到非常不愉快(另请参阅已经引用的霍夫斯塔德法则 )
以下是我通常遵循的步骤:
- 列出项目包括的各种任务
- 评估每个任务要花费多less个小时
- 总结小时,并可能添加或删除一些(“H”)
- 想一个可接受的小时率(“R”)
在这一点上,你可以看到你应该问一个问题:H * R
但是这个价格不一定是你要问的价格。 你可能会想要玩R(上或下),这取决于你的客户的财富,他是朋友的事实,你的竞争对手有多less要求,以及你必须考虑的任何参数。
黄金法则:如果你知道你可以完成一个良好的质量水平的工作,不要害怕问(看起来像你喜欢)很多。
我一直非常乐意花费我的成本。 我通常把我的费用和我要收费的电子表格放在一起。 它遵循的一般规则是:
我的一般规则
- 如果您有要完成的工作的详细function说明 ,我可以免费给您一个估计,我们可以就该function说明中包含的内容(以及仅包含的内容)就定价达成一致。
- 如果你没有function规范或者devise,我可以把我的平时小时费(我有时候会放弃)一起放在一起,然后我们就可以去看它(见#1)。
- 如果你不能坚持一个function规范,或者在原始开发完成之后工作正在进行,那么这是一个小时的工作,简单明了。
除此之外,做这项工作所需要的技能水平也要计入定价。 我只是build立一个ASP.Net应用程序? 或者是MVC? 它有没有Flash开发? 组合? 这是一个非常短的合同吗? 这些东西以每小时几美元的价格提高或降低价格。
将所有这些放在电子表格中,并向客户解释所有费用以及为什么要收费,这也是一个非常好的主意。 一定要包括硬件和软件使用的东西,以便他们明白,你也有你的开销。 有些客户似乎不明白这一点。
最重要的是,把自己放在自己的鞋子里。 我们都雇佣了一个水pipe工或者电工一两次,拿了一张账单,并且想:“这个费用是多less?”…所以,对于你的账单,你可以直截了当地透明,你会得到重复业务 。
还有一件事:
在为固定价格项目工作时,务必写下并签署合同! 如果你愿意,你可以制定一个付款时间表,你甚至可以尝试收集前台,但最重要的是,如果客户退出,合同是唯一一个可以为你的辛勤工作赚钱的方法。 这不会冒犯他们,他们会得到它。
你应该做的第一件事就是制定一份工作说明文件,详细说明你将为你的客户做什么,你将收取多less费用,暂定的工作时间表和付款时间表。 你可以给你的客户口头上的估计,例如“应该只需要大约25小时的工作,我每小时收费50美元,所以1250美元”,但是要确保你回家,计算并增加25%的时间你的估计。
在制定工作提案声明时,有一些事情需要考虑。
- 认真对待。 你正在起草你和你的客户之间的合同。 它里面不需要任何法律术语,但要确保它是由你正在为之工作的人签署的。 你想得到报酬,不是吗?
- 在做实际的工作估计时,确保在任何时候您应该花费debugging,设置Web服务器,部署和数据库迁移。 由于你习惯于使用LAMP软件,所以你可能会认为这些东西是理所当然的,但是如果你的客户想要在Windows上运行这个猪呢?
- 清楚你在文档里面的工作。 如果您声明您的Web应用程序将在LAMP平台上运行,稍后他们会告诉您需要在SQL Server上运行Windows,那么您将需要做更多的工作并为其收费。
- 确保里程碑完成后收到付款。 您可能需要先收取25%的费用,然后在第一个里程碑之后再收取25%的费用 ,最后在项目完成后剩下的50%的费用 。 这些数字是多余的,完全取决于你。
- 安装软件来跟踪您的工作时间,以便在您实际使用软件时显示您的客户。 我个人会提出一些与Redmine类似的build议,因为您也可以打印出testing中的错误报告。
- 总是总是把时间委托给SOW进行testing和收费 。
- 最后但同样重要的是,确保工作说明文件是由双方 签署的。
我希望这能帮助你一点点。 如果你想每小时收费,这是你的。 我通常所做的是估计它将要花费的小时数,把它放在SOW里面,然后把一个单一的价格反映出我以前接受的小时工资。
祝你好运!
这里有很多好东西,但主要来自风险限制POV。 So at the risk of being both academic and progressive, I'd like to provide something different by highlighting the phenomenon of the "relational contract" which is easier to find in peer-reviewed economics journals than elsewhere, but was apparently used in the expansion of London's Heathrow Airport.
Instead of defining what is to be delivered, a relational contract defines HOW the relationship or collaboration is to proceed, explicitly including things like releasing work in stages and periodic reflection points (where all parties "settle up" and either party can then exit the relationship if unhappy with the progress).
This is also been talked about by Lean Software Engineering evangelist Mary Poppendieck; here is a slidedeck of her's on "agile" contracts.
Relational contracts are supposed to get both parties pulling in the same direction and of course engender trust, which, ultimately, is the best and most productive partnership that a client and consultant can enjoy.
[Update] See here for how New Bamboo do their contracts (I thought this was pretty cool).
I would either determine what your normal hourly rate would be and use that, or discuss the client's set of needs and determine what an appropriate "flat" rate would be. Don't go the route of charging per page.
Personally if it were me I would determine the "scope of work" for the project and give it a flat rate, but inform the client that the rate can change if (when?) they decide to change things.
如果你不了解要求,就不可能做出估价。 首先找出他们真正想要的东西,然后估计需要多less时间,然后根据这个数量给你配额。
提示:不要给整个项目固定的价格 – 这意味着它永远不会完成,因为客户总是会想出一些东西来解决,你最终会做“免费”的东西。 去过也做过。
而是给第一个版本的固定价格,然后每小时收取他们想要做的任何修改。
根据精神紧张和你需要做的工作收取费用。 对于一些网页,可能需要更多的时间,但我们不会有太大的压力。 同样的,对于其他一些人来说,你需要努力工作,但是时间不长。 所以当你收取工作时,你必须给予两者的权重。
大多数客户支付小时,如果你不喜欢它,那么你得到了一个项目的代价意味着大项目给你大钱和小项目给你小钱
- java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer
- Python PIL:如何将PNG图像写入string