Pull to refresh
6
0
Приходько Владимир @cska63

Senior Golang Developer

Send message

Бесшовный апгрейд ПО для системы хранения данных: как организовать и улучшить

Reading time14 min
Views4.1K

Любое программное обеспечение необходимо обновлять — ПО для систем хранения данных (СХД) не исключение. Логика апгрейда в СХД не тривиальна. В системе есть несколько контроллеров хранения, обновлять которые нужно последовательно, учитывая все возможные риски — потерю отказоустойчивости, конфликт версий и другие. При этом даунтайм сервиса или миграция данных на другую систему — варианты, которые не устроят ни одну компанию.

Я Владимир Приходько, руководитель отдела разработки подсистем управления в компании YADRO. Вместе с командой мы развиваем пользовательский функционал СХД. В тексте расскажу о специфике бесшовного обновления ПО в системах хранения данных и дам рекомендации, как выстроить этот процесс с учетом лучших практик. Все описанные подходы мы с командой успешно используем в обновлении СХД TATLIN.UNIFIED

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments2

Технологии хранения данных VMware vSphere 6. Часть 1 – Old School

Reading time7 min
Views19K
Представляю вашему вниманию первую часть серии публикаций о технологиях хранения VMware vSphere. В данной статье будут рассмотрены старые проверенные фичи, доступные еще в 4 и 5 версиях продукта.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments0

Лекции Технотрека. 1 семестр. Разработка на Java (весна 2016)

Reading time3 min
Views37K
Продолжаем публикацию наших свежих образовательных курсов. За 14 лекций Технотрека вы получите необходимые навыки и опыт в области разработки на Java, узнаете синтаксис и основные библиотеки языка, начнете понимать объектно-ориентированный подход, сможете декомпозировать сложные задачи.

Курс ведут Рустам Кильдиев, Java/Scala-разработчик мобильного ПО, и Дмитрий Архангельский, инженер-разработчик в Одноклассниках.

Лекция 1. «Знакомство с платформой Java»



Вводное занятие, на котором кратко дается описание всего курса. Основная задача курса — не просто научить синтаксису, а дать практические навыки и понимание основ. Курс выстроен так, чтобы, выполняя небольшие задачи, написать проект «Бэкенд к мессенджеру».
Total votes 36: ↑34 and ↓2+32
Comments7

main(){printf(&unix["\021%six\012\0"], (unix)[«have»]+«fun»-0x60);}

Reading time5 min
Views17K

Развлекаемся, «распутывая» код на языке Си

Вызов: Прежде чем лезть под кат, скомпилируйте в голове заголовок статьи, что он дает на выходе?

image

Когда я в очередной раз просматривал книгу «Expert C programming», я вдруг наткнулся на раздел «light relief» в международном конкурсе на самый запутанный код на Си (IOCCC). Это соревнование по написанию как можно более нечитабельного кода. То, что такие конкурсы устраиваются для Си, наверное, говорит что-что об этом языке. Мне хотелось увидеть работы участников этого соревнования. Не найдя никакой информации в интернете, я решил поискать их самостоятельно.

IOCCC был придуман Стивеном Борном, когда он решил использовать препроцессор Си и написать Unix shell как бы на языке Си, но больше похожем на язык Algol-68, с его явными окончаниями операторов, например:

if
  ...
fi 

Он добился этого, сделав:

#define IF if(
#define THEN ){
#define ELSE } else {
#define FI ;}

Что позволило ему писать так:

IF *s2++ == 0
THEN return(0);
FI

Total votes 61: ↑57 and ↓4+53
Comments4

Обзор примитивов синхронизации — mutex и cond

Reading time6 min
Views55K
Синхронизация нужна в любой малтитредной программе. (Если, конечно, она не состоит из локлесс алгоритмов на 100%, что вряд ли). Будь то приложение или компонента ядра современной операционной системы.

Меня всё нижесказанное, конечно, больше волнует с точки зрения разработки ядра ОС. Но почти всё применимо и к пользовательскому коду.

