• Как настроить порты в vagrant + golang, чтобы открывался браузер хост-машины?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Порты до 1000-го требуют прав суперпользователя.
    Ответ написан
  • Что стоит изменить в классе PHP для работы с файлами?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Конкретно по коду отписал ниже. Как хелпер - ну может быть, почитайте на досуге php.net/manual/ru/spl.files.php
    // Я надеюсь вы знаете про PSR4 и символ подчеркивания тут случайно
    class MV_Files
    {
        // PSR2: методы пишутся в lowerCamelCase
        // Нет проверки аргументов. что произойдет, если $name будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        public function CreateFile($path, $name, $right = 0777)
        {
            if (!file_exists($path . '/' . $name)) {
                // Посмотрите http://php.net/manual/ru/function.touch.php
                fclose(fopen($path . '/' . $name, 'w'));
                chmod($path . '/' . $name, $right);
                // PSR2: Перед return перевод строки
                return true;
                // Не ясно, зачем вам тут else?
            } else {
                return false;
            }
        }
    
        // PSR2: методы пишутся в lowerCamelCase
        // Нет проверки аргументов. что произойдет, если $name будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        public function CreateFileContent($path, $name, $text, $right = 0777)
        {
            if (!file_exists($path . '/' . $name)) {
                // file_put_contents, не?
                $file = fopen($path . '/' . $name, 'w');
                fwrite($file, $text);
                fclose($file);
                chmod($path . '/' . $name, $right);
                // PSR2: Перед return перевод строки
                return true;
                // Не ясно, зачем вам тут else?
            } else {
                return false;
            }
        }
    
        // PSR2: методы пишутся в lowerCamelCase
        // Нет проверки аргументов. что произойдет, если $path будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        public function AddFileContent($path, $text)
        {
            if (file_exists($path)) {
                // file_put_contents($path, $content, FILE_APPEND)
                $file = fopen($path, 'a');
                fwrite($file, $text);
                fclose($file);
                // PSR2: Перед return перевод строки
                return true;
                // Не ясно, зачем вам тут else?
            } else {
                return false;
            }
        }
    
        // PSR2: методы пишутся в lowerCamelCase
        // Нет проверки аргументов. что произойдет, если $path будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        public function OverwriteFileContent($path, $text)
        {
            if (file_exists($path)) {
                // file_put_contents($path, $content)
                $file = fopen($path, 'w');
                fwrite($file, $text);
                fclose($file);
                // PSR2: Перед return перевод строки
                return true;
                // Не ясно, зачем вам тут else?
            } else {
                return false;
            }
        }
    
        // PSR2: методы пишутся в lowerCamelCase
        // Нет проверки аргументов. что произойдет, если $oldname будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        // Чего вдруг метод статический?
        public static function RenameFile($oldname, $newname) {
            if (file_exists($oldname)) {
                return rename($oldname, $newname);
            } else {
                return false;
            }
        }
    
        // PSR2: методы пишутся в lowerCamelCase
        // Нет проверки аргументов. что произойдет, если $path будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        public function DeleteFile($path)
        {
            if (file_exists($path)) {
                return unlink($path);
            } else {
                return false;
            }
        }
    
        // Нет проверки аргументов. что произойдет, если $path будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        public function getFileContent($path)
        {
            if (file_exists($path)) {
                return file_get_contents($path);
            } else {
                return false;
            }
        }
    
        // Нет проверки аргументов. что произойдет, если $path будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        // "size" обычно трактуется как число, а не форматированная строка.
        public function getFileSize($path)
        {
            if (file_exists($path)) {
                // Конструкция - гавно)). Если хотите интовый $size - то сохраняйте в него инт
                (int)$size = filesize($path);
                switch (true) {
                    case $size >= 1073741824:
                        $size = round($size / 1073741824 * 100) / 100 . ' GB';
                        break;
                    case $size >= 1048576:
                        $size = round($size / 1048576 * 100) / 100 . ' MB';
                        break;
                    case $size >= 1024:
                        $size = round($size / 1024 * 100) / 100 . ' KB';
                        break;
                    default:
                        $size .= ' Bytes';
                        break;
                }
                return $size;
            } else {
                return false;
            }
        }
    
        // Нет проверки аргументов. что произойдет, если $path будет массивом?
        // Не ясно, на кой вам тут возврат bool? Если что-то не так - бросайте исключение.
        // Прочитайте http://php.net/manual/ru/class.splfileinfo.php
        public function getFileInfo($path)
        {
            if (file_exists($path)) {
                return pathinfo($path);
            } else {
                return false;
            }
        }
    
        // Нет проверки аргументов. что произойдет, если $dirname будет массивом?
        // Прочитайте http://php.net/manual/ru/class.directoryiterator.php
        public function getFileList($dirname)
        {
            $dir = array_diff(scandir($dirname), ['.', '..']);
            $files = [];
            // Рекомендую перед управляющими конструкциями делать перевод строки, так читать проще
            foreach ($dir as $value) {
                if (is_file($value)) {
                    $files[] = $value;
                }
            }
            // PSR2: перед return перевод строки
            return $files;
        }
    // Лишний перевод строки
    }
    Ответ написан
    2 комментария
  • Правомерен ли постинг с сайта пользовательских фото в ленту Инстаграма?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Если пользователь согласился с правилами ресурса и это прописано в правилах - вполне правомерно
    Ответ написан
    Комментировать
  • Switch с нулевым условием в php?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вы сравниваете красное и мягкое (int с bool), понятное дело, что результат будет не очевидным)). По сути вы сравниваете примерно так:echo 0 == (0 >= 1073741824);
    Ответ написан
    3 комментария
  • Так какие же подводные камни есть в архитектуре Yii2?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    В чем минус подхода yii2?

    В любой точке вашего кода можно спокойно нагнуть весь ваш проект, учитывая, что $app - публичная статическая переменная. По сути это мало чем отличается от глобальной переменной, пусть и в отдельном неймспейсе.

    Начитался критики в его сторону, в частности к его контейнеру

    Вы можете поменять в рантайме все что угодно просто потому, что у вас есть доступ. Подобная свобода для крупных проектов - это дико опасная практика.
    Ответ написан
    1 комментарий
  • Правильно ли я понимаю принцип модульной архитектуры приложения?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Зависит от проекта конечно, но в понятие модуль обычно вкладывается что-то очень больше и независимое, например система управления пользователями, система управления платежами и т.д. В терминологии Symfony - это называется Bundle.

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

    А если мне нужно написать модуль регистрации пользователя? Как здесь быть?

    Не использовать парадигму, которая вам не подходит. Почитайте про SOA. Если в двух словах: сервис - это некий набор бизнес логики, который умеет обычно всего одно действие, но делает его качественно.
    Для сервиса регистрации данных вывод шаблона не нужен. Все, что он должен уметь: проверить входные данные для регистрации, сохранить их и оповестить свои зависимости об этом (например сервис отправки почты).

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

    З.Ы. Битрикс и "качественная архитектура" - это вещи не совместимые))
    Ответ написан
    Комментировать
  • Как называется утилита просмотра нагрузки?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Htop
    Ответ написан
    Комментировать
  • Есть ли хорошая библиотека или интеграция с ПС для живого поиска по большой БД?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Подобные штуки работают быстро как раз потому, что используется не бд, а кэш с уже ранее веденными фразами.

    Можете покурить ElasticSearch, при тонкой настройке индексов сможете выжать не малую производительность.
    Ответ написан
    Комментировать
  • Почему в phpstorm не подключаются обсолютно никакие зависимости вне зависимости от версий PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    У вас же черным по белому написано про отсутствующее расширение openssl.
    Ответ написан
    3 комментария
  • Как спроектировать БД для диалогов?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    LIKE - дико медленная операция, ее стоит использовать в исключительно редких случаях и то, для маленьких таблиц.

    Ваш вариант MANY_TO_MANY ниже - на порядки лучше.
    Ответ написан
    Комментировать
  • Онлайн ритейл. Какую рекомендуете CMS и СУБД?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Как решить технические проблемы, которые у вас могут возникнуть в несуществующем программном комплексе?))
    Да никак, технические проблемы решаются по мере их выявления.
    Ответ написан
    4 комментария
  • Какие книги стоит прочитать на тему "Компьютерные сети"?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    CCNA Официальное руководство
    Ответ написан
    Комментировать
  • С чего начинать школьнику?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Начать стоит с приобретения навыка поиска информации, этот вопрос тут задается постоянно. Без этого навыка увы никак.
    "Обучиться IT за месяц", "С++ за 21 день", "Зарабатывай в интернете уже сегодня", "Быстрый старт в IT",... - это маркетинговый развод, который не связан с реальностью.
    Ответ написан
    Комментировать
  • Почему не работает класс?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вам посоветовали херню))

    Вопрос производительности при таких условиях решается с помощью кэширования. На подготовленых запросах вы ничего не сэкономите. Это примерно как прикладывать подорожник на открытый перелом ноги.
    Ответ написан
  • На каком уровне нужно знать язык SQL если хочешь писать свою cms использую phpmyadmin или что то подобное?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Перефразирую ваш вопрос: на каком уровне нужно знать про трубопровод, если хочешь построить дом?
    На достаточном для решения это задачи.

    А так как я использую оболочку phpmyadmin то мне же не нужно знать много команд SQL?

    wat? При чем тут phpmyadmin?

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

    Вы пытаетесь написать книгу, не зная слов.
    Ответ написан
    3 комментария
  • Немного вопросов по DoctrineORM и Symfony?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Я не понимаю зачем, если в php есть __call().

    Магию сложно дебажить, тестировать и поддерживать. Она может потребоваться но в очень-очень узких кейсах, когда по другому никак. Геттеры с сеттерами - это далеко не тот случай, учитывая, что IDE тип PhpStorm их отлично генерирует.

    Ситуация, когда нужно сделать индивидуальную обработку поля - ясна, но зачем в большинстве случаев засорять класс однотипными методами - мне не понятно. В чем смысл?

    За тем, что бы не засорять его никому не нужной магией.

    Я понимаю, что он скорее всего запросит id у объекта, но заче грузить в память целый объект, если я, например, заранее знаю его id?

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

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

    Почему же? Хотите работать с адресами - работайте с адресами, при чем тут пользователи?

    Как сделать ORM-аннотацию, чтобы поле типа "datetime" заполнялось текущими датой-временем?

    Добавьте значение по умолчанию в конструктор.
    Ответ написан
    Комментировать
  • Как организовать на golang копирование файлов с одного клиента на другой по сети?

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Главный подводный камень: исполнитель привязывает вас к себе. В случае разрыва контакта - вероятно, дешевле будет переписать полностью, чем доделывать.
    Ответ написан