Архивы по Категориям: Софт

PL/SQL: Полезные функции

Здесь будет памятка по интересным функциям, которые я использовал в своих sql-запросах:

  • age(table1.date)
    Показывает разницу между переданной функцию датой и текущей датой (в формате: кол-во лет, месяцев, дней, часов, минут, секунд).
  • extract(dow from table1.date)
    Получаем день недели в числовом представлении, где началом недели будет являться воскресенье (дни пронумерованы от 0 до 6).
  • extract(isodow from table1.date)
    Получаем день недели в числовом представлении, где началом недели будет являться понедельник (дни пронумерованы от 1 до 7).
  • ST_Centroid(table1.geometry)
    Получаем центр области, обозначенной последовательностью точек (мультилиния, полигон, мультиполигон).
  • ST_X(ST_Centroid(table1.geometry))
    Получаем координату X точки, полученной на предыдущем этапе.
  • ST_Y(ST_Centroid(table1.geometry))
    Получаем координату Y точки, полученной на предыдущем этапе.
  • coalesce(значение1, значение2, значение3)
    Возвращает первое значение из перечисленных, не равное NULL. Если все перечисленные значения будут равны NULL, то результатом тоже вернется значение NULL.

PL/SQL: Количество минут между двумя датами

В рамках одной задачи возникла необходимость посчитать время между двумя датами в PL/SQL-запросе. Ситуация осложнилась тем, что в PL/SQL существует функция months_between, но с помощью нее разницу можно получить только в месяцах, тогда как мне требовался более точный результат — в минутах.

В результате было найдено такое решение:
extract(day from sum("table"."date2" - "table"."date1")) * 1440 + extract(hour from sum("table"."date2" - "table"."date1")) * 60 + extract(minute from sum("table"."date2" - "table"."date1"))

Как преобразовать число в строку в языке запросов 1С

Ранее я уже встречался с проблемой перевода даты в строку в языке запросов 1С. Сегодня при написании запроса в 1C столкнулся с проблемой выражения числа как строки. На просторах сети Интернет я нашел следующее решение, которое сохраню здесь (думаю, что тоже не раз пригодится мне в будущем):

ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 100 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 1000 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 10 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 100 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + Объект.Число - (ВЫРАЗИТЬ(Объект.Число / 10 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ "."
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.1 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 1 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.01 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.1 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.01 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.0001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.001 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.00001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.0001 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)
+ ПОДСТРОКА("0123456789", 1 + (ВЫРАЗИТЬ(Объект.Число / 0.000001 - 0.5 КАК ЧИСЛО(14, 0))) - (ВЫРАЗИТЬ(Объект.Число / 0.00001 - 0.5 КАК ЧИСЛО(14, 0))) * 10, 1)

Как выразить дату как строку в языке запросов 1C

Сегодня при написании запроса в 1C столкнулся с проблемой выражения даты как строки. Операции «Выразить как строка» и «Представление» не работали, сообщая о несовместимости типов данных. Но на просторах сети Интернет я нашел следующее решение, которое сохраняю здесь (думаю, что не раз пригодится мне в будущем):
ПОДСТРОКА("0123456789", ДЕНЬ(&Дата) / 10 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(&Дата))) / 6 + 1, 1)
+ "."
+ ПОДСТРОКА("0123456789", МЕСЯЦ(&Дата) / 10 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(&Дата))) / 6 + 1, 1)
+ "."
+ ПОДСТРОКА("0123456789", ГОД(&Дата) / 1000 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.06)) / 6 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.6)) / 6 + 1, 1)
+ ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 6)) / 6 + 1, 1)

Слушаем «Радио Сибирь» в AIMP3

Почти год назад я писал о том, как слушать радио «Европа Плюс» с помощью аудиопроигрывателя AIMP3. Сегодня один из читателей моего блога попросил сделать то же самое для «Радио Сибирь».

Для этого нам нужна всего лишь следующая ссылка:
http://stream.radiosibir.ru:8090/HQ

Ссылку достаточно вставить в аудиоплеер, поддерживающий интернет-радиостанции, например, AIMP. О том, как воспользоваться этой ссылкой, под катом.
Читать далее »

Google Chrome 32: контролируемые профили

Недавно состоялся релиз Google Chrome 32.
О программе

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

Слушаем радио «Европа Плюс» в AIMP 3

Сегодня решил включить «Европа Плюс» для фона, пока занимаюсь домашними делами. Включить радио в браузере как-то некошерно, а прямых ссылок на плейлист на сайте, чтобы добавить его в аудиопроигрыватель, так и не нашел… Но он есть! Ссылки на плейлист радиостанции в разном качестве ниже:
32 kbps: http://ep32.streamr.ru
64 kbps: http://ep64.streamr.ru
128 kbps: http://ep128.streamr.ru
256 kbps: http://ep256.streamr.ru

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

UPDATE 29.08.2014: Один из посетителей моего блога, представившийся как Алексей, привел в комментариях к данному посту ссылки на дополнительные шесть каналов «Европа Плюс» в качестве 128 kbps:
POPROCK: http://eprock128.streamr.ru
R&B: http://eprnb128.streamr.ru
Свежее: http://epfresh128.streamr.ru
Топ 40: http://eptop128.streamr.ru
Dance: http://epdance128.streamr.ru

