Публікації

Показано дописи з 2011

Истинный ценитель машин

Зображення

Новый внешний вид блоггера

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

Я - Критик!

Я - Критик! Запустили мега-проект. Дизайн простенький, но идей по развитию куча. Работаем над недоделками. Ждем критику :)

Oracle 10g на Windows 7 x64

Понадобилось поставить клиент Oracle 10g на 64-битной Windows 7. Скачал с oracle.com инсталляцию (10204_vista_w2k8_x64_production_client.zip), распаковал и попробовал запустить setup.exe. Суть появившейся ошибки сводилась к: Checking operating system version: must be 5.0, 5.1, 5.2 or 6.0 . Actual 6.1 Для того, чтобы таки поставилось пришлось сделать следующее: 1. В файликах client\stage\prereq\client\refhost.xml и client\stage\prereq\client_prereqs\client\refhost.xml добавил секцию: <OPERATING_SYSTEM> <VERSION VALUE="6.1"/> </OPERATING_SYSTEM> в HOST\CERTIFIED_SYSTEMS. 2. В файле client\install\oraparam.ini поправил параметр Windows в секции [Certified Versions]. Поменял его значение Windows=5.0,5.1,5.2,6.0 на Windows=5.0,5.1,5.2,6.0,6.1 После этого инсталляция нормально запустилась.

Найти ошибку

Только что коллега обратился с вопросом: почему один и тот же запрос возвращает разные результаты в зависимости от того, вызван он прямо или "упакован" в функцию. Я потратил минут 20 на анализ простого кода, но так ничего и не нашел. Запрос отдельно: select max ( LENGTH ) from TUBES where TUBES.NAME LIKE 'tube1' Функция: create or replace FUNCTION "GET_TUBE_LENGTH" ( NAME IN VARCHAR ) RETURN NUMBER AS depth NUMBER ; BEGIN select max ( LENGTH ) into depth from TUBES where TUBES.NAME LIKE NAME; RETURN depth ; END GET_TUBE_LENGTH; Если выполнить запрос отдельно, получаем NULL Если вызвать функцию: SELECT GET_TUBE_LENGTH ( 'tube1' ) FROM DUAL ; получаем 1000! Еще через 10 минут, он написал мне что решил проблему: Название параметра функции совпадает с именем поля в таблице TUBES и оператор like сравнивает не со значением параметра, а с значением поля.

Обновление сервиса "Формы и Бланки"

После долгого перерыва мы, наконец-то, выложили новую версию сервиса " Формы и бланки ". Что мы сделали: Опубликовали новые реквизиты для уплаты штрафов ГАИ и для перечислений в пенсионный фонд Исправили ошибки, которые периодически возникали при генерации документов Ускорили выполнение части запросов Подготовили систему к появлению нескольких интересных функций. Так о чем я... О том, что все самое интересное - впереди.

.NET Reflector становится платным

Сегодня получил письмо от компании Red Gate, в котором они с глубокими извинениями сообщают, что 7-я версия .NET Reflector-а станет платной. 35 баксов. Примерный перевод причины такой: Мы обещали, что эта тулза будет бесплатной и 2 года честно пытались это обещание выполнять. Но мы коммерческая компания и, если мы не получаем на продукте прибыли, то хотя бы должны компенсировать затраты на разработку. Извините нас за этот шаг, но иначе мы не можем поддерживать утилиту в актуальном состоянии. Жалко, но их можно понять. И думаю, это тот редкий случай, когда многие заплатят.

Вся правда жизни в одной картинке

Зображення

В последние годы, первые минуты наступившего года мы проводим именно так

Зображення
Мы долго обдумываем с кем именно встретить Новый Год, совещаемся о меню и программе, а когда праздник наступает - звоним людям, которых с нами нет... А чего бы не праздновать с ними? Интересно, что написано в подписи? Картинку взял тут .

Измерение времени работы программы

Для меня производительность программы была всегда очень важным моментом. Было время, когда это даже приводило к ссорам с партнерами по команде. Но речь не об этом. В .NET-е я всегда использовал DateTime для измерения временного промежутка - не очень точно, но когда промежутки измеряются секундами - вполне достаточно. После моей предыдущей заметки один из коллег рассказал мне о классе Stopwatch . В принципе - суть та же, но код выглядит немного элегантней: var watch = new Stopwatch ( ) ; watch. Start ( ) ;   // тут кусок кода, время работы которого мы измеряем   watch. Stop ( ) ; Console. WriteLine ( "Elapsed: {0}" , watch. Elapsed ) ;   Век живи - век учись.