Search
Write a publication
Pull to refresh
0
0
Виктор @Tippler

User

Send message

Lock-free структуры данных. Основы: Атомарность и атомарные примитивы

Reading time15 min
Views112K

Построение lock-free структур данных зиждется на двух китах – атомарных операциях и способах упорядочения доступа к памяти. В этой статье речь пойдет об атомарности и атомарных примитивах.

Анонс. Спасибо за теплый прием Начал! Вижу, что тема lock-free интересна хабрасообществу, это меня радует. Я планировал построить цикл по академическому принципу, плавно переходя от основ к алгоритмам, попутно иллюстрируя текст кодом из libcds. Но часть читателей требует зрелищ не мешкая показать, как пользоваться библиотекой, особо не рассусоливая. Я согласен, в этом есть свой резон. В конечном счете, и мне не так интересно, что там внутри boost, — опишите, как его применять! Поэтому свой эпический цикл я разделю на три части: Основы, Внутри и Извне. Каждая статья эпопеи будет относится к одной из частей. В Основах будет рассказываться о низкоуровневых вещах, вплоть до строения современных процессоров; это часть для почемучек вроде меня. Внутри будет освещать интересные алгоритмы и подходы в мире lock-free, — это скорее теория о том, как реализовать lock-free структуру данных, libcds будет неисчерпаемым источником C++ кода. В Извне будут статьи о практике применения libcds, — программные решения, советы и FAQ. Извне будет питаться вашими вопросами/замечаниями/предложениями, дорогие хабражители.

А пока я судорожно готовлю начало Извне, — первая часть Основ. Статья во многом не о C++ (хотя и о нем тоже) и даже не о lock-free (хотя без atomic lock-free алгоритмы неработоспособны), а о реализации атомарных примитивов в современных процессорах и о базовых проблемах, возникающих при использовании таких примитивов.
Атомарность — это первый круг ада низкий уровень из двух.
Читать дальше →

Эксперименты с жидким азотом, пластиковыми бутылками и шариками для настольного тенниса

Reading time3 min
Views83K
image
На канале ПРОСТАЯ НАУКА появилась рубрика «Простые научные эксперименты», которую мы создали совместно с каналом Наука 2.0. Вместе со мной рубрику ведет Антон Войцеховский, автор и ведущий программы EXперименты.

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

Мы хотели выяснить

  • Через какое время разорвет пластиковую бутылку, если в нее налить жидкий азот и плотно закрыть крышкой?
  • В каком месте бутылка разрывается: у горлышка или само тело бутылки?
  • Какую бутылку разорвет быстрее: наполненную жидким азотом наполовину или на четверть?
  • А если бутылку с жидким азотом накрыть бочкой?
  • Что будет, если в бочку поместить бутылку с жидким азотом и засыпать теннисными шариками?

За четыре часа удалось получить ответы на все поставленные вопросы. А заодно и снять небольшой видеосюжет про это.
Читать дальше →

Дерек Сиверс: «Метод интервального повторения — лучший способ изучения языков программирования»

Reading time6 min
Views115K
Краткая справка: в 1998 году Дерек Сиверс основал компанию CD Baby и превратил ее в крупнейшего онлайн-продавца независимой музыки. В 2008-ом вырученные от продажи компании $22 миллиона Дерек передал в благотворительный траст на нужды музыкального образования.
Речи Дерека на TED просмотрели более 5 миллионов раз, а его собственная книга занимала первую строку в чарте книг для предпринимателей на Amazon.
Сам себя Дерек считает «вечным учеником».


Я уже год использую этот метод обучения и могу сказать, что он – самый эффективный из тех, с которыми мне довелось столкнуться за 14 лет изучения программирования.
Читать дальше →

Как ответить запросом на запрос, или Базы данных не для чайников

Reading time7 min
Views53K
В Технопарке я преподаю студентам курс «Базы Данных». Уже из названия ясно, что речь идет о неотъемлемой части современной IT-грамотности — без этой дисциплины сегодня трудно представить себе компьютерную специальность. Базы данных в том или ином виде сегодня окружают нас повсюду — в самом обычном смартфоне их сотни, что, разумеется, далеко не предел.


Читать дальше →

Мониторим всё: расширение агентов Windows и Linux при помощи скриптов

Reading time10 min
Views155K
Если нам нужно мониторить состояние серверов и прочих компьютеризированных рабочих мест при помощи Zabbix, то это можно сделать двумя способами.

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

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

