Pull to refresh
8
0
Artemy @lartie

Server-side

Send message

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

Level of difficultyEasy
Reading time11 min
Views12K

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

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

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

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

Читать далее
Total votes 18: ↑16 and ↓2+19
Comments12

Я разработчик, а не компилятор

Level of difficultyEasy
Reading time3 min
Views53K

Недавно у меня было телефонное собеседование, на котором мне задавали разнообразные вопросы по Java. Это стандартное собеседование, и большинство вопросов тоже было вполне стандартным:

Что такое полиморфизм?

В чём разница между List и Set? Когда стоит использовать первое, а когда второе?

Где можно столкнуться со взаимной блокировкой (deadlock)?

В чём разница между строгой и слабой типизацией?

В основном вопросы были вполне закономерными. Лично мне не нравится вопрос про полиморфизм, ведь он настолько тесно связан с большинством объектно-ориентированных языков и наследованием, что многие люди, используя его (например, при переопределении или перегрузке метода), даже не думают «О! Это же полиморфизм в действии!». Вместо этого я бы задал вопрос «Что такое наследование, и где оно используется», потому что в большинстве объектно-ориентированных языков для него есть ключевое слово или паттерн. Но это уже мои личные предпочтения, и я вполне понимаю логику проводившей собеседование компании.

Читать далее
Total votes 118: ↑109 and ↓9+127
Comments201

Анонимный Дед Мороз снова на Хабре

Level of difficultyEasy
Reading time3 min
Views44K

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

А тут хвастаемся подарками

Читать далее
Total votes 133: ↑133 and ↓0+133
Comments155

Не пельменем единым жив программист или история о том, как все успеть

Reading time7 min
Views137K
image

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

На написание этого поста меня сподвиг замечательный пост «За что конкретно я ненавижу некоторых отдельно взятых маркетологов — или как айтишник по магазинам ходил». Сразу хочу извиниться за возможные опечатки — пишу с планшета, сидя в микроавтобусе и вытягивая сеть телефоном. Hacker's keyboard очень удобен для ssh-доступа, но большие тексты писать им не очень удобно.

IT- специалисты — народ любопытный. То соберут на базе микроконтроллеров автоматическую систему полива и освещения для любимого фикуса, то пропатчат прошивку мультиварки для раздачи торрентов. Но, по непонятной и загадочной причине, когда дело доходит до еды, пресловутый принцип DIY дает сбой. И наш герой, способный часами переделывать кинескоп старого телевизора в Луч Смерти, идет на кухню утолить голод соевым текстуратом пополам с гидроцеллюлозой и «коллагеновым сырьем».

В этом посте я хочу разрушить миф о том, что еда может быть либо быстрой и удобной, либо съедобной. Не секрет, что многим из нас приходится работать по 12 часов в сутки, что не способствует кулинарным подвигам с участием 28 приправ и перьев с зада дракона, омытых слезами единорога. Вы получите замечательную возможность посмотреть в глаза своей половинки на 8 марта после того, как она получит не контроллер для дистанционного управления шторой, а свежевыпеченный хлеб ручной работы рано утром. Если вам надоело есть синтетику — добро пожаловать под hubracut.
Читать дальше →
Total votes 269: ↑263 and ↓6+257
Comments293

Domain fronting для чайников, и как его использовать для обхода блокировок

Level of difficultyMedium
Reading time11 min
Views44K

Давайте сразу вопрос на засыпку: может ли быть так, что клиент подключается, ну, например, к серверу www.python.org (самому настоящему, тому, к которому обращаются еще миллионы клиентов со всего мира), а потом использует его как прокси и гоняет через это подключение трафик до своего VPS для доступа в неподцензурный интернет? Если вы не уверены в ответе на этот вопрос или почему-то ответили "нет", то добро пожаловать в статью.

Я уже не раз рассказывал здесь о технологии XTLS-Reality (1, 2, 3) суть которой в том, что ваш прокси-сервер VPS может очень достоверно маскироваться под какой-нибудь популярный веб-сайт - принимать подключения, которые будут выглядит точно так же, как обращения к настоящему сайту, отвечать на них полностью аутентичным TLS-сертификатом, и в целом вести себя как тот настоящий сайт. Единственная проблема - сам IP-адрес. Немного подозрительно, когда к какому-нибудь якобы www.google.com постоянно обращается только один пользователь, а IP-адрес этого сервера на самом деле даже не относится к автономной сети Google.

Еще я рассказывал о разных вариантах проксировать трафик посредством вебсокетов и простых HTTP-туннелей через различные CDN, такие как Cloudflare и Gcore. Вероятность того, что под блокировку попадет вся CDN гораздо ниже, чем что забанят какой-то один сервер или диапазон хостера, но та схема требовала регистрацию своего домена для работы через CDN.

И наверняка многим в голову приходила идея, а нельзя ли как-нибудь совместить эти два механизма? Проксироваться через CDN, но при этом "прикрываясь" каким-нибудь чужим доменом? Ответ: да, можно, и сейчас мы посмотрим, как именно.

Читать далее
Total votes 61: ↑60 and ↓1+73
Comments45

Пароль не нужен. Разбиение файла на зашифрованные фрагменты по схеме Шамира

Reading time4 min
Views13K


После того как Google отказалась от паролей и перешла на Passkey по умолчанию создаётся впечатление, что концепция текстовых паролей (парольных фраз) сама по себе устарела. И действительно, в некоторых случаях можно добиться достаточного уровня безопасности без паролей вообще.

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

*Крестраж — волшебный артефакт, созданный с помощью тёмной магии, из вселенной Гарри Поттера.
Читать дальше →
Total votes 24: ↑23 and ↓1+29
Comments14

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficultyMedium
Reading time15 min
Views244K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Total votes 273: ↑272 and ↓1+323
Comments343

Профилирование и трейсинг с perf

Reading time1 min
Views26K
Учимся дебажить с perf — целых 18 страниц про основные подкоманды, фичи и устройство инструмента. Джулия рекомендует; “Я даже использовала его несколько раз для профилирования Ruby программ!”

Уровень сложности — для суперпродвинутого администратора.

Когда нужно отыскать причину сбоя, не имея доступа к исходным кодам. Все логи уже просмотрены, все debug и verbose-ключи включены, а причина проблем так и не обнаружена — используйте perf. Потребуется навык кодинга на языках типа Си.


Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments13

Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто

Level of difficultyEasy
Reading time11 min
Views375K

В серии предыдущих статей я описывал, почему повсеместно используемые VPN- и прокси-протоколы такие как Wireguard и L2TP очень уязвимы к выявлению и могут быть легко заблокированы цензорами при желании, обозревал существующие гораздо более надежные протоколы обхода блокировок, клиенты для них, а также описывал настройку сервера для всего этого.

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

Кроме того, что этот протокол еще более устойчив к выявлению, приятным фактом будет и то, что настройка сервера XTLS-Reality гораздо проще, чем описанные ранее варианты - после предыдущих статей я получил довольно много комментариев типа "А что так сложно, нужен домен, нужны сертификаты, и куча всего" - теперь все будет гораздо проще.

Читать далее
Total votes 37: ↑37 and ↓0+37
Comments306

Добавляем Refresh Token

Reading time4 min
Views133K


В прошлой статье я рассказывал про основы JWT. Если на пальцах, то это просто ключ, с помощью которого мы открываем дверь к приватным ресурсам. А что, если этот ключ украдут (точнее, сделают дубликат). Тогда кто-то еще сможет входить на сервер под вашим именем, причём мы об этом можем даже не узнать. Такого сценария мы не хотим допустить. Но что делать?

Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments26

Я иду искать: геопозиционирование хоста по IP-адресу в глобальной сети Интернет на примере криптобиржи Binance

Reading time12 min
Views18K

В статье рассмотрены методы геопозиционирования сетевых интерфейсов по IP-адресу на примере API-сервиса криптобиржи Binance. Геопозиционирование основано на дистанционно-временных моделях пересчета времени кругового обхода (RTT) в дистанцию и определения примерного местоположения сетевого интерфейса.


Современным электронным сервисам очень важно знать о географическом местоположении клиентов для «тонких» настроек своих маркетинговых процессов. Повсеместно используются разные техники геопозиционирования пользователей, основанные на привязке к базовым станциям мобильной связи и точкам доступа Wi-Fi. Однако существует целый ряд других задач, для решения которых необходимо знать геопозицию не самого пользователя, а сервера и его сетевого интерфейса. Такие сервисы, как MaxMind (безусловный отраслевой лидер), широко известны публике (можно также почитать здесь), но в целом в сети мало материала в открытом доступе, посвященного технологическим вопросам глобального геопозиционирования хоста по его IP-адресу. В этой статье мы расскажем о некоторых решениях в этой предметной области и поделимся результатами наших исследований.


За подробностями следуйте под кат.

Читать дальше →
Total votes 8: ↑7 and ↓1+8
Comments4

История компьютерных стратегий. Часть 4: великий и ужасный «Warcraft», внебрачный сын «Dune 2»

Level of difficultyEasy
Reading time10 min
Views15K

В прошлой части мы обсудили появление на свет Civilization и Dune II, ставших настоящими вехами в развитии компьютерных стратегий. В особенности это касается «Дюны 2», из которой выросли чуть менее чем все стратегии в реальном времени. И это не просто красивая фраза: хит по мотивам саги Фрэнка Герберта напрямую породил две последующие великие игры, братьев-конкурентов, определивших дальнейшее развитие жанра. А именно — «Warcraft: Orcs & Humans» от Blizzard и «Command & Conquer: Tiberian Dawn» от Westwood Studios. Они так же выросли из «Dune II», как «Doom 2» — из «Wolfenstein 3D».

Сегодня поговорим о том, как почти случайно, из попыток усовершенствовать «Дюну» и принятых «на коленке» решений, появился на свет мир «Warcraft».
Читать дальше →
Total votes 60: ↑59 and ↓1+75
Comments15

GraphQL и Golang

Reading time16 min
Views33K
Технология GraphQL за последние несколько лет, после того, как компания Facebook перевела её в разряд опенсорсных, стала весьма популярной. Автор материала, перевод которого мы сегодня публикуем, говорит, что попробовал работать с GraphQL в среде Node.js и на собственном опыте убедился в том, что эта технология, благодаря её замечательным возможностям и простоте, неслучайно привлекает к себе столько внимания. Недавно он, занимаясь новым проектом, перешёл с Node.js на Golang. Тогда он и решил испытать совместную работу Golang и GraphQL.


Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments11

200+ подкастов про информационную безопасность и хакерские атаки

Reading time26 min
Views18K

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

Читать далее
Total votes 23: ↑22 and ↓1+22
Comments2

Почему новые домены .zip и .mov — подарок «Гугла» мошенникам

Reading time7 min
Views36K

В последние годы обширный список доменов первого уровня (top level domains, TLD) регулярно пополняется: всё чаще в дополнение к обычным доменам .com, .org, .ru, .net стали встречаться домены .aero, .club итд.

Следуя за спросом, Google анонсировал в мае 8 новых доменов, включая два неотличимых от популярных расширений файлов адреса: .zip и .mov. От остальных доменов верхнего уровня эти два отличаются тем, что соответствующие URL крайне трудно отличить от имен файлов с таким же расширением. IT и ИБ-специалисты немедленно подняли тревогу о проблемах этого TLD: возможная путаница, ошибки в обработке ссылок и новые схемы фишинга.

