Сообщения

Как собрать AWS Lambda Layer с библиотекой Zeep

Изображение
Python библиотека Zeep - предназначена для работы с SOAP - сервисами. Эта библиотека написана на чистом Python, но одна из ее зависимостей lxml содержит код на C, так как использует libxml2 и libxslt. Из-за этого библиотеку Zeep невозможно залить в Lambda Layer без танцев с бубном. В одном из моих Serverless проектов мне нужно было использовать эту библиотеку, и я нашла такой способ засунуть ее в Layer:

AWS Lambda и API Gateway для обработки вебхуков

Изображение
Многие мои клиенты выбрали в качестве CRM-системы и системы управления проектами Битрикс24 в облаке. Основное преимущество облака перед коробой состоит в том, что клиенту не нужно думать о настройке сервера, его мощностях, безопасности, амортизации железа, нанимать отдельно администратора сервера. Однако это преимущество частично теряется, когда возникает необходимость расширить функционал Битрикс24 за счет кастомных приложений. Да, приложения под Битрикс24 может хостить партнер, принимая на себя эту головную боль. Но для работы простых нетиражных приложений, тех, для которых обычно используют вебхуки Битрикс24, вообще не нужен сервер. Достаточно беcсерверного (Serverless) сервиса Lambda от AWS (Amazon Web Services)  https://aws.amazon.com/ru/lambda/  и Amazon API Gateway  https://aws.amazon.com/ru/api-gateway/ . Об их применении  для расширения функционала Битрикс24 и пойдет речь в данном посте.

Как настроить mbstring на хостинге Русоникс

Изображение
Как известно, на хостинге Русоникс можно организовать отдельное web-пространство для каждого размещенного интернет-сайта. И, соответственно, если сайты работают в разных кодировках, для каждого сайта можно задать свои параметры mbstring. Для этого в панели управления хостингом заходим  в "Сайты и домены", разворачиваем параметры нужного сайта кнопочкой "Развернуть". Затем выбираем "Настройки php" и вписываем нужные директивы в поле "Дополнительные директивы" Нажимаем "ОК". Изменения вступают в силу даже без перезапуска сервера. Вообще администрировать сервера на хостинге Русоникс очень легко. Для этого не нужно знать ssh команды и разбираться в unix. Не даром у них тарифы называются "Сервер без забот..." А тем, кто регистрирует хостинг по моей реферальной ссылке , я всегда готова оказать помощь.

Себе на память - редактирование пользовательского свойства заказа в событии перед изменением заказа (Битрикс)

Запишу, чтобы не забыть, потому что долго искала: Стояла задача сохранить в отдельное пользовательское свойство заказа идентификатор того пользователя (принадлежащего группам 1 или 6), который самым первым отредактировал данный заказ (кто первый взял заказ в работу - тот до конца его и ведет). public static function OnBeforeOrderUpdateHandler($ID, $arFields) { global $USER; $arGroups = $USER->GetUserGroupArray(); if (in_array(6,$arGroups) || in_array(1,$arGroups)){ $db_vals = CSaleOrderPropsValue::GetList(array("SORT" => "ASC"), array("ORDER_ID" => $ID, "CODE"=>"F_MENEDGER"));   $order_props=array(); if ($arVals = $db_vals->Fetch()){ $order_props=$arVals; }  if (!$order_props['VALUE']) { if ($arProp = CSaleOrderProps::GetByID(10)) { CSaleOrderPropsValue::Add(array( 'ORDER_ID' => $ID, 'ORDER_PROPS_ID' => $arProp['ID...

О лишних запросах

Совершенство достигается не тогда, когда уже нечего прибавить, но когда уже ничего нельзя отнять Антуан де Сент-Экзюпери Оптимизация процесса интеграции 1С Предприятия и 1С Битрикс – это неисчерпаемая тема.  Чего только не увидишь порой в обработчиках событий добавления и обновления элемента инфоблока. Больше всего меня убивает, когда я вижу, что разработчики тянут из базы то, что у них и так уже есть. Пример из жизни (нет, серьезно – это реальный пример): AddEventHandler("iblock", "OnAfterIBlockElementAdd", "BXMUpdateElement_FIELDS"); function BXMUpdateElement_FIELDS(&$arFields) {          $ibe = new CIBlockElement();          $dbr = $ibe->GetList(array(), array('ID'=>$arFields['ID']) );     while($oe = $dbr->GetNextElement())     {         $arP = $oe->GetProperty('CML2_TRAITS');        ...

Git обновить текущую ветку из master

Если разработка велась в ветке, и за время этой разработки ветка master сильно изменилась, лучше не вливать ветку сразу в мастер, а сначала влить мастер в ветку – чтобы предварительно протестировать. Для этого нужно переключиться на ту ветку, в которую мы будем вливать мастер, а затем выполнить команду git pull origin master Cкорее всего, после этого возникнут конфликты – гит скажет об этом. Чтобы просмотреть все файлы, в которых произошли конфликты, нужно выполнить команду git status После разрешения конфликтов, нужно сделать коммит, а потом снова выполнить git pull origin master Таким же образом можно периодически вливать в ветку новые изменения из мастера, если нужно, чтобы ветка не сильно «отошла» от основной версии проекта.

Динамическое добавление полей формы на JQuery

<div id="div_inputs"> </div> <script>    var col_inputs=1;                                                   function AddInput(){    $('<label>Метка:</label><input id="inp'+col_inputs+'" type="text" name="name['+col_inputs+']" value="" /><br>').appendTo("#div_inputs");    col_inputs++;    return true;    } </script>   <input type="button" value="Добавить" onclick="AddInput()">