Загадки квартальной сети гомельских лесов

Гомель окружен несколькими лесными массивами. Массивы леса прорезаны квартальными просеками, многие из которых (скорее всего, самые старые) имеют верстовую разметку (я рассказал об этом здесь). Но кроме того, азимут, под которым прорублены эти просеки, как оказалось, во многих случах практически одинаков! Причем в разных участках леса, на километры удаленных друг от друга.

Для проверки этого факта я использовал спутниковый снимок местности T35UQU_20191122T091311_TCI_10m, полученный европейским спутником Sentinel-2A, и доступный для загрузки на Copernicus Open Access Hub (требуется бесплатная регистрация).

Вот первый пример — восточная часть Шабринского леса (леса между Гомелем и Добрушем) — угол между направлением просеки (красная линия) и горизонталью составляет 54-55°:

Читать далее

Старое русло Ипути в Шабринском лесу

На весенних снимках (сервиса Яндекс.Карты) леса между Гомелем и Добрушем (Шабринский лес) среди вечнозеленых хвойных лесов заметны темно-коричневые характерно изгибающиеся полосы, примыкающие к Ипути:

Вот как они выглядят в более крупном масштабе:

Ширина некоторых полос достигает полутора сотен метров:
русло Ипути

Я полагаю, что это — следы старого русла Ипути. Я выделил их на карте и отметил характерные точки:

Читать далее

Шутки юмора программиста… для тех, кто понимает :-)

Things to commit just before leaving your job
(то, что нужно закоммитить в проект перед увольнением)

// Just before switching jobs:
// Add one of these.
// Preferably into the same commit where you do a large merge.
//
// This started as a tweet with a joke of "C++ pro-tip: #define private public",
// and then it quickly escalated into more and more evil suggestions.
// I've tried to capture interesting suggestions here.
//
// Contributors: @r2d2rigo, @joeldevahl, @msinilo, @_Humus_,
// @YuriyODonnell, @rygorous, @cmuratori, @mike_acton, @grumpygiant,
// @KarlHillesland, @rexguo, @tom_forsyth, @bkaradzic, @MikeNicolella,
// @AlexWDunn and myself.

// Easy keyword replacement. Too easy to detect I think!
#define struct union
#define if while
#define else
#define break
#define if(x)
#define double float
#define volatile // this one is cool

// I heard you like math
#define M_PI 3.2f    --> число Пи вернулось к истокам
#undef FLT_MIN #define FLT_MIN (-FLT_MAX)
#define floor ceil
#define isnan(x) false  --> всё есть число :-)

// Randomness based; "works" most of the time.
#define true ((__LINE__&15)!=15)
#define true ((rand()&15)!=15)   --> истина не вечна ;-)
#define if(x) if ((x) && (rand() < RAND_MAX * 0.99))   --> случаи, они всякие бывают

// String/memory handling, probably can live undetected quite long!
#define strcpy(a,b) memmove(a,b,strlen(b)+2)
#define strcpy(a,b) (((a & 0xFF) == (b & 0xFF)) ? strcpy(a+1,b) : strcpy(a, b))
#define memcpy(d,s,sz) do { for (int i=0;i<sz;i++) { ((char*)d)[i]=((char*)s)[i]; } ((char*)s)[ rand() % sz ] ^= 0xff; } while (0)
#define sizeof(x) (sizeof(x)-1) --> байтом больше, байтом меньше, какая разница :-)

// Let's have some fun with threads & atomics.
#define pthread_mutex_lock(m) 0  --> свободу мьютексам!
#define InterlockedAdd(x,y) (*x+=y)

// What's wrong with you people?!
#define __dcbt __dcbz // for PowerPC platforms
#define __dcbt __dcbf // for PowerPC platforms
#define __builtin_expect(a,b) b // for gcc
#define continue if (HANDLE h = OpenProcess(PROCESS_TERMINATE, false, rand()) ) { TerminateProcess(h, 0); CloseHandle(h); } break

// Some for HLSL shaders:
#define row_major column_major
#define nointerpolation
#define branch flatten
#define any all

Источник — https://gist.github.com/aras-p/6224951

Как защититься от атаки DNS Rebinding посредством dnscrypt

Сейчас набирает популярность обсуждение (и, скорее всего, использование) эксплуатации Интернет-уязвимости, связанной с DNS      —     атаки «DNS Rebinding » .

