линия

Главная

четверг, 27 февраля 2025 г.

Использование ConcurrencyServiceProvider в Laravel: Параллелизм и его преимущества

 В Laravel, начиная с версии 10, появился ConcurrencyServiceProvider, который позволяет управлять параллельным выполнением задач. Это особенно полезно, когда нужно выполнить несколько независимых операций одновременно, чтобы ускорить обработку данных. Ссылка на документацию https://laravel.su/docs/11.x/concurrency



суббота, 8 февраля 2025 г.

Влияние PHP на развитие интернета: как язык с низким порогом входа изменил мир


 Когда мы говорим о развитии интернета, сложно переоценить роль PHP. Этот язык программирования, который многие называют "скриптовым" или даже "простым", стал одним из ключевых факторов, благодаря которому веб-технологии стали доступными для миллионов людей по всему миру.

PHP появился в 1995 году, и его главная особенность — низкий порог входа. Даже новичок, не обладая глубокими знаниями в программировании, мог быстро создать динамический сайт. Это сделало PHP идеальным инструментом для разработчиков, которые хотели быстро запускать проекты, экспериментировать и масштабировать свои идеи.

GO - пример многопоточной обработки

 

Одна из интересных задач на многопоточность в Go — это реализация симуляции работы ресторана, где несколько поваров готовят блюда, а официанты доставляют их клиентам. Задача будет включать использование горутин, каналов и синхронизацию для моделирования реального процесса.

Задача: Симуляция работы ресторана

Описание:

  • В ресторане работает несколько поваров и официантов.

  • Клиенты делают заказы, которые поступают в очередь.

  • Повара берут заказы из очереди и готовят блюда.

  • Официанты забирают готовые блюда и доставляют их клиентам.

  • Необходимо смоделировать этот процесс с использованием многопоточности.

вторник, 20 сентября 2022 г.

Postman + graphQl + загрузка изображений

 


Перевалив за 35, вдруг осознал, что слишком сильно привязываюсь к  привычным технологиям. Для изучения чего то нового мне приходится пройти по нескольким стадиям: гнев, отрицание, принятие. Вот, устроившись на новую работу мне  необходимо было в кратчайшие сроки изучить GraphQL .  Сначала это меня сильно гневило, ибо я слишком привык к обычным роутам, контроллерам. А тут все по-другому. И сначала кажется просто диким ужасом. Потом начал все это отрицать. Все это нафиг не нужно мне - говорил я сам себе но продолжал смотреть видео уроки, ковыряться в коде.  И в конце концов, когда  перевели первый аванс  я принял эту технологию. 

понедельник, 18 июля 2022 г.

Задача на собеседовании или как я провалил его не начав.

 Как то раз, я проходил собеседование в одну довольно интересную компанию. Рекрутер бодро рассказала о планах компании, о продуктах и какая у них замечательная команда разрабатывающая на острие стека передовых технологий. Говорила она много и даже пару раз повторялась и я уже себя представлял частью этой команды. Так и видел себя среди этих крутых ребят обсуждающих GRASP и SOLID .

 Рекрутер закончив рассказ, предложила мне  в режиме онлайн решить пару задач. Я конечно с таким первый раз столкнулся, но не отказался.  Мне нужно было  демонстрировать экран и  приступить к решению задачи.

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

1³ = 1

2³ = 3 + 2

3³ = 7 + 9 + 11

4³ = 13 + 15 + 17 + 19

5³ = 21 + 23 + 25 + 27 + 27

И тд...

Я приступил к решению задачи.  

четверг, 16 июня 2022 г.

Lravel - как я писал тестовое задание (валидация номера телефона)

 Процесс поиска работы утомительна и но в тоже время весьма полезна. Проходишь техническое собеседование, тебя не берут, читаешь теорию, запоминаешь, еще раз проходишь техническое собеседование, тебя не берут и  так по несколько раз. И уже на десятом собеседование ты ловко приводишь примеры для SOLID ,  рассказываешь об отличиях подсистем хранения, философствуешь о индексах насущных.  И тебя берут на работу, но просят выполнить маленькое тесовое задание.  Само тестовое задание для бывалых программистов не интересна, но один момент был тяжелым и посему решил про это написать...

воскресенье, 29 мая 2022 г.

Laravel - история одного запроса

 


Посчастливилось мне поработать над одним интересным проектом на Laravel.  Задачи были сложные но оплата труда была достойной и мне приходилось  решать их. Давненько я не погружался в сложные sql запросы. Работая Битрикс программистом , напрочь  забыл делать что то сложнее left join . 

Задача была рождена в высших эшелонах бизнеса и передана тим-лиду. Тим-лид парень молодой но очень сообразительный быстро это перетрансформировал в понятную программистам язык и поставил задачу и назначил меня исполнителем. 



Допив отвратительный на вкус кофЭ приступил к реализации сие задачи.

пятница, 11 февраля 2022 г.

Laravel - вывод SQL запроса из конструктора запросов

 Часто работая со сложной логикой построения запроса необходимо посмотреть итоговый SQL запрос. Если на проекте есть веб морда, то это можно легко  посмотреть используя DebugBar, но как быть если у приложения есть только api ? Есть несколько решений: например логировать весь sql запрос. В методе boot класса AppServiceProvider  добавить такой код который записывает все сгенерированные запросы в файл.

----

<?
\DB::listen(function ($query) {
			$log = ["query" => $query->sql, "duration" => $query->time];
			Log::channel('mysql_info')->info(json_encode($log, JSON_UNESCAPED_UNICODE));
		});

---

среда, 9 февраля 2022 г.

Тестирование API через POSTMAN

Недавно я писал API для мобильного приложения на Битрикс. Проект был очень интересный  и разработка шла быстрыми темпами. Сроки , как обычно, поджимали, заказчик стоял  над душой и времени ковыряться в носу (образное выражение) не было совсем. И когда эндпоинтов перевалило за 30  заметил что все чаще и чаще отваливались некоторые методы с ошибкой. Бывало сам замечал, а иногда и  сам заказчик писал мне: у тебя метод возвращает  ошибку. Срочно исправьте. Было решено что то сделать с этими ошибками. Благо, у постмана есть функционал тестирования. Как же я был приятно удивлен тем , что процесс написания тестов очень простой. Радости были полные штаны. Итак, сегодня протестируем апи, в ответе ожидаем статус 200 и еще до кучи проверим тип Content-Type.



понедельник, 7 февраля 2022 г.

Laravel - Dusk регрессионное тестирование оформление заказа

 Тестирование приложения неотъемлемая часть  процесса правильной разработки программного продукта. Сегодня расскажу как легко можно  написать тест оформления заказа. Проект, на котором нужно было написать тест, довольной сложный: фронт на Vue , бек на Laravel . 

Юнит тест для оформления заказа можно  было выполнить на уровне контроллеров, но тогда  ошибки возникающие на фронте не отловишь. Поэтому было решено использовать так называемый регрессионное тестирование.

Для этой задачи прекрасно подойдет Laravel Dusk . Устанавливает сие дело очень просто. Переходите по ссылке для установки:  https://laravel.su/docs/8.x/dusk 



четверг, 23 декабря 2021 г.

Bitrix - bitrix:iblock.element.add.form мой способ кастомизации

 Перевалив за 30 все больше  ловлю себя на том что не хочу изобретать велосипед в программировании, стараюсь использовать готовые модули и компоненты. Разумеется, это правильный путь. Экономит кучу времени. В этом посте хочу поделиться как можно ловко изменять шаблон формы добавления или редактирования элемента. Шаблон компонента bitrix:iblock.element.add.form  ,откровенно говоря, ужасен. Адская боль когда нужно менять местами поля, или как то дорабатывать. Решение, как оказалось, простое до безобразия.

