Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


среда, 18 ноября 2020 г.

MySQL: group_concat - ограничение и как его преодолеть

 В небезызвестной OCS-NG Inventory, по крайней мере до версии 2.1.2 включительно, есть таблица AccountInfo, в которой хранятся различные дополнительные параметры оборудования, которые можно менять в разделе Administrative Data

Но есть у нее недостаток: MySQL не поддерживает косвенную адресацию (обратиться в полю по имени, которое находится в переменной или является результатом выражения), а поля в этой таблице имеют вид FIELDS_NNN, где NNN - номер поля, поэтому для обращения, скажем, к полю "Владелец компа" надо делать лишний селект, чтобы узнать, в каком из FIELDS-ов этот владелец хранится. И не просто селект, а еще и при каждом обращении к этому полю, чтобы при изменении его номера не пришлось перелопачивать весь скрипт.

среда, 29 апреля 2020 г.

Word и перенос заголовка таблицы

Есть у меня хитрый документ .docx с длинной таблицей. Для первой строки задано "показывать как заголовок на каждой странице".
Открываю документ в OOo/LOo - всё нормально. Открываю в MSO 2016 - на первой странице заголовок есть, на остальных - нету. Флажок "повторять" на месте, но не повторяется.
В общем, надо снять галку "обтекание таблицы". Почему этого не требуется в свободных офисах - без понятия.

https://forum.dwg.ru/showthread.php?t=127389

понедельник, 16 марта 2020 г.

Bash: разница в днях между двумя датами

В баше есть встроенная арифметика, которая во многих случаях может заменить простой целочисленный калькулятор. Понадобилось высчитать разницу между двумя датами, решается вот так (хотя способ не единственный):

echo $(( ( $(date +%s -d 4/13/2020 ) - $(date +%s -d 3/23/2020 ) )/86400 ))

Функция вычислений $(( выражение ))
Вывод команды $( команда )
Арифметическое операторы и скобки (-/)
Перевести дату, заданную параметром -d в формат UNIX-date (число секунд с начала эры) +%s
Начальная дата в формате mm/dd/yyyy 4/13/2020
Конечная дата в формате mm/dd/yyyy 3/23/2020
Разницу между датами делим на число секунд в сутках 86400

Есть и другие способы такой арифметики, но именно этот первым пришел в голову. Данная команда выдает результат "21", то есть, между 13 апреля 2020 года и 23 марта 2020 года 21 день

По арифметике с временами у меня есть более ранний пост.

пятница, 14 февраля 2020 г.

Этикетки в OpenOffice - без слияния

Или: учимся работать с косвенной адресацией ячеек в электронных таблицах. Основная цель этого поста - показать возможности функции indirect(), ну а выбранный пример - это последний, где я ее применил

В большинстве офисных пакетов предусмотрена такая штука как "рассылка писем", "стандартные письма", "печать слиянием" и т.п. Имеется в виду, что существует некий табличный список, например:

SysName IT# AssetTag Ordinal
cnt300901 18006 JR0046780 1
cnt300911 18007 JR0046781 2
cnt300921 18008 JR0046782 3
cnt300931 18009 JR0046783 4
cnt300941 18010 JR0046784 5
cnt300951 18011 JR0046785 6
cnt300961 18012 JR0046786 7
cnt300971 18013 JR0046787 8
cnt300981 18014 JR0046788 9
cnt300991 18015 JR0046789 10

Где SysName - сетевое имя компа, IT# - внутренний номер для службы ИТ, AssetTag - инвентарный номер, Ordinal - порядковый номер.
(последнее поле по логике должно быть крайним слева, но я в реальном документе добавил его в последний момент, и чтобы не сломать форматирование, добавил справа. впрочем, на теоретические основы этого поста сей факт не влияет)