How to become an author
.NET Knowledge Base
  • All streams
  • Development
  • Administrating
  • Design
  • Management
  • Marketing
  • PopSci
Log in Sign up
18.2
Karma
0.0
Rating
3
Followers
15
Following

Ryadovoy

User

Profile

Posts 4

Comments 318

Bookmarks 18

  • Немного размышлений и советов по оптимизации кода на С++
    89
    Ryadovoy
    March 18, 2016 at 06:27 AM
    0
    В пункте про RVO логично было бы упомянуть про NRVO и его ограничениях.
  • Обзор примитивов синхронизации — mutex и cond
    15
    Ryadovoy
    March 7, 2016 at 12:42 AM
    0
    Семафор не очень подходит, если нужно пробудить все ждущие потоки (логика manual reset event), а mutex+cond лично мне кажется избыточным, когда нужен флаг-событие. В WinAPI, к примеру, нет такого синхронизационного объекта как condition variable, эта абстракция реализуется на этой платформе с использованием event-а или семафора.
  • Обзор примитивов синхронизации — mutex и cond
    15
    Ryadovoy
    March 6, 2016 at 01:23 PM
    0
    Подскажите, почему Вы не рассматриваете event как отдельный примитив синхронизации OS?
    Известные мне реализации condition не умеют работать сами по себе без мьютекса, а вот event вполне себе может.
  • Передача сообщений между потоками. Классические блокирующие алгоритмы
    37
    Ryadovoy
    February 9, 2016 at 11:21 PM
    0
    wiki
    Без блокировок (англ. lock-free)
    Для алгоритмов без блокировок гарантируется системный прогресс по крайней мере одного потока. Например, поток, выполняющий операцию «сравнение с обменом» в цикле, теоретически может выполняться бесконечно, но каждая его итерация означает, что какой-то другой поток совершил прогресс, то есть система в целом совершает прогресс.
  • Передача сообщений между потоками. Классические блокирующие алгоритмы
    37
    Ryadovoy
    February 9, 2016 at 11:16 PM
    +1
    Если код разросся до такого состояния, что существует куча логики с использованием блокировок в непонятных ситуациях, тогда lock-free алгоритмы точно не помогут такому коду, т.к. эти алгоритмы в разы сложнее алгоритмов с блокировками.
    Я бы рекомендовал придерживаться нескольких правил, чтобы избежать взаимных блокировок:
    1) мьютекс должен блокировать доступ к данным, а не код (если это возможно)
    2) никогда не вызывайте внешний код из под блокировки (коллбеки и т.п.)
    3) в идеале lock/unlock должны происходить в одной функции (RAII)
  • Skype слег намертво и парализовал деятельность многих компаний
    154
    Ryadovoy
    September 21, 2015 at 06:44 PM
    +5
    Skype for business
  • Microsoft официально выпустила Windows 10
    145
    Ryadovoy
    July 30, 2015 at 08:28 AM
    +1
    >>Сильно не хватает индексации для поиска по файлам
    Советую попробовать Everything Search Engine, пользуюсь уже около 3 лет, мгновенный поиск любого файла. geektimes.ru/post/42354
  • Использование альтернативного аллокатора памяти в проекте на C/C++
    40
    Ryadovoy
    February 21, 2015 at 08:53 PM
    0
    Проблемму фрагментации памяти в Windows решает технология Low-Fragmentation Heap, которая включена по умолчанию начиная с Vista, а в XP включается через WinAPI
  • Электронные сигареты подрывают иммунную систему
    38
    Ryadovoy
    February 7, 2015 at 01:15 AM
    –4
    Аллен Карр Вам в помощь, не курю уже сам не помню сколько, и вообще не парюсь этим вопросом.
  • Под какой ОС и на чем вы программируете?
    128
    Ryadovoy
    November 14, 2014 at 08:13 AM
    +8
    Не поверите, но есть люди, у которых самый часто используемый язык — batch :)
  • Placebo-кнопки в повседневности и в веб-дизайне
    50
    Ryadovoy
    October 3, 2014 at 11:30 AM
    +3
    Пример с надписью «Last Updated» это не плацебо, а правдивая информация.
    Автоматическое обновление скрыто от глаз и не понятно как оно работает, и работает ли вообще, по этому дополнительная информация о времени последнего обновления привносит ясность.
  • Слепой набор – бумажный способ
    66
    Ryadovoy
    September 23, 2014 at 10:44 AM
    0
    Самый лучший способ научиться слепому набору — взять лезвие и постирать все надписи на клавиатуре.
  • О блокировании мобильного приложения Yota со стороны МТС
    222
    Ryadovoy
    September 14, 2014 at 12:52 AM
    +2
    В свое время меня так достала политика МТС, что я достал симку с телефона и разломал ее на четыре части, не взирая на то, что это был основной номер на протяжении шести лет.
  • Простой USSD-запрос в Android 4.0+
    11
    Ryadovoy
    August 31, 2014 at 03:15 AM
    0
    А как насчет идиотского запрета записи на SD в 4.4?
  • 6 мифов, мешающих разработчикам использовать Git
    228
    Ryadovoy
    August 1, 2014 at 08:25 AM
    +2
    Под Windows есть Git Extensions, весьма удобный и простой в использовании инструмент.
  • 6 мифов, мешающих разработчикам использовать Git
    228
    Ryadovoy
    August 1, 2014 at 08:11 AM
    +2
    >>rebase'ни его относительно master'а, squash'ни свои коммиты и попинай меня снова
    Потому, что 'rebase' нужно делать через merge:
    Делаем merge c веткой мастер, при этом происходит правильное слияние с учетом истории, также всегда создается новый коммит, по этому для того, чтобы откатить результат, достаточно перенести указатель ветки на один шаг назад.
    После слияния ветка master будет являться началом Ваших изменений, rebase на master уже пройдет без конфликтов, можно делать squash, если того требует мэйнтейнер: rebase --interactive, либо вообще способ для ленивых reset --mixed и делаем новый коммит.
    Важно: Если Вы знаете, что Ваши действия приведут к удалению оригинального коммита (как при rebase или reset) или если в чем-то не уверенны, сделайте резервный указатель (новый branch), к которому потом всегда можно будет вернуться.
  • Анализ одного рефакторинга
    10
    Ryadovoy
    July 29, 2014 at 09:50 AM
    0
    Похоже на рефакторинг замена метода объектом методов, но только с какой-то кривой реализацией на статических переменных.
    Данный рефакторинг имеет смысл, если у вас есть длинный метод, в котором локальные переменные так сильно переплетены, что это делает невозможным применение извлечения метода, то есть когда все настолько запущено, что другого выхода практически нет.
  • Модернизации зеркала в прихожей
    55
    Ryadovoy
    July 25, 2014 at 06:49 AM
    +2
    А если удалить только защитный слой, а амальгаму оставить, фоторамка не будет просвечиваться?
    Кстати, недавно встречал видео рекламу на зеркалах в туалете (в Dream Town, Киев), удивило.
  • Автоматическое выравнивание кода
    50
    Ryadovoy
    July 11, 2014 at 11:16 PM
    +2
    А как насчет массового переименования типов?

    до переименования:
    Type1          a = 1;
    long int       b = 2;
    BlaBlaType2    c = 3;
    const int      d = 4;
    

    после переименования:
    Type1Renamed          a = 1;
    long int       b = 2;
    BananaBananaType2  c = 3;
    const int      d = 4;
    
  • Обзор механической клавиатуры CODE Keyboard
    131
    Ryadovoy
    July 8, 2014 at 03:07 AM
    0
    А чем Вас не устраивала «стандартного размера клавиатура», та, которая без надписей?
    Мне на последней своей клавиатуре пришлось специально сдирать надписи лезвием…
  • Передача умных указателей по константной ссылке. Вскрытие
    13
    Ryadovoy
    July 6, 2014 at 06:22 AM
    +1
    Ну а также постоянное копирование умных указателей может замедлить выполнение паралельных задач
  • Всё, что вы хотели узнать о рефакторинге, но боялись спросить
    57
    Ryadovoy
    June 26, 2014 at 02:48 PM
    +1
    Мартин Фаулер в своей книге уделяет большое внимание юнит тестам. Если код не покрыт юнит тестами, то рефакторинг такого кода становится опасным.
    Хорошо бы упомянуть как-то этот момент на Вашем сайте, допустим в интерактивных примерах можно добавить шаг с запуском юнит тестов, и т.п.
  • Всё, что вы хотели узнать о рефакторинге, но боялись спросить
    57
    Ryadovoy
    June 26, 2014 at 02:39 PM
    +1
    У Вас ошибка в живом примере на Java refactoring.guru/replace-method-with-method-object:
    В шаге 5 отсутствует замена локальных переменных приватным полями.
    Хорошо бы добавить кнопку «Сообщить об ошибке».
    А так сайт отличный, однозначно в избранное!
  • Почему Ваза утонул, а С++ всё ещё на плаву
    261
    Ryadovoy
    June 26, 2014 at 01:32 AM
    0
    >> С++ даёт возможность контроля типов, один из инструментов для этого — шаблоны. Программу того аппарата можно было спроектировать так, что ошибка несогласованности систем мер и весов были бы невозможны.

    Кто мешает завести различные типы для систем мер и весов, и зачем для этого применение шаблонов?
  • Почему Ваза утонул, а С++ всё ещё на плаву
    261
    Ryadovoy
    June 26, 2014 at 01:10 AM
    +1
    Думаю имелось в виду что-то типа scoped_lock
  • Внедрение зависимостей в C++
    15
    Ryadovoy
    May 13, 2014 at 10:31 PM
    +1
    inject_as_object делает привязку к одной конкретной реализации, а что, если захочется иметь две разные реализации?
    Также что делать, если нужно использовать разные параметры конструктора для разных клиентов?
    Мне кажется более удобным и гибким решением делать inject на уровне объектов, а не классов.
  • История создания торрент-рендера для 3ds max
    61
    Ryadovoy
    March 22, 2014 at 09:19 AM
    0
    Спасибо, довольно интересная получилась история.

    >>Оказывается в трекере была установка — удалять неактивных пользователей
    Я надеюсь, что после этого вы научились делать резервную копию базы пользователей?

    Успехов Вам в развитии сервиса!
  • Инструменты разработчика или Почему вы не используете X? Часть 1
    100
    Ryadovoy
    March 13, 2014 at 03:28 AM
    0
    REPL
    Почему-то не вижу особого смысла для C++:
    >>Для проверки какой-либо конструкции языка или его возможности Вы создаете полноценное тестовое приложение.
    Если задача состоит в том, чтобы сделать какой-то эксперимент, можно сделать это в виде юнит-теста, у Вас ведь есть существующая инфраструктура для юнит-тестов? Такой подход даст возможность без особого труда поиграться с объектной структурой Вашего приложения. Ну а если нужно написать какой-то тест для проверки производительности чего-либо, то тут уже не обойтись без отдельного тестового приложения.
    >>Для вычисления значения какого-либо сложного выражения, Вы долго мучаетесь с калькулятором…
    Калькулятор на C++, а смысл? Думаю проще воспользоваться другими средствами.
  • Инструменты разработчика или Почему вы не используете X? Часть 1
    100
    Ryadovoy
    March 13, 2014 at 02:42 AM
    +2
    Вспомнилась книга:
    Программист-прагматик. Путь от подмастерья к мастеру
  • Как умирают софтовые компании, или Как правильно выращивать программистов
    42
    Ryadovoy
    November 30, 2013 at 05:57 PM
    +1
    Программисты создадут продукт для таких же программистов и этот продукт обычным людям будет не нужен.
    Выбирать направление разработки должны бизнес аналитики, учитывая интересы компании и ее клиентов.
  • Инструментарий фондового рынка: Торговый терминал
    33
    Ryadovoy
    November 27, 2013 at 03:19 AM
    0
    Плечо 1:1000 и форекс это верный путь к потере денег.
    habrahabr.ru/company/itinvest/blog/202526/
  • Lock-free структуры данных. Извне: введение в libcds
    5
    Ryadovoy
    October 22, 2013 at 07:50 PM
    +1
    Каким образом тестировалась библиотека, в каких проектах она использовалась?
  • Lock-free структуры данных. Основы: откуда пошли быть барьеры памяти
    19
    Ryadovoy
    October 21, 2013 at 12:51 PM
    0
    Спасибо, теперь стало немного понятней с LoadStore, хотя для реализации такого поведения нужен некий механизм задержки обработки store до завершения чтения, хотелось бы понять устройство такой логики на уровне архитектуры процессоров.

    Я понимаю барьер StoreLoad следующим образом:
    Допустим операция записи была выполнена через store buffer и данных пока еще нет в кеше. Для того, чтобы упорядочить последующую операцию чтения, данные из store buffer необходимо перенести в кеш линию. Тоесть результат предыдущей операции записи должен быть сохранен в кеше прежде, чем начнется операция чтения.
  • Lock-free структуры данных. Основы: откуда пошли быть барьеры памяти
    19
    Ryadovoy
    October 21, 2013 at 04:36 AM
    +1
    Большое спасибо за статью, я в первые начал немного понимать зачем нужны барьеры и как они работаю.

    Единственное чего не могу понять, так это что такое Load/Store барьер, и как он реализован в схеме store buffer/invalidate queue. Ведь если операция чтения была произведена из ранее инвалидированной кеш линии, то дальнейшая обработка invalidate queue ни к чему не приведет. Или инструкция Load/Store обрабатывает invalidate queue перед выполнением чтения, то есть это будет комбинация read/write барьеров?
    smp_rmb();    // барьер чтения
    if (a == 0)   // чтение
    {
       smp_wmb(); // барьер записи
       b = 1;     // запись
    }
    

    Было бы здорово разобрать примеры поведения двух процессоров в случаях Load/Store и Store/Load.
  • Срок за торренты или дело семьи Лопуховых. Судебный прецедент для новой правоприменительной практики
    207
    Ryadovoy
    October 17, 2013 at 11:11 PM
    +3
    При прочтении сего у меня появилась мысль — а что, если массово отказаться от употребления копирастического контента?
  • Спасем крупнейшую медиатеку в рунете. Вся база rutracker у Вас на компьютере
    257
    Ryadovoy
    September 28, 2013 at 01:00 AM
    0
    dump_viewer.exe зависит от kdecore.dll, msvcr100.dll, qtcore4.dll, qtgui4.dll, qtwebkit4.dll.
    Похоже для запуска нужно ставить еще Qt и kdelibs.
  • Спасем крупнейшую медиатеку в рунете. Вся база rutracker у Вас на компьютере
    257
    Ryadovoy
    September 28, 2013 at 12:55 AM
    0
    Не помогло :(
  • Спасем крупнейшую медиатеку в рунете. Вся база rutracker у Вас на компьютере
    257
    Ryadovoy
    September 28, 2013 at 12:25 AM
    0
    dump_viewer.exe — Ошибка приложения
    Ошибка при запуске приложения (0xc000007b).
    Для выхода из приложения нажмите кнопку «ОК».
    Windows 7 x64
  • После подключения бесперебойника программа больше не работает
    71
    Ryadovoy
    August 29, 2013 at 03:04 PM
    +12
    Хочу поделиться одной историей с моей жизни.
    Дело было на моей первой работе после окончания института.
    Взяли меня программистом в одну государственную контору в отдел АСУП
    и выдали мне старенький компьютер, пока новый компьютер еще не заказали.
    И все бы ничего, но этот старенький компьютер любил пререзагружатся сам по себе, и довольно часто.
    В общем работать на нем было практически невозможно,
    т.к. в любую минуту можно было потерять не сохраненные изменения.
    В общем, в ожидании нового компьютера, я решил поиграть пока в Quake.
    И вот, играя в Quake я замечаю, что компьютер то не перезагружается!
    Я свернул Quake и поработал немного, компьютер по прежнему не перезагрузился.
    В итоге мой рабочий день начинался так: прихожу я на работу,
    включаю компьютер и быстро запускаю Quake пока компьютер не успел перезагрузится,
    затем сворачиваю Quake и продолжаю работать.
    Невероятно, но факт.
  • Киберприглашение на свадьбу или о том, как эффектно разрушить шаблоны
    52
    Ryadovoy
    August 17, 2013 at 02:36 AM
    +1
    Сразу вспомнилось:
    www.exler.ru/novels/wife.htm
  • ← here
  • there →
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Info

  • Rating 5,942–nd
  • Activity 12/16/18, 8:31 AM
  • Registered November 26, 2010

Contribution to hubs

  • C++ 49
  • Programming 14
  • Python 12
  • Designing and refactoring 4

Your account

  • Log in
  • Sign up

Sections

  • Posts
  • Hubs
  • Companies
  • Users
  • Sandbox

Info

  • How it works
  • For Authors
  • For Companies
  • Documents
  • Agreement
  • Terms of service

Services

  • Ads
  • Subscription plans
  • Content
  • Seminars
  • Megaprojects
© 2006 – 2021 «Habr»
Language settings
About
Support
Mobile version
Language settings
Interface
Content