ArbNet

ArbNet
Рейтинг
146
Регистрация
27.10.2019
Программист самоучка

Думаю для ТС вопрос был риторический, желание есть, но он не двигается в направлении к своей цели.

Хотя может уже нашёл какое-то решение.

MkrtElion #:
Как бы так сказать, в пыхе работа с картинками идет через расширения.

Да в php много расширений, но они работают довольно таки быстро. В данном случае применяю GD

<?php
// пространство имён ядра
namespace core;
// Ресайз картинки
class RsizeImage {
  private $img,$itp;
  // Загрузка картинки
  public function Load($way) {
    $info=getimagesize($way);
    $this->itp=$info[2];
    switch($this->itp){
      case IMAGETYPE_JPEG:
        $this->img=imagecreatefromjpeg($way);break;
      case IMAGETYPE_GIF:
        $this->img=imagecreatefromgif($way);break;
      case IMAGETYPE_PNG:
        $this->img=imagecreatefrompng($way);
    }
  }
  // Сохранение картинки
  public function Save($way,$itp=IMAGETYPE_JPEG,$cmp=75,$prm=null){
    switch($itp){
      case IMAGETYPE_JPEG: // cmp - компрессия
        imagejpeg($this->img,$way,$cmp);break;
      case IMAGETYPE_GIF:
        imagegif($this->img,$way);break;
      case IMAGETYPE_PNG:
        imagepng($this->image,$filename);
      }
      if($prm!=null){
        chmod($way,$prm);// prm - разрешения
      }
  }
  // Показать картинку
  public function Show($itp=IMAGETYPE_JPEG){
    switch($itp){
      case IMAGETYPE_JPEG:
        header('Content-Type: image/jpeg');
        imagejpeg($this->img);break;
      case IMAGETYPE_GIF:
        imagegif($this->img);break;
      case IMAGETYPE_PNG:
        imagepng($this->img);
    }
  }
  // Изменение размера
  public function Resize($width,$height){
    $nimg=imagecreatetruecolor($width,$height);
    imagecopyresampled($nimg,$this->img,0,0,0,0,$width,$height,$this->Width(),$this->Height());
    $this->img=$nimg;
  }
  // Изменение размера по ширине
  public function ResizeWidth($width){
    $ratio=$width/$this->Width();
    $height=$this->Height()*$ratio;
    $this->Resize($width,$height);
  }
  // Изменение размера по высоте
  public function ResizeHeight($height){
    $ratio=$height/$this->Height();
    $width=$this->Width()*$ratio;
    $this->Resize($width,$height);
  }
  // Маштабирование от процентов
  public function Scale($prc){
    $width=$this->Width()*$prc/100;
    $height=$this->Height()*$prc/100;
    $this->Resize($width,$height);
  }
  // Ширина картинки
  public function Width(){return imagesx($this->img);}
  // Высота картинки
  public function Height(){return imagesy($this->img);}
}
?>

Сейчас меня вынуждаете вам что-то доказывать, я не собираюсь вам ничего доказывать. Я занимаюсь чем мне интересно.

Человек ТС ищет инструмент, я предложил в скайпе показать и рассказать что я сделал, всё. Завтра на дачу :) вернее уже сегодня

timo-71 #:
Их не 1, конкретнее плиз

Зависит от данных. В движке разбираю структуры страниц simplexml. Со сложными данными xml_parser, dom xml тяжеловат и медленнее, по сути можно использовать любую

timo-71 #:
Если правильно понял, то скорее не "не указывать", а чтобы не плодить клонов, каких то вещей в разных классах. 

Да, и для этого тоже.

Грузовик(вместо такого класса, такого и такого) опять же нужен для облегчения работы разработчиков узлов, они будут знать, что есть такой грузовик и через него могут получить доступ к другим узлам и тд. всё остальное пишут так как хотят. Правда я бы рекомендовал использовать мои подходы о которых также расскажу в документации. Тогда будет проще всем.
dj D #:
И когда намечается встряска (передел) ниши?

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

timo-71 #:
Для начала скажите чем xml разбирать будете?

Встроенными средствами php

timo-71 #:
Интересно вы автолоадер обозвали. Или и там ноу-хау, реально классы "перевозятся"

Автолоадер для подключения классов естественно есть. Грузовик это просто класс который подключается с паттерном singleton и используется в движке и узлах для доступа к другим узлам, данным... Чтобы каждый раз не указывать нужные классы, а только этот грузовик и через него получать доступ к другим.

dj D #:
А для чего вообще нужно делать свой движок?

Когда в голове пусто, то не зачем.

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

Aisamiery #:
PS а ещё у него украли jQuery =)))))

jQuery, Angular,  React, Vue и тд. скоро будут покуривать. Я разработал свой JS фреймворк под свой инструмент, правда части его модулей могут использоваться и отдельно.