image

Что делать, если того, что мы хотим контролировать через Zabbix нет в списке возможностей Zabbix агента? Ждать пока это имплементируют разработчики в следующем релизе? Не обязательно.
Что же делать?

Детальный ликбез про корпоративный бэкап, как сравнивать системы + пара практических советов

Reading time11 min
Views59K

Cистема резервного копирования может работать вот так

Чем корпоративный бэкап отличается от домашнего?
Масштаб — инфраструктуры до петабайта. Скорость – тысячи транзакций в секунду, поэтому, например, нужно уметь забирать бэкап из базы данных на лету, не останавливая запись. Зоопарк систем: рабочие машины, мобильные телефоны и планшеты, профили людей в «облаке», копии баз данных CRM/ERP, все это на разных ОС и в тяжелых разветвленных системах.

Ниже я расскажу про решения от IBM, EMC, CommVault, Symantec и то, что они дают как бизнесу в целом, так и IT-отделу. Плюс о некоторых подводных камнях.

Давайте посмотрим на эти особенности бэкапа в обычных российских компаниях. В том числе таких, которые бэкапятся только на случай изъятия оборудования.
Читать дальше →

Тонкости благополучного git-merge

Reading time8 min
Views374K

Вступительное слово


Считается, что «киллер фичей» СКВ Git является легковесное ветвление. Я ощутил это преимущество в полной мере, ведь я перешел на Git с SVN, где ветвление было достаточно дорогим процессом: для создания ветки нужно было скопировать весь рабочий каталог. В Git все проще: создание ветки подразумевает лишь создание нового указателя на определенный коммит в папке .git/refs/heads, который является файлом с 40 байтами текста, хешем коммита.

Основными командами пользовательского уровня для ветвления в Git являются git-branch, git-checkout, git-rebase, git-log и, конечно же, git-merge. Для себя я считаю git-merge зоной наибольшей ответственности, точкой огромной магической энергии и больших возможностей. Но это достаточно сложная команда, и даже достаточно длительный опыт работы с Git порой бывает недостаточным для освоение всех ее тонкостей и умения применить ее наиболее эффективно в какой-либо нестандартной ситуации.

Попробуем же разобраться в тонкостях git-merge и приручить эту великую магию.

Здесь я хочу рассмотреть только случай благополучного слияния, под которым я понимаю слияние без конфликтов. Обработка и разрешение конфликтов — отдельная интересная тема, достойная отдельной статьи. Я очень рекомендую так же ознакомиться со статьей Внутреннее устройство Git: хранение данных и merge, содержащей много важной информации, на которую я опираюсь.
Читать дальше →

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

Reading time12 min
Views153K

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

Читать дальше →

Спасем крупнейшую медиатеку в рунете. Вся база rutracker у Вас на компьютере

Reading time10 min
Views195K
image

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

К сожалению, решить проблему своими силами у меня не хватило ни времени, ни, будем откровенны, знаний. Но, к счастью, мои слова возымели действие на людей, которые и тем и другим обладают. В итоге эти люди организовались и сообща сделали то, о чём так долго говорили большевики о чем я писал, а именно с помощью скриптов обошли рутрекер, сдампили все описания раздач с хешами, распарсили их и скомпоновали в удобную для употребления базу. В дополнение к этому так же была написана «морда»: программа для удобной работы с базой конечных пользователей, не знающих с какого конца держат grep. К сожалению, аккаунта на хабре никто из этой команды не имеет (если не считать read-only), в песочнице статья могла бы потеряться, поэтому меня выбрали как рупор для данной площадки. Я, честно говоря, раздумывал совсем недолго и только над тем, как правильнее все сделать. Если будут какие-то вопросы — задавайте мне в комментах, я либо отвечу сам, либо переадресую разработчикам. Технические тексты от первого лица, но я имею к ним косвенное отношение, они оставлены в таком виде для простоты восприятия.

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

Техническая часть, ссылки и немного лирики

The Good, the Bad and the Ugly code

Reading time7 min
Views30K

Хороший код или плохой? Лично для меня хороший код обладает следующими качествами:
  • Код легко понятен разработчикам разной квалификации и хорошо структурирован
  • Код легко изменять и поддерживать
  • Приложение выполняет свои функции и обладает достаточной, для выполняемого круга задач, отказоустойчивостью