среда, 23 декабря 2020 г.

Bitrix - цена в долларах

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

Сначала я  поменял валюту, сохранил скриптом все цены в доллары. Дело подходило к концу, когда увидел что в фильтре цены тоже отображаются в долларах - что , разумеется, логично. Но клиент хотел чтоб было в рублях - что , разумеется, тоже логично.  Плюс ко всему, в карточке товара цены были в трех валютах, и когда открыл шаблон детальной страницы, ахнул. Кто видел шаблоны аспро, тот поймет.  Я понимал, что простая задача становится сложной. Каждая правка приводила к другой правке, что увеличивала стоимость  работы. Нужно было срочно что то решить.  И тут, как гром среди ясного неба, меня осенило. Тысяча чертей - воскликнул я  и немедленно начал писать код.

суббота, 31 октября 2020 г.

Bitrix : добавление данных из XML в Инфоблок


На днях,  дорабатывая очередной проект, столкнулся со странным явлением -  раз в сутки  некоторые свойства инфоблока магическим образом обнулялись. Сначала  решил что менеджер проекта все стер. Но нет,  это не был он, его алиби были железные и мне пришлось искать виновника самому.
Вскоре гаденыш был найден по пути /local/php_interface/cron/update.php . Скрипт запускался раз в сутки и весело обновлял данные. Нынешние доработки требовали дополнительные свойства в инофблоке, которые  решительно очищались в момент запуска скрипта. Опытные битриксоиды знают, что подобный код очищает необъявленные свойства. 

пятница, 4 сентября 2020 г.

Bitrix24 - отправка смс из интерфейса CRM

Наконец то собрался мыслями и взяв волю в кулак решил написать статью. Тебе будет интерсено если ты ищешь ответы на следующие вопросы:
 -Как добавить свое приложение в Битрикс24
 -Как отправлять и принимать смс и сохранить эти данные в Битркс24 

 Передо мной стояла следующая задача: необходимо было реализовать возможность отправить смс клиенту просьбой оценить оказанную услугу. Изначально хотели чтоб оценку можно было ставить ответной смс, но позже передумали; клиент переходит по ссылке и там уже ставит свою оценку. 

среда, 10 июня 2020 г.

Bitrix: как деактивировать элементы которые отсутствуют в выгрузке

Июнь. Я стоял в одних труселях на балконе и с третьего этажа лицезрел течение жизни в нашем дворе. Дядя Толик с утра был пьян и с улыбкой на лице наслаждался утренней свежестью. Тетя Галя в компании таких же крупных женщин как она, оживленно обсуждали  девушку, что прошла мимо них.  На ней (имею ввиду девушку,а не тетю Галю) был короткий сарафан, и ее изумительно красивые ноги и не только , вдохновляли меня на написание кода также как заставляли тетю Галю и Ко обсуждать ее вид. Детвора словно бешеные носились  туда сюда. В общем - лепота.
  Наслаждение происходящим прервало сообщение от заказчика. Как обычно, что то сломалось и наотрез отказывалось работать. Конечно, всю работу описывать не будут, а напишу только скрипт, который получает данные в формате xml,  и потом деактивирует те элементы что отсутствуют в битриксе.

среда, 27 ноября 2019 г.

Как открыть индивидуальный инвестиционный счет


Работа программиста не только сложна но и прибыльна. Когда ты становишься отличным специалистом происходит не только раздутие твоего эго  но и кошелька тоже.  Как известно, программисты народ практичный и честно заработанные деньги я не спешил тратить смеясь над законом Паркинсона. Они (деньги) весело лежали на депозитах банков и приносили мне 6 - 7 процентов годовых. 

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

