@repo_science · Post #4190 · 20.08.2024 г., 11:13
#linux#softSkills#commandLine 📱 Linux: Master the Linux Command Line ----- Main channel: @repo_science Coupons: @freecoupons_reposcience -----
Hashtags
TGINSIGHT SIMILAR POSTS
Изходен канал @clockstackwheels · Post #721 · 26.12
Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev
Hashtags
Търсене: #commandline
@repo_science · Post #4190 · 20.08.2024 г., 11:13
#linux#softSkills#commandLine 📱 Linux: Master the Linux Command Line ----- Main channel: @repo_science Coupons: @freecoupons_reposcience -----
Hashtags
@repo_science · Post #3361 · 27.06.2023 г., 21:42
#softSkills#commandLine#cheatSheet Command Line Cheat Sheet ----- Main channel: @repo_science Coupons: @freecoupons_reposcience -----
@AppPie · Post #2386 · 07.04.2025 г., 04:04
#Apps OCRmyPDF: 为扫描 PDF 添加 OCR 文本层 🔗GitHub OCRmyPDF 是一个开源的命令行工具和库,它可以为扫描的 PDF 文件添加 OCR 文本层,使文件内容可被搜索和复制粘贴。该工具利用 Tesseract OCR 引擎识别 PDF 中图像里的文本,并将其准确地放置在原始图像下方,使得用户可以轻松地搜索和选择文档中的内容。 OCRmyPDF 的工作原理是分析 PDF 的每一页,确定所需的色彩空间和分辨率,然后使用 Ghostscript 将每页栅格化,接着通过 Tesseract 进行 OCR 处理,并将生成的 OCR 层集成回原始 PDF。与直接使用 ImageMagick 或 Ghostscript 处理图像然后通过 Tesseract OCR 不同,OCRmyPDF 能够生成变化最小的 PDF 输出,同时保留原始图像的精确分辨率。 主要特点 - 多语言支持:支持 Tesseract 的所有语言包,包括英语、法语、中文等 - 图像处理:自动旋转页面、去偏斜、清理背景和图像优化 - PDF/A 生成:默认生成符合 PDF/A 标准的存档文件,便于长期保存 - 批处理能力:支持多核处理,提高 OCR 速度 - 多平台支持:适用于 Linux、macOS、Windows 和 FreeBSD - Docker 支持:提供 Docker 镜像,方便快速部署 - JBIG2 优化:支持 JBIG2 编码,大幅减小黑白图像的文件大小 - 页面选择:允许只对 PDF 中的特定页面进行 OCR 处理 - 扩展性:支持插件系统,可自定义处理流程 部署选项 - 通过 pip 安装:`pip install ocrmypdf` - Docker 容器 - 系统包管理器:支持多种 Linux 发行版和 macOS 的 Homebrew - 从源代码构建 开源许可证 MPL-2.0。 #GitHub#OpenSource#PDF#OCR#CommandLine 📮 频道 @AppPie
@githubtrending · Post #15135 · 10.09.2025 г., 13:00
#javascript#ansi#ansi_escape_codes#chalk#cli#color#commandline#console#javascript#strip_ansi#terminal#terminal_emulators Chalk is a popular Node.js tool that lets you easily add colors and styles to text in the terminal, making your console output clearer and more attractive. It supports many colors, including 256 and truecolor (millions of colors), and allows you to combine and nest styles like bold, underline, and background colors. Chalk auto-detects if your terminal supports colors and works without adding dependencies or changing built-in string behavior. You can create custom themes and use template literals for dynamic, colorful logs. This helps you highlight important information in your terminal output, improving readability and debugging. Chalk is reliable, actively maintained, and widely used in many projects. https://github.com/chalk/chalk