Несмотря на короткое описание, о том, как добиться выполнения трех этих условий, написано много толстых книг.

Почему именно эти критерии? Сразу оговорюсь, речь сейчас идет о разработке ПО для бизнеса (enterprise application). Критерии оценки кода для систем реального времени, самолетов, систем жизнеобеспечения и МКС отличаются.
Читать дальше →

Суровый геймдев на примере трех игр для Android

Reading time4 min
Views69K


Разработка игр в целом – очень увлекательный и интересный процесс. Особенно он интересен тогда, когда ты занимаешься этим один, независимо ни от кого, имея за плечами небольшой опыт во всем, что позволит создать полноценный продукт для индустрии развлечений. Казалось бы, если для этого есть время и возможности, то почему бы не переодеться в шкуру инди-разработчика и создать нечто интересное, что сможет понравиться людям и принесет прибыль? Конечно да, но только помимо множества явных подводных камней существуют и едва заметные грабли, которые лежат на последней ступени процесса создания игры и больно лупят по голове. После чего остается мысль — «Ведь я же старался, потратил много времени, но ничего не получил взамен», а следом — «Ничего, в следующий раз я сделаю лучше!». Под катом история о том, как на эти грабли мне пришлось наступить трижды.
Читать дальше →

Запуск и использование OpenWrt в VirtualBox

Reading time5 min
Views138K
Скриншот списка виртуальных машинВ этой статье я расскажу о том, как запустить OpenWrt в эмуляторе и настроить его для работы в сети, а так же коснусь использования vi, клиентов ssh и scp. Главной причиной для всего этого действия я считаю возможность потрогать прошивку руками не боясь остаться без интернета, в случае возникновения проблем с роутером. Данная статья рассчитана на мало знакомых с Linux людей.
Википедия подсказывает, что OpenWrt — основанная на Linux прошивка для домашних маршрутизаторов (роутеров). На деле, это целое семейство прошивок. OpenWrt наряду с DD-Wrt и Gargoyle доступны для огромного количества роутеров на разных аппаратных платформах. Доступен репозиторий по адресу downloads.openwrt.org. Помимо основной ветки (имеющей несколько реализаций в пределах платформы), названной attitude_adjustment распространены версии backfire и kamikaze.

Установка программ

Читать дальше

Проектировщик интерфейсов: кто именно нужен компаниям

Reading time7 min
Views57K
В последние несколько лет проектирование интерфейсов начало приобретать немалую популярность. Отечественные компании, чей бизнес так или иначе связан с компьютерами и интернетом стали понимать, что просто «дизайна» в том понимании, в каком он употребляется у нас уже недостаточно, нужно не только красиво, но и удобно. В результате мы видим немалое количество вакансий с такими словами в описании, как UX, UI, UCD, usability и всё в таком духе.

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

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

Написание клиента-бота для schemaverse

Reading time3 min
Views6.1K
image На хабре уже было упоминание о SQL играх. Но я все был занят и только недавно решил разобратся что-же это такое. Совершенно случайно я выбрал schemaverse о которой тоже уже упоминалось на хабре.

Насколько я понял, все удовольствие от игры получаешь, когда пишешь для нее бота. Для этого я выбрал один из самых своих любимых языков — javascript. Также я решил визуализировать карту, чтобы видеть как мои кораблики летают и захватываюи вражеские планеты. Много кода и SQL запросов я приводить не буду чтобы не раздувать статью, вы всегда можете посмотреть их в репозитории.
Читать дальше →

Использование Paint в качестве редактора уровней

Reading time8 min
Views24K
Всю сознательную программистскую деятельность я увлекался созданием игр и не любил делать редакторы и прочие утилиты. Главным моим редактором почти всегда был Paint. Но для игр, в которых уровень статичен и состоит из тайлов (Марио подобные и прочие танчики), это более-менее оправдано, т.к. одному пикселю из файла уровня, созданного в Paint, соответствует тайл в игре. А что если требуется создать игру, где нет тайлов, а игровая локация состоит из неровных скалистых пещер. Или игру, в которой много движущихся элементов (летающие платформы, лифты, циркулярные пилы, вращающиеся по окружности).

Создавать редактор для таких целей мне по-прежнему не хотелось. О том, как я это решил с помощью Paint опишу в этой статье.
Читать дальше →

Process Explorer vs Process Hacker

