Как стать автором
Обновить
10
0
Игорь Карпов @lilo_panic

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

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

SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443

Время на прочтение3 мин
Количество просмотров117K
image

SSH/HTTPS/OpenVPN/Telegram и всё на одном порту?! Что?!
— Да!
  • Хотите скрыть наличее у вас некоторых сервисов?
  • В публичной wi-fi сети блокируется всё кроме 443 (https) порта?
  • Настроили Telegram Proxy/OpenVPN и не хотите его «светить» ?
  • SSH подключение к своему серверу из стран с цензурой?

На все эти вопросы ответ один — Мультиплексирование SSL/TLS соединений, или SSLH.

В посте мы рассмотрим как в 1 команду спрятать кучу сервисов за 1 портом.
Читать дальше →
Всего голосов 83: ↑79 и ↓4+75
Комментарии100

Я сделал API для скриншотов сайтов, а какой-то парень начал майнить через него криптовалюту

Время на прочтение2 мин
Количество просмотров66K
Просто хотел поделиться этой историей. Знаю, я мог бы лучше подготовиться к этому инциденту, но так уж получилось. :)

Сегодня утром я открыл почтовый ящик и обнаружил около 150 предупреждений из программы мониторинга лога. Я подумал, что случайно запушил какой-то баг в продакшн — и быстро начал расследование. Но вскоре стало понятно, что некий парень очень быстро создаёт новые учетные записи на нашем сервисе API скриншотов ApiLeap и быстро расходует весь кредит бесплатного плана на каждом аккаунте.



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

Я выяснил, что он зависает на главной странице нашего сайта, так что можно поговорить с ним через онлайновый чат Crisp — инструмент, который мы используем для общения с потенциальными клиентами на сайте. Вот это разговор:
Читать дальше →
Всего голосов 112: ↑95 и ↓17+78
Комментарии111

Топ VSCode расширений, которые ускорят вашу разработку на JavaScript

Время на прочтение5 мин
Количество просмотров155K
VSCode — это кроссплатформенный редактор с открытым исходным кодом, ставший любимым среди программистов, особенно среди веб-разработчиков. Он быстрый, расширяемый и имеет массу возможностей и настроек. Если вы до сих пор не работали с ним, то советую попробовать.

Для VSCode созданы тысячи расширений. Я намерен представить несколько из них, которые использую каждый день. Приступим!


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

Дискредитация специалистов или современные собеседования

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

Представьте, что вы — IT компания. Может большая или нет, но так получилось, что вам потребовался стажер. Ведь пора, наконец, растить новое поколение в духе вашей идеологии.

Но вот незадача — стажеры такие животные, которые не обладают навыками. И ранее ничего полезного они не делали. Как же не ошибиться в выборе? Что ж, это довольно просто. Если нельзя оценить по результату, то следует искать предпосылки к достижению этого результата…

Статья о серьезной проблеме рекрутинга, которую все почему-то считают нормой.
Читать дальше →
Всего голосов 97: ↑87 и ↓10+77
Комментарии691

Состоялся релиз Krita 4.0, свободного графического редактора для художников

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

Новый релиз Krita принес кучу изменений. Традиционно, при изменении мажорной версии много где сломали обратную совместимость и разработчики предупреждают о необходимости бэкапов при пересохранении в новом формате. Особенно сильно была переработана работа с векторными сущностями и текстом. Разработчики признались, что у них не хватило сил тянуть отдельную реализацию встроенного текста в виде ODT, поэтому все перевели на распространенный SVG. Для оптимальной совместимости они напоминают о возможности установки двух веток одновременно. В Windows все реализовано достаточно привычно, а для Linux есть snap пакеты и другие варианты stand-alone установки.

Ниже под катом много трафика и картинок.
Всего голосов 98: ↑97 и ↓1+96
Комментарии58

Чего боятся программисты?

Время на прочтение10 мин
Количество просмотров58K
У программистов, как и у всех людей, есть фобии. Кто-то боится маньяков, кто-то — утки, которая следит за человеком, кто-то впадает в панику при нарушении привычного распорядка дня, кого-то начинает штырить от внезапно пропавшей связи в смартфоне.

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

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

В этой статье — истории реальных программистов и их профессиональных фобий, которые мешали им жить и работать в свое удовольствие. Люди реальные, имена вымышленные.
Читать дальше →
Всего голосов 99: ↑83 и ↓16+67
Комментарии154

Настраиваем Syncthing. Синяя изолента в мелком бизнесе и дома

Время на прочтение4 мин
Количество просмотров116K
image

image
У меня тут внезапно завалялся гайд по настройке syncthing. Я уверен, что многим это может пригодиться.

Про революцию в дистрибуции файлов, которую совершил torrent-протокол рассказывать излишне. Одна проблема была у классических версии технологии — статичность. Если данные в каталоге изменялись, приходилось заново создавать и передавать всем новый torrent-файл. И вдруг, внезапно появляется BitTorrentSync. Наступает всеобщее счастье, теперь можно синхронизировать целые массивы изменяющихся данных. Однако, спустя время проприетарность софта выливается в сильное урезание функциональности, привязку к своим серверам и довольно агрессивную монетизацию. Вот тут и выходит на сцену идеологически кошерный свободный преемник — Syncthing.
Читать дальше →
Всего голосов 57: ↑55 и ↓2+53
Комментарии82

9 лучших книг про IT и программирование, которые вы могли пропустить

Время на прочтение4 мин
Количество просмотров128K
image

Помните, Льюис Кэрролл писал: «Здесь приходится бежать со всех ног, чтобы только остаться на том же месте, а чтобы попасть в другое место, нужно бежать вдвое быстрее»? Это фраза прекрасно подходит для IT-мира: технологии быстро развиваются, и каждый день нужно осваивать что-то новое, чтобы оставаться востребованным специалистом. У каждого программиста наверняка есть 5-6 бумажных книг, ставших классикой. О некоторых таких книгах мы уже писали. Но чтобы оставаться востребованным кодером, надо постоянно обновлять библиотеку. В прошлом году портал DevMountain сделал подборку из семи не слишком популярных книг для начинающих программистов. Учитывалась не только оценка портала, но и отзывы на Amazon, а также рекомендации популярных блогов. Автор GeekBrains Илья Бубнов внимательно изучил этот список, а также дополнил подборку парой свежайших экземпляров.
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии3

Почему я ушёл из Google и начал работать на себя

Время на прочтение10 мин
Количество просмотров142K
Последние четыре года я работал разработчиком программного обеспечения в Google, но 1 февраля уволился, потому что они не сделали мне подарок на Рождество.

Шучу, на самом деле всё немного сложнее.

Первые два года


Первые два года я любил Google.

Когда при ежегодном опросе сотрудников мне задавали вопрос, вижу ли я себя в Google через пять лет, я отвечал «разумеется, без вариантов».

Ну конечно я буду в Google через пять лет. Я окружён лучшими инженерами в мире, использую самые продвинутые инструменты разработки в мире и кушаю самую бесплатную в мире еду.


Мой обычный день в Google.
— Ещё тортика, господин Программист? Он бесплатен в любом количестве.
— Не сегодня, Пьер. Я опаздываю на массаж, он тоже бесплатный.

Читать дальше →
Всего голосов 222: ↑219 и ↓3+216
Комментарии443

Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

Время на прочтение25 мин
Количество просмотров1.4M

Регулярные выражения в Python от простого к сложному




Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

Плюс в питоне есть немало регулярных плюшек. Например, re.split может добавлять тот кусок текста, по которому был разрез, в список частей. А в re.sub можно вместо шаблона для замены передать функцию. Это — реальные вещи, которые прямо очень нужны, но никто про это не пишет.
Так и родился этот достаточно многобуквенный материал с подробностями, тонкостями, картинками и задачами.

Надеюсь, вам удастся из него извлечь что-нибудь новое и полезное, даже если вы уже в ладах с регулярками.
Читать дальше →
Всего голосов 99: ↑98 и ↓1+97
Комментарии66

Индексы в PostgreSQL — 10

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

В прошлых статьях мы рассмотрели механизм индексирования PostgreSQL и интерфейс методов доступа, а также хеш-индексы, B-деревья, GiST, SP-GiST, GIN, RUM и BRIN. Нам осталось посмотреть на индексы Блума.

Bloom


Общая идея


Классический фильтр Блума — структура данных, позволяющая быстро проверить принадлежность элемента множеству. Фильтр очень компактен, но допускает ложные срабатывания: он имеет право ошибиться и счесть элемент принадлежащим множеству (false positive), но не имеет права сказать, что элемента нет в множестве, если на самом деле он там присутствует (false negative).

Фильтр представляет собой битовый массив (называемый также сигнатурой) длиной m бит, изначально заполненный нулями. Выбираются k различных хеш-функций, которые отображают любой элемент множества в k битов сигнатуры. Чтобы добавить элемент в множество, нужно установить в сигнатуре каждый из этих битов в единицу. Следовательно, если все соответствующие элементу биты установлены в единицу — элемент может присутствовать в множестве; если хотя бы один бит равен нулю — элемент точно отсутствует.

В случае индекса СУБД мы фактически имеем N отдельных фильтров, построенных для каждой индексной строки. Как правило, в индекс включаются несколько полей; значения этих полей и составляют множество элементов для каждой из строк.

Благодаря выбору размера сигнатуры m, можно находить компромисс между объемом индекса и вероятностью ложного срабатывания. Область применения Блум-индекса — большие, достаточно «широкие» таблицы, запросы к которым могут использовать фильтрацию по любым из полей. Этот метод доступа, как и BRIN, можно рассматривать как ускоритель последовательного сканирования: все найденные индексом совпадения необходимо перепроверять по таблице, но есть шанс вовсе не рассматривать значительную часть строк.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии12

Datalore: открываем бета-версию приложения для анализа данных на Python

Время на прочтение3 мин
Количество просмотров26K
Привет, Хабр!

В рядах инструментов JetBrains пополнение. Мы запускаем открытую бета-версию Datalore — умной веб-среды для анализа и визуализации данных на языке Python.

Машинное обучение уверенно захватывает мир: алгоритмы интеллектуального анализа данных стоят за современными коммерческими разработками и исследованиями. Мы разработали приложение, с которым решать задачи машинного обучения легко и приятно: все необходимые инструменты data science доступны из коробки, а умный редактор кода на Python облегчает процесс анализа данных.


Читать дальше →
Всего голосов 80: ↑76 и ↓4+72
Комментарии34

Оставьте все сомнения: как избежать синдрома самозванца

Время на прочтение10 мин
Количество просмотров27K
Недавно я участвовал в независимом игровом фестивале Feral Vector, проводимом в Хебден-Бридж, Великобритания. Это потрясающее мероприятие, и если вы никогда там не были, то рекомендую его посетить. В этом году я хотел принять участие, поэтому произнёс краткую речь о синдроме самозванца, в которой рассказал о психологических проблемах и творчестве. Для меня было честью подняться на эту сцену и произнести эту речь перед целым залом.


После выступления я получил множество хороших комментариев от замечательных людей. Похоже, что им в основном понравились созданные мной слайды, но самое содержание речи нашло отклик у очень немногих. Я подумал, что будет неплохо записать свою речь и составить качественную статью. Я не пользовался заметками или сценарием, поэтому пытался примерно соответствовать тому, что говорил, и добавил при этом немного дополнительной информации.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии54

Как мы выбирали между Elastic и Tarantool, а сделали свою (самую быструю) in-memory БД. С Join и полнотекстовым поиском

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

Всем привет.


С середины 2016 года мы проектируем и разрабатываем новое поколение платформы. Принципиальное отличие от первого поколения — поддержка API "тонкого" клиента. Если старая платформа предполагает, что на клиента при запуске загружается метаинформация о всем контенте, который доступен для абонента, то новая платформа должна отдавать срезы данных отфильтрованные и отсортированы для отображения на каждом экране/странице.


Высокоуровневая архитектура на уровне хранения данных внутри системы — постоянное хранение всех данных в централизованном реляционном SQL хранилище. Выбор пал на Postgres, тут никаких откровений. В качестве основного языка для разработки — выбрал golang.


У системы порядка 10м пользователей. Мы посчитали, что с учетом профиля теле-смотрения, 10М пользователей может дать сотни тысяч RPS на всю систему.



Это означает, что запросы от клиентов и близко не стоит подпускать к реляционной SQL БД без кэширования, а между SQL БД и клиентами должен быть хороший кэш.


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

Читать дальше →
Всего голосов 79: ↑74 и ↓5+69
Комментарии115

Как именно работает Meltdown

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