На следующий день  еще узнал про индивидуальный инвестиционный счет ( ИИС ).  Тогда, помню откинулся я на спинку кресла, закинул ногу на ногу и задумчиво глядя в потолок погрузился в мечты.  Оказывается с помощью ИИС можно вернуть 13% от совего дохода  если ты работаешь на дядю, или же если ты ИП можешь быть освобожден от налога на прибыль от инвестиции. Я  ИП, а вот жена работала в гос. учреждении...

понедельник, 22 апреля 2019 г.

Bitrix - как установить метку ХИТ для самых продаваемых товаров

Сие пост  на самом деле не несет особой пользы для джедаев и написан, скорее всего, ради наполненности, но доля пользы  для новичков есть.  Часто нужно автоматизировать некие процессы на сайте. Одним их таких процессов был установка метки для самых продаваемых товаров.  Заказчик был крайне обескровлен муторной задачей, прописывая для товаров метку ХИТ. И вспомнив что у него есть старый товарищ программист , обратился ко мне. "Добавь задачу в Трелло" - пробубнил я в привычной мне манере. И как только появились свободные минуты бросился как камикадзе на задачу и  быстро разорвал его как Тузик грелку.




суббота, 12 января 2019 г.

Cordova - как выводить лог информацию

В один прекрасный день, перестали загружаться плагины в NetBeans. Это конечно фигня, можно то через командную строку загрузить. Но у судьбы были свои взгляды на мою беззаботную жизнь. Ранее всю лог информацию я просматривал в самом NetBeance , и это черт возьми,  скажу я вам  было здорово. А теперь на тебе, друг любезный - хер моржовый. Но мы то уже старые вояки, и по сути такие ошибки хотя и раздражают слега , все равно решить можем.
Откинулся на стуле. Потом повертел шеей туда сюда, подвигал плечи и вытянулся красиво хрустя костями позвоночника и далее накидал код.


1
2
3
4
5
function log(obj) {
    var str = JSON.stringify(obj);
    $('#log').append('<br>' + str)

}


понедельник, 17 декабря 2018 г.

Bitrix - история одного взлома или микроинфаркт перед новым годом

В мире есть зло. И ты сталкиваешься со злом каждый день. Это может быть сосед со второго этажа который тихоря курит в подьезде отравляя не только себя и  остальных. Это может быть злой алкаш посылающий нахрен прохожих. Зло можно увидеть в похотливом лице  толстого сотрудника ДПС. Зло смотрит тебе из телевизора, в ленте инстаграмма, зло везде и повсюду. Но! но есть место и для добра. И добро повсеместно. Жизнь это Инь-Янь. Белое и чероное. Добро и зло. Есть у меня один клиент. Хороший человек. Запустил бизнес. Создал сайт. Дал рекламу. Слава богу бизнес преодолел долину смерти и взлетел. Но через год  конкуренты захотели обогнать моего клиента в поиске яндекса и гугл. И призвали темные силы для решения сие злодейства.

пятница, 14 декабря 2018 г.

Как похудеть правильно питаясь

Это история о том как я однажды решил похудеть. А все началось в бане на даче одного родственника. У них в предбаннике весит большое зеркало. И вот, после помывки стою и созерцаю себя голого. "О боже, как же я красив" - подумалось мне тогда. Густые усы, широкий лоб, глубоко посаженные глаза. Но, конечно я не Джонни Деп и совсем не Бред Пит, но долей красоты все таки обладаю. Но  что тогда мне не понравился так это мой живот. Он висел. И смотрелся если честно, отвратительно. И решился на похудение. Пару раз попробовал разные диеты но срывался через пару дней. Уж сильно хотелось жрать. А отказаться от шаурмы - так это практически равносильно смерти для меня. И как то случайно наткнулся на статью про правильное питание.  Оказывается, можно кушать  и  терять вес. Связался по указанному номеру на сайте. Узнал стоимость. Сначала отказался, а потом еврейская сущность прошептала мне - можно же бартер, я им, приложение  а они бесплатно приведут меня в стройный вид.