Кстати, ядра старых ОС в примитивах синхронизации не нуждались, поскольку преемптивной мультизадачности внутри ядра в старые добрые времена не было. (Уж за Юникс 7-й версии я отвечаю. Не было.) Точнее, единственным методом синхронизации был запрет прерываний. Но об этом позже.

Сначала перечислим героев. Мне известны следующие примитивы синхронизации:

User/kernel mode: mutex+cond, sema, enter/leave critical section.
Kernel only: spinlock, управление прерываниями.

Зачем всё это нужно, читатель, наверное, знает, но всё же уточним.

Если некоторая структура данных может быть доступна двум параллельно работающим нитям (или нити и прерыванию), и являет собой сущность, к которой нельзя обеспечить атомарный доступ, то работу с такой структурой нужно производить так, чтобы только одна нить одновременно выполняла сложные манипуляции с состоянием структуры.
Читать дальше →
Total votes 33: ↑27 and ↓6+21
Comments15

Lock-free структуры данных. 1 — Начало

Reading time12 min
Views148K

Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлениями о том, что такое lock-free структуры данных, как их реализовывать, подходят ли концепции контейнеров стандартной библиотеки STL к lock-free контейнерам, и когда стоит (и стоит ли вообще) применять lock-free структуры данных.

Читать дальше →
Total votes 165: ↑161 and ↓4+157
Comments39

Испытания boost::lockfree на скорость и задержку передачи сообщения

Reading time11 min
Views23K
Не так давно в boost-1.53 появился целый новый раздел — lockfree реализующий неблокирующие очереди и стек.
Я последние несколько лет работал с так называемыми неблокируюшими алгоритмами (lock-free data structures), мы их сами писали, сами тестировали, сами использовали и втайне ими гордились. Естественно, у нас немедленно встал вопрос, переходить ли с самодельных библиотек на boost, и если переходить, то когда?
Вот тогда у меня и возникла в первый раз идея применить к boost::lockfree кое-какие из методик которыми мы испытывали собственный код. К счастью, сам алгоритм нам тестировать не придется и можно сосредоточиться на измерении производительности.
Я постараюсь сделать статью интересной для всех. Тем кто еще не сталкивался с подобными задачами будет полезно посмотреть на то что такие алгоритмы способны, а главное, где и как их стоит или не стоит использовать. Для тех кто имеет опыт разработки неблокирующих очередей возможно будет интересно сравнить данные количественных измерений. Я сам по крайней мере таких публикаций еще не видел.
Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments28

Лекции Технопарка. 2 семестр. Java

Reading time4 min
Views73K


В эфире очередной выпуск материалов рубрики «Лекции Технопарка». На этот раз вы можете изучить лекции курса, посвящённого углублённому программированию на Java. Цель курса — получение студентами практических навыков создания клиент-серверного приложения на примере разработки сервера простой многопользовательской online-игры в малых группах (4-6 человек).
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments6

Выжать все соки или используем Raspberry pi на всю катушку

Reading time11 min
Views265K
Всем привет!

Долой унылые речи о том, что это мой первый пост и все такое. Пожалуй лучше я расскажу о том, как выжать все соки из маленькой малютки под названием Raspberry PI (далее RPI), ценой $ 35. Я уверен на 146,6% что здесь уже были посты подобного рода, и этот пост не претендует на твердую пять. Скорее это просто вступительное слово о том: «Как я занял себя делом на пару унылых вечеров». Собственно мы получим в итоге Raspberry PI который можно использовать:
  1. как домашний web-сервер (если ты какой-нибудь PHP-разработчик, и тебе не чуждо веселье);
  2. как мультимедийную приставку с популярным XBMC Media Center (или супер-пупер-крутую-шняжку к телевизору за скромные 1800$);
  3. и как ночную торрент качалку, с web-интерфейсом (для ленивых);

Для тех кому стало интересно прошу под кат (Внимание! Трафик).
Читать дальше →
Total votes 66: ↑53 and ↓13+40
Comments34

Как найти свое призвание (новая статья от Оливера Эмбертона)

Reading time6 min
Views292K
image

Очень многие из нас верят в существование волшебной субстанции под названием «призвание». «Если бы я только мог найти свое призвание», — с горечью говорим мы. «Я был бы счастлив, если бы нашел свое призвание...»

Что сказать? Призвание — реальность, причем, невероятно могущественная. Но почти все, что люди знают о его поиске, в корне неверно. Именно об этом ведет речь в своей последней статье Оливер Эмбертон. Продолжаем размышлять над личной эффективностью!
Читать дальше →
Total votes 71: ↑60 and ↓11+49
Comments17

JSR 133 (Java Memory Model) FAQ (перевод)

Reading time25 min
Views148K
Добрый день.
В рамках набора на курс «Multicore programming in Java» я делаю серию переводов классических статей по многопоточности в Java. Всякое изучение многопоточности должно начинаться с введения в модель памяти Java (New JMM), основным источником от авторов модели является «The Java Memory Model» home page, где для старта предлагается ознакомится с JSR 133 (Java Memory Model) FAQ. Вот с перевода этой статьи я и решил начать серию.
Я позволил себе несколько вставок «от себя», которые, по моему мнению, проясняют ситуацию.
Я являюсь специалистом по Java и многопоточности, а не филологом или переводчиком, посему допускаю определенные вольности или переформулировки при переводе. В случае, если Вы предложите лучший вариант — с удовольствием сделаю правку.
Этот статья также подходит в качестве учебного материала к лекции «Лекция #5.2: JMM (volatile, final, synchronized)».

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Ну и да, приходите учиться ко мне!


JSR 133 (Java Memory Model) FAQ


Jeremy Manson и Brian Goetz, февраль 2004

Содержание:
Что такое модель памяти, в конце концов?
Другие языки, такие как C++, имеют модель памяти?
Что такое JSR 133?
Что подразумевается под «переупорядочением» (reordering)?
Что было не так со старой моделью памяти?
Что вы подразумеваете под «некорректно синхронизированы»?
Что делает синхронизация?
Как может случиться, что финальная поля меняют значения?
How do final fields work under the new JMM?
Что делает volatile?
Решила ли новая модель памяти «double-checked locking» проблему?
Что если я пишу виртуальную машину?
Почему я должен беспокоиться?
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments32

Внутреннее устройство Linux или как работает Linux

Reading time3 min
Views54K


В течение года мы издали три книги по Linux, которые положительно приняли:

Linux. Установка, настройка, администрирование
Ubuntu и Debian Linux для продвинутых: более 1000 незаменимых команд. 2-е изд.
Linux. Системное программирование. 2-е изд.

Сейчас мы планируем сделать новую книгу и остановились на варианте — How Linux Works: What Every Superuser Should Know. Мы хотим узнать ваше мнение и принять решение делать ли книгу.

Небольшая рецензия на прошлое издание:

Читать дальше →
Total votes 45: ↑34 and ↓11+23
Comments25

Последние отчеты статистики по смартфонам: в России и не только

Reading time3 min
Views26K
Исследование IDC подтвердило, что рынок Android-смартфонов растет главным образом за счет недорогих моделей. По итогам второго квартала текущего года сообщается, что 58,6% всех выпущенных смартфонов с системой Google стоили менее $200. Аналитики IDC считают, что в свете недавнего представления публике Android One с возможными аппаратами ценой менее $100, наблюдаемая тенденция в перспективе лишь укрепится. Правда, по последним новостям, в рамках того же Android One не все так просто, пока идут споры о конечной цене между Google и [индийскими] производителями, последние добиваются выставления планки не ниже $150. Как бы то ни было, заодно IDC отмечает особые успехи Android на развивающихся рынках.

Читать дальше →
Total votes 45: ↑34 and ↓11+23
Comments7

Made with IBM: где используются технологии IBM?

Reading time3 min
Views21K


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

И в первой, и во второй записи упоминался не только Watson, но и другие технологии корпорации, включая IBM Cloud. Сейчас мы хотим показать области применения и других сервисов/технологий. И само собой, такая демонстрация возможностей будет проводиться на практических примерах.

Читать дальше →
Total votes 28: ↑19 and ↓9+10
Comments11

Пополняем шпаргалки по C++: неявно-генерируемые перемещающий конструктор и оператор присваивания

Reading time2 min
Views25K
Когда не так часто, как хотелось бы, приходится работать с языком, некоторые аспекты забываются. А некоторые никогда и не откладываются в голове. Поэтому, когда возникают вопросы, приходится отвлекаться и лезть в документацию.

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

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

Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments19

Побег из офиса, или как мы начинали разрабатывать свою мобильную игру. Часть 1

Reading time5 min
Views11K
image

Преамбула


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

Сейчас у нас уже есть небольшой опыт работы в данном направлении, первая игра проходит бетта-тестирование, к тому же накопился какой-то пласт мыслей и выводов по ходу процесса, и не только.
Читать дальше →
Total votes 35: ↑17 and ↓18-1
Comments9

fork() vs. vfork()

Reading time15 min
Views40K
Послушайте!
Ведь, если звезды зажигают — значит — это кому-нибудь нужно?

В. В. Маяковский, 1914


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

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

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

Кому интересно, прошу под кат.
Читать дальше →
Total votes 80: ↑74 and ↓6+68
Comments29

Эволюционный дизайн игр

Reading time6 min
Views23K
image

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

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

Книга, что попалась не так давно на глаза, объединяет в себе оба мира: в ней, с одной стороны, описаны интересные в совокупности алгоритмические приемы; результат же работы — настольная игра «Yavalath» на приложенной картинке — был издан и пользовался достаточно широкой для абстрактной игры популярностью.

Итак, если вам интересны теория игрового дизайна, машинное обучение, генетические алгоритмы, универсальные игроки и изящные идеи, то обо всем этом можно прочитать в моем кратком научно-популярном пересказе сути книги под катом.
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments21

Полезные ресурсы для гейм-дизайнера

Reading time2 min
Views70K


Доброго времени суток читателям. Предоставляю вашему вниманию список ресурсов и книг, которые могут быть полезны гейм-дизайнеру или любому, кто интересуется данной тематикой. Сразу скажу, что почти все ресурсы на английском языке, т.к. русских аналогов весьма мало, а полезных и того меньше.
Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments11

Пора взрослеть: как я разочаровался в краудфандинге

Reading time6 min
Views114K
У меня тут грустный юбилей. Нет, я не отмечаю первый год в завязке или десятилетие со дня первого развода. Все куда проще. Но в каком-то смысле не менее драматично. Недавно я профинансировал на «Кикстартере» свой сотый проект.



За три года я потратил на краудфандинг примерно 30 000 долларов. Наверное, это дает мне некоторое право считать себя ветераном. И как любому нормальному ветерану, мне хочется немного побрюзжать. Хотя, боюсь, скорее у меня получится крик души.

Впервые попав в 2011 году на «Кикстартер», я был окрылен идеей краудфандинга. Работая в Panasonic, я не понаслышке знал, как мало транснациональные корпорации предпринимают усилий, чтобы сделать что-то действительное инновационное. А тут я увидел, что благодаря краундфандингу любой талантливый технарь мог вдохновить своей идеей бэкеров, собрать денег, основать компанию и дать миру что-то по-настоящему новое.

Я начал вкладывать деньги в перспективные проекты. Просиживал на «Кикстартере» часами. Искал классные инновации. Обсуждал разные безумные идеи. Тратил деньги и ждал посылок, словно ребенок — новогодних подарков. Из всего этого безумства и родился интернет-магазин MadRobots. Возможность дать денег авторам уникального устройства, которое я вскоре смогу продавать в России через свой магазин, казалась мне вдохновляющей.

Но постепенно энтузиазм уступил место разочарованию. Я профинансировал сто проектов, а получить в итоге удалось не больше половины устройств.
Читать дальше →
Total votes 136: ↑118 and ↓18+100
Comments64

Information

Rating
Does not participate
Works in
Date of birth
Registered
Activity