• Как получить последнее число из списка?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    ,
    =VLOOKUP($E$3,SORT(A2:B,ROW(A2:A)*N(A2:A<>""),0),2,0)

    ;
    =VLOOKUP($E$3;SORT(A2:B;ROW(A2:A)*N(A2:A<>"");0);2;0)
    Ответ написан
    Комментировать
  • Какой плагин Chrome позволяет быстро управлять сохранёнными паролями?

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

    Паролей обычно больше сотни, так что они не поместятся в одно маленькое окошко. Нужна будет целая страница с прокруткой. В настройках это уже есть. Поэтому самое удобное, что можно придумать, - это открытие настроек в 1 клик.

    Очень просто сделать свой собственное расширение, которое будет просто по клику открывать настройки с паролями в отдельной вкладке.
    Ответ написан
  • Как работает "Вы можете знать этого человека" в инстаграм?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вряд ли этот алгоритм станет публичным. Он зависит от фантазии разработчиков инсты. Поэтому остаётся только гадать. Так что на вопрос нельзя дать однозначный ответ. Кроме того, сегодня алгоритм может быть один, а завтра - уже другой, безо всяких уведомлений.

    Может быть и так: Вы посмотрели профиль А, потом человек А посмотрел профиль Б, потом человек Б посмотрел ваш профиль. Любой из А или Б может быть знаком. Или, например, у вас и у X - одинаковые или близкие ip (это может быть сосед или коллега).
    Ответ написан
    Комментировать
  • Что выбрать С++ или С# для разбработки android/PC игр?

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

    C#
    Ответ написан
    Комментировать
  • Стоит ли писать статью о разработке собственного программного решения в области pro audio?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Идеи ничего не стоят. И планы - тоже.
    Это аксиома, в адекватности которой легко убедиться с помощью гугла.

    На Хабре нужно писать то, что может оказаться интересным хоть какой-то части аудитории ИТ-шников. Эту аудиторию вы выбираете сами (тегами, заголовком). Но идеи никому не интересны по определению, кроме непосредственно тех, кто собирается их воплощать в жизнь. Не думаете же вы, что стоит вам написать идею, как все бросятся её делать? Нет, конечно. А значит, она будет не интересна.

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Есть WebTorrent, но там возможен обмен информацией (видео-файлами) только между браузерами по технологии WebRTC.

    Чтобы обмениваться также с обычной сетью torrent, нужны специальные гибридные пиры, которые умеют и в web, и в torrent, но это уже полноценные приложения (десктопные или серверные). В принципе, протокол открытый, так что можно попробовать на ноде сделать такое. Но зачем? Можно же просто приобщиться к уже имеющимся разработкам. Хотя даже некоторые известные torrent-клиенты уже поддерживают это, но пока что не популярные типа utorrent.
    Ответ написан
    1 комментарий
  • Почему переменная себя так странно ведет?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это не странно.
    Просто по факту в переменной не "true" и не "false".
    (это ответ на вопрос)

    Попробуйте: echo($hasInstalled);
    Также попробуйте: echo(strlen($hasInstalled));
    (это отладка вашего кода)
    Ответ написан
    5 комментариев
  • Информация для мозга во время перерывов между программированием в течение рабочего дня?

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

    Например, с 10 до 17 работаю и ничем другим не занимаюсь. До и после - что угодно, любые развлечения по желанию (можно и снова поработать, если хочется, но в рабочее время отвлекаться нельзя). Также можно выделять время не по часам, а по результату - не отвлекаться, пока задача не выполнена.

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

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

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

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Главное, чтобы было четыре секции между двоеточиями.

    Если это главное (и единственное) требование, то сами секции задаются как раз этим двоеточием. Поэтому банальное (но пока что ошибочное) рег. выражение:
    .*:.*:.*:.*
    Двоеточие в этом выражении соответствует двоеточию в исходной строке. Поэтому строка a:b:c будет не валидной - слишком мало секций. Выражение .* означает любое количество любых символов. Ошибка здесь в том, что любым символом также может быть двоеточие, поэтому это регулярное выражение разрешает более, чем 4 секции. Чтобы исправить это, нужно запретить символ двоеточия в последовательности любых символов. Выражение [^:] означает любой символ, кроме двоеточия:
    [^:]*:[^:]*:[^:]*:[^:]*

    Остался последний штрих. Пока что это рег. выражение всё ещё разрешает более одной секции, потому что поиск можно начинать с середины строки и заканчивать, не доходя до конца. Поэтому если подсунуть строку a:b:c:d:e:f выражение убедится, что подстрока a:b:c:d соответствует рег. выражению, а значит валидна. Чтобы исправить это, нужно указать, что проверку нужно начинать с самого начала строки и дойти до самого конца строки. То есть рассматривать строку целиком, а не по частям. Это делается с помощью указателей позиций. Символ ^ (в начале) означает начало строки, а символ $ (в конце) означает конец строки:
    ^[^:]*:[^:]*:[^:]*:[^:]*$

    Собственно, это и есть правильный ответ в общем виде на вопрос с главным требованием. Секции ровно четыре и они разделены двоеточием. В каждой секции двоеточие запрещено. Выражение [^:]* означает любое количество любых символов, кроме двоеточия, что нам и нужно.

    Однако данное выражение можно немного улучшить, в зависимости от дополнительных требований. Например, нас может не устроить, что для каждой секции считается валидным любое количество символов, даже нулевое. То есть строка a:b::c тоже будет валидной. Для этого нужно сменить квантификатор * на какой-либо другой. Например, можно сменить на +, который означает любое количество вхождений (символа) больше нуля, то есть 1 и более:
    ^[^:]+:[^:]+:[^:]+:[^:]+$

    Далее, может быть желательно выделить группы, чтобы рег. выражение не только проверяло исходную строку на соответствие шаблону ip:port:user:pass, но и извлекало эти самые переменные. Группы задаются просто скобками. Очевидно, что разделители и указатели позиций в группы не входят:
    ^([^:]+):([^:]+):([^:]+):([^:]+)$

    Далее можно вспомнить, что параметр port может содержать лишь арабские цифры. В регулярных выражениях \d (или [0-9]) означает любую цифру. Так что легко вносим улучшение:
    ^([^:]+):(\d+):([^:]+):([^:]+)$
    Хотя постойте-ка. Это ещё не всё с параметром port. Ведь абсолютное любое число, состоящее из цифр, нас не устроит. Как минимум, порт не может быть больше 65535, поэтому любое число выше считается ошибкой. В принципе, на данном этапе можно не заморачиваться и просто проигнорировать это требование, а реально проверить его позже кодом типа такого: $post < 65356, но в качестве примера можно всё же ограничить количество цифр от 2 до 5:
    ^([^:]+):(\d{2,5}):([^:]+):([^:]+)$
    Квантификатор {2,5} означает, что количество вхождений (цифр) должно быть не менее 2 и не более 5, иначе секция будет считаться не валидной, а значит и вся строка тоже.

    Далее, можем также сделать более строгое условие для параметра ip. Для простоты будем считать, что разрешён только IPv4, а IPv6 нельзя использовать. Тогда условием будет 4 цифры, разделённые точкой. Каждая цифра от 1 до 3 символов:
    \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
    Ой, ошибочка вышла! Дело в том, что символ . является квантификатором. И чтобы рег. выражению сказать, что нам нужен сам символ точки, нужно его экранировать: \.
    В результате полностью рег. выражение получается таким:
    ^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{2,5}):([^:]+):([^:]+)$


    Да, получился монстр. Но нет предела совершенству.

    Правда, на этом этапе улучшать проверки уже не целесообразно. Далее уже кодом PHP можно проверить более строги условия. Например, сейчас в качестве ip будет валидной строка 300.400.500.600. Ведь всё сходится - 4 числа, разделённые точкой, в каждом от 1 до 3 цифр. Поэтому нужно либо более монструозное выражение лепить, либо кодом проверять, либо отдать на откуп сетевым ошибкам подключения - зависит от конкретного приложения и конкретной задачи.

    Рег. выражения не заточены на сравнение чисел, например. Чтобы проверить, что число находится в диапазоне от 0 до 255, придётся лепить что-то такое:
    (?:\d\d?|[0-1]\d\d|2[0-4]\d|25[0-5])
    То есть это вообще поразрядная проверка. Глупо. Проще это делать кодом, если это действительно нужно.

    На данном же этапе имеет смысл проверять лишь то, подо что заточены регулярные выражения. Например, можно ограничить класс символов, которые входят в user и в pass. Например, в пароле можно разрешить только латинские символы и цифры, а также ограничит длину: пароль не может быть меньше 6 и не может быть больше 32 символов:
    [a-z0-9]{6,32}
    (просто пример)

    И так далее в таком же духе. Как было сказано выше, прочие тонкости уже зависят от конкретной задачи.
    Ответ написан
    1 комментарий
  • Будет ли сайт работать быстрее, если закрыть другие вкладки браузера?

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Да, помогут.
    Да, есть. Например, AVZ.

    P.S. "Шпионское ПО" - это то, которое шпионит, а не наоборот. Поэтому вопрос звучит странно.
    Ответ написан
    Комментировать
  • Как изменить регистр определенных целых слов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    $noUp[$i]
    Ответ написан
    Комментировать
  • Изменение яркости в WIN по расписанию?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Например, f.lux
    Ответ написан
    Комментировать
  • Работа с временем в Lua?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Зависит от того, какие средства работы со временем предоставляются средой исполнения (то есть родительским приложением, куда встроен Lua).

    Например, если родительское приложение постоянно вызывает глобальную функцию Update(), а также доступна функция os.time(), то можно в самом начале засечь время, а потом периодически его считывать заново внутри Update(). Каждый раз сравниваем новое время с начальным. Как только разница будет больше 3 секунд, значит пора двигаться дальше. Как-то так.
    Ответ написан
  • Как проверить элементы массива на наличия определенных элементов?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    С помощью регулярный выражений:
    arr = ['3' , '*' , 'IV'];
    let r_num = /^(?:\d+|[IVXLC]+)$/;    //либо арабское, либо римское число
    let r_sig = /^[*\/]$/;               //знак умножения или деления
    
    if (arr[0].match(r_num) && arr[1].match(r_sig) && arr[2].match(r_num)) {
      console.log("Условие выполнено!");
    } else {
      console.log("Ошибка!");
    }
    Ответ написан
    2 комментария
  • Как создать независимую от друг друга копию .exe файла?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Steam.exe проверяет, является ли он копией уже запущенного процесса.
    И если является, то сам файл не запускается полностью, а просто передаёт фокус на оригинал, и сразу же завершается.

    Это защита от повторного запуска, встроенная в сам файл Steam.exe.

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

    Так что для запуска копии Steam.exe понадобится виртуалка. Например, VirtualBox. Вообще нужно будет не только файл скопировать, а полностью установить отдельный Steam на виртуальную систему.
    Ответ написан
    Комментировать
  • Копирование из папки в другую папку bat?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    copy /Y D:\1\*.* D:\2
    Ответ написан
    1 комментарий
  • Как и с помощью чего создать защищенный обменник?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Готовых решений много, но все они в той или иной степени основаны на доверии.

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

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

    Ну а если речь про продвинутых пользователей, то им такие приложения не нужны, потому что хватает простых инструментов для шифрования файлов.

    P.S. А с чего вы взяли, что мысль интересная? С первого взгляда похоже на велосипед.
    Ответ написан
  • Будет ли нарушением авторских прав если я создам игру на IOS/Android на основе настольной игры?

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

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

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

    Название игры может быть тоже защищено, так что скорее всего его использовать нельзя.

    Идеей воспользоваться можно. Идеи не защищаются авторским правом ни в одной стране, их можно спокойно брать, воровать, использовать и т.д. Идеи ничего не стоят.
    Ответ написан
    2 комментария
  • Можно ли давать логин и пароль Digital Ocean разработчикам?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Можно.
    Но, как говорится: доверяй, но проверяй.
    И ещё: волков бояться - в лес не ходить.
    Ответ написан
    Комментировать