Код такой же как и в самом движке, чёткий и лаконичный, при необходимости подключаются нужные модули, функции.

Например пользователь в структуре указывает что нужен модуль для озвучивания текста. Движок подключает этот скрипт модуля, тот в свою очередь подключает другие, для работы с тегами, спрайт(перемещающий объект) в котором тулбар для настройки озвучивания.

Или например пользовательский интерфейс. Пользователю не надо знать ни команды jQuery, Angular,  React, Vue писать самому код чтобы настроить, а просто указать атрибут data-ui="click:classes:elem:colorred" описание пользовательского интерфейса с примерами будет в документации

<a data-ui="click:classes:elem:colorred">Поменять цвет на красный</a>

При клике элементу elem добавится класс colorred. Есть и другие события для взаимодействия с пользователем, это я описал самое простое.

И всё работает как часики 😀

timo-71 #:
Ну вот, задача - брать х раз в сутки xlsx у поставщика, менять, что изменилось и собрать qr для не суть каких нужд из параметров полученных из экселя на карточке товара. Сами напишете, или все же

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

MkrtElion #:
Можно поинтересоваться, вот ваш супер движок как будет поддерживать работу с картинками? Ну вот к примеру мне нужно будет сделать ресайз картинок и водяной знак наложить.

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

MkrtElion #:
Сами писать будете? Кого то привлечете для написания подобного "модуля"? Или возьмете готовый модуль?

Сам и никак иначе. И тех разработчиков кто будут со мной работать обучу принципам программирования под мой фреймворк.

MkrtElion #:
А что на счет RBAC? Будет отдельный модуль? А как его использовать из других модулей для проверки прав?

Это решается довольно просто. У меня нет шаблонизации к которой вы привыкли, у меня просто указывается что нужно разместить на странице и движок всё формирует. Для логистики прав, можно создать сущность где указаны у какой должности какие права. Затем в структуре страницы подключается эта сущность и в зависимости от должности пользователя прописывать что он может делать в самой структуре или вызовом методов узла который будет формировать содержание.

MkrtElion #:
Как (ну хотя бы в теории) у вас модули будут между собой интегрироваться?

Сначала немного теории по моему движку.

В движке две основные директории mods(модули) и node(узлы).

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

Узлы - это в вашем понимании типа плагина, связка php класса, компоненты (макетов разметки, стилей к этой разметке, JS скрипты если нужны).

В структуре прописывается что нужно разместить на странице и движок всё собирает, я уже об этом говорил.


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

BuxarNET, Пока на дачу ещё не уехал, скажу ещё кое-что. Я редко даю советы, но понимаю ваше намерение иметь хороший, удобный инструмент для своих проектов, скажу вам вот что. У вас есть 3 пути:

  1. Жить так как жили, заниматься с своими проектами на чём они там написаны, как-то допиливать, вставлять костыли и тд. искать кто вам сможет помочь в этом.
  2. Вы можете согласится с тем что вам что-то сделают за оплату. Балалаечников типа SeVlad`а и ему подобных, даже вы по-моему не воспринимаете всерьёз, потому как понимаете, а они вот не понимают, что предлагаемый им вариант использовать WP для создания гибко настраиваемых проектов мягко говоря смешон. Sly32 и Aisamiery попилят ваш бюджет, накидают разных библиотек, сварганят может что-то, но в последствии это вам обойдётся ещё дороже, будут появляться разные подводные камни, что-то захочется доработать, добавить, изменить, ещё хуже если баги полезут.. и так как ни они, ни вы, не знаете как работают те или иные готовые решения и нужно будет в них разбираться, искать нестыковки и прочее, и прочее. Зависеть от таких гуру "специалистов" со всеми вытекающими..
  3. Ну и пойти своим путём. Я вам сейчас не предлагаю инструмент из коробки, я вам расскажу как всё устроено и как работает, как что можно изменять, добавлять, удалять, технологии которые не сложны в понимании, но облегчат вам жизнь в плане создания новых и поддержке существующих проектов. С этими знаниями думаю вы сами сейчас осознаёте, что создавать и развивать ваши проекты вам будет в удовольствие, а не плюясь на разработчиков того или иного CMS нанимая "гуру спецов" и тд. Конечно это будет не завтра, но если вы готовы вложится в своё такое будущее, то оно с лихвой окупится.


Vald111 #:
Извините, а можно ссылку на ваш гитхаб? Очень хочу посмотреть на примеры "хорошего кода", где все как часики на алгоритмах и без лишних библиотек.

С какой целью интересуетесь? Простое любопытство? Хотите стать таким же разработчиком? Или хотите иметь такой инструмент на котором делать свои проекты?

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

Всего: 2250