带帖子发布:我们2019年的结果


©拉尔夫·麦夸里(Ralph McQuarrie)

我们将开始打开香槟,扔山沙拉和剥橘子。 同时,所有这些令人愉快的琐事还没有开始,让我们总结一下过去一年的博客。 因此,我们的年度帖子包含获得最多好处和评论的帖子,它们被添加到收藏夹和视图中-对于那些未包含在第一个简短列表中的人。

评分冠军


我从痛苦的经验(超过30年的软件开发经验)中学到了什么AloneCoder


这是我30多年来在软件开发中学到的东西的愤世嫉俗的临床作品集。 我再说一遍,有些事情很愤世嫉俗,其余的是在不同工作地点进行长时间观察的结果。

我们如何从山洞Qubique发送短信


有一次,我的同事彼得建议参加一个有趣的项目-创建一个“对洞穴学家的洞穴电话”,因为他对洞穴学很感兴趣。 卡弗有这样一个问题:地下无线通信实际上是行不通的。 可接受的无线电接收仅在视线范围内是可能的,但是值得几转-并且没有连接。 您需要在整个山洞之间进行沟通,山洞的长度可能长达数公里。 当然,移动通信并没有赶上那里,这意味着在洞穴中自主工作数周的团体与外界没有任何联系。

在2018年8月,彼得参加了一个相当复杂和危险的洞穴探险。 对于这次探险,我们决定开发一种新设备,以解决将自主工作小组与外界联系起来的问题。

自己动手的木匠工作室:期望与现实zipp3r


为什么根本没有木工车间? 我没有确切的答案。 如果您只想用木头做些事,那就是可以参加的讲习班,付钱租用机器和工作场所,然后在那里做所有的事情。 不必拥有自己的房屋和设备。 如果您想从事木工业务,那么竞争会很激烈,很难找到自己的利基市场。

我编程生涯中最可耻的错误(当前)AloneCoder


俗话说,如果您不对旧代码感到羞耻,那么您就不会成长为一名程序员-我同意这一观点。 我40多年前开始从事娱乐节目的编程,而30年前开始从事娱乐行业的编程,所以我犯了很多错误。 作为计算机科学教授,我教我的学生如何从错误中学习-他们的错误,我的错误以及陌生人。 我认为是时候谈论我的错误了,以免失去谦虚。 我希望有人会觉得有用。

使用神经网络还原照片kitashov


我在Mail.ru Group的计算机视觉团队中担任研究程序员。 在今年的“胜利纪念日”中,我们决定进行一个军事照片修复项目。 什么是照片恢复? 它包括三个阶段:

  • 我们发现所有图像缺陷:断裂,磨损,破洞;
  • 根据缺陷周围的像素值对发现的缺陷进行涂漆;
  • 使图像着色。

在本文中,我将详细介绍恢复的每个阶段,并告诉您如何以及在何处获取数据,我们学到了什么网络,我们做了什么,我们踩了什么耙子。

泛型和元编程模型:Go,Rust,Swift,D等AloneCoder


在某些编程领域,通常希望编写一种可以与不同类型的元素一起使用的数据结构或算法。 例如,仅需要比较功能的泛型列表或排序算法。 提供了多种语言来解决此问题的各种方式:从简单地向程序员指出适当的通用功能(C,Go)到强大的通用系统,使它们成为图灵完整的(Rust,C ++)。 在本文中,我将讨论来自不同语言的通用系统及其实现。 我将首先以没有类似系统(如C)的语言解决问题,然后说明逐步扩展扩展如何导致其他语言的系统。

我发现泛型是一个有趣的选择,因为泛型是一般元编程问题的一个简单特例:编写可以生成其他程序类的程序。 作为证明,我将展示如何在通用系统空间中将三种不同且完全通用的元编程方法视为多向扩展:动态语言(如Python),过程宏系统(如Template Haskel)以及分阶段编译(如Zig和Terra)。

为什么const不加速C / C ++代码?AloneCoder


几个月前,我在一篇文章中提到这是一个神话,好像const有助于启用C和C ++中的编译器优化。 我决定应该对这一说法进行解释,特别是因为我自己以前曾经相信过这个神话。 我将从理论和人工示例开始,然后继续基于真实代码库-SQLite进行实验和基准测试。

负责任开发人员的HTTP标头AloneCoder


今天,在线是许多人的普遍条件。 我们都购买,交流,阅读文章,寻找有关各种主题的信息。 网络将我们连接到整个世界,但最重要的是,它连接了人们。 我本人已经使用Internet 20年了,八年前,当我成为Web开发人员时,我与Internet的关系发生了变化。

开发人员将人们联系在一起。
开发人员可以帮助人们。
开发人员给人们机会。

开发人员可以为每个人创建一个网络,但是必须负责任地使用此功能。 最后,重要的是创造可以帮助人们并赋予他们权力的事物。 在本文中,我想谈谈HTTP标头如何帮助您创建更好的产品,以实现Internet上所有用户的最佳工作。

超级感染,抗生素和僵尸启示模型randall


细菌而不是癌症,恐怖分子和灾难夺走了许多人​​的生命。 仅瘟疫耶尔森氏菌(瘟疫杖)导致1.5亿人死亡。 服用抗生素是抵抗细菌感染的主要方法。 但是,如果药物停止工作怎么办?

这不是一个关于假说建模的反问,也不是一个介绍性的问题,而是在可预见的未来,随着细菌抗性增加的现实情况。 世界卫生组织(WHO)和国家服务部门制定了共同的行动计划,但没有哪个州制定详细的算法来预防细菌性大流行。

我们将讨论即将发生的灾难的原因,以及在基因组学,数学和病毒学等相关学科的帮助下寻求摆脱医学僵局的方法的尝试。

在JavaScript中使用时区randall


最近,我正在执行将时区添加到团队维护的JS日历库中的任务。 我很清楚JavaScript中对无用时区的支持,但是我希望抽象现有数据对象将使解决大多数困难变得容易。

但是,我的梦想破灭了。 当我深入研究任务时,我意识到用这种语言处理时区确实很困难。 要实现比简单地格式化时间显示格式和使用复杂的操作(日历功能)计算日期更复杂的事情,是非常困难的。 我在解决这个问题上获得了宝贵的经验,这带来了新的困难。

在本文中,我想讨论一下我遇到的问题以及如何解决。 在编写文本时,我意识到所有困难的原因是我对时区主题的理解不足。 鉴于这种认识,我建议首先详细讨论定义和标准,然后再转向JavaScript。

冠军通过评论


一位健康的IT专家的EDC:我随身携带一切Barrayar


我们会随身携带一些有用的东西,如果不是每天都那么频繁的话。 所有这些都是称为EDC-Everyday Carry的垃圾。 如今,凭借各种工具,小工具,设备,流浪和小型nishtyachki的惊人的丰富性和可访问性,在我们的口袋和书包中,您可以找到最有趣的东西组合。 并且,在everydaycarry.com上,您可以上传EDC的照片并签名。 我们从那里收集了最有趣的IT专家。 他们还要求我们展示员工口袋和背包中的内容。

为什么在Go中需要泛型?AloneCoder


本文是关于向Go添加泛型的含义,以及为什么我认为我们应该这样做。 我还将介绍语言体系结构的可能变化,以添加泛型。

Go于2009年11月10日发布。 不到一天后,关于仿制药的第一条评论出现了。 它还提到了一些例外情况,我们以恐慌的形式添加了该语言,并于2010年初恢复。

经过三年的观察,缺少泛型一直是该语言中需要解决的三个主要问题的清单。

可以从新鲜的科幻小说中阅读和观看的内容:火星,机器人和叛逆的AIBarrayar


今天是星期五的春天,我真的想分散代码,测试和其他工作的注意力。 我们为您汇编了您最喜欢的科幻小说和电影的精选集,这些书籍和电影已于去年发行。

冠军添加到收藏夹


对于那些 耳熟能详的人 :开发人员播客Barrayar


谁说开发人员只能通过书籍,视频和对他人代码的分析来学习新事物? 毕竟,我们还有其他途径可以从外界获取信息。 当然,这不是品尝,品尝或嗅出知识。 但是要听-就这样。 我们已经为您编译了一系列面向开发人员的最新俄语播客。 一种让眼睛休息或堵车的好方法。

如何在几个小时内从网站制作应用程序并将其放置在Google Play上。 第1/2部分:渐进式Web应用程序摘要


