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

графика javascript программирование числа сервис чат интернет стихи литература спам маразм картинка алгоритм список философия россия политика ссылки личное погода общество спорт время email фантастика дата c# игра учебное музыка люди ссср избранное история сказка тоталитаризм книги социалки эзотерика новосибирск шахматы python статистика цензура windows c++ textprocessing html видео ошибка все теги все комментарии все ссылки свежие изменения


[1-15] [16-30] ... [3046-3060] [3061-3062]


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

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

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

19.01.2038, 15:15 [16516 просмотров]


Строим контуры по опорным точкам на canvas

Построив полиномы по упорядоченным значениям [x, y], добавим ещё случай, когда опорные точки для кривых Безье (а другого готового механизма в JS особо и нет) не обязаны быть упорядоченными по возрастанию x, то есть, задача интерполяции не ставится.

Вместо этого, задав массив points, состоящий из подмассивов, описывающих отдельные контуры как списки пар значений [x, y] координат опорных точек на canvas, мы можем соединить эти точки гладкой кривой в том порядке, в каком они перечислены в списке. Не вдаваясь в теорию, уточним, что итоговая кривая будет проходить через первую и последнюю точки контура, но не все промежуточные.

Линиям легко задать любую толщину, цвет, стиль и даже градиент, но нам хотелось сделать картинку ещё и "переливающейся". Для этого основной код вынесен в метод animateGradient, самовызывающийся по таймеру и с помощью пары переменных offset и delta управляющий промежуточным цветом градиента контуров (addColorStop).

Замкнутые контуры (у нас только "0") и тонкие линии (у нас толстая, 30 пикселей) анимируются таким подходом лучше. У нас цвет "доходит не до конца" именно из-за толщины линии. Далее показан скрипт в работе и код (без стандартных обрамляющих тегов HTML). Страница статьидалее...

13.06.2024, 12:47 [44 просмотра]


Как поставить точки на координатной плоскости онлайн :)

Странно, не нашёл такого сервиса в cети, везде сплошные графопостроители - задаёшь формулу, видишь график.

Меж тем, в жизни обычно никаких функций y(x) не задано, а есть только координаты точек, по которым затем численными методами строятся кривые и выводятся уравнения зависимостей.

Как часто бывает, быстрее написать самому. Основная часть скрипта позволяет следующее:

  • Кликом по канве ставим точки, видим их координаты в списке текстового поля под канвой.
  • При клике в текстовом поле всё выделяется, чтобы было удобно нажать Ctrl+C для копирования и последующей вставки в текстовый файл. Затем мы можем дальше обрабатывать данные в Excel или Mathcad. С этой же целью значения x и y разделены просто пробелом и автоматически сортируются при добавлении новой точки.
  • Можно исправить существующее значение или добавить новую точку просто вводом в текстовое поле с последующим нажатием кнопки "Перерисовать".
  • Назначение кнопки "Очистить" очевидно.
Страница статьидалее...

12.06.2024, 04:09 [39 просмотров]


Кошка сдохла, хвост облез...

- Скажи-ка, дядя, ведь недаром?!..
- Да что ты, парень... Задарма.

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

Кувалда для разбивания орешков это и есть нейросеть, если выражаться кратко. Ну или "Стокфиш" для не знающего правил игры. Хотя для гроссмейстера "Стокфиш" может оказаться весьма полезен. И заметьте, этот локальный ИИ, против которого у гроссмейстера нет ни одного шанса, тем не менее, не сделал профессионала идиотом (хотя явно повлиял на стиль мышления) и не отменил превосходства гроссмейстера над другими игроками. Более того, профессионалы в чём-то другом получили хороший инструмент для решения своих задач. Точно так же будет и уже есть с "большими" ИИ.

Но всё же обидно. От интересных чатов с людьми к тупым чатам с роботами - путь, пройденный интернетиком за последние 25+ лет.

А ведь творческий процесс (человек "не в теме" редко способен оценить реальный процент сгенерированного текста в интернетике, меж тем, для таких мусорных видов контента как новостные и маркетинговые обзоры он может достигать 146%) в уцелевшей части мира, если таковая сохранится, через следующие 25+ годиков будет устроен именно так: Страница статьидалее...

11.06.2024, 12:13 [39 просмотров]


Схемы Всего

Люблю такие вещи, которыми баловался, впрочем, ещё Григорий Великий.

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

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

А у вас есть ещё Универсальные Картинки Всего? Буду рад ссылкам или файлам.

картинка должна описывать наглядно показывать явление, процесс или эпоху в целом, никаких частностей!

1. Ув. Алексей прислал удивительно точную оценку Нобелевским лауреатом Иваном Буниным почти всего "серебряного века": Страница статьидалее...

01.06.2024, 10:26 [49 просмотров]


Июнь-2024: относительность воздаяний

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

Неизбежно ли вообще воздаяние, товарищи насельники, правда ли, что всё измерено и взвешено, и не зря на абсолютно "нулевом" в правовом плане северо-востоке мироздания мы верим в карающую десницу Кармы, не понимая, как иначе тут выжить?

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

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

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

Так, теоретически, тотальная гибель будущего в угоду кровожадным призракам прошлого отнюдь не была предопределена в одной отдельно взявшейся стране. С другой стороны, по "сталинскому барометру" социолога Льва Гудкова, деятельность Сталина "безусловно одобряли" 12% насельников в 1989-м, до 40% в 2003-м, до 58% в 2017-м, 70% в 2019-м и т.д. То есть, "негативная идентичность" никогда никуда не отступала, и удивительно не то, почему всё вернулось на круги своя, а, скорее, степень влияния перестроечных СМИ на привыкших доверять публичному контенту советских аборигенов.

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

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

Предыдущий февраль был здесь, ну и до следующего, иноагент БГ даст, доживём. Страница статьидалее...

01.06.2024, 09:49 [196 просмотров]


Несколько анимаций в одной картинке или Послушная кошка

Как показать несколько разных анимаций (фреймов) в элементе canvas, если все фреймы хранятся в одной картинке (каждый - в своём "столбце" этой картинки) по принципу

фрейм_1_спрайт_1 фрейм_2_спрайт_1 фрейм_3_спрайт_1
фрейм_1_спрайт_2 фрейм_2_спрайт_2 фрейм_3_спрайт_2
фрейм_1_спрайт_3 ...              фрейм_3_спрайт_3
...                               фрейм_3_спрайт_4
                                  ...

Количество спрайтов во фрейме может варьироваться, спрайты одинаковы по размеру, необязательно использовать их все, если вы просто взяли готовую картинку из сети как я, но хочется описать всю графику в одном контейнере Javascript.

Нам понадобится одна картинка и одна функция, выполняемая по загрузке страницы. Для смены анимаций мы подготовим кнопки, действия которым назначим по загрузке картинки. Одна кнопка будет "особой", а с последнего кадра её анимации (в нашем случае, с сидящей кошки) начнётся работа приложения.

Вот что получилось:

Ниже этот код показан в виде файла .html в кодировке Юникода UTF-8. Страница статьидалее...

30.05.2024, 11:10 [42 просмотра]


Исследователю quaestio mali :)

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

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

25.05.2024, 15:49 [83 просмотра]


Часы 24-го

Полутрадиционные деньрожденные часики почему бы не сделать в этот раз на картинках, такое лепится быстро, да попробовать выдвинуться на пляж.

Увидеть картинки и код отдельным файлом .html можно далее. В стиле предполагается, что картинки находятся в той же папке, что файл скрипта. Страница статьидалее...

23.05.2024, 11:12 [72 просмотра]


Мультипликативная стойкость числа по Слоуну

В тему, близкую к моим "предкам и потомкам" для натуральных чисел ну и факторизации их на простые множители.

Multiplicative persistence (на русский часто неверно переводят как "продолжительность жизни") натурального числа по основателю OEIS тов. Слоуну означает количество итераций, которое нужно сделать, чтобы получить однозначное число перемножением ненулевых цифр предыдущего числа. Процесс повторяется до тех пор, пока не получится однозначное число. Например, 88 это 8*8 = 64, 64 даёт 6*4 = 24, 24 превращается в 2*4 = 8. Таким образом, число 88 имеет "поколение", равное трём, требуется три шага, чтобы добраться до одной цифры. У чисел из одной цифры поколение "нулевое".

Саму последовательность можно увидеть вот тут, в исходном виде она не слишком информативна, интересней, например, вот эта последовательность, n-ый член которой есть наименьшее число с поколением, равным n (числа натуральные и имеют минимум две цифры.) Первый член последовательности равен 10, так как 1*0 = 10 - наименьшее двузначное число с продолжительностью жизни "один". Второй член равен 25, потому что 25 = 2*5 = 10 и это наименьшее число, которое упрощается за два шага.

Любопытно, что первое число 11-го "поколения" равно 277777788888899 (предел счёта для 32-разрядного беззнакового целого равен 4294967295), а найти чисел с персистентностью выше 11 Слоуну не удалось при аналитическом и алгоритмическом анализе значений вплоть до 10233. Проверить "напрямую" числа в таком диапазоне он, как понимаете, не мог.

Во избежание ещё более медленной работы при отладке, мы не стали делать в приложенном консольном листинге C# шаблон или отдельный класс для SortedMultiSet.

Одноимённые методы getPersistence позволяют узнать поколение чисел типов uint и System.Numerics.BigInteger.

Вот листинг программки, проверенной в актуальной сборке Visual Studio 2019, и интересные результаты для распределения чисел от 10 до UInt32.MaxValue. Страница статьидалее...

19.05.2024, 16:15 [82 просмотра]


С# Windows Forms: игра-ходилка с фишками и кубиками

По просьбам трудящихся... а, достало. Dice & Chips Desktop Game, в сети не увидел образцов.

