golang
Многопоточность и параллелизм в Go: Goroutines и каналы

Язык программирования Go, разработанный с упором на простоту и эффективность, предлагает уникальный подход к реализации параллельных вычислений через Goroutines и каналы. Goroutines, представляющие собой легковесные потоки выполнения, обеспечивают значительные преимущества по сравнению с традиционными потоками, используемыми во многих других языках программирования. Они позволяют создавать тысячи параллельных процессов без значительной нагрузки на системные ресурсы. Каналы в Go, предоставл…

  • вторник, 5 декабря 2023 г. в 00:00:24
golang
ORM для реальных приложений не окупается

Идея упростить или абстрагировать код с помощью ORM, возможно, имеет очень ограниченный контекст применимости. По сути ORM хорош для приложений уровня простого CRUD, а дальше начинает только мешать. А CRUD-приложений в реальной жизни очень мало. Проблемы При использовании ORM мы обычно прописываем в коде сущности и их взаимосвязи, и по сути это — проектирование БД ещё раз (дублирование логики!) прямо в коде. Борьба с проблемами производительности никуда не денется всё равно, как ни абстраг…

  • вторник, 5 декабря 2023 г. в 00:00:24
golang
Есть ли Singleton в Golang?

Давайте начнем с определения из Википедии.“Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.”“Единственный экземпляр некоторого класса” означает что нет возможности написать код, в котором объект может быть скопирован или создан еще каким-либо способом.В этом посте про "гарантирующий".Рассмотрим общеизвестную реализац…

  • вторник, 5 декабря 2023 г. в 00:00:20
javascript
TypeScript: infer и conditional types. Продвинутый TS на примерах

Привет, Хабр! Меня зовут Андрей, я Frontend разработчик. О статьеПродолжаем погружаться в продвинутый TypeScript. В этой статье рассмотрим conditional types, посмотрим на реализацию с примерами, узнаем какую роль играют ключевые слова extends и infer. Перед прочтением данной статьи рекомендую ознакомиться с базовыми понятиями и возможностями языка, в этом вам поможет одна из моих прошлых статей: TypeScript и все что тебе нужно в разработкеСтатья предназначена для тех, кто хочет научиться увере…

  • вторник, 5 декабря 2023 г. в 00:00:18
javascript
Atomic CSS здорового человека. UnoCSS

Продолжение перевода статьи «Reimagine Atomic CSS» двухлетней давности одного из членов команды Vue core Anthony Fu, автора UnoCSS, в которой рассматривается уже сам UnoCSS. Часть первая.Введение в UnoCSSUnoCSS — мгновенный (instant) атомарный CSS‑движок с максимальной производительностью и гибкостью.Все началось с нескольких случайных экспериментов во время моих национальных праздников. С мыслью о том, что все делается по требованию (on‑demand), и гибкостью, которую я ожидаю как пользователь,…

  • вторник, 5 декабря 2023 г. в 00:00:17
javascript
О JavaScript и WebAssembly

Hello world! На днях я баловался с WebAssembly и получил довольно неожиданные результаты, которыми и хочу с вами поделиться в этой небольшой заметке. Хорошо, если вы знаете JS/Node.js и хотя бы слышали о WASM и Rust. Я использовал следующие инструменты: Chrome 119.0.6045.199 Node.js 20.9.0 Rust 1.74.0 VSCode 1.80.2 Начнем с создания Node.js-проекта: # основная директория mkdir js-wasm cd js-wasm # директория с JS-кодом mkdir js-code cd js-code # инициализируем Node.js-проект # это не обя…

  • вторник, 5 декабря 2023 г. в 00:00:17
javascript
Google и Yandex SEO оптимизация для SPA приложений

Оба поисковика утверждают, что что-то уже могут по индексированию SPA приложений. В статье показаны результаты проведенного эксперимента по индексации чистого SPA вебсайта.Результат: Google - хорошо, Yandex - не очень.SPASPA приложения получают данные и отображают их на странице асинхронно, через AJAX запросы. В связи с чем, для индексации таких сайтов поисковик должен понимать JavaScript и грузить и обрабатывать не только основной HTML страницы, как он это делал много лет, но и сопутствующие …

  • вторник, 5 декабря 2023 г. в 00:00:16
javascript
Улучшаем возможности PM2 с помощью дополнительных модулей автоскейлинга и мониторинга

Всем привет. Сегодня я бы хотел рассказать о том, с какими трудностями пришлось столкнуться при работе с менеджером node.js процессов PM2, и как нам пришлось расширить его возможности для того, чтобы его было можно использовать эффективнее.Как известно PM2 — это менеджер процессов с открытым исходным кодом позволяющий кластеризировать приложение и гибко распределять нагрузку между ядрами процессора. Многие используют его в своих продакшен решениях благодаря его возможностям, но в последнее вре…

  • вторник, 5 декабря 2023 г. в 00:00:15
github
go-gost / gost

GO Simple Tunnel - a simple tunnel written in golangGO Simple Tunnel GO语言实现的安全隧道 English README 功能特性 多端口监听 多级转发链 多协议支持 TCP/UDP端口转发 反向代理和隧道 TCP/UDP透明代理 DNS解析和代理 TUN/TAP设备 负载均衡 路由控制 准入控制 限速限流 插件系统 Prometheus监控指标 动态配置 Web API Web UI 概览 GOST作为隧道有三种主要使用方式。 正向代理 作为代理服务访问网络,可以组合使用多种协议组成转发链进行转发。 端口转发 将一个服务的端口映射到另外一个服务的端口,同样可以组合使用多种协议组成转发链进行转发。 反向代理 利用隧道和内网穿透将内网服务暴露到公网访问。 下载安装 二进制文件 https://github.com/go-gost/gost/releases 安装脚本 # 安装最新版本 [https://github.com/go-gost/gost/releases](h…

  • вторник, 5 декабря 2023 г. в 00:00:01