Как стать автором
Обновить
16
0
Dmitry Shachnev @mitya57

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

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

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

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

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

Читать далее
Всего голосов 325: ↑324 и ↓1 +323
Комментарии 333

Почему мой любимый API — это файл zip на сайте Европейского центрального банка

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

Когда был максимальный курс доллара к евро?

Вот небольшая программа, вычисляющая это:

curl -s https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip \ | gunzip \ | sqlite3 -csv ':memory:' '.import /dev/stdin stdin' \ "select Date from stdin order by USD asc limit 1;"

Результат: 2000-10-26. (Можете попробовать запустить её самостоятельно.)

Читать далее
Всего голосов 104: ↑90 и ↓14 +76
Комментарии 27

Очень странные дела. Что спрятано под капотом FreeDOS в современном ноутбуке

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

HP Zbook Fury 17.8 G8 в режиме FreeDOS из коробки

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

Например, FreeDOS, как в нашем случае. Казалось бы, очень старая ОС, но её действительно используют в современной технике.

Разработчик компьютерных игр и специалист по виртуализации Linux Хайн-Питер ван Браам-Стюарт решил разобраться и посмотреть, что скрывается под капотом современного ноутбука HP ZBook 17.8 G8. Это оказалось как раз из его профессиональной области (извините за спойлер...).

Итак, слово автору…
Читать дальше →
Всего голосов 204: ↑204 и ↓0 +204
Комментарии 135

OrganicMaps — релиз форка Maps.me с открытым кодом

Время на прочтение 3 мин
Количество просмотров 32K
На днях состоялся первый релиз OrganicMaps — open-source форка Maps.me, который команда добровольцев готовила больше чем полгода. В этой небольшой заметке мне бы хотелось поделиться краткой историей проекта, за которой я следил в Telegram-чатах и на GitHub и обозначить основные отличия форка от текущей версии Maps.me. Если вы являетесь текущим или бывшим пользователем Maps.me или интересуетесь ПО с открытым кодом с фокусом на приватности без рекламы и сбора данных, то обратите внимание на этот проект.
Читать дальше →
Всего голосов 113: ↑113 и ↓0 +113
Комментарии 85

Кластеризация графов и поиск сообществ. Часть 2: k-medoids и модификации

Время на прочтение 11 мин
Количество просмотров 23K
image Привет, Хабр! В этой части мы опишем вам алгоритм, с помощью которого были получены цвета на графах из первой части. В основе алгоритма лежит k-medoids — довольно простой и прозрачный метод. Он представляет собой вариант популярного k-means, про который наверняка большинство из вас уже имеет представление.

В отличие от k-means, в k-medoids в качестве центроидов может выступать не любая точка, а только какие-то из имеющихся наблюдений. Так как в графе между вершинами расстояние определить можно, k-medoids годится для кластеризации графа. Главная проблема этого метода — необходимость явного задания числа кластеров, то есть это не выделение сообществ (сommunity detection), а оптимальное разбиение на заданное количество частей (graph partitioning).

С этим можно бороться двумя путями:
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Комментарии 4

Дерево синтаксиса и альтернатива LINQ при взаимодействии с базами данных SQL

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


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

Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 35

Восемь малоизвестных опций Bash

Время на прочтение 3 мин
Количество просмотров 41K
Некоторые опции Bash хорошо известны и часто используются. Например, многие в начале скрипта пишут

set -o xtrace

для отладки,

set -o errexit

для выхода по ошибке или

set -o errunset

для выхода, если вызванная переменная не установлена.

Но есть много других опций. Иногда они слишком путано описаны в манах, поэтому я собрал здесь некоторые из наиболее полезных, с объяснением.
Читать дальше →
Всего голосов 82: ↑79 и ↓3 +76
Комментарии 13

Большой FAQ про поезда дальнего следования и неочевидные правила

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

Ачивка «Ген тестировщика»: моя коллега сначала села в поезд, а спустя час распечатала билет на станции, мимо которой проехала.

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

Поэтому давайте мы сейчас выкусим весь изюм из правил перевозок основных пассажирских компаний на железной дороге, чтобы нести свет знаний в массы. И, возможно, немного снизить нагрузку на наш колл-центр на первой линии.
Читать дальше →
Всего голосов 80: ↑78 и ↓2 +76
Комментарии 191

На переднем крае науки: анализ статей arxiv.org

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

Моя специальность — физика конденсированного состояния. Разумеется, в процессе погружения в нее требуется изучать много научных статей, однако на разбор хотя бы одной может уйти немало времени. На arxiv в разделе cond-mat публикуется более тысячи статей в месяц. Складывается ситуация, когда многие исследователи, особенно начинающие, не обладают целостным видением своей области науки. Описанный в этой статье инструмент резюмирует содержимое базы научных статей и призван ускорить работу с литературой.
Читать дальше →
Всего голосов 66: ↑65 и ↓1 +64
Комментарии 31

