Как стать автором
Обновить
11
0

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

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

Чему нас НЕ учат случаи МТС, СДЭК и КБ Радуга или Имитационная Безопасность

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

Утром 17 марта (2024) стали недоступны VDS‑серверы одновременно в двух датацентрах CloudMTS — в 03:30 в 1cloud.ru, в 03:45 в oblako.kz
Сервер в oblako.kz ожил 18 марта в 22:25
Сервер в 1cloud.ru ожил 23 марта в 15:40

Читать далее
Всего голосов 111: ↑86 и ↓25+80
Комментарии61

Десять английских идиом, которые поставили меня в тупик

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

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

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

Добро пожаловать под кат
Всего голосов 61: ↑58 и ↓3+73
Комментарии128

Краткий конспект по языку JavaScript

Время на прочтение15 мин
Количество просмотров113K
Я —.NET разработчик. Но в последнее время всё чаще сталкиваюсь с JavaScript. Причём, процентах в 50 случаев я что-то на нём пишу, в остальных 50 — разбираюсь с чужим кодом, да ещё и прошедшим через минификацию, а иногда и обфускацию. В этой статье захотелось поделиться теми моментами, которые мне показались важными для понимания языка и эффективной работы с ним. Тут не будет ничего нового или неизвестного для людей, уже имевших дело с языком, и не будет чего-то такого, чего нельзя найти в других источниках. Для меня статья будет полезна как способ лучше разобраться в предмете, для читателей, я надеюсь, — как повод освежить знания.

Брендан Айк упоминал, что JavaScript был создан за 10 дней. Думаю, идея вынашивалась дольше. Как бы то ни было, язык получился и с тех пор только набирает популярность. Особенно после появления AJAX.

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

JavaScript состоит из трёх обособленных частей:

  • ядро (ECMAScript),
  • объектная модель браузера (Browser Object Model или BOM),
  • объектная модель документа (Document Object Model или DOM).


В статье, в основном, пойдёт речь о ядре. Конечно, в примерах кода будут использоваться элементы DOM и BOM, но заострять на них внимание не буду.
Читать дальше →
Всего голосов 75: ↑65 и ↓10+55
Комментарии20

Обзор катастрофических рисков ИИ

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

Это перевод статьи Дэна Хендрикса, Мантаса Мазейки и Томаса Вудсайда из Center for AI Safety. Статья не требует практически никаких предварительных знаний по безопасности ИИ, хотя предполагает некоторый (небольшой) уровень осведомлённости о прогрессе ИИ в последние годы.

Читать далее
Всего голосов 9: ↑8 и ↓1+10
Комментарии5

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

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

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

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

Читать далее
Всего голосов 273: ↑272 и ↓1+323
Комментарии344

Как стать VPN провайдером за один вечер

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

Рассказываю о своём опыте использования Xray (с протоколом VLESS-Reality) - одного из лучших решений для преодоления интернет-цензуры на сегодняшний день. Я потратил много времени на то, чтобы разобраться с ним - теперь вам достаточно одного вечера, чтобы поднять свой сервер на несколько десятков пользователей, c xray на борту!

скрипт ex.sh для простой настройки и установки; есть поддержка Docker

легко добавлять пользователей; клиентские конфиги в форме url-ссылок

правильные конфиги: скрытность + удобство

трафик популярных российских сайтов идёт напрямую, a не через сервер

для xray есть приложения под все популярные ОС - делюсь инструкциями

только https, нет udp; торренты через сервер блокируются по возможности

мой проект на гитхабе: easy-xray

Интересны детали? Добро пожаловать под кат
Всего голосов 59: ↑58 и ↓1+69
Комментарии142

Руководство для домохозяек, стремящихся к соблюдению сетевой гигиены и чистоплотности

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

Делать будем жёстко, быстро и без соплей с сахаром. Как настоящая домохозяйка или мамкин админ!

За один вечер: покупаем и настраиваем VPS, поднимаем VLESS/Xray, настраиваем клиентcкое ПО на своём планшете, на ноуте мамы и на айфоне бабушки. А для очень ленивых будет AMNEZIA...

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

Боремся с блокировками с помощью Trojan TCP на слабых устройствах c OpenWRT

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

В данной статье рассмотрим как:

Настроить обход блокировок с помощью Trojan TCP, tun2socks и bird2 (BGP) на устройствах с 8 Мб ПЗУ и 64 ОЗУ (8/64);

Настроить существующее подключение к OpenVPN серверу, которое могло или может перестать работать, через Trojan TCP туннель (Websocket этой реализацией не поддерживается);

Собрать прошивку с Trojan, kmod-tun, zram и bird2 на базе OpenWRT 21.02.7 для устройств с 8/64.

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

Моя любимая задачка по программированию для кодинг-интервью

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

За время работы в Google я провёл более двух сотен интервью. И главное, что я вынес из этой работы — проводить качественные собеседования очень непросто. Все дело в сигналах, которые мы посылаем и получаем. И у интервьюера, и у самого кандидата есть меньше часа, чтобы выложиться на полную. Порой, по разным причинам, мы получаем друг от друга ложные или неточные сигналы. Такова уж человеческая природа.

С годами я выработал вопрос по кодингу, который мне самому очень нравится. Это до жути простой и в то же время заковыристый вопрос. Решение занимает не более 30 строк кода, но зато даёт мне все нужные сигналы для вынесения верной оценки кандидату. Кроме того, мой вопрос отлично масштабируется и подходит как стажёрам, так и опытным инженерам. Здесь я не стремлюсь доказать, что мой вопрос лучше какого-то другого. Я лишь хочу объяснить, как он помогает мне как интервьюеру и на что я обращаю внимание на собеседовании по программированию.

В этой статье будут вещи, с которыми вы можете не согласиться. Это нормально. Это просто моё мнение, а так как я уже вышел на пенсию, то больше не представляю опасности ни для интервьюеров, ни для инженеров Google при принятии решений о найме! ;-)

Читать далее
Всего голосов 64: ↑50 и ↓14+49
Комментарии345

Применение low-code платформ в энтерпрайзе

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

Мы в компании активно используем low-code платформы много лет. За время работы набрался опыт в преодолении проблем, связанных с этими платформами, и кристаллизовались подходы, которые хорошо себя показали.

В статье я разберу, что в low-code подходе помогает бизнесу, а что создаёт сложности. При рассмотрении проблем я предложу «лекарства», которые помогут вам нивелировать проблемы.

В конце статьи я составил чек-лист, по которому рекомендую проверять low-code платформу, прежде чем вы решитесь использовать её для решения своих бизнес-задач.

Статья состоит из шести разделов:

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

Самая дешевая заводская панель управления умным домом, которая отлично работает

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

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

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

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

Выбор пал на NSPanel из‑за цены около 3,5 тысяч рублей, а также возможности установки в подрозетник или покупки настольной подставки — как у меня на фото.

Панель в подрозетник или на стол
Всего голосов 81: ↑78 и ↓3+99
Комментарии126

Доступная система видеонаблюдения с охраной на дачу за 60 минут

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

Речь пойдет о сборке, настройке и запуске охранной системы с датчиками, камерой, хранением видеозаписей на удаленном домашнем NAS, встроенным UPS, web-интерфейсом и оповещением через Telegram.

Чтобы быть предельно кратким, оформил статью в стилистике hackster.io. Информация рассчитана на читателей с опытом работы с одноплатным компьютером Raspberry и пониманием принципов работы VPN.

Читать далее
Всего голосов 102: ↑99 и ↓3+122
Комментарии163

Проектируйте правильно

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

Проект это сложная история. Обычно это относительно сложное и длительное мероприятие, создать программный продукт и провести его через стадию активной разработки до первой реальной коммерческой эксплуатации. Лично я видел как этот путь, в среднем, занимал от 2 до 5 лет на проекте с большой командой разработчиков.

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

