• Как сделать все возможные комбинации?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вложенный цикл, очевидно.
    $arr = [1, 2, 3];
    $len = count($arr);
    
    $new_arr = [];
    
    for($i=0; $i<$len; $i++) {
        for($j=0; $j<$len; $j++) {
            $new_arr[] = [$arr[$i],$arr[$j]];
        }
    }
    
    var_dump($new_arr);
    Ответ написан
    1 комментарий
  • Как найти все HTML элементы, попадающие в область другого элемента?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно разбить на два этапа:
    1) Сначала подготавливаем массив элементов, - а именно считаем прямоугольную область каждого элемента. Теперь у нас массив прямоугольников. Исходя из того, что области меняться не будут, делаем кое-какие дополнительные вычисления для оптимизации этапа №2.
    2) При каждом выделении мышкой, решаем геометрическую задачу по поиску пересечений прямоугольников, которая уже не имеет прямого отношения к HTML, DOM и т.д.

    Навскидку могу предложить такое решение:

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

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

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

    И, наконец, когда юзер выделяет слишком большую область, которая ложится на 9х10 ячеек, то уже выгоднее искать те прямоугольники, которые могут не попасть в результат, то есть которые в ячейках 2х10. А все оставшиеся непроверенные автоматически попадают в результат.

    Это был пример простой оптимизации, далёкой от совершенства.
    Ответ написан
    5 комментариев
  • Как правильно написать регулярное выражение?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    • слова, которые не завернуты в тег
    • нет вложенных тегов

    Следовательно, нужны слова, которые:
    • либо сразу после </ ... >
    • либо сразу после < ... />
    • либо в начале строки

    Так и запишем:
    (?<=<\/[^<>]+>|<[^<>]+\/>|^)([^<>]+)
    https://regex101.com/r/6OliJi/1

    P.S. Отдельные слова

    (?<=(?:<\/[^<>]+>|<[^<>]+\/>|^)[^<>]*)([a-zа-яё-]+)

    https://regex101.com/r/HT9qs6/1
    Ответ написан
    4 комментария
  • Как обезопаситься от кражи игры?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Строго говоря, никак. Если украдут, то судиться. У тебя же есть свидетели того, как ты разрабатываешь свою игру. Возможно, ещё какие-то концепты, которые ты не расшарил. Это всё косвенно поможет.

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

    К слову, идеи вообще никак защитить нельзя, даже авторским правом. Так что если компания посмотрит на твою игру и сделает (с нуля) примерно такую же (типа клон), то это абсолютно законно.
    Ответ написан
    4 комментария
  • Как составить regex: все, что не содержит слова "slovo1, slovo2"??

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно с помощью негативного просмотра вперёд/назад.
    И другими странными способами типа посимвольной проверки.

    Но вообще регулярные выражения не предназначены для сложной запутанной логики. А у вас уже маленькая база данных (из двух слов). Подобные задачи принято решать программно в два этапа:
    1) Регуляркой находится то, что удобно найти именно регуляркой.
    2) И дальше на нужном языке программирования:
    IF (найденное != "slovo1" AND найденное != "slovo2") .....
    Ответ написан
    Комментировать
  • Каким образом можно сделать ровную табуляцию в строке?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Каким образом можно сделать ровную табуляцию в строке?

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

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

    Очень жаль.

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

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

    Отлично, ведь это отдельная подзадача, которую можно изолировать и просто решить, абстрагируясь от связей с другими подзадачами (ведь это ещё успеется):
    text.split('\n').forEach(
      (s,i)=>console.log('Символов в строка №'+(i+1)+': '+s.length)
    );

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

    Предлагаю вам следующий алгоритм ваших дальнейших действий:
    • Если вы поняли код выше и легко можете написать подобный, то, как я и ответил выше, просто решайте вашу задачу в лоб. Сложную задачу разбивайте на подзадачи. Обучение вас этому навыку выходит за рамки ответа на ваш вопрос, но вы можете начать с Википедии.
    • Если вы с трудом поняли код выше или вообще ничего не поняли, но хотели бы понять, то подтяните знание самого языка. Без таких базовых понятий, как "массив" или "цикл", программировать практически не получится вообще. Объяснение основ выходит за рамки ответа на ваш вопрос, но вы можете начать с чтения учебника.
    • Если вы не хотите ни в чём разбираться, а просто хотите, чтобы вам предложили готовое решение и чтобы оно просто работало, то подтяните ваше умение формулировать, чего именно вы хотите. Текущий ваш вопрос сформулирован сумбурно, в стиле "чтобы у меня всё было, и мне за это ничего не было". При таком подходе придётся слишком долго ждать телепата 80 лвл. Лучше будет красиво, коротко и ясно объяснить детали, чтобы помочь смог любой специалист без уточняющих вопросов. Увы, объяснение принципов того, как задавать вопросы, снова выходит за рамки ответа на ваш изначальный вопрос, но вы можете начать с чтения правил этого ресурса. Хотя лаконично формулировать мысли они вас не научат. Но ведь надо же с чего-то начинать, верно?
    Ответ написан
    Комментировать
  • Какой процент комментариев на хабре проходит модерацию?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Тебе кажется.

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

    ПРЕмодерацию проходит очень небольшой процент комментариев. Примерно 1%. Сужу по комментариям к моим статьям.
    Ответ написан
    Комментировать
  • Как выложить игру в steam?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Чтобы выложить игру, нужно заплатить 100$, оформить всё и подождать две недели.
    Ответ написан
    Комментировать
  • Как исправить ошибку "CreateTexture2D: due to removed device"?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Да, что-то с драйверами.

    Или с переключением между картами. Возможно, у тебя две видеокарты - встроенная и дискретная, и система определённым образом настроена, чтобы переключаться между ними при запуске игр и т.д. Только это приходит в голову на "removed device".

    Также попробуй убрать разгон. Пусть видяха работает чуть медленнее, зато надёжнее. И в целом проверь, не перегревается ли она, мало ли.
    Ответ написан
  • Как функцией "если" проверить условия разных диапазонов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если информация есть в первом диапазоне и если информация есть во втором диапазоне, то отобразить данные в целевой ячейке, что бы ни подразумевалось под словом "есть" (следует придумать формулу) и какие бы данные ни были (следует придумать выражение для вычислений).

    То есть логика такая:
    =ЕСЛИ(И(..... ; .....); ..... ; "")

    P.S. Хоть это и не относится напрямую к вопросу, но на всякий случай дополню. Проверить наличие информации можно, например, так:
    =СЧЁТЕСЛИ(A1:A99;"Москва")>0
    Будет истиной, если и только если "Москва" есть в указанном диапазоне.
    Ответ написан
    Комментировать
  • Алгоритм перевода RGB-компонент в длину волны?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если цвет как бы чистый, т.е. светит на одной длине волны (и с одной конкретной частотой), то он будет соответствовать какому-то одному конкретному "цвету": либо R, либо G, либо B, либо что-то между ними. И если между, то глаз может вообще это не увидеть.

    На этом принципе построены светодиодные лампы. Зачем тратить электричество на свет в том диапазоне, который не видно?

    Естественный же свет - это обычно целый спектр. И RGB - это всего лишь 3 точки на нём (условно). Вот я набросал пример спектра:
    spoiler
    614b1f51996c6771307024.png

    А теперь главный вопрос. Ну, предположим, мы смирились с тем, что из всего спектра нам известны всего 3 значения. В конце концов таково человеческое зрение, ничего не поделаешь. И нашли функцию преобразования к длине, то есть к единственному числу. Тогда как в таком случае из единственного числа снова получить три значения RGB? Никак.
    Ответ написан
  • Почему скомпилированная программа детектится вирус тоталом?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Совпадение с базой, либо эвристика, либо действительно вирус.

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

    Ну а так смотри на гигантов. Например, DrWeb и Касперский. Если они молчат, то у других антивирусов скорее всего ложное срабатывание. Антивирус может быть заточен на "лучше перебздеть, чем недобздеть", такие настройки мало подходят для домашнего пользования, зато подходят для организаций, где желателен только популярный и проверенный временем софт. Кроме того, если в названии вируса есть слово "подозрительный" ("suspicious"), то это лишний раз указывает, что вирус не был найден, а сработала эвристика.
    Ответ написан
    Комментировать
  • Может ли ios app перезагрузить девайс?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нет.
    Ответ написан
    Комментировать
  • Как вставить в строки числа?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Быстрый вариант решения:
    1. Выделить ячейки с только что вставленными данными.
    2. Нажать Ctrl+H
    3. Ввести в "найти" точку, а в "заменить на" - запятую.


    Надёжный вариант решения:
    1. Вставить сначала в текстовый редактор, например в Notepad++
    2. Нажать Ctrl+H
    3. Ввести в "найти" точку, а в "заменить на" - запятую.
    4. После замены результат уже скопировать в Google Sheets.
    Ответ написан
    Комментировать
  • Как заменить %s на число?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Есть такое:
    console.log(`${s} штук`);
    console.log(`Hello ${name}`);
    Ответ написан
  • Как создать локальный онлайн кинотеатр?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Мне в своё время приглянулся Syncplay.

    Но там процесс просмотра немного более гибкий, чем в кинотеатре, когда каждый может поставить на паузу или промотать. Хотя переделать под свои хотелки не составит труда. А может даже из коробки что-то нужное вам есть, не знаю, мне базового функционала хватало.
    Ответ написан
    Комментировать
  • Почему я не могу найти работу в data science?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Подозреваю, что нужны горящие глаза. Это не часто пишут в требованиях, а если и пишут, то другими словами.

    Люди в большинстве своём - существа иррациональные, мыслят субъективно. Поэтому помимо знаний нужно ещё и произвести должное впечатление. Это называется soft skills - умение договариваться, а также умение продавать себя. Конечно, чисто профессиональные знания (hard skills) гораздо важнее, но попробуйте объяснить это нанимателям. Поэтому мало иметь только проф. знания.

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

    В общем, как бы странно ни звучал мой совет, но попробуйте добавить больше эмоций в процедуру собеседования, чтобы ваша искра каким-то образом смогла заразить нанимателя. Просто сказать "мне интересна эта область и я хочу работать в ней" - не достаточно. Как минимум не хватает слова "очень". А максимум ограничен лишь вашей фантазией и здравым смыслом.
    Ответ написан
    3 комментария
  • Почему не могу зайти на сайт unity.com и unity3d.com?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Ошибка "Access Denied" означает дословно "доступ запрещён".

    Думаю, сайту unity3d.com незачем тебя банить, да и плашку придумали бы покрасивее. Хотя в теории при смене места сайт может подумать, что ты хакер из другого города, но это довольно глупо без явного одобрения такого поведения с твоей стороны. Такое ещё бывает на сайтах, если неправильно ввести URL, но у тебя всё правильно введено.

    Остаётся вариант, что тебя блокирует местный провайдер (т.е. какой-то узел в сети на пути к unity3d.com). И если остальные сайты работают нормально, то решением будет - обмануть провайдера. Для этого нужно использовать VPN или его аналог для доступа к этому сайту. Гугли тему обхода блокировок интернета.
    Ответ написан
    2 комментария
  • Value is not a valid member of IntValue в Roblox studio - что делать?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Lua - регистрозависимый язык.
    Попробуй не value, а Value:
    plr.leaderstats.clicks.Value = plr.leaderstats.clicks.Value + 1
    Ответ написан
    Комментировать
  • Какое направление выбрать в вузе, чтобы в будущем работать в игровой индустрии?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Чистому программисту (исполнителю) должно быть глубоко всё равно, разрабатывает ли он игру или что-то другое. Если же программист не совсем "чистый", а с уклоном в геймдизайн, то есть берёт на себя и другие роли (а именно это и привлекательно в игровой индустрии), то я бы рекомендовал рассмотреть психологическое направление. Внезапно. Программированию выучиться проще, если есть способности к математике и любовь к логике, поэтому язык можно освоить самостоятельно, а дальше только бесконечная практика. Хотя можно совместить оба направления. Например, есть «Прикладная информатика в психологии».
    Ответ написан
    Комментировать