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

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

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

Black-box тестирование сотовой сети: как операторы защищают абонентов от хакерских атак

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

В статьях о SS7 и Diameter улавливаются панические нотки: протоколы сотовой связи похожи на решето, от них нельзя взять и отказаться, их не исправить. И все же, телеком-апокалипсис до сих пор не случился. Сотовые сети работают, но каким образом?

Мы проверили, как и насколько эффективно сотовые операторы защищают сигнальные сети от хакеров. Один из мобильных операторов, работающих на территории СНГ, заказал две серии атак на свою сеть. Мы провели пентест до и после внедрения некой продвинутой защиты и готовы поделиться инсайдами.

Думаю, широкой публике будет интересно узнать, какие атаки возможны на практике, и что делать для защиты личных данных. Специалисты увидят в этом посте рассказ об одном из первых black-box тестов сигнальных сетей в СНГ.

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

SigPloit: опубликован фреймворк для тестирования телеком-уязвимостей в протоколах SS7, GTP, Diameter и SIP

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

На GitHub опубликован код фреймворка SigPloit. Код выложил в открытый доступ исследователь информационной безопасности Лоай Абдельразек (Loay Abdelrazek). С помощью SigPloit можно проводить тестирования уязвимостей в телекоммуникационных протоколах. Появление проекта может серьезно изменить ситуацию в сфере информационной безопасности телеком-операторов.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 8

Бесплатные сервисы для разработчиков — огромный список

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

Бесплатное хранилище артефактов PackageCloud

Удивительно, но в интернете сотни сервисов, которыми разработчик может пользоваться совершенно бесплатно. «Бесконечное» время (пока компания не обанкротится или не изменит условия), без рекламы, пробного периода и других подводных камней.

Недавно мы обсуждали эту тему в статье «Боль разработчика: “Никогда не давайте пользователям бесплатный тариф”». Речь шла о том, что на самом деле бесплатный план вовсе не бесплатен — приходится тратить массу времени и усилий на поддержку этих тарифов.

Но для некоторых бесплатный тариф — единственный способ завлечь новых клиентов. Это просто замечательно с точки зрения самих пользователей. Ведь перед нами десятки бесплатных хостингов, API, CMS, CDN, сервисов обработки данных, поисковых движков, репозиториев, инструментов проверки кода и других. Бесплатный тариф идеален для опенсорс-разработчиков, любительских и некоммерческих проектов, маленьких стартапов. Ни за что не надо платить.
Читать дальше →
Всего голосов 83: ↑77 и ↓6 +71
Комментарии 15

Я не знал, как работают процессоры, поэтому написал программный симулятор

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

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

Я прочитал книгу «Но откуда он знает?» Кларка Скотта с детальным описанием простого 8-битного компьютера: начиная с логических вентилей, ОЗУ, транзисторов процессора, заканчивая арифметико-логическим устройством и операциями ввода-вывода. И мне захотелось реализовать всё это в коде.

Хотя я не настолько интересуюсь физикой микросхем, но книга просто скользит по волнам и красиво объясняет электросхемы и как биты перемещаются по системе — от читателя не требуется знание электротехники. Но мне недостаточно текстового описания. Я должен видеть вещи в действии и учиться на своих неизбежных ошибках. Так я начал реализацию схем в коде. Путь оказался тернист, но поучителен.
Читать дальше →
Всего голосов 72: ↑68 и ↓4 +64
Комментарии 33

Как читать научные статьи: советы ученых

Время на прочтение 10 мин
Количество просмотров 56K
«Чтение научной статьи – то, что заставит вас чувствовать себя глупее некуда», – пишет ученый Адам Рубин (Adam Ruben) в своей юмористической колонке для журнала Science. Адам прав: читая статью из рецензируемого научного журнала, многие из нас начинают с оптимизма («В конце концов это всего лишь несколько страниц»), а заканчивают отчаянным желанием срочно сменить сферу деятельности на такую, где научных статей или вовсе нет, или их пишут как-то иначе. На самом деле проблема не в статьях – а в том, как мы их выбираем и читаем.

