среда, 2 сентября 2009 г.

Шахматная задачка

Я встретил забавную шахматную задачку

Chess video mentioned on
[Letsplaychess.com Chess video forum]

Build up your chess





вначале рассуждения на английском, но с 3-й минуты все понятно

пятница, 15 мая 2009 г.

Python IDE

Для комфортной работы с Python нужна среда IDE. Я рассмотрел две: Netbeans 6.5.1 и EasyEclipse-for-Python-1.3.1 c easy-pydev-1.3.13. Обе после установки работают с Python нормально. Но при диалоговой отладке Netbeans дальше строки с import wx не пробился. Он ругается, что не знает где взять модуль wx.
EasyEclipse при пошаговой отладке показал себя с лучшей стороны.
 16.09.2012
Прошло время. Netbeans, начиная с версии 7 отменило поддержку Python. Осталось Eclipse + Pydev. Такая конфигурация позволяет использовать три реализации Python: Python классический, написанный на C; Jython - Python, реализованный на языке Java, и генерирующий файлы типа .class для jvm; IronPython - Python, реализованный на C sharp, и генерирующий исполняемые файлы для .NET. Совместимость языков высокая. Но использовать WPF лучше в Ironpython, Swing в jython.
07.05.2015
Если вы интересуетесь Python, то надо попробовать PyCharm. Эта IDE платная, но есть и Community Edition. Она свободна для скачивания. 
     

пятница, 20 марта 2009 г.

Корпоративные программисты(неправильные мысли)


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

На каждом предприятии есть основные подразделения и обеспечивающие. Основные выполняют профильные бизнес функции, принося доход. Обеспечивающие обеспечивают работу основных в рамках своей специализации.

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

Казалось бы все просто и нечего копья ломать. А кто такие программисты? Если формально, то они в ИТ не входят. Они должны быть на тех предприятиях, где пишут программы. Для бизнеса предприятие покупает готовые программы, их на рынке море. То есть своих программистов кормить не надо, их быть не должно. 

Но не все так просто. Компьютеры сами ни чего не делают. В автоматизации люди слабое звено. 
Очень важно понять: что мы автоматизируем - людей или бизнес процессы. 
Реальность в том, что и то и другое.
Я много занимался внедрением программных систем, и всегда должен был отвечать на вопрос когда же вы (мы) внедрите? Но систему внедряют бизнес подразделения в свою деятельность, а не автоматизаторы-айтишники. Всегда получалось, что пришли автоматизаторы - насильники и внедряют в бедных бизнесменов чертову программу, да еще и без должного уважения.

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

воскресенье, 15 марта 2009 г.

XML, XPATH и Excel 2003

Есть хороший сайт с блогами , на нем очень рекомендую
блог derik_whittaker.
Правда у него есть один недостаток - блог на английском языке.

В посте от 07.08.2007 года Дерик описал как при помощи C#, XPath выполнить запрос к XML файлу, получающемуся из EXCEL 2003. Получить такой файл можно, сохранив книгу Excel в режиме как Table.xml.
Я это попробовал - работает. У меня таблица была с 1000 записями. Колонок 26, нужно выбрать 5.
В строке выбора я указал их позицию, считая с 1:

string wrkCell =

string.Format("//{0}:Worksheet[@{0}:Name='{1}']/{0}:Table/{0}:Row[*]/{0}:Cell[position()=2 or position()=18 or position()=22 or position()=25 or position()=26]/{0}:Data", ssNmspPref, nm1);

В переменной nm1 - имя листа, выбранного пользователем в диалоге.


В результате выбора

XPathNodeIterator itc = xpathNav.Select(wrkCell, nmspMan);
в itc получился набор отдельных объектов в количестве 1000строк * 5 = 5000.
Их я обработал в цикле при помощи itc.MoveNext(); Доступ к значению поля
как itc.Current.Value;
Надо представлять себе что, результат выбора itc к самим данным xml имеет такое же отношение как результат выполнения SQL к самой базе данных.
Если вам нужно по результатам выборки что то уточнить, надо снова формировать запрос и новой командой select формировать новый объект типа XPathNodeIterator.

Если в запросе к СУБД в выборку войдет запись, в которой нет нужного нам поля, то мы получим null. Здесь же результат просто не будет содержать этого поля. Как с этим разобраться?! В данном случае непонятно.

Excel при формирования этого xml файла, выгружает только те ячейки, которые присутствуют. Если ячейку не вводили, то ее нет, а следующая введенная ячейка имеет структуру <cell index="Номер колонки"> ... </cell>.
Мой запрос с этими пропусками полетел в трубу. А пропуски появились из-за того, что Excel формировал программист, который при null из базы, ничего не писал.

Для решения этой задачки, я написал процедуру, которая, пробегает по загруженному файлу и при обнаружении Cell с параметром Index= вставляет одну или несколько пустышек Cell.
Вставляю при помощи метода Родитель_Row.InsertBefore(Placebo, CellIndex).
Если нужно вставить несколько пустышек, то для каждой надо создавать новый объект!
При создании пустышки надо помнить о пространстве имен и не указывать "ss":

XmlElement Placebo = doc.CreateElement("","Cell", ssNmspURI);

XmlElement PlaData = doc.CreateElement("","Data", ssNmspURI);

PlaData.SetAttribute("Type",ssNmspURI, "String");

XmlText txt = doc.CreateTextNode("0");

PlaData.AppendChild(txt);

Placebo.AppendChild(PlaData);









суббота, 14 марта 2009 г.

FSX - не запускается раздел задания

После очередного обновления программ на моем XP (SP2) перестал работать симулятор FSX - при запуске раздела заданий.
В поиске я нашел описание причины и решение. Это решение, конечно, "неправильное", но оно проблему сумулятора решило.
Решение на форуме:
http://forums1.avsim.net/index.php?showtopic=224751
пользователь daresfr
Я сделал то, что он советовал:
1. Поиском (mfc80*.dll) нашел файлы на системном диске.
2. Просмотрел их версии. У меня так же нашлось *.42, *.762 и *.1500
3. В той директории, где находились файлы с версией создал директорию для архива и перенес туда mfc80.dll и mfc80u.dll с версией *.1500. На их место скопировал файлы с версией *.762. Именно на них ссылается FSX.
FSX снова заработал!
Понятно, что это не правильно! Надо дальше копать в FSX.

24.04.18
Теперь у меня Windows 10 home 64 бит. Переходы от версии к версии не вызывал проблем - у меня лицензионная версия FSX на трех DVD.

Время пришло и я захотел переустановить симулятор: снес все, почистил диск. Задумал ставить на диск H:.

Установка и активация FSX  (2 DVD) прошла нормально. Я запустил симулятор - все ок. Затем поставил на него FSX разгон.После нормальной установки, активация стала валиться с кодом 1-80004005.
Оппа, приплыли!
После многих плясок с бубном, проблема решена.
Итак.
Вызываем командную строку от имени администратора.
Вызываем редактор реестра-REGEDIT.
В нем ищем вот такую ветку
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318}]
В ней среди прочих записей ищем UpperFilters
исправляем его значение с partmgr на PartMgr.





Все. При запуске FSX происходит нормальная активация.

Коментариев у меня нет одни не печатные слова.
   

среда, 11 февраля 2009 г.

Всегда бывает начало!

Будем считать это пробой пера.

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога