Search
Write a publication
Pull to refresh
4
Евгений @Mellornread⁠-⁠only

В настоящее время занимаюсь web-разработкой

Send message

Индексирование полнотекстовых данных в PostgreSQL с использованием модуля pg_trgm

Level of difficultyEasy
Reading time11 min
Views20K

Привет, Хабр!

PostgreSQL, одна из самых мощных и гибких реляционных СУБД, предлагает нам свой модуль pg_trgm, чтобы решить сложную задачу полнотекстового поиска.

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

Итак, что такое pg_trgm? Этот модуль PostgreSQL предоставляет набор функций и операторов, которые позволяют работать с трехграммами (триграммами) - это последовательности из трех символов. Для понимания, давайте взглянем на пример...

Читать далее

Как мы TLS Fingerprint обходили…

Reading time6 min
Views37K

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

Видимо сайт добавил наш прокси в blacklist, но в нашем пуле около 100к проксей, все прокси попали в blacklist?

Попробовав запустить парсер на другом сервере, HTTP запросы возвращали корректные данные. Спустя неделю, ситуация повторилась.

Мы также попробовали отправить запрос на локальной машине с "забанненым" прокси, на удивление, данные пришли корректные, но отправив запрос с этим же прокси на сервере, получили фейковые. Отсюда вытекает вопрос: как сайт определяет, что запросы посылаются с одной машины, если используются прокси?

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

Читать далее

Деплой приложения на сервер через push в Git. Или как перенести сайт или бот на хостинг в 3 действия

Level of difficultyMedium
Reading time4 min
Views13K

Когда проект создан, его требуется где-то разместить, чтобы он работал 24/7. В статье мы изучим два способа деплоя приложения на облачный сервер. В первом сценарии мы рассмотрим деплой через отправку кода в выделенный Git-репозиторий. Во втором сценарии мы осуществим аналогичную операцию, но загрузим файлы через графический интерфейс. Оба способа предполагают деплой буквально за 5-10 минут. 

В качестве примера приложения возьмем API для TODO-заметок на языке Python. Вы можете подобным способом перенести на хостинг любой свой сайт или бот, написанные на Java, Node.JS и т.д.

Вот код самого приложения.

Читать далее

8 углубленных вопросов на собеседованиях на роль сеньора в JavaScript

Level of difficultyMedium
Reading time13 min
Views33K
image

JavaScript — это мощный язык, который является частью фундамента интернета. У этого мощного языка также есть некоторые свои особенности. Например, знаете ли вы, что значение 0 === -0 равно true, или что Number("") дает 0?

Дело в том, что иногда эти причуды могут заставить вас почесать в затылке или даже задаться вопросом, был ли Брендан Эйч под кайфом в тот день, когда он изобретал JavaScript. Что ж, дело здесь не в том, что JavaScript — плохой язык программирования или он — зло, как говорят его критики. Со всеми языками программирования связаны какие-то странности, и JavaScript не является исключением.

В этом материале мы покажем подробное объяснение некоторых важных вопросов на интервью по JavaScript. Моя цель будет состоять в том, чтобы тщательно объяснить эти вопросы, чтобы мы могли понять лежащие в их основе концепции.
Читать дальше →

Обзор невизуальной доступности смартфонов под управлением операционной системы Android

Level of difficultyEasy
Reading time9 min
Views3.7K

Задумывались ли вы о том, как незрячие люди используют смартфон? Для этого существуют программы экранного доступа или скринридеры. Они проговаривают всё то, что зрячие пользователи видят на экране. Именно благодаря таким программам, незрячие люди могут работать на смартфоне с теми же приложениями, что и пользователи без инвалидности по зрению: заказывать такси, пользоваться маркетплейсами, общаться в мессенджерах.

На устройствах компании Apple скринридер достаточно просто активировать и настроить. А вот при использовании смартфонов с операционной системой Android у людей с инвалидностью по зрению возникает много вопросов. В статье мы расскажем о том, как подобрать смартфон на базе операционной системы Android, чем отличаются по доступности популярные модели, на что важно обращать внимание незрячему человеку или родственнику незрячего школьника.

Читать далее

Какой длины должны быть классы — когда «чистый» код на самом деле не так уж и хорош

Reading time6 min
Views14K

Привет, Хабр!

Наши коллеги из beeline cloud подкинули интересную статью для перевода про разработку на PHP, плохие практики и не только. Это история о том, как правила чистого кода могут подорвать его фактическое качество. Материал содержит много рассуждений на эту тему и будет полезен всем, кто только начинает свой путь в разработке. Приятного чтения!

