• Нужен Code Review?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. Каталог .idea должен быть проигнорирован
    2. MVC - читаем и используем.
    3. PSR-1, PSR-2, PSR-4 - читаем и используем.
    4. По хорошему, require в вашем коде должен быть 1 раз при подключении автолодера.
    5. Вперемешку html+css+js - это гуано))
    6. В вашем коде, увы нечего спасать.
    Ответ написан
    4 комментария
  • Самый быстрый веб-сервер php для windows?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Как добиться того, чтоб сайты (которые пишутся с помощью php-фреймворков) на локальном веб-сервере просто летали?

    web сервер выполняет транспортную роль по большей части. Что бы сайт "летали" - их нужно писать так, что бы "летали"))

    Какой локальный сервер использовать?

    nginx+php-fpm

    Пробовал много чего: vagrant, ubuntu-сервер разворачивал сам. Но эти варианты для меня не удобны.

    Вам шашчеки, или ехать?

    NGINX вообще ни разу не пробовал. Его хвалят, но как его устанавливать и настраивать в Windows я не нашёл.

    Вы того, не воспринимайте win как серверную ОС и все встанет на свои места))
    Ответ написан
    2 комментария
  • ORM or NotORM? Что лучше выбрать?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1 комментарий
  • Как возвращать нескольких json за один веб запрос?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Каким образом возможно отправив один ajax получать данные и сразу же их обрабатывать, не дожидаясь окончания запроса?

    Вы ищите websockets. Но там есть куча нюансов.

    т .е я хочу получать json массивы(ссылки на фото) и сразу же их выводить в рамках одного запроса

    В чем проблема то? Оборачиваете в некую коллекцию и ее уже ее сериализуете в json.

    на сервере крутится php - codeigniter.

    NO! Не тыкайте труп палкой, пусть уйдет достойно.

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

    Вы пытаетесь решить надуманную проблему методом, который ее не решит.
    Нагрузка с БД как правило снимается за счет:
    * настройки индексов
    * оптимизации запросов
    * кэширования.
    ...

    ...хочется чтоб все обработывалось одним процессом на сервере

    Круто, зачем вам php тогда?

    в сторону какой технологии смотреть, подскажите composer библиотечку и т.п?

    Как минимум:
    * SOLID
    * PSR-2,3,4,7
    * Symfony / Silex
    Ответ написан
    3 комментария
  • На каких площадках (аля habrahabr) вы рассказываете о своих opensource проектах?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Хабр уже давно не тортом стал

    Спорное заявление.

    https://www.opennet.ru/
    Ответ написан
    4 комментария
  • ООП в высоконагруженных проектах считается устаревшим?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Обычная демонстрация эффекта Даннинга - Крюгера.
    Ответ написан
    Комментировать
  • Маршрутизация, имеет ли такой подход право быть?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. Use HttpFoundation Luke!
    2. Ваш роутер, был бы не плох лет эдак 10 назад, но не сейчас, посмотрите роутинг symfony, или silex
    3. ОБЯЗАТЕЛЬНО читаем: PSR-1, PSR-2, PSR-4

    <?php
    namespace lib;
    class Router {
    // Может rules все таки?))
          private $rulls; // Зачем тут отступ?
    // phpDocumentor - ваш друг, прописывайте ОБЯЗАТЕЛЬНО типы данных.
        private $uri;
        private $controller;
        private $params = [];
    
        function __construct(){
            $this->setUri(); // У вас нет такого метода, есть setURI
            $this->setController();
            $this->setParams();
            $this->setRulls();
        }
    // Что будет, если $_SERVER['REQUEST_URI'] = '/?', или '/////'?
        private function setURI(){
    // Подобное форматирование может и ок для шаблонов, и то где-то, где вообще незаметно, но не тут читаем про PSR-2
            if($_SERVER['REQUEST_URI'] != '/'):
                $this->uri = explode('/',trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'));
            endif;
        }
    // Я правильно понимаю, вы хотите сказать, что контроллер - это некий элемент массива (похоже string|null)? Обычно контроллер - это объект...
        private function setController(){
            $this->controller = array_shift($this->uri);
        }
    // В этом методе вы по тупому копируете элементы, зачем?
        private function setParams(){
    // Подобное форматирование может и ок для шаблонов, и то где-то, где вообще незаметно, но не тут читаем про PSR-2
            foreach ($this->uri as $value):
                $this->params[] = $value;
            endforeach;
        }
    
        private function setRulls(){
    // NO! загрузка данных - это НЕ задача роутера, от слова СОВСЕМ
            file_exists(SITE_ROOT.DS.'routing'.DS.'rulls.php') ? $this->rulls = include(SITE_ROOT.DS.'routing'.DS.'rulls.php') : die('Файл с конфигурацией роутинга где-то затерялся, извини.');
        }
    // В методе ничего нечего спасать, просто удалите его.
        public function run(){
    // НЕ ИСПОЛЬЗУЙТЕ ГЛОБАЛЬНЫЕ ПЕРМЕННЫЕ
            $_REQUEST = array_merge($_REQUEST, $this->params);
            $controller = '\\controllers\\'.$this->rulls[$this->controller]['controller'];
            $action = $this->rulls[$this->controller]['action'];
            $controller = new $controller; // Что будет, если такого класса нет?
            $controller->$action(); // Что будет, если такого метода нет?
        }
    }
    Ответ написан
    Комментировать
  • Технологии для реализации веб-проекта?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    по функционалу и внешнему виду сопоставимый с 888sport.com, в ближайшее время будем заниматься поиском опытного фуллстак веб-разработчика.

    Плохая идея искать fullstack. Сайт такого уровня потребует команду инженеров. Есть такая штука bus-factor, почитайте на досуге.

    В данный момент я склоняюсь к MARS (MySQL, Apache, Ruby, Solaris), HTML5, CSS, JavaScript, Git, Agile.

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

    Разработка будет проходить на Mac Os

    Вот это не вам решать))

    дизайн интерфейса разрабатывается в Sketch.

    Вам шашечки, или ехать? Sketch - это инструмент, дизайн - это результат. Не стоит ограничивать дизайнера в инструментах.
    Ответ написан
    1 комментарий
  • На чем легко писать браузерных ботов(авторегеры, боты к браузрекам и т.д. и т.п.)?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    PhantomJS
    Ответ написан
    Комментировать
  • Насколько код ООП и что бы вы посоветовали по его улучшению?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    <?php
    // PSR-1, PSR-2, PSR-4 Читаем и пользуем!
    // namespace все дела... "Model_admin" - это прошлое.
    // phpDocumentor - твой друг, прописывай всюду типы данных
    class Model_admin extends Model
    {
    // Лишний перевод строки
        private $name;
        private $password;
        private $code;
        private $mail;
    // Не информативное название. get model admin... что бы это значило...
        public function get($login, $password) {
    // Где проверка аргумантов? Влететь может что угодно
            $this->name = $login;
            $this->password = $password;
    // Модель НЕ должна управлять подключением к БД, это должно выполняться выше в коде
            $this->db_connect();
    // Код вообще проверялся?)) у вас закрывающей строки нет.
            $result = msql_query("SELECT 'login', 'password', 'mail' FROM 'admin_authorization'";
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $arr = mysql_fetch_array($result);
    // Зачем нужен цикл, это дро*ба БД!!! Вытягиваете одну запись по логину и проверяете соответствует ли пароль
            do {
    // Лишний перевод строки
                if ($login === $arr['login']) {
    // Лишний перевод строки
                    if (
                        md5( md5( trim( $password ))) === $arr['password']
                    ) {
                        $this->mail = $arr['mail'];
                        $this->random_code();
    // Перед return лучше делать перевод строки
                        return true;
                    }
    // Лишний перевод строки
                }
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
    // Присваивание в условиях управляющих кнострукций лучше не делать, это операции разного характера
            } while ($arr = mysql_fetch_array($res));
    
            return false;
    // Лишний перевод строки
        }
    
        private function random_code($length = 15) {
    // Где проверка аргумантов? Влететь может что угодно
            $symbols = '0123456789abcdefghijklmnopqrstuvwxyz_-~!+*%$#&';
    
            for ($i = 0; $i < (int)$length; $i++)
            {
                $num = rand (1, strlen ($symbols));
                $this->code .= substr ($symbols, $num, 1);
            }
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $bool_update = mysql_query('UPDATE "admin_authorization" SET code="'.$this->code.'" WHERE login="'.$this->name.'"');
    // Вот так писать плохо, всегда используйте фигурные скобки.
            if ($bool_update) $this->send_code();
    // Лишний перевод строки
        }
    
        private function send_code() {
    // Модель НЕ должна отправлять письма, под отправку обычно пишется отдельная подсистема/сервис
            mail ($this->mail, "Admin code", $this->code);
        }
    
        public function check_code($user_code) {
    // Где проверка аргумантов? Влететь может что угодно
    // SQL инъекция!!!!
    // сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
            $this->code = mysql_query("SELECT 'code' FROM admin_authorization WHERE code='".$user_code."'");
    // Вот так писать плохо, всегда используйте фигурные скобки.
            if ($this->code != '') return true;
        }
    // Лишний перевод строки
    }
    Ответ написан
    13 комментариев
  • Что нужно знать для создания приложения для видеосвязи?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Поисковые слова: video streaming, wowza, red5, ffmpeg-server, rtmp

    Знать нужно много, что именно - зависит от конкретного ТЗ и выбранных технологий для его реализации
    Ответ написан
    Комментировать
  • Какая версия php сейчас актуальна для разработки?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Ответ написан
    Комментировать
  • Как определиться с фреймворком?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Мне не понятно, это разделение фреймворков на группы, что они делают и для каких задач предназначены фреймворки из первой группы и из второй?

    1-я группа работает на клиенте (в браузере)
    2-я группа работает на сервере

    Почему они так разделены?

    Разные платформы выполнения

    Используют ли их вместе, или только один?

    Зависит от проекта.

    Какие задачи решают фреймворки из первой и второй группы?

    1-я БЛ (бизнес логика) отображения и взаимодействия с пользователем
    2-я БЛ обработки данных и взаимодействия с клиентом (браузером)

    Для какое задачи достаточно будет знать только ангуляр, а для какой только рельсы?

    Только Angular - задачи frontend
    Только Rails - задачи backend
    Ответ написан
    2 комментария
  • Как сделать ns сервер на php для создания хостинга?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Как сделать ns сервер на php для создания хостинга?

    Всего 3 шага:
    1. Прочитать спецификации:

    • RFC 1034 — Domain Names — Concepts and Facilities
    • RFC 1035 — Domain Names — Implementation and Specification
    • RFC 1912 — Common DNS Operational and Configuration Errors
    • RFC 1591 — Domain Name System Structure and Delegation
    • RFC 1713 — Tools for DNS Debugging
    • RFC 2606 — Reserved Top Level DNS Names


    2. Осознать, что это было глупой затеей.
    3. Прочитать howto по настройке BIND
    Ответ написан
    7 комментариев
  • Запуск PhpStorm с удаленного сервера?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Может у вас действительно очень специфический use-case, но IDE на сервер, как правило - хреновая идея.
    Ответ написан
    Комментировать
  • Какими способами можно поддерживать постоянно запущенное количество php-демонов?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    supervisor
    Ответ написан
    Комментировать