О том, что советуют делать по этому поводу сами ученые, расскажем ниже.

Читать дальше →
Всего голосов 28: ↑26 и ↓2 +24
Комментарии 10

Каково это — быть разработчиком в России, когда тебе сорок

Время на прочтение 37 мин
Количество просмотров 161K
Привет всем, я — сорокалетний программист-самоучка, а это моя история.

Пару недель назад я наткнулся на график распределения людей, интересующихся технологиями, ИТ и программированием. И он заставил меня задуматься о моей карьере.



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

Я дебютировал в роли разработчика программного обеспечения в 1990 году, через год после того, как мне на 14-тилетие родители подарили ПЭВМ «Микроша».
Читать дальше →
Всего голосов 353: ↑338 и ↓15 +323
Комментарии 788

Программирование без использования условных конструкций

Время на прочтение 3 мин
Количество просмотров 33K
Один знакомый заявил мне, что любая программа может быть написана без использования if/else. Я, конечно, тут же возмутился и сформулировал ему (а заодно и себе) простейшую задачу: написать программу, которая будет радоваться, если на вход ей подать, например, слово «печенька», и огорчаться в противном случае; но при этом нельзя использовать никаких конструкций, изменяющих направление программы — то есть она должна быть строго линейной. Решение под катом.
Читать дальше →
Всего голосов 83: ↑56 и ↓27 +29
Комментарии 161

Как правильно писать код?

Время на прочтение 5 мин
Количество просмотров 68K
На протяжении свой карьеры программиста, я неоднократно сталкивался с тем, что программисты не умеют писать код. Причем это может касаться как начинающих так уже и очень опытных людей. Честно говоря, по моему мнению существуют единицы, которые действительно умеют это делать. Я не претендую на полноту освещение проблемы и на то что мое мнение правильное, а рассмотрю ее со своей точки зрения.
На мой взгляд не существует и не может существовать единого стандарта и каждый человек волен выбирать и адаптировать свои собственные подходы к программированию. Но есть некоторый набор практик, который помогает в подавляющем большинстве случаев.
Читать дальше →
Всего голосов 147: ↑83 и ↓64 +19
Комментарии 174

Человеческим языком про метрики 4: PromQL

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

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

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

Человеческим языком про метрики 1: Потерянное введение

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

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

Мне нужен был гайд, который сочетает эти две вещи: сначала «почему так принято», а затем — «как правильно делать». В результате такой гайд мне пришлось написать самому. Его цель — объяснить разработчикам с любым бэкграундом, что такое метрики, как правильно о них думать и осмысленно использовать. Сначала гайд жил во внутренней документации Точки, но я решил сделать его публичным — возможно, кому-то этот опыт будет полезен. Разбираться будем с Prometheus и Grafana. Если у вас другой стек — не страшно. Мы затронем и фундаментальные темы: например, перцентили, производные и кардинальность.

Гайд будет выходить как цикл статей. Сначала посмотрим на архитектуру: как собираются метрики и где хранятся. Дальше разберемся с типами метрик — они не так просты, как кажется. Потом придется немного отвлечься на математику (но только с инженерной точки зрения!). И, наконец, научимся писать запросы, но не просто так: сразу посмотрим на разные грабли и неочевидные моменты.

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

Заметки по книге «Философия разработки ПО»

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


Возможно, вы понимаете как писать хороший код, как придерживаться хорошего дизайна. Но структурировать эти знания не получается. Книга Джона Оустерхаута “A philosophy of software design” может помочь исправить это.


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


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

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

Как работать с Postgres в Go: практики, особенности, нюансы

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


Неожиданное поведение приложения в отношении работы с базой приводит к войне между DBA и разработчиками: DBA кричат: «Ваше приложение роняет базу», разработчики — «Но ведь до этого всё работало!». Хуже всего, что DBA и разработчики не могут помочь друг другу: одни не знают про нюансы работы приложения и драйвера, другие не знают про особенности, связанные с инфраструктурой. Было бы неплохо такой ситуации избежать.