Иду читать

У медуз нет мозга, но они способны обучаться на своих ошибках. Как это работает?

Reading time4 min
Views12K

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

Читать далее

Развенчиваем распространённые мифы о телефонных аккумуляторах

Reading time4 min
Views40K

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

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

Со временем химическое старение литий-ионных батарей приводит к снижению ёмкости, срока службы и производительности.

Читать далее

Теперь популярный авторский контент на Хабре пишут школьники с соответствующим результатом?

Level of difficultyEasy
Reading time4 min
Views32K

Ни для кого не секрет, что отношение шума к сигналу на Хабре неуклонно растет (в рассылке я лично вижу в основном 3 типа статей - популизм про AI, корпоративная реклама и желтые "жжёные" статьи про рынок IT). Многие "настоящие" авторы уходят с Хабра потому, что просто качественный технический контент может пройти незамеченным, а как показала практика пользователи, создающие уникальный авторский контент, могут быть не всегда или не во всём равны с корпорациями, создающими выручку. Про политику говорить не буду, но и тут есть причины.

Логично, что как и на любом "выжившем" ресурсе создавшийся вакуум заполнят авторы с пониженным уровнем критического мышления или ответственности (мы это кстати ярко видим на Пикабу, после отмены "минусов"). Зачем же я пишу эту статью? Совсем недавно на Хабре вышла статья, и судя ее оценкам, публике она зашла.

В статье сравнивались разные системы синтеза речи, в частности публичная версия нашего синтеза речи и решения гига-корпораций. Мнение автора просуммирую точной цитатой: "Даже на таком небольшом тесте мы видим, как отстает силеро. … Конечно, такое небольшое сравнение не сможет показать всей картины, но мы уже видим примерное качество. …  Я не питаю к Silerо tts никакого негатива, но после слов про 100% решения ударений в этой статье, и убедившись в обратном на основании результатов теста, слегка разочарован."

И вы спросите что с этим не так? Человек бесплатно прорекламировал нас в одном ряду с компаниями, кто проинвестировал в свои решения на 2-3 порядка больше денег. Но есть один нюанс.

И какой же нюанс?

Постановка задачи (Job) в очередь Laravel из хранимой процедуры или триггера PostgreSQL

Level of difficultyEasy
Reading time9 min
Views5.4K

Можно ли заставить приложение на Laravel реагировать на события, происходящие в функциях и триггерах СУБД PostgeSQL? Если повезёт с конфигурацией приложения, то можно. Используя задания и очереди Laravel.

Увлекательный туториал на примере простейшего приложения.

Читать далее

Прививка от ошибки выбора: что спросить работодателя «на берегу»

Level of difficultyEasy
Reading time13 min
Views25K

Меня зовут Настя, я руководитель службы инструментов репозитория в Yandex Infrastructure. Больше 15 лет я проработала в IT-индустрии: сначала как разработчик, потом тимлид, техлид, менеджер проектов и руководитель службы. За это время несколько сотен человек рассказали мне о своём карьерном пути: кто-то собеседовался со мной как с нанимающим менеджером, кто-то приходил ко мне на менторинг, кто-то расширял свой нетворк, как теперь модно говорить. Из этих разговоров можно выделить причины недовольства работой, которые я вижу у людей чаще остальных. Одна из главных причин — ошибка выбора вакансии.  

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

Читать далее

Vue.js 3 — шаблоны проектирования и лучшие практики

Level of difficultyMedium
Reading time2 min
Views15K

Предлагается перевод книги Vue.js 3 Design Patterns and Best Practices автора Pablo Garaguso.

Книга вышла в мае 2023 года, написана очень компетентно, оперирует современными технологиями и стандартами. Материал книги будет полезен разработчикам не только Vue, но и других фронтенд фреймворков.

Читать далее

Импорт базы ГАР для нормализации собственной адресной базы в Laravel 10. Часть II, пишем консольное приложение

Level of difficultyEasy
Reading time39 min
Views5K

В предущей части

Исследование выгрузки базы ГАР


Что в этой части?

Создание консольного приложения Laravel, способного по команде artisan загрузить свежую выгрузку с сервера ГАР, распарсить её, занести данные в таблицы, используя многопоточность, и выдать данные в удобном табличном виде, используя представление базы данных.

Не требует web-сервера и запущенных воркеров Laravel.

Готовое приложение, расположенное на github.com прилагается.

В качестве бонуса: реализация «актуализации» устаревшей, но тем не менее, годной к употреблению информации.

Читать далее

Web Workers в JavaScript: Параллельные вычисления и улучшение производительности

Level of difficultyMedium
Reading time8 min
Views20K

В современном мире пользователи становятся все более требовательными к производительности веб‑сайтов и хороший пользовательский опыт выходит на первый план. Даже малейшее зависание или отсутствие плавности могут привести к потере пользователей.

Есть случаи, когда эту проблему можно решить с помощью Web Workers, про них я и расскажу вам далее!

Бустануть производительность

Вальяжной походкой по HTTP-заголовкам

Level of difficultyEasy
Reading time8 min
Views13K

Статья по основам HTTP‑заголовков, обеспечивающим безопасность, а также методы их использования. То есть будем разбираться какие заголовки безопасности существуют, какие директивы у них есть, какие методы использования возможны, и от чего мы вообще можем защититься, если будем их применять.

Разбора конфигов Web‑сервера не будет, будут только заголовки, их директивы и пояснения с примерами.

Давайте разбираться

«Импортозамещение» в видеонаблюдении. Часть вторая: Si-Cam обиделся

Level of difficultyEasy
Reading time2 min
Views34K

Представители Si-Cam хотят подать на меня в суд, за то что я вскрыл китайское происхождение их IP-камер, включенных в реестр РЭП как российские.

Читать далее

Persistent-request библиотека для надежных запросов

Level of difficultyMedium
Reading time3 min
Views3.3K

Всем привет!

В этой статье расскажу, как решил написать библиотеку https://packagist.org/packages/xman12/persistent-request и что там внутри.

Как и любая библиотека, эта решает свои задачи, а именно гарантированное выполнение запроса и последующую обработку. Я находил, как минимум, одно решение, которое работает с подобной проблематикой — это temporal.io, но система монструозная, а мне хотелось, чего-то более легкого и приземленного, поэтому я решил написать свое решение этой задачи.

Читать далее

REST API vs GraphQL: в чём между ними разница

Reading time7 min
Views17K

Сегодня в среде разработчиков часто продвигают GraphQL в качестве замены REST, хотя обе технологии можно использовать одновременно. В этой статье Анастасия Иванова, технический писатель платформы МТС Exolve (входит в экосистему МТС), рассмотрит интерфейсы подробнее, чтобы понять, как выбрать подходящее решение под каждый конкретный проект. Подробности — под катом.

Читать далее

Реляционные системы управления базами данных становятся проблемой. Что с этим делать?

Reading time9 min
Views22K

С реляционными базами данных я знаком очень давно, с конца 90-х. Мои первые шаги в мире компьютеров и программирования связанны именно с ними. Реляционным БД было отведено особое место в моей образовательной программе и стажировке на инженера-программиста. Они преследовали меня на протяжении всей моей карьеры. Я буквально провалился на самое дно кроличьей норы реляционных систем управления базами данных (РСУБД) – и до сих пор люблю их.

За годы работы я испробовал практически все РСУБД, а их попадалось мне немало: MySQL, Postgres, Oracle, Microsoft SQL Server, DBase, Access, SQLite, DB2, MariaDB, AWS RDS, Azure SQL, Google Cloud SQL. Нельзя любить РСУБД, если не любишь SQL, а это отдельная вселенная. И не все SQL одинаковы. Есть MySQL со своим собственным жаргоном, есть T-SQL от Microsoft и всемирно известный PL/SQL от Oracle. Наверное, не стоит упоминать, что все они несовместимы друг с другом.

Читать далее

Микросервисы победили. Или не совсем

Level of difficultyMedium
Reading time8 min
Views14K

«Мы хотим сделать систему по учету персонала. Только у наших архитекторов есть требование, что все у нас должно быть на микросервисах». Это, пожалуй, самый бесячий заход, который нам приходится слышать, как разработчику Jmix – платформы быстрой разработки корпоративных веб-приложений. Почему только микросервисы? Какие проблемы, кроме независимого развертывания они решают? Это действительно необходимо для всех типов приложений? Мы, для полного понимания, ни в коем случае не являемся противниками микросервисной архитектуры, однако неистово сопротивляемся слепому следованию «карго культа». Часто случается, что ничего, кроме удорожания разработки, поддержки и эксплуатации такие решения не приносят. Собственно, об этом и пишет Nikolas Frankel, автор статьи, перевод которой представлен ниже.

Читать далее

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity