После одного из обновлений Windows (10 & 11) наблюдается ошибка при попытке подключиться к VPN соединению. 
Текст ошибки: 

“Попытка L2TP-подключения не удалась из-за ошибки, произошедшей на уровне безопасности во время согласований с удаленным компьютером” 
(англ.: “The L2TP connection attempt failed because the security layer encountered a processing error during initial negotiations with the remote computer”)

Решение проблемы: 

Необходимо удалить update под номером KB5009543 (Windows 10) или KB5009566 (Windows 11).

...

Была задача - с помощью скрипта проставлять выделенными все checkbox на странице и с помощью скрипта по нажатию на другую кнопку убирать такие галочки. 

Это было запрограммировано с помощью: 

jQuery('.selector').attr('checked', true);   

и

jQuery('.selector').attr('checked', false);

 

Оказалось, что скрипт нормально проставляет и убирает галочки, но если вдруг пользователь до этого вручную поставил какую-либо галочку самостоятельно, то такая галочка убрана не будет.

А все потому, что вместо вышеприведенного кода лучше использовать prop  вместо attr:     

jQuery('.selector').prop('checked', true);
jQuery('.selector').prop('checked', false);

 

Если вызывать в rector.php PHPEXCEL_TO_PHPSPREADSHEET по-старому:

$containerConfigurator->import(SetList::PHPEXCEL_TO_PHPSPREADSHEET);

 То вам скрипт выдаст ошибку:

$  [ERROR] Undefined class constant 'PHPEXCEL_TO_PHPSPREADSHEET'

 

 Потому что такой константы там больше нет.

Решение проблемы простое, вместо “$containerConfigurator->import(SetList::PHPEXCEL_TO_PHPSPREADSHEET);” нужно написать так:

 $containerConfigurator->import(PHPOfficeSetList::PHPEXCEL_TO_PHPSPREADSHEET);

(не забудьте подключить PHPOfficeSetList в начале документа):

use Rector\PHPOffice\Set\PHPOfficeSetList;

Иногда при создании таблицы можно забыть добавить  AUTO_INCREMENT. 

Чтобы не удалять таблицу и не создавать ее заново, поможет такой запрос:

ALTER TABLE `table_name` DROP PRIMARY KEY,
MODIFY COLUMN `id` INT UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT FIRST

где:

  • table_name - название таблицы
  • DROP PRIMARY KEY - удаляем предыдущий ключ
  • MODIFY COLUMN `id` - редактируем колонку, к которой надо добавить инкремент. Если такой колонки нет, то пишем вместо этого ADD COLUMN `id`
  • FIRST - указывает, что колонку нужно разместить в самом начале

Открываем Командую строку (cmd.exe) от имени Администратора и выполняем следующие команды.

Переходим в директорию установленной программы в Program Files:

cd C:\\Program Files\\Oracle\\VirtualBox

Выводим список виртуальных систем с помощью команды:

VBoxManage.exe list vms

Выбрав точное название виртуальной системы, подключаем вложенную виртуализацию:

VBoxManage.exe modifyvm \"название виртуальной системы\" --nested-hw-virt on

Допустим есть 2 таблицы - table1 и table2.

Поля таблиц:

table1:  id, inner_code, code_id

table2: id, code

Необходимо: в таблице table1 проставить значения для всех code_id, при этом беря значения из table2.id, где совпадает table1.inner_doe = table2.id

Это легко можно сделать с помощью данного SQL:

update table1 t1
inner join table2 t2 on t2.code = t1.inner_code
set t1.code_id = t2.id;

Чтобы с помощью Google сделать поиск только в рамках одного сайта, в поисковую строку необходимо ввести ваш запрос и адрес сайта с префиксом site:, к примеру:

Как отправить сообщение в чат site:podelitsa.ru  

Для Яндекса этот синтаксис тоже работает. 

Как можно увидеть из описания, данная ошибка возникает, когда файла package.json  нет в корне вашего проекта.

Самый простой способ это устранить, это выполнить в консоли команду: 

npm init -y

