magnify
formats

Автоматическая проверка номера в очереди в МДОУ г. Петрозаводска.

Опубликовано: 19.09.2013 Автор: в ,

Наваял примитивный скрипт checkMDOU.php для автоматического отслеживания номера в МДОУ г. Петрозаводска, благо теперь есть доступ к электронной очереди (Система «Дошкольник»). Шлет электронное письмо, если номер изменился. Подразумевается все-таки, что номер в очереди только убывает…8) Выкладываю для общей пользы (не забудьте поменять LOGIN, PASSWORD, PATH, EMAIL):

/**
* Проверка авторизации на сайте
*/


function isAuth($data){
   return preg_match('/<a href="\/site\/logout"/Usi',$data);
}

/**
* Отсылка электронного письма
*/

function sendmail($email, $subject, $message) {
    // To send HTML mail, the Content-type header must be set
    $headers  = 'MIME-Version: 1.0'."\r\n";
    $headers .= 'Content-type: text/html; charset=UTF-8'."\r\n";
    // Additional headers
    $headers .= 'To: '.$email."\r\n";
    $headers .= 'From: '.$email."\r\n";

    mail($email, $subject, $message, $headers);
}

// Данные для авторизации на сайте
$ch = curl_init();
$url = 'https://mdou.petrozavodsk-mo.ru/site/login';

// !!!ВПИШИТЕ!!!
$login = 'LOGIN';
$password = 'PASSWORD';
$pathdb = 'PATH';

// email куда слать письмо
// !!!ИЗМЕНИТЕ!!!
$email = 'EMAIL';

// Тема письма
$subject = "ИЗМЕНЕНИЕ ОЧЕРЕДИ В МДОУ";

curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); // сохранять куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE,  dirname(__FILE__).'/cookie.txt');
curl_setopt($ch, CURLOPT_POST, 1); // использовать данные в post
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
    'LoginForm[username]'=>$login,
    'LoginForm[password]'=>$password,
    'x'=>10,
    'y'=>11
));

// Пытаемся авторизоваться
// Если успешно, то достаем номер в очереди посредством XPath
if (isAuth($data = curl_exec($ch))) {
    $document = new DOMDocument();
    @$document->loadHTML($data);
    $selector = new DOMXPath($document);
    $nodes = $selector->query('//div[@id="content"]/span[@class="num"]');
    if ($nodes->length !== 1) {
   $cur_num=-1;
    } else {
   $cur_num = $nodes->item(0)->nodeValue;
    }
    curl_close($ch);
} else {
    // В противном случае отсылаем почту о невозможности авторизации на сайте
    $message = '
    <html>
    <head><title>Невозможно проверить номер</title></head>
    <body>
    <p>Внимание! Невозможно проверить номер очереди в МДОУ г.Петрозаводска</p>
    <p><b>Проверьте сайт.</b></p>
    </body>
    </html>
    '
;

    $subject = "Невозможно проверить номер в МДОУ";
    sendmail($email, $subject, $message);
    curl_close($ch);
    exit;
}

// Проверяем наличие номера в локальной простенькой базейке
$db = new SQLite3($pathdb.'/mdou.db');

$id = $db->querySingle('SELECT id FROM queue WHERE number='.$cur_num);

// Если не нашли, то отсылаем сообщение об изменении номера в очереди
if (($id === NULL || $id === FALSE) && $cur_num !== -1) {
    $db->exec("INSERT INTO queue VALUES (null,".$cur_num.")");

    $message = '
    <html>
    <head><title>Изменение порядка очереди в МДОУ</title></head>
    <body>
    <p>Внимание! Изменился Ваш номер порядка в очереди в МДОУ г.Петрозаводска </p>
    <p>Новый номер: <b>'
.$cur_num.'</b></p>
    </body>
    </html>
    '
;

    sendmail($email, $subject, $message);

    $db->close();
    unset($db);
    // Пишем в лог про новый номер
    echo date(DATE_RFC2822).": Новый номер в очереди ($cur_num)\n";
} else {
    // Иначе пишем в лог, что изменений нет
    echo date(DATE_RFC2822).": Изменений нет ($cur_num)\n";
}

Cтавим расширение PHP для работы с SQLite и клиент:

apt-get install php5-sqlite sqlite3

Создаем базу:

$ sqlite3 mdou.db
sqlite> CREATE TABLE queue(id INTEGER PRIMARY KEY, number INTEGER);

Добавляем запуск скрипта в cron:

