Делаем скриншоты в C# под .NET CF (из архивов)

Публикация из архивов, вдруг пригодится...
Столкнулся когда-то с необходимостью делать скриншоты с КПК, и так и не нашёл ни одной подходящей программы. А именно простой, маленькой и чтобы ничего не устанавливалось, но при этом работала.
Решил написать, часа два окучивал интернет по поводу того как это сделать - всё оказалось не так то просто, на мобильных устройствах через .NET в чистом виде не получится только через API.

Подробнее

Стандартные утилиты в MySQL

Стандартные утилиты в MySQL находятся в подкаталоге bin корневого каталога MySQL.

Список наиболее часто используемых утилит:

myisampack - Сжимает таблицы типа MyISAM, уменьшает их в размере и делает доступными только для чтения;

mysql - консольный клиент для доступа к MySQL серверу, позволяет выполнять SQL запросы и осуществлять администрирование сервера;

Подробнее

Пример работы с SerialPort в C#

Простой пример работы чтения поступающих данных из COM порта с использованием SerialPort на C#.

Всё довольно просто, для получения данных нам потребуется использовать событие DataReceived.

Пример:

private string stroka="";

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            this.Invoke(new EventHandler(DoUpdate));
        }
private void DoUpdate(object s,EventArgs e)
        {
            stroka = stroka + serialPort1.ReadExisting();
        }
Подробнее

Поиск и регулярные выражения в MySQL

СУБД MySQL имеет различные инструменты для осуществления поиска, среди которых оператор LIKE, осуществляющий простейшие операции поиска, оператор RLIKE, предоставляющий возможности поиска по регулярным выражениям.


Оператор LIKE

Оператор LIKE предназначен для сравнения строк с использованием простейших регулярных выражений. Оператор часто используется в конструкции WHERE и возвращает 1 или 0.


Сравнение строк не зависит от регистра, если не используется ключевое слово BINARY, означающее что строку следует рассматривать как двоичную последовательность.

Подробнее

Интерполяция строк в C#.

Интерполированная строка в C#, это строа перед которой находится символ $.

Такая строка может содержать специальные выражения в фигурных скобках:

int x = 18;
Console.Write($"Указанный возраст {x} лет."); // Выводит: Указанный возраст 18 лет.

Внутри фигурных скобо может находится любое допустимое выражение C# любого типа. C# преобразует значение value в string, используя метод ToString() или эквивалентный ему для выбранного типа.

Формат вывода может быть изменен добавлением выражения форматирования после двоеточия, например:

string s = $"223 in HEX format: {223:X2}"; // X2 - Двухзначный шестнадцатиричный формат числа.
// Результат \"223 in HEX format: DF\"


Интерполированная строка должна быть в одну строку или содержать дословный идентификатор "@", к примеру:

int x = 10;
string s = $@"The wall height is {
x} meters.";


Чтобы включить фигурную скобкук в интерполированную строку, надо просто повторить фигурную скобку дважды.

Подробнее

Пример преобразования XML в DYNAMIC и его использование.

Пример преобразования XML в DYNAMIC и его использование.

Для начала, нам понадобятся некоторые библиотеки:

using System;
using System.ComponentModel;
using System.Xml.Linq;
using Newtonsoft.Json;


Код:

string str = "<response><setter><name>Kiril</name></setter></response>";
XDocument doc = XDocument.Parse(str);
string jsn = JsonConvert.SerializeXNode(doc);
dynamic res = JsonConvert.DeserializeObject(jsn);

Console.WriteLine(res.response.setter.name);


Этот код преобразует строку string в XML, затем XML в JSON и затем в объект dynamic.
Затем из объекта получает свойство Name и выводит его в консоль.

Подробнее

Пример кконфигурации для FTP (vsftpd) с блокировкой пользователя в домашней папке.

Пример кконфигурации для FTP (vsftpd) с блокировкой пользователя в домашней папке.

IУстанавливаем FTP в Ubuntu:

sudo apt install vsftpd

Это просто.


Теперь открываем конфигурационный файл:

/etc/vsftpd.conf


Проверяем чтобы параметры в этом файле были как эти:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
ftpd_banner=Welcome to My FTP service.
allow_writeable_chroot=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO


Так-же создаем файл 

/etc/vsftpd.chroot_list

(если его не существует)

и добавляем в него коды пользователей, к примеру так:

1002
1003

Коды пользователей можно посмотреть в /etc/passwd


Перезапускаем FTP сервис, и пробуем подключиться по FTP.

Если у вас включен файрвол, тогда надо добавить в нем правила для 20 и 22 портов.

Теперь пользователь при входе по FTP будет блокирован в собственной домашней папке.

Домашняя папка пользователя может быть изменена в /etc/passwd

Подробнее

Пример создания последовательности SEQUENCE в MSSQL

Примр создания последовательности SEQUENCE в MSSQL:

CREATE SEQUENCE [dbo].[CardNum] 
 AS [bigint]
 START WITH 1
 INCREMENT BY 1
 MINVALUE -9223372036854775808
 MAXVALUE 9223372036854775807
 CACHE 
GO

Этот сккрипт создаст последовательность SEQUENCE CardNum с типом BIGINT и стартовым значением 1 в текущей базе данных.


Чтобы получить новое значение value из последовательности SEQUENCE:

set @card_num =  NEXT VALUE FOR [dbo].[CardNum];


Чтобы получить текущие свойства properties для последовательности SEQUENCE:

SELECT * FROM sys.sequences WHERE name = 'CardNum' ;
Подробнее