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

Резултати

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

Търсене: #license

当前筛选 #license清除筛选
秋城落叶InjectLib项目

@qiuchenlymac · Post #1056 · 01.12.2025 г., 09:58

借助AI辅助, 我很高兴的宣布, QiuChenStore将在下个迭代中正式推出Adobe产品安装、激活。 其中激活算法彻底重写,不再依赖于每个版本手动修补程序中的特定代码来尝试绕过激活,我们从底层实现了整套的RSA 以及 SHA256、SHA512加解密与使用来自QiuChenly生成的根证书来为每一个授权用户激活授权请求。 我们成功使用伪造的自签名根证书下发有效证书授权。 我还重写了整套Adobe产品安装系统。 现在不需要官方ACC,你可以随意最精简化安装所有App,而不必担心在您的Mac中随处产生文件。 选择一个文件夹,所有的Adobe数据全都存在于此。 您甚至可以把所有的Adobe App安装到移动硬盘中,一插一拔中随身带走你的adobe 软件、用户首选项、Adobe缓存和用户数据,这一切都基于QiuChenAdobe全新安装系统的魔法。 除此之外,我们还试图解决一个遗留已久的问题:神经滤镜(Neural filter)。 神经滤镜的模型、蒙版实际上是登录用户即可下载,而不必你真的拥有授权。目前来看是Adobe官方的逻辑Bug,因为Adobe产品使用之前必然需要授权许可,所以Adobe目前还没有采取行动来阻止下载。 现在我们可以手动从官网登录,复制token并设置到App中,App即可正常下载滤镜、更新蒙版。具体说明在讨论区原帖中有图例。 各产品适配进度请访问商店的Adobe产品区。 此外致谢: 一位匿名人士无偿提供的几乎不限量的sonnet 4.5 API 一位匿名人士无偿提供的不限量token cursor 账户 本算法完全基于美元烧出来的。 #Adobe#License

djangoproject

@djangoproject · Post #482 · 30.10.2017 г., 18:53

https://github.com/scottwoodall/django-react-template/blob/master/LICENSE scottwoodall/django-react-template is licensed under the #MIT#License A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

Hashtags

djangoproject

@djangoproject · Post #481 · 30.10.2017 г., 14:23

https://github.com/scottwoodall/django-react-template/blob/master/LICENSE scottwoodall/django-react-template is licensed under the #MIT#License A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

Hashtags

djangoproject

@djangoproject · Post #598 · 24.04.2018 г., 02:56

https://github.com/Djeact/Djeact-RoadMap What is Djeact? The name of Djeact comes from the combination of Django and React. Django is a python web framework and React is a javascript library for building user interfaces. Djeact is a set of libraries which the backend is written by django and the UI is written with react. Following libraries have been written so far: Why #Djeact started? Why #Django was chosen for #backend? Why #React was chosen for #frontend? Why #MIT#License?

djangoproject

@djangoproject · Post #513 · 30.11.2017 г., 22:00

#AI#Artificial_Intelligence #AJAX #aiohttp #Anaconda #AngularJS #API #Atom #AWS #asyncio (#Asynchronous) #audio #automated_testing #automation #atexit #BeeWare #Big_Data #bitcoin #blockchain #Bluemix #Brython #button #Celery #client #class #classmethod #concurrency #Coroutine #cron #CSS #curl #data_analysis #data_mining #data_processing #database #Deep_Learning#deep_learning #Debian #decorator #deploy #dict #dispatch #django #django_cms #Django_REST_Framework #dropdownbox #Docker #event #Firefox #Flask #form #functions #Generator #GeoDjango #git #Google #GPU #GUI #Gym #host #HTML #httplib #learn #Image_processing #intelligence #input #Instagram #IOT #iPython #Jupyter #lambda #learn #License #Linux #lists #machine_learning #Magenta #map #Matplotlib #Metaprogramming #Micro_services #Micropython #mind #monitoring #MongoDB #modules #Mozilla #Multipart #multi_touch_apps #multiprocessing #Nodes #NoSQL #numeric_computation #numerical #NumPy #network #neural_network #OAuth #object_serialization #OCR #overloading #package #parallel #pipeline #protocols #PostGIS #pyAudioAnalysis #pycon #Pyflakes #PyInstaller #PyPI #PyQt #PySide #PyTorch #pytest #python #Pyvideo_archives #Qt #Raspberry_Pi #React #Redis #random #request #Regular_Expressions (#re) #REST #RSS #satellite #scikit_learn #SciPy #scrapy #searching #selectbox #Selenium #serialization #server #sessions #single_responsibility_principle #socket #Spark #str #submit #task #telegram #template #TensorFlow #test #text_boxes #text #tuples #unicode #Universe #Unix #unit_test #urllib #upload #uWSGI #Web #WSGI