Обновить
12
0.5
Алексей Ткаченко @a-tk

Разработчик ПО

Отправить сообщение

Пакет управления доступом на основе ролей (RBAC) для PHP

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров827

Потребовалось мне сделать свою реализацию проверки прав для PHP. В итоге эта разработка стала отдельным пакетом. Возможно кому-то пригодится. В статье рассказываю как это работает.

Читать далее

VoiceReader — читаем вслух

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров2.1K

Делаем на c# репетитора по чтению вслух на 20+ языках.

Идея простая: открываем текст на (почти) любом интересующем языке, и читаем в микрофон. Все распознанные слова в тексте помечаются цветом.

Читать далее

Как мы засунули Git в браузер (и чего нам это стоило)

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров7K

Привет, Хабр! Меня зовут Паша, я разработчик Gramax — open source-платформы для управления технической документацией в подходе Docs as Code.

В этой статья я расскажу, как и для чего мы интегрировали Git в браузер, какие технологии использовали и какие технические решения приняли. А если подробнее: почему отказались от IsomorphicGit в пользу libgit2, каким образом мы собрали его под WebAssembly, как он работает с файлами и зачем вообще все это было нужно.

Читать далее

Почему сотрудники не используют ваши инструкции и гайды: 5 причин и 20 решений проблемы

Время на прочтение8 мин
Количество просмотров11K

У стартапов и средних компаний часто одна история: телеграм-менеджмент, сотрудники ляпают одни и те же ошибки. А руководитель бесится, что вместо коктейлей на пляже нужно следить, чтобы без него ничего не порушилось.

Тогда типичный руководитель идет в гугл, а там находит советы в духе «систематизируйте бизнес». Спасибо, гугл. Что же делать? Напишем регламенты! Но почему-то после них ничего не меняется. В статье я подсвечу 5 причин, почему так происходит и поделюсь 20 решениями, как это исправить.

Читать далее

Подключение и Настройка ElasticSearch в Laravel

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.9K

Elasticsearch - это мощный поисковый движок, который позволяет эффективно индексировать и искать данные. В этой статье мы рассмотрим, как интегрировать Elasticsearch в Laravel, используя Docker и PHP-библиотеку elasticsearch/elasticsearch.

Читать далее

С новым годом: GPT в 500 строках на SQL

Время на прочтение42 мин
Количество просмотров42K

В минувшем году все только и говорили об ИИ и о том, как он может всё за вас сделать.

Мне нравится, когда кто-то или что-то работает за меня. Поэтому решил: попрошу-ка ChatGPT написать за меня новогодний пост:

«Эй, ChatGPT. А ты можешь реализовать большую языковую модель на SQL?»
«Нет, SQL не подходит для реализации больших языковых моделей. Язык SQL предназначен для выполнения запросов к данным, хранящимся в РСУБД и для управления этими запросами. Для реализации большой языковой модели требуются сложные алгоритмы, обширные датасеты, а зачастую — и фреймворки для глубокого обучения. SQL всеми этими возможностями не обладает.»

Что ж, лишний раз убеждаешься, что, если хочешь что‑то сделать хорошо – сделай это сам.

Давайте же воодушевимся этим оптимистическим планом и реализуем большую языковую модель на языке SQL.

Читать далее

Как математика улучшает геосервисы и помогает быстрее сориентироваться

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.8K

Сегодня всё чаще требуется учитывать географическую привязку и выполнять поиск в локальном окружении клиента. Иными словами, регулярно возникает необходимость найти что-то (или кого-то) рядом с конкретным пользователем. «Где ближайший банкомат?», «Кто из друзей поблизости?», «Какие тут аптеки?». Подобные запросы миллионами поступают в сервисы геолокации каждый день, при этом существующие подходы к решению этой задачи не исчерпали возможностей оптимизации. Наверняка вы не раз сетовали на то, как долго обновляются метки на карте.

В этой статье эксперт отдела перспективных исследований российской компании «Криптонит» Игорь Нетай рассказывает о способе ускорить обнаружение объектов, принадлежащих одному географическому региону с произвольно заданными размерами. Материал станет частью научной работы о перспективах применения H-кривых в геохешинге.

С помощью рассмотренной в этой статье алгоритмической оптимизации можно быстрее выполнять поиск в различных масштабах — от полушария Земли до конкретного здания.

Координаты одной строкой

Удобство географической персонализации постепенно вытеснило паранойю, и во многих онлайн-сервисах теперь открыто используются данные о местоположении пользователей и различных объектов. Делаете заказ через интернет? Вам предложат забрать его в пункте выдачи поближе к дому. Вызываете такси? Сначала запрос передаётся водителям рядом с вами. Ищете кафе? На карте отобразятся ближайшие.

