https-клиент на python

Скрипт читает в переменную содержимое html-страницы:

# -*- coding: utf-8 -*-
import http.client
import ssl
print('Program started')

#выполнить http-запрос
print('Sending request to site...')
#https://stackoverflow.com/questions/39945702/httplib-httpsconnection-issue-certificate-verify-failed#39945733
conn = http.client.HTTPSConnection('kmsvsr.ru', timeout=5, context=ssl._create_unverified_context())

conn.request("GET", "/")
resp = conn.getresponse()
print(resp.status, resp.reason)

print('Reading answer...')
data = resp.read().decode()
print (data)

Скрипт не дописан, кто будет пользоваться — не забудьте добавить сюда обработку ошибок. А так по быстрому спарсить страницу пойдёт.

Из обобенностей: здесь в примере открывается сайт не по HTTP, а по HTTPS, при чём включен игнор ошибок, то есть код можно использовать для парсинга сайтов с самоподписанными сертификатами.

mssql как узнать, сколько места занимают таблицы в базе

Не моё, нашёл где-то в инете, но проверил, код рабочий, запрос очень помог

SELECT
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id  = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
WHERE
    t.NAME NOT LIKE  'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    -- t.Name
    UsedSpaceKB desc

Кухонный таймер на Bash для Raspberry Pi

Добавил своей малинке функцию кухонного таймера. Написал короткий скрипт для воспроизведения звукового файла через назначенный пользователем интервал времени. Скрипт получился такой:

#!/bin/bash
# kmstimer
echo "Таймер сработает через $1 минут"
for ((i=0; i<$1; i++))
  do
    echo "Прошло $i минут"
    sleep 60
  done
echo "Время вышло!"
echo "Время вышло" | festival --tts --language russian
mpg123 /home/pi/usr/share/sounds/default.mp3

Если на системе установлен синтезатор речи festival, то система получеловеческим голосом объявит, что время вышло, после чего воспроизведёт указанный в скрипте музыкальный файл.

Пример использования скрипта следующий:

/bin/kmstimer 15

где 15 — время в минутах.

Получившимся скриптом удобно пользоваться с android-смартфона, например через программу Raspi SSH. Добавляем новые кнопки с названием вроде «Таймер 15 минут (гречка)» и соответственно кодом «kmstimer 15» — таймер будет включаться нажатием одной кнопки на смартфоне.

C#: программа проверки полисов ОМС

2015-04-07 CheckPolis.exe — консольная прогамма для проверки полисов обязательного медицинского страхования через интернет. Запускается через командную строку так:

CheckPolis.exe XXXXxxxxXXXXxxxx XX.XX.XXXX
Результат выдаёт через stdout и как код возврата приложения
Возможные результаты:
* 0 — аргументы не заданы
* 1 — полис существует
* 2 — полис не существует
* 3 — ответ не распознан

Скачать

Написано за 4 часа. Некоторые события пока не обработаны. Исходный код:

/*
  * Created by SharpDevelop.
  * http://kmsvsr.ru
  * Date: 07.04.2015
  * Time: 17:47
  * 
  */
 
 /* args:
  * [0] - номер полиса
  * [1] - дата рождения
  * 
  * ответ программы:
  * 0 - аргументы не заданы
  * 1 - полис существует
  * 2 - полис не существует
  * 3 - ответ не распознан
  * 4 - ответ не получен
  * 5 - неведома ху...
 */
 
 using System;
 using System.Net;
 using System.IO;
 using System.Text;
 
 namespace CheckPolis
 {
     class Program
     {
         private static string POST(string Url, string Data)
         {// спасибо за функцию http://programmerinfo.ru/post_get/
           WebRequest req = WebRequest.Create(Url);
           req.Method = "POST";
           req.Timeout = 100000;
           req.ContentType = "application/x-www-form-urlencoded";
           byte[] sentData = Encoding.GetEncoding(1251).GetBytes(Data);
           req.ContentLength = sentData.Length;
           Stream sendStream = req.GetRequestStream();
           sendStream.Write(sentData, 0, sentData.Length);
           sendStream.Close();
           WebResponse res = req.GetResponse();
           Stream ReceiveStream = res.GetResponseStream();
           StreamReader sr = new StreamReader(ReceiveStream, Encoding.UTF8);
           //Кодировка указывается в зависимости от кодировки ответа сервера
           Char[] read = new Char[256];
           int count = sr.Read(read, 0, 256);
           string Out = String.Empty;
           while (count > 0)
           {
             String str = new String(read, 0, count);
             Out += str;
             count = sr.Read(read, 0, 256);
           }
           return Out;
         }
         
         public static int Main(string[] args)
         {
             if(args.Length > 1){ //если аргументов хотя бы два
                 //переменная в запрос с номером полиса
                 //ХХХХххххХХХХхххх
                 //переменная в запрос с датой рождения
                 //ХХ.ХХ.ХХХХ
                 string Data="polis=" + args[0] + "&birthday=" + args[1];
                 
                 //адрес страницы проверки полисов
                 string tfomsurl = "http://www.tfoms.e-burg.ru/citizens/check-the-relevance-of-the-policy/?type=special";
                 
                 //сюда получим страницу с ответом
                 string responseFromServer = "";
                 responseFromServer = POST(
                     tfomsurl,
                     Data);
                 
                 if(responseFromServer.Contains("<table class=\"wd-main data-table\">")){//если полис существует
                     Console.Write("1");
                     return 1;
                 }else if(responseFromServer.Contains("<h3 style=\"color: red\">")){//если полис не существует
                     Console.Write("2");
                     return 2;
                 }else{//если ответ непонятный
                     Console.Write("3");
                     return 3;
                 }
             } else { //справка по программе
                 Console.Write("0\nHelp:\nCheckPolis.exe XXXXxxxxXXXXxxxx XX.XX.XXXX");
                 Console.Write("\nhttp://kmsvsr.ru");
                 Console.Write("\nPress any key to continue . . . ");
                 Console.ReadKey(true);
                 return 0;
             }            
         }
     }
 }

BAT-скрипт для включения английского по умолчанию в окне входа

BAT-скрипт для включения английского по умолчанию в окне входа в Windows:

 Reg Add "HKU\.Default\Keyboard Layout\Preload" /V "1" /T Reg_Sz /D "00000409" /F
 Reg Add "HKU\.Default\Keyboard Layout\Preload" /V "2" /T Reg_Sz /D "00000419" /F
 echo "Сейчас компьютер будет перезагружен"
 pause
 shutdown /r /t 5