[syndicated profile] lawofficer_feed

Posted by Law Officer

Our previously published report, detailing the mass deception by the DOJ Civil Rights Division, was a shocking revelation of the weaponization of our government against local law enforcement and law and order.  The analysis of the DOJ Investigation into the Phoenix Police Department by Dr. Travis Yates and Dr, JC Chaix was nothing short of […]

Женские разговоры -2

Jun. 12th, 2025 09:39 pm
[syndicated profile] rikki_t_tavi_feed
Я посмотрела таки  начало интервью Верочки. Не так много, около тридцати первых минут из трех часов. И вот что  скажу -  я вижу, как во многом это ее вина/ответственность за то, как сложилось. И это не виктимблейминг,  это реально то, что она, отгоревав, должна бы и сама признать за свои ошибки, как взрослый человек. В том, что я послушала, не было обстоятельств непреодолимой силы, стихийного бедствия, опрокидывающего человека. Может в остальные два с половиной часа будет что-то такое, что однозначно выявит - она жертва, он подлая скотина, но я пока про начало только скажу.

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

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

Но что она делает первым делом? Беременеет тут же от недолгого знакомого, выходит замуж и рожает трех детей!

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

Она же, как мне кажется,  увлеклась именно антиподством, как таковым - и  радостным заблуждением, что они одинаковые. Такие оба творческие, такие свободные, такие нуждающиеся в выражении себя, а вовсе не в глупых условностях обычных людей и их семей. Но вместо того, чтобы пару лет вот так дружить на свободе, пожить вместе в быту, присмотреться - она делает то, что делают все банальные "магловские" недалекие пары. Секс, никто не заботится о предохранении, тут же залетели, надо жениться по этому залету, беременная невеста, тощенький салага на роль мужа. Дети же еще! Ей 25, ему - 23. Какая ему семья в 23? Был бы он хотя бы стажер в банке, а то басист в подвешенном состоянии.

Из ее рассказа у меня сложилась картина - это не была та радость, что бывает у пар, которые давно хотят ребенка и наконец видят заветные две полоски. Они как будто умственно решили - мы будем испытывать радость. И стали ее изображать. И сразу жениться. И призывать  мам радоваться будущему бабушкинизму. Мамы тоже послушно изобразили. И даже вроде как пообещали помогать. И обманули - с нескрываемой обидой говорит Верочка. Да господи! И мамам этим двадцатилетних оболтусов вовсе  не было за дикое счастье  вся эта скоропалительная свадьба и случайные внуки. Они еще хорошо держались - и поддержку пообещали. Но не хотели на самом деле.

Детей надо рожать, когда у вас есть куда, есть средства и есть возможность справиться самим! Будут родители помогать - отличный бонус. Но не  рассчитывать на них железно при планировании будущего. Это ваши гениталии резвились, и ваше создание незапланированное, и ваше решение во все это семейное ввязаться.

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

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

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

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

 Но она, черт возьми, рожает еще двоих!!!!

И муж не такой как надо, и не заботится, и угнетает. И  уже ушел, как я поняла. Но она заводит его обратно.
И рассказывает, как с младенцем на руках хочет выйти в окно. Так, будто это какая-то непреодолимая цунамя на нее налилась. Хочется откатить ее к заводским настройкам, о которых она рассказывала, уйдя от банкира. Сама же рассказывала? Что же ты себя саму не слушаешь? Зачем снова и снова  затаскиваешь домой все того же негодного еще с прошлого раза мужа? Зачем опять и опять производишь  детей?

Вот как-то так у меня ощущения от начала рассказа. Не знаю, буду ли дальше слушать.
[syndicated profile] lawofficer_feed

Posted by Alpha News

(Alpha News): Bob Kroll, a retired police lieutenant and former police union leader and president, spent 32 years with the Minneapolis Police Department (MPD). Kroll spoke with Liz Collin on her podcast about how police leaders still seem to be rushing to judgment before getting the facts. Last week, law enforcement agents from several federal […]
[syndicated profile] lawofficer_feed

Posted by Law Officer

Brooklyn Center, MN – Authorities are investigating a police-involved shooting after officers encountered a man allegedly wielding a chainsaw during a domestic disturbance late Tuesday afternoon. According to a statement from the Brooklyn Center Police Department, officers were dispatched around 5:45 p.m. to a residence on the 6200 block of Camden Avenue North following a […]
juan_gandhi: (Default)
[personal profile] juan_gandhi
"Независимость России объявили, что ли?! Непонятно пока." 
dennisgorelik: 2020-06-13 in my home office (Default)
[personal profile] dennisgorelik
Alfred Koch 2025-06-11
За все успехи и провалы Украины отвечает только он, Зеленский, и больше - никто. Даже если он в них не виноват. Так несправедливо устроена жизнь. Не хочешь нести ответственность, ищешь виноватых? Отдавай суверенитет. Тогда и отвечать будет тот, кому ты его отдал.
Эту оборотную сторону суверенитета не каждый осознает. А между тем она есть. Ты глава свободного и независимого государства и никто тебе не указ? Прекрасно! Но тогда держи и вторую часть этого жребия: ты за все ответственен и не на кого спихнуть твои проблемы и неудачи.
Путин напал? Ты виноват. Запад не помогает? Ты виноват. Украинцы не хотят идти на фронт и бегут из армии? Ты виноват. Украина в дефолте и казна пуста? Ты виноват. И так далее…
Что? Ты так не хочешь и это несправедливо? Нет проблем: бери бумагу с ручкой и пиши заявление об отставке. Это не у тебя так все неказисто сложилось, это всегда так было. Шапка Мономаха реально тяжела. Это не выдумка. Свобода всегда имеет оборотной стороной ответственность. Как минимум - за себя. Ты хотел свободы для себя и для Украины - ты ее получил. Так что жаловаться некому: это был твой выбор.
[syndicated profile] mi3ch_feed
BritishMandatePalestine1920.png

Продолжение рассказа про поездку в Самарию. Теперь про местных арабов.

Сразу оговорюсь, что я не могу быть беспристрастным наблюдателем по определению: мы постоянно находимся под ракетными обстрелами — сначала ХАМАС, потом Хезболлы, затем Ирана, а потом и хуситов. Дети моих друзей и знакомых сражаются против арабских террористов. Двое из них погибли, один потерял руку. И как бы критически я не относился бы к иудаизму, к исламу я отношусь в сто раз хуже.


Британия получила мандат на Палестину с условием создания здесь "национального очага для еврейского народа". Британия должна была способствовать и всячески помогать еврейской иммиграции и поселению на земле. Британия с этой задачей не справилась.

По первоначальному плану Святую землю хотели поделить прямой линией по Иордану, Мертвому морю и далее до Красного моря — слева все евреям, справа все арабам. Евреи согласились. Но потом из еврейской части было решено вырезать Иудею, Самарию и Сектор Газа. Евреи согласились и на это. После ужасов Второй Мировой, Холокоста и изгнания им меньше всего хотелось войны. Но арабы решили получить все и сбросить евреев в море. Они снова и снова начинали войну и каждый раз ее проигрывали.

IMG_6875.jpg

Арабам неоднократно предлагали мир, от которого выиграли бы все. Бен Гурион пытался наладить диалог с арабскими шейхами, он им описывал все плюсы от мира и экономического развития, на что ему отвечали: «нет, пусть эта земля будет в запустении еще 200 лет, но останется нашей». Арабских детей учили считалкам: «Палестина – наша земля, а евреи – нашли собаки». Когда ХАМАС устроил теракт на перекрёстке Бейт-Лид, он заявил, что убил «20 свиней» и ранил «60 обезьян».

Пропасть в мировоззрении преодолеть труднее всего. У местных арабов практически полностью отсутствует понятие общественного пространства. По всему Израилю есть тысячи детских и спортивных площадок под открытым небом. Огромное количество общественных парков, футбольных и баскетбольных полей, собачих площадок и скверов. У арабов этого почти нет — для араба его земля заканчивается за территорией его дома. Никто не отдаст свою землю для детской площадки для всех. Мусор валяется повсюду — улица считается ничейной. Его свозят максимально близко к израильским поселениям, там устраивают свалку и поджигают ее, чтобы дым шел в сторону евреев.

Сегодня арабы Иудеи и Самарии живут гораздо лучше, чем арабы Газы, но значительно беднее, чем арабы Израиля. Сколько их на самом деле, не знает никто. В списки включены и эмигранты и даже дети эмигрантов, родившиеся за границей. Если человек хотя бы один раз посетил место своего рождения, побывал у своих родственников — он автоматически попадает в списки жителей Иудеи и Самарии. Повсеместно практикуются "мертвые души" — под них выбивается финансирование у международных организаций. Умерших не регистрируют еще десятки лет, получая их пенсию. В списках Палестинской администрации есть люди 1835 года рождения.

Кроме животноводства и выращивания оливок чрезвычайно здесь популярно воровство автомобилей, телефонов, велосипедов и самокатов из Израиля. Угоны поставлены на поток. Как правило ночью приезжает команда профессионалов. Опытные мастера взламывают сигнализацию, а отгоняют машины подростки — если их поймают, они отделаются условным сроком. Ребенок захотел просто покататься на машине. Одни деревни специализируются на Тойотах, другие на Маздах и т.д. Машины разбирают на запчасти. Рядом с деревнями находятся огромные свалки кузовов разобранных машин.

0000.jpg

В Шхем (Наблус) мы по понятным причинам не заезжали — там могут просто убить людей в машинах с израильскими номерами. Но наш гид рассказывал о двух местных памятниках: Саддаму Хусейну и Нельсону Манделе. Дескать, это героические борцы с евреями и апартеидом. Добавлю, что популярный лозунг "Палестина — от реки до моря" означает, что на Святой земле не должно останется ни одного еврея. Как любят писать арабы на стенах: «Гитлер был прав!» и «Закройте Гуантанамо, откройте Аушвиц!»