Под катом наблюдения и личные выводы почему это происходит.

Читать далее
Всего голосов 22: ↑20 и ↓2+26
Комментарии5

Теория и практика парсинга исходников с помощью ANTLR и Roslyn

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

В нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:


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

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



К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:


  • поддержка нескольких языков программирования и простое добавление новых;
  • поддержка анализа кода, содержащего синтаксические и семантические ошибки;
  • возможность описания шаблонов на универсальном языке (DSL, domain specific language).

В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.


Весь процесс анализа кода может быть разбит на следующие этапы:


  1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
  2. преобразование AST в независимый от языка унифицированный формат;
  3. непосредственное сопоставление с шаблонами, описанными на DSL.

Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.

Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии19

Обработка древовидных структур и унифицированное AST

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

Предыдущая статья серии была посвящена теории парсинга исходников с использованием ANTLR и Roslyn. В ней было отмечено, что процесс сигнатурного анализа кода в нашем проекте PT Application Inspector разбит на следующие этапы:


  1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
  2. преобразование AST в независимый от языка унифицированный формат (Unified AST, UAST);
  3. непосредственное сопоставление с шаблонами, описанными на DSL.

Данная статья посвящена второму этапу, а именно: обработке AST с помощью стратегий Visitor и Listener, преобразованию AST в унифицированный формат, упрощению AST, а также алгоритму сопоставления древовидных структур.



Содержание


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

Как я делал бюджетное устройство мониторинга качества среды и что из этого вышло

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

В начале немного предыстории.

Однажды я был в гостях у своего товарища, который как и я, активно занимается домашней автоматизацией. Я увидел у него смонтированную систему приточной вентиляции и поинтересовался, как он реализовал автоматизацию этой системы. В ответ услышал, что он её включает вручную, так как у него нет устройства, которое анализирует качество воздуха, а готовые решения имеют зачастую слишком неоправданную цену для систем бытового применения. Недолго думая, я предложил ему своё решение, о котором далее и пойдет речь.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+33
Комментарии27

Метрики Эффективности Команд. Data driven подход к улучшению эффективности команд и бизнес результатов

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

Как понять эффективность команд? Как узнать можем ли мы перформить лучше и экономить ресурсы? Многие поднимают эти вопросы в компаниях.

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

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

Читать далее
Всего голосов 10: ↑6 и ↓4+3
Комментарии5

Когда начинает работать закон больших чисел

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

Большие числа != большим числам.

Число 100 большое? Зависит от ситуации. Сравниваем ли мы его с 0,001, или с 100000? Как и многое в жизни, понятие «большой» относительно.

В этом посте мы объясним, насколько большим должно быть «большое» и докажем, что вы, скорее всего, ошибаетесь насчёт закона больших чисел.

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

Особенности проксирования через CDN/Websocket/gRPC для обхода блокировок

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

Эта статья — заключительная (наконец‑то!) из моего огромного цикла про недетектируемые инструменты для обхода блокировок. В предыдущих публикациях я упоминал, что клиенты и серверы XRay (форк V2Ray) и Sing‑box при использовании протоколов VLESS/VMess/Trojan могут работать через веб‑сокеты и gRPC, что позволяет подключаться к даже заблокированным Роскомнадзором прокси‑серверам через CDN (content delivery или content distribution network) и дает дополнительные преимущества. Сегодня мы поговорим об этом поподробнее.

Читать далее
Всего голосов 62: ↑60 и ↓2+76
Комментарии148

А давайте убьем все фреймворки?

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

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

Технологии эволюционируют и функционируют, а новые технологии их полностью заменяют. Считаю, что сейчас наступает эпоха, когда технологии фреймворков и Электрона могут быть вытеснены генеративными AI. Рассмотрим несколько примеров.

Нажимайте вот эту вот кнопотуленку
Всего голосов 115: ↑89 и ↓26+82
Комментарии274

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность