Задать вопрос
  • Как реализуется легкопонятная дата поста/комментария?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Считаем разницу от текущего времени
    Если меньше минуты - выводим "только что"
    Иначе если меньше часа - выводим "XX минуту/минуты/минут назад"
    Иначе если меньше суток - выводим "XX час/часа/часов назад"
    Иначе если меньше двух суток - выводим "вчера"
    Иначе если меньше трёх суток - выводим "позавчера"
    Иначе если меньше месяца - выводим "XX день/дней/дня назад"
    ...
    Ответ написан
    Комментировать
  • Как обобщить скрипт?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Как то так

    <div class="rating">
    <a href="#" class="up" name="voite1">↑</a>
    <a href="#" class="down" name="voite1">↓</a>
    <input type="hidden" value="1" class="btn" />
    <input type="hidden" value="1" class="dtn" />
    <span id="numb">37</span>
    </div>


    $(function(){
        $('.up').click(function(){
            var btn = $(this).siblings('.btn').val();
            if (btn<2){
                var number = $(this).siblings('span').text();
                var dtn = $(this).siblings('.dtn').val();
                ++number;
                $(this).siblings('span').text(number).removeClass("red").addClass("blue");
                ++btn;
                --dtn;
                $(this).siblings('.btn').val(btn);
                $(this).siblings('.dtn').val(dtn);
            }
        });
        $('.down').click(function(){
            var dtn = $(this).siblings('.dtn').val();
            if (dtn<2){
                var number = $(this).siblings('span').text();
                var btn = $(this).siblings('.btn').val();
                --number;
                $(this).siblings('span').text(number).removeClass("blue").addClass("red");
                ++dtn;
                --btn;
                $(this).siblings('.btn').val(btn);
                $(this).siblings('.dtn').val(dtn);
            }
        });
    });
    Ответ написан
    Комментировать
  • Какой алгоритм использовать лля определения доступности временного промежутка?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Поразмыслив пришёл к варианту:
    SELECT count(*) AS x FROM records 
        WHERE (begin BETWEEN '{$newRecordBegin}' AND '{$newRecordEnd}') OR
              ('{$newRecordBegin}' BETWEEN begin AND end)

    Первая часть условия - начало какой-либо старой записи попадает в середину новой.
    Вторая часть - начало новой записи попадает в середину какой-либо старой .
    Если хоть одно условие выполнено - count(*) > 0, вставлять запись нельзя.
    Ответ написан
    Комментировать
  • Как решается проблема в MySQL socket: '/var/run/mysqld/mysqld.sock' port: 3306?

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    0. Пытаемся вставить новую запись newRecordStart, newRecordLength
    1. Получаем две ближайшие по времени записи, одну до (prevRecordStart, prevRecordLength) и одну после новой (nextRecordStart, nextRecordLength).
    2. Новая запись не должна пересекаться с предыдущей:
    (newRecordStart >= prevRecordStart+prevRecordLength)
    3. Новая запись не должна пересекаться со следующей:
    (newRecordStart+newRecordLength <= nextRecordStart)
    4. Если оба условия выполнены - можно вставлять запись.
    Ответ написан
    Комментировать
  • Как победить ошибку "You have an error in your SQL syntax" в MySQL?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Не используйте mysql_, он в статусе depricated. Используйте mysqli или PDO.
    2. Любые строки в запросе SQL должны быть взяты в кавычки. Вы пытаетесь сравнить колонку `title` с колонкой `ПОСТЕЛЬНОГО`.
    3. Не используйте запросы, собранные из переданных извне строк. Что будет, если в $_POST['title'] передать строку "';DROP TABLE products;--"? Вместо этого используйте параметризацию запросов через bind_param.
    4. Не ленитесь читать вопросы, которые задавали до вас. Точно такой же вопрос был всего пару часов назад.
    Ответ написан
    Комментировать
  • Что значит DEFAULT в выражении CREATE DATABASE в mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Так.
    CREATE DATABASE `abc` CHARACTER SET = 'utf8';
    SHOW CREATE DATABASE `abc`;
    +----------+--------------------------------------------------------------+
    | Database | Create Database                                              |
    +----------+--------------------------------------------------------------+
    | abc      | CREATE DATABASE `abc` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    +----------+--------------------------------------------------------------+

    То есть слово DEFAULT добавляется автоматически при необходимости. /*!40100 */ означает, что этот код будет обрабатываться в mysql 4.01.00 и выше.
    Ответ написан
    Комментировать
  • Как средствами php сравнить два больших массива?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Получить список файлов из папки.
    2. Получить список файлов из базы.
    3. Отсортировать оба списка по алфавиту (можно прямо на шагах 1 и 2, но надо чтобы порядок сортировки был одинаковым).
    4. Построчно сравнивать списки, отмечая те строки, которые есть только в одном списке.
    Ответ написан
    Комментировать
  • Стабильно работающая связка сервер+клиент VNC под windows7?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пользуюсь TightVNC, проблем с раскладкой не замечал. А скорость и будет невысокая, VNC основан на передаче изменившихся областей экрана как картинок.
    Ответ написан
    Комментировать
  • Как максимально быстро конвертировать координаты html imagemap из rect в poly?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ну, самый быстрый способ всё-таки на регулярке.

    sed -ri 's/shape="rect"\s+coords="([0-9]+),([0-9]+),([0-9]+),([0-9]+)"/shape="poly" coords="\1,\2,\3,\2,\3,\4,\1,\4"/i' filename
    Ответ написан
  • Что именно меняется в алгоритме работы squid`a при включении режима "прозрачного прокси"?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Авторизации в прозрачном режиме не будет, в squid она отключена из-за ошибки в IE, который при отсутствии настройки прокси и ответе HTTP 407 Proxy Authentication Required выдаёт ошибку.
    Можно раздавать адрес прокси через WPAD используя DHCP или DNS (Firefox понимает только DNS). Для этого необходимо поднять web-сервер, раздающий файл wpad.dat и дать ссылки на него на DHCP сервере и на DNS-сервере домена, в который входит компьютер.
    Ответ написан
    2 комментария
  • Как организовать вход в админку сайта администратору?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Нормальных вариантов не так много - админка на https для сайта на http, site/admin, admin.site/, кнопка или ссылка на странице.
    А извращаться можно по разному, например ввод какого-нибудь кода в поле одной из форм на сайте, привязка к ip администраторов, ручное задание кукиса, несколько невидимых областей на странице по которым нужно кликнуть в определённом порядке...
    Ответ написан
    Комментировать
  • Какая есть программа для классификации файлов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Попробуйте на perl, он кроссплатформенный, небольшие скрипты на нём пишутся очень легко.
    Ответ написан
  • Почему вот этот код не работает? Где тут проблема?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Что будет в вашем запросе, если ему передать
    $globaloutput = "0'); DROP TABLE IF EXISTS `users`;--"

    Сделайте лучше через bind, так гораздо безопаснее и не надо вручную эскейпить строки.
    $req = $mysqli->query("INSERT INTO projects VALUES(0, ?, ?, ?, ?, ?)");
    $req->bind_param("issss", $name, $ur_name, $startdate, $globalinput, $globaloutput);
    $req->execute();
    Ответ написан
    1 комментарий
  • Как сделать AD авторизацию на корпоративном сайте?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Попробуйте через Kerberos - mod_auth_kerb
    acksyn.org/?p=460
    Ответ написан
    1 комментарий
  • Как проверить изображение на корректность и отсутствие вредоносного кода?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Чтбы понять, что там, всё равно придётся сначала скачать файл. А дальше можно его как угодно анализировать, например через finfo в php. Можно сначала получить заголовок через запрос HEAD, убедиться, что файл существует и определить его объём.
    И уж конечно никакие полученные от клиента данные не должны писаться в базу без контроля. Как минимум mysqli::bind.
    Ответ написан
    Комментировать
  • С чего начать организацию сети из компов в школе?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Бесплатно сможете использовать только *NIX. Win системы для школ хоть и идут по дешёвой академической лицензии, но всё равно только сам сервер стоит около 7000, а к нему ещё нужны пользовательские лицензии.
    Если найдётся выделенный компьютер под Linux, то на нём можно одновременно развернуть интернет-шлюз (firewall, squid, squidGuard, lightSquid) и файловое хранилище (Samba3). Можно попробовать поднять и контроллер домена на Samba4, но сам его не использовал и про стабильность ничего сказать не могу.
    Удалённое подключение можно организовать штатными средствами Windows по RDP (удалённый рабочий стол), для подключения из дома нужен фиксированный ip-адрес или динамический DNS в школе и проброс порта на шлюзе. Но при подключении по RDP отключается локальный рабочий стол. Для просмотра того, что происходит на компьютере без полного перехвата управления подойдёт бесплатная TightVNC.
    Как защиту от баловства школьников посмотрите в сторону систем заморозки состояния, например DeepFreeze, Shadow Defender. Они после перезагрузки возвращают сохранённое состояние компьютера.
    Добавьте на все компьютеры административного пользователя. Ограничьте права остальных пользователей до уровня "Пользователь". Покопайтесь в групповых политиках, очень много можно запретить через них, только при отсутствии домена настраивать придётся каждый компьютер отдельно.
    Ответ написан
    2 комментария
  • Архитектура MySQL таблицы: строки или числа

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пусть в вашей таблице объектов есть поле objectId - идентификатор объекта. Создадим дополнительную таблицу, связанную по полю objectId с таблицей объектов. Таблица содержит поля номера сервиса serviceNum и его статуса serviceStatus.
    CREATE TABLE `service_states` 
      `objectId` BIGINT NOT NULL DEFAULT '0',
      `serviceNum` INT NOT NULL DEFAULT '0',
      `serviceState` tinyint(1) DEFAULT '0',
      PRIMARY KEY (`objectId`,`serviceNum`),
      KEY `byServiceState` (`serviceState`),
      KEY `byServiceNum` (`serviceNum`))
    ENGINE=InnoDB DEFAULT CHARSET=utf8';

    Запрос всех объектов, аналогичный вашему, будет выглядеть как
    SELECT * FROM `test_b` as tb
    RIGHT JOIN `service_states` as ss USING(objectId)
    WHERE ss.serviceNum = 3 AND ss.serviceState = 2;
    Ответ написан
  • С чего начать организацию сети из компов в школе?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В оптимуме - один компьютер под *NIX для интернет-шлюза и два компьютера под WinServer с контроллерами Active Directory (основной и резервный). На одном из них WSUS для автоматического обновления Windows.
    1, 2. Расшареный каталог на одном из Windows серверов или Samba на *NIX.
    3, 6. Программы удалённого управления - TeamViewer, Remote Admin, бесплатная - TightVNC.
    4. Файрвол на шлюзе и прокси-сервер со списком белых адресов, например Squid.
    5. Либо расшаренные папки, либо переносимый профиль Active Directory с ограничением объёма файлов.
    7. Настройка прав, обычный пользователь не должен работать с правами выше "Пользователь". Можно через Active Directory.
    8. SMS или позвонить по сотовому.

    Начать лучше с поиска средств, поскольку удовольствие не из дешёвых, два Windows Server и минимум Windows Pro на компьютер каждого пользователя (Windows Home в домен не включить). Затем поднимать домен, вводить в него все компьютеры под Windows, заводить учётки и раздавать права. Поднимать WSUS. Ставить шлюз, прокси со связкой к AD, определять список разрешённых адресов. Поднимать файловый сервер на одном из Windows Server или на *NIX (Samba), привязывать к домену, создавать папки и распределять права.
    Ответ написан
    Комментировать
  • php interactive mode

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    > php -a
    Interactive mode enabled
    
    echo "123\n";
    <?php
    echo "345\n";
    345
    ?>
    Ответ написан
    Комментировать