Как стать автором
Обновить
19
0
Алексей Воткин @Botkin

IT manager

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

19 советов по повседневной работе с Git

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


Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

Читать дальше →
Всего голосов 152: ↑149 и ↓3+146
Комментарии62

О безопасности UEFI, части нулевая и первая

Время на прочтение9 мин
Количество просмотров87K
Когда-то давно, в начале 2014 года, я назвал состояние безопасности большинства реализаций UEFI "полумифическим". С тех пор минуло полтора года, дело осторожно двигается с мертвой точки, но до сих пор очень многие производители ПК для конечного пользователя не обращают на эту самую безопасность почти никакого внимания — «пипл хавает».
В этой статье речь пойдет о модели угроз и векторах атаки на UEFI, а также о защитах от перезаписи содержимого микросхемы BIOS — самой разрушительной по возможным последствиям атаки.
Если вам интересно, как устроена защита UEFI и какие именно уязвимости в ней так и остаются неисправленными на большинстве современных систем — добро пожаловать под кат.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии51

Архитектура рабочих процессов в SharePoint Server 2013: вчера и сегодня

Время на прочтение12 мин
Количество просмотров18K
Рабочие процессы в SharePoint предоставляют эффективное пространство посредством структурированных, автоматизированных последовательностей действий, включающих интерактивные взаимодействие пользователей, если в них есть необходимость. Они обеспечивают реализацию механизмов оповещения, отправки уведомлений по электронной почте или любые другие активности, имеющие значение для сотрудников.
Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии0

Настоящее и будущее C++. Интервью с Эриком Ниблером

Время на прочтение14 мин
Количество просмотров42K
Эрик Ниблер — известный эксперт по C++, один из важных контрибьюторов Boost, человек, который добавил в стандарт библиотеку Ranges.

26 августа в рамках C++ Party Эрик выступит в новосибирском офисе Яндекса, где как раз расскажет о библиотеке и поговорит с гостями о новых стандартах C++.

image

Я заранее поговорил с Эриком и задал ему несколько вопросов от себя и коллег о том, каким он видит настоящее и будущее C++, что ему кажется самым важным в программировании, будет ли в C++ когда-нибудь нормальный менеджер пакетов, модули, что будет со стандартной библиотекой и о многом другом.

Кстати, если у вас есть ещё хорошие вопросы к Эрику, — их можно задать в комментариях, и мы попросим его на них ответить.
Читать дальше →
Всего голосов 64: ↑57 и ↓7+50
Комментарии97

Анатомия программы в памяти

Время на прочтение6 мин
Количество просмотров85K
Управление памятью – одна из главных задач ОС. Она критична как для программирования, так и для системного администрирования. Я постараюсь объяснить, как ОС работает с памятью. Концепции будут общего характера, а примеры я возьму из Linux и Windows на 32-bit x86. Сначала я опишу, как программы располагаются в памяти.

Каждый процесс в многозадачной ОС работает в своей «песочнице» в памяти. Это виртуальное адресное пространство, которое в 32-битном режиме представляет собою 4Гб блок адресов. Эти виртуальные адреса ставятся в соответствие (mapping) физической памяти таблицами страниц, которые поддерживает ядро ОС. У каждого процесса есть свой набор таблиц. Но если мы начинаем использовать виртуальную адресацию, приходится использовать её для всех программ, работающих на компьютере – включая и само ядро. Поэтому часть пространства виртуальных адресов необходимо резервировать под ядро.

image

Это не значит, что ядро использует так много физической памяти – просто у него в распоряжении находится часть адресного пространства, которое можно поставить в соответствие необходимому количеству физической памяти. Пространство памяти для ядра отмечено в таблицах страниц как эксклюзивно используемое привилегированным кодом, поэтому если какая-то программа пытается получить в него доступ, случается page fault. В Linux пространство памяти для ядра присутствует постоянно, и ставит в соответствие одну и ту же часть физической памяти у всех процессов. Код ядра и данные всегда имеют адреса, и готовы обрабатывать прерывания и системные вызовы в любой момент. Для пользовательских программ, напротив, соответствие виртуальных адресов реальной памяти меняется, когда происходит переключение процессов:
Читать дальше →
Всего голосов 62: ↑61 и ↓1+60
Комментарии24

Ко-кластеризация: cегментирование данных вдоль и поперёк

Время на прочтение6 мин
Количество просмотров11K
Обычно кластеризация подразумевает выделение нескольких групп объектов со схожими характеристиками внутри группы, а между группами — различными. Особенность ко-кластеризации — группирование не только объектов, но и самих характеристик этих объектов. То есть, если данные представлены в виде матрицы, то кластеризация — это перегруппировка строк или столбцов матрицы, а ко-кластеризация — перегруппировка и строк и столбцов матрицы данных.
Как и в предыдущих моих публикациях, примеры использования методов и визуализация решений показаны на данных результатов опросов. Типичная область применения алгоритмов ко-кластеризации — биоинформатика, сегментирование изображений, анализ текстов.



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

