Проблема с кодовыми страницами

Навеяло 😉 перестановкой машины у коллеги

Имеем Windows XP (возможны варианты)

После установки машины с чистого листа поехали шрифты в Oracle Forms, выражается в кракозябрах при выводе сообщений (Alerts) на русском языке.

Раньше лечили через Font Substitution (если правильно помню 🙂 ключ в реестре)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes

Но как уже упоминал, было это давно. Потом был найден на просторах интернета 🙂 другой способ, т.к. проблемы были не только с Oracle Forms.

Это решение – меняем значения для кодовых страниц

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
  • HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage
  • HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Nls\CodePage

Изменяемые строковые параметры

Параметр Старое значение Новое значение
1250 c_1250.nls c_1251.nls
1252 c_1252.nls c_1251.nls

После чего перегружаем машину и наслаждаемся 😛 отсутствием проблем с кодировкой.

Шаблон для регистрации/удаления расширений

Когда выдалось начинать осваивать написание расширений под OeBS, первым делом был полнейший шок, так как это был, так сказать, этакий монстр, и как к нему подойти даже не представлялось :).
Но, в принципе, так как сроки по расширению были критичными, первым делом было сделано copy-paste другого расширения, и его доведение до рабочего состояния.
После некоторого облегчения от выполненной задачи, была прочитана куча документации:

  • сначала – по flexfields – после чего, поняв принцип гибких полей, оставалось только искать таблицу-первоисточник, и правильно с ними работать, а это оказалось очень просто.
  • затем – application developer guide – после чего, написание форм под OeBS совсем не пугало, и более того, это было не сложнее, чем при разработке в обычных проектах, из которых как раз переносил куски кода по работе с визуальными элементами 🙂 🙂
  • и еще куча всего

После написания десятка расширений возникло желание написать универсальный механизм управления установки/удаления расширения, так как от расширения к расширению приходилось писать ручное создание, а тем более удаление объектов расширения, приходилось постоянно искать разные куски кода для вставки.
Так родилось расширение для инсталляции/деинсталляции других расширений. Но так как в проекте не удалось его зарегистрировать как расширение (оно даже и к лучшему), то далее во всех проектах оно было переделано как PL/SQL-скрипт. И требовалось исправить только в двух местах, которые определяли схему размещения пользовательских объектов базы данных.

Continue reading “Шаблон для регистрации/удаления расширений”

Легкий тюнинг роутера

Все нижеописанное изменение относится к роутеру Asus WL500G Premium, проделанное года 2 назад.

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

  • размер USB-флешек и их дешивизна – конкурент такого решения
  • при ширине канала в 15Мб/с роутер стал зависать (transmission не справлялся), по этой причине данный функционал не используется

Хотя если использовать как ftp-хранилище, то почему бы и нет. Continue reading “Легкий тюнинг роутера”

Сегодня пессимизм в настроении :(

Поэтому будем о плохом.

Наверное надо перечитать документацию (концепции и прочее по Oracle 11g), может что изменилось, и гуру, приближенные к исходникам базы рекомендуют писать код иначе.
Итак, начнем.

Кто научил писать в PL/SQL так:

select count(*)
into cnt
from <таблица / список таблиц>
where <различные условия>;

if cnt > 0
then
…..
else
…..
end if;

Ведь есть курсоры. Всего дополнительно 3-4 строчки, но, блин, полный контроль и управление над ситуацией. Нет необходимости отлавливать исключения, я так понимаю из-за этого здесь используют count(*). Есть возможность передавать параметры в запрос, и т.д.
Можно ведь:

declare
cursor c_sel is
select 1
from <таблица / список таблиц>
where <различные условия>;
tmp_n number;
begin
Open c_sel;
Fetch c_sel into tmp_n;
if c_sel%Found
then
Close c_sel;
....
else
Close c_sel;
....
end if;
end;

И зачем нам число строк, если надо только признак есть-нет записи.
Можно ведь использовать и exists. Зачем всю таблицу перебирать; а если там миллионы строк, а не пару сотен тестовых 🙂

Потом получается

почему у меня формирование документа идет 2-3 минуты, вместо 10 секунд

обработка данных занимает 20 минут

ну и в том же духе…

Произведен upgrade в аквариуме, поскольку испортился старый нагреватель.
Вот новый выбор: AQUAEL EasyHeater 150W
Обогреватель в пластиковом корпусе мощностью 150 Вт.

Что пишет производитель о товаре
Обогреватель для аквариума с терморегулировкой

  • небьющийся корпус
  • широкий температурный диапазон (от 18 до 36)
  • полностью погружаемый (стандарт IP68)
  • очень маленькие габариты (длина 21 см, толщина всего 9 мм)
  • крепления с двух сторон
  • безопасный для рыб и других животных, не обжигает тело животных
  • встроенная зашита от перегрева
  • лёгкий монтаж и уход

Плавное распределение тепла и пластиковый корпус – гарантия безопасности ваших рыб или рептилий.
Стильный вид нагревателя и уникальная плоская форма не имеют аналогов на рынке обогревателей для аквариумов.

Рекомендуют для аквариумов от 90 до 150 л.

Теперь ощущения

Классная штука. Забываешь о том, что при чистке надо очень осторожно быть около него, ведь пластмассу не разбить. А до него каждый раз думал, как бы не треснуть нагреватель.

Странно, но сомы под него перестали лазить, нашли более удобные места.

Про размеры – действительно узенький, вообще незаметный за термометром-наклейкой.

Phoca Gallery, watermarks

Для отображения фотографий пока остановился на Phoca Gallery. Очень гибкая возможность использовать вывод галерей.

Настройка watermark

Будем использовать одинаковые водяные знаки для всех галерей

Подготавливаем два файла (watermark-large.png, watermark-medium.png)

Переносим в папку /images/phocagallery/

Разрешаем использование водяных знаков в параметрах

Разрешаем watermarks

Проверяем параметры создания thumbnail

Переходим к списку Images

Выбираем все и пересоздаем thumbnails

Пересоздаем thumbnails

Наслаждаемся результатами