TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

Намерени 1 подобни публикации

Търсене: #eyeball

当前筛选 #eyeball清除筛选

⏺ DMIT LAX.Pro + LAX.EB 系列 硬件升级 & 上新补货 🔵 DMIT 产品线命名介绍 T1: 全称为 Tier 1 (顶级网络),指的是接入了全球互联网最顶级的运营商 (Arelion ,NTT, GTT 等),完整名单,但由于国内三大运营商缺少与国外运营商的互联和各种特殊原因,被列为了 Tier2 网络,不能和 Tier1 网络免费结算,导致 Tier1 网络和国内运营商之间的容量有限,速度和可用性较差,只适合跑国际方向。 EB: 全称为 Eyeball (眼球网络),本来是指面向最后一公里的运营商分类,在 DMIT 指的是相比 T1 系列而言,尽量使用有性价比的线优化国内体验(例如 #Lumen 等),不保证国内优化线路的可用性。 Pro: 承诺大陆优化的最强系列,在以上两个产品线的线路/硬件基础上增加了直接接入 CN2-GIA (中国电信的精品骨干网络,目前公认的回国体验最稳定、成本最高的线路) / CMIN2 (中国移动精品骨干网,目的是对标 CN2,在 IPv6 上体验不错) 等国内优化线路。 ❕ 配置介绍 DMIT 于近期升级了其位于美国洛杉矶 (IATA 代码 LAX) 的硬件配置: - CPU 升级为 AMD EPYC 最新最热的 AMD EPYC 9654 96-Core - 内存升级为 海力士 DDR5 5600MHz (受 AMD 限制降频为 4800MHz) - 硬盘升级为 Soildigm (Intel) 的 P5520,全 NVMe 闪存阵列,最大可扩容至 1.68PB 阵列集群。 - 网络骨干网容量扩容至 800Gb*3, 单机柜 4x100Gb, 单节点 2x100Gb 链路,汇聚总容量达 1.92Tbps 🌐 网络简述 - DMIT LAX Pro 系列采用了最顶级 (也是成本最高) 的 CN2-GIA。 IPv4: 电信/联通/移动/教育网 回程均经过 AS4809。 IPv6: 教育网/移动 回程经过 CMIN2 (移动精品网,与中国电信 CN2 对标) - DMIT LAX EB (Eyeball) 系列回程采用了移动精品网 CMIN2 💻 配置大升级 每个机型的流量增幅达到 10%~15%,部分机型的 CPU / 内存 翻倍,具体的升级配置单可以 点击这里 查看。 🎆 回馈老客户 如果您是在本次活动之前购买的 LAX.Pro / LAX.EB,将在此次配置升级的基础上,还能再享受流量 +10% (Pro), +15% (EB) 的福利! ✅ 购买链接 写文不易,如果觉得我写的指南对你选购有所帮助,还请点击下方 aff 链接注册账号,感谢! https://affyes.link/store/dmit 通过链接注册账号后再访问活动页面选购产品: 格式: 机型,CPU,内存,硬盘,流量@带宽 ✅ LAX Pro 系列 LAX.Pro.WEE: 1vCPU, 1GB, 20GB, 500GB @500Mbps https://affyes.link/store/dmit-lax-pro-wee LAX.Pro.MALIBU: 1vCPU, 1GB, 20GB, 1000GB @1Gbps https://affyes.link/store/dmit-lax-pro-malibu LAX.Pro.PalmSpring 2vCPU, 2GB, 40GB, 2000GB @2Gbps https://affyes.link/store/dmit-lax-pro-palmspring ✅ LAX EB (Eyeball) 系列 LAX.EB.WEE 1vCPU, 1GB, 20GB, 1000GB, @1Gbps https://affyes.link/store/dmit-lax-eb-wee LAX.EB.CORONA 1vCPU, 1GB, 20GB, 1500GB @1Gbps https://affyes.link/store/dmit-lax-eb-corona LAX.EB.FONTANA 2vCPU, 2GB, 40GB, 2500GB @4Gbps https://affyes.link/store/dmit-lax-eb-fontana ❔ 关于本消息 本消息为 #IDC新闻速报 ,是本频道 #多元化新闻发布计划 中的一个主要分支,是对 IDC 测评前的预告,本频道大部分测评内容均由笔者出资购买,与商家没有利益相关。 本频道 (AFF Channel, @affyes) 创作不易,IDC 类消息中的链接 (除特殊声明外) 均包含 aff 参数,当您购买商品后,笔者将会从商家收到一笔不多 (大约仅 5~10%) 的推荐佣金,这些佣金将是支撑本频道继续创作主要的神来源。 💡 本文网页版 (网站可能已被国内屏蔽) 传送门: https://www.hats-land.com/archives/2024-10-06-dmit-lax-pro-eb-upgrade.html 标签 Tags: #dmit#lax#dmit_lax_pro#dmit_lax_eb#eyeball