Давеча обратился ко мне пользователь екселя, я же программист должен разобраться.
Пользователь задала фильтр в одном из столбцов с датами, формат всех ячеек в столбце — дата, но вот большая часть дат в фильтре группируются по годам и месяцам, но не все, есть исключения.
Этот файл «ходил по рукам» как и в какой момент такое получается не знаю, в скринах-солюшенах воспроизвел копируя данные из тех самых файлов.
Решение такое, копируем пустую ячейку в буфер обмена, выделяем диапазон с ячейками дат и делаем специальную вставку, только значения со сложением, и вуаля, фильтр сгруппировался.
Рубрика: Разное
Век живи, век учись, вариант выделения дробной части
Задача, положить дробное число раздельно в два столбца, воспользуемся оператором взятия остатка от деления %, это Лёха подсказал
drop table #test17; create table #test17(c1 int, c2 decimal(10,10) /*отдадим все 10 знаков на хранение дробной части*/); insert into #test17 select c,c from (select 12.34567 c) tt; -- для MSSQL Arithmetic overflow error converting numeric to data type numeric. -- The statement has been terminated. -- или в MySQL Data truncation: Out of range value for column 'c2' at row 1 insert into #test17 select c,c%1 from (select 12.34567 c) tt; select * from #test17; c1 c2 12 0.3456700000для Оракла функция mod(c, d)
Update XML stored in a XML column in SQL Server
Изменяем XML в столбце с типом XML, в нашем случае изменяем атрибут и усложнение уровня с сохраненной XML содержится описание схемы, так что мы должны указать пространство имен, иначе получим сообщение что обновили одну строку, но реального обновления данных не будет.
update [MetrologDev].[dbo].[m_PWStatus] set xmlData.modify('replace value of (/rows/row[@id=("2686")]/@selectedCnt)[1] with "0"') output inserted.xmlData where deleted is null and pfId=12 and statusId=2 update [MetrologDev].[dbo].[m_PWStatus] set xmlData.modify('declare namespace ttt="urn:metrolog.mneti.ru"; replace value of (/rows/ttt:row[@id=("2686")]/@selectedCnt)[1] with "0"') where deleted is null and pfId=12 and statusId=2
Nginx ротация access.log
server { ... if ($time_iso8601 ~ "^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})") { access_log /var/log/www/https.$year-$month.access.log main_format; } ... }
mneti, результат транслитерации — мнети
Значение слова мнети — полагать, мнить, считать возможным, встречается в древнерусских рукописях, о православно-христианских вероучениях, богослужениях.
Default Admin Passwords for Zmodo DVR
Учетка по умолчанию на Zmodo DVR, в зависимости от модели, варианты, Admin или admin, пароль 111111, 888888, 666666 или пусто.
В моем случае Admin 111111
Skipping recall function from a script php
Пропуск повторного вызова функции из скрипта php.
session_id('cron'); //используем именованную сессию, имя файла сессии sess_cron session_start(); if ($this->session->has(__METHOD__)) { $attemptCount = intval($this->session->get('attemptCount-' . __METHOD__)); $this->session->set('attemptCount-' . __METHOD__, ++$attemptCount); printf("Run at: %s\r\n", date('c', intval($this->session->get(__METHOD__)))); return; } else { $this->session->set(__METHOD__, $_SERVER["REQUEST_TIME_FLOAT"]); $this->session->set('attemptCount-' . __METHOD__, 1); session_write_close(); // закроем сессию, снимем с нее блокировку иначе следующие скрипты не смогут ничего прочитать и будут ждать в очереди, а нам нужен другой эффект } sleep(300); //тут что-то делаем //снимаем блокировку session_id('cron'); session_start(); $this->session->remove(__METHOD__);
если хотим аналог мьютекса, то достаточно только session_id(‘cron’) и все, все скрипты в очереди на ожидание ресурса — файла сессии
Set environment variables for php script
Пример передачи переменной окружения в скрипт php запускаемый из крона, пример для Debiana
root@metrolog:~# uname -a
Linux metrolog 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
root@metrolog:~# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use ‘*’ in these fields (for ‘any’).#
# Notice that tasks will be started based on the cron’s system
# daemon’s notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
*/5 * * * * /usr/bin/php /var/www/issues/cli/tools/cron.php
*/1 * * * * export APPLICATION_ENV=production && /usr/bin/php /var/www_dev2/app/cli.php cron test
php анонимная функция с возможностью немедленного выполнения
Аналог анонимной функции JavaScript с немедленным исполнением
модель рабочего примера, найти первое вхождение, частичное или полное
в действии
(function () { /* do something */ })()
модель рабочего примера, найти первое вхождение, частичное или полное
#php 5.3
$ttttar212 = ['asf',['asd','qwer2'],'qwe'];
$inttttar = 0;
call_user_func(function($cont_act, $ttttar212) use (&$inttttar) {
foreach ($ttttar212 as $v) {
if ($cont_act[0] === $v || $cont_act === $v) {
$inttttar++;
break;
}
}
}, ['qwe','qwer'], $ttttar212);
в действии
// если совпадает с внутренними (с виртуальными) то тоже подсветим
if ($data->active == 0 && isset($data->virtual) && is_array($data->virtual)) {
call_user_func(function($cont_act, $ttttar) use (&$data) {
foreach ($ttttar as $v) {
if ($cont_act[0] === $v || $cont_act === $v) {
$data->active++;
break;
}
}
}, [$controllerName, $actionName], $data->virtual);
// $data->active += (int)in_array($controllerName, $data->virtual);
// $data->active += (int)in_array([$controllerName,$actionName], $data->virtual);
}
jQuery Ajax и FormData objects
Если получили ошибку:
или:
jquery.min.js:4 Uncaught TypeError: Illegal invocation
или:
PHP Warning: Missing boundary in multipart/form-data POST data in Unknown on line 0
проставим значения параметров для аякса:
processData: false,
contentType: false,