• Craftable — Laravel CRUD generator

    Всем привет.

    Расскажу о CRUD генераторе для Laravel. Для студенческой работы мне надо было сделать много CRUD формочек, последний раз когда у меня была такая задача (в 2017), я использовал Yii2 и Gii.

    В этот раз я решил сделать решение на базе Laravel, но своего встроенного генератора для GUI в Ларавель не завезли, пришлось искать «стороннее» решение.

    Гугл выдал четыре варианта, первым шёл CRUDBooster, с ним я бился пару часов, ни чего не получилось, код генериться, GUI нет.

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

    Ниже я расскажу о работе с Craftable и покажу пару скриншотов GUI.
    Читать дальше →
  • Bitrix. Аудит своими руками

    Всем привет.

    Когда я искал информацию о журналировании (аудите событий) в Bitrix, на Хабре не было ни чего, в остальном рунете кое что было, но кто же там найдёт?

    Для пополнения базы знаний я решил написать эту статью: поделиться своим опытом и предупредить о возможных граблях.

    Постановка задачи


    Моей задачей было разработать простейшую учётную систему рекламных конструкций, по условиям гос контракта система должна работать на базе Битрикса (версия 15).

    Можно было всё навелосипедить сбоку от Битрикса, но я решил что это будет слишком нечестно по отношению к заказчику, функционал Битрикса был использован по максимуму:

    • аутентификация пользователей
    • система хранения данных (EAV)
    • редактор данных
    • обработчики событий аудита
    • ролевая модель для авторизации действий пользователей
    • управление пользователями
    • работа со справочниками

    Эта статья в основном о событиях аудита, также немного расскажу об авторизации и добавлении пользовательских закладок к карточке записи инфоблока.
    Читать дальше →
  • Уйти от jQuery к Svelte, как это было

    Всем привет.

    Это отчёт в продолжение статьи "Уйти от jQuery к Svelte, без боли".

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

    Введение


    Я планировал переписывать фронтэнд по кусочкам, это не то что бы совсем не получилось, получилось не совсем — переписывать пришлось большими кусками.

    Во первых потому что подход jQuery — императивный, подход Svelte — декларативный.

    Во вторых потому, что с использованием jQuery у нас область видимости всегда глобальная, из любой строчки кода нам доступны все элементы веб-страницы, мы к ним обращаемся по ID или CSS селектору, в то время как Svelte рекомендует использование компонентов и внутри компонента мы видим только сам компонент, ни внешних элементов ни внутренних у нас нет, и мы не имеем возможности обратиться к ним напрямую.

    Со Svelte получается настоящее ООП: мы не можем внести изменения сами, мы можем только сообщить компоненту о необходимости изменений. Как эти изменения будут сделаны, знает только код внутри компонента.

    И это прекрасно :)
    Читать дальше →
  • Уйти от jQuery к Svelte, без боли

    Всем привет.

    Я бэкэнд разработчик и фронтэнд задачи решаю как умею, то есть на jQuery, это работало в 2015, работает и сейчас. Но при наличии Vue и React это уже не камильфо. Из любви к особому пути я решил осваивать не проверенный миллионами разработчиков Angular/React/Vue, я решил попробовать Svelte.

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

    По заданию надо было сделать просмотр списка задач и одной задачи из этого списка, CRUD не нужен.

    Клиентская часть выполнена как SPA, и вся работа с DOM ведётся через jQuery, для замены jQuery на Svelte это отличный кандидат.

    Ниже я расскажу о самых первых препятствиях на этом пути и конечно о том как их преодолеть.
    Учебник по Svelte очень доступный и наглядный, но как внедрить Svelte в произвольный проект не очень понятно, ведь Svelte это не библиотека как jQuery, это компилятор, то есть код написанный с использованием директив Svelte надо каким то образом откомпилировать в нативный JS.

    Другим камнем преткновения было использование

    $

    в Svelte это зарезервированный символ, поэтому его использование в коде который будет скомпилирован Svelte приводит к ошибке:

    
    [!] (plugin svelte) ValidationError: $ is an illegal variable name
    
    Читать дальше →
  • Типобезопасная работа с массивами PHP

    Всем привет, расскажу о собственном велосипеде для удобной работы с массивами в PHP.

    Type hinting


    В PHP7 появились подсказки типов (type hinting), что позволило IDE проводить более качественный статический анализ кода, качество нашего кода улучшилось (или правильно говорит "стало более лучше"? ).

    Конечно и раньше можно было для IDE написать подсказку в коментах к коду, но теперь типы стали частью кода и теперь их стало возможным рефакторить и не бояться того что ты что то где то забудешь (рефакторить конечно в смысле переименовывать классы и интерфейсы).

    Кроме того, что стало возможным указывать выходной тип, появилась возможность указывать тип входного аргумента.

    Но кроме приятных возможностей type hinting накладывает и обязанности, то есть типы переменных действительно должны быть такими как указано в сигнатуре метода.

    Если не проверять типы, то можно получить ошибки в методах и конструкторах (особенно радуют ошибки в конструкторах).

    Писать проверки вручную утомительно, я решил это дело автоматизировать, но не через проверку, а через приведение к нужному типу.
    Читать дальше →
  • Изменения авторизации в репозиториях на GitLab.com

    Сегодня пытался залогиниться из SourceTree в gitlab, получилось не сразу.

    Дисклеймер


    Не помню, чтобы этот момент раньше разжёвывали на Хабре.

    Новые токены


    Оказывается, теперь только один вариант аутентификации — это на странице создать токен и использовать его вместо пароля.
    Читать дальше →
  • Как из двух строчек кода сделать 200, и почему так делать надо

    Всем привет.


    Я (мы как фирма) допиливаем платформу от поставщика, платформа это плагин для WordPress. С фронтендом, JS, HTML я знаком лишь постольку поскольку, поэтому приведённые решения могут оказаться не грамотными, но суть статьи не в этом.


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


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

    Читать дальше →
  • Идеальный каталог, оптимизация выборки данных

    Введение


    На очередном собеседовании меня спросили о недостатках модели данных EAV (Entity Attribute Value), я не нашёл что сказать, на мой взгляд это идеальный способ хранения произвольных данных. После короткого раздумья, я сказал что единственная проблема это невозможность построить индексы для выборок.

    После собеседования я озадачился этим вопросом на несколько дней, пришёл к каким то выводам, для очистки совести чуть чуть погуглил. Нагуглил подтверждения своим мыслям, но этого мне было мало — захотелось реализации с подтверждением цифрами.

    Если и вам интересно к каким выводам я пришёл и какой выигрыш от оптимизации можно получить, то добро пожаловать под кат.
    Читать дальше →
    • +13
    • 8.7k
    • 9
  • Готовим git reset правильно

    Очень короткая заметка из серии «Хозяйке на заметку».

    Предисловие


    У плохо организованных разработчиков, типа меня, часто так бывает, что накомитишь всякого, а потом оказывается что не то и не туда, но git помнит всё и весь этот разгул анархии остаётся в истории.
    Мне всегда казалось что это можно исправить, но сколько раз я не начинал искать ответа на этот вопрос — как в git удалить камиты — столько раз мне это не удавалось.
    А всё потому что мои поиски приводили меня к rebase, а надо было искать reset.
    На мой вкус вопрос недостаточно освещён и моя заметка призвана закрыть этот пробел.
    Читать дальше →
  • Идеальный каталог, вариант реализации

    В продолжении статьи "Идеальный каталог, набросок архитектуры", я покажу на примерах как можно использовать предложенную структуру БД для хранения произвольных данных и выполнения произвольных поисков по этим данным. Скрипты лежат в репозитории — universal_data_catalog_idea.

    Приглашаю под кат, тех кому интересно посмотреть на эти скрипты с авторскими комментариями.
    Читать дальше →
  • Идеальный каталог, набросок архитектуры

    Подвернулась мне задачка разработать универсальный каталог товаров и услуг, по совместительству каталог предприятий, документов и чего угодно ещё. В работе этот «опыт» не пригодился, а идея хорошая, по-моему скромному мнению :) Хочется поделиться, и послушать критику.

    Каталог подразумевает упорядоченность — иерархию, подразумевает непосредственно хранение информации, и конечно поиск, наверное аналитику… что-то ещё? Больше ничего в голову не приходит.

    Теперь по пунктам.
    Читать дальше →
  • JSON API Мой Склад, самообучение

    START UPDATE 2019-11-18
    Заметил, что статья до сих пор для кого то служит источником информации.
    Я сделал рефакторинг что бы сделать код более прямолинейным. По пути поправил пару досадных багов.
    FINISH UPDATE 2019-11-18

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

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

    На этот раз надо было сделать страничку для формирования заказа покупателя в сервисе «Мой склад». Для меня это как полёт на Луну: в веб разработке я чуть меньше чем новичок, с фронтэндом знаком только по наслышке, а тут целую страницу надо разработать, ох ты Йожик!
    Любая критика и советы приветствуются.
    Читать дальше →
  • Маленький опрос хостингов ( ~100 ) по услуге VDS

      Всем привет. Случилось мне провести маленький опрос хостингов по услуге VDS, хочу поделиться. Если кому-то в ответ захочется поделиться опытом размещения сервисов почтовых рассылок — буду рад. Если кто-то имеет опыт разработки серверов почтовых рассылок или готовый программный продукт, то дайте мне знать (в личку).
      Читать дальше →
    • Изменение исходников ( DDL ) на лету

      • Tutorial
      При сопровождении ERP систем иногда возникает необходимость массового изменения кода процедур, функций, триггеров или пакетов. Например для замены вызова одной процедуры на вызов другой.
      Если надо поменять пару процедур, то можно сделать это в ручную, но когда надо изменить несколько сотен объектов, то приходиться задуматься об автоматизации процесса. В статье описан пример автоматизации для СУБД ORACLE 11g.
      Читать дальше →
    • Движок для построения отчётов на SQL. Черновик решения

        Введение


        В первой статье ( Движок для построения отчётов на SQL. Идея ) я поделился идеей. Теперь поделюсь решением ( черновиком ). Этот черновик — мой первый опыт «серьезной» работы с T-SQL, поэтому не стоит его принимать за образец «хорошего» кода.
        Самое важное в этом черновике это механизм подстановки формул в динамический запрос. Второе по важности это механизм сохранения результатов вычислений.
        Читать дальше →
      • Движок для построения отчётов на SQL. Идея

        Введение

        Статья написана с точки зрения программиста из техподдержки ERP системы.

        Выполняя очередное тестовое задание, по очередной вакансии, мне в голову пришла очередная гениальная идея.
        Почему бы не отдать пользователю редактирование формул для вычисления колонок отчёта? Получиться тот же самый Excel к которому все привыкли, только синтаксис — SQL.

        И конечно за 30 лет развития ERP систем это уже конечно где то было реализовано. Но их алгоритмы это их тайны, а мне не жалко. я поделюсь идеей.
        Читать дальше →