SuluCMS v2.5 add Source Editing feature to CKEditor

SuluCMS v2.5 uses CKEditor v.5 where Source editing is plugin. 

So, we need to:

  1. Connect Source editing plugin
  2. Customize CKEditor by adding additional plugin to CKEditor registry.

Sulu add Soure editing support to CKEditor

PHP выполнить shell команду синхронно с timeout

Задача которую решаем — возможность из-под PHP-кода выполнить произвольную shell-команду (как через shell_exec) с возможностью задать timeout на команду.

Для чего задавать timeout для shell команды?

Timeout нужен в случае, если shell_exec на выполнении команды просто подвисает. Мы не можем никаким образом обернуть функцию shell_exec чтобы прервать его через заданное время и выбросить исключение.

PHP Shell exec if no timeout applied

Вычитание unsigned INT в javascript

Хотел написать код на javascript, выполняющий то же самое что уже написанный на C++ код. Столкнулся с очень многими нюансами, один из которых это разница в вычитании UNSIGNED INT типов.

Например, в С/С++ подобных языках в случае если переменные INT объявлены unsigned.

1 - 115 = 4294967182

std::cout << "1-115: " + std::to_string((unsigned int)1-(unsigned int)115) + "\n"; //выведет: 4294967182

При попытке повторить то же самое на javascript. На javascript результатом вычитания будет:

1-115

-114 или же 114 если взять abs.

С использованием bigInt библиотеки (или без нее) будет 114 (ну или минус 114 если взять abs).

Собственно, моя цель при вычитании получать в JavaScript точно такое же значение как получаю в C++ : 4294967182.

Переполнение unsigned INT C++ пример на аналоговых часах

 

Что нового в PHP 8.1

Golang: Прочитать буфер ioutil.ReadAll from io.ReadWriter без потери контента

Давайте вычитаем контент используя golang функцию ioutil.ReadAll из io.ReadWriter таким образом, чтобы контент остался в буфере.

Golang readAll из ioutil вычитать контент без потери контента

Давайте предположим, что мы создаем буфер таким образом:

out := new(bytes.Buffer)

Doctrine ODM fetch documents with empty object (field type hash with no values)

Пускай у меня будет такая структура json.

Использую Doctrine и ODM. Нужно получить все записи из mongoDb где поле с типом hash является пустым объектом, то есть не имеет ни одного значения.

message related to SharedArrayBuffers from Google Search Console

В марта 2021 вы могли получить email от Google Search Console с темой "New requirements for SharedArrayBuffers" (Новые требования для SharedArrayBuffers).

Сообщение выглядело примерно так:

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

Почему вы получили это сообщение о SharedArrayBuffer?

Это сообщение вы получили потому что Google обнаружил на вашем сайте Javascript-код, который использует SharedArrayBuffer в тот момент, когда вы получили это предупреждение. Использование SharedArrayBuffer может быть не явно в вашем коде, а может быть из-за использования сторонних фреймворков, библиотек или других 3rd-party компонентов, используемых на сайте.

 

 

PHP 8 — что нового в 8-ой версии php

PHP 8.0 что нового

Новые нативные функции:

str_contains — для проверки есть ли подстрока в строке.

str_contains(string $haystack, string $needle): bool

Сказать git какой из ssh-ключей использовать

В случае если в папке ~/.ssh лежит более одной пары ключей, может понадобиться использовать тот или другой ключ в зависимости от того, к какому ресурсу мы хотим конектиться.

Codeship - беслатный CI-сервер для приватного репозитория (Symfony 5 functional tests)

Начал использовать codeship как CI для symfony5 приватного репозитория на github.

Впечатления положительные. Можно настроить CI через codeship веб-интерфейс, не добавляя не единого нового файла в проект.

Итак, для codeshipCI + private repo нам нужно следующее.

НОВЫЕ ПОЛЬЗОВАТЕЛИ