Онлайн-программа по основам программирования

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

Осенью Академический университет и Computer Science Center запускают годовую образовательную программу по основам программирования (code.stepic.org). Программа запускается на платформе онлайн-обучения Stepic. При успешном завершении программы студентам будет выдан диплом о профессиональной переподготовке от Академического университета.

Подробнее о программе
Всего голосов 31: ↑29 и ↓2+27
Комментарии15

Серверное подразделение Huawei Enterprise

Время на прочтение4 мин
Количество просмотров6.2K
В начале этого лета я вернулся из поездки в штаб-квартиру Huawei в Шэньчжэне, где проходил очередной Huawei Presales Elite Camp.
В этот раз гостеприимные китайцы знакомили нас со своей серверной линейкой. С выходом новых процессоров Intel Xeon V3 она претерпела значительные изменения, о чем я и хочу вам рассказать в данной статье


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

Автоматическая реорганизация массивов в памяти графического ускорителя

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

О чем речь


В данном посте я бы хотел описать часть системы времени выполнения (RTS — RunTime System в дальнейшем) компилятора DVMH. Рассматриваемая часть, как видно из заголовка, относится к обработке пользовательских массивов на GPU, а именно, их автоматическая трансформация или реорганизация в памяти ускорителя. Данные преобразования делаются для эффективного доступа к памяти GPU в вычислительных циклах. Что такое DVMH, как можно подстраиваться под вычисления и почему это делается автоматически — описано далее.
О системе DVM и чудо преобразованиях
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Быстрая установка SQL кластера Galera MariaDB c HaProxy и ClusterControl от Severalnines

Время на прочтение3 мин
Количество просмотров13K
Добрый день.

Некоторое время назад проект нашей компании по мониторингу серверов и сайтов перешел из категории «сделано для себя» в плоскость привлечения массовых пользователей. Этому частично способствовало получение проектом посевных инвестиций от ФРИИ и плюс, конечно же, наличие желания поделиться с миром нашей технологией, которую мы также используем для мониторинга своих серверов. Но, это не рекламный пост, а практический, поэтому о проекте потом.

Итак, с ростом нагрузки на базу данных, а наш сервис — это SaaS платформа по сбору метрик с серверов, количество запросов на запись в нашу базу данных (сейчас более 1000 серверов посылают порядка 20 своих метрик в БД каждые 4 минуты) начало приводить к перегрузке БД и нестабильной работе сервиса. Это зачастую происходило из-за превышения установленного максимального количества соединений к MySQL и большой нагрузки на сервер. К сожалению, все попытки оптимизации MySQL, увеличения серверных ресурсов и настройки параметров max_connections, query cache и т.д. не приводили к успеху.

Т.к. у нас нет отдельного человека, отвечающего за базы данных, а программисты и системные администраторы не могут каждый день тратить кучу времени на поддержание стабильности MySQL и реагировать на каждое падение, мы решили перейти на MariaDB Galera кластер с master-master репликацией и балансировкой нагрузки с помощью HaProxy. У нас до этого не было опыта внедрения бд кластера в production environment и поэтому пришлось наступать на все грабли самостоятельно.

К счастью, на Хабре нашлось много полезных статей на тему настройки Percona XtraDB, HaProxy и Zabbix для Percona, а также серия статей «Идеальный Кластер», которые нам очень помогли в начальной установке.

image

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

Создание отказоустойчивого IPSec VPN туннеля между Mikrotik RouterOS и Kerio Control

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


Начиная с версии 8.1 Kerio Control для создания туннелей VPN можно использовать не только пропиетарный протокол Kerio VPN, но и вполне себе расово правильный IPSec. И конечно же мне сразу захотелось скрестить Mikrotik и Kerio Control.

Я попробовал разобраться
Всего голосов 18: ↑17 и ↓1+16
Комментарии9

Docker Workflow

Время на прочтение10 мин
Количество просмотров28K
Перевод инфраструктуры hexlet.io на Docker потребовал от нас определенных усилий. Мы отказались от многих старых подходов и инструментов, переосмыслили значение многих привычных вещей. То, что получилось в итоге, нам нравится. Самое главное – этот переход позволил сильно все упростить, унифицировать и сделать гораздо более поддерживаемым. В этой статье мы расскажем о той схеме для разворачивания инфраструктуры и деплоя, к которой в итоге пришли, а так же опишем плюсы и минусы данного подхода.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии17

Принципы мониторинга бизнес-приложений

Время на прочтение8 мин
Количество просмотров24K
Приветствую всех читателей! Сегодня хотелось бы поговорить об основных принципах мониторинга бизнес-приложений, которые ежедневно используют многие компании по всему миру. Само понятие «бизнес-приложение» следует понимать как программный комплекс, который обеспечивает поддержку определенного бизнес-процесса компании.

Самый типичный пример архитектуры современного приложения — т.н. «трёхзвенка», т.е. веб-сервер, сервер приложений и сервер БД, следовательно, каждый из этих компонентов будет чуть менее чем полностью оказывает влияние на работу всего приложения. Если рассматривать именно такую конфигурацию, то со своего опыта могу сказать, что чаще всего возникает ситуация, которая в утрированном виде выглядит так:



Периоды недоступности или низкой производительности компонента проецируются на общую доступность приложения, которую ощущает на себе пользователь: т.е. даже при том, что нынешние прикладные системы могут обеспечивать свою доступность сильно за 90%, общая производительность всего бизнес-приложения может не дотягивать и до 90%. В реальном мире картинка выше может выглядеть как-то по-другому, но суть всегда одна — это непредсказуемость характера влияния мельчайших проблем с компонентами приложения на весь программный комплекс в целом. Ниже разбор что, как и почему, прошу под кат.
Читать дальше →
Всего голосов 15: ↑11 и ↓4+7
Комментарии8

Разработка архитектуры системы через сервисно-ресурсную модель

Время на прочтение5 мин
Количество просмотров16K
Хочу предложить немного обсудить тему сервисно-ресурсной модели и спросить о необходимости разработки инструмента для использования сервисно-ресурсной модели в проектировании, разработке и дальнейшей эксплуатации систем.

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

Что хочу получить?

Хочу получить более прозрачную систему для охвата всей картины подшефного хозяйства, чтобы видеть узкие места, видеть зависимости одних частей системы от других, знать, что ssh на одном сервере крайне важен для «вон того маленького обработчика», который работает по ночам на другом сервере.
Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии19

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

Время на прочтение14 мин
Количество просмотров336K
abstract: разница между текущей производительностью и производительностью теоретической; latency и IOPS, понятие независимости дисковой нагрузки; подготовка тестирования; типовые параметры тестирования; практическое copypaste howto.

Предупреждение: много букв, долго читать.

Лирика



Очень частой проблемой, является попытка понять «насколько быстрый сервер?» Среди всех тестов наиболее жалко выглядят попытки оценить производительность дисковой подсистемы. Вот ужасы, которые я видел в своей жизни:
  • научная публикация, в которой скорость кластерной FS оценивали с помощью dd (и включенным файловым кешем, то есть без опции direct)
  • использование bonnie++
  • использование iozone
  • использование пачки cp с измерениема времени выполнения
  • использование iometer с dynamo на 64-битных системах


Это всё совершенно ошибочные методы. Дальше я разберу более тонкие ошибки измерения, но в отношении этих тестов могу сказать только одно — выкиньте и не используйте.

Как мерять правильно
Всего голосов 151: ↑145 и ↓6+139
Комментарии164

Еще несколько слов о Path MTU Discovery Black Hole

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

Еще несколько слов о Path MTU Discovery Black Hole



Вместо вступления


Однажды для каждого настоящего системного администратора (или исполняющего обязанности такового) наступает момент истины. Ему выпадает судьба настроить маршрутизатор на компьютере с установленной ОС GNU/Linux. Те, кто это уже прошел, знают, что ничего сложного в этом нет и можно уложиться в пару команд. И вот наш админ находит эти команды, вбивает их в консоль и гордо идет к пользователям сказать, что уже все работает. Но не тут-то было – пользователи говорят что их любимые сайты не открываются. После траты некоторой части своей жизни на выяснение подробностей обнаруживается, что большая часть сайтов ведет себя следующим образом:
1. При открытии страницы загружается заголовок и больше ничего;
2. В таком состоянии страница висит неопределенно долгое время;
3. Строка статуса браузера все это время показывает что загружает страницу;
4. Пинги и трассировка до данного сайта проходят нормально;
5. Соединение по telnet на 80 порт тоже проходит нормально.
Обескураженный админ звонит в техподдержку провайдера, но там от него быстро избавляются, советуя попробовать настроить маршрутизатор на OC Windows, а если уж и там не работает тогда… купить аппаратный маршрутизатор.
Я думаю, эта ситуация знакома многим. Некоторые в нее попадали сами, у кого-то с ней сталкивались знакомые, а кто-то встречал таких админов на форумах и прочих конференциях. Итак: если у Вас Такая Ситуация, то — Поздравляю! Вы столкнулись с Path MTU Discovering Black Hole. Данная статья посвящается тому, отчего это бывает, и как решить эту проблему.

Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии22

Революция в области искусственного разума. Часть вторая: Бессмертие или уничтожение жизни на земле

Время на прочтение25 мин
Количество просмотров34K
Примечание переводчика: Данная статья является переводом (оригинальная статья ). Это перевод первой части второй статьи перевод первой части. Вторая часть оказалась слишком большой 15к слов, по этому её пришлось разделить на две части примерно по 8к (оригинального текста) слов каждая, перед вами первая часть перевода второй части статьи, вторую часть опубликую сразу как переведу. Оригинальная статья была написана для широкой аудитории, поэтому многие термины использованные в ней могут быть не точными или вообще не научными. При переводе я старался сохранить непринуждённый дух статьи и юмор, с которым был написан оригинал. К сожалению, это не всегда получалось. Переводчик согласен не со всем, что написано в данной статье, но правки к фактам и своё мнение не были добавлены даже в виде примечаний или комментариев. В тексте могут быть ошибки и опечатки, сообщайте о них, пожалуйста, в личные сообщения, буду стараться исправлять всё максимально быстро. Все ссылки в тексте скопированы из оригинальной статьи и ведут на англоязычные ресурсы.



We have what may be an extremely difficult problem with an unknown time to solve it, on
which quite possibly the entire future of humanity depends. — Nick Bostrom

Перед нами, вероятно, одна из сложнейших задач, с которой когда-либо сталкивалось человечество, и мы даже не знаем сколько времени у нас есть на её решение, но от него зависит будущее нашего биологического вида — Ник Бостром
Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии53

Революция в области искусственного разума. Часть первая: путь к Сверхразуму

Время на прочтение24 мин
Количество просмотров58K
Вторая часть
Примечание переводчика: Данная статья является переводом публикации «The AI Revolution: The Road to Superintelligence». Оригинальная статья была написана для широкой аудитории, поэтому многие термины использованные в ней могут быть не точными или вообще не научными. При переводе я старался сохранить непринуждённый дух статьи и юмор, с которым был написан оригинал. К сожалению, это не всегда получалось. Переводчик согласен не со всем, что написано в данной статье, но правки к фактам и своё мнение не были добавлены даже в виде примечаний или комментариев. В тексте могут быть ошибки и опечатки, сообщайте о них, пожалуйста, в личные сообщения, буду стараться исправлять всё максимально быстро. Все ссылки в тексте скопированы из оригинальной статьи и ведут на англоязычные ресурсы.

We are on the edge of change comparable to the rise of human life on Earth. — Vernor Vinge

Мы стоим на пороге перемен сравнимых, разве что с самим рождением человечества. Вернор Виндж.

Каково это находиться здесь?


Читать дальше →
Всего голосов 60: ↑55 и ↓5+50
Комментарии130

Новые сетевые архитектуры: открытые или закрытые решения?

Время на прочтение10 мин
Количество просмотров25K
Современные организации стремятся внедрять новые сервисы и приложения, но зачастую камнем преткновения становится устаревшая сетевая инфраструктура, неспособная поддерживать инновации. Решить эту проблему призваны технологии, созданные на основе открытых стандартов.

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

На сетевом рынке до сих пор доминируют закрытые системы, а совместимость решений разных производителей обеспечивается в лучшем случае на уровне интерфейсов. Несмотря на стандартизацию интерфейсов, стеков протоколов, сетевых архитектур, сетевое и коммуникационное оборудование разных вендоров нередко представляет собой проприетарные решения. Например, даже развертывание современных «сетевых фабрик» Brocade Virtual Cluster Switch, Cisco FabricPath или Juniper QFabric предполагает замену имеющихся коммутаторов, а это не дешевый вариант. Что уж говорить про технологии «прошлого века», которые еще работают, но тормозят дальнейшее развитие сетей и функционирующих в них приложений.


Эволюция сетей. От проприетарных к открытым решениям.
Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии30

Квантовая песочница: часть 2

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

Квантовая песочница: часть 1
Что такое квантовое состояние? Чем обычное состояние отличается от квантового? В какой момент обычное состояние становится квантовым и что будет, если от него отнять квантовости? Оно всё еще будет квантовым или уже превратится в обычное? Оно же только что было квантовым. Наверное, оно стало запутанным, и кот тоже стал запутанным.

В данной статье постараемся ответить на эти вопросы и разобраться в сути квантовой механики.
Цель: написать простую программу, «имитирующую» квантовую эволюцию, чтобы наконец можно было пощупать эти кубиты ручками.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии26

Информация

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