Pull to refresh
0
0
Send message

Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria, Cloak и все-все-все

Reading time20 min
Views317K

Три месяца назад здесь на Хабре была опубликована статья “Интернет-цензура и обход блокировок: не время расслабляться”, в которой простыми примерами показывалось, что практически все популярные у нас для обхода блокировок VPN- и прокси-протоколы, такие как Wireguard, L2TP/IPSec, и даже SoftEther VPN, SSTP и туннель-через-SSH, могут быть довольно легко детектированы цензорами и заблокированы при должном желании. На фоне слухов о том, что Роскомнадзор активно обменивается опытом блокировок с коллегами из Китая и блокировках популярных VPN-сервисов, у многих людей стали возникать вопросы, что же делать и какие технологии использовать для получения надежного нефильтрованного доступа в глобальный интернет.

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

Поэтому сейчас мы попробуем разобраться, что же это все такое и как это использовать и не сойти с ума.

Читать далее
Total votes 157: ↑155 and ↓2+153
Comments136

Мои вопросы работодателю, когда подаюсь на разработчика

Reading time9 min
Views86K

За последние 10 лет я поменял 3 работы, прособеседовался с 10+ компаний на позицию разработчика (software engineer) и вел переписку с HR/рекрутерами из нескольких десятков фирм. По ходу дела заметил, что вопросы, которые я задаю на собеседовании с менеджером/командой или с HR, повторяются, и решил их структурировать. Некоторые из них являются общими, и их может задать кандидат на почти любую вакансию; другие касаются только вакансий для программистов. В этой статье поделюсь с вами наиболее типичными и важными вопросами, которые, на мой взгляд, может задать соискатель потенциальному работодателю.

Читать далее
Total votes 90: ↑84 and ↓6+78
Comments70

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

Reading time4 min
Views60K

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

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

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

Куда уходит время? Боремся за миллисекунды в Kubernetes

Reading time7 min
Views20K

Привет, Хабр! Меня зовут Вова, я разрабатываю observability-платформу в Ozon. Как-то раз в наш уголок на 42 этаже заглянули коллеги — и поделились наблюдением. Если открыть рядом графики времён запросов и ответов двух живущих в Kubernetes и общающихся между собой микросервисов, то иногда можно наблюдать большую разницу в высоких квантилях: клиент считает, что один ответ из сотни ему приходит за сто миллисекунд, сервер же говорит, что успевает ответить за десять.

Куда ушло время? Можно ли его вернуть? Под катом расскажу о том, с какими граблями может столкнуться микросервис, живущий в типичной инсталляции Kubernetes.

Читать далее
Total votes 141: ↑140 and ↓1+139
Comments23

Инструкция для тех, кто решил что уже пора

Reading time10 min
Views182K

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

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

Опять же, я понимаю, что кто-то закончил языковую школу и при выступлении британской королевы подмечает стилистические ошибки ее английского, а кто-то консультировал Оракл при разработке HashMap и для них переезд — это вопрос желания, а не возможности. Но я говорю о неком "среднестатистическом случае", когда инглиш не флюент, а за плечами нет 10 лет опыта в аду.

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

Читать далее
Total votes 192: ↑169 and ↓23+146
Comments440

1 CPU 1 Гб – а я хочу мониторинг, как у больших дядей

Reading time14 min
Views54K


Я обожаю читать на хабре статьи про то, как устроены системы больших интернет-компаний. Кластеры SQL-серверов, монг и редисов. Тут у нас кластер ELK собирает трейсинг, там – сборка логов, здесь балансер выдает входящим запросам traceID и можно отслеживать, как запрос ходит по всем нашим микросервисам. Класс. Но, допустим, у вас совсем маленький проект и вы можете себе позволить лишь VPS минимальной конфигурации. Реально ли на ней сделать мониторинг не хуже, чем у больших проектов? Я решил – надо попробовать.
Читать дальше →
Total votes 82: ↑80 and ↓2+78
Comments82

Полное практическое руководство по Docker: с нуля до кластера на AWS

Reading time39 min
Views1.6M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы; позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, а также предоставляет среду по управлению контейнерами.



Ого! Как много информации.

Читать дальше →
Total votes 125: ↑124 and ↓1+123
Comments44

Как Discord хранит миллиарды сообщений

Reading time10 min
Views92K


