Как стать автором
Обновить
32
3.3

Пользователь

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

Личный домашний VPN на основе Raspberry (Shadowsocks) (для самых маленьких)

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

Настраиваем свой маленький, домашний и ламповый VPN на основе Shadowsocks (Outline). Нужен Raspberry и настраиваемый wi-fi-роутер. Пошаговая инструкция. Без абонентской платы и аренды VPS.

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

До этого блокировали пока что только коммерческие сервисы VPN. Пока под раздачу попадают протоколы WireGuard и OpenVPN (август 2023) (ссылка на СМИ, выполняющее функции иноагента). Первый очень популярен своей легкостью и быстродействием, быстрой настройкой. К сожалению, у такого трафика на лбу написано «Я — VPN соединение”. Второй протокол уже довольно старый и популярный, но тоже довольно легко обнаруживается РКН. На сегодня РКН только тренируется с блокировками, но похоже, что Shadowsocks пока работает без перебоев. Тем не менее, "эксперты «Роскомсвободы»* также предполагают, что следующим шагом властей может стать блокировка Shadowsocks, нестандартного протокола, созданного для обхода Великого китайского файрволла, и подобных ему инструментов” (ссылка на сайт некоммерческой организации выполняющей функции иностранного агента). Пока до этого протокола еще не добрались, на основе него, а точнее Outline, использующий технологию Shadowsocks, и настроим свой VPN-сервер.

*некоммерческая организация выполняющая функции иностранного агента

Читать далее
Всего голосов 32: ↑28 и ↓4+35
Комментарии34

Как искать работу в Linkedin? 7 способов

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

Большая статья про то, как эффективно искать работу в LinkedIn и использовать данную площадку на максимум. Далеко не все вспоминают про LinkedIn когда начинают искать работу в IT, ведь площадка давно заблокирована в РФ и многие думаю, что там можно найти работу только заграницей. Сегодня буду развеивать это большое заблуждение!

Читать далее
Всего голосов 8: ↑1 и ↓7-6
Комментарии6

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

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

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

Было решено сгенерировать изображения с помощью нейросети. Опробовал Dall‑E и Midjorney, Flux — все не то, нейросети никогда не видели нашей отечественной Нивы.

Подумав что я же инженер, решил дообучить Flux на открытых фотографиях Нивы из интернета.

Читать далее
Всего голосов 19: ↑15 и ↓4+16
Комментарии8

Kafka для самых маленьких разработчиков, аналитиков и тестировщиков

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

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

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

Читать далее
Всего голосов 34: ↑33 и ↓1+40
Комментарии15

Kotlin Coroutines. От А до Я

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

Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании!
Разберем разницу между многопоточностью и асинхронностью; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope.

Let's go
Всего голосов 25: ↑25 и ↓0+29
Комментарии12

Популярная задача на собеседовании: сотрудники с максимальной зарплатой в отделе

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

Кто ходил на собеседования по устройству на работу, тот знает, спрашивают там всякое и странное. Нередко можно встретить задачу SQL по нахождению сотрудников с максимальной зарплатой в отделе. Причем ваш потенциальный начальник считает, что у этой задачи есть только одно «правильное решение», то, про которое он прочитал в Интернете. Так ли это?

Любопытно...
Всего голосов 98: ↑87 и ↓11+97
Комментарии198

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

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

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

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

Читать далее
Всего голосов 445: ↑437 и ↓8+489
Комментарии373

Kotlin Coroutines под капотом

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

Вероятнее всего у вас спрашивали на собесе «как работают корутины под капотом?», вы не долго думая выбрасывали что‑то в стиле «там под капотом стейт‑машина, она определяет какая suspend функция будет выполняться», но понимали ли вы на самом деле всё о чем говорили? Возможно, только вам это известно, но если честно я очень плохо понимал собственные ответы на такие вопросы как бы это парадоксально не звучало и даже после десятка пройденных собесов у меня не было полноценной картины как работает внутрянка этой поистине невероятной библиотеки «сладкой асинхронщины».

