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

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

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

Я работаю много лет в одной компании. Мне нормально

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

Привет, Хабр! Меня зовут Ксения. Год назад я хотела попасть в IT, а попала на галеры. Сейчас я работаю в крупной digital-компании и вижу, с какой скоростью отсюда уходят сотрудники. Некоторые — в середине испытательного срока. Периодически появляется желание сбежать, но пугают вероятные вопросы от рекрутеров: «Почему вы так быстро ушли?» Коллеги говорят, что в IT считается нормальным менять компанию через год-полтора. Я привыкла работать в другой сфере, где и через 10 лет считалась «новенькой». Решила разобраться, реально ли в IT годами трудиться в одном месте. Спойлер, я нашла человека, который работает в одной компании почти 30 лет и всем доволен.

Читать далее
Всего голосов 45: ↑27 и ↓18 +9
Комментарии 189

Load Average в Linux: разгадка тайны

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


Средние значения нагрузки (Load averages) — это критически важная для индустрии метрика. Многие компании тратят миллионы долларов, автоматически масштабируя облачные инстансы на основании этой и ряда других метрик. Но на Linux она окутана некой тайной. Отслеживание средней нагрузки на Linux — это задача, работающая в непрерываемом состоянии сна (uninterruptible sleep state). Почему? Я никогда не встречал объяснений. В этой статье я хочу разгадать эту тайну, и создать референс по средним значениям нагрузки для всех, кто пытается их интерпретировать.

Читать дальше →
Всего голосов 127: ↑125 и ↓2 +123
Комментарии 25

Зачем язык Verilog программисту микроконтроллеров

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

Несколько раз начинал писать эту статью и бросал. Бросал потому, что тема, как мне кажется, несколько спорная. Изобретенный мною велосипед может кому-то показаться смешным и нелепым и вообще не совсем корректным. Тем не менее…

Вообще, мне кажется, что в области разработки электронных устройств существует как бы несколько мало пересекающихся миров. Например, существует разработка устройств на базе микроконтроллеров и параллельно существует разработка устройств на базе ПЛИС. Принципы работы этим микросхем принципиально отличаются и точно так же отличаются принципы и методы разработки, используемые языки программирования и отладки. Конечно, выбор элементной базы сильно зависит от поставленной задачи. Однако и так понятно, что эти миры, мир микроконтроллеров и мир ПЛИСов почти не пересекаются. Может быть на стыке технологий что-то есть?
Читать дальше →
Всего голосов 52: ↑50 и ↓2 +48
Комментарии 16

Boost это просто. Часть 1. Boost.Regex

Время на прочтение 10 мин
Количество просмотров 79K
Эта статья является первой в цикле статей, которые я собираюсь посвятить, наверное лучшей, библиотеке для С++.
В данной статье рассматриваются следующие вопросы касательно регулярных выражений:
  • regex_match
  • regex_search
  • regex_replace
  • regex_iterator
  • regex_token_iterator
  • Partial match

Начнем
Всего голосов 60: ↑57 и ↓3 +54
Комментарии 39

Как дебажить переменные окружения в Linux

Время на прочтение 4 мин
Количество просмотров 27K
Часто бывает так, что приходишь на машину и обнаруживаешь какой-то скрипт, запущенный под системным пользователем неделю назад. Кто его запустил? Где искать этот run.php? Или добавляешь запись в /etc/crontab, а скрипт там падает с ошибкой «command not found». Почему? И что делать? 

У меня есть ответы на эти вопросы.

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

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Время на прочтение 5 мин
Количество просмотров 169K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

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

Читать дальше →
Всего голосов 385: ↑339 и ↓46 +293
Комментарии 185

Объектный язык ограничений (и немного про метамодели)

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

На наш взгляд, объектный язык ограничений (Object Constraint Language, OCL) должен знать каждый, кто занимается моделированием или кому интересна модельно-ориентированная разработка. Однако, он незаслуженно обделен вниманием в сети вообще, а, уж, в русскоязычном сегменте информации просто мизер. Что это за язык и зачем он нужен, описано в этой статье. Статья не претендует на фундаментальность, полноту охвата, точность определений и т.п. Её задача: 1) на простых примерах познакомить с OCL тех, кто никогда не слышал об этом языке, 2) а для тех, кто о нём слышал, возможно, открыть новые способы его применения.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 20

Соединяй и властвуй. Нестандартный взгляд на keep-alive

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


Большинство современных серверов поддерживает соединения keep-alive. Если на страницах много медиаконтента, то такое соединение поможет существенно ускорить их загрузку. Но мы попробуем использовать keep-alive для куда менее очевидных задач.
Читать дальше →
Всего голосов 41: ↑33 и ↓8 +25
Комментарии 10

Как легко расшифровать TLS-трафик от браузера в Wireshark

Время на прочтение 2 мин
Количество просмотров 155K
Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

image

Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

Логгирование сессионных ключей спешит на помощь!


Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
Читать дальше →
Всего голосов 83: ↑82 и ↓1 +81
Комментарии 22

Установка Ubuntu на реальный жёсткий диск через VirtualBox

Время на прочтение 3 мин
Количество просмотров 49K
По каким-то причинам может получиться так, что нужно установить Ubuntu на компьютер, на котором установлен Windows (в данном случае это был Windows Server 2003). Почему речь именно о Windows? Под Линуксом есть и другие способы решения, есть debootstrap и chroot, а на Windows возможных вариантов для такого манёвра остаётся меньше.

Но обычный метод установки (загрузиться с LiveCD/LiveUSB, произвести установку, настроить всё, перезагрузиться снова) не всегда подходит. Почему не всегда? Потому что может быть так, что доступ к компьютеру только удалённый (в данном случае это был RDP-сервер в Windows), а физический доступ только через другого человека, и редкий (раз в сутки). Да и потом сколько бы от него потребовалось действий, если делать обычным способом — вставить флэшку/диск, загрузиться, подождать, пока предложат попробовать использовать дистрибутив, выбрать этот вариант, потом настроить удалённый доступ (в Убунте даже SSH-сервер по умолчанию не установлен — никогда, кстати, не понимал почему, но факт), и только после этого идти по своим делам. А так единственное, что потребовалось от человека — это поменять порядок загрузки с жёстких дисков в BIOS.

Кстати, теоретически, можно попробовать обойтись даже без этого, если распаковать на диск C:\ в Windows grldr из пакета grub4dos, создать там же menu.lst (где с помощью chainloader загрузиться с другого жёсткого диска), и добавить в C:\Boot.ini пункт «C:\grldr=«GRUB»», после чего выбрать этот пункт по умолчанию. Тогда достаточно просто перезагрузить компьютер, и он перезагрузится в Ubuntu, где на тот момент уже будет SSH. Только нужно не забыть добавить параметр timeout в конфигурационный файл menu.lst — иначе загрузка не будет совершена автоматически (GRUB будет ждать, пока кто-нибудь нажмёт Enter).

Помимо удалённой установки есть ещё одно важное применение этого метода — представьте, что вам нужно сократить время, которое сервер не будет функционировать с точки зрения пользователя, к минимуму. И вы можете это сделать. От того, что вы ставите Ubuntu в виртуальной машине, работа сервера не нарушится, и вы сможете, перезагрузив виртуальную машину после установки, произвести все необходимые изменения, включая создание пользователей, установку и настройку SSH, возможно веб-сервера, почтового сервера, FTP и всего остального, что может понадобиться. А потом вы просто перезагружаете компьютер. И всё то, что работало на Windows, теперь работает на Ubuntu: полторы минуты, которые компьютер будет перезагружаться, совсем не так заметны, как несколько часов, в течение которых вы бы это всё постепенно настраивали и включали.

А теперь о самой установке
Всего голосов 49: ↑42 и ↓7 +35
Комментарии 38

«Boost.Asio C++ Network Programming». Глава 5: Синхронное против асинхронного

Время на прочтение 19 мин
Количество просмотров 30K
Всем привет!
Продолжаю перевод книги John Torjo «Boost.Asio C++ Network Programming».

Содержание:


Авторы Boost.Asio сделали замечательную работу, давая нам возможность выбрать то, что больше удовлетворяет нашим приложениям, выбрав синхронный или асинхронный путь.
В предыдущей главе мы видели каркасы для всех типов приложений, таких как синхронный клиент, синхронный сервер, а так же их асинхронные варианты. Вы можете использовать каждый из них в качестве основы для вашего приложения. Если же возникнет необходимость вникать в подробности о каждом типе приложения, то читаем дальше.

Будет интересно
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 4

Информация

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