Надо понимать, часто недостаточно полистать go-database-sql.org. Лучше вооружиться чужим опытом. Еще лучше, если это будет опыт, полученный кровью и потерянными деньгами.

Всего голосов 76: ↑73 и ↓3 +70
Комментарии 29

Выбор MQ для высоконагруженного проекта

Время на прочтение 5 мин
Количество просмотров 170K
Современные масштабируемые системы состоят из микросервисов, каждый из которых отвечает за свою ограниченную задачу. Такая архитектура позволяет не допускать чрезмерного разрастания исходного кода и контролировать технический долг.

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

Если микросервис перестает отвечать на запросы в результате аварии, его клиенты должны быть мгновенно перенаправлены на резервный. Для управления потоком запросов часто используют так называемые очереди сообщений (message queues).

Недавно используемая нами очередь перестала нас устраивать по параметрам отказоустойчивости и мы заменили ее. Ниже мы делимся нашим опытом выбора.
Читать дальше →
Всего голосов 46: ↑38 и ↓8 +30
Комментарии 57

Single Responsibility Principle. Не такой простой, как кажется

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

image Single responsibility principle, он же принцип единой ответственности,
он же принцип единой изменчивости — крайне скользкий для понимания парень и столь нервозный вопрос на собеседовании программиста.


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


В лесу нас разделили на группы по 8-9 человек в каждой и устроили соревнование — какая группа быстрее выпьет бутылку водки при условии, что первый человек из группы наливает водку в стакан, второй выпивает, а третий закусывает. Выполнивший свою операцию юнит встает в конец очереди группы.


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

Но почему соображать нужно именно на троих?
Всего голосов 34: ↑31 и ↓3 +28
Комментарии 16

Как организовать релиз

Время на прочтение 4 мин
Количество просмотров 14K
Релизить продукт — это самая важная часть работы любой софтверной компании. Но если вы боитесь делать релиз, то возможно вы что-то делаете не так. Я расскажу как обычно организовываю релиз. Данная статья не претендует на исчерпывающее руководство поскольку в индустрии разработки программного обеспечения все индивидуально.
Читать дальше →
Всего голосов 13: ↑7 и ↓6 +1
Комментарии 2

Атомарный веб-дизайн

Время на прочтение 5 мин
Количество просмотров 120K
Предлагаю читателям «Хабрахабра» перевод статьи Брэда Фроста (Brad Frost) «Atomic Web Design».



Мы не проектируем страницы, мы проектируем системы компонент. — Stephen Hay

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

Многое было сказано насчeт создания систем дизайна, и наибольший акцент делается, в основном, на установление цветов, типографии, сеток, текстур и т.п. Такой тип мышления, несомненно, важен, но я чуть меньше заинтересован в этих аспектах дизайна, потому что, по большому счeту, они всегда субъективны. В последнее время меня больше озадачил вопрос о том, из чего состоят наши интерфейсы, и как мы можем проектировать их более систематично.
Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 8

Юзер-стори идеальная, а багов 100500? Как мы тестируем документацию

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

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

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

Проектирование программного обеспечения: что такое Acceptance Criteria и зачем они нужны?

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

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

Вот что вам нужно:

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

Гайд по User Stories для Junior BA / PO / PM

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

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

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

VPN: ещё раз просто о сложном

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

Вы сталкивались с ошибкой “Это видео не доступно для просмотра в Вашей стране”? Пробовали заходить на LinkedIn? Подобные ограничения можно обойти с помощью включения VPN на своем девайсе. В последнее время огромное количество людей было вынуждено перейти на дистанционный формат работы и многие работодатели обязали своих сотрудников пользоваться VPN для защищенного доступа к корпоративным сервисам. Сегодня мы постараемся разобраться в том, что такое VPN и как это работает.

Что такое VPN?

VPN – Virtual Private Network – виртуальная частная сеть.

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

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

Приведем еще одно определение: VPN – это сервис, позволяющий защитить приватные данные при пользовании Интернетом.

Читать далее
Всего голосов 49: ↑35 и ↓14 +21
Комментарии 19

Информация

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