Спасибо за помощь! 🙂
Читать далее »

Ставим обновления на чистый дистрибутив World of Tanks 0.8.3

Недавно я скачал полный дистрибутив клиента World of Tanks версии 0.8.3. Так получилось, что к тому времени, как я добрался до своего основного ПК, патч 0.8.4 уже вышел в релиз. Не обратил на это внимания, забыв сделать бэкап каталога с клиентом версии 0.8.3. Решил установить чистый дистрибутив игры версии 0.8.3, а уж сверху накатить патчи. Каково было мое удивление, когда клиент полез за обновлениями и начал качать четыре с лишним гигабайта, что равно весу полного клиента версии 0.8.4, а не обычного обновления. Вот тут и начинаются извращения 🙂

Итак, для начала возвращаемся к нашему дистрибутиву World of Tanks версии 0.8.3, с которого мы начали устанавливать игру. Предварительно отменим процесс установки и закроем все, что связано с установкой клиента. Помимо исполняемого файла мы имеем каталог «WoT_internet_install_ru», в котором разработчиками бережно сложены patch-файлы. Файл патча ланчера «wot_81.141_launcher.patch» нам не нужен. Не трогаем его. Файлы «wot_83.2100_client.patch», «wot_83.2101_83.2100_client.patch» и «wot_83.229574_content_ru.patch» — это обычные архивы. Распаковываем эти архивы в папку, куда мы начали устанавливать игру. Ланчер запускать не нужно, поскольку он все равно предложит нам скачать четыре гигабайта.

Теперь открываем каталог, в который мы только что распаковали три patch-файла. Блокнотом открываем файл «WOTLauncher.cfg» и находим там следующие строки:
<client_ver>unknown</client_ver>
<content_ver>unknown</content_ver>

Вернемся к patch-файлам, которые мы распаковали. Нам нужны их имена. Мы имеем два файла с именами «wot_83.2100_client.patch», «wot_83.2101_83.2100_client.patch». Второй файл — это обновление, которое, можно так сказать, должно накатываться на первый файл-патч. Из имени второго файла берем часть «83.2101». Теперь смотрим на имя файла «wot_83.229574_content_ru.patch» и берем оттуда часть «83.229574». Нам нужно подставить полученные строки в файл настроек ланчера «WOTLauncher.cfg». Таким образом, строки, которые мы нашли ранее в этом файле, должны после того, как мы подставим туда имеющиеся у нас значения, выглядеть так:
<client_ver>83.2101</client_ver>
<content_ver>83.229574</content_ver>

Запускаем ланчер. Радость! Размер обновлений, закачиваемый ланчером, равен немногим более 800 Мбайт, что равняется размеру вышедшего обновления 0.8.4. Всего у меня сегодня скачалось четыре файла: «wot_83.2216_83.2101_client.patch», «wot_83.2223_83.2216_client.patch», «wot_84.2250_83.2223_client.patch», «wot_84.243034_content_ru.patch», общий объем которых составил 838 Мбайт вместо четырех с лишним Гбайт! После загрузки обновления установились без проблем.

Трафик сэкономлен. Все работает! 🙂

Реклама в uTorrent 3.2

С недавнего времени (с версии 3.2) в торрент-клиенте uTorrent появились рекламные блоки. Работе клиента они никак не мешают, но я привык не видеть ничего лишнего. С рекламой клиент выглядит неэстетично.
Реклама в uTorrent
Итак, как же отключить рекламу в uTorrent?
Читать далее »

Исправление ошибки Firefox: пустой список расширений

Иногда браузер Mozilla Firefox грешит тем, что после обновления версии либо после установки некоторых расширений список расширений в браузере становится пустым. А в редких случаях вообще исчезают списки расширений, тем и дополнений. Решить эту проблему можно. Для этого нужно закрыть браузер и удалить файлы extensions.ini и extensions.sqlite из папки профайла. В Windows Vista/7/8 папка с профайлом обычно находится в каталоге:
C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\
Где %USERNAME% — имя вашего пользователя.

Со следующим запуском браузера Firefox все установленные расширения, темы и плагины будут переиндексированы.

Запуск нескольких версий Firefox одновременно

На данный момент у Mozilla Firefox имеется четыре ветки релизов — release, beta, aurora и nightly. Не буду описывать, чем отличается каждая ветка разработки, ведь информации об этом в сети Интернет достаточно. Иногда, возникает потребность запускать одновременно несколько версий веб-браузера. Например, это нужно веб-разработчикам или бета-тестерам, сравнивающим изменения в новых версиях. Или же разработчикам дополнений для самого же Firefox, чтобы проверить работу своего дополнения в новых версиях. Но появляющееся каждый раз окно проверки совместимости дополнений, а также страница приветствия, могут напрягать. Именно поэтому появляется необходимость изолировать каждую из версий браузера друг от друга. Как это сделать, я и опишу в этой статье. Сразу оговорюсь, что я буду рассматривать только версии для ОС Microsoft Windows.

Итак, перед тем, как мы начнём, нам потребуются:

Читать далее »