КОТ++
Прикладное программирование
Системное программирование
Программирование микроконтроллеров

Мы наблюдаем общество, которое все больше зависит от машин, но при этом использует их все неэффективнее. (с) Дуглас Рашкофф

Опубликовано
Комментарии 0

Привет, котаны! Я недавно подумал, что этот блог не совсем подходит для новичков в программировании. Т.е. я не даю каких-то основ или помощи начинающим программистам. И я решил, что это пора исправить. Эта статья откроет целый цикл статей, которые помогут освоиться в программировании новичку. Почему именно мой блог может помочь в этом? Ведь есть множество статей на данную тему и множество книг. Это верно. Но я не встречал публикаций, которые могут максимально точно заложить в новичка начальных знаний для некоторого понимания процесса программирования. Т.к. я практически самостоятельно прошёл путь от полного аномального непонимания программирования до уверенной разработки программных продуктов, то на своём опыте знаю что и как нужно объяснить человеку для этого. Сейчас прошу отойти от экранов опытных программистов, и остаться тем, кто только-только осваивается или хочет освоиться в мире программирования.

Базовые вещи, которые нужно знать, чтобы упростить понимание:
1. Программа – набор команд, которые компьютер выполняет по очереди.
2. Программа пишется, с помощью инструкций (команд), эти инструкции ещё называются операторами.
3. У программы всегда есть точка входа (место в коде откуда она запустится). Но так называемой точки выхода может и не быть, т.е. программа может и не быть (программа должна работать всегда).

Далее чтобы очень быстро окунуться в мир программирования лучше начать с практики. Т.е. предлагаю метод от к практике к теории. Ставите себе не очень сложную задачу по программированию, пытаетесь решить, в процессе решения возникнет много вопросов, которые просто нужно уметь правильно сформулировать и гуглить.

Например, я когда начинал изучать программирование почему-то захотел написать программу по переводу чисел из различных систем счисления в различные системы счисления. До этого я вообще ничего не умел и не знал в программировании. Некоторое время потупил в среде PascalABC и ко мне пришло хоть какое-то понимание. В итоге моя задача разбилась на несколько подзадач: ввод данных, разбиение числа на цифры, хранение этих цифр, проверка условий для перевода в нужную систему счисления из заданной, перевод, вывод рассчитанной информации. Далее эти подзадачи в голове разбивались ещё на подподзадачи и т.д. Годы практики и всё это тщательное обдумывание решения будет уже на автомате, нужен только опыт. А самое сложное это начать, преодолеть тот момент, когда мозг уже кипит, а понимания нет, просто нужно пытаться до тех пор пока не придёт это так называемое понимание.

Вот и вся базовая информация, которая поможет именно начать осваиваться в программировании. И для помощи начинающим в группе КОТ++ открываю обсуждение, в котором новички могут задать вопрос по теме программирования и я или другие опытные программисты возможно ответят советом, но это не точно

Теги , ,
Автор

Опубликовано
Комментарии 0

Всем привет! В этом посте хочу рассказать про такую интересную штуку как SDR. SDR – software defined radio или программно-определяемое радио. Т.е. радиоприёмник, который может принимать частоты в большом диапазоне и передавать принятые данные на компьютер для последующей их обработки.

Для многих эти слова ничего не значат, но с помощью дешёвого китайского sdr свистка, различных антенн, компьютера, простого программного обеспечения и прямых рук можно пощупать те чудеса, которые творятся в мире радио.
Что же мы можем увидеть или услышать в этом радио? ФМ радиостанции, АМ радиостанции, любительские радиопередачи, радиопереговоры различных государственных служб (такое делать не стоит никому), информацию с погодных спутников, информацию с самолётов (ADS-B). Если же взять более дорогой приёмник, который умеет видеть сигнал на чистоте пониже чем 24МГц, то можно найти ещё более интересные вещи, всякие зарубежные радиостанции, а ещё на частоте 4625 кГц вещает радиостанция судного дня УВБ-76.

Всё что нам понадобится, чтобы окунуться в мир радиоволн это дешёвый китайский DVB-T тюнер на базе RTL2832+R820T, диапазон частот 24МГц – 1750МГц, цена около 500руб. Купить можно тут. Антенна, которая идёт в наборе ни на что не годится (если всё же будете использовать только её, то поставьте её на металлическую поверхность, чтобы увеличить усиление). Поэтому сразу берите штыревую антенну и переходник для неё. Я предлагаю взять вот такую антенну, это штыревая телескопическая антенна, длина от 25см до 123см. Такая антенна позволит поймать большой диапазон частот, главное не забывайте, что длина волны должна быть кратна длине антенны. Длина волны рассчитывается как скорость света делённая на частоту. Длина волны равна длине полноволновой штыревой антенны. Но порой длина волны может быть и метр и несколько метров, в таком случае следует укоротить антенну в 2 (полуволновая антенна) или 4 (четвертьволновая) раза в пользу габаритов, но пожертвовав усилением. Так как коннектор на антенне BNC, а на тюнере MCX, то следует ещё взять такой переходничок.