Уже третий день у всех на слуху слова Meltdown и Spectre, свеженькие уязвимости в процессорах. К сожалению, сходу найти что либо про то, как именно работают данные уязвимости (для начала я сосредоточился на Meldown, она попроще), у меня не удалось, пришлось изучать оригинальные публикации и статьи: оригинальная статья, блок Google Project Zero, статья аж из лета 2017. Несмотря на то, что на хабре уже есть перевод введения из оригинальной публикации, хочется поделиться тем, что мне удалось прочитать и понять.

Читать дальше →
Всего голосов 186: ↑184 и ↓2+182
Комментарии334

Кластер PostgreSQL высокой надежности на базе Patroni, Haproxy, Keepalived

Время на прочтение25 мин
Количество просмотров125K
Привет, Хабр! Встала передо мной недавно задача: настроить максимально надежный кластер серверов PostgreSQL версии 9.6.

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

Планируя кластер я проштудировал много статей, как из основной документации к PostgreSQL, так и различных howto, в том числе с Хабра, и пробовал настроить стандартный кластер с RepMgr, эксперементировал с pgpool.

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

В итоге где-то (уже не вспомню точно где) нашел ссылку на прекрасный проект Zalando Patroni, и все заверте…
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии69

Непрерывная интеграция с помощью Drone CI, Docker и Ansible

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

image


Можете представить, что Вам больше никогда не придется устанавливать зависимости и настраивать конфигурации вручную на вашем сервере непрерывной интеграции? А вы верите в то, что каждый шаг вашего билда может быть по-настоящему изолированным и работать исключительно в Docker контейнерах? В конце концов, хотели бы вы попробовать инструмент, который входит в топ 20 всех открытых проектов, написанных на Golang, и имеет 9k+ звездочек на Github?


В этой статье мы хотели бы рассказать о великолепном Drone CI, который уже помог нам упростить и сделать лучше нашу непрерывную интеграцию. Мы поделимся деталями установки Drone CI и покажем на примере небольшого проекта все детали использования. Если вы не любите много читать и хотите сразу попробовать, в конце статьи есть ссылки на Github репозитории, которые помогут с быстрым стартом.


Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии15

Git снизу вверх

Время на прочтение27 мин
Количество просмотров125K
У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто, причем, разные, так что, каждый раз, когда возникала такая необходимость, я заново вспоминала, как в них делается та или иная операция. А для личных проектов мне хватало возможностей Dropbox, хранящей историю версий файлов.


Изображение из твиттера @girlie_mac

Но вот однажды я на три незабываемых дня попала в роддом — это иногда случается с женщинами. Из развлечений у меня были новорожденная дочь и телефон с большим экраном. Дочь поначалу развлекала плохо (дома она быстро исправилась), а на телефоне помимо книг и фильмов обнаружился текст «Git from the bottom up», который оказался более чем годным… С тех пор прошло почти 3 года, подросшей дочке уже пора самой начинать использовать Git Git стал мейнстримом, если не сказать стандартом в современной разработке, а я с удивлением обнаружила, что перевода на русский этого чуда, полезного не только начинающим, но и продвинутым пользователям Git, до сих пор нет. Исправляю эту ситуацию.
Читать дальше →
Всего голосов 104: ↑102 и ↓2+100
Комментарии32

Руководство по написанию защищённых PHP-приложений в 2018-м

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

Приближается 2018 год, и технари — в частности веб-разработчики — должны отбросить многие старые методики и верования в сфере разработки защищённых PHP-приложений. Особенно это относится ко всем, кто не верит, что такие приложения вообще возможны.


Это руководство — дополнение к электронной книге PHP: The Right Way с сильным уклоном в безопасность, а не общие вопросы программирования на PHP (вроде стиля кода).

Читать дальше →
Всего голосов 75: ↑72 и ↓3+69
Комментарии38

Английские слова, которые хочется перевести неправильно

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


Помните, как мы учили английские слова, проводя параллели в их произношении с нашим языком? Ну там, локализация — локализейшн (localisation) или объект — обджект (object). Классно, когда все так совпадает. Но есть ряд слов-предателей этого чудного принципа созвучий. Ряд слов, которые звучат или пишутся похоже, но означают другое. В лингвистике это называется “межъязыковые омонимы и паронимы” или же “ложные друзья переводчика”. Давайте соберем топ самых неожиданных несовпадений.

Accurate — точный, чёткий. Но никак не аккуратный. И даже человека так описать нельзя.
Читать дальше →
Всего голосов 46: ↑37 и ↓9+28
Комментарии203
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность