• Исходя из чего в Yii формируется имя элемента массива $_POST при отправки данных из _form?

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

    З.Ы. Вместо $_POST лучше используйте HttpRequest
    Ответ написан
    Комментировать
  • Как не испортить html тэги при замене текста?

    OlegLazarenko
    @OlegLazarenko
    Признаюсь, вашу регулярку так и не осилил.. Почему именно от 1 до 10 символов в начале и конце непонятно?

    Набросал вот что, посмотрите..

    $pattern = preg_quote("Nokia");
    $value = '$1<a style="background-color: red; color: white;" href="http://ya.ru/">$2</a>$3';
    $content = file_get_contents('http://hi-tech.mail.ru/review/Nokia_Lumia_630-rev.html', "r");
    $exp = "/(<[^aA][^>]*?>[^<\"]*?[^\w])($pattern)([^\w][^>\"]*?<)/i";
    $content = preg_replace($exp, $value, $content);
    echo $content;


    Вроде выполняет то, что нужно. Текст внутри непарных тегов не заменяет. Так же не заменяет внутри тега <а>, хоть он и парный. И не трогает текст внутри кавычек "".

    оно?
    Ответ написан
  • Как определить временной промежуток на node?

    @andreyzenkov
    javascript developer
    Юзай moment.js лучшая библиотека для работы с временем и датами.
    Ответ написан
    Комментировать
  • Новичок в php, неправильно отображается код, что делать?

    zooks
    @zooks
    Frontend
    Поменять видеоуроки на те, в которых не умалчивается, что для запуска PHP в браузере должен быть установлен веб-сервер и сам PHP.
    Ответ написан
    Комментировать
  • В чем ошибка при создании триггера?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    ; забыли после инсерта
    Ответ написан
    Комментировать
  • Как получить список доменов, на которые ссылается данный сайт?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Ищете регулярками все конструкции href="([^"]+)", выдираете из них домен, сохраняете куда нибудь.
    Ответ написан
    Комментировать
  • Как определить временной промежуток на node?

    @VoRez
    Backend web developer.
    if (now < nightStart && now > dayStart){
     //делаем то, что с 6:00 до 22:00
    }else{
     //делаем то, что с 22:00 до 6:00
    }
    Ответ написан
    Комментировать
  • Как правильно настроить PHPStorm7 для PHPUnit?

    janson
    @janson
    PHP-разработчик
    Действительно - проще всего с .phar файлом в конкретном проекте.

    Версию PHPUnit ставьте 3.7.XX. С четвёртой версией в PHPStorm 7 пока что баг с запуском тестов (в PHPStorm 8 EAP вроде починили). Вручную из консоли всё работает, а вот из PHPStorm - ругается.

    Как запустить:
    1. Создаём структуру проекта, как по данной вами ссылке:

    |-src
    |   |-autoload.php
    |   |-Money.php
    |
    |-tests
        |-MoneyTest.php


    В файле autoload.php нужно подключить файлы, которые вы собираетесь тестировать.

    <?php
    require_once __DIR__ . '/Money.php';


    2. Настраиваем конфигурацию PHPUnit:
    Run -> Edit Configurations...
    В левой верхней части появившегося окна жмём зелёный плюс и настраиваем конфигурацию:
    - устанавливаем Test Scope на 'Directory' и указываем путь к папке tests
    88950935cf654d2d9913317a82873cc6.png
    - жмём на гаечный ключ и настраиваем путь к phpunit.phar (если у вас локально используется папка с PHPUnit - то подключаете её в File -> Settings -> ProjectSettings -> PHP ... Include Paths, и затем в настройках PHPUnit переключаем на Load From Include Path).
    73258cc7bdf54d138d5cf60708810d02.png
    - также указываем default bootstrap file на наш autoload.php, где подключаем классы, которые собственно будем тестировать (где лежат сами тесты мы указали для PHPUnit в начале).
    - Жмём Apply -> Apply -> OK

    Всё, теперь рядом с созданой конфигурации на панели PHPStorm появилась зелёная стрелка для запуска тестов. Жмём, и если всё правильно - получаем зелёную полосу.
    c3371b9827824186b099c19932bbfac7.png

    Т.е. процесс настройки - это три шага:
    1. указываем где лежит PHPUnit
    2. указываем где лежат тесты
    3. указываем где лежит загрузчик тестируемых классов.

    Вроде всё.
    Ответ написан
    1 комментарий
  • Поможет ли дополнительная оперативная память?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    На самом деле информации очень мало. Чрезвычайно. Дело даже не столько в юз-кейсе, сколько в таких банальных вещах, как ОС и возраст ПК. Очень печально видеть таких кул-хацкеров, которым на всё один ответ - ставь SSD. Я тоже таким был. Пока руки не выпрямил. Теперь краткий ликбез:

    Об SSD: оно быстрое, причём не столько по скорости чтению/записи, сколько по времени доступа, отчего IOPS взлетает до небес; однако, потребительские диски - 10k перезаписей на ячейку, что при интенсивном раскладе убьёт пол диска за год (ну в общем, как винда любит); да, дополнительные плюшки, вроде меньшего энергопотребления и практически полного иммунитета к тряске хоть и имеют место быть, однако они больше необходимы в лаптопах; ах да, SSD бесшумны - это круто, но на любителя, мне нравится детектить работу ПК по шуму.

    Об RAM: это очень зависит от ОС, точнее Windows/НЕWindows. Объясняю - это исчадие ада очень любит кэшировать. Кэшировать всё и вся. А ещё. Оно очень расточительно на память. Видимо подсистемы пишут не просто разные люди, но и даже не контактирующие никаким образом друг с другом. По опыту скажу, что очень часто инженерные решения в Windows примерно такие: если можно что-то сделать так или иначе, то здесь это сделано и так и иначе. От чего оверхэд колоссален. Причём с повышением цифры всё только хуже - фичи добавляют, оптимизировать забывают. От этого система почему-то очень не хочет выгружать индексацию, например, освобождая доступ приложениям. А ещё, ещё в Windows есть где-то глубоко утечка. Лечится только перезагрузкой. Ну это у меня ноутбук аптайм неделями держит - приходится перезагружатся таки иногда.

    О файле подкачке: не знаю, кто вообще так назвал swap; нормальные системы могут работать без свапа, эта не может (разве только если есть >16ГБ RAM); не знаю, где проблема, однако похоже, что Windows зачем то вместо того, чтобы забыть кэш диска, очень хочет убрать неактивные приложения в свап.

    Об износе: самое первое при первое что изнашивается - дерьмовые планки RAM. Так уж случилось, что в дешёвых RAM гнилые кондеры, да и сама логика не ахти, так что со временем заряд держит всё хуже и хуже. Отсюда проблемы - тайминги надо повышать, да вот только кто об этом заботиться будет. Ошибки хлынут, ОС их бережно разбирает и переподгружает (видимо для этого swap), однако это всё становиться невыносимо медленно.

    Окей, получается что если:
    + ОС время от времени залипает
    + ОС иногда убегает под синие шторы
    + ОС порядком надоела заботой о пользователе с сообщениями о нехватки памяти
    + Диспетчер задач прогнозирует скоры апокалипсис по причине 99% занятой физической памяти
    + После перезагрузке полчаса-час работать можно относительно спокойно

    то настало время поменять RAM. Именно поменять, а не добавить, не скупитесь, старая RAM будет только тянуть новую на дно. Смею предположить, что планкам больше 2х лет - это примерный срок службы плохих планок RAM. В следующий раз рекомендую брать не бюджетные решения kingston, а каких-нибудь корсаров, дороже в полтора раза, зато хоть на 10 лет =), как установил эмпирический опыт.

    Теперь об SSD. Не советую сейчас. Серьёзно. Эта штука ещё толком не нагрелась, хотя возраст у неё приличный. Они уже почти не страдают детскими болезнями, но до сих пор не хватает действительно хороших предложений на рынке. Подождите совсем чуть-чуть тут уже анонсируют интересные плюшки. Впрочем потребительский сектор уже почти готов для SSD, на мой таки сугубо личный взгляд твёрдотельные на стационаре - перебор.

    Чуть чуть про HDD. Они прекрасны. На самом деле. Они очень живучи - до сих пор HDD на 160 ГБ трудится, хотя ему почти 10 лет (на то время это было очень очень); сейчас я на него смонтировал рут и не знаю бед. За время его безотказной работы устали 2 SSD (один из них был взят как-только SSD появились и его объём был скромные 60 ГБ) и три гибрида. Причём один из гибридов перепрошили мне на работу "без твёрдотельного кусочка" - до сих пор в NAS стоит. Гарантийный ремонт дисков - это банальная замена, поберегите данные и нервы. К слову, посмотрите в SMART, возможно просто плохо именно этому накопителю.

    Ещё меньше про новую платформу. И да и нет. Если ничего серьёзного не требуется (какой-нибудь фиче-related программинг) - не обязательно. Хотя CPU тоже изнашивается, да. Ну а по поводу Core i3 - ни в коем случае. Обратите внимание на Pentium GXXX - уникальные камни, дешёвые, быстрые, холодные. Если честно Core i3 - огрызок. Если и Core, то хотя бы i5 - тут и Turbo Boost нормальные, и Hyper Threading даёт заметные 0-150%. Хотя платформу было бы обновить не плохо.

    Итоги. Если таки решитесь на SSD - почитайте вот здесь. Там много ссылок, интересных и не очень, может помочь. Если таки решитесь на обновление платформы, учтите, что здесь придётся обновить всё. Не просто камень перевоткнуть, а минимум - поменять мат. плату.
    Ответ написан
  • Какие системы управления проектами с диаграммой Ганта Вы знаете?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    google.drive диаграмма ганта легко рисуется руками в экселе.
    удобно если привыкнуть.

    из специализированных проектов нравится smartsheet.com но они хотят 15$ в месяц что на мой взгляд перебор за их продукт.

    А так проекты в Jira, версия на 10 пользователей стоит 20$ разово, правда память у сервера жрет не по детски =(

    PS еще есть www.gantter.com сам не щупал
    Ответ написан
    Комментировать
  • Почему когда использую float теряется высота родителя?

    Элементы с float создают новый контекст наложения и выпадают из потока элементов.
    Ответ написан
    7 комментариев
  • Зачем каждый диод подключать на отдельный резистор?

    TomasHuk
    @TomasHuk
    1 При незначительном увеличении тока через светодиод, время его работы сокращается.
    2 При параллельном включении прямой ток будет неравномерно распределяться между диодами (так как разные диоды имеют разное сопротивление).
    3 Диод, обладающий наименьшим сопротивлением, будет брать на себя больший ток в прямом направлении. И в определённых обстоятельствах это превышение может оказаться критичным и произойдёт пробой диода.
    4 Это приведет к увеличению тока через другие светодиоды. Что приведет к выходу из строя следующего диода и так далее.
    Ответ написан
    Комментировать
  • Зачем каждый диод подключать на отдельный резистор?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если включить все диоды параллельно через один резистор, то ток ограниченный резистором будет делиться между всеми включенными диодами. Т.е. яркость будет плавать в зависимости от количества включенных диодов.
    Ответ написан
    Комментировать
  • Какими были самые первые 3 вопроса на Тостере?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    test?
    qwerty?
    hello world?
    Ответ написан
    Комментировать
  • Как можно оптимизировать мой код php+mysql?

    nowm
    @nowm
    Можно не только сократить количество запросов, но и сделать код немного аккуратнее и безопаснее.

    <?php
    // Эта строчка — где-то в другом файле — где в данный момент инициализируется соединение с БД
    $db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'username', 'password');
    
    $sth = $db->prepare("
        SELECT 
            t.`id`, 
            DATE_FORMAT(rt.`data`, '%d.%m.%Y') remont_date,
            ma.`name` marka,
            mo.`name` model,
            t.`serial`,
            rt.`work_id`,
            rt.`sum`
        FROM `tech` t 
        LEFT JOIN `remont_tech` rt ON rt.`tech_id` = t.`id` AND rt.`status` <> 'delete'
        LEFT JOIN `marka` ma ON ma.`marka` = t.`marka`
        LEFT JOIN `model` mo ON mo.`id` = t.`model`
        WHERE 
            t.`user` = ? AND
            TIMESTAMPDIFF(DAY, rt.`data`, NOW()) BETWEEN 0 AND 30
        ORDER BY rt.`data` DESC
    ");
    $sth->execute(array($myrow['id']));
    $result = $sth->fetchAll();
    ?>
    <table>
        <tr>
            <th>№</th>
            <th>Дата</th>
            <th>Оборудование</th>
            <th>Проделанная работа</th>
            <th>Сумма</th>
        </tr>
        <?php if (!count($result)) : ?> 
            <tr>
                <td>0</td>
                <td colspan="4">Ничего не найдено.</td>
            </tr>
        <?php else : ?> 
            <?php $summ = 0; ?>
            <?php foreach ($result as $key => $row) : ?> 
                <tr>
                    <td><?= $key+1 ?></td>
                    <td><?= $row['remont_date'] ?></td>
                    <td><?= sprintf('%s %s(%s)', $row['marka'], $row['model'], $row['serial']) ?></td>
                    <td><?= $row['work_id'] ?></td>
                    <td><?= number_format($row['sum'], 0, ',', ' ') ?> руб.</td>
                </tr>
                <?php $summ += $row['sum']; ?>
            <?php endforeach; ?> 
            <tr>
                <td colspan="3"></td>
                <td><b>ИТОГО:</b></td>
                <td><b><?= number_format($summ, 0, ',', ' ') ?> руб.</b></td>
            </tr>
        <?php endif; ?> 
    </table>


    А всякие: рамки таблицы, ширины ячеек и прочее — лучше в файле со стилями прописывать, а не инлайном. Их там гораздо проще обслуживать.
    Ответ написан
    Комментировать
  • Как можно оптимизировать мой код php+mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Второй запрос можно объединить со всеми следующими:
    SELECT `rt`.`sum` AS `sum`, `rt`.`work_id` AS `work_id`, `t`.`serial` AS serial, `mk`.`name` AS `marka`,
                `md`.`name` AS `model`, DATE_FORMAT(`rt`.`data`, '%d.%m.%Y') AS `data` 
        FROM `remont_tech` AS `rt` 
        LEFT JOIN `tech` AS `t` ON `rt`.`tech_id` = `t`.`id`
        LEFT JOIN `marka` AS `mk` ON `t`.`marka` = `mk`.`id`
        LEFT JOIN `model` AS `md` ON `t`.`model` = `md`.`id`
        WHERE `rt`.`tech_id` = '$techs_id'
            AND `rt`.`status` != 'delete'  
            AND TO_DAYS(NOW()) - TO_DAYS(`rt`.`data`) <= 30
        ORDER BY `rt`.`data`
    Ответ написан
    5 комментариев
  • Как полностью удалить MariaDB и заменить на MySQL?

    SLIDERWEB
    @SLIDERWEB
    ИТ-Куроводитель
    apt-get remove / purge не подходят?
    Я не извращененц, но опишите позы, пожалуйста. Может вы к ней, просто, не стой стороны зашли?
    Ответ написан
    1 комментарий
  • Как упростить работу с relations в Yii?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Может имеет смысл денормализировать таблицу то? А так это вполне себе нормально. Либо пишите геттер. А вот перекрывать магические методы не стоит - мало того что для этого лучше геттеры подходят, так еще и люди после вас на проекте видят такого рода говнокод и расстраиваются.
    Ответ написан
    1 комментарий
  • Как упростить работу с relations в Yii?

    EnChikiben
    @EnChikiben
    В главной модели написать метод:
    public function get%attributeName%(){
       return $this->%relationName%->%attributeName%;
    }

    вызывать:
    $model->get%attributeName%(); // вариант 1
    $model->%attributeName%; // вариант 2

    можно еще перекрыть yii магический метод __get
    Ответ написан
    1 комментарий