• Как правильно оценивать сроки на разработку сайта в web студии?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    «В молодости я спросил у начальника, как оценить время на выполнение работы? И начальник ответил мне:
    — Время, которое ты планируешь, умножить на Пи пополам, плюс 2 недели.
    — Почему Пи пополам? — удивился я.
    — Потому что в реальной жизни ты никогда не будешь двигаться к своей цели напрямую, а скорее — по дуге окружности.
    — А почему плюс две недели?
    — А потому, что когда ты в итоге просрёшь все сроки, то за две недели хоть что-то успеешь сделать.» (с)
    Ответ написан
  • Что не так с моей валидацией в yii2?

    vakorovin
    @vakorovin
    Разработчик
    Я вам несколько иначе постараюсь объяснить. Валидаций может быть 2 - серверная и клиентская.
    Смотрите: когда мы говорим, что email - unique, мы же не передаем клиенту, в js-валидатор перечень всех занятых email-ов, такая проверка осуществляется уже на сервере, если на стороне клиента прошли другие валидации. Тоже самое и с собственноручно написанными php-проверками, они не трансформируются же в js-код и выполняются на сервере в момент вызова метода validate() модели. Поэтому самому для себя, для понимания, что происходит - откройте исходный код html-страницы с формой и посмотрите, какие правила валидации прописаны в js, это здорово поможет разобраться в ситуации.

    Что касается решения проблемы, то либо используйте ajaxValidation, как вам уже написали выше, либо присмотритесь к валидатору Compare Validator. В вашем случае для email не прописано правило unique, следовательно могу сделать вывод, что подсветка зеленым инпутов происходит еще до отправки формы на сервер, т.е. серверная валидация не отрабатывает.
    Ответ написан
  • Где хранить сессии? SQLite? MySQL? Memcached? Redis? FS?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    Храни в мускуле.

    Файлы, действительно - самый неудачный вариант. Сара Големон, отвечая недавно на подобный вопрос, написала
    File storage is only a default because the runtime doesn't know in advance what database engine or credentials you're going to use unless you tell it. So... ya know.... tell it.

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

    Редис и мемкеш - это кэш, а не хранилище. Подумай над тем, что такое кэш и для чего он используется. И подходит ли кэш для хранения сессий.

    Про скулиту ты все правильно написал. Те же файлы, вид сбоку.

    А про мускуль очень смешно. Какая-то прямо повальная датабазебоязнь. Откуда это "я вообще хочу минимизировать запросы к MySQL"? Что за ерунда про "соединение может оборваться"? И как ты вообще можешь сравнивать по производительности файл на диске, который открывается при каждом запросе, с демоном, который держит все данные в памяти и отдает по сокету?
    Ответ написан
  • Как сохранять данные в питон?

    pickle - текст
    json - ключ : значение
    структура(имя, возраст, почта, etc) - бд: sqlite3, которую нет необходимости устанавливать отдельно, mysql, postgresql, etc
    Ответ написан
  • Выигрывает ли nodejs в производительности php на примере обычного сайта?

    @shsv382
    При выборе языка/фреймворка для бэкенда некорректно говорить о том, что один лучше, а другой хуже. Важна конечная цель. NodeJS может быть сколь угодно быстрее других при генерации простых веб-страничек, зато когда речь идет о работе с большими числами, то JavaScript проигрывает, потому что BigInt еще совсем сырой, а реализовывать вычисления со строками - такое себе развлечение. Я к тому, что выбор по одному критерию - не лучшая практика
    Ответ написан
  • Как циклично записывать видео с камеры, в файлы небольшого размера при помощи ffmpeg?

    @3do
    Получилось рабочее решение в пару строк - может кому пригадится.
    1. Запуск ffmpeg в screen с именем record.
    screen -d -m -S record ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.100/avstream -c copy -map 0 -f segment -segment_time 1800 -segment_format mp4 -reset_timestamps 1 -copyts -flags global_header -strftime 1 /home/user001/video/%Y-%m-%d_%H-%M-%S.mp4

    Запуск ffmpeg с параметром -f segment пишет поток rtsp непрерывно, разбивая автоматически на файлы длительностью 1800 секунд ( параметр -segment_time 1800 ), т.е. по 30 мин. Имя фа
    -rtsp_transport tcp пришлось добавить, т.к. без этого терялись пакеты.

    2. В /etc/crontab добавляем стоку
    *  *	* * *	root	ls -t /home/user001/video/* | sed -e '1,96d' | xargs -d '\n' rm

    которая раз в минуту проверяет данную директорию на количество файлов и оставляет только 96 самых свежих файлов, а остальные удаляет (96 по полчаса = 2 суток).
    Ответ написан
  • PhpMyAdmin за Nginx+Apache2?

    Sanes
    @Sanes Автор вопроса
    location ~ ^/phpmyadmin/* {
        proxy_pass http://127.0.0.1:8080;
    	 server_name_in_redirect off;
    	 proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_connect_timeout 60;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
    }

    <VirtualHost 127.0.0.1:8080>
    	ServerAdmin webmaster@localhost
    	DocumentRoot /var/www/html
    	ErrorLog ${APACHE_LOG_DIR}/error.log
    	CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    Ответ написан
  • Форма обратной связи на PHP с отправкой на почтуl. Как реализовать в одном файле?

    Назовём файл index.php
    Его содержимое будет выглядеть следующим образом:
    <?php
    $name = trim($_POST['name']);
    $email = trim($_POST['email']);
    $phone = trim($_POST['phone']);
    $message = trim($_POST['message']);
    
    // указываем адрес отправителя, можно указать адрес на домене Вашего сайта
    $fromMail = 'admin@yousite.ru';
    $fromName = 'yousite.ru Форма';
    
    // Сюда введите Ваш email
    $emailTo = 'youemail@gmail.com';
    $subject = 'Форма обратной связи на php';
    $subject = '=?utf-8?b?'. base64_encode($subject) .'?=';
    $headers = "Content-type: text/plain; charset=\"utf-8\"\r\n";
    $headers .= "From: ". $fromName ." <". $fromMail ."> \r\n";
    
    // тело письма
    $body = "Получено письмо с сайта testsite.ru \n Имя: $name\nТелефон: $phone \n E-mail: $email\nСообщение: $message";
    
    // сообщение будет отправлено в случае, если поле с номером телефона не пустое
    if (strlen($phone) > 0) {
        $mail = mail($emailTo, $subject, $body, $headers, '-f'. $fromMail );
    }
    
    ?>
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>Форма обратной связи на PHP с отправкой на почту</title>
    </head>
    <body>
    <h2>Форма обратной связи на PHP</h2>
    <!--Данные введенные пользователем обрабатываются кодом в mail.php-->
    <form action="index.php" method="post">
        <!--Тег используется для группировки связанных элементов в форме-->
        <fieldset>
            <!--Тег задает заголовок для групповых элементов-->
            <legend>Оставьте сообщение:</legend>
            Ваше имя:
            <!--Устанавливает однострочное текстовое поле ввода:-->
            <input type="text" name="name">
            <!--Используется для полей ввода, которые должны содержать адрес электронной почты.-->
            E-mail:
            <input type="text" name="email">
            Номер телефона:
            <input type="text" name="phone">
            Сообщение:
            <!--Тег разрешает многострочный ввод текста.-->
            Текстовая область может содержать неограниченное количество символов-->
            <textarea rows="10" cols="45" name="message"></textarea>
            <!--Устанавливает кнопку для отправки данных формы в обработчик формы.-->
            <input type="submit" value="Отправить сообщение">
        </fieldset>
    </form>
    </body>
    </html>

    Замените youemail@gmail.com на Ваш e-mail, на него будут приходить письма.
    Замените yousite.ru на адрес сайта, на котором будет располагаться форма
    Ответ написан
  • Хранение файлов на удаленном сервере?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Если файлы меньше 1.5гб, то самый простой способ - класть файлы на второй сервер http-POST-ом, в базу сохранять путь до этого файла, пользователю отдавать прямую ссылку на файл на втором сервере по http.
    Ну то есть что-то в духе такого:
    0) есть 2 сервера, отвечают на domain.tld и на http://files1.domain.tld, соответственно.
    1) при аплоаде файла делается http-post в, например, http://files1.domain.tld/upload/что-тотам, где что-тотам = уникальный идентификатор файла в базе (случайное имя или что-то вроде).
    2) при запросе этого файла с основного сайта, пользователю подсовывается ссылка на http://files1.domain.tld/что-тотам (можно с защитой от hot-linking'a, как примитивную защиту от прямого скачивания файла).

    На втором сервере может быть установлен только голый nginx с upload-модулем. Можно и через PHP всё это делать, впрочем.
    Ответ написан
  • Куда двигаться дальше senior разработчику? Новый язык, технологии, opensource, стартап?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Как вы это делаете?! За 17 лет работы в ИТ у меня ни разу не возникало вопроса "Куда двигаться?", только "Где взять времени на освоение всего этого бесконечного изобилия технологий, углублённого изучения уже знакомого и реализацию множества идей?"
    Ответ написан
  • Как быстро создавать типовые сайты на Laravel?

    @mamayama
    Смысла лишено.
    Создавать быстро типовые - это к CMS. А выбранная вами технология - это фреймворк. Что предполагает затачивание под конкретную задачу.
    Это не быстрый путь априори.
    Ответ написан
  • Почему Yii/Yii2 не подходит для крупных проектов?

    @karminski
    Senior PHP /React.js developer
    У нас в компании 4 энтерпрайзных проекта на Yii2. В том числе CRM. В том числе и связь с телефонией, 1С, баг-трекером. Всё работает отлично, без нареканий. О каких "слабых" местах вы говорите? Прекратите читать - начните делать!
    Ответ написан
  • Почему люди не используют готовые cms, но ищут тех, кто будет писать с нуля?

    @mletov
    Чистый php, фреймворк и cms - это 3 уровня абстракции.

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

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

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

    Чем ниже уровень абстракции, тем выше квалификация специалиста.

    PS Как и любая аналогия, эта весьма условна и предполагает, что домохозяйка во всех 3 случаях работает на совесть и является профессионалом. В реальной жизни часто бывает, что на чистом php делают гораздо больший хардкор, чем собирают на CMS.

    По итогу: в зависимости от сложности задачи и уникальности фукционала, специалист должен выбирать, какой уровень из этих 3 уровней абстракции ему использовать. Хоть они и пересекаются, но не очень сильно, и конкуренции друг для друга почти не представляют. Далеко не факт, что ваш знакомый, который "изучил 10 cms", сможет эффективно решать те задачи, которые ставят работодатели, нанимающие "много программистов что бы они копались в коде"
    Ответ написан
  • Как изолировать сайты на VPS?

    @Erelecano
    Админю сервера, починяю примуса.
    lxc
    каждого в своей контейнер
    Ответ написан
  • Как создать бюджетное android приложение?

    gadfi
    @gadfi
    https://gamega.org
    Дешевле всего нанять студента без опыта, сделает уг, но его потом можно дорастить до чего то лучшего, правда опять же за счет студентов, нормальные разрабы за то чтобы копаться в том говнокоде заломят еще больше

    ЗЫ Tiberal, ACCNCC ребята это все же не фриланс биржа, как то мимо тематики ресурса ответы
    Ответ написан
  • Какой фрэймворк выбрать Yii 2 или Symfony 2?

    IvanCher
    @IvanCher
    Мысли шире
    Симфонисты не работают с yii2 и не до конца понимают о чем пишут :)
    Я скажу так: оба фреймворка на высоте, по возможностям одинаковы, но подходы очень разные.
    Объективно скажу так: на yii2 не получится запускать отдельные модули без запуска всего приложения, тут у симфони2 огромный плюс. Так же у симфони более классные консольные команды для генерирования каркасов, мне больше нравится, чем gii(но дело вкуса). Но по факту большинство сильных сторон симфони не оправдывается в связи с высоким порогом вхождения. Найти хорошего симфони программиста намного сложнее, чем найти его на yii2. Поэтому взависимости от бюджета и масштаба проекта можете выбирать. Симфони2 - это больше уровень корпораций, yii2 более простой при практчески том же функционале.
    Если знаете симфони2, то лучше подтяните его. Yii2 изучить намного проще, намного всё прозрачнее внутри работает, там Вам хватит пару вечеров, чтобы пройтись по исходникам и всё для себя понять как изнутри как работает.
    Ответ написан