Читать далее
Всего голосов 30: ↑30 и ↓0+36
Комментарии6

Локальные LLM в разработке: а почему бы и да?

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

Меня зовут Антон Гращенков, и я занимаюсь развитием Java в Альфа-Банке. Программированием увлекаюсь ещё со школы: писал на множестве разных языков — от Pascal до TypeScript, мне это просто нравится. В статье я на примерах покажу, для каких задач я использую локальные модели. Да, существует много инструментов доступных в облаке, — тот же ChatGPT, Copilot или YandexGPT. Однако можно запустить такую модель и локально, и сделать это крайне просто. 

Ведь если хочется, то почему бы и да?

Читать далее
Всего голосов 43: ↑43 и ↓0+51
Комментарии7

Стоит ли бояться serializable-транзакций больше, чем труднонаходимых багов?

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

В базах данных транзакции обладают свойствами ACID, где «I» означает изоляцию транзакций при одновременном (concurrent) выполнении.

Наличие (serializable) изоляции гарантирует, что результат транзакций, выполненных параллельно, будет таким же, как если бы они были выполнены в некотором последовательном порядке.

Сериализация выполнения транзакций не бесплатна с точки зрения производительности.

Многие СУБД поддерживают более слабые уровни изоляции, оставляя за разработчиком выбор подходящего. В монолитных СУБД более слабый уровень изоляции часто используется по умолчанию. Так, в PostgreSQL и MySQL это «read committed». В распределённых СУБД чаще по умолчанию более строгие уровни: «repeatable read» в YugabyteDB и TiDB, «serializable» в CockroachDB и YDB.

Слабые уровни изоляции могут быть причиной очень труднонаходимых багов. Причём эти баги могут вызвать уязвимости в безопасности.

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

Читать далее
Всего голосов 16: ↑15 и ↓1+16
Комментарии39

Как я стал разработчиком в Германии и чего мне это стоило (спойлер: ничего). Часть I

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

Я уверен, что вы ни раз слышали о том, что немецкая бюрократия это один из экспортеров Апокалипсиса на земле: бумажка погоняет бумажкой и если у вас нет необходимых документов и штемпелей, то вам ничего не светит нигде и никогда. Так вот, можете смело отбросить этот стереотип, если вы хотите подыскать себе вакантное место разработчика в Германии, все значительно проще и приятнее, хотя, конечно, не без нюансов и своих премудростей. Итак, как же дистанционно найти работу в Германии? Ниже вкратце расскажу вам о своем опыте. Почему же "вкратце", спросите вы? До потому что поиски - от момента начала рассылки резюме, до момента получения оффера - заняли ровно месяц и одну неделю.

Читать далее
Всего голосов 15: ↑9 и ↓6+6
Комментарии17

Бэкэнд для начинающих или типовые ошибки бэкэндера

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

Всем привет! Я Олег, fullstack‑разработчик в компании Тензор, тимлид небольшой команды.

Одна из моих обязанностей в роли тимлида это code review. За годы работы я видел многое и выделил для себя типовые ошибки, с которыми сталкиваются начинающие backend‑разработчики. Сегодня хочу рассказать о некоторых из них.

Читать далее
Всего голосов 53: ↑52 и ↓1+61
Комментарии11

Профиль Firefox для посещения Сбербанка и Рунета в целом

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

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

Как известно, некоторые российские госкомпании сейчас под санкциями, в том числе эмитентами сертификатов. Сбер уже перешёл на сертификаты от Минцифры. Ростелеком, вероятно, к ноябрю 2024 года тоже перейдёт. А CA Минцифры соответственно рукопожат только браузерами Яндекс Браузер и Atom.

У этой проблемы есть несколько решений.

Использовать Яндекс Браузер или Atom с уже установленными сертификатами Минцифры и горя не знать.

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

Использовать браузер Firefox с выделенным пользовательским профилем под Рунет.

Использовать виртуальное окружение для любимого браузера с нелюбимым сертификатом Минцифры. (не могу найти ту публикацию).

Запускать браузер от имени другого пользователя.

