четверг, 31 мая 2012 г.

Настройка Oracle Instant Client

Качаем мгновенного клиента по адресу.
  • Распаковываем содержимое, например, в c:\Oracle\product\11.2.0\client_1
  • Помещаем tnsnames.ora с настройками подключения к базе в  c:\Oracle\product\11.2.0\client_1
  • Добавляем глобальную переменную PATH (Пуск-Свойства компьютера-Дополнительные параметры системы-Переменные среды) равную "c:\Oracle\product\11.2.0\client_1"
  • Добавляем глобальную переменную NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251 для нормальной работы кириллицы
  • Добавляем глобальную переменную TNS_ADMIN="c:\Oracle\product\11.2.0\client_1"
Далее, чтобы наш мгновенный клиент как-то отображался  в настройках подключения в сторонних приложениях, необходимо добавить ключ реестра

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_home1

и прописать ему два параметра
  1. ORACLE_HOME = c:\Oracle\product\11.2.0\client_1
  2. ORACLE_HOME_NAME = OraClient11g_home1
Теперь мы имеем готовый к использованию мгновенный клиент Оракла.

P.S. Вышеописанные действия проводились в Windows 7 Professional SP1 x64. Instant Client версии 32-bit.

суббота, 24 марта 2012 г.

Лекция Александра Степанова в Яндексе, 2010

Александр Степанов - автор STL, экс-президент AT&T, экс-президент HP/Compaq, ведущий ученый в adobe рассказывает популярно, о истории алгоритма нахождения наибольшего общего делителя. Очень харизматичный и интересный человек. Решил вот пересмотреть его лекцию. Можете составить компанию :)

Содержание:
Основные прозвучавшие идеи (не об алгоритме, а о текущем состоянии науки):
1. Computer Scientists должны знать математику и это ошибочно от нее уходить. Информатика тесно связана с математикой.
2. Специализация способствует отрицательному градиенту развития (точнее, было сказано, что специализация - узкая направленность - это плохо)
3. Купить Кнута и поставить на полку. Когда-нибудь прочитаете. Не купив - вы вообще никогда не прочитаете
4. Ответ на возражение Кнута: зависит от определения (см. лекцию). Такой ответ хорош во многих случаях
5. Была высказана мечта о создании единого ЯП. Все остальные - "диалекты". Тут у меня почему-то возникли ассоциации с не очень удачными экспериментами с эсперанто и логлан.
6. Было много сказано о том, какой Кнут умный, а Страуструп усердный. Кстати, Страуструп любит пиво с селедкой.
7. Совет: соблюдайте смирение и уважение к предыдущим поколениям. Не надо быть нигилистами.
8. Состояние CS в Америке и Европе ужаснуло: ООП изучают до циклов.
9. Читайте "Начала Евклида", это позволит "правильно" думать
10. Не улетайте далеко в абстракции и теории. Их следует применять и проверять на практике. Это как эксперимент для проверки физической теории.

... скачать лекцию можно по ссылке http://rutracker.org/forum/viewtopic.php?t=3139315

четверг, 15 декабря 2011 г.

ODBC (DBF) на Windows 7 x64

Предыстория такова. Было приложение (на C#), работающее под Windows XP x86, которое производило чтение DBF файлов посредством ODBC провайдера следующим образом:

using System.Data.Odbc;
...
OdbcConnection conn_ = new OdbcConnection();
conn_.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=NA;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
conn_.Open();
OdbcCommand cmd_ = conn_.CreateCommand();
cmd_.CommandText = @"SELECT * FROM " + FullDbfFileName;
...

В последующем появилась потребность запускать это приложение под Windows 7 x64. И в этом случае код генерил следующую ошибку:

ERROR [IM002] [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

В общем, код потерял драйвер ODBC. После некоторых поисков в интернетах, вышел на статью Faruk Celik'a. Дело в том, что драйвер ODBC заточен под 32-х разрядные системы. Код по умолчанию запускался в семёрке как 64-х разрядный и окружение осуществляло поиск драйвера в 64-х разрядной среде ODBC. Просмотреть его можно, если зайти "Панель управления" - "Администрирование" - "Источник данных (ODBC)". Во вкладке "Драйверы" хотелось бы видеть строку  Microsoft dBase Driver (*.dbf), но её там нет. И не будет... Она в другом месте, в  источнике данных (ODBC) для 32-х разрядных систем, найти который можно здесь:

C:\Windows\SysWOW64\odbcad32.exe

Запускаем его и во вкладке "Драйверы" находим наш  Microsoft dBase Driver (*.dbf).
Далее, во вкладке "Пользовательский DSN" создаём источник данных с именем "odbc32dbf" и драйвером  Microsoft dBase Driver (*.dbf). В коде меняем строку подключения:

using System.Data.Odbc;
...
OdbcConnection conn_ = new OdbcConnection();
conn_.ConnectionString = "Dsn=odbc32dbf";
conn_.Open();
...

Также необходимо перекомпилировать проект как x86, чтобы при запуске он вертелся в необходимой нам 32-х разрядной среде. И тогда всё будет норм.

P.S. В написании статьи использовался SyntaxHighlighter 2.0 (подсветка синтаксиса программного кода в блоге)