песочница Steam Игры цены пост из чистилища 

Небольшое повышение цен 2.0

Я уже делал пост про изменение цен на игры 9-го марта: http://purgatory.reactor.cc/post/5123487 . Но, как показало время, многие магазины еще не успели были подстроиться под новую реальность, а может эта самая реальность просто стремительно ухудшилась дополнительно (с тех пор еще много студий прекратили работу в России). В общем, цены продолжили повышаться, и довольно заметно, теперь в среднем где-то в два или даже два с половиной раза! Для наглядности старое повышение цен я оставил, просто перечеркнул.

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

 • DOOM Eternal был 445 рублей, стал 583 899. Подорожание на 31% ▴102%  

 • Horizon Zero Dawn был 1145 рублей, стал 2999 2522. Подорожание на 161% ▴120%! 

 • Resident Evil: Village был 855 стал 999 1295. Подорожание на 16% 51%

 • Dark Souls II: Scholar of the First Sin был 251 стал 1103. Осталось без изменений. Подорожание на ✨339%! 

 • Dark Souls: Remastered был 745 стал 1199. Осталось без изменений. Подорожание на 60%! 

 • S.T.A.L.K.E.R.: Bundle был 209 стал 1001 710 для GOG версии (который не работает) и 1124 для Steam. Подорожание на 378% ✨239%! 

 • Fallout 76 был 295 стал 399 577. Подорожание на 35% 95%

 • Fallout 4 - Game of the Year Edition была 439 стала 899 1213. Подорожание на 104% ▴176%! 

 • Catherine Classic была 323 рубля стала 595 995. Подорожание на 84% ✨208%! 

 • Grand Theft Auto V была 699 стала 1199 1301. Подорожание на 71% 86%, но это не актуальный давно товар. 

 • Grand Theft Auto V – Premium Online Edition была 675 стала 799 1301. Подорожание на 18% 92% 

 • Dark Souls III была 499 стала 1839. Здесь осталось без изменений. Подорожание на ✨268%! 

 • Metro Exodus была 595 стала 945 1199 рублей. Подорожание на 58% ▴101%! 

 *Это все по данным с сервиса по поиску лучших цен, а не со Steam

Может кому-то поможет в споре с теми, у кого совести уже нет, но еще есть какой-то шкурный интерес.

песочница,Steam,Стим,Игры,цены,пост из чистилища
Развернуть

песочница мем-календарь пост из чистилища 

А календарь то кто-то заполнил?

А уже прошел НГ, да?
Был когда-то календарь (http://joyreactor.cc/post/4644438), не видел чтобы его заполнили. Я его планировал раньше сделать, но было не до этого, потом сел за него в ночь с 23-го на 24-е... да...
В общем, вот что получилось:
а
ДЕКАБРЬ,песочница,мем-календарь,пост из чистилища
Развернуть

песочница пост из чистилища сделал сам YouTube 

Расширение для YouTube

Я решил создать расширение для браузеров, которое либо полностью скрывает кнопки лайков и дизлайков на YouTube либо скрывает счетчик лайков (вы можете выбрать это в настройках). 

“Мне не хватает счетчика дизлайков, зачем отказываться еще и от счетчика лайков?” – вопрос логичный и сразу же отвечу на него. Во-первых, когда нет счетчика дизлайков, счетчик лайков может вводить в заблуждение, потому не факт, что он вообще сейчас имеет большой смысл. Во-вторых, это форма протеста: чем больше таких расширений и чем больше их пользователей, тем больше негативная реакция, тем выше шанс, что какой-то другой сервис в будущем не откажется от открытости счетчиков. В-третьих, это крошечный но вред платформе: ниже вовлеченность, ниже фидбек – меньше количество информации собираемой о пользователе и меньше внутренней информации как ранжировать видео. 

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

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

Ссылки для скачивания: 

• Для Opera, Яндекс.Браузера и других хромиум-браузеров: https://addons.opera.com/en/extensions/details/youtubepurifier/ 

• Для Chrome: https://chrome.google.com/webstore/detail/youtubepurifier/lmgalnfhpobkbknbefpgbccnhfbpgfja 

• Для Firefox: https://addons.mozilla.org/en-US/firefox/addon/youtubepurifier/

песочница,пост из чистилища,сделал сам,нарисовал сам, сфоткал сам, написал сам, придумал сам, перевел сам,YouTube
Развернуть

песочница 

Лиса под водой

Когда не умеешь рисовать =)
POVUjСМуОиЛЛ/j 3Wuy
лллуСА; водой/,песочница
Развернуть

песочница пост из чистилища хз какие теги 

Стилизация JoyReactor по своему вкусу (больше текс и темная тема)

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

Ijjijgj^ Cat Cat
Вторая мировая война США страны армия story длиннопост Cat Cat vk интернет
Иногда реальные люди становятся прототипами для персонажей художественных произведений. А часто - наоборот, вымышленные герои вдохновляют на совершение подвигов. А бывают такие запутанные истории, где уже

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

И так, первый мой букмарклет был таким:

javascript:void(document.head.insertAdjacentHTML('beforeend', '<style>.post_content p { font-size: 35px; line-height: normal;} .post_content h3 { font-size: 45px; line-height: normal;}</style>'))

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

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

Но, как я уже писал выше, его недостаток в том, что он "нестабилен". Хотелось бы, чтобы изменения сохранялись даже после перехода на следующую страницу. Это уже посложнее, но если особо не заботиться о работе ВСЕХ функций. Тоже довольно небольшой код.

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

javascript:void((() => { 

let svg = `<svg xmlns="http://www.w3.org/2000/svg" version="1.1" style="position: absolute;top: 0;z-index: -100;"><defs><filter id="invertColors" x="0%" y="0%" width="100%" height="100%" style="color-interpolation-filters: sRGB"><feColorMatrix result="red" in="SourceGraphic" type="matrix" values=" 1  0  0  0  0                                 1  0  0  0  0  1  0  0  0  0  0  0  0  0  1"/> <feColorMatrix result="green" in="SourceGraphic" type="matrix" values=" 0  1  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  0  1"/> <feColorMatrix result="blue" in="SourceGraphic" type="matrix" values=" 0  0  1  0  0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  1"/> <feBlend result="minredgreen" in="red" in2="green" mode="darken"/> <feBlend result="min" in="minredgreen" in2="blue" mode="darken"/> <feBlend result="maxredgreen" in="red" in2="green" mode="lighten"/> <feBlend result="max" in="maxredgreen" in2="blue" mode="lighten"/> <feComponentTransfer result="oneminusmin" in="min"> <feFuncR type="linear" intercept="1" slope="-1"/> <feFuncG type="linear" intercept="1" slope="-1"/> <feFuncB type="linear" intercept="1" slope="-1"/> </feComponentTransfer> <feComposite result="aminusmin" operator="arithmetic" in="SourceGraphic" in2="oneminusmin" k1="0" k2="1" k3="1" k4="-1"/> <feComposite result="colorresult" operator="arithmetic" in="aminusmin" in2="max" k1="0" k2="1" k3="-1" k4="1"/> <feComposite operator="in" in="colorresult" in2="SourceAlpha"/> </filter> </defs> </svg>`; let style = "<style>.post_content p { font-size: 35px; line-height: normal;} .post_content h3 { font-size: 45px; line-height: normal;} body, img, video, iframe {filter: url(#invertColors);} </style>"; 

document.head.insertAdjacentHTML('beforeend', style); document.body.insertAdjacentHTML('beforeend', svg); 

async function loadPage(href, isNotToScroll){ if (!href) href = location.href; let url = new URL(href); 

try { const response = await fetch(url, { credentials: 'same-origin' }); if (!response.ok) throw new Error('Ответ сети был не ok.'); 

const text = await response.text(); let body = text.match(/<body>(.*)<\/body>/is)[1]; if (!body) { location.href = href; throw new Error('No HTML to display!'); } 

document.body.innerHTML = body + svg; if (!isNotToScroll) window.scroll(0, 0); } 

catch (error) { console.error('Ошибка:', error); } } 

document.addEventListener('click', (e)=>{ for (let el of e.path) { if (el instanceof HTMLAnchorElement && el.href.startsWith(location.origin)) { if (el.getAttribute("href").startsWith('#')) break; e.preventDefault(); console.log(history); history.pushState({}, el.href, el.href); loadPage(el.href); return; } } }); 

window.onpopstate = () => {loadPage(null, true)}; })())