Не прошло и месяца, как уже были обнаружили первые примеры реального фишинга с использованием этого подарка Google скамерам. Бороться с этим можно и нужно, но не лучше ли было бы просто признать ошибку и разделегерировать эти домены насовсем?

Читать далее
Total votes 77: ↑77 and ↓0+77
Comments107

Создание сервера для онлайн ММО игр на PHP ч. 10 — Открытый бесшовный мир в 2D игре

Level of difficultyEasy
Reading time4 min
Views4.6K

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

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments13

За что Интернеты полюбили Ктулху? Часть 3: как Ктулху выплыл из тьмы забвения и при чём тут гики

Level of difficultyEasy
Reading time10 min
Views7.4K

Ктулху, как известно, фхтагн. А также мем, кандидат в президенты США, персонаж бесчисленных комиксов и один из любимых героев Интернетов. Несмотря на всю свою мрачность, хтоничность и фхтагничность, а возможно — как раз благодаря им. Как получилось, что существо из совершенно не «выстрелившей» в годы выхода новеллы малоизвестного автора превратилось в культовую во всех смыслах фигуру, легко узнаваемую любым завсегдатаем Сети?

В первой статье мы начали говорить о Ктулху: кто он такой по канону, чем занимается (спойлер: в основном дрыхнет на дне и иногда икает), где живёт на этом самом дне и почему ему на голову могла упасть советская станция «Мир». Во второй обсудили, откуда Ктулху взялся в фантазиях Лавкрафта именно такой, со всеми его щупальцами, крыльями и пузом — ведь в мировой культуре прямого аналога такой фигуры не существовало. Ну а теперь проследим путь Ктулху из безвестности на момент публикации первого рассказа к массовой известности в конце ХХ — начале ХХI века.
Читать дальше →
Total votes 43: ↑39 and ↓4+56
Comments3

Легенда о слоне: как IT-компания Steepler создала Dendy и основала российский консольный рынок

Level of difficultyEasy
Reading time49 min
Views35K
image
Dendy Junior II Автор: Ravy

Рисковый проект, который осчастливил миллионы детей.

17-го декабря 2022-го года исполнилось 30 лет с момента выхода Dendy на российский рынок. Кажется, что за последние десять лет о консоли сказали уже всё: популярные ютуберы регулярно делятся историями об играх своего детства, а блогеры и коллекционеры давно разобрали все виды картриджей и особенности клонов Nintendo Famicom.

Но эти материалы зачастую поданы через призму ностальгии и детских воспоминаний. Для полноты картины не хватало только всеобъемлющей бизнес-истории бренда, которая охватила бы весь период от запуска Dendy на российский рынок до закрытия компании Steepler.

Изначально этот текст я написал эксклюзивно для российского издания третьего тома серии «История Nintendo» от Флорана Горжа. С разрешения издательства «Белое Яблоко» я адаптировал материал и сильно дополнил его.
Читать дальше →
Total votes 144: ↑143 and ↓1+174
Comments74

OpenPGP-модуль для Gmail

Reading time1 min
Views17K
Специалисты из немецкой компании Recurity Labs разработали JavaScript-реализацию стандарта OpenPGP (RFC 4880) для подписи и шифрования писем в почтовых веб-интерфейсах. Таким образом, PGP-криптография доступна прямо в браузере без установки дополнительного софта.



Модуль GPG4Browsers реализован в качестве расширения для Google Chrome и работает только с Gmail, но не должно стать проблемой переделать его для другого браузера и/или почтового сервиса, ведь исходные коды открыты.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments28

Перспективы межпланетной синхронизации времени и что будет после GPS

Reading time13 min
Views9.9K

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

Читать далее
Total votes 53: ↑49 and ↓4+62
Comments22
1
23 ...

Information

Rating
Does not participate
Works in
Date of birth
Registered
Activity

Specialization

Backend Developer, System Software Engineer
Senior
From 4,000 $
Git
Linux
SQL
PostgreSQL
Docker
Golang
High-loaded systems
PHP
Redis
OOP