Discord продолжает расти быстрее, чем мы ожидали, как и пользовательский контент. Чем больше пользователей — тем больше сообщений в чате. В июле мы объявили о 40 млн сообщений в день, в декабре объявили о 100 млн, а в середине января преодолели 120 млн. Мы сразу решили хранить историю чатов вечно, так что пользователи могут вернуться в любой момент и получить доступ к своим данным с любого устройства. Это много данных, поток и объём которых нарастает, и все они должны быть доступными. Как мы это делаем? Cassandra!
Читать дальше →
Total votes 61: ↑60 and ↓1+59
Comments58

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

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


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

Как я научился проходить архитектурные секции

Reading time4 min
Views31K
Архитектурные секции у многих вызывают чувство неопределенности и тревоги: формулировки не изобилуют деталями, как проверить ответ — непонятно. При этом способность пройти архитектурную секцию отличает вчерашнего выпускника от человека, которому можно доверить строить нечто большее, чем обход бинарных деревьев. В определенный момент я решил как следует подготовиться секции по дизайну, потратил на это около пары недель и выработал системный подход, которым хочу с вами поделиться.
Читать дальше →
Total votes 45: ↑43 and ↓2+41
Comments18

JPoint 2020: новый формат, новые возможности

Reading time8 min
Views4K
С 29 июня по 3 июля 2020 года в онлайн-формате прошла Java-конференция JPoint 2020. Информация о докладах, спикерах, особенностях проведения, впечатления от конференции — всё это можно прочитать далее.


Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments11

Больше разработчиков должны знать это о базах данных

Reading time19 min
Views43K
Прим. перев.: Jaana Dogan — опытный инженер из Google, которая в данный момент занимается вопросами наблюдаемости production-сервисов компании, написанных на Go. В этой статье, снискавшей большую популярность у англоязычной аудитории, она в 17 пунктах собрала важные технические детали, касающиеся СУБД (а иногда — распределённых систем в целом), которые полезно учитывать разработчикам крупных/требовательных приложений.



Подавляющее большинство компьютерных систем отслеживают свое состояние и, соответственно, нуждаются в некой системе хранения данных. Я накапливала знания о базах данных в течение длительного времени, попутно совершая ошибки при проектировании, приводившие к потере данных и перебоям в работе. В системах, обрабатывающих большие объемы информации, базы данных лежат в сердце системной архитектуры и выступают ключевым элементом при выборе оптимального решения. Несмотря на то, что работе БД уделяется пристальное внимание, проблемы, которые пытаются предусмотреть разработчики приложений, часто оказываются лишь верхушкой айсберга. В этой серии статей я делюсь некоторыми идеями, которые будут полезны для разработчиков, не специализирующихся в этой области.
Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments27

Законы программирования

Reading time20 min
Views57K

Законы, теории, принципы и закономерности, полезные для разработчиков


Введение


Перевод репозитория github.com/dwmkerr/hacker-laws

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

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

Законы


Закон Амдала


Закон Амдала — это формула, демонстрирующая потенциал ускорения вычислительной задачи, которого можно достичь при увеличении количества ресурсов системы. Обычно он используется в параллельных вычислениях, и может предсказать наличие реальных преимуществ от увеличения количества процессоров с учётом ограничений параллелизуемости программы.
Читать дальше →
Total votes 84: ↑82 and ↓2+80
Comments21

Вопросы к собеседованию Java-backend, Java core (60 вопросов)

Reading time17 min
Views243K
image

Добрый день! Представляю вашему вниманию список вопросов к собеседованию Java Backend, которые я оформлял на протяжении около 2х лет.

Вопросы разбиты по темам: core, collections, concurrency, io, exceptions, которые задают основные направления хода технического собеседования. Звездочками отмечен субъективный (с точки зрения автора) уровень сложности вопроса, в сноске спойлера — краткий ответ на вопрос. Ответ представляет для интервьювера правильное направления развития мысли кандидата.
Читать далее
Total votes 31: ↑23 and ↓8+15
Comments76

Как я взломал мошенников, или просто внутренности фишинг-панелей

Reading time5 min
Views70K

INTRO


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


Я увлекаюсь безопасностью, поэтому решил из интереса проверить безопасность фишингового ресурса.


"Админку" мошенников удалось успешно взломать, внутри нашлось n-количество украденных учеток. Их логины были переданы в службу безопасности VK, плюс соответствующие "abuse" жалобы были направлены регистраторам, хостерам.


А теперь расскажу как и какие оказываются бывают Phishing-as-Service панели...

Читать дальше →
Total votes 141: ↑139 and ↓2+137
Comments37

Ужасы Set.removeAll