Да, вот это все выше это может быть ссылкой, но создать ее в статье я не могу (похоже в редакторе есть ограничение длины ссылки) `; let style = ""; document.head.insertAdjacentHTML('beforeend', style); document.body.insertAdjacentHTML('beforeend', svg); async function loadPage(href, isNotToScroll){ if (!href) href = location.href; let url = new URL(href); try { const response = await fetch(url, { credentials: 'same-origin' }); if (!response.ok) throw new Error('Ответ сети был не ok.'); const text = await response.text(); let body = text.match(/(.*)<\/body>/is)[1]; if (!body) { location.href = href; throw new Error('No HTML to display!'); } document.body.innerHTML = body + svg; if (!isNotToScroll) window.scroll(0, 0); } catch (error) { console.error('Ошибка:', error); } } document.addEventListener('click', (e)=>{ for (let el of e.path) { if (el instanceof HTMLAnchorElement && el.href.startsWith(location.origin)) { if (el.getAttribute("href").startsWith('#')) break; e.preventDefault(); console.log(history); history.pushState({}, el.href, el.href); loadPage(el.href); return; } } }); window.onpopstate = () => {loadPage(null, true)}; })())">ссылкой Но `; let style = ""; document.head.insertAdjacentHTML('beforeend', style); document.body.insertAdjacentHTML('beforeend', svg); async function loadPage(href, isNotToScroll){ if (!href) href = location.href; let url = new URL(href); try { const response = await fetch(url, { credentials: 'same-origin' }); if (!response.ok) throw new Error('Ответ сети был не ok.'); const text = await response.text(); let body = text.match(/(.*)<\/body>/is)[1]; if (!body) { location.href = href; throw new Error('No HTML to display!'); } document.body.innerHTML = body + svg; if (!isNotToScroll) window.scroll(0, 0); } catch (error) { console.error('Ошибка:', error); } } document.addEventListener('click', (e)=>{ for (let el of e.path) { if (el instanceof HTMLAnchorElement && el.href.startsWith(location.origin)) { if (el.getAttribute("href").startsWith('#')) break; e.preventDefault(); console.log(history); history.pushState({}, el.href, el.href); loadPage(el.href); return; } } }); window.onpopstate = () => {loadPage(null, true)}; })())">ссылка. Но в браузере это работает (создать такую закладку). 

В общем, надеюсь кому-то это будет полезным =)
`; let style = ""; document.head.insertAdjacentHTML('beforeend', style); document.body.insertAdjacentHTML('beforeend', svg); async function loadPage(href, isNotToScroll){ if (!href) href = location.href; let url = new URL(href); try { const response = await fetch(url, { credentials: 'same-origin' }); if (!response.ok) throw new Error('Ответ сети был не ok.'); const text = await response.text(); let body = text.match(/(.*)<\/body>/is)[1]; if (!body) { location.href = href; throw new Error('No HTML to display!'); } document.body.innerHTML = body + svg; if (!isNotToScroll) window.scroll(0, 0); } catch (error) { console.error('Ошибка:', error); } } document.addEventListener('click', (e)=>{ for (let el of e.path) { if (el instanceof HTMLAnchorElement && el.href.startsWith(location.origin)) { if (el.getAttribute("href").startsWith('#')) break; e.preventDefault(); console.log(history); history.pushState({}, el.href, el.href); loadPage(el.href); return; } } }); window.onpopstate = () => {loadPage(null, true)}; })())">ссылкаывавыавыавыаваы. И она делает темную тему и увеличивает шрифты, даже после перехода на другую страницу внутри ДжойРеактора и даже при возвращении обратно в истории. Здесь с читаемостью правда немного проблемы, но не знаю как лучше оформить лучше(

Развернуть

песочница 

Фотки леса

Люблю делать фото крупным планом. Так на, казалось бы, обычных предметах можно увидеть необычные детали. В остальном же посредственные фото обычнейшего леса. Мало ли, вдруг здесь кому-то будет интересно =)

песочница

			
		ШШтШ	
й&	№*	г/ИГ
1	Ш$,песочница

песочница

песочница

песочница

песочница

			
шнш м,песочница

песочница

песочница

песочница
Развернуть
Смотрите ещё