Статья собственно о третьем методе.

Читать далее
Всего голосов 11: ↑11 и ↓0+16
Комментарии17

Неожиданные последствия запуска PostgreSQL в Docker: замедление запросов в 100 раз

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

У одного из клиентов нашей системы мониторинга PostgreSQL серверов возникла проблема сильного замедления запросов при запуске базы в Docker. В этой статье расскажем о возможных последствиях использования PostgreSQL в Docker с конфигурацией по умолчанию.

Читать далее
Всего голосов 95: ↑84 и ↓11+93
Комментарии57

Как пишут SQL-запросы гуманитарии

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

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

Так я думал раньше.

Читать далее
Всего голосов 22: ↑17 и ↓5+15
Комментарии29

Использование Redis почти как SQL БД: Реализация чата с кешированием сообщений

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

Допустим, мы хотим создать чат и хранить сообщения для него. Вполне возможно, мы можем добавить для этого простую базу данных (БД), такую как MySQL или даже NoSQL БД.

Обычно многие используют Redis как key‑value (dictionary) хранилище. Тем не менее, Redis — это несколько большее, чем key‑value, как многие привыкли думать.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии6

Coroutine Stacks — плагин для отладки корутин Kotlin

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

Всем привет!

В рамках программы Google Summer of Code 2023 мы с моим студентом разработали плагин для Intellij IDEA, который является аналогом Parallel Stacks из Visual Studio, CLion и Rider для Kotlin coroutines. Плагин анализирует стек трейсы каждой корутины в приложении и строит граф, объединяя общие наборы стек фреймов в вершины. Таким образом, во время отладки вашего приложения вы можете проанализировать
потоки выполнения всех корутин в вашей программе.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии5

Здоровье индексов в PostgreSQL глазами Java-разработчика

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

Привет.


Меня зовут Ваня, и я Java-разработчик. Так получилось, что я много работаю с PostgreSQL – занимаюсь настройкой БД, оптимизацией структуры, производительностью и немного играю в DBA по выходным.


За последнее время я привёл в порядок несколько баз данных в наших микросервисах и написал java-библиотеку pg-index-health, которая облегчает эту работу, экономит моё время и помогает избежать некоторых типовых ошибок, допускаемых разработчиками. Именно об этой библиотеке сегодня и пойдёт речь.



Disclaimer


Основная версия PostgreSQL, с которой я работаю, это 10-ка. Все используемые мною SQL-запросы также проверены на 11-й версии. Минимальная поддерживаемая версия — это 9.6.


Предыстория


Началось всё почти год назад со странной для меня ситуации: конкурентное создание индекса на ровном месте завершилось с ошибкой. Сам индекс, как водится, в невалидном состоянии остался в базе. Анализ логов показал нехватку temp_file_limit. И понеслось… Копнув поглубже, я обнаружил целый ворох проблем в конфигурации БД и, засучив рукава, с блеском в глазах принялся их чинить.

Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии21

Helidon 4 вышел, а никто и не заметил

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

Те, кто использует Helidon в проде, наверняка точно знают, зачем им это нужно. Что делать остальным? Основная задача хомячка — объяснить детям концепцию смерти. Кажется, точно так же основная задача Helidon для широких народных масс — посмотреть на самые новые фишки Java и понять, нужно вам это или нет. Посмотрим, что же произошло в версии 4.0.0...

Интересно. Читать далее
Всего голосов 21: ↑19 и ↓2+24
Комментарии8

Принципы SOLID vs KISS. Как найти баланс?

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

Привет, Хабр! Сегодня я хотел бы поделиться опытом, как писать код так, чтобы системы в проекте были с одной стороны гибкими, а с другой — простыми и компактными.

На самом деле, когда нужно реализовать новую фичу в проекте, необходимо соблюдать баланс между простотой и гибкостью...

Читать далее
Всего голосов 9: ↑4 и ↓5-1
Комментарии40
1

Информация

В рейтинге
1 161-й
Зарегистрирован
Активность

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

Backend Developer
Senior
Java
Kotlin