понедельник, 8 июня 2015 г.

Access Violation в mSysGit под Windows 7 x64 во время выполнения rebase

Буквально сегодня столкнулся с одной неприятностью при использовании mSysGit под Windows 7 x64. При выполнении "git rebase master" при наличии конфликтов в коде консольное окно закрывается с access violation.
Для воспроизведения ситуации делаем, например:
==
git init myProject
cd myProject
type NUL > file.txt
git add .
git commit -m "Initial commit"
git branch feature
echo '123' > file.txt
git commit -am "master changed"
git checkout feature
echo '222' > file.txt
git commit -am "feature changed"
git rebase master
===
То есть, создаем пустой файл file.txt, затем создаем ветку feature. В ветку master добавляем один коммит, в feature - другой. После чего пытаемся выполнить rebase ветки feature относительно master. И тут же получаем Access Violation консольного окна.
Вылетает процесс conhost.exe с кодом исключения c0000005.

Загуглив по этой теме, нашел старый топик 2011 года в google groups:

https://groups.google.com/forum/#!topic/msysgit/z1PfBWW66Jo

но решения так и не обнаружил. Что интересно, в обсуждении упоминается mSysGit версии
1.7.6, но у меня уже как бы последняя версия на сегодня 1.9.5. Непонятно.

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


среда, 21 января 2015 г.

Эвристический алгоритм решения задачи о минимальном количестве линий для размещения отрезков

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

Давайте рассмотрим такой алгоритм. Будем действовать максимально просто.