什么是Amazon Web Services:代码字节
在Webpack中启用回退到Gzip的Brotli压缩
将Django与React前端融合
计划在2017年完成?
适用于非编码人员的Python:第三部分,条件只是说明
使用Webpack缩小
项目成功因素(已更新)
项目成功因素(已更新)

จากการทำสำรวจโดยกลุ่มสแตนดิชพบว่า… ปัจจัยสามอันดับแรกยังคงเป็นเรื่องของคนล้วนๆเหมือนเดิมครับไม่มีอะไรเกี่ยวกับเทคโนโลยีหรือรูปแบบกระบวนการทำงานมาเจือปน ามีคำถามจากเบื้องบนมาว่า…ทำอย่างไรถึงจะทำให้โปรเจกต์รเจกต์นี้สำเร็จ? เราอ้างถึงข้อมูลชุดนี้ได้เลย เราต้องการการสนับสนุนอย่างเต็มที่จากกลุ่มผู้บรกกลุ่มผู้บาร เราต้องการทีมงานที่มีวุฒิภาวะรวมถึงสามัคคีและทำงานร่วมกันได้ เราต้องการโอกาสที่จะเข้าถึงตัวผู้ใช้หรือผู้ซื้อโดยตรงอย่างต่อเนื่อง เทคโนโลยียังไม่สำคัญเท่าลักษณะของโปรดักท์ยังไม่สำคัญเท่าและแน่นอนรูปแบบการทำงานก็ยังไม่สำคัญเท่า คำอธิบายเพิ่มเติมครับ 高管赞助商 — 赞助商赞助商 情绪成熟度 —ความสามารถในการทำงานร่วมกันได้ของคนในกลุ่มหนกลุ่มหรือในองค์กร 用户参与 — —ารมีส่วนร่วมในโปรเจกต์ของผู้ใช้ตั้งแต่การเก็บรวบรวมข้อมูลการให้ฟีดแบคการรีวิวผลงานอย่างต่อเนื่อง 优化 —การมีประสิทธิภาพในการสร้างประโยชน์สูงสุดให้เกิดขึ้นจากการรวมกันของงานชิ้นเล็กๆในแต่ละโปรเจกต์ 熟练的资源 —ความสามารถทักษะและประสบการณ์ทั้งในเชิงเทคนิคและอารมณ์ของสมาชิกในกลุ่มหรือในองค์กร 标准体系结构 —การมีมาตรฐานในการสร้างสถร 敏捷过程 —คนในกลุ่มมีความเข้าใจเรื่องอะไจล์ดีเพียงพอที่จะประยุกต์ใช้ให้เข้ากับรูปแบบและสถานการณ์แต่ละประเภท 适度的执行力ฟีเจอร์ที่ยุ่งยากและซับซ้อนเกินไป 项目管理专业知识 — 明确的业务目标 — คิดและเขียนคือสิ่งที่ผมชอสิ่งที่ผมชบนคือสิ่งที่ผมรักเพราะแบบนี้ทุกวันผมเขียนเพื่อถ่ายทอดเรื่องราวจากชีวิตจริงจากประสบการณ์จากแนวคิดจากอนาคตที่ดีผมมองเห็นและทุกอย่างที่ผมประยุกต์ใช้เพื่อสร้างให้ อินเท็ ติก เป็นบ้านที่น่าอยู่บ้านที่เป็นจุดเริ่มต้นของการเปลี่ยนแปลงเล็กๆที่สร้างความแตกต่างในสังคมได้—มันน่าภูมิใจที่ผมรู้ว่า…่ นเดียวที่อยากเห็นการพัฒนา🙂 Inthentic在 Facebook上 | Inthentic在 Twitter上 | 在 Instagram上 狂热

API到底是什么
API到底是什么