0 * * * * php /PATH/TO/SCRIPT/checkMDOU.php >>/PATH/TO/LOG/out.log 2>&1

Буду рад, если кому-то пригодится.

 
Просмотров: 539 | Комментариев нет  comments 
formats

Детский мобиль (карусель) на кроватку своими руками

Опубликовано: 18.09.2013 Автор: в

Честно говоря не очень хотелось тратить 2500-3000RUB (такова цена в наших магазинах) на такую полезную мелочь, как детский мобиль в кроватку, учитывая, что нужен он всего несколько месяцев. Естественно было принято решение сделать его самому, тем более, что его изготовление не займет больше одного вечера, а себестоимость на момент написания поста — 650RUB (если нет БП). Ну а музычку всегда можно включить отдельно, хотя никто не мешает купить и отдельную безделушку с мелодиями. Итак, приступим-с. Для его создания мне понадобились:

  1. Двигатель для поворотного стола СВЧ-печи (21V/AC). Он уже с редуктором и как раз обеспечивает необходимую скорость вращения 4-5 rpm. Есть и на 220V, но к кроватке вести такое напряжение не надо бы.
  2. Блок питания (БПП, это который переменного напряжения) на 19-21V.
  3. Корпус для моторчика. У меня отлично подошла мыльница.
  4. Выключатель + гнездо для БП + провода. Этого добра, как и двигателей навалом в магазинах радиоэлектроники.
  5. Две линейки для крестовины. К валу их я прикрепил через затянутую шайбу гровера. На самом деле лучше просверлить вал и в него продеть штифт или что-нибудь похожее для удержания крестовины. У меня просто не оказалось нужного сверла по металлу.
  6. Подручный крепеж (болтики, винтики, шайбы, клей). В общем что найдете.
  7. Четыре мягкие игрушки приблизительно одинакового веса
  8. Ленточки для декора и подвесов.
  9. И самое главное, прямые руки.

В общем процесс этот довольно творческий, так что смело применяйте воображение. Для иллюстрации процесса изготовления делюсь картинками и видео мобиля в работе:

Подвесные игрушки

Подвесные игрушки

Необходимые детали

Необходимые детали

Двигатель установлен

Двигатель установлен

Вид со стороны выключателя

Вид со стороны выключателя

Вид со стороны вала двигателя

Вид со стороны вала двигателя

Крестовина установлена

Крестовина установлена

Мобиль в сборе

Мобиль в сборе

Вот такой вот DIY-мобиль…8) Если кто найдет у себя в городе подходящий мотор-редуктор на 4-6 rpm для моделизма с приличным крутящим моментом, работающий от батареек, то это даже лучше вариант. Жаль, мне у себя такой найти не удалось.

 
Просмотров: 2 317 | 1 комментарий  comments 
formats

Грустные новости от Paypal

Опубликовано: 20.08.2013 Автор: в

Что произойдет с банковскими картами, привязанными к вашей счету PayPal?

Можно будет использовать банковские карты Visa, MasterCard, American Express или Maestro, выпущенные российскими банками.
С 16 сентября 2013 г. добавление к счету карты, выпущенной иностранным банком, будет невозможно.
Если вы еще не привязали российскую банковскую карту к счету PayPal, рекомендуем сделать это сейчас.

Что произойдет с банковскими счетами, привязанными к вашей учетной записи PayPal?

С 16 сентября 2013 г. появится возможность привязать счет в российском банке к учетной записи PayPal и выводить на него денежные средства.
С 16 сентября 2013 г. счета в банках США, привязанные к вашему счету PayPal, будут отключены.

Подробности здесь.

Получается, что, например, карты Payoneer будут отключены, и их использование с Paypal станет невозможным? Что за бред…

UPDATE 21.08.2013: Телефонная поддержка Paypal никакой официальной информации дать не может, они пока сами не знают, отвяжутся ли карточка и виртуальный счет. После 16 сентября пользователям будет предложено привязать российский счет/карту, и появится возможность вывода на российский рублевый счет. Что случится с иностранными счетами и картами Payoneer, будет известно ближе к 16 сентября. Что касается поддержки Payoneer, то они отметили, что им известны вводимые в России ограничения, и посоветовали обратиться в Paypal для уточнения, где ответа я так и не получил.

UPDATE 20.09.2013:
Ну что же, карточку отвязали и виртуальный счет Payoneer удалили. Так что теперь Paypal с Payoneer в России использовать не получится.

 
Просмотров: 563 | Комментариев нет  comments