Добавлю, что само слово "Палестина" никакого отношения к арабам не имеет. Они вообще плохо выговаривают букву "П". Название «Палестина» было придумано римлянами после подавления еврейского восстания Бар-Кохбы в 135 году нашей эры. С целью вытеснения из памяти названий «Израиль, Иудея, Самария». А у филистимлян, в честь которых назвали Палестину, даже нет арабских корней — они пришли с греческих островов Эгейского моря. 90% "палестинцев" — это египетские и иорданские арабы.

p.s.
Последняя часть рассказа будет про евреев Иудеи и Самарии.
[syndicated profile] mi3ch_feed
British_Airways_Flight_9_rendered_in_Blender.jpg

24 июня 1982 года Boeing 747 авиакомпании British Airways попал в облако вулканического пепла от внезапно извергшегося вулкана Галунггунг. Так как пепел был сухим, на него не реагировал метеолокатор, рассчитанный на обнаружение влаги в облаках. В пассажирский салон начал проникать дым, потом появился запах серы. Через иллюминаторы пассажиры могли видеть необычное стробоскопическое свечение, исходившее от двигателей. Они также заметили длинные яркие хвосты пламени, вырывавшиеся из двигателей. Пепел, попав в двигатели, плавился в камерах сгорания и приклеивался к внутренним поверхностям. Все четыре двигателя самолета остановились. Капитан сделал объявление для пассажиров:

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

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

Нужно было быстро решить, что делать — пытаться перелететь через горы или разворачиваться для аварийной посадки в океан. До этого никто не предпринимал попытки посадить Boeing 747 на воду. Экипаж перевел самолет в режим пикирования, что позволило большому количеству воздуха пройти через двигатели и сдуть большое количество затвердевшего пепла. Двигатели удалось перезапустить, но перед посадкой экипаж обнаружил, что лобовое стекло потеряло прозрачность — полёт на крейсерской скорости через облако вулканического пепла только повредил стекло. Посадка по приборам была невозможна в связи с неисправностью системы автоматического привода на посадку в аэропорту Джакарты.

Экипаж мог смотреть вперед только через два очень узких сектора лобового стекла, оставшиеся относительно прозрачными. Второй пилот отслеживал удаление до полосы по дальномерному радиомаяку и пересчитывал удаление в высоту глиссады на таком удалении, а командир выдерживал требуемую высоту. Посадка прошла успешно, никто из 247 пассажиров и 15 членов экипажа не пострадал. Руление после посадки также оказалось невозможным, поскольку огни ВПП создавали засветку ставшего непрозрачным лобового стекла кабины пилотов.

p.s.
Этот инцидент привёл к тому, что информация об извержении вулканов стала оперативно передаваться всем авиационным службам. Именно поэтому во время извержения вулканов все полеты в регионе прекращаются.

из пробирки

Jun. 12th, 2025 04:30 am
[syndicated profile] mi3ch_feed
2025-06-10_14-06-18.jpg

Управление по контролю за продуктами и лекарствами США (FDA) признало выращенного в лаборатории лосося безопасным для употребления. Это первый случай в истории, когда культивированная рыба получила разрешение на коммерческое использование в США. Речь идет о продукте американской компании Wildtype.

Wildtype сообщает, что на разработку их «дикого лосося» ушло почти десять лет. Компания использует живые клетки тихоокеанского лосося, выращивает их в специально созданных биореакторах с точным контролем температуры, кислотности и питательных веществ. После выращивания клетки соединяются с растительными компонентами, чтобы добиться привычного вкуса и текстуры филе.

Предприятие выглядит как мини-пивоварня, за исключением того, что она выращивает в резервуарах клетки лосося вместо пива. В «рыбе из пробирки» такое же количество омега-3 и омега-6, как и в обычном лососе. Но нет ртути, антибиотиков и паразитов

Выращенное в лаборатории или «культивированное» мясо может стать альтернативой убийству животных ради еды.

GNU nano 8.5 «Sigourney»

Jun. 12th, 2025 08:19 pm
[syndicated profile] linuxorgru_feed

12 июня состоялся выпуск 8.5 «Sigourney» консольного редактора текста GNU nano.

Список изменений:

  • Позиция курсора теперь сохраняется при закрытии файла и восстанавливается при повторном его открытии, если используется опция --positionlog.
  • При нажатии клавиш ^O^Q и ^X^Q nano выходит со статусом ошибки.
  • Нажатие клавиш ^L просто центрирует курсор, а M-% циклически его перемещает.
  • Опция --whitespace принята, но не документирована.
  • Синтаксическая раскраска теперь корректно работает в большем количестве локалей.

 , , , ,

[syndicated profile] alex_rozoff_feed
Анекдот тут https://www.anekdot.ru/id/-2022319030/
А суть дела такова: у элитки нет ответа ни на один из актуальных вопросов. Причем имеются в виду вопросы, которые допускают ответ лишь: «да» или «нет».

Возьмем для примера три вопроса (как у витязя):
1) Новая ядерная энергетика нужна или нет?
2) Массовые роботы-гуманоиды нужны или нет?
3) Борьба против старения нужна или нет?
Поехали!

1) Новая ядерная энергетика.

- Конечно, да! Промышленность в развитых страны давно задыхалась от высоких цен на энергию и убегала в Азию. А в условиях мировой мозаичной войны и автаркии, когда необходимо производство на свой территории – нужна дешевая энергия.
Углеродное топливо – демонизировано, к тому же, его источники в основном в недружественных или нестабильных странах, а ВИЭ закономерно не оправдали доверия.
Старые схемы АЭС тоже не годятся, это долгострой, к тому же – зависимый от небольшого числа поставщиков обогащенного урана (туть та же история что с углеродным топливом).
В общем: да однозначно, но…

- Конечно, нет! Ведь это закрывающая технология для ВИЭ (которые станут нишевым решением) и огромный пласт бизнеса рухнет. Та же судьба постигнет огромный пласт бизнеса энергосбережения.
К тому же, дешевая энергия сразу сделает выгодными вертикальные фермы. Рынок аграрных продуктов перекосит. Аграрные земли подешевеют, а это запустит процессы дезурбанизации. Тогда рухнут цены на недвижимость в мегаполисах. Эта недвижимость является залоговым активом, значит, следом повалятся банки…
В общем: нет однозначно!

2) Роботы-гуманоиды.

- Конечно, да! Ведь население стареет. Трудовой ресурс тает. Пенсионные фонды не справляются. А рождаемость продолжает падать, причем этот тренд устойчивый (точнее усиливающийся). Вариант замещения мигрантами из недоразвитых стран – провален, поскольку этот контингент противопоказан цивилизации. Роботами можно хотя бы покрыть дефицит трудовых ресурсов в секторах монотонного ручного труда и офисного/супермаркетного планктона.
В общем: да однозначно, но…

- Конечно, нет! Ведь разработка утилитарного робота-гуманоида это ящик Пандоры. Его рентабельность бесконечна по определению (поскольку он по определению способен копировать себя из набора дешевых первичных деталей). Роботы заполнят все рабочие места, где не требуется креатив.
С другой стороны, они обеспечат легкость стремительного экономического роста для малых стран, и перекосят весь баланс влияния на товарных рынках.
А как быть с проблемой огромного количества людей, на чей труд фатально исчезнет спрос?
В общем: нет однозначно!

3) Борьба против старения.

- Конечно, да! Проблема рождаемости радикально ниже уровня воспроизводства никуда не денется, а роботы (даже в случае ответа «да» на 2-й вопрос) не закроют вакансии в тех секторах, где требуется человеческий разум или эмоциональный отклик. К тому же, это решение для проблемы пенсионных фондов (пенсии по старости можно будет отменить).
В общем: да однозначно, но…

- Конечно, нет! Люди, не связанные коротким жизненным циклом, моментально изменят свое поведение. Способность ждать удобного момента десятки лет – это то, с чем система управления и мотивирования никогда не сталкивалась. К тому же,, исчезновение старости окажется закрывающей технологией для огромных пластов юридического, медицинского и парамедицинского бизнеса! А усыхание пенсионных фондов повлечет гибель других видов инвестфондов, в которых обращаются пенсионные средства.
В общем: нет однозначно!

Такие дела.
---------------------------
Ранее по теме:
Позитивное будущее возможно почти всегда - кроме случая когда его нельзя помыслить. Суперхрупкость.
https://alex-rozoff.livejournal.com/705679.html
Абсолютная антифантазия: консерватизм не видит будущего даже при идеальной экономике
https://alex-rozoff.livejournal.com/877465.html
[syndicated profile] sapojnik_feed
Психологические консультации через интернет - это просто! Вы общаетесь с квалифицированным и опытным психологом не выходя из дома, по видеосвязи - Телеграму.

Люди обращаются ко мне, чтобы понять самих себя и свое поведение, разобраться в том, что мешает им жить. Я не ставлю диагнозов - я разговариваю со ЗДОРОВЫМИ людьми.

Обращайтесь, если у вас есть какие-то психологические проблемы - в любви, в воспитании ребенка, в общении с родителями, в том, как пережить текущую ситуацию, как справиться с депрессией или апатией, как заставить себя заниматься и находить перспективы. Обращайтесь, если вам просто "тошно жить". Пишите сюда в личку или на мой адрес mr.sapojnik@yandex.ru, звоните по телефону и пишите в Вацап +7915-823-13-25.

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

V JEPA 2

Jun. 12th, 2025 10:58 am
vak: (Робот 1)
[personal profile] vak
Хорошую модель "в жёпа тоже" не назовут. 😀
На самом деле там что-то очень интересное про роботов.

https://ai.meta.com/blog/v-jepa-2-world-model-benchmarks/

https://github.com/facebookresearch/vjepa2
[syndicated profile] r_bloggers_feed

Posted by Arthur Bréant

[This article was first published on Rtask, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

You can read the original post in its original format on Rtask website by ThinkR here: From lab to real life: How your Shiny application can survive its users

From prototype to production, make sure nothing breaks…

You’ve created a fantastic mockup and your client is delighted. You’re ready to move to production with your application. But one question haunts you: how can you ensure that your application will remain stable and functional through modifications and evolutions?

The answer comes down to one word: testing.

Three weeks ago, part of the ThinkR team was in Belgium to participate in the Rencontres R 2025. A conference around R whose objective is to offer the French-speaking community a place for exchange and sharing of ideas on the use of the R language across all disciplines.

On Tuesday afternoon, during a 15-minute presentation, I presented the use of testing in a Shiny application (presentation available in English and French). After several hours of preparation and a presentation, my mind was then test-oriented. At the end of the 3-day conference, I indulged in my second hobby (after R development): running. While I was running, a song played in my ears: Let’s Talk About Sex by Salt-N-Pepa. I could only hear: “Let’s talk about you and me […] Let’s talk about tests”. Professional bias? Surely.

Music at full volume, Let’s talk about tests!

Yo, I don’t think we should talk about this
Come on, why not ?
People might misunderstand what we’re tryin’ to say, you know ?
No, but that’s a part of life
[…]
Let’s talk about [tests], baby

Too often neglected in the R ecosystem, tests are nonetheless essential for guaranteeing the robustness and sustainability of your Shiny applications. In this article, we’ll explore a three-level testing strategy that will allow you to secure your code from development to production.

Why test your Shiny applications?

The development of a Shiny application often follows the same path: you start with a quick prototype, you iterate with your client (or yourself), you add features… and suddenly, you realize that your code has become complex and fragile.

Each new modification risks breaking an existing functionality. Each feature addition makes you fear introducing regressions. This is where tests become your best ally.

The advantages of a testing strategy

A well-thought-out testing strategy allows you to:

  • Progressively validate your code at each development stage
  • Detect regressions before they reach your users
  • Refactor with peace of mind knowing that your tests will alert you in case of problems
  • Document the expected behavior of your application
  • Facilitate maintenance and future evolutions
Overview

To effectively secure a Shiny application, we recommend a three-level approach:

  1. Unit tests: Validate each function individually
  2. Integration tests: Verify interactions between components
  3. End-to-End tests: Simulate a real user in a real browser

e2e tests

Each level has its role and specificities. Together, they form a complete safety net for your application.

Level 1: Unit tests

The principle

Unit tests consist of testing each function in isolation, independently of the rest of the application.

It’s like checking that a drawer opens correctly before installing it in a kitchen.

Unit test

Implementation

If you follow best practices and develop your Shiny application as a package (with {golem}), unit tests integrate naturally into your workflow.

Let’s create our first application:

# install.packages("golem")
golem::create_golem(path = "myShinyApp")

Once this code is executed, your package will open in a new session. You can immediately verify that your application launches correctly:

# Launch application in dev mode
golem::run_dev()

In {golem}, the development cycle is found in the /dev folder. You’ll find all the functions you’ll need for development there.

The first file to follow is the dev/01_start.R file. It contains all the functions you’ll need to start your project. Among them is the function: golem::use_recommended_tests(). This function will create the test structure in your package, with tests recommended by {golem} including one that verifies that your application will launch correctly. Convenient!

Let’s imagine we need a function in our application: calculate_average(). We can execute: usethis::use_r("calculate_average") to create the file that will contain our function.

# In R/calculate_average.R 
calculate_average <- function(values) { 
    if (!is.numeric(values)) { 
        stop("values must be numeric") 
    } 
    if (length(values) == 0) { 
        return(0) 
    } 
    sum(values) / length(values) 
}

This function calculates an average. It has some “validators” to check the function inputs. To associate a unit test with it, we can execute: usethis::use_test(name = "calculate_average")

# In tests/testthat/test-calculate_average.R
test_that("calculate_average works correctly", {
  # Test with numeric values
  expect_equal(
    object = calculate_average(
      values = c(10, 20, 30)
    ),
    expected = 20
  )
  # Test with empty vector
  expect_equal(
    object = calculate_average(
      values = 0
    ),
    expected = 0
  )
  # Test with non-numeric input
  expect_error(
    object = calculate_average(
      values = c("a", "b")
    ),
    "values must be numeric"
  )
})

To verify that the calculate_average function works as expected, we run the tests:

devtools::test()

If the tests are successful, we get:

test result 1

You can modify/break a test to see and experiment with a failing test!
Replace calculate_average(values = c(10, 20, 30)) with calculate_average(values = c(10, 20, 1)) to see the result.

At this stage, unit tests allow us to test the business functions of our application. We don’t test the application per se, but we ensure good behavior of its business logic.

Level 2: Integration tests

The principle

Integration tests verify that the different components of your application work correctly together. In Shiny, this means testing reactive flows, interactions between modules, and server logic.

We’ve checked if the drawer could open correctly. We’re now going to verify that it integrates correctly with the rest of the kitchen furniture: the other drawers, the worktop, etc…

Integration tests

Implementation

Let’s modify our application a bit!

In the R/app_ui.R file, replace the golem::golem_welcome_page() function with the following code:

numericInput(inputId = "num1", label = "First value", value = 10), 
numericInput(inputId = "num2", label = "Second value", value = 10), 
numericInput(inputId = "num3", label = "Third value", value = 10), 
numericInput(inputId = "num4", label = "Fourth value", value = 10), 
actionButton(inputId = "go", label = "Calculate!"), 
textOutput(outputId = "result")

This should give:

app_ui <- function(request) {
  tagList(
    golem_add_external_resources(),
    fluidPage(
      numericInput(inputId = "num1", label = "First value", value = 10), 
      numericInput(inputId = "num2", label = "Second value", value = 10), 
      numericInput(inputId = "num3", label = "Third value", value = 10), 
      numericInput(inputId = "num4", label = "Fourth value", value = 10), 
      actionButton(inputId = "go", label = "Calculate!"), 
      textOutput(outputId = "result")
    )
  )
}

We’ve just added 5 inputs including 4 inputs to enter a numeric value and an action button. Finally, a textOutput will allow us to display text.

Be careful to put a comma between the different elements of your UI.

To verify that this code works, we can launch the application:

# Launch application in dev mode
golem::run_dev()

It’s time to connect the UI part of our application with the server part. For this, in R/app_server.R:

app_server <- function(input, output, session) {
  rv <- reactiveValues()
  observeEvent(input$go, {
    rv$avg <- calculate_average(
      c(input$num1, input$num2, input$num3, input$num4)
    )
    showNotification(
      "Calculation completed!",
      duration = 3
    )
  })
  output$result <- renderText({
    req(rv$avg)
    paste("Average:", rv$avg)
  })
}

This code just created a reactiveValues(), a box that will store the different results in our application. When the button is clicked, the code inside the observeEvent will be executed. We store the result of our calculate_average function in the reactiveValues.

# Launch application in dev mode
golem::run_dev()

The testServer() function

Shiny provides the testServer() function which allows testing server logic without launching the user interface.

In a new file usethis::use_test(name = "server"), copy the following code:

testServer(app_server, {
  session$setInputs(num1 = 5)
  session$setInputs(num2 = 5)
  session$setInputs(num3 = 5)
  session$setInputs(num4 = 5)
  session$setInputs(go = 1)
  expect_equal(
    object = rv$avg,
    expected = 5
  )
  session$setInputs(num1 = 10)
  session$setInputs(num2 = 20)
  session$setInputs(num3 = 30)
  session$setInputs(num4 = 12)
  session$setInputs(go = 2)
  expect_equal(
    object = rv$avg,
    expected = 18
  )
})

This test simulates values for the different inputs in the server and also simulates a click on the button session$setInputs(go = 1).

We then expect the result stored in the reactiveValues to be 5:

expect_equal(
  object = rv$avg,
  expected = 5
)

As before, to run the tests in our application, we execute:

devtools::test()

Result test 2

You can always break a test to experiment with a failing test!
Replace session$setInputs(num3 = 30) with session$setInputs(num3 = 2) to see the result.

This integration testing logic with testServer can also be used with modules in Shiny! Complete and more complex applications can therefore be tested.

We’ve just tested the nested interactions in the application and particularly the different interactions. However, this remains very “programmatic” and doesn’t reflect the real experience of a user in a browser.

Level 3: End-to-End tests

The principle

End-to-End tests simulate a real user interacting with your application in a real browser. This is the testing level closest to the final user experience.

The objectives are multiple here:

  • Simulate real user interactions
  • Test the application in a real browser
  • Verify the complete user experience

We’ve checked the drawers individually. We’ve also verified that they could all be assembled together. Now, it’s time to test cooking a real meal in the kitchen!

e2e tests

Playwright and the {pw} package

For E2E (End-to-End) tests in the R ecosystem, we recommend using Playwright via the {pw} package developed by ThinkR.

Installation and configuration:

# Package installation (in development)
devtools::install_github("ThinkR-open/pw")
# Initialize test structure
pw::pw_init()

This command creates the following structure:

tests/
├── playwright/
    ├── tests/
        ├── default.test.ts
└── testthat/
    ├── test-calculate_average.R
    ├── test-golem-recommended.R
    ├── test-server.R
    └── test-playwright.R

E2E tests should be placed in the playwright/tests/ folder. A test is already available, it contains:

import { test, expect } from '@playwright/test';
test('has body', async ({ page }) => {
  await page.goto('http://127.0.0.1:3000');
  await expect(page.locator('body')).toBeVisible();
});

This code will launch the application in a browser and verify the presence of our body. We can already run this test:

pw::pw_test()

Pw tests

Playwright also provides a report that we can consult:

pw::pw_show_report()

Pw report

Playwright runs this test in 3 different browsers: chromium, firefox and webkit.

OK, but how do we test our application?

Good news, you don’t necessarily need to learn TypeScript to produce E2E tests with Playwright:

pw::pw_codegen()

This function will open a browser, in which we’ll be able to simulate clicks and actions, as a user.

codegen 1

 

Codegen 2

 

Codegen 3

 

Codegen 4

Playwright will record our actions and store them in a new file in tests/playwright/tests:

import { test, expect } from '@playwright/test';
test('test', async ({ page }) => {
  await page.goto('http://localhost:3000/');
  await page.getByRole('spinbutton', { name: 'First value' }).click();
  await page.getByRole('spinbutton', { name: 'First value' }).fill('20');
  await page.getByText('First value Second').click();
  await page.getByRole('button', { name: 'Calculate!' }).click();
  await page.getByText('Average:').click();
});

This test is far from perfect and we’ll return in a future article to the syntax of tests with Playwright and how to optimize them. E2E tests also work in CI and we’ll also return to this in a future article.

Meanwhile, our application here is tested in a context that comes closest to the reality of our future users. We’ve just secured the proper functioning of the application, both on business logic and on the UI part.

We can run all the tests in our application:

devtools::test()

Result tests 3

Recommended testing strategy

Effort distribution

A commonly accepted rule in the industry is the test pyramid:

  • 70% unit tests: Fast, reliable, numerous
  • 20% integration tests: Focus on critical interactions
  • 10% E2E tests: Essential user journeys

What to test at each level?

Unit tests:

  • All utility and business logic functions
  • Data transformation functions
  • Calculation algorithms
  • Input validation functions

Integration tests:

  • Main reactive flows of the application
  • Interactions between Shiny modules
  • Complex server logic
  • Reactive values updates

End-to-End tests:

  • Critical user journeys
  • Complete workflows (login, calculation, export)
  • Complex features involving multiple interactions
  • Regression tests on major bugs

Conclusion

Implementing a three-level testing strategy radically transforms how you develop and maintain your Shiny applications.

Concrete benefits:

  • Confidence in your code and modifications
  • Speed of problem detection
  • Ease of maintenance and evolution
  • Improved user quality

To start today:

  1. Structure your Shiny application as a package with {golem}
  2. Add unit tests for your critical functions
  3. Implement some integration tests with testServer()
  4. Experiment with E2E tests via {pw} for your main user journeys

Don’t hesitate to contact us if you want to deepen the implementation of tests in your Shiny applications!

You can also find Colin Fay who will lead a workshop on Wednesday, October 8, 2025 during the Shiny In Production conference organized by Jumping Rivers.

You can also find all our training courses on Shiny application development here!

This post is better presented on its original ThinkR website here: From lab to real life: How your Shiny application can survive its users

To leave a comment for the author, please follow the link and comment on their blog: Rtask.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Continue reading: From lab to real life: How your Shiny application can survive its users
[syndicated profile] auvasilev_feed


Кстати, раз уж полез в интернет интересоваться подобной чепухой, то и посмотрел среднюю пенсию в Израиле. Написано, что 6000 шекелей. Это, если опять же по офицальному курсу, получается 133 320 рублей.

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

[syndicated profile] auvasilev_feed


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

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

Но услышав столь эмоциональную информацию от европейских журналистов, подкрепленную высказываниями россиян, которые на экране голосили про: "Ужас, ужас",  я спросил у жену, а сколько эта самая картошка стоит в Израиле?

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

Я как мог её успокоил и полез в интернет. Там оказалось написано, что средняя цена килограмма картофеля в стране 1,3 шекеля. То есть, если по официальному курсу примерно рублей тридцать.

Что, реально в России сейчас картошка в четыре раза дороже чем в Израиле? Не может быть. Хуйня какая-то. Явная вражеская клевета и пропаганда. 

С Днём России

Jun. 12th, 2025 04:00 pm
[syndicated profile] artyom_ferrier_feed

Сегодня — День России, говорят.

А один мой друг в этой связи заметил: «Если раньше пелось: «Жила бы страна родная, и нету других забот», то теперь - «Сдохни, тварь, и пусть здесь всё горит огнём».

Но он, конечно, несколько преувеличивает.

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

Нет, страна — весьма даже симпатичная.

Берёзки в лесочках, окушки в речках.

Люди?

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

Ну, если не изобретать себе некоего «сферического человека в вакууме», а рассматривать людей такими, каковы они есть, то — они, ан масс, примерно одинаковы во все времена и во всех нациях.

И могут, конечно, немного влиять некие идеалистические представления, которые людям внушают с детства в той или иной культуре, но на самом деле — не так уж сильно.

Ещё того меньше — влияет т. н. «пропаганда», довольно беспомощная штука, чьё могущество, разумеется, склонны дико раздувать торговцы балабольством всех «конфессий».

Но что реально влияет на возможность нравственного выбора — так это разнообразие источников финансирования.

Когда так выходит, что источник остаётся один — очень нетрудно оказывается убедить людей в том, что именно ему и следует служить, ведь именно из него они могут кормить своих детей (а значит, именно этот источник — и есть «нравственность»).

Впрочем, они могут даже и не считать его «нравственным», могут и не любить его, а всё равно служить ему — как, скажем, какие-нибудь голландцы или чехи исправно работали в войну на нацистов, вовсе не имея к ним никаких симпатий.

Поэтому, считайте меня «географическим детерминистом», но, как я не раз говорил, главной проблемой России — видится её «проклятие сверхконтинентальности». Чисто географическое устройство, которое делает предельно лёгкими затеями концентрацию власти и контроль над всеми товарными потоками, а соответственно — крайне затрудняет возникновение действенной оппозиции, когда все аспекты благополучия населения завязаны на властный центр и независимых источников доходов практически нету.

Однако, времена меняются.

И сейчас, как бы ни трепыхался этот деспотический центр, альтернативные товарные потоки и альтернативные источники доходов — всё же появляются, и значение их нарастает.

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

Ведь как сказал мудрец, «Контрабанда — мать демократии, а коррупция — её повивальная бабка».

И по мере развития неподконтрольных государству товарно-денежных потоков — лояльность населения и его холуйское низкопоклонство перед деспотизмом будет таять, как утренний дым над водой.

Ибо в действительности — да прекрасно знают русские люди, что за дрянь их государство, со времём Иоанна «Бунши» и до наших дней.

И все, от простых работяг до обер-прокуроров, в приватных беседах, конечно, признают, что это именно дрянь несусветная, эта Московия, но — куда от неё деваться-то и что возможно взамен на этих землях?

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

Получился же — вовсе такой мрак, что потом с ностальгией поминали «хруст французских булок» в той царской России, «которую мы потеряли» (и стараясь забыть про «хруст народных косточек под неумолимым ярмом деспотизма»).

Да, уроки Революции — конечно, обескураживают желающих «всё тут изменить».

Но тем не менее, мы-то считаем, что если предпосылки для московитского деспотизма имеют климатический, географический и логистический характер — то, значит, именно его и надо изменять, чтобы освободить Россию от Московии.

А заодно — всемерно использовать вновь нарождающиеся технологии для выведения экономических потоков из-под контроля государства.

И мы настроены довольно оптимистически в этом плане.

Да, безусловно Путинская Россия — это одно из самых мерзких государств, когда-либо поганивших собою этот глобус, но именно по этой причине именно здесь — мы видим наивысшие шансы для скорейшего отказа от сколько-нибудь сильной национально-территориальной государственности и перехода к новым, более гибким и более адекватным формам организации власти.

Поэтому — почему бы и не отпраздновать День России?

Разумеется — никто в здравом уме не пожелает «долголетия» тому российскому государству, что есть сейчас, но окушки в речках — уже скоро смогут вдыхать воздух свободы всеми жабрами.

Что, не всяким жабрам нужен воздух свободы?

Ну, значит, придётся эволюционировать.

Снова здорово

Jun. 12th, 2025 08:52 am
chasovschik: (Default)
[personal profile] chasovschik
Демократы опять решили сделать иммиграцию главным фронтом борьбы с Трампом. В левой ленте много красивых текстов о зверствах ICE, вроде вот этого - "Trump is frustrated by his own success on immigration". Там куча анекдотов про эти самые зверства, без подробностей и ссылок ("reportedly", "allegedly" и т.д.).

Under Joe Biden, ICE had generally refrained from raiding schools, churches, and hospitals. Now it is reportedly arresting new mothers in maternity wards and then denying them their right to legal counsel.

Most alarmingly, some ICE agents have allegedly embraced violent and unconstitutional tactics, according to the Journal’s report. A union organizer for Washington farmworkers was driving his wife to her job at a tulip farm, when ICE agents stopped him, smashed in his car windows, and pulled him from the vehicle, all without showing badges or identification. A Russian man with a pending asylum case was reporting for his scheduled check-in at an ICE office, when a team of agents arrested him and then allegedly beat him.

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

Уровнем исполнения это все напоминает палестинскую пропаганду, даже не русскую. Может работать только при совершенно слепой готовности поверить в такие вещи.

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

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

Profile

krivye_ru4ki: (Default)
krivye_ru4ki

May 2025

S M T W T F S
    123
45678910
11121314151617
18192021222324
2526 27282930 31

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 12th, 2025 11:59 pm
Powered by Dreamwidth Studios