Все эти алгоритмы сводятся к решению одной и той же задачи: они определяют, какие координатные точки из базы данных входят в тот же условно заданный регион, что и указанная в запросе целевая точка (как правило, обозначающая местоположение пользователя). Для этого используется система кодирования географических координат в виде значений хеш-функции, называемых геохеши.

Читать далее

CRC — это просто (деление столбиком)

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров39K

Целостность можно достичь различными способами. Например, чек-суммами. Вот как раз была такая задача - обеспечить целостность с помощью чек-сумм.

На ум сразу пришел CRC. Ну тут просто - взял скопировал готовый код, бери не хочу, реализаций на разных языках куча.

Но это простой путь слишком просто - так не интересно (да и лишних часов на таску надо тоже поставить). Поэтому решил усложнить себе жизнь разобраться в работе CRC!

Читать далее

Помоги компилятору, и он поможет тебе. Тонкости работы с nullable reference типами в C#

Время на прочтение10 мин
Количество просмотров14K

Nullable reference типы появились в C# 3 года назад. За это время они смогли найти свою аудиторию. Но даже те, кто имеет дело с этим зверем, скорее всего, не знают всех его возможностей. Давайте разберёмся, как более качественно взаимодействовать с этими типами.

Читать далее

Wix toolset: не так страшен черт, как Windows installer

Время на прочтение56 мин
Количество просмотров23K

В статье я хотел бы поделиться своим опытом написания инсталлятора для Windows с использованием инструмента Windows Installer XML Toolset (далее - Wix). К сожалению, несмотря на всю мощь данного инструмента, его использование сильно осложняется куцей документацией, старенькими кукбуками, вялыми ветками форумов и вытеснением .msi и .exe пакетов контейнеризацией. Однако, сегодня продолжают активно развиваться и создаваться программные продукты требующие развертывания на виндовой машине с использованием традиционных установочных пакетов.

Читать далее

Создание .NET библиотеки от А до Я

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров20K

Думаете о создании .NET библиотеки, но не знаете, в какую сторону двигаться? Уже разрабатываете нечто подобное, но хочется открыть для себя что-то новое? Ищете варианты расширить автоматизацию? Не знаете, что делать с пользователями?

Надеюсь, данная статья поможет ответить на эти и другие вопросы. На примере своей библиотеки с открытым исходным кодом – DryWetMIDI – рассмотрим различные аспекты создания подобных проектов. И хотя речь будет идти про .NET/C#, уверен, многое применимо и к другим популярным платформам и языкам программирования.

Читать далее

12 схем архитектуры английской грамматики

Время на прочтение12 мин
Количество просмотров40K

Я предприняла попытку смоделировать в 12 схемах и 16 пунктах пояснительных заметок английский как систему: общую структуру его уровней, логику и принципы, по которым он, в рамках моего подхода, функционирует. Мне хотелось, насколько это возможно, в своём описании грамматики придерживаться формата технической документации.

Данная раскладка может быть полезной для предварительного ознакомления с устройством предмета освоения - английский как иностранный, для упорядочения фрагментарных грамматических знаний и выведения их на осмысленный уровень, или, возможно, для применения в NLP.

Читать далее

Яндекс выложил в опенсорс бету фреймворка userver

Время на прочтение10 мин
Количество просмотров81K
Сегодня мы анонсируем выход в опенсорс фреймворка userver для создания высоконагруженных приложений. Для нас это важный способ поделиться опытом в разработке микросервисов, который мы накопили. Вот ссылка на Гитхаб-репозиторий c исходным кодом, документацией, примерами, шаблоном для создания своих сервисов (с настроенным CI, сборкой и тестовым окружением) и сервисом динамических конфигов. Всё это опубликовано под лицензией Apache 2.0.



🐙userver позволяет быстро создавать эффективные микросервисы на языке C++ и уже много лет активно используется в Яндекс Go, Еде, Лавке, Доставке, Маркете, финтехе и других проектах. Вот из каких требований мы исходили в процессе разработки:

  • Простота. Стажёр или студент, приходя к нам, может уже через неделю написать и отправить в продакшен новый микросервис.
  • Надёжность. Многие ошибки, в том числе и связанные с многопоточностью, можно поймать на этапе компиляции. Кроме того, фреймворк даёт подсказки по исправлению проблем.
  • Полнота. В userver есть всё необходимое для тестирования, работы с разными базами данных, кеширования, логирования, трейсинга, распределённых блокировок, работы с JSON, BSON, YAML, изменения параметров сервиса на лету и так далее.