Релиз неофициального MTProto прокси на Python, особенности протокола

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

Недавно разработчики Telegram выложили исходные тексты прокси-сервера, работающего по протоколу MTProto. На хабре вышли статьи об особенностях его сборки и перепаковке докер-контейнера с ним. Официальный прокси сервер, написанный на С, удивляет объемом кода — примерно 23 тысячи строк. Одновременно с этим, а иногда и чуть раньше, вышло несколько альтернативных реализаций, но ни одна из них не поддерживала возможность рекламы своего канала.

В данной статье хотелось бы, во-первых, рассказать о малоизвестных особенностях протокола общения прокси-сервера с внешними серверами и, во-вторых, рассказать о собственной разработке — реализации прокси-сервера на Python, которая только что достигла релиза и доступна всем желающим под свободной лицензией MIT.
Читать дальше →
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 86

Теория большой свалки: ищем научные документы на просторах интернета

Время на прочтение 7 мин
Количество просмотров 13K
Система «Антиплагиат» – это специализированный поисковик. Как и положено поисковику, с собственным движком и поисковыми индексами. Самый большой наш индекс по количеству источников – конечно же, у русскоязычного интернета. Довольно давно мы решили, что будем помещать в этот индекс все, что является именно текстом (а не картинкой, музыкой или видео), написано на русском языке, имеет размер больше 1 кб и не является «почти-дубликатом» чего-то, что уже есть в индексе.

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

По мере роста интернет-индекса – а сейчас, на секундочку, это уже более 300 млн документов только лишь на русском языке – возникает вполне естественный вопрос: а много ли в этой свалке действительно полезных документов.

И раз уж мы (yury_chekhovich и Andrey_Khazov) занялись такой рефлексией, то почему бы нам заодно не ответить еще на несколько вопросов. Сколько проиндексировано научных документов, а сколько ненаучных? Какую долю среди научных статей занимают дипломы, статьи, авторефераты? Каково распределение документов по тематикам?



Так как речь идет о сотнях миллионов документов, то необходимо использовать средства автоматического анализа данных, в частности, технологии машинного обучения. Конечно, в большинстве случаев качество экспертной оценки превосходит машинные методы, но привлекать человеческие ресурсы для решения столь обширной задачи оказалось бы слишком дорогим удовольствием.
Читать дальше →
Всего голосов 33: ↑30 и ↓3 +27
Комментарии 10

Краткая сводка о заблокированных адресах

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

Здравствуйте, друзья! По просьбе lostpassword решил написать краткую сводку о состоянии блокировки на текущий день. В данной статье используются данные полученные из неофициальной выгрузки РКН. В данной сводке не будут представлены отдельные IP-адреса различных проектов, а будут рассмотрены только префиксы размером от /24.

Читать дальше →
Всего голосов 92: ↑88 и ↓4 +84
Комментарии 1134

Современный CSS для динозавров

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

— Двигать пиксели в CSS и так было трудно! А теперь мне говорят, насколько круто использовать несемантические названия классов, встроенные стили в HTML и даже писать стили CSS на JavaScript!
[Вставь тут гифку из «Гриффинов»] — Ха!
Иллюстрации из Dinosaur Comics Райана Норта


Как ни странно, CSS считается одновременно одним из самых простых и одним из самых сложных языков для веб-разработчика. Определённо он достаточно прост в начале — вы определяете свойства стиля, значения для конкретных элементов и… это практически всё, что нужно знать! Однако в больших проектах ситуация становится довольно запутанной и сложной, чтобы организовать CSS каким-то осмысленным образом. Изменение любой строчки CSS для стилизации элемента на одной странице часто ведёт к непредвиденным последствиям для элементов на других страницах.

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

Цель этой статьи — показать исторический контекст, как развивались техники и инструменты CSS до их нынешнего состояния в 2018 году. Поняв эту историю будет легче понять каждый подход и как с выгодой его использовать. Итак, начнём!
Читать дальше →
Всего голосов 43: ↑39 и ↓4 +35
Комментарии 41

Объясняем современный JavaScript динозавру

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


Если вы не изучали JavaScript с самого начала, то осваивать его современную версию сложно. Экосистема быстро растёт и меняется, так что трудно разобраться с проблемами, для решения которых придуманы разные инструменты. Я начал программировать в 1998-м, но начал понимать JavaScript только в 2014-м. Помню, как просматривал Browserify и смотрел на его слоган:


Browserify позволяет делать require («модули») в браузере, объединяя все ваши зависимости


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


Цель статьи — рассказать о контексте, в котором инструменты в JavaScript развивались вплоть до 2017-го. Начнём с самого начала и будем делать сайт, как это делали бы динозавры — безо всяких инструментов, на чистом HTML и JavaScript. Постепенно станем вводить разные инструменты, поочерёдно рассматривая решаемые ими проблемы. Благодаря историческому контексту вы сможете адаптироваться к постоянно меняющемуся ландшафту JavaScript и понять его.

