Задать вопрос
  • Как реализовать фичи в расширении?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    1.
    существует 3-и типа скриптов
    Все три сразу можно и даже нужно, если требуется для целей расширения. Единственное, content script на все сайты пользователи не любят, т.к. расширение получает слишком много опасных с точки зрения приватности и безопасности прав. А вот content script на конкретный сайт (со ссылками на прокси) или 2-3 сайта - можно, это выглядит хорошо.

    2.
    Запрос на получение и модификацию popup.html, popup.js не дает
    Расширению нужны права на доступ к www.proxybeatch.io (либо доступ вообще ко всем сайтам):
    "permissions": [ "https://www.proxybeatch.io/*" ],

    3.
    как общаться из background.js в popup.js

    Никак.
    popup.js - временный скрипт. Он выгружается, когда закрывается окно. Хотя это зависит от браузера, может остаться фантомно - это тонкий момент, который нужно учесть при разработке для Firefox и Chrome одновременно.
    Вообще можно из popup обратиться к background и там оставить ссылку на себя. Но обращение по этой ссылке опасно.
    Лучше делать так: в background происходят все основные процессы и имеют разную степень готовности. А popup просто получает готовую инфу и отображает её. Сам popup при этом никуда не стучится, а отдает задания для background, который уже неспешно занимается обновлением и сортировкой данных.

    4.
    бэйдж не из popup.js а из background.js

    Не знаю, в чем сложность. Бейдж устанавливается абсолютно также. Вероятно, у вас какой-то баг в коде.

    5.
    Как сделать периодическую проверку

    setInterval()
    Ну или есть вариант через alarms, но в целом без разницы.

    6.
    прокси с вэб страницы. Такое возможно?

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

    7.
    анимированное разворачивание popup, как отключить?

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если вы не активировали опцию для удаления содержимого неактивных вкладок (flags/#enable-tab-discarding), то с какого перепугу у вас они выгружаются?

    Если вкладка падает (крашится), то от этого не спастись никакими настройками. Причины этого нужно разбирать отдельно. Например, если размер вкладки в оперативке достигнет 2 Гб, то это краш.

    Фоновый режим тоже не ясно, что такое. Неактивная вкладка понижает частоту событий JS. Плюс сам сайт может узнать о том, что он неактивный. Например, сайт с видео может перестать скачивать видео, оставив только звук. Разумный подход, экономящий ресурсы компьютера. Но что из этого называется фоновый режим?

    Есть приоритет процессов. Если у вас так много окон, то имеет смысл не трогать их приоритет, но выставить более низкий приоритет другим процессам. Например, если вы параллельно сжимаете файл 1 Тб, то можно выставить низкий приоритет этому процессу, и хоть проц и будет загружен на 100%, браузер будет летать, как ни в чём не бывало.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Я не в курсе, что за игра, но спасибо за точность вопроса.
    1) Есть два варианта:
    - а) Смотреть сетевой трафик
    - б) Вытаскивать из интерфейса игры (лучше такое делать на пк). В идеале, если чат можно запустить в браузере, тогда можно обойтись веб-технологиями. Иначе можно попытаться вытащить инфу из компонентов окна своим виндовым приложением (если там не кастомные компоненты). Иначе самое сложное - как бы делать скриншоты и распознавать текст.
    2) Выше описал. Если трафик не зашифрован, то читаем трафик, нужно знание сетевых протоколов и способов перехвата. Если чат в браузере, то стек веб технологий. Если анализ компонентов, то win api или что-то аналогичное в других ос. Последний вариант - минимум технологий и максимум работы по созданию своей утилиты, а также жутко неудобный вариант (нужно выделить отдельный экран для игры, и его нельзя будет ничем занимать).
    3) Помогут, скорее всего. Но кто их вам даст?
    4) Посмотреть, какие соединения активны.
    Ответ написан
    1 комментарий
  • Можно ли создать информер на своём сайте с информацией чужого сайта?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно.

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

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

    По закону за это ничего не будет. Ведь информация публичная, не охраняется авторским правом, не является персональными данными, и не является противозаконной.
    Ответ написан
    5 комментариев
  • Как подставить нужное значение в «сложное» поле?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    На странице есть скрипт, который отслеживает клавиатурные и прочие события, но не обнаруживает их. Поэтому думает, что пользователь ничего не ввёл. Вам нужно сгенерировать эти события, чтобы тот скрипт проверил новое значение, его валидность, и разрешил следующий шаг.
    Ответ написан
    2 комментария
  • Какой движок выбрать для создания интернет-магазина аддонов\модов для игры?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Такое лучше делать в самой игре.

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

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

    На примере Террарии: сделали браузер модов внутри самой игры. Именно такое решение.

    Ну а так разработчик может и без магазинов выложить своё детище на каком-нибудь itch.io например. Платно или бесплатно, по желанию. Там и обновлять может, и юзеры могут скачивать апдейты без доплаты и т.д.
    Ответ написан
  • Как написать правильно условие if в if-e, чтобы после 10 го символа часть текста скрывалась и вместо них появлялись три точки(..)?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    function getArgument(str) {
    	if (typeof str != 'string') str+='';
    	if (str.length <= 10) return str;
    	str = str.slice(0, 10) + '...';
    	return str;
    }
    console.log(getArgument('test'));
    console.log(getArgument('test_test_test'));

    Чем меньше вложенности, тем лучше. Так что, по возможности, избегайте ситуаций if в if'е и более глубоких.
    Ответ написан
    1 комментарий
  • Хорошие платные курсы геймдизайна на русском?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В целом, этому не учат. Конечно, если задача сделать именно что-то новое, а не тупо клон.

    Есть куча книжек по геймдизайну. И считается, что прочитать 2-3 из них - это мало.

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

    В общем, наиболее близкое из хорошего в РФ - это платные курсы в вышке. И когда плотно вольетесь в русскую тусовку геймдева, то дальше сможете смотреть, кто что делает, быть в тренде, брать какие-то чужие идеи, улучшать их, делиться ими и т.д. Правда, придется посещать конференции, митапы, знакомиться. Плюс на вашем конкретном игровом проекте вам, скорее всего, будут поставлять идеи многие члены команды. Ну или вы сможете перейти в проект, где ваши идеи и навыки больше всего подойдут. В остальном всё зависит от вас, вашего ума, фантазии и изобретательности, а не от курсов.
    Ответ написан
    2 комментария
  • У кого-то этот код работает так же?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вместо
    alert(x);
    попробуйте
    alert(performance.now());
    Тогда увидите, как на самом деле: через секунду или больше.
    Ответ написан
    Комментировать
  • Есть ли сервис создания мобильных сайтов с возможностью добавления произвольного HTML?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    github.com
    Ответ написан
    Комментировать
  • Как вычислить, какие программы потребляют больше ресурсов чем остальные?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В Process Explorer есть колонка CPU Time - суммарно времени процесса использовано.

    Но не ясно, какую проблему вы решаете. Вы хотите так на оплате электричества сэкономить или что? Например, если какой-то процесс постоянно работает и стабильно кушает 2%, то он в сумме может переплюнуть одноразовый запуск приложения, которое в течение одной минуты загрузило проц до 100% и замедлило всю работы системы. Как по мне, второе приложение больше подходит под термин "паразит". Хотя в любом случае важному процессу можно повысить приоритет, а второстепенному - понизить, и никто никому не будет мешать.
    Ответ написан
    2 комментария
  • Как открыть веб инспектор браузера iOS на Windows?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Есть такое решение:
    https://washamdev.com/debug-a-website-in-ios-safar...
    Ответ написан
    Комментировать
  • Почему не работает javascript в PWA?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Проблема может быть в ошибке javascript. Либо синтаксическая, тогда весь код не работает. Либо фатальная, тогда весь код ниже места с ошибкой не работает.

    Ещё может быть, что javascript отключён в браузере.
    В iOS, например, есть такая опция
    5d1f16f737090033183598.png
    Ответ написан
  • В какую сторону дует кулер Palit Geforce gtx StormX 1660?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Беспокоиться не стоит.

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

    Во-вторых, температура выдуваемого воздуха значительно ниже температуры видеокарты. То есть на вход воздух, скажем, 25 градусов, а на выход - 35. И даже такой теплый воздух в плане охлаждения блока питания лучше, чем полный штиль (не берем в расчет тот факт, что у блока питания обычно есть свой кулер).
    Ответ написан
    2 комментария
  • Как на стороннем сайте ВООБЩЕ запретить переход по ссылкам и открытия новых окон в браузере? Какой код ввести в консоли?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Для начала проверьте запрет новых окон в браузере. Для этого: в хроме перейдите в настройки и введите там в строке поиска "всплывающие окна", потом внесите сайт в список блокировки.
    spoiler
    5d1ee58a4ce05806866250.png


    Далее попробуйте просто запустить блокировщик рекламы. Авось настройки по умолчанию устранят проблему. Лучшее расширение (на сегодня) - uBlock Origin. Но выбор конкретного расширения - дело вкуса.

    Хотя ещё можно отключить на сайте JavaScript. Это можно сделать средствами браузера: в хроме нужно зайти в настройки и там в поиске набрать javascript, дальше очевидно. Но удобнее использовать расширение. Лично я использую Quick Javascript Switcher (при этом у меня JS по умолчанию отключён везде, и по надобности включаю на некоторых сайтах, но это опять-таки дело вкуса). Ещё есть расширение NoScript. Кстати, блокировщики рекламы тоже умеют блокировать скрипты (см. ниже).

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

    Правило для блокировщика: pcdreams.com.sg###pageloader
    Сайт из примера прекрасно работает без JS, но требуется убрать заглушку.


    Если же без JS совсем никак, то тем же блокировщиком рекламы можно настроить фильтр, который запрещает определенный файл js или даже inline js по какому-то условию (имя файла или содержимое скрипта). Но для этого придется немного окунуться в то, как устроен сайт изнутри. То есть зависит от конкретного сайта.

    Чтобы добавить свой скрипт на страницу, понадобится расширение Tampermonkey. Как подсказали в комментариях, можно попробовать обмануть код страницы и таким способом:
    unsafeWindow.open = e=>0;

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

    В общем, это война снаряда и брони. В ней не может быть победителя. Но сейчас в среднем по всем сайтам перевес сил на стороне пользователя.
    Ответ написан
    Комментировать
  • Для того, чтобы обезопасить свой сайт, достаточно ли преобразования трех символов: &, < и >?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Достаточно одного символа <
    Но тема безопасности обширнее, чем только противодействие XSS.
    Ответ написан
    Комментировать
  • Что значит такая ссылка?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это нужно спрашивать у разработчиков VK.

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

    Это нужно, чтобы целевой сайт не узнал URL страницы, с которой был переход по полю referer, которое браузер обычно передаёт сайтам. Иначе просто целевой сайт сможет косвенно вычислить личную информацию о пользователе (предпочтения, например).

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

    В общем, гадать можно долго. А вопрос по сути нарушает п.2.3 правил, так что, скорее всего, будет удалён.
    Ответ написан
    Комментировать
  • Почему в меню Toster.ru нет 'Мои вопросы'?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    У меня есть :)
    spoiler
    5d1c44ce1b25c388943576.png

    А вообще просто кликаешь по своему нику - и переходишь в свой профиль, там всё есть.
    Ответ написан
    3 комментария
  • Как перебрать массив строк?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    1) А что вам важнее, изящество или скорость?
    1.а) Во-первых, изящнее использовать встроенную функцию ipairs, которая как раз интерирует индексный массив:
    lines = {"sdss", "vfbf"}
    for i, line in ipairs(lines) do
      print(line)
    end

    Это изящнее, чем просто обращение по индексу, потому что исчезает строка создания переменной line, она задаётся в самом цикле. Однако с точки зрения производительности такой способ медленнее, потому что конструкции языка быстрее, чем обращение к функциям, даже встроенным. Так что если у вас миллиарды строк, то лучше ваш вариант, хоть он и менее изящен.

    1.б) Во-вторых, в вашем примере создаётся переменная line глобально. Это не ошибка, но может привести к ошибке в будущем, если код будет сложный. Поэтому делать так совсем не изящно. Лучше писать так:
    local line = lines[i]
    Это создаст локальную переменную внутри цикла. Она не будет доступна вне цикла. А если есть одноименная глобальная переменная, то с ней ничего не произойдет. Везде, где только можно, лучше использовать слово local, оно ограничивает область видимости переменной текущим блоком (и вложенными блоками).

    Кстати, массив lines тоже желательно задавать через local, если ваш скрипт не рассчитан на несколько файлов и общее глобальное пространство имен между ними. Дело в том, что такие локально-глобальные переменные в пределах файла чуть быстрее, чем классические глобальные.

    2) nil выводит потому, что строки в lua не являются итерируемыми объектами, в отличие от строк в javascript, например. То есть строка является объектом, поэтому обращение к свойству [j] не является синтаксической ошибкой, но свойства такого у строки нет, поэтому line[j] возвращает nil.

    Обращение к символу в Lua происходит через функцию подстроки:
    line:sub[j,j]
    То есть мы буквально вырезаем подстроку с позиции j до позиции j, это и есть один символ.

    Опять же, красиво создавать локальные переменные, чтобы читателю вашего кода было понятно, что происходит, а потом их использовать. Желательно с комментариями. Например, так:
    local c = line:sub[j,j] --Получаем символ с номером j
    print(c) --Выводим символ


    3) Ну и, наконец, если вам не важна скорость и производительность совсем, а под изяществом вы понимаете как можно более короткую (и/или сложную для понимания) запись кода, то вам подойдёт что-то вроде этого:
    Пример
    lines = {
      "sdss",
      "vfbf",
    }
    
    for i,line in ipairs(lines) do
      for c in line:gmatch"." do
        print(c)
      end
    end
    Пример 2
    lines = {
      "sdss",
      "vfbf",
    }
    
    for i,line in ipairs(lines) do
      line:gsub(".",function(c)
        print(c)
      end)
    end

    Ведь в Lua использовать в качестве итератора любую функцию, кроме pairs и ipairs, очень необычно, не всем понятно, зато "изящно" (если это можно так назвать). Передавать функции в качестве аргументов другой функции - приём также чуть сложнее, чем просто цикл. Ну и регулярные выражения, само собой разумеется, отдельная сложная тема. Тем более, что в Lua регулярки немного иначе устроены, то есть ещё +10% к сложности.
    Ответ написан
    1 комментарий