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

javascript графика программирование дата время общество философия эволюция большевизм тоталитаризм фашизм числа учебное html вебдезигн список форматы детское кино word картинка шахматы форум перепост маразм excel математика алгоритм css ретро цвет php random c++ мобильник история личное тест закон сервер ошибка textprocessing блог хостинг памятка безопасность социалки рунет ссылки люди все теги все комментарии свежие изменения


[1-15] [16-30] ... [2371-2385] [2386-2394]


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

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

Encoding: utf-8 (Unicode). Для полноценной работы блога нужны включённые в браузере картинки + JavaScript + Cookies.

Ссылки, открывающие новое окно (вкладку), везде подсвечены.

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


Годовой круг со стрелкой на JavaScript

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

В этом скрипте мне нужно было сделать следующее:

  • создать элемент div, у которого фоном наложена картинка с годовым кругом. Центровать картинку можно с помощью стилевого указания, её фон вне круга прозрачен;
  • при первом вызове функции yearCycle создать канву и разместить её в div;
  • написать функцию (img.onload) для вывода рисунка .png (или .gif) с прозрачным фоном, размещённого в центре канвы и повёрнутого относительно этого центра на нужный угол (желательно, чтобы расчёт не зависел от размеров рисунка); также есть код для проведения линии под нужным углом (закомментирован в листинге);
  • рассчитать угол поворота рисунка со стрелкой, исходя из номера текущего дня в году и общего количества дней в нём;
  • вывести немного ниже центра канвы текущую дату в текстовом виде;
  • обеспечить вызов основной функции один раз в час для обновления информации.

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

Ниже показан скрипт в работе и полный исходник на момент написания.

Возможно, вам придётся поменять пути к картинкам url(back.gif) и img.src = 'arrow.png'; (см. в исходнике).

Предполагается, что исходник будет добавлен к файлу типа .html в кодировке Юникода utf-8, но это не обязательно. Страница статьидалее...
26.02.2020, 22:31 [3]


Обыкновенен ли фашизм?

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

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

Правда, перевод оригинала от 2003 года на русский язык не всегда точен, иначе ненужных и нескрепных аналогий у нас стало бы ещё больше.

Так, в пункте 11 подчёркивается не столько "презрение к интеллектуалам и искусству", сколько то, что "свобода мысли и выражения осуждалась и подавлялась". Рьяные служители советского режима, массово перешедшие в большевицкий лагерь из рядов "русской интеллигенции", ничуть не менее тоталитарной по духу, тому подтверждением. Ведь до революции-1917 любимыми призывами подавляющего большинства из них (кроме, может, "веховцев") были всевозможные "долой!" и "весь мир насилья мы разрушим!"

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

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

Меж тем, я бы уменьшил количество признаков фашизма до трёх главных: сужение образа человека, Человек с большой буквы вместо Бога и превращение культуры из Меры в неумеренность или даже оружие... Страница статьидалее...
26.02.2020, 10:43 [10]


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

Требовалась совсем простая вещь - чтобы условие задачи (и/или другой контент) уже были загружены и видимы на странице, а потом вызвалась функция task1, которая выполняет ввод данных из окна диалога prompt.

Увы, обычное

window.addEventListener('load', 
 function(e) { 
  task1();
 }
);

не помогло - в "Хроме" и "Опере" контента при появлении модального окна всё равно не было видно, а он появлялся только после вывода окна alert с результатом.

В принципе, помогло

window.addEventListener('load', 
 function(e) { 
  setTimeout(task1,300);
 }
);

, но не факт, что сработает в мобильных браузерах.

Вариант, при котором показанный ниже код у меня сработал во всех типовых настольных браузерах (Chrome, Firefox, Opera, IE11) - применять document.addEventListener('readystatechange') вместо обычного window.addEventListener('load') и при этом ещё отложить на небольшой таймаут запуск функции (setTimeout(task1,300))

Второе, что показывает код - "назойливый" контроль ввода, пока пользователь не введёт 5 допустимых числовых значений, модальные окна "не пускают его дальше". К счастью, в ряде современных браузеров (Chrome, Firefox) пользователь может запретить странице создавать дальнейшие окна диалога.

Третье - оператор continue в JavaScript, как и в PHP, может выходить "наверх" из нескольких вложенных циклов сразу (см. метку again:).

Четвёртое - как "вытащить" из массива набор скалярных переменных? Удобно в виде

let [a,b,c,x,y] = arr;

, но тогда не работает в IE11. Поэтому "сделано по старинке".

Условие самой задачи видно из листинга. Предполагается, что документ будет сохранён как файл .html в кодировке Юникода utf-8. Страница статьидалее...
25.02.2020, 11:31 [20]


12 возможностей HTML5, которые мы не используем

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

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

Мы не берём здесь в расчёт многочисленные теги семантической вёрстки (article, footer, header, section, nav и т.п.), графическую канву canvas и новые элементы ввода, реализуемые через атрибут type тега input (color, date, email, number, range, tel, time, url и т.п.).

Тем не менее, из очень редко используемых web-мастерами возможностей HTML5 можно бы было, наверное, составить и список гораздо длиннее... Везде сначала идёт HTML-листинг, потом результат его применения. Страница статьидалее...
23.02.2020, 22:18 [43]


Викторина "Старое Простоквашино"

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

Все 28 вопросов - из трёх классических серий, везде по 4 варианта ответа, по 4 вопроса на странице, на последней странице файла - номера вариантов правильных ответов.

Нам было весело, может, понравится и вам. Вот скриншот первых двух вопросов из документа:

первые вопросы викторины, скриншот
первые вопросы викторины, скриншот
Страница статьидалее...
23.02.2020, 11:46 [28]


Салов теперь развивает королевские (лидерские) шахматы?

Опубликовано WPC в 22 февраля, 2020 - 00:36.

//вы уже дисквалифицировались до уровня 2-го разряда, я так думаю. а прошлое не вернёшь//

Могу порадовать истинных ценителей шахмат очень хорошей новостью: вчера, 20.02 2020, была сыграна первая партия в настоящие - "королевские (лидерские) шахматы". Запомните эту дату, дорогие друзья. С нее берет отсчет новая эра в истории нашей игры. Гендерные шахматы ("шахматы взбесившейся дамы") и все, с ними связанное (куроверчение, ЛГБТ, Ваал Стрит, вавилонский талмуд, "Зохаръ", афоризмы Черчилля, мировые войны, революции и т.п.), должны уйти в прошлое, как кошмарный сон.

Опубликовано ПерС в 22 февраля, 2020 - 23:43.

Я думаю, уважаемый Валерий Борисович, что не только я, но и многие любители шахмат находятся в некотором недоумении по поводу этой важной новости - а что же произошло-то? Не идёт ли речь о "резком повышении роли короля, в ущерб значимости ферзя (королевы). В королевских шахматах король ходит, как ферзь, а ферзь, как в гендерных шахматах король"? ("Шехина", ноябрь-2019). Уточнились ли "Некоторые дополнительные правила"? Всё это не менее важно, чем идеи ув. В. Крамника об отмене рокировок!

Опубликовано WPC в 23 февраля, 2020 - 04:56.

Отвечая на Ваш вопрос, уважаемый ПерС, я привел на "Шехине" текст первой партии, сыгранной в королевские шахматы. Вскоре постараюсь более подробно описать новые правила игры. Здесь едва ли их будет уместно излагать - тем более что адепты интернационала полны решимости слить эту тему полностью. Ее загаживание идет большевицкими темпами.

И, собственно, ответ Председателя в теме на "Шехине" :) Сокращаю только цитирование приведённой выше переписки: Страница статьидалее...
23.02.2020, 11:33 [23]


Excel: как построить степенной полином функцией ЛИНЕЙН

Мы уже строили аналогичный интерполирующий полином в Excel, и в Mathcad "вручную", и стандартными функциями Mathcad тоже можно это сделать.

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

Итак, по известному набору из N значений функции f(xi)=yi, заданному парой векторов xi, yi=f(xi), i=1, 2, ..., N, нужно построить кривую, проходящую через все точки.

Через N различных между собой по оси x точек всегда можно построить кривую, зависящую от xN-1, её уравнение будет иметь общий вид

f(x)=c0+c1*x+c2*x2+...+сN-1*xN-1 (1)

В этом уравнении нам неизвестны коэффициенты сi. Из условия, что кривая проходит через все заданные в постановке задачи точки, можно записать систему линейных алгебраических уравнений:

c0 +c1x1 +c2x12 +...+cN-1x1N-1 =y1

c0 +c1x2 +c2x22 +...+cN-1x2N-1 =y2

...

c0 +c1xN +c2xN2 +...+cN-1xNN-1 =yN

или, в матричном виде

Система линейных алгебраических уравнений, записанная в матричном виде
Система линейных алгебраических уравнений, записанная в матричном виде

Решив эту систему уравнений, то есть, найдя обратную к матрице Вандермонда матрицу и умножив её на вектор y, найдём коэффициенты сi. Теперь, подставив их в уравнение (1), мы можем аналитически оценить значение функции в произвольной точке x.

Ниже показано "ручное" решение в Excel и решение с помощью стандартной функции ЛИНЕЙН. Страница статьидалее...
22.02.2020, 18:58 [28]


Типовые алгоритмы с массивами на JavaScript: решаем задачи одной строчкой кода

Часто мы по инерции пишем типовые алгоритмы на JavaScript как на C++ или Паскале, то есть, с "ручной" организацией циклов и проверкой свойств.

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

Уже есть в блоге по теме: сортировка числового массива на JavaScript, функция array_unique (оставить только уникальные элементы) на JavaScript, матрица на JavaScript.

Вывод всех примеров делается просто в консоль браузера. Страница статьидалее...
22.02.2020, 11:05 [66]


Вновь о простом стиле CSS для сайта

Всплывает регулярно этот вопрос.

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

Сейчас я бы в простых случаях точно вот так не делал и даже не стал бы заморачиваться с "правильным" сбросом стиля :) Но я и не считаю себя знатоком CSS3, хотя если нужно сделать "на коленке", применяю.

Цель очень проста, сделать короткий стиль CSS, который должен:

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

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