Всего голосов 174: ↑171 и ↓3 +168
Комментарии 505

Два в одном: как пользоваться Vim и Nano?

Время на прочтение 16 мин
Количество просмотров 85K
Upd. 9.7.2017: обновлён раздел про vim. Спасибо вимерам за ценные дополнения.

Вступительное слово


Зачем нужна ещё одна, 1001я публикация на эту тему? Статей про vim и nano написано огромное количество, но как правило они касаются только одного из редакторов, либо представляют из себя общий обзор. Чтобы в одной были сжато описаны оба редактора, но при этом без углубления в дебри приведены все основные клавиши управления для полноценной работы, я не не нашёл. Поэтому, почитав найденные материалы, я начал их конспектировать, так и родилась эта статья.


Любой текстовый редактор можно освоить «методом тыка». Но только не vim.
Чем nano лучше vim?
Из nano можно выйти без reset'а! (с) Интернет


Изначально я не планировал писать об обоих редакторах, а хотел сделать краткую справку только по nano, но в процессе сбора информации накопились данные и по vim тоже. Тут я обнаружил, что Vim не так уж и страшен, если знать команды и концепцию его использования.

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

Троллим бумажную газету

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


Я, чёрт побери, давно хотел подать обычное объявление «Сокол, нас раскрыли». Прямо представлял, как газета разъезжается по подписке всем пенсионерам, а они читают это объявление и обсуждают его на лавочках. А ещё лучше даже не одно, а взять и подать штук 10 объявлений, чтобы у читателя мозг нафиг сломался, пытаясь их осилить.

Случай представился. Подавали мы рекламный модуль в одну из газет объявлений, и владелец говорит – а давайте бартером, вы мне здоровенный хоккей, а я вам объявление раза в два больше. В итоге после нескольких итераций предложили поприкалываться и получили полосу после разъяснения идеи, благо люди адекватные. Поэтому сбылась давняя мечта натворить в серьёзной газете фигни. Вот эта полоса под катом.
Читать дальше →
Всего голосов 138: ↑129 и ↓9 +120
Комментарии 130

Gmail — предупреждение о шифровании

Время на прочтение 2 мин
Количество просмотров 24K
С недавних пор Gmail начал предупреждать что сервер отправителя дословно Домен example.com не зашифровал это сообщение и при просмотре письма отображать открытый замочек (Подробнее в справке google). Сама формулировка в справочном центре долгое время меня вводила в заблуждение: Если в полученном сообщении или черновике появился красный значок взломанного значка , это означает, что письмо не зашифровано.. Означает это всего навсего что письмо было передано не по зашифрованному протоколу, никакого отношения к шифрованию письма этот замочек не имеет. Долгое время эта формулировка сбивала меня с толку и «гуглил» я в неверном направлении пока более опытный товарищ не подсказал.

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

Простейшие клеточные автоматы и их практическое применение

Время на прочтение 6 мин
Количество просмотров 103K
Этот мир просто охренеть какой сложный, каждый день поражаюсь.

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

И знаете, что удивительно? Этот подход замечательно работает. Ну, почти всегда. По крайней мере, ничего лучше мы до сих пор не придумали.

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

image

Да, я о клеточных автоматах, а именно — об их подмножестве, простейших клеточных автоматах (Elementary cellular automaton). В этой статье я поведаю, что это такое, какие они бывают, какими свойствами обладают, а также отвечу на главный, на мой взгляд, и совершенно правильный вопрос, который часто несправедливо игнорируется в подобных статьях. Звучит он так: А это всё вообще зачем?

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

Я искренне надеюсь, что после прочтения статьи вы сами захотите поиграться с ними, и на этот случай у меня припасен собранный из JS и палок генератор.
Хватит воды, давай к сути
Всего голосов 89: ↑88 и ↓1 +87
Комментарии 15

Рисуем анимированную сцену с помощью css

Время на прочтение 7 мин
Количество просмотров 50K
Передохнём от верстки всяких пользовательских интерфейсов и просто порисуем на CSS. Рисовать будем такую вот сцену:



Смотреть на jsfiddle.

В статье я попробую описать пошаговое создание этой сцены.
Поехали
Всего голосов 51: ↑44 и ↓7 +37
Комментарии 23

Бесплатный CppCat для студентов

Время на прочтение 3 мин
Количество просмотров 22K
Бесплатный CppCat для студентов
CppCat – это статический анализатор кода, интегрирующийся в среду Visual Studio 2010-2013. Анализатор предназначен для регулярного использования и позволяет выявить множество ошибок и опечаток в программах на языке Си и Си++. С целью его популяризации мы решили выдавать бесплатные лицензии всем студентам, которые к нам обратятся. Достаточно прислать фотографию студенческого билета или зачётной книжки.
Читать дальше →
Всего голосов 39: ↑37 и ↓2 +35
Комментарии 32
1

Информация

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