Pull to refresh
-1
0
Send message

Создаем свой VPN с защищенным от блокировок протоколом AmneziaWG, или WireGuard на максималках

Reading time4 min
Views144K


Всем привет! Возможно уже совсем скоро разные новостные и  IT-ресурсы будут подчищать информацию о способах обхода блокировок. А пока этого не случилось, запасаемся полезными гайдами и разворачиваем свои собственные VPN с защищенными от блокировок протоколами. Расскажу как это сделать, как изменилась Amnezia и как мы защитили WireGuard от блокировок.

Читать далее
Total votes 115: ↑113 and ↓2+111
Comments123

Настраиваем двухступенчатый WireGuard для выхода из страны

Level of difficultyMedium
Reading time4 min
Views43K

У Wireguard есть немало прекрасного, включая его простоту реализации, скорость и минималистичные клиенты, которые не вызывают проблем у пользователей.

В начале августа некоторые интернет операторы и провайдеры начали блокировку протокола WireGuard в РФ по его рукопожатию.

Лично испытывал блокировку у Мегафон и Теле2, но не заметил у Ростелеком. VPN по-прежнему работал через последнего.

Очень не хотелось отказываться от Wireguard в пользу прокси-серверов в духе VLESS+TLS-Vision, в виду того, что все наши пользователи уже сильно привыкли именно к Wireguard.
Поэтому вариант с кардинальной сменой клиентского софта не рассматривался.

Поскольку трафик Wireguard блокируется только на зарубежные адреса было принято решение добавить еще один хоп в систему, а начальное подключение осуществлять к серверу в РФ.

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

AI доступный каждому разработчику

Level of difficultyHard
Reading time8 min
Views7K

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

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

Казалось бы, есть и локально запускаемые аналоги ChatGPT или сервисов генерации изображений. Есть библиотеки типа llama.cpp - бери и используй! Но если бы было всё так просто, то не было бы этой статьи.

Для тех, кто не может ждать, можете посмотреть, чего теперь можно добиться относительно быстро:

Читать далее
Total votes 19: ↑18 and ↓1+17
Comments19

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Level of difficultyEasy
Reading time8 min
Views182K

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

Я решил посвятить свою первую статью SQL. Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.

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

Читать далее
Total votes 191: ↑184 and ↓7+177
Comments177

Обход блокировки «Тиндера» — простой метод

Level of difficultyEasy
Reading time5 min
Views48K

20 июня 2023 года приложение для знакомств Tinder (США) заблокировало пользователей из РФ. Если конкретно, на сайте tinder.com и в мобильном приложении теперь нельзя авторизоваться с российских IP-адресов.

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

Это универсальный вариант не только для «Тиндера», но и на все случаи жизни. В наше время без своего VPN за границей тяжело полноценно пользоваться интернетом.
Читать дальше →
Total votes 36: ↑32 and ↓4+28
Comments40

Собеседования для бэкендеров: как готовиться, тренироваться и не облажаться

Level of difficultyEasy
Reading time5 min
Views12K

Привет, Хабр! Меня зовут Гриша Скобелев, я бэкенд-разработчик, у меня есть гитара, кошка и скейтборд. Я так сильно люблю Spring Framework, что назвал кошку в честь него — Веснуша. Возглавляю программный комитет Podlodka Java Crew, где мы делаем классные конференции. Еще я организовал книжный клуб для бэкенд-разработчиков { между скобок }. Хочу поделиться своим опытом развития бэкендера — от собеседования до наработки разных навыков для роста. Тут будет много ссылок, практических советов и инструкций, которые я наработал за время своей карьеры, общения с другими бэкендерами и проведения конференций и консультаций.

Читать далее
Total votes 25: ↑22 and ↓3+19
Comments15

Доработка метода ZettelKasten до эффективного инструмента по вытаскиванию самого себя из глупости

Level of difficultyMedium
Reading time6 min
Views13K

Как я доработал метод структурирования информации ZettelKasten для своих задач, и успешно (и с комфортом!) применяю его в повседневной жизни.

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

Как создать переводчик, который переводит лучше, чем Google Translate

Reading time8 min
Views27K

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

В этот раз я решил окунуться немного в прошлое и сделать то, что хорошо сделать тогда у меня не получилось.

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

YARL: как Яндекс построил распределённый Rate Limiter с нулевым влиянием на время ответа сервисов