我们中有些人会遇到或听说过这个缩写API,我记得第一次听说它是在一个新兵训练营,当时我被告知要构建一个可以使用API​​的Web应用程序,这真是太糟糕了是API吗? 在本文中,我们将讨论以下内容: 什么是API 为什么要使用API 好,下雨吧。 什么是API? API( 应用程序编程接口)是用于构建应用程序软件的一组子例程定义,协议和工具。 -维基百科 我想这听起来更令人困惑,好吧,别忘了我所说的“ 维基百科标准”这些大话,把API看作是使者,不要让它变得更有趣,一个披萨小屋(比萨公司),每个人都喜欢披萨吧? 我们拿起电话,打电话给披萨小屋,订购我们想要的披萨数量(即发送请求)。 披萨屋接受我们的订单,然后将比萨饼发送到我们的地址。 我知道我们大多数人都想知道披萨小屋如何准备披萨并按时交货? 事实与我们无关)。 从字面上看,API是如何工作的。 API允许软件(应用程序)彼此对话,而无需用户干预。 当我们向披萨小屋下订单时,我们给了他们地址,披萨小屋的送货员如何找到我们不知道的地址,并确保我们不希望对此细节感到无聊。 为什么要使用API 假设每个人都必须去披萨小屋(公司)去拿披萨,没有送货员,没有服务员,没有订单安排。 无法想象那会是多么的混乱。 这将是耗时且压力大的。 不用去披萨小屋,我们想要披萨。 必胜客使它变得容易,并将其发送到我们方便的地址,这就是API的工作原理。 现在让我们说我们要构建一个显示天气报告,区域,湿度,温度,时间和日期的应用程序。 我们只可以分配一个静态数据,它永远不会改变,但是我们都知道天气每次都在变化。 所以问题是我们如何获取数据更改? 对我们来说幸运的是,我们有很多Web服务(气象报告的提供者),我们可以从中获取这些数据,而不必安装全世界的传感器是否只是为我们的简单应用程序获取数据。 我们将通过API终结点向他们的服务器发送GET请求,就像我们从披萨小屋订购披萨一样。 服务器以“ JSON”格式响应我们的请求。 就像披萨送货员送我们的披萨一样。 API可以做很多事情,但是为了保持简单,我们将在本文中介绍。 谢谢阅读。 有关API的更多信息,请访问Biodun Chris的《工作原理》或API简介。

如何在软件评估方面变得更好(第1部分)
如何在软件评估方面变得更好(第1部分)

就像鸡先于蛋(来吧,您知道我是对的)一样,在每个软件开发项目前都进行了估算。 实际上,很大程度上取决于估算,在很多情况下,这是否是一个项目的决定因素。 我希望您了解我的工作方向-估算非常重要。 在Code Runners,我们最近为年轻的开发人员举办了一个小型内部研讨会,专门从事估算工作。 我们意识到,项目成功的很大一部分取决于正确地开始工作,管理团队和客户的期望。 这就是我们讨论的内容。 为什么需要估算? 最明显的原因是为该项目的规模,成本和日期提供一个数量级。 没有客户会以“ 何时 ”和“ 无关紧要 ”的预算为您提供他们想要的东西的广泛描述。 您需要能够测量的具体数字。 这实际上可以应用于任何事物。 您需要可以量化的数据,并据此做出明智的决策。 进行合理的估算将使您能够决定什么是合理的投资。 估算越详细,就越有利于您权衡预算和/或时间而对各个功能进行权衡。 在内部,准确的估算可以为您提供有关团队速度以及一次迭代可以完成多少工作量的信息。 它适合敏捷环境,使您可以通过了解可以完成和释放多少来将开发划分为较小的间隔。 为什么很难估算? 根据定义,“估计”是根据个人判断对某物的价值或金额进行的粗略计算。 关于该术语的所有内容都传达了不准确和“给予或采取”手势的信息。 如此难做就不足为奇了。 由于没有进行深入的业务分析,考虑到客户的需求通常不明确,因此估算项目建议就像是在暗中摸索。 如果需要引入的技术不熟悉,估计会变得越来越困难。 新技术并不意味着全新的编程语言,但是即使是新的框架或库也可能导致无法想象的问题,尤其是当所涉及的技术是预发行版本时,该版本仍然存在一些隐藏的错误和局限性。 最后,估计是受个人意见和经验约束的,这意味着单独的个人可能会基于他们的专业意见做出不同的估计。 一旦程序员尝试估计其他团队成员的任务,这便成为问题。 甚至在某些情况下,个人自尊心也无法进行准确的估算-高级开发人员可能不想承认某个功能会花费太长时间。 估算中应包括的活动。 为了准确预测团队完成任务所需的时间,您需要考虑流程中的所有内容。 根据我们的经验,活动可以大致归纳为7类。 规划与分析 这是预开发阶段,其中包括业务分析师的参与(无论是您自己还是客户的参与)。 可以在所谓的“ 修饰会议 ”中进行组织,在该会议中,整个团队都在讨论任务的不同细节,并处理不确定性。 在此阶段,重要的是要了解为什么需要该功能以及需要使用该功能完成什么。 设计和开发 非常简单。 该阶段首先在开发人员团队中讨论诸如体系结构和代码设计之类的主题。 然后,它继续实际编码。 测试中 并非总是必要的,但取决于客户和特定项目。 它可以包括在开发环境中的单元测试,集成测试,回归测试和/或手动测试。 代码审查和集成 同样,并非总是必需的,但总体来说很好。 通过在过程中增加另一双眼睛,可以大大减少错误或其他类型的代码缺陷。 在此阶段,您需要考虑时间进行代码审查本身以及审查之后的可能更改。 接下来是集成到主分支和部署到开发。 文献资料 只要适用,就需要适当维护有用的文档。 将其视为对未来的投资。 […]

Matt的花絮#9-注意JSON反序列化
Matt的花絮#9-注意JSON反序列化

上周我正在休假,并发布了一些休息时间和从不同角度看事情的好处。 这次,我想警告您有关JSON反序列化的问题。 Jackson是Java中使用最广泛的JSON反序列化器之一。 这个功能强大的库提供了许多工具,可帮助您在Java和JSON之间高效转换,并支持高级操作,例如处理双向引用,复杂的动态类型映射等! Jackson支持“严格解析模式”,如果POJO与JSON不完全匹配,它将在解析过程中引发异常。 这可以通过在ObjectMapper上设置一个标志来实现: 这可能是一个非常有用的工具,我通常对其进行设置,以便它在调试版本中使用严格的解析,因此我可以轻松地检测后端何时更改了其网络响应。 但是,使用它可以产生一些有趣的行为。 例如,考虑以下POJO: 不难想象, someUnusedField只能在此程序包中使用(或根本不使用)。 这将导致此行旁边出现棉绒警告,并且Android Studio将为您提供“快速修复”提示,以保护或完全删除此字段包。 如果像我一样鄙视棉绒警告,您可能会想接受Android Studio的建议并将其“修复”。 但是,接下来可能遇到的是应用程序的随机崩溃-但仅在某些情况下。 发生这种可变行为的原因是FAIL_ON_UNKNOWN_PROPERTIES标志,只能为调试版本启用。 在其基本操作模式下,Jackson要求字段为public *,以便正确地对其进行序列化/反序列化。 因此,如果可见性受到程序包保护,则意味着它不能将该字段从JSON反序列化为POJO —并且,当设置了FAIL_ON_UNKNOWN_PROPERTIES标志时,Jackson在POJO中找不到someUnusedField并引发异常。 我们该如何解决? 一种选择当然是什么也不做,但是棉绒警告仍会出现在您的代码中。 我已经养成了在所有数据类中添加@SuppressWarnings( “WeakerAccess” )批注的习惯,以防止我自己(或其他开发人员)更改JSON中字段的可见性以修复棉绒警告。 这样做的好处是,在未使用属性时仍会显示警告。 但是,处理未使用的属性的正确方法是什么? 仅将其从POJO中删除会导致在调试模式下运行时应用程序崩溃。 我们可以禁用FAIL_ON_UNKNOWN_PROPERTIES标志,但是它不再警告您后端有JSON更改。 您可以添加@SuppressWarnings("unused")批注,但在这种情况下,我发现它的用处不大了-然后,Android Studio将不再告诉您该字段是否未使用。 相反,我的首选是使用@JsonIgnoreProperties批注,如下所示: 这样可以防止该字段实际存在于您的POJO中(因为您没有使用它),这将使您保持严格的解析,以便检测任何新添加/删除的字段,并能够检测何时不再使用a Android Studio中的特定字段。 您可能已经注意到我在本文前面的“ public ”一词旁边添加了星号-这是因为杰克逊实际上可以通过多种方式推断是否应该对属性进行序列化/反序列化:https://www.baeldung.com/杰克逊字段可序列化或不可序列化 而且,这是一些有关处理未知属性的其他文档:https://www.baeldung.com/jackson-deserialize-json-unknown-properties 您是否喜欢以其他方式处理JSON解析? 在下面发表评论! 并且,如果您有兴趣收到有关未来花絮的通知,请在Medium上关注我。 此消息最初于2018年2月2日发送。

将Vuex添加到Vue
将Vuex添加到Vue

Vanilla Vue是一个很棒的库,您可以完成很多工作。 但是,我见过的最常见的错误之一是那些不及早采用Vuex的人,后来不得不弄清楚如何在Vuex中进行互换。 从Vuex开始并不像听起来那样困难,并且如果您认为可能需要它,则应该使用它。 以下是一些快速警告标志,您应该已经使用Vuex: 您正在使用.$parent或.$root从子级访问数据属性。 您几乎将整个数据对象传递给子组件。 您避免使用组件并将页面构建为一个大型Vue实例。 您会发现您正在监视语句中实现许多客户端业务逻辑。 您正在考虑(或已经制造)全球事件总线。 这并不是说不可能以这种方式构建事物,它比以前要脆弱得多。 让我们快速地将一个简单的示例切换到Vuex。 这是一个带有文本字段的简单示例。 让我们稍微复杂一点,并使用Underscore.js的反跳功能添加反跳功能。 通过所有这些步骤,HTML完全相同: 在这里,我已将field更改为具有getter和setter的计算属性,并移动了将实际值存储到actualField 。 (实际上,保持数据属性的一致性并更改HTML可能更有意义,但这只是一个示例。) 此步骤的关键之处在于HTML不再直接访问数据的存储位置; 它根本不引用actualField 。 这意味着我们可以控制元素中的更改如何被传递到actualField 。 现在让我们转到Vuex: 我创建了一个具有field属性的简单Vuex Store,您可以在计算的getter中看到可以访问此值this.$store.state.field 。 我也创建了函数:变异updateField和动作updateField ,并且我更改了计算的setter以调度动作updateField 。 Vuex需要动作和突变。 Vue组件可以使用this.$store.dispatch来执行操作-它们充当Vuex商店的“接口”,并定义可以使商店执行的操作-因此命名为“ actions”。 在使用commit()动作中调用了变异。 突变会真正改变Vuex存储库的状态,并且意味着它们是原子的- 突变完成后,您在突变中所做的任何更改都不会传播到Vue。 我倾向于认为变异与数据库事务类似,即它应该尽可能的小而简单。 另一方面,动作应包含大部分复杂性。 动作应该具有可映射到用户意图的漂亮名称,而变异应根据它们对状态所做的操作来命名。 动作是您的git瓷器。 突变是您的git管道。 最后,我可以将同一Vuex存储库用于任何数量的组件。 使用此存储的任何其他组件都可以引用this.$store.state.field 。 我们已经将存储在何处的数据分离出来,可以在各个组件之间轻松共享。

我对Electron和Vue的总体经验
我对Electron和Vue的总体经验

在上周,我一直在为Turing School of Software and Design开发一个Electron和Vue应用程序。 总的来说,我认为这非常成功,尽管我和我的伴侣在此过程中确实遇到了一些障碍。 这是我们两个人第一次使用Electron或Vue,因此在我们要尝试的一个可行的应用程序来完成它的过程中,还有很多东西需要学习。 值得庆幸的是,在本周中,我们开设了一些课程,介绍如何使用香草javascript构建基本的Electron markdown应用程序,并吸收了这些概念背后的思想,并在我们的设置中利用了其中的一些思想。 Vue在构建应用程序时最终学习了自己。 我们最终使用Electron-Vue-CLI启动了应用程序,事实证明,这使我们受益匪浅,因为我们不知道如何构建应用程序,它还为我们提供了测试文件和许多预安装的npm脚本。 。 这为我们节省了很多时间,我们利用了学习Vue和Electron中的其他功能。 总的来说Vue是一种学习我们没有经验的语言的绝佳选择,尽管我确实想知道我们是否可以使用像React这样的已知知识并花更多时间与Electron一起玩。 否则,我们在Vue方面的经验会令人愉快,并且选择使用CLI使得学习起来更加容易。 我们还利用menuBar节点模块来帮助我们创建本机菜单栏应用程序并使用本机通知,因此我们的提醒应用程序实际上使您想起了您想要的事情。 我们还能够合并SQLite3来持久化数据。 我们确实有一些想法想要将其包含到应用程序中,而我们没有足够的时间来弄清楚。 我们最终只有一个窗口,您可以在其中添加提醒并查看所有提醒,我们希望可以有一个按钮来打开一个新窗口以添加提醒,而主窗口仅显示该提醒。提醒列表。 我们希望能够执行的另一个功能是编辑提醒,以便您可以更新标题或日期以及可以将提醒标记为完成,而不必删除提醒,以便将关闭通知。 这是我们想念拥有的好处的两个更大的功能。 总的来说,我确实认为在Electron和Vue中创建提醒应用程序是一个不错的决定,并且会再次这样做。 现在,我对Vue和Electron的工作原理有了更多的了解,我想如果我们重新考虑这个项目,我们可以完成更多工作,并添加一些我们错过的功能。 总的来说,尽管我对该项目感到非常满意,因为它具有我们想要的所有基本功能,并且在此过程中我们学习了两个新框架。 如果有人问我,我绝对会建议尝试Electron和Vue,即使您想将学习内容分解成一个或另一个。

我对Vue的看法
我对Vue的看法

到现在已经三周了,我一直在学习VueJs,这是一个用于管理…的现代渐进式Javascript框架。 与许多其他视图(而不是前端)框架非常相似,它是基于组件的,并且仅管理视图并且仅执行此操作。 因此,对于诸如路由,AJAX请求,缓存等其他前端事物,您将需要为该事物连接另一个库,每个附加功能通常需要一个库。 与其他版本相比,这很可能使VueJs成为了一个超级轻量级​​且快速的Javascript框架。 将它添加到项目中也很简单,只需将4到5行代码添加到您的项目中,但是当然要实际使用Vue,将需要很多行,而不是轻量级的。 幸运的是,我有动手学习任何东西的方法,而且我一直想在Movie领域中构建一些东西,因为我在学习Vue,并且看电影是有意义的,IDK! 因此,我走了出去,开始制作muviX,但有一个标语“ All-Things-Movie”。 在我的脑海中,我一直想像一个想象中的摩天大楼屋顶上的精英发布会,好莱坞演员都打扮得整整齐齐,手里拿着酒杯。 Aaaanyway…。 这就是muviX的样子。 我是一个后端开发人员,我可能知道前端的知识,但是我不会赤手空拳地建立接口。 对于UI,我使用了Material Design Lite(仪表板模板)来进行具体说明。 MDL有很多很棒的模板开始使用,请在此处查看。 对于实际的内容,这是一个服务的API混搭,包括Guidebox,TheMovieDb和非官方的IMDb API(例如OMDb)。 但是这篇文章是关于Vue的,所以让我们进入我想谈论的实际话题。 VueJs-0.x,1.x和2.x 因此,Vue在生存过程中经历了许多变化,就像它必须生长的任何正常生物一样。 但是,在它的发展中,我相信它突然受到同伴压力的打击,不得不适应趋势并具有其他Java脚本视图框架中的功能,您可以检查Vue与其他框架的比较。 令人震惊的是,它还使用了像ReactJS这样的Virtual-DOM。 我从2017年1月开始使用该框架,然后直接使用VueJs 2.0。 Vue的优点在于保持了它易于学习的特性,我不需要学习以前的版本就可以理解它。 来自Angular2和一点ReactJs的背景,我很快就起身学习,这是因为我了解很多功能。 因此,我没有从其文档中学习Vue,而是尝试查找有关Angular2或React中等效功能的文档。 顺便说一句,这是学习任何东西的最糟糕的方法,但对我来说却奏效了。 组件,组件,组件 我喜欢它也是基于组件的事实,这意味着代码可重复使用,最重要的是,组件内的“关注点分离”。 从VueJs 2.0开始,您可以将.vue文件中的组件包含在其中,然后使用模块绑定器Webpack将其编译成一个app.js文件。 然后,使用标记将这个app.js文件包含在您的.html文件中,就像包含任何JavaScript文件一样。 如果您使用的是Vue-CLI,Vue-CLI是用于搭建VueJs项目的简单CLI应用程序。 如果已经运行NodeJ和npm,则可以通过运行“ npm install -g vue-cli”进行安装。 使用运行时编译器很棒,因为它允许您执行诸如编写ES6代码的操作,并包含一个linter来将ES6代码转换为ES5或更低版本,或者运行所有开发到生产任务,例如使用sw-precache或sw -toolbox(我当前的最爱),所有命令只有一个,在这种情况下,它将是“ npm run build”。 任何基于组件的结构的真正优点在于,您可以将应用程序的一部分的html,JavaScript和css放在一个文件或文件夹中(如果您确实想让事情整洁)。 这意味着您在一个文件中具有该特定节的行为,而不会与许多其他行为混为一谈。 路由和AJAX请求 作为一个视图框架,Vue不在提供路由和HTTP请求功能的功能中,但是将第三方库集成起来非常容易。 对于路由,我选择了Vue-router,对吗? 是的 好吧,这主要是因为当已经推荐一个路由库时,我并没有真正寻找另一个路由库,您应该知道它几乎与实际的VueJs框架具有相同的版本号,因此对于VueJS@2.x,有Vue-Router @ 2 。X。 […]