БлогNot. Блог ПерСа

программирование php учебное список textprocessing числа ретро люди дата ссср история война личное rip qt софт windows политика быт медицина ссылки html css форматы общество россия шахматы сон алкоголь c++ алгоритм studio памятка мошенничество bat патч игра javascript графика время random зомбоящики видео c# форум социалки стихи спам взлом безопасность все теги все комментарии свежие изменения


[1-15] [16-30] ... [2671-2685] [2686-2687]


Прикреплённое сообщение, правила и всё такое

Остеклить балкон, лоджию в Новосибирске? Проверено, Вам сюда

Encoding: UTF-8 (Unicode). Primary language: Russian. Для полноценной работы блога нужны включённые в браузере картинки + Javascript + Cookies. Ссылки, открывающие новое окно (вкладку), везде подсвечены.

Даже по законам Эрефии этот блог - не СМИ, все сообщения выражают личную точку зрения автора блога и являются оценочными суждениями, при этом любые совпадения мест, имён, названий и действующих лиц далеко не случайны. В блоге нет файлов, способных нанести вред Вашему компьютеру или мобильному устройству. Если Вам не исполнилось 18+, срочно отвалите отсюда, прикиньтесь ветошью и не отсвечивайте покиньте этот блог. Учтите, что читая его, Вы вторгаетесь на мою личную территорию :) Страница статьидалее...
19.01.2038, 15:15 [13518]


PHP: простейшее распределение ресурсов по принципу "занято-свободно"

Исходная ситуация - типичное распределение ресурсов по принципу "занято-свободно" (номера в гостинице, темы курсового и т.п.), когда повторное занятие ресурса не допускается вплоть до пометки его как свободного.

Скрипт предназначен для небольших объёмов данных, изменения может вносить "вручную" администратор, знающий пароль, просто переключением чекбоксов, по которому происходит автосохранение на стороне сервера.

Ресурсы бьются на категории, имеющие имена (номера комнат, предметные области тем), в каждой категории может быть разное количество ресурсов (записей), но они могут быть занумерованы в естественном порядке 1, 2, 3...

Данные хранятся в обычном текстовом файле, при первом запуске скрипт создаст его себе по массиву data, в котором описаны названия категорий и количество ресурсов в каждой из них (см. листинг).

Другие две настройки - пароль администратора и имя файла, все они показаны в начале листинга.

Наверное, скрипт нетрудно расширить, введя описания для чекбоксов и т.п., но это будет уже программка другого класса сложности. Ниже показаны ссылка на скрипт в работе (с реальными данными) и исходник на момент написания (PHP8, проверен на локалхосте XAMMP). Предполагается, что скрипт будет работать в кодировке Юникода UTF-8 и в ней же сохранять данные. Страница статьидалее...
13.05.2021, 17:14 [14]


Горбачёв

Потерявшаяся заметка от начала марта 2021-го, когда Горбачёву исполнилось 90. Нашёл после того, как вдруг увидел сегодня М.С. во сне, второй раз в жизни.

Горбачёв. Человек, без которого мы не видели бы и тех нескольких глотков свободы, которые смогли жадно втянуть в "перестройку" и некоторое время после.

Человек, которого чтят в остальном мире, а большинство жителей нашей страны считает эталоном предательства и некомпетентности.

Давайте представим на месте Горбачёва меня, ну или Вас, мой умный читатель.

Мне в наследство осталась огромная, разношёрстная, мало приспособленная для жизни страна, устроенная по порочному ленинско-сталинскому национально-территориальному признаку.

У её насельцев есть положительные стороны: Страница статьидалее...
12.05.2021, 10:47 [29]


Горький вкус Победы

О Дне Победы и "победобесии" последних лет (гадковато выглядит словечко, но ведь и явление оно описывает гадкое) написано очень много, думаю, повторяться незачем. Разве что пару самых ярких запомнившихся мне "предпобедных" ссылок.