Reading time14 min
Views26K

Yandex Rate Limiter (далее просто YARL) — это сервис лимитирования нагрузки для распределённых сервисов. Его особенность в том, что он способен работать с миллионами квот, имея при этом очень низкие накладные расходы на проверку квоты. Если совсем кратко, это система распределённых Leaky Bucket'ов, с помощью которых можно ограничивать разные величины, связанные со временем: скорость передачи данных по сети, запросы в секунду и т. п.



Меня зовут Денис Кореневский, я работаю в службе разработки внутреннего хранилища Яндекса, и сегодня я расскажу, как YARL устроен внутри, почему мы вообще написали своё решение и с какими трудностями нам пришлось столкнуться в процессе создания. Добро пожаловать под кат.

Читать дальше →
Total votes 80: ↑79 and ↓1+78
Comments26

Все английские времена в одной простой схеме

Reading time3 min
Views219K

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

Как это часто бывает, по-настоящему понимаешь какую-то тему, только когда начинаешь рассказывать о ней другим («метод Фейнмана»). Несколько друзей, позавидовав моим «успехам», попросили помочь разобраться с английским. Тут и обнаружилось, что хотя я уже успешно использую английский в повседневной работе, обучать ему кого-то ещё — это совершенно отдельный навык.

Первоначальная идея. Сначала разъяснить все английские времена за один присест удавалось, надёргав различных идей из интернета: обрывки чьих-то схем, начинали склеиваться в свою схему и обрастать собственными легендами, а применение времён почти всегда было проще пояснить, используя хрестоматийную «систему английских времен с точки зрения употребления глагола “to vodka”». С каждой новой импровизированной лекцией, схема и нарратив продолжали меняться. «Ученики» попадались с различным базовым уровнем, что позволило понять, откуда нужно начинать плясать, чтобы урок был понятен всем, кто хоть раз слышал что-то про глаголы have и be. Когда счёт обученных уже пошёл на десятки, я решил оформить идею в более стройную лекцию. От первых попыток преподавания английских времён, до этого момента прошло пять лет. За это время было обучено ещё пару сотен человек. Обучено — по приколу. Денег за эти уроки я не брал.

Читать далее
Total votes 69: ↑66 and ↓3+63
Comments130

Отложенные задачи в рамках микро-сервисной архитектуры

Reading time9 min
Views16K

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

Для решения такой задачи было создано очередное решение под названием Trigger Hook. Принципиальная схема работы показана на рисунке 1. На схеме показано, что происходит с заданиями в течения всего их жизненного цикла. Смена цвета означает смену статуса задачи.

Читать далее
Total votes 27: ↑25 and ↓2+23
Comments17

Как я готовился к собеседованию в Google

Reading time9 min
Views48K
Каждый инженер-программист стремится впечатлить людей своим техническим мастерством. Технологические гиганты этого мира — прекрасное место для работы технарей, которые могут предоставить услуги миллиардам пользователей. На моём недавнем собеседовании было несколько раундов, я получил предложения от Google и Amazon. В последние несколько лет онлайн-сообщество очень помогло мне в подготовке к собеседованиям. В этом посте я поделюсь всем о моём пути к собеседованию и верну вклад общества в моё обучение.


Приятного чтения!
Total votes 55: ↑50 and ↓5+45
Comments77

Открытые материалы от Computer Science центра, часть 1

Reading time3 min
Views12K
Computer Science Center — это совместная инициатива Computer Science клуба при ПОМИ РАН, компании JetBrains и Школы анализа данных Яндекса.

Центр существует, чтобы дать возможность талантливым студентам и выпускникам развиваться в интересных им направлениях: Computer Science, Data Science или Software Engineering.

В этой части выкладываем записи наших популярных онлайн-курсов на Stepik и напоминаем о том, что до 11 апреля открыт новый набор в CS центр в Санкт-Петербурге и Новосибирске.


Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments3

О работе ПК на примере Windows 10 и клавиатуры ч. 1

Reading time16 min
Views108K
image

Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Читать дальше →
Total votes 85: ↑78 and ↓7+71
Comments412

Перегрузка в C++. Часть II. Перегрузка операторов

Reading time31 min
Views127K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов. Особое внимание уделено использованию перегруженных операторов в стандартной библиотеке. Это вторая статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь. Следующая статья будет посвящена перегрузке операторов управления памятью.


Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments17