Это создаст в корне вашего проекта файл package.json, который потом можно будет отредактировать, чтобы там была необходимая информация. 

Допустим, вы хотите заняться разработкой с использованием vue.js. Действуете по инструкции и запускаете команду:  

npm run serve

 

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

Ошибки npm missing server или npm missing dev  происходят, когда в корне проекта в файле package.json в разделе "scripts": { … } нет описания “server ” или “dev”.

То есть npm не знает, что именно надо запустить.

...

В Laravel (monolog) можно столкнуться с такой ошибкой: 

stream_set_chunk_size(): The chunk size cannot be larger than 2147483647

Есть 2 варианта, как от нее можно избавиться, какой-либо из вариантов должен сработать:

...

Чтобы заменить точку на запятую или запятую на точку, в javaScript достаточно несколько строк кода. 

Пример замены запятой на точку: 

var text =  "123,55";
var converted = text.replace(/\,/g, '.');
//результат 123.55

Пример замены точки на запятую: 

var text =  "123.55";
var converted = text.replace(/\./g, ',');
//результат 123,55

Есть простой способ, чтобы добавить к элементам autocomplete title. Это может пригодится, если вы к примеру в самом списке показываете сокращенные названия предметов, а при наведении мыши хотите чтобы было показано развернутое описание. 

Как сделать autocomplete описано в этой статье:


Сейчас мы рассмотрим только то, как добавить title к результатам выдачи из предыдущего примера.

...

Разберемся, как добавить в форму autocomplete с загрузкой данных с помощью ajax.

Для начала добавьте на страницу jQuery & jQuery ui

Допустим, у вас есть input с классом autocomplete-field, к которому как раз хотите добавить автозаполнение:

<input type="text" class="autocomplete-field" name="test" value="" />
...

Иногда необходимо передать файл с помощь curl, но при этом изменить его название. 

Это можно сделать, используя функцию setPostFilename для отправляемого CURLFile:

$filePath = 'путь до файла';
$cFile = new CURLFile($filePath);
$cFile->setPostFilename('new_name.doc');

Чтобы получить расширение файла в PHP не нужно выдумывать никакую обработку его названия / пути. Достаточно применить встроенную функцию pathinfo:

 $filePath = 'путь_до_файла/document.doc'
$info = pathinfo($filePath, PATHINFO_EXTENSION);
var_dump($info); // doc

Бывает ситуация, когда к примеру событие click (или любое другое) не срабатывает.

Чаще всего это происходит потому что элемент, к которому это событие привязано, создался динамически (его не было на момент загрузки страницы, а потом элемент добавили с помощью скриптов).

Рассмотрим на примере нажатия click. Стандартно это событие в jQuery можно записать так:

$(".myElement").click(function(e){
//что-то делаем
});

Обычно этого достаточно и код будет работать для всех  .myElement, которые были сформированы при создании страницы. Но если добавить новый элемент с классом .myElement, то на него это не распространится. Выход - записать это событие немного иначе, с корневым элементом, который точно будет присутствовать на странице. Мы возьмем для этих целей тег body (но подойдет и любой другой, который не будет создаваться динамически и который в себе будет содержать новый .myElement:

$('body').on('click','.myElement', function(e){
//что-то делаем
});

Этот код сработает для всех элементов на странице. 

Чтобы  сортировку по дате в DataTable, есть одно простое решение.

Допустим, у вас есть таблица, где колонка с датой записана в таком виде:

<td>15.09.2021, 16:02:26</td>

 По умолчанию DataTable такие колонки будет сортировать с ошибками (как строки). И даже если задать колонке формат даты, все равно содержимое и фильтр будет зависеть от того, в каком формате у вас записана дата. 

Проще всего перед вашей датой добавить скрытый span с той же датой, но в формате timestamp:  

<td><span style="display: none;">1631624546</span>14.09.2021, 16:02:26</td>

В таком случае колонка будет автоматически сортироваться сначала по этому скрытому полю, никакого js дополнительно использовать не надо (тег style применен для наглядности, лучше применить к span class,  у которого в css будет прописан соответствующий стиль видимости).