В честь приближающегося 9 мая в Докшицком районе устроили инсценировку казни жителей.

Трусы Победы. А я-то 10 лет назад "для смеха" заказывал труселя на патриотические темы, но помещать на них символику той войны мне бы и в голову не пришло...

"Завоевав победу, мы не получили свободу" - констатировал самую суть писатель-фронтовик Василь Быков ещё в 2001-м. Страница статьидалее...
09.05.2021, 16:24 [33]


Qt: как запускать виджет без запроса библиотек dll

В последних сборках Qt появилось встроенное решение и уже не нужно искать сторонних.

Полноценной статической линковки с "упаковкой" библиотек "внутрь" exe'шки вы не получите, но сможете собрать все ресурсы приложения в одной папке, которую можно затем, например, упаковать в саморазворачивающийся или обычный архив и распространять как отдельное приложение.

Предполагаем, что у нас Qt Creator под Windows, хотя в целом подход годится и для других операционок. Вот алгоритм действий, проверенный мной для небольшого виджета с графическим интерфейсом. Страница статьидалее...
08.05.2021, 10:58 [31]


В этот день 20 лет и 43 года назад

Прямо рубрика напрашивается, из серии "сравнить жизнь" (тогда) и убожество (ныне).

6 мая 2001-го, мы - свободны, на минивэне впятером, едем в поля и леса, столько клещей в начале мая ещё не бывает, чумы и вечных президентов - тем более.

Я, Слава, с нами только его жена, моя подруга и её подруга, никаких детей, собак и проч., СВОБОДА!

Заворачиваем в этническую шашлычную точку, где Славу, как постоянного уважаемого клиента, хорошо знали, а потому не попытались бы наскипидарить, подсунув, например, вонючую козлятину вместо нежной бараньей вырезки. Личное знакомство - вообще главный принцип Востока и сопряжённых с ним территорий, в т.ч., Сибири. "Дома - гость, за околицей - добыча" - до такого прямого восточного лицемерия здесь не доходит, но всё равно довольно выражено. Без личного знакомства и десятка яиц в канун Пасхи не купишь. Страница статьидалее...
06.05.2021, 20:51 [36]


PHP: ещё одна небольшая авторасстановка тегов

В очередной раз было лень расставлять теги "руками", то есть, нажимая кнопочки, вспомнил об этом простом решении, его оказалось легко адаптировать и к тому, что понадобилось сейчас.

На входе - текстовый файл в кодировке Юникода UTF-8, более-менее вычитанный, конечно. Формат для разметки должен быть максимально простым, я свой описал прямо в файле "теста", который приведу "как есть" с разрывами строк: Страница статьидалее...
01.05.2021, 13:44 [31]


Чего не случилось в апреле

Лог месяца в этот раз особо не получится, во-первых, я его не вёл, а во-вторых, нужно ли тогда во-вторых? :)

Диалоги из чатега, срач с запутинскими троллями, переписку, иногда даже небезынтересную, как-то не хочется нынче, в Вальпургиево утро, когда вся нечистить торжествует, постить.

Осталась пара историй из жизни, пара заметок для будущих историй, несколько припомнившихся фраз, этим и ограничимся. Страница статьидалее...
01.05.2021, 10:44 [36]


14 не пригодившихся задач за апрель 2021

Для быстрого поиска на странице нужного слова нажимайте комбинацию клавиш Ctrl+F в браузере. Большинство кодиков использует контейнеры STL, классы, побитовые операции или рекурсию. Как и в других заметках нерегулярной серии, это по-прежнему консольные приложения, проверенные в актуальной сборке Visual Studio 2019.

1. Заданы 2 целочисленных матрицы одинакового размера. Вывести только те элементы, которые встречаются в каждой из матриц. Не использовать больше двух вложенных циклов.

