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

Резултати

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

Търсене: #html5

当前筛选 #html5清除筛选

问答环节 q:渗透需要学历吗? a:如果是找工作肯定需要,自学的话和学历没关系,能不能干事的唯一标准就是能力 q:自学遇到了瓶颈,无法提升也无法实战怎么办? a:外围多看实战资料,内网多打靶机跳出被教程引着走的圈子,搞懂原理自己理解,有空自行思考复现几个漏洞比看教程有价值 q:公安执法部门等国家队是不是都非常强? a:错误的,公安涉及技术的只有网警,知识来源于大学警校中网络安全与执法专业,需要花费一部分时间学习司法执法相关知识,并且会侧重取证,监控等非渗透知识。第二是公安属于体制内公务员,各类人事应酬非常多,技术上是难以保持一线的,一般重大事故或行动都会外包给安全公司。但外包有外包的好,公安部门作为网络安全主管部门能调动的资源非常多,你们熟知都什么奇安信深信服都是晶哥的打手,所以也千万别去招惹警察叔叔 q:外群是拿来做什么的,投了简历也没见有行动? a:后续会开展实战行动以及针对组员的拔高培训,录课中勿催 q:在渗透中感觉最难的是什么? a:各种报错,没有之一 q:表姐有男朋友吗?平时穿黑丝吗?喜欢什么样的男生? a:有。正式场合会穿黑丝,但是因为我比较暴力经常穿成一次性用品所以频率不高。喜欢像孙笑川那样儒雅随和又很文明的人 q:CVE-2023-27372中SPIP公域表单值序列化处理不当 利用php代码中的ENV**可以在密码重置模块实现注入,怎么利用实现rce? a:控件中把protege_champ()这个函数作为正则表达式, 函数的代码: <!-- File : /squelettes-dist/formulaires/oubli.html --> <input[ (#HTML5|?{type="email" class="text email" autofocus="autofocus" required="required",type="text" class="text"})] name='oubli' id='oubli' value="#ENV**{oubli}" autocapitalize="off" autocorrect="off" /> 这个函数对HTML表单字符动态处理,从请求中获取名为"oubli"的GET或POST参数,和SPIP模板构造冲突了,所以输入字段是不对序列化字符进行处理的。把序列化PHP字符串注入变量$_POST['oubli']到/spip.PHP端点上重置密码,从而page=spip_pass,在服务器上有导致RCE。 q:孙尚香出装出什么? a:疾步鞋黑切无尽宗师电刀,最后泣血复活甲二选一 q:学渗透没有天赋怎么办? a1(saber):转行 a2(落老师):天赋是一方面,经验也很重要,不是绝对的 a3(某倭瓜):有兴趣就好,可以先尝试,试一试总比直接放弃好 a4:(老黄):我特么双非一本呢还不是学得挺好,别学什么小迪暗月坑人 a5(🐗老师):天赋决定的是上限,安全直到红队高级为止不怎么看天赋 a6(🚗🧊):有这时间学网安费力不讨好的,自己哪个有天赋学哪个吧 q:自学web可以找工作吗? a:基本同一,看能力,不过web神仙太多了,选什么二进制嵌入式就业会更方便

Hashtags

GitHub Trends

@githubtrending · Post #14762 · 30.05.2025 г., 00:00

#html#bootstrap#devcontainer#html5#jamstack#jekyll#jekyll_theme#pwa#responsive_web_design#rubygems The Chirpy Jekyll theme is a simple and powerful tool for creating websites, especially for technical writing. It offers many features like dark mode, categories, syntax highlighting, and built-in search. This theme helps users create visually appealing sites with ease, making it ideal for sharing knowledge and ideas. It also supports mathematical expressions and diagrams, which is beneficial for technical content. Additionally, it is optimized for SEO and performance, ensuring your site is easily found and runs smoothly. https://github.com/cotes2020/jekyll-theme-chirpy

GitHub Trends

@githubtrending · Post #14898 · 02.07.2025 г., 13:30

#javascript#3d#augmented_reality#canvas#html5#javascript#svg#virtual_reality#webaudio#webgl#webgl2#webgpu#webxr Three.js is a powerful and easy-to-use JavaScript library that helps you create 3D graphics and animations on the web with much less code than using WebGL directly. It handles complex tasks like rendering and math calculations, so you can focus on designing your 3D scenes. It supports WebGL and WebGPU, with additional options like SVG and CSS3D. Three.js has excellent documentation, many examples, and a large, active community that provides support and updates. This makes it ideal for quickly building interactive 3D content that works across browsers, improving your web projects with engaging visuals and smooth performance[1][3][5]. https://github.com/mrdoob/three.js