После первого подключения sdr к компьютеру нужно установить правильный драйвер. Скачиваем SDRSharp. В комплекте с программой есть утилита zadig, с помощью которой и осуществляется установка драйвера для rtl-sdr. Далее можно работать уже непосредственно с программой SDR# и слушать радиоэфир. Инструкций по более подробной настройке и установке полным полно в интернете. Здесь же я выкладываю максимально интересную и нужную информацию, а не рутину. Если статьи по SDR зайдут, то возможно напишу целую серию статей на эту тему, к тому же мыслей по этому поводу много.

Скрины работы программы SDRSharp при подключенном RTL-SDR:

Теги , ,
Автор

Опубликовано
Комментарии 0

Proxy Checker – программа предназначенная для проверки прокси серверов на работоспособность.

Разработана мной на C# за 1 вечер. Изначально для личных целей, а потом подумал выложить для всех, программа простая, думаю многим пригодится)

Ссылка для скачки: Proxy Checker

Теги , ,
Автор

Опубликовано
Комментарии 0

Этот пост небольшая заметка о том, как мутануть оповещения во ВК с помощью Node.js. Почему на ноде спросит кто-нибудь, и я скажу, что нода потрясающий инструмент для быстрой и удобной реализации серверных программ. Напишем с вами вот такую либу, которая позволит легко запилить себе оповещения во ВК:
var request = require('request');
var deasync = require('deasync');

var url_get_access_token = "https://oauth.vk.com/token?grant_type=password&client_id=3697615&client_secret=AlVXZFMUqyrnABp8ncuU&username="
+ YOUR_LOGIN + "&password=" + YOUR_PASS + "&scope=4096&v=5.60";

var token = "";

init = function()
{
	request(url_get_access_token, function (error, response, body) 
	{
		if (!error && response.statusCode == 200) 	
		{
			var jObject = JSON.parse(body);
			token = jObject.access_token;
		}
	});
	while (token === "")
	{
		deasync.runLoopOnce();
	}
	return this;
}

sendMessage = function(text)
{
	request(encodeURI("https://api.vk.com/method/messages.send?access_token=" + token + "&user_id=" + YOUR_ID 
	+ "&message=" + text.replace(new RegExp("#", 'g'), "")), function (error, response, body) 
	{
		if (!error && response.statusCode == 200) 	
		{
			console.log(body);
			var obj = JSON.parse(body);
			if ((obj.error) && (obj.error.error_code == 5))
			{
				init();
				sendMessage(text);
				console.log("token false");
			}
		}
	});
}

module.exports.init = init;
module.exports.sendMessage = sendMessage;
Расскажу вкратце что тут происходит. Самое интересное это то, что приложение во ВК создавать не нужно, мы будем использовать данные официального приложения ВК для андроид и соответственно использовать методы API VK через него. Как это мы сделаем? Просто заюзаем client_id и client_secret чужого приложения.
Какие в этом плюсы?
1) Не надо создавать лишний раз приложение.
2) Гораздо меньше лимитов на отправку, т.к. приложение официальное.
Реализовано всего две функции: инициализация (получение токена) и отправка сообщения. В подробности реализации вдаваться я не хочу, тем более это просто пример.

А так можно использовать нашу либу в проекте:
var vk = require('./libs/vk').init();
...
vk.sendMessage(message);

Для тех кто скажет: "а почему бы не использовать готовый sdk для ноды?". Потому что ради одной функции отправки сообщений не целесообразно тянуть целое sdk.

Теги ,
Автор

Опубликовано
Комментарии 0

Сейчас я вам расскажу как сделать, чтобы ваша программа автоматически заносила в буфер данные из консоли. Зачем это нужно? Вдруг ваша программа делает какие-то безумно большие расчёты, а потом весь вывод вам нужно скопировать и использовать где-либо ещё для дальнейшей обработки.

Чтобы реализовать данную задачу будем использовать возможности платформы .NET

Как это работает: используем класс System.Diagnostics.Process для создания нового процесса с командной строкой. В командную строку на вывод перенаправляем простой echo вместе с командой clip.
Например:

echo yo | clip

скопирует в буфер обмена «yo»

Чтобы работать с несколькими строками будем использовать несколько echo (каждый echo переносит строку), чтобы отдать команде clip все наши echo будем использовать скобочки, например:

(echo yo & echo niga) | clip

И в завершение данного поста предлагаю посмотреть как это можно удобно упаковать в отдельные функции и использовать в своих программах:

var strClip: string;

procedure ClipStartOut();
begin
strClip := 'echo ';
end;

procedure ClipWriteLn(s: string);
begin
strClip += s + '& echo ';
end;

procedure ClipWriteLn(s: integer);
begin
strClip += s + '& echo ';
end;

procedure ClipExitOut();
begin
strClip := strClip.Remove(strClip.LastIndexOf('& echo'), 6);
var proc := new System.Diagnostics.Process();
proc.StartInfo := new System.Diagnostics.ProcessStartInfo('cmd', '/C (' + strClip + ') | clip');
proc.Start();
end;

begin
ClipStartOut();
ClipWriteLn(66);
ClipWriteLn(99);
ClipExitOut();
end.

Для начала работы с буфером надо вызвать процедуру ClipStartOut, для отправки текста в буфер - ClipWriteLn, для помещения всех данных отправленных через ClipWriteLn в буфер - ClipExitOut.

Всем clipboard, пасаны!

Теги ,
Автор

| 1 | 2 | 3 | 4 | 5 | | 8 |