Reading time4 min
Views17K
Мы привыкли, что стандартные коллекции в JDK сделаны достаточно хорошо и ведут себя интуитивно-понятно. Но так ли это на самом деле? Вчера Роман Елизаров elizarov опубликовал в твиттере новость о новом интересном косяке.

Держитесь покрепче: Set.removeAll(list) в определенных случаях может работать за O(N²). Как же так?


Total votes 43: ↑41 and ↓2+39
Comments32

API, ради которых наконец-то стоит обновиться с Java 8. Часть 2

Reading time12 min
Views22K

Продолжаем рассказ про API, которые появились в новых версиях Java.



1. Files.mismatch()


Появился в: Java 12


На практике довольно часто возникает необходимость проверить, являются ли два файла в точности одинаковыми или нет. С помощью метода Files.mismatch(), появившегося в Java 12, это наконец-то можно сделать. Этот метод возвращает позицию первого несовпадающего байта в двух файлах или -1, если файлы идентичны.


Это может быть полезно, например, когда синхронизируешь содержимое двух директорий. Чтобы не перезаписывать файл при копировании тем же самым содержимым и лишний раз не нагружать диск, можно сначала проверить, идентичны файлы или нет:


public static void syncDirs(Path srcDir, Path dstDir)
        throws IOException {
    // Для простоты демонстрации считаем, что поддиректорий нет
    try (Stream<Path> stream = Files.list(srcDir)) {
        for (Path src : stream.collect(toList())) {
            Path dst = dstDir.resolve(src.getFileName());
            if (!Files.exists(dst)) {
                System.out.println("Copying file " + dst);
                Files.copy(src, dst);
            } else if (Files.mismatch(src, dst) >= 0) {
                System.out.println("Overwriting file " + dst);
                Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);
            }
        }
    }
}
Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments44

Доклад «42». Большой конспект

Reading time23 min
Views26K
Привет, Хабр, меня зовут Вадим Макишвили. В 2014 году я выступил с докладом «36». Рассказывал про кризис среднего возраста, признавался в собственных слабостях и делился способами, которые помогли мне совладать со страхами. Сразу после выступления друзья стали надо мной подтрунивать, мол, давай каждые десять лет по продолжению. Я отшучивался, мол, обязательно сделаю. Но, вообще-то, не собирался, потому что каждые десять лет рассказывать всему миру про свои страхи — скучно.

Однако несколько месяцев назад на конференции YaTalks в Екатеринбурге я выступил с новым докладом. В заголовке число 42, и возникает вопрос: «Неужели Макишвили — автор одной темы?» Нет. Самокопания не было. А что было? И можно ли «42» считать продолжением «36»?

Мой рассказ имеет отношение к предыдущей лекции лишь косвенно. В «42» я детально обдумываю тему, которой тогда едва коснулся. Но если кому-то удобнее думать, что «42» — вторая серия, пусть так. Тогда впереди ещё и третья, которая не будет иметь ничего общего ни с первой, ни со второй, ну разве что автор — я, и название тоже окажется каким-то числом.

«42» — точно не про кризис среднего возраста.


— Здравствуйте, друзья. Мне очень много хочется вам рассказать. Так много, что первая версия этого доклада длилась два часа. Но организаторы сказали мне — Макишвили, не наглей. Короче, вы со мной здесь на час. Я постараюсь, чтобы вам не было ни скучно, ни грустно.
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments20

Лучшие плагины IntelliJ IDEA

Reading time5 min
Views79K


Key promoter X


Использование сочетаний клавиш вместо мыши может значительно повысить производительность. С таким количеством функций, которые предлагает IDEA, это может быть пугающим и трудным для изучения всех быстрых клавиш. К счастью, есть плагин под названием Key Promoter X, который может вам помочь.

Идея проста: всякий раз, когда вы используете мышь для вызова команды в вашей IDE, появляется всплывающее окно, которое сообщает вам, каково сочетание клавиш для этого действия.
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments43

Чтобы пацанам было не стыдно показать

Reading time3 min
Views106K
Я стар и уже глуп, а у вас всё впереди, уважаемый программист. Но позвольте дать вам один совет, который наверняка поможет в вашей карьере – если, конечно, вы планируете остаться программистом.

Советы типа «писать красивый код», «хорошо комментировать свои доработки», «изучать современные фреймворки» — очень полезные, но, увы, второстепенные. Они идут прицепом к главному качеству программиста, которое надо в себе развивать.

Вот это главное качество: пытливый ум.
Читать дальше →
Total votes 315: ↑291 and ↓24+267
Comments172
1
23 ...

Information

Rating
Does not participate
Registered
Activity