Reading time6 min
Views95K
Многим людям рано или поздно приходит в голову мысль, что стандартный менеджер процессов Windows весьма слаб по функционалу. Начинаются поиски альтернативы, которые в основном тут же и заканчиваются при обнаружении Process Explorer от Марка Руссиновича. Вот и Хабр даже советует эту программу.

Что тут можно сказать? Конечно, Process Explorer — это хорошая программа. Однако, не идеал. Именно в пику её неидеальности существует не только бесплатная, но и свободная альтернатива — Process Hacker. А теперь мы детально и по пунктам рассмотрим, почему Process Hacker не просто «чуть-чуть лучше», а лучше на порядок, лучше на столько, что переводит программу для продвинутого пользователя в класс инструмента системного программиста или администратора.
Читать дальше →

Автоматизируем мониторинг: низкоуровневое обнаружение

Reading time6 min
Views131K
Мониторинг большого количества устройств требует в помощь инструменты автоматизации. Иначе, если все делать мышкой, то можно “укликаться”, пока добавишь и настроишь все, что требовалось. К тому же, обязательно где-нибудь ошибёшься, человек не робот. Благо, в Zabbix все эти инструменты есть: это шаблоны, API, обнаружение сетевых устройств, авторегистрация Zabbix-агентов.

И вот с версии 2.0 сюда добавилось Low-Level Discovery (LLD) или низкоуровневое обнаружение. Хотелось бы рассказать что это такое.
Подробности

Как перестать бояться и полюбить шопинг на Amazon

Reading time2 min
Views179K
image

Разбор полетов


По итогам прошлого поста мы выяснили, что:

  • доставка происходит в обход Почты РФ через UPS/DHL;
  • в Москву посылка приходит за 5 дней;
  • для РФ Киндл продается только в версии «без встроенной рекламы» и без аксессуаров в отдельном лоте. Поэтому чехлы, к примеру, можно взять тут.
  • Amazon оплачивает услуги таможенного брокера;
  • заказывая доставку на рабочий адрес, никак не упоминайте название компании, иначе получателем будет компания, а не вы, со всеми последствиями;
  • если ваша покупка дешевле 200 евро, включая стоимость доставки, вам не о чем переживать;
  • если вы хотите сделать покупку весом до 31 кг. и стоимостью до 1000 евро, включая стоимость доставки, то вам желательно заказывать ее на адрес в одном из городов списка (Москва, Санкт-Петербург, Краснодар, Владивосток, Ставрополь, Новороссийск и Нижний Новгород). В этом случае доступны следующие варианты развития событий:
    1. скорее всего, вам не о чем переживать, и покупку вам доставят без лишних проблем;
    2. возможно, вам позвонят\ напишут из UPS и попросят прислать им отсканированную распечатку электронной квитанции заказа из Amazon, подписанный договор оказания услуг перевозки груза и копию паспорта.
    3. самый маловероятный и худший вариант — квест по самостоятельному прохождению таможни. Не переживайте, с этой инструкцией процесс займет не больше 2 часов времени и будет не сложнее похода в библиотеку.
  • это же Amazon! При возникновении любых проблем — задержка, потеря посылки, дополнительные таможенные сборы, повреждение товара — служба поддержки придет вам на помощь вплоть до полного возмещения стоимости.


Теперь о том, что же все-таки можно купить.

Читать дальше →

SSH-туннель домой без необходимости оставлять включённым домашний ПК

Reading time5 min
Views215K
Disclaimer
Этот пост появился здесь по нескольким причинам:
1) Меня попросил сам Boomburum
2) Есть предположение, что на хабре всё-таки есть люди, имеющие прямое отношение к IT, но при этом имеющие весьма отдалённое представление о пользе SSH и её извлечении из обычного домашнего роутера, и которым, надеюсь, будет весьма интересно и полезно об этом узнать.

Хабралюдям, познавшим Дао IOS, tun, VPN, *wrt, WOL… etc, предлагается на выбор:
А) Закрыть топик, заняться делом и не выводить себя из нирваны чтением этой любительской фигни.
Б) Потратить время на конструктивную критику и полезные дополнения в комментариях.
Специально для GrammarNazi:
Пишите пожалуйста об ошибках в личку — обещаю исправиться.
Бла-бла-бла, а топик-то о чём?
Итак, я обещал рассказать «как поднять ssh-туннель домой без необходимости оставлять включённым домашний ПК» и, как правильно догадался peter23 речь пойдёт про ssh-сервер на роутере.
Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity