Как стать автором
Обновить
31
0
Алексей Захаров @alexey_zz

Инженер

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

Как безопасно программировать в bash

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

Почему bash?


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

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

Предисловие


Данное руководство сопровождает ShellHarden, но автор также рекомендует ShellCheck, чтобы правила ShellHarden не расходились с ShellCheck.

Bash — не тот язык, где самый правильный способ решить проблему одновременно является самым простым. Если принимать экзамен по безопасному программированию в bash, то первое правило BashPitfalls звучало бы так: всегда используй кавычки.

Главное, что нужно знать о программировании в bash


Маниакально ставить кавычки! Незакавыченная переменная должна расцениваться как взведённая бомба: она взрывается при контакте с пробелом. Да, «взрывается» в смысле разделения строки на массив. В частности, расширения переменных вроде $var и подстановки команд вроде $(cmd) подвергаются расщеплению слов, когда внутренняя строка расширяется в массив из-за расщепления в специальной переменной $IFS с пробелом по умолчанию. Это обычно незаметно, потому что чаще всего результатом становится массив из 1 элемента, неотличимый от ожидаемой строки.
Читать дальше →
Всего голосов 74: ↑73 и ↓1 +72
Комментарии 39

Строим свое собственное отказоустойчивое облако на базе OpenNebula с Ceph, MariaDB Galera Cluster и OpenvSwitch

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


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


Темы сами по себе очень интересные, так что даже если вас не интересует конечная цель, но интересует настройка какого-нибудь отдельного компонента. Милости прошу под кат.
Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Комментарии 20

Книга «Вечность. В поисках окончательной теории времени»

Время на прочтение 18 мин
Количество просмотров 21K
Всем привет! Мы решили поделится переводом главы «Квантовое время» из книги Шона Кэрролла:

image Что такое время в современном понимании и почему оно обладает именно такими свойствами? Почему время всегда двигается в одном направлении? Почему существуют необратимые процессы? Двадцать лет назад Стивен Хокинг пытался объяснить время через теорию Большого Взрыва. Теперь Шон Кэрролл, один из ведущих физиков-теоретиков современности, познакомит вас с восхитительной парадигмой теории стрелы времени, которая охватывает предметы из энтропии квантовой механики к путешествию во времени в теории информации и смысла жизни.

Книга «Вечность. В поисках окончательной теории времени» не просто следующий шаг на пути к пониманию почему существует Вселенная — это прекрасное чтения для широкого круга читателей, которые интересуются физикой и устройством нашего мира.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 13

ARP: Нюансы работы оборудования Cisco и интересные случаи. Часть 2

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


Привет, Habr! В предыдущей части статьи мы рассмотрели особенности работы ARP на маршрутизаторах Cisco, связанные с правилами NAT и с функцией Proxy ARP. В данном посте попробую разобрать отличия в работе ARP между маршрутизаторами Cisco и межсетевыми экранами Cisco ASA. В заключении статьи поделюсь несколькими интересными случаями из практики, связанными с работой ARP.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 16

Критически опасные уязвимости в популярных 3G- и 4G-модемах или как построить Большого Брата

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


Данный отчет является логическим продолжением исследования «#root via SMS», завершенного в 2014 году командой SCADA Strangelove. Исследование затрагивало уязвимости модемов лишь частично, в рамках более широкого описания уязвимостей оборудования телеком-операторов. В настоящем документе представлено описание всех найденных и использованных уязвимостей в 8 популярных моделях 3G- и 4G-модемов, доступных в России и по всему миру. Найденные уязвимости позволяют проводить удаленное выполнение кода в веб-сценариях (RCE), произвольную модификацию прошивки, межсайтовую подделку запросов (CSRF) и межсайтовое выполнение сценариев (XSS).

В исследовании также описан наиболее полный набор векторов атак на клиентов телекома, использующих данные модемы — это может быть идентификация устройств, внедрение кода, заражение пользовательского компьютера, к которому подключен модем, подделка SIM-карты и перехват данных, определение местоположения абонента и доступ к его личному кабинету на портале оператора, а также целевые атаки (APT). Слайды презентации данного исследования с ZeroNights 2015 представлены здесь.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 6

Обзор архитектур сети ЦОД

Время на прочтение 3 мин
Количество просмотров 37K
Часть 1. «Частица бога»

Ушедший 2012 год был богат на знаковые научные прорывы — и расшифровка генома Денисовцев, и посадка «Куриосити» на Марс, и выращенная из стволовой клетки мышь. Однако самым важным открытием 2012 года все однозначно признают событие, произошедшее в июле в CERN-е (Европейский центр ядерных исследований) — практическое подтверждение существования бозона Хиггса, «частицы бога», как окрестил ее Леон Макс Ледерман.

«Ну и причем здесь HP?» спросите вы. Компания НР давно и очень плотно сотрудничает с CERN, особенно в области сетевых технологий. Так, например, в CERN Openlab R&D ведутся перспективные разработки в области создания приложений под SDN-контроллер на базе НР, активным образом идут разработки систем сетевой безопасности и т.д. Поэтому в данном открытии компания НР принимала самое непосредственное участие. В буквальном смысле, помогала ловить бозон Хиггса с момента запуска LHC, т.к. сеть сбора и обработки информации с LHC построена на оборудовании HP. Чтобы понимать масштаб сети в CERN – это порядка 50 000 активных пользовательских устройств, более 10 000 километров кабеля, порядка 2500 сетевых устройств. Эта сеть переваривает каждый год примерно 15 Петабайт информации (огромное количество данных с детекторов — статистика от столкновений пучков частиц со скоростями почти равными скорости света). Вся эта масса данных обрабатывается в распределенной сети ЦОД. Именно там, в ЦОД-ах, на базе анализа гигантского объема статистики и «просеялась через сито частица бога».

Читать дальше →
Всего голосов 33: ↑23 и ↓10 +13
Комментарии 23

Методы организации взаимодействия между скриптами в Unity3D

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

Вступление


Даже средний Unity3D проект очень быстро наполняется большим количеством разнообразных скриптов и возникает вопрос взаимодействия этих скриптов друг с другом.
Данная статья предлагает несколько различных подходов к организации таких взаимодействий от простого до продвинутого и описывает к каким проблемам может привести каждый из подходов, а так же предложит способы решения этих проблем.
Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 34

Как мы делали HD Wi-Fi на стадионе в Краснодаре на 34 тысячи человек

Время на прочтение 10 мин
Количество просмотров 26K
Может показаться, что Wi-Fi на стадионе не нужен вообще. Пришёл болеть – так смотри за игрой, а не пости селфи и читай почту. Но нет, Wi-Fi нужен по двум важным причинам. Во-первых, при таком скоплении людей будут крайне быстро разобраны каналы сотовой сети, и большая часть болельщиков останется на время без телефона. Во-вторых, собственно, владельцам стадиона очень хотелось дать специальное мобильное приложение для всех болельщиков.

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


На радиообследовании


Результат обследования мембраны

Для всего этого нужен быстрый Wi-Fi высокой плотности и с минимальными интерференциональными явлениями. Обычных хотспотов тут не натыкать – нужна хорошая экспертиза радиообследования, плюс специальное оборудование. Результат – 150 хитрых точек доступа с beamforming после довольно нетривиальных работ.
Читать дальше →
Всего голосов 40: ↑39 и ↓1 +38
Комментарии 17

Steam Protocol v2

Время на прочтение 17 мин
Количество просмотров 22K
Steam Logo

Завершающая статья цикла, самая интересная и самая объемная:


В статье будут рассмотрены протоколы обмена данными клиента Steam с различными серверами:


В очередной раз напомню, что рассматриваемые протоколы устарели и в настоящее время не используются (за исключением GDS и Config — для совместимости).

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

ZFS on CentOS: работа над ошибками

Время на прочтение 5 мин
Количество просмотров 35K
Так как я довольно давно использую ZFS (ещё со времён OpenSolaris), и очень доволен данной ФС в Linux, несмотря на её «неправославную» лицензию, то естественно прочитал свежую статью об установке данной ФС на CentOS.

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

Работа над ошибками, и некоторые полезные советы под катом.
Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 22

Steam Files. Часть 1 — GCF/NCF

Время на прочтение 21 мин
Количество просмотров 21K
Steam LogoКак и обещал в предыдущей статье, начинаю публиковать статьи о той части инфраструктуры Steam, которую смогло открыть Anti-Steam сообщество путём реверс-инжиниринга и продолжительных мозговых штурмов.

Файлы формата GCF до недавнего времени являлись стандартом для всех игр, выпускаемых компанией VALVE, а NCF — для всех остальных. Сами по себе эти файлы представляют образ файловой системы с несколькими уровнями защиты. Отличие NCF от GCF заключается в том, что первые содержат только заголовки, а файлы, принадлежащие им, расположены в отдельном каталоге (<каталог Steam>/SteamApps/common/<имя игры>). Поэтому описывать буду GCF, а все особенности NCF приведу после.

В данной статье я подробно разберу структуру данных файлов и работу с ними на примере своей библиотеки (ссылка на неё — в конце статьи). Начало будет достаточно скучным — описание структур и назначения их полей. Самое «вкусное» будет после них…

Весь код, приведенный здесь, является плодом реверс-инжиниринга библиотек Steam. Большая часть информации о формате файлов была почерпнута из открытых источников, я же немного её дополнил и значительно оптимизировал работу с файлами кеша (даже по сравнению с самой популярной на то время библиотекой HLLIB).
Читать дальше →
Всего голосов 43: ↑41 и ↓2 +39
Комментарии 31

Как написать красивый код и завалить проект

Время на прочтение 6 мин
Количество просмотров 40K
— Мы забрели в зону с сильным магическим индексом-объяснил он, — Когда-то давно здесь образовалось мощное магическое поле.
– Вот именно, — ответил проходящий мимо куст.
Терри Пратчетт, Цвет волшебства


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

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



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

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

Параллельное выполнение зависимых задач и синхронизация с условными переменными в shell

Время на прочтение 20 мин
Количество просмотров 13K
Как синхронизировать параллельные шелл-процессы, используя named pipes (FIFO-файлы) в качестве условных переменных. Как выполнить параллельно зависимые задач в топологическом порядке с минимумом средств: POSIX shell, mkfifo, POSIX kernel. Как параллельный запуск ускоряет загрузку встраиваемых систем и *BSD (rc-этап FreeBSD с 27 до 7 секунд) или старт приложений в пользовательских контейнерах Docker, LXC и jail. Как это повышает аптайм в отказоустойчивых кластерах Jet9.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 10

LinuxCon 2015 и все, все, все: впечатления

Время на прочтение 6 мин
Количество просмотров 10K
Я не буду соревноваться в мастерстве написания репортажей с dzeban, вместе с которым мне посчастливилось побывать на конференции линукс-разработчиков LinuxCon Europe. Поэтому постараюсь просто осветить то, что мне больше всего запомнилось, и таким образом дополнить картину.



Мои впечатления не привязаны к хронологии конференции. Я в общих чертах расскажу про саму конференцию и самые интересные доклады со ссылками на презентации и соответствующие сайты. Прошу под кат.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 8

Установка OS Inferno New Edition (update)

Время на прочтение 8 мин
Количество просмотров 18K
FAQ: Что такое OS Inferno и зачем она нужна?

Информация в предыдущем посте устарела почти на 4 года, и меня попросили её обновить. Так же попросили не смешивать в одном посте установку с настройкой, поэтому здесь будет только установка, а настройка инферно описана в отдельном посте. Update: Описание установки для Windows обновлено в июне 2014.

Итак, мы будем устанавливать распределённую ОС Inferno. На официальном сайте есть инструкции по установке, но они не совсем корректны и тоже немного устарели. Inferno может работать в двух режимах — native (на голом железе или в qemu/etc. как все обычные ОС) и hosted (как обычное приложение под *NIX/Win). Инструкции по установке native Inferno можно найти в русской вики. Помимо этого существуют и другие варианты — например, установка Inferno на Android (англ.). Лично я смысла в использовании native Inferno на обычных компах не вижу, поэтому буду описывать установку hosted Inferno под Gentoo, Ubuntu, FreeBSD, MacOSX и Windows.
Читать дальше →
Всего голосов 33: ↑25 и ↓8 +17
Комментарии 30

Как я стал программистом. Путь от питерского бездомного до Senior Developer-а за 6 лет

Время на прочтение 6 мин
Количество просмотров 229K
Всем привет! Меня зовут Андрей, я работаю в отделе разработки продуктов Veeam Software.

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



Сегодня я хочу рассказать свою историю.

Итак, начну с момента, когда мне исполнился 21 год, я уволился из рядов доблестной российской армии и оказался на серых и холодных улицах Санкт-Петербурга. Осень, отсутствие жилья и денег активировали все клетки головного мозга для ответа на вопрос: «Что делать?».
Читать дальше →
Всего голосов 168: ↑152 и ↓16 +136
Комментарии 87

Добавить системный вызов. Часть 4 и последняя

Время на прочтение 10 мин
Количество просмотров 8.9K
                                                                                    - Что-то беспокоит меня Гондурас...
                                                                                    - Беспокоит? А ты его не чеши.


В предыдущих частях обсуждения (1-я, 2-я и 3-я) мы рассматривали как, используя возможность поменять содержимое sys_call_table, изменить поведение того или иного системного вызова Linux. Сейчас мы продолжим эксперименты в сторону того, можно ли (и как) динамически добавить новый системный вызов в целях вашего программного проекта.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Комментарии 24

40 ключевых концепций информационных технологий доступно и понятно

Время на прочтение 16 мин
Количество просмотров 159K
Представляю вашему вниманию перевод очень ёмкой, и в то же время достаточно краткой (для такого масштаба проблемы) статьи Карла Чео. Я решил, что очень хочу сделать её перевод практически сразу, как только начал читать, и очень рад, что в итоге сделал это.
Для того, чтобы сделать обучение более веселым и интересным, представляю вам перечень важных теорий и концепций информатики, объяснённых с помощью аналогий с минимальным количеством технических деталей. Это будет похоже на очень быстрый курс информатики для всех с целью просто дать вам общее представление об основных концепциях.

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

Также зацените эту инфографику (вариант на русском), если вы просто начинающий программист.
Читать дальше →
Всего голосов 104: ↑96 и ↓8 +88
Комментарии 37

Романтика дальних инженерных выездов (а наша крыса выжила)

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

"— Да ладно тебе, чё, правда нельзя так? Удобно же, кабель многожильный, мягкий. В одножильный так не завернёшь..."

Заказчик — большая компания — объявляет тендер на ИБП и кондиционирование для инфраструктуры своих дата-центров по всей стране. Объектов чуть меньше 30 штук, причём включая города, где нет железной дороги. В основном. В августе стартует конкурс, в ноябре только-только заканчивается оформление всей документации. Соответственно, наши инженеры приезжают уже в тот момент, когда «снаружи» от -30 до -40 наружного воздуха. А по условиям контракта нужно мыть наружный блок кондиционера.

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

В такие выезды мы всегда отправляем хотя бы одного инженера с опытом подобных работ, потому что подводных камней много. Начиная от того, что за святотатство могут банально побить, и заканчивая тем, что ящик водки потом «дома» надо как-то провести по бухгалтерии. А вопросы будут. Ещё одна опасность — при распрыскивании на внешний блок кондиционера можно крайне быстро надышаться парами спирта. Как шутят бывалые — в инструментальном наборе обязательно нужно иметь отсек для огурчиков, чтобы снимать последствия ингаляций такого типа. Следующая проблема — всё надо делать быстро, потому что при -35 и ниже с учётом температуры конденсатора около 60 градусов в плюсе — запах водки стремительно распространяется по району в направлении ветра. Или всенаправленно, если ветра нет. Местные жители реально начинают очень странно себя вести и искать источник беспокойства.

Заходите, буду делиться другими историями.
Читать дальше →
Всего голосов 164: ↑162 и ↓2 +160
Комментарии 56

Самая устаревшая инфраструктура, которую только можно купить за деньги

Время на прочтение 8 мин
Количество просмотров 60K
На днях исполняется 10 лет с тех пор, как я получил самую странную свою работу.

Шел 2005-ый год. Мой интерес к разработке системы управления контентом на Java для компании, недавно купившей наш стартап, неуклонно улетучивался, в то время как моей настоящей страстью была разработка компиляторов и инструментов языковой инфраструктуры (в основном для SBCL). Как-то раз я заметил открытую вакансию как-раз по этому направлению, что вообще-то было достаточно редким явлением. Я быстро прошел интервью — настолько быстро, что даже не задал нужных вопросов и проигнорировал несколько тревожных звоночков.

Меня ожидало захватывающее путешествие в мир ретрокомпьютинга.
Читать дальше →
Всего голосов 129: ↑125 и ↓4 +121
Комментарии 42

Информация

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