大概所有从事Web开发的人都已经听说过Progressive Web App。 希望你能! 在产品分配和用户参与方面,该技术实际上平衡了Web和移动开发。 是的,例如用React编写的现代前端可以用作应用程序。 但是,此应用程序仅下载到浏览器并从中启动。 这是移动开发始终面临的巨大障碍。 让我们考虑一下,从普通用户的角度来看,“应用程序”与“站点”不同。 立即想到该应用程序在电话上,而该站点在计算机上。 但是有一个移动浏览器,因此该站点也可以在手机上。 然后有3个显着差异:

  1. 应用程序图标在智能手机的主屏幕上。
  2. 该应用程序将在单独的窗口中打开。
  3. 该应用程序发送推送通知。

由于使用了渐进式Web应用程序或PWA,所有3个点均被删除。 现在,通过移动浏览器访问该站点,我们可以“下载”该站点,然后在主屏幕上看到该图标。 此外,在启动时,如在移动应用程序中一样,将显示启动屏幕,并且如果需要,您可以配置发送推送通知。

似乎一切都很好! 但是,可惜的是,在移动时代的10多年里,用户已经习惯于在Google Play和App Store中寻找应用程序。 打破用户习惯是一项艰巨的任务,因此,来自Google的家伙(顺便说一句,Google是PWA的开发者)决定,如果不去Magomed,那么……一般来说,最近一次是在2019年2月6日,他们提供了Trusted Web Activities的使用Google Play上的网络应用程序计算。

由两部分组成的文章将向您展示如何在短短几个小时内获得从常规网站到Google Play上的应用程序的完整路径。 所有这些都将在真实服务的示例-Skorochtets中显示。

JavaScript引擎:它们如何工作? 从调用栈到promise,(几乎)您需要了解的所有内容AloneCoder


您是否想知道浏览器如何读取和执行JavaScript代码? 它看起来很神秘,但是在这篇文章中,您可以了解幕后发生的事情。 我们从游览JavaScript引擎的精彩世界开始我们的语言之旅。

查看冠军


对代码的愤怒:程序员和否定性AloneCoder


我正在看一段代码。 也许这是我遇到过的最糟糕的代码。 要仅更新数据库中的一条记录,它将提取集合中的所有记录,然后发送请求以更新数据库中的每条记录,即使是那些不需要更新的记录也是如此。 有一个map函数可以简单地返回传递给它的值。 对变量具有明显相同值的条件检查,只是以不同的样式(firstName和first_name)命名。 对于每个UPDATE,代码将消息发送到另一个队列,该消息由另一个无服务器功能处理,但是由同一数据库中的另一个集合完成所有工作。 我没有提到这个无服务器功能是来自基于云的“面向服务的体系结构”,其中包含环境中的100多个功能?

这样的事情怎么办? 我遮住脸,笑出声来。 我的同事问发生了什么事,我用彩色重述了BulkDataImporter.js 2018的最差歌曲。每个人都同情我点头并同意:他们怎么能对我们这样做?

您可能不了解的现代JavaScript的功能AloneCoder


尽管过去七年来我几乎每个工作日都用JavaScript编写代码,但我必须承认,我很少关注ES的创新消息。 异步/等待和代理之类的主要功能是一回事,但是每年都会出现一些细微的阶段性变化,这些变化不会进入我的视野,因为总有一些需要研究的东西。

在本文中,我收集了现代JS的功能,但当它们出现时并没有太多讨论。 其中一些只会增加可用性,而某些则非常实用,可以节省编写大量代码的时间。

XML几乎总是 被滥用AloneCoder


XML语言是1996年发明的。 在开始误解应用的可能性之前,他几乎没有出现过,并且出于他们试图适应他的目的,他不是最佳选择。

毫不夸张地说,我所看到的绝大多数XML模式都是不适当的或滥用XML。 而且,对XML的这种使用证明了对XML的根本误解。

XML是一种标记语言。 这不是数据格式。 在大多数XML方案中,没有明确考虑到这种区别,这使XML与数据格式混淆,这最终意味着XML选择本身存在错误,因为实际上需要数据格式。

无需赘述,XML最适合使用结构和元数据来注释文本块。 如果您的主要任务不是处理文本块,则不太可能选择XML。

从这个角度来看,有一种简单的方法可以检查XML模式的制作情况。 以提议的模式中的文档为例,并从中删除所有标签和属性。 如果剩下的东西没有意义(或者剩下的是空字符串),则说明您的架构没有正确构建,或者您根本不应该使用XML。

下面,我将给出一些错误构造电路的最常见示例。

* * *
感谢所有阅读它的人。 随着即将到来!

Source: https://habr.com/ru/post/zh-CN482504/


All Articles