Для начала установим высоту страницы, шрифт (не нужно конкретный, есть семейства), "неубиваемые" полосы прокрутки, основные цвета, отступы и класс-обёртку для контента. Страница статьидалее...
20.02.2020, 00:40 [35]


У иррациональных чисел своё лицо :)

Заинтригованный визуализацией иррациональных чисел по Бремеру читатель изложил мне свои соображения по поводу того, что бы могли означать такие картинки :)

Надо ли в действительности искать в этих визуализациях некий смысл? Я думаю, что они - не более, чем математическое развлечение и содержания там заложено не больше, чем в начальном алгоритме.

Скачав приложение из статьи, откроем его в Studio 2019 и перепишем файл pi.txt на сгенерированный нами.

Вот, например, абсолютно случайное число с миллионом знаков в дробной части, полученное следующим кодом на PHP (код запускался в XAMPP с PHP 7.4.X): Страница статьидалее...
18.02.2020, 13:29 [37]


Шаблон класса для работы с массивами из элементов любых скалярных типов данных

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

  • как сделать шаблон класса для работы с массивами из элементов любого скалярного типа данных <T>
  • как вызвать из шаблона конструктора без аргументов шаблон конструктора с аргументом; правильно - только списком инициализации, пожалуй, см. C() : C(10) { }
  • как генерировать исключения с помощью макроса assert из <cassert>, накладывая ограничения на нужные параметры методов, в том числе, конструкторов;
  • как переопределить оператор [] в шаблоне класса массива для нормального обращения к элементам любого скалярного типа данных через квадратные скобки
  • как при этом создать объект класса "целиком в куче" (большого смысла не имеет, так как динамические свойства, такие как a, всё равно получают память в "куче" при выделении её оператором new) - см. C <float> *f = new C <float> (size) - но, с другой стороны, как вы ещё создадите на этих операторах контейнер с размерностью, заданной через переменную, а не через константу?

Куда смотреть, когда все эти проблемы покажутся неразрешимыми: например, в сторону умных указателей или интерпретируемых языков типа JavaScript/PHP :)

Проверено в консоли Visual Studio 2019. Страница статьидалее...
17.02.2020, 22:07 [41]


Всеобщая мобилизация, интернетизация и дебилизация...

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

1994. Сделал с партнёром первый web-сайт в городе. Вообще, год был хороший. Бомжевал после выпуска из университета, работал кровельщиком, готовился к поступлению в аспирантуру.

1996. Невиданная роскошь - инет дома по модему в 9600 бит/с, скорость, впрочем, быстро выросла до 28 и потом до 56К.

И только с 2007 - постоянное подключение через локалку.

Лето 1998. Испытания сети ССС-900, позднее известной как "МТС" и начавшей тогда подключать в неслыханном формате GSM. Всюду езжу с цветным (!) Siemens S10, выданным компанией просто под копию паспортных данных и с халявной симкой. Народ смотрит дикими глазами как на инопланетянина. В то время даже новые русские, останавливая свои 600-е на перекрёстках, бегут к телефону-автомату, чтобы перезвонить на пришедший по пейджеру номер. Звонить по сотовой связи слишком дорого.

Начало 2003. Всеобщая мобилизация и сотовые уже у всех.

2007. "Лопате" в виде Eten X500+ дико завидуют.

2014. Даже бомжи у помойки сидят с "лопатами", намного превосходящими ту. А я уже хожу с дешманским кнопочным, из принципа.

2020. К инету подключён даже холодильник. А я стараюсь обходиться совсем без телефона, соцсетей и мессенджеров. Страница статьидалее...
16.02.2020, 11:44 [55]


Строим зависимость количества шагов сортировки от размерности массива

Сортировки - одна из самых классических задач, имеющих широчайшую сферу применения.

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

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

Меняя размерность массива от 100 до 10000, будем генерировать вектор случайных целочисленных значений, снимать с него копию и выполнять сортировки. Ниже показана программа на C++, проверенная в консоли Visual Studio 2019. Страница статьидалее...
15.02.2020, 15:11 [53]


Юристы

Не обижайте юристов, они работают как умеют...

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

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

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

Например, один симпатичный юрист, вызвавшийся помочь разрешить одну непреодолимую для гражданина РФ (Омереги, впрочем, тоже) проблему с приватизацией участка, как оказалось, совсем не заинтересован в деньгах и клиентах (их с избытком), но весьма заинтересован в чаепитиях с домашними пирогами, так как дома ему их приготовить некому... Будем использовать хоть такую инсайдерскую информацию.

Разумеется, сама проблема вызывана исключительно запутанностью и самопротиворечиями законов ЭтойСтраны, но никак не нашими противоправными или коррупционными действиями (к стыду своему, я так и не научился воровать в РФ, откуда все проблемы).

Давайте их кормить домашними пирогами и некоторым количеством человеческого отношения. И вы тоже ешьте пироги и соблюдайте закон, граждане. Если, конечно, он в вашей стране есть :)

Ну а вот и файлик: Страница статьидалее...
14.02.2020, 23:11 [43]


[1-15] [16-30] ... [2371-2385] [2386-2394]