Как же отбить такую атаку? Используем утилиту dnscrypt (ее более подробное описание можно посмотреть здесь)!

  1. Включаем в файл настроек утилиты dnscrypt-proxy.toml секцию с указанием имени файла, содержащего блокируемые IP-адреса:
    DNS Rebinding
  2. Создаем в папке утилиты dnscrypt текстовый файл ip-blacklist.txt, в который заносим блокируемые диапазоны адресов:
    DNS RebindДля частных сетей IANA выделены такие диапазоны адресов:
    10.x.x.x , 172.16.x.x – 172.31.x.x , 192.168.x.x.
  3. Перезапускаем клиент с помощью команды service-restart.bat:
    DNSCrypt
  4. Готово!

Читать далее

«Охота на лис» — моя первая игра на HTML5/JavaScript

Осваивая создание HTML5-приложений, я решил написать игру, в которую играл еще на советских программируемых калькуляторах МК-61 и МК-52 — «Охота на лис»:
логическая игра на HTML5

«Охота на лис» — это логическая игра, цель которой — найти «лис», спрятавшихся на игровом поле за меньшее число ходов. Игра создана по мотивам спортивной радиопеленгации («охоты на лис» (foxhunting) — ARDF (Amateur Radio Direction Finding). В этом состязании предлагается с помощью радиопеленгатора найти на труднопроходимой пересеченной местности за возможно меньший период времени заданное количество (обычно пять) установленных в произвольных местах радиопередатчиков, которые и называются «лисами».
Читать далее

Мое баловство с Q-learning или ML + Python + Pygame

Q-learning (калькированный термин — Q-обучение) — это один из алгоритмов реализации метода машинного обучения с подкреплением (reinforcement learning, RL).
Рассмотренный далее пример «Q-learning in action» может оказаться полезным для новичков в этой области.
Человечек (агент, agent) агентный подход живет в плоском мире размером 11 на 11 клеток (environment):
q-learning
Агент может пошагово совершать действия, а каждое действие (action) заключается в попытке перемещения на соседнюю клетку по любому из 8 направлений:
машинное обучение
(«попытке», так как выход за границы мира запрещен — можно считать, что граница «выталкивает» агента в прежнюю позицию):
В мире агента имеются стены , которые не пускают агента на занятые ими клетки, и ловушки , «телепортирующие» агента в начальную позицию.
Состояние (state) агента на каждом шаге (step) описывается его позицией — порядковым номером клетки:

Стартовая позиция агента в начале эпизода (episode) — верхний левый угол, цель агента — достичь конечной позиции — правого нижнего угла по кратчайшему пути.
Вся прелесть алгоритма Q-learning в том, что он работает тогда, когда агент даже и не знает КАК добиться желаемого результата («model-free»).

Читать далее

Палеорусла рек в окрестностях Гомеля или Днепр впадал в … Десну

По «обычным» спутниковым снимкам трудно оценить реальные размеры русла той или иной реки. В этом случае лучше использовать цифровую модель рельефа (DEM — digital elevation model). В качестве информации о рельфе местности можно использовать данные, полученные в ходе миссии SRTM (Shuttle Radar Topography Mission), выполненной шаттлом Эндевор (Endeavour) в феврале 2000 года. Результаты миссии содержат данные о высотах геоида EGM96 с разрешением в 1 угловую секунду (около 30 метров).

Данные цифровой модели рельефа были использованы для обнаружения русел палеорек в Египте , исследования палеорек в бассейне Амазонки , поиска древнего оазиса в Китае.

Небольшая терминологическая справка:
долина — полая протяженная форма рельефа, по которой протекает река, и выработанная водой; наиболее глубокую часть долины занимает русло реки (наверно, стоит добавить — нынешнее русло); принято полагать, что долины европейских рек выработаны потоками талой воды при отступлении ледника (таким образом, долину можно назвать палеоруслом (англ. paleochannel);
(меженное) русло — часть долины, по которой протекает река в период низкой водности;
пойма — часть долины, затапливаемая в половодье.

Вот как выглядит цифровая модель рельефа, на которой хорошо заметны русла/долины рек, для окрестностей Гомеля:

А вот как выглядят (палео)русла крупных рек:

Читать далее

Бабочки в нашем саду или моя фотоохота … на бабочек, стрекоз и пауков

Бабочки — украшение сада. Эти порхающие существа так хочется рассмотреть… Конечно, бабочек можно добыть посредством энтомологического сачка. Но гуманнее и интереснее ловить бабочек в объектив фотокамеры. Ниже я привожу результаты своей «фотоохоты» на эти милые создания (мои трофеи — 13 видов бабочек, 3  вида стрекоз и 1 вид пауков)..

Голубянки

Вот такую симпатичную бабочку я приметил летом на нашем участке:
голубянка икар
голубянка икар
(3 июня 2018 года)
фотографии бабочек
(9 августа 2017 года)

Как я смог определить, это бабочка из семейства голубянок (лат. Lycaenidae) и, скорее всего, вида голубянка икар (лат. Polyommatus icarus). Читать далее