Перегрузка в C++. Часть I. Перегрузка функций и шаблонов

Reading time30 min
Views65K

C++ сложный и интересный язык, совершенствоваться в нем можно чуть ли не всю жизнь. В какой-то момент мне захотелось изучать его следующим образом: взять какой-то аспект языка, возможно довольно узкий, и разобраться с ним максимально глубоко и подробно. Такой подход в значительной степени был стимулирован замечательными книгами Скотта Мейерса, Герба Саттера и Стефана Дьюхэрста. Когда накопилось определенное количество материалов, решил познакомить с ними Хабровчан. Так появилась эта серия, которую я назвал «C++, копаем вглубь». Серия помечена как Tutorial, но ориентирована она все-таки не на начинающих, а скорее на intermediate уровень. Первая тема — это перегрузка в C++. Тема оказалась очень обширной и получилось три статьи. Первая статья посвящена перегрузке функций и шаблонов, вторая перегрузке операторов и третья перегрузке операторов new/delete. Итак, начнем копать.


Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments14

Сверхсовременные иммутабельные структуры данных

Reading time22 min
Views30K
Годами эксперты в С++ рассуждают о семантике значений, иммутабельности и разделении ресурсов за счет коммуникации. О новом мире без мьютексов и гонок, без паттернов Command и Observer. На деле все не так просто. Главная проблема по-прежнему в наших структурах данных.



Иммутабельные структуры данных не меняют своих значений. Чтобы что-то с ними сделать, нужно создавать новые значения. Старые же значения остаются на прежнем месте, поэтому их можно без проблем и блокировок читать из разных потоков. В итоге ресурсы можно совместно использовать более рационально и упорядоченно, ведь старые и новые значения могут использовать общие данные. Благодаря этому их куда быстрей сравнить между собой и компактно хранить историю операций с возможностью отмены. Все это отлично ложится на многопоточные и интерактивные системы: такие структуры данных упрощают архитектуру десктопных приложений и позволяют сервисам лучше масштабироваться. Иммутабельные структуры — секрет успеха Clojure и Scala, и даже сообщество JavaScript теперь пользуется их преимуществами, ведь у них есть библиотека Immutable.js, написанная в недрах компании Facebook.

Под катом — видео и перевод доклада Juan Puente с конференции C++ Russia 2019 Moscow. Хуан рассказывает про Immer — библиотеку иммутабельных структур для C++. В посте:

  • архитектурные преимущества иммутабельности;
  • создание эффективного персистентного векторного типа на основе RRB-деревьев;
  • разбор архитектуры на примере простого текстового редактора.

Total votes 84: ↑84 and ↓0+84
Comments57

Имитируем сетевые проблемы в Linux

Reading time15 min
Views31K
Всем привет, меня зовут Саша, я руковожу тестированием бэкенда. У нас, как и у многих, реализована сервис-ориентированная архитектура. С одной стороны, это упрощает работу, т.к. каждый сервис проще тестировать по отдельности, но с другой — появляется необходимость тестировать взаимодействие сервисов между собой, которое часто происходит по сети.

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


Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments17

Профилирование кода Go-проекта и решение проблемы с выделением памяти

Reading time7 min
Views6.6K
Пожалуй, каждому программисту известны слова Кента Бека: «Make it work, make it right, make it fast». Сначала надо сделать так, чтобы программа работала, дальше — надо заставить её работать правильно, а уже потом можно переходить к оптимизации. 



Автор статьи, перевод которой мы публикуем, говорит, что недавно он решил заняться профилированием своего опенсорсного Go-проекта Flipt. Он хотел найти в проекте код, который можно было бы без особых усилий оптимизировать и тем самым ускорить программу. В ходе профилирования он обнаружил некоторые неожиданные проблемы в популярном проекте с открытым исходным кодом, который в приложении Flipt использовался для организации маршрутизации и поддержки промежуточного ПО. В итоге удалось снизить объём памяти, выделяемой приложением в процессе работы, в 100 раз. Это, в свою очередь, привело к уменьшению количества операций по сборке мусора и улучшило общую производительность проекта. Вот как это было.
Читать дальше →
Total votes 42: ↑38 and ↓4+34
Comments0
1
23 ...

Information

Rating
Does not participate
Registered
Activity