Учтём тот факт, что элементы матрицы последовательно упорядочены в памяти по строкам. Страница статьидалее...
30.04.2021, 22:30 [50]


Есть ли статическая линковка в Visual Studio

Из серии часто задаваемых вопросов :)

"Как сделать, чтобы программа, скомпилированная в Studio, запускалась на "чистой" Windows, без необходимости иметь установленный Visual Studio Redistributable Pack?", и т.п.

Кратко говоря, ключ /MT

Ввести его можно вот как: верхнее меню Проект - Свойства - C/C++ - Создание кода - Библиотека времени выполнения = /MT, Применить. Потом выбрать из списка конфигурацию Release вместо Debug и пересобрать проект (верхнее меню Сборка - Очистить проект, затем Перестроить).

При этом должна быть выключена поддержка CLR-среды, то есть, для приложений "с интерфейсом", давно уже являющихся не полноценными EXE'шками, а корявыми CIL'ами, подход не сработает. Страница статьидалее...
28.04.2021, 19:52 [51]


Электронная очередь

Ходили надысь с ребёнком в путинскую поликлинику напротив через бульвар, так уж получилось, что закрыть дитю "больничный" на предмет справки в школу показалось проще там. После рабочего дня, откуда свалил пораньше, припёрлись к 17:30. Человек 40 яжемам, грызущихся на темы "вас тут не стояло" - картина обычная, как и то, что многие приходили, занимали очередь, а потом, выдержав в духоте, антисанитарии, масках, детском гвалте, кашле и скученности от 5 до 15 минут, сваливали, никого не предупредив "за кем они стояли", народ-то у нас вежливый, культурный и сочувствующий другим. Но "живая очередь" - тварь хоть и отвратительная, но живая, рано или поздно она самоорганизуется, начинает писать номерки на ладонях, выдвигает из своей среды лидеров и т.п., в общем, проходит все обычные этапы эволюции.

В нашем случае анамнез значительно осложняло то, что присутствующие делились на два неравных класса - торжествующие "по записи" и жалкие "без записи", примерно равные по численности. Давно отчаявшись выяснить в регистратуре логику слов "по записи" и "без записи", начал от скуки узнавать это у яжемам.

Одна яжемама, родившаяся, похоже, даже позже того, как я начал делать сайты, попыталась с пафосом рассказать мне, темноте, о записи на приём через сайт "Госуслуги". Подавилась словами, возможно, по одному моему взгляду поняв, что что-то пошло не так.

Оказалось, речь именно и идёт о виртуальной и абсолютно бессмысленной "электронной очереди", формируемой сайтом "Госуслуги", и никак не связанной ни с реальным графиком работы врачей, ни с наличием в больнице тех, кто действительно пришёл за помощью, ни с базами данных больницы, тем более, что таких баз и не существует в природе. Зато можно по зомбоящикам рассказывать.

Народная мудрость нашла выход - идут "через одного", те, кто "по записи" и "без записи". Причём, наличие "записи" подтверждается только словами :)

Ребёнок по собственной инициативе была одета в настоящую имеющуюся у неё форму старлея медслужбы по размеру, ну, бывшая владелица формы, старлей медслужбы, мелковата была :) Как офицеры-разведчики в тылу врага, мы затаились и стали выжидать момента. Страница статьидалее...
27.04.2021, 19:50 [60]


Как запустить консольное приложение с нужным размером окна консоли

Имеется консольное приложение Windows, которое "хитрит" с окном консоли, например, в простейшем случае, такое:

#include <iostream>
#include "windows.h"
using namespace std;

int main() {
 int width = 50, height = 30;

 HWND hWnd = GetConsoleWindow();
 HMENU hm = GetSystemMenu(hWnd, FALSE);
 RemoveMenu(hm, SC_SIZE, MF_BYCOMMAND | MF_REMOVE);
 RemoveMenu(hm, SC_MAXIMIZE, MF_BYCOMMAND | MF_REMOVE);
 DrawMenuBar(hWnd);
 HANDLE b = GetStdHandle(STD_OUTPUT_HANDLE);
 SMALL_RECT DisplayArea = { 0, 0, width, height };
 SetConsoleWindowInfo(b, TRUE, &DisplayArea);
 CONSOLE_CURSOR_INFO ConCurInf;
 ConCurInf.dwSize = 10;
 ConCurInf.bVisible = false;
 SetConsoleCursorInfo(b, &ConCurInf);

 COORD p;
 p.X = 47;
 p.Y = 30;
 SetConsoleCursorPosition(b, p);
 cout << "Coo";

 cin.get();
 return 0;
}

Код проверялся в консоли имеющейся под рукой Visual Studio 2015, вот что вышло: Страница статьидалее...
26.04.2021, 13:35 [53]


PHP: заменяем для нужных типов файлов в дереве папок что угодно на что угодно

Мне было нужно удалить кучу нуль-терминаторов, помещаемую софтиной в конце каждого создаваемого файла для "выравнивания" их размеров до кластера (и попробуй найди потом самые маленькие файлы?!), но подумал, что проблема вообще распространена:

  • есть много файлов с некоторым типом или типами;
  • они могут располагаться во вложенных папках, в том числе, с "неправильными" для не-виндоузовских систем именами файлов, например, содержащими кириллицу и пробелы;
  • требуется найти во всех файлах некую строку или байт(ы), возможно, по гибкому шаблону поиска, содержащему регулярные выражения, а затем заменить их другой строкой (возможно, пустой), байтами или шаблоном, построенным по найденному регулярным выражением содержимому.

Мне показалось быстрее всего сделать решение на PHP, которое я выполнил на локалхосте XAMPP с PHP8 под актуальной сборкой Windows 10. В сущности, я просто взял обход дерева папок отсюда плюс этот совет из своей коллекции.

Строки поиска и замены настраиваются прямо внутри функции searchAndReplace, а путь к файлам и допустимые типы файлов - в начале скрипта. Наверное, можно было бы "прикрутить" интейрфейс, но оставим это тем, кому подобный сервис может понадобиться периодически, а не разово.

Полезной может оказаться и функция getFileName, получающая имя файла с кириллицей и пробелами на локалхосте Windows. Ниже показан полный исходник скрипта, успешно решившего мою задачу, его можно выполнить как файл типа .php в кодировке Юникода UTF-8. Страница статьидалее...
25.04.2021, 15:36 [42]


Турнир "Летучего Голландца" (Турнир Претендентов по шахматам 2020-21, второй круг)

"Летучий Голландец", который хбз где шлялся столько времени, давно никому не нужен, но всё пытается напугать или хоть заинтересовать.

Прерванный больше года назад после первого круга турнир претендентов в Екатеринбурге, милостью Божьей и Симиной норовит возобновиться.

Впервые в истории турнир претендентов по шахматам растянулся на два года?
Впервые в истории турнир претендентов по шахматам растянулся на два года?

Год+ перерыва в турнире - такого, кажется, ещё не было. Фактически, будут играть уже другие шахматисты, с несколько иными формой, стилем и подготовкой.

Но в обществе подлинно инновационном (то есть, подверженном информационной энтропии в худшей её разновидности) это всё неважно. Страница статьидалее...
17.04.2021, 22:21 [139]


Удаляем XBox Game Bar из Windows 10

Заметил некоторое падение производительности на сложных задачах. Оказалось, виной всему "заботливо" впаренный Мелкософтом при очередном обновлении XBox Game Bar, шпионящий и не удаляемый штатными средствами.

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

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\System\GameConfigStore]
"GameDVR_Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows]
"AllowGameDVR"=dword:00000000

Зато помогло удаление через PowerShell: Страница статьидалее...
15.04.2021, 13:06 [83]


[1-15] [16-30] ... [2671-2685] [2686-2687]