Игроки по очереди бросают шестигранный кубик и ходят на выпавшее количество пунктов. Переходы вперёд и назад, бонусные ходы и пропуски хода в комплекте, в общем, традиционно. Блокировка кнопок на время хода, псевдоанимация двумя способами, старым и новым.

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

Проект C# Windows Forms проверялся в актуальных сборках Visual Studio 2019/2022.

Более-менее проблемой оказалось "один вход и один выход" в основной функции MakeStep, без этого способ 2 работал порой странно.

Код выглядит хуже, чем мог бы, потому что я писал это второпях, одновременно рассуждая на полуотвлечённые темы. Страница статьидалее...

15.05.2024, 18:36 [163 просмотра]


С# Windows Forms: как избавиться от повторных кликов...

По просьбам трудящихся. Как сделать, чтобы до завершения процесса (например, перемещения картинки по форме) повторный выбор элементов интерфейса был недоступен?

Просто выключить свойство Enabled может оказаться недостаточно - по завершении периода неактивности кнопка (или другой элемент интерфейса) "вспомнят всё" и обработают клики из очереди. Не помогают и глобальные флаги в обработчиках событий по принципу

int cnt = 1;
bool busy = false;
//...
private void button1_Click (object sender, EventArgs e) {
 if (busy) return;
 busy = true;
 //Вычислительный процесс, мы к нему добавляем задержку
 textBox1.AppendText ("Строка " + (cnt++) + Environment.NewLine);
 Thread.Sleep (3000);
 busy = false;
}

Предположим, что на форме расположены кнопка button1 и многострочное текстовое поле textBox1.

Вариант 1. Application.DoEvents - может приводить к непредсказуемому поведению с ростом сложности приложения. Страница статьидалее...

14.05.2024, 21:11 [116 просмотров]


Как написать игру на C# Windows Forms в 100 строк кода

Небольшой пример по просьбам трудящихся. Чтобы скомпилировать игру у себя, достаточно создать приложение Windows Forms .NET Framework (Visual Studio 2019 и выше), выбрать в верхнем меню "Вид" пункт "Код" и в операторные скобки пространства имён формы

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp1 {
 //сюда!
}

вставить показанный ниже код. Я планировал уложиться в 100 строк, примерно так и вышло. Пример легко дополнить и улучшить, например, описать спрайты как положено в отдельном классе.

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

Не стоит ожидать многого от графических возможностей "чистой" .NET Framework без Unity и тому подобных решений, при большом размере окна отрисовка всё равно будет мерцать. Шаг, с которым перемещаются шарики вычисляется в зависимости от размеров окна.

Вот наш простой учебный код и скриншот: Страница статьидалее...

12.05.2024, 01:04 [200 просмотров]


Окуджава

Пускай моя любовь как мир стара
Лишь ей одной служил и доверялся
Я — дворянин с арбатского двора
Своим двором введённый во дворянство…
"Надпись на камне"

Совесть, Благородство и Достоинство -
вот оно, святое наше воинство.
"Святое воинство"

9 мая 2024 года исполняется 100 лет со дня рождения Булата Окуджавы - одного из основоположников авторской песни в послесталинском СССР.

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

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

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

Были ли барды лишь "магнитофонной культурой", ушедшей вместе с эпохой кассетников, турпоходов и наивной веры в то, что в основе своей наш "новый мир" всё-таки правилен и справедлив?

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

Это нам для выживания нужен секрет "стихийного экзистенциализма" - как жить без надежды.

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

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

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

Правда, "Шагает граф, он хочет быть счастливым, И он не хочет, чтоб наоборот." (Ю. Визбор, 1962) А строфой выше - "Что было ночью, будто трын-трава", и пусть трахнутая ночью молочница валит на свой трамвай. Что для отцов ещё артикулируемая территория освоения, для детей - уже замусоренная и безмолвная зона проживания. Буквально на моих глазах это произошло с интернетом, а на глазах моих детей случится с чем-то ещё...

Сделанные ниже замечательные подборки ссылок обязаны своим существованием трудолюбию ув. Алексея. Страница статьидалее...

09.05.2024, 10:33 [150 просмотров]


Новый барин

Старый барин умер, а из Европы приехал новый - осмотреть поместье и сколько-то десятков крепостных душ, приписанных к окрестным землям.

Ждали наследника не без волнения, собравшись перед церквою. Бабы в передниках кружевных с оборками поверх сарафанов синего холста с лентами, в платках новых. Мужики в праздничных красных рубахах, кто и в портах тафтяных вместо холстины, а уж колпаки выходные с отворотами так и у самых ледащих.

"Барин-то в платьи немецком, говорят" - шептались в толпе - "на носу мелкозоры, так взгляд тяжелой..."

"Строг, небось, кормилец" - вздыхали бабы.

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

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

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

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

Ну, встали, колпаки в руках, кланяемся большим поклоном, ох, милостивец, что же будет, коли холопы вровень с господами стоять станут? Страница статьидалее...

04.05.2024, 16:20 [108 просмотров]


[1-15] [16-30] ... [3046-3060] [3061-3062]