Сейчас я расскажу о том, как возникла идея userver, как фреймворк развивался, в каких задачах его сейчас используют и почему именно выход в опенсорс был логичным следующим шагом. А затем приведу пример написания нового микросервиса.
Читать дальше →

Как правильно имитировать Agile?

Время на прочтение15 мин
Количество просмотров38K

Подобная статья должна была появиться раньше, лет десять или пятнадцать назад, когда Agile только начинал внедряться в ИТ-компаниях. Сколько можно бы было избежать ошибок, проблем, конфликтов, , если бы менеджеры сразу подходили к вопросу правильно, не отвлекаясь на лишние действия …

Зато за это время накопился опыт "внедрений" Agile в разных условиях, в разных компаниях, который следует обобщить и повсеместно распространять.

Читать далее

Наведите порядок! Очистка вашего PHP-приложения с помощью PHPStan

Время на прочтение8 мин
Количество просмотров7.2K

За то время, что я работаю PHP-разработчиком, способ написания и доставки кода сильно изменился. В ранних приложениях Symfony и Zend Framework группы PHP-FIG не существовало, а стандарты кодирования определялись на усмотрение того, кто их писал. На протяжении тех лет, когда мы наблюдали широкое распространение стандартов PSR, надежные инструменты статического анализа были несколько разрозненными. Так было до настоящего времени, пока не вышла версия 1.0 PHPStan. Давайте отметим это событие, ознакомившись с некоторыми ее возможностями.

Читать далее

Знаете, что больше всего выдает в вас низкоквалифицированного программиста?

Время на прочтение6 мин
Количество просмотров93K

Желание неукоснительно придерживаться ТЗ при недостигнутых задачах бизнеса.

Этот тезис больно ударит по вашему самолюбию, если вы привыкли к уровню обслуживания «нет в ТЗ – идите мимо». Тем не менее, если вы хотя бы чуть-чуть поменяете свое мнение в сторону большей клиентоориентированности, то сможете понять, о чем я.

Знаю-знаю, вы – крутой программист и тут же возразите мне – а что же, я должен предвидеть все, что нужно бизнесу? Должен догадаться, чего хочет заказчик? Бесконечно реализовывать его странные хотелки?

А имеете ли вы моральное право задавать такие вопросы? Проверьте, что из этого списка вы сделали для этого:

Читать далее

Иностранные хостеры с возможностью оплаты из России

Время на прочтение4 мин
Количество просмотров132K

Всем привет! Меня зовут Леонид, я владелец сервиса Поиск VPS. В последнее время мне в обратную связь начало поступать очень много вопросов, каким образом можно оплачивать зарубежный хостинг, так как Visa и MasterCard Российских банков перестали работать не в России.

Есть всякие обходные пути в виде получения карты иностранного банка, которая пополняется криптовалютой, использования QIWI-кошелька и прочих костылей, однако на мой взгляд самым простым способом является международный валютный банковский перевод, который в данный момент отлично работает для всех банков, за исключением нескольких попавших под санкции.

Сразу хочу предупредить, что SWIFT-перевод будет идти несколько дней, за отправку платежа ваш банк может брать комиссию, плюс по дороге что-то могут "откусить" банки-посредники, однако чаще всего это будут незначительные суммы. Однозначным плюсом в этом случае является отсутствие конвертации: если у вас на счету есть доллары, то вы можете отправить платеж прямо в этой валюте, и получатель получит тоже доллары.

Ниже я подготовил список зарубежных хостеров, которые принимают оплату на банковский счет. Прошу учесть, что оплата банковским переводом чаще всего не автоматизирована, для этого может понадобится написать в техподдержку.

Читать далее

Кастомный JsonConverter: уменьшаем связность и экономим ресурсы

Время на прочтение9 мин
Количество просмотров12K

Рассматриваем некоторые возможности, которые нам предоставляет кастомный JsonConverter.

Читать далее

.xlsx изнутри. Разбор структуры файлов. Разбор каждого .xml файла

Время на прочтение25 мин
Количество просмотров63K

Это статья о разборе excel изнутри. Вы узнаете как работать со стилями ячеек, листов через xml, как вносить данные и формулы в ячейки и мого другого.

Читать далее

Worker Services в .NET

Время на прочтение5 мин
Количество просмотров9.4K

Написание воркер-сервисов на .NET часто сопряжено с написанием большого количества повторяющегося boilerplate-кода. Однажды мне это надоело и я попытался успростить этот процесс, перенеся часть бойлерплейта в отдельную библиотеку, которой и посвящена эта статья.

Читать далее

Информация

В рейтинге
2 050-й
Откуда
Минск, Минская обл., Беларусь
Дата рождения
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Архитектор программного обеспечения
Ведущий
От 1 000 000 $
C#
.NET
C++
Git