Задать вопрос
  • Как оптимизировать базу данных?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если TIME - реальное время, то одна таблица, если ограниченный нерасширяемый список ("утро', 'день', 'вечер', 'ночь')- одна таблица с ENUM, если расширяемый список, то две таблицы.
    Ответ написан
    Комментировать
  • Как лучше генерировать и выводить контент страницы?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Варианты 1 и 2 на мой взгляд равнозначны, хотя в редакторах с подсветкой синтаксиса вариант 1 будет выглядеть лучше. На мой взгляд код на php - программа, а не html с активными вставками, да и выглядит куча вставок <?= ?> не очень красиво. Поэтому я предпочитаю вариант 2, только записывая немного по другому.
    <?php
    echo '<table><tr><td>ид</td><td>имя</td></tr>';
    foreach($data as $user)
       echo "<tr><td>{$user['id']}</td><td>{$user['name'] }</td></tr>";
    echo '</table>';
    ?>

    Вариант 3 стоит использовать если заранее сложно определить, надо ли выводить блок, например
    <?php
    $content = '';
    foreach($data as $user)
        if ($user[name] == 'Вася')
            $content .= "<tr><td>{$user['id']}</td><td>{$user['name']}</td></tr>";
    if ($content !== '')
        echo "<table><tr><td>ид</td><td>имя</td></tr>{$content}</table>";
    ?>
    Ответ написан
    Комментировать
  • Как выбрать определенный столбец c предыдущей датой и добавить его в результирующий набор (mysql)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Как-то так
    SET @prev = 0;
    SELECT *, @prev AS prev, @prev := `remain` FROM (SELECT * FROM `op` ORDER BY `date`);
    Ответ написан
  • Почему реализовать C настолько сложно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    На самом деле C (не говорю про C++) - крайне простой и понятный язык. Встроенные типы в нём есть, мягкая статическая типизация тоже присутствует, практически всё, кроме логики выполнения самой программы, работает как раз через библиотеки.
    Транслировать в другие языки можно, но многие вещи, легко выполняющиеся на C в других языках будут выглядеть не лучшим образом, попробуйте на своём любимом языке написать аналог:
    unsigned char buf[1024];
    read(f, buf, 1024);
    unsigned long int *p = (unsigned long int *)(buf+*((unsigned long int *)(buf+2)));
    unsigned long int *q = (unsigned long int *)(buf+*((unsigned long int *)(buf+10)));
    for (p < q)
        *(p++) = 0;
    Ответ написан
    4 комментария
  • Как реализовать построение уровней развития игрока?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Первый вариант - количество очков для каждого следующего уровня растёт в арифметической или геометрической прогрессии, количество получаемых очков зависит только от сложности задания / уровня врагов.
    Второй вариант - для каждого уровня нужно одинаковое количество очков, количество получаемых очков зависит от соотношения уровня игрока и сложности задания / уровня врагов.
    В любом случае игра не должна допускать ситуации, когда игрок застревает в какой-либо локации из-за того, что противники и задания закончились, а уровня недостаточно для продвижения дальше.
    Ответ написан
    Комментировать
  • Есть ли бесплатное решение для облачной файлопомойки?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Один из вариантов - DRBD
    Ответ написан
  • Почему всплывающий блок появляется быстрее, чем заполняется?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Более грамотно - заполнение и показ блока делать в одной callback-функции, тогда блок не будет показан до заполнения. Сейчас у Вас блок будет показан даже если .get выдала ошибку - это правильно?
    Ответ написан
  • Как правильно спроектировать базу данных музыкальных наград?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Таблица `nominees` с полями `id_actor`, `id_award`, `is_win` - соответственно кто номинировался, на какую награду номинировался, выиграл ли. А запросы смотреть надо, обычно всё решается через JOIN'ы.
    Ответ написан
    Комментировать
  • Which destination addresses will be used by Host A to send data to Host C? (Choose two)

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А откуда вы взяли, что IP будут одинаковыми?
    Объяснение там вполне понятное. Хост A будет использовать IP-адрес хоста C, так как IP-адрес получателя не меняется при доставке пакета, и MAC-адрес интерфейса E0 маршрутизатора, так как он в данной схеме является шлюзом между сетями хоста A и хоста C.
    Ответ написан
    6 комментариев
  • Как реализовать лаконичную запись условий?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    if (!empty($category->pid)) {
        $rootCategory = Categories::model()->findByPk($category->pid);
        $categorySaved = ($category->isNewRecord ? 
                              $category->appendTo($rootCategory) :  
                              $category->moveAsFirst($rootCategory)
                         ) && $category->saveNode());
    } else {
        $categorySaved = ($category->isNewRecord || !$category->isRoot() && $category->moveAsRoot()
                         ) && $category->saveNode();
    }
    Ответ написан
    1 комментарий
  • Какие существуют сервисы отправки email?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для того, чтобы сообщения не попадали в спам лучше не пользоваться сервисами отправки. Зарегистрируйте почтовый ящик на публичном сервере поддерживающем SMTP и отправляйте через этот сервер с зарегистрированного адреса. Ещё лучше, но сложнее, развернуть свой свой почтовый сервер.
    Ответ написан
    Комментировать
  • Многоцелевой сервер в небольшой организации

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Asterisk - определённо Linux. Если используется плата аналоговых каналов (например, DAHDI), то сможете ли прокинуть её в виртуалку?
    2. Файлохранилище - Samba на Linux, один ресурс на Raid для важных данных и один на отдельном винте для хлама. Автоматическое удаление хлама через 20-30 дней после создания/последнего доступа.
    3. Сайт - в зависимости от реализации Linux или Windows.
    4. CRM - в зависимости от реализации Linux или Windows.
    Итого - если Asterisk перенести в виртуалку не удаётся, а сайт или CRM работают по Windows, то взять два сервера, иначе просто всё на один сервер с Linux без виртуализации.
    Ответ написан
  • Как передать атрибут при нажатии кнопки?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Способ 1.
    Каждую строку делаете формой добавляя скрытое поле с номером строки
    <input type='hidden' name='row' value='{$row}' />

    Способ 2.
    Каждую кнопку делаете с обработчиком нажатия
    <input type='button' onclick='javascript:sendData("{$row}");' value='Добавить' />
    В функцию sendData передаётся номер строки, по нему выбираете из таблицы поле ввода, получаете значение и передаёте на сервер.

    Способ 3.
    Каждую кнопку делаете с обработчиком нажатия
    <input type='button' onclick='javascript:sendData(this);' value='Добавить' />
    В функцию sendData передаётся DOM-элемент кнопки, через .parentNode добираетесь до <tr>, затем от него через .childNodes выбираете из первой ячейки номер строки, из поля ввода значение и передаёте на сервер.
    Ответ написан
    1 комментарий
  • Замена BBCode URL регулярным выражением

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Что-то вроде
    <a href="$1" target="_blank">($2 == '' ? $1 :  $2)</a>

    Сделайте регулярку нежадной, иначе что будет, если я вставлю две ссылки подряд?
    [url=http://google.ru]Сайт гугл[/url][url=http://yandex.ru]Сайт яндекс[/url]

    И не забывайте про проверку исходных данных. Что будет, если передать строку
    [url=http://google.ru]<script src="http://my.xackep.site/zlovred.js"></script>Сайт гугл[/url]
    Ответ написан
    Комментировать
  • Что php делает быстрее: парсит папку или БД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    БД позволит хранить дополнительные атрибуты фотографий - описание, порядок показа, размеры.
    Ответ написан
  • Сетевая инфраструктура для небольшой компании. На какой ОС-и основать? Как лучше сделать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Сетевую карту - однозначно гигабитную.
    2. Какие используются камеры. Если аналоговые - то сможете ли пробросить карту видеозахвата в виртуалку? Если IP, то лучше выделять камеры в отдельную сеть с отдельным сетевым интерфейсом на сервере.
    3. Видеокарту можно убрать, если она не используется софтом видеонаблюдения, для гипервизора достаточно встроенной карты. Если она нужна софту, то как её прокинуть в виртуалку?
    4. Для системы лучше взять аппаратный SAS-raid (например LSI MegaRAID SAS 9240-4i), зеркало на небольших SAS-винтах под операционку и 1С, отдельные SATA-винты под файлопомойку и видеонаблюдение.
    5. Если уж ставить виртуалки, то Ubuntu не нужна, ставьте XEN или HyperV.
    Ответ написан
    4 комментария
  • Как составить программу "Расставить знаки арифметических операций и скобки чтобы выполнялось равенство"?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    И нехилый такой переборчик получается.
    В варианте "расставить знаки и скобки в левой части, чтобы выполнилось равенство":
    Пусть строка цифр в левой части имеет длину n.
    1. Разбить всеми возможными способами строку на числа. То есть получаем от 1 до n чисел. Количество вариантов разбиения строки из n цифр на m чисел
    mwvtag8.png
    2. Так как в условии сказано про скобки, то операции могут выполняться в разном порядке. Для указания порядка операций по каждому массиву из m чисел можно построить бинарное дерево, используя элементы массива как листья. Каждое дерево будет содержать m-1 вершину. Количество таких деревьев (число Каталана)
    loo5xnj.png
    3. Каждая из вершин задаёт одну из четырёх математических операций (+, -, *, /). Таким образом, количество возможных формул для одного дерева
    kmr2zxr.png
    4. Если добавить унарные минусы, то их можно раставить для каждого из m листьев
    m57sarh.png
    Итого вариантов
    n546hm7.png
    После этого обходом дерева выполняем расчёт и, если результат правильный, выводим дерево в виде выражения со скобками. Вот количество вариантов для разных n (хотя часть из них и окажется дублями или математически неверными из-за деления на 0).
    +----+---------------------+---------------------+
    |  n | без унарных минусов | с унарными минусами |
    +----+---------------------+---------------------+
    |  1 |                   1 |                   2 |
    |  2 |                   5 |                  18 |
    |  3 |                  41 |                 290 |
    |  4 |                 320 |               5'938 |
    |  5 |               5'073 |             136'770 |
    |  6 |              64'469 |           3'379'794 |
    |  7 |             859'385 |          87'547'746 |
    |  8 |          11'853'949 |       2'345'800'050 |
    |  9 |         167'763'361 |      64'477'920'386 |
    | 10 |       2'422'342'053 |   1'807'930'569'874 |
    +----+---------------------+---------------------+

    Мне кажется, или действительно перебор? :-)
    Ответ написан
  • Лицензирование Windows Server терминала и клиенты Linux?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для начала надо определиться - лицензии "на пользователя" или "на устройство". Если пользователей больше, чем устройств, с которых будет работа в терминале (например, посменная работа), то надо брать лицензии "на устройство" по количеству устройств. Если наоборот (например, у каждого пользователя компьютер и планшет) - то лицензии "на пользователя" по общему количеству пользователей, работающих в терминале. По полученному числу закупаете RDS CAL - лицензии удалённого рабочего стола. Лицензий Server CAL закупаете не меньше, чем RDS CAL. Если есть компьютеры, с которых в терминале не работают, но к серверу подключаются (например, к расшаренному на сервере диску или принтеру), то на них тоже нужны лицензии Server CAL.
    Ответ написан
    Комментировать
  • Какой выбрать процессор под сервер Intel Xeon Ivy Bridge?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если пользователи будут работать прямо на сервере в терминальном режиме - то важнее количество ядер, если на сервере будет только сервер приложений 1С - то гигагерцы.
    Ответ написан
    3 комментария
  • Как можно оптимизировать мой код 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 комментариев