• Где можно заказать опрос людей в сети?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Попробуйте Яндекс.Взгляд.
    Ответ написан
    Комментировать
  • Как подставлять "-" через каждые 4 символа?

    0xD34F
    @0xD34F Куратор тега JavaScript
    str.replace(/.{4}(?!$)/g, '$&-')
    
    // или
    
    str.match(/.{1,4}/g).join('-')
    
    // или
    
    str.split(/(?<=^(?:.{4})+)/).reduce((acc, n) => acc + (acc && '-') + n, '')
    
    // или
    
    ''.concat(...[...str].map((n, i) => !i || i % 4 ? n : `-${n}`))
    
    // или
    
    Array.from(
      { length: Math.ceil(str.length / 4) },
      (n, i) => str.slice(i * 4, (i + 1) * 4)
    ).join`-`
    Ответ написан
    Комментировать
  • Комментарии в коде?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    Не учите меня программировать.
    Комментарии лишними не бывают.
    5e30e1be57646442252796.gif
    // Когда я начинал это писать, только Бог и я понимали, что я делаю
    // Сейчас остался только Бог


    // иногда мне кажется, что компилятор игнорирует все мои комментарии


    // пьян, исправить позже

    // Магия. Не трогать.

    /**
     * Всегда возвращает true.
     */
    public boolean isAvailable() {
        return false;
    }
    Ответ написан
    2 комментария
  • Куда податься с незаконченным высшим (2 курса)?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если есть знания - нет никаких преград.

    Цените не возможность работать, а свои знания и свой личный опыт!
    "Нет диплома - получай половину от ЗП сотрудников с дипломом" - сразу встаёте и уходите с собеседования.

    Поймите правильно: Вы с необходимыми для работодателя знаниями - это исправный рабочий механизм, а не полуфабрикат: почему же Вы должны получать меньше и испытывать какие-то трудности при трудоустройстве?!
    Ответ написан
    4 комментария
  • Браузер для чувствительной инфы в виртуальной машине, имеет ли смысл?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    на хосте стоит винда, на ней могу запустить серый файл

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

    hint000
    @hint000
    у админа три руки
    Если скомпрометирован хост, то можно считать, что скомпрометирован и гость.

    1) Сеть гостя можно защитить с помощью VPN, но с кучей оговорок, т.е. в общем случае - нельзя.

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

    3) Иметь дополнительный комп, с которого можно подключиться к гостю по RDP (+VPN), чтобы не использовать клавиатуру, мышь и экран хоста. Тут можно было вернуться к пункту 1)... Но если есть дополнительный чистый (не скомпрометированный) комп, то вся затея теряет смысл, просто используйте этот комп для работы с чувствительной информацией.

    Короче: если хотите работать с непроверенными исполняемыми файлами, то эта работа должна быть на госте, а не на хосте. И даже в этом случае остаются такие вещи, как Meltdown и Spectre и ещё куча найденных после них. Эксплуатировать эти уязвимости очень сложно, но теоретически они позволяют пробиться из гостя, перехватить хостовую информацию. А еще уязвимость Rowhammer (и родственные ей), которая позволяет на физическом уровне менять данные в оперативной памяти... А ещё... Ну вы поняли.
    Ответ написан
    1 комментарий
  • Что такое обратный вызов в программировании?

    bingo347
    @bingo347
    Crazy on performance...
    Что такое обратные вызовы?
    Я знаю только что это функция которая передается как аргумент в другую функцию.
    В принципе, можно и так сказать. Если быть более точным - это вызов функции переданной в качестве аргумента.
    Почему они так называются?
    Это игра слов. На английском callback - это не только обратный вызов, но и обратный звонок (по телефону). Данная абстракция позволяет вызываемому коду вызвать вызывающий код, подобно тому как собеседник может перезвонить Вам позднее, если Вы сообщите ему куда.
    В чем их смысл и зачем нужны?
    В принципе я уже ответил, они нужны для возможности вызываемому коду вызвать вызывающий код. Это позволяет строить высокоуровневые абстракции, вроде обобщенных функций или асинхронных функций.
    Обобщенные функции позволяют не писать однотипный код, снижая тем самым вероятность ошибок, а с помощью обратных вызовов они могут принимать в себя фрагменты кода, которые могут меняться от использования к использованию. Для примера, абстрагируем цикл от 0 до n на C:
    // абстракция цикла
    void each(int n, void (*callback)(int, void*), void* closure_data) {
      if(n <= 0) { return; }
      for(int i = 0; i < n; i++) {
        (*callback)(i, closure_data);
      }
    }
    
    // колбэк - тело цикла, вариант 1
    void cb_body1(int i, void*) {
      printf("%d", i);
    }
    
    // колбэк - тело цикла, вариант 2
    void cb_body2(int i, void* acc) {
      int* normalized_acc = (int*)acc;
      *normalized_acc += i;
    }
    
    int main() {
      each(10, cb_body1, null); // напечатает строки 0, 1, ...9
    
      int result = 0;
      each(10, cb_body2, &result); // посчитает в result сумму чисел от 0 до 9
      printf("%d", result);
      return 0;
    }

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

    Так же стоит заметить, что во многих высокоуровневых языках наряду с обратными вызовами используется механизм замыканий, который позволяет объявлять функции внутри других функций и захватывать окружающие переменные. Но нужно понимать, что это лишь компиляторный сахар, и на самом деле в функцию просто передаются указатели на захваченные переменные в качестве аргументов, подобно тому, как я сделал это руками в примере выше, с помощью аргумента closure_data в функции each. Обычно компилятор создает для этого анонимные структуры (C++, Rust) или анонимные классы (C#), которые хранят указатель на функцию и указатели на окружение. А в некоторых языках, например в js, замыкания возведены в абсолют, и каждая функция является замыканием.
    Ответ написан
    2 комментария
  • Что такое обратный вызов в программировании?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Некоторые случаи использования коллбека (помимо асинхронного упомянутого использования):

    В коде: отложенный (ленивый) вызов.
    Например есть некий контейнер, в него мы регистрируем некие объекты с некоторой логикой.
    Но так как очень много таких кандидатов и они все запускаются, замедляя и работу и нагружая ресурсы, то мы бы хотели, чтобы контейнер просто знал о них, но при инициализации не запускал весь код создания этих объектов. На помощь приходят коллбеки — в коллбеке мы описываем логику создания объекта и (внимание) регистрируем именно коллбек с этой логикой создания, все — это очень быстро и легко, тк не наплодили объектов. Далее только при вызове нужного объекта контейнер видит, что зареган коллбек и вызывает его, тем самым инициализирует создание нужного объекта, описанное в этом коллбеке! ПРОФИТ!

    В коде: рекурсивно применить некоторый функционал к элементам коллекции.
    Очень популярное использование в Java в стримах.
    Есть коллекция элементов, запускаем некий map(), reduce(), filter(). walk() по набору элементов (коллекции) передавая в этот обход коллбек, и ожидаем, что получим результирующий набор после применения коллбека к каждому элементу. То есть этот коллбек будет выполнени внутри обхода, сама конструкция этих методов подразумевает, что вы передадите что-то что потом вызовется.

    Между системами: асинхронное взаимодействие
    Hook, callback
    Есть программа, которая ждет событий от внешней системы. Например есть платежная система Яндекс.Касса и есть ваш магазин. Вы отправили клиента на оплату в платежку, но он ушел "в путешествие" и вы не можете узнать судьбу платежа сразу. Вы можете бомбить сайт платежки, проверяя статус по номеру транзакции, а можете дождаться обратного вызова (коллбека, хука) от платежной системы с событием "Оплатил" или "Не оплатил, тк не хватило".
    Также в др системах — само оповестит, вызвав обратно уже меня.
    Ответ написан
    3 комментария
  • Что такое обратный вызов в программировании?

    andreydobrin
    @andreydobrin
    Сложно , но это пока
    Все очень просто:
    Вы правильно сказали, что это функция, передающаяся как аргумент в другую функцию:
    пример с js
    function  first(callbak){
    ----здесь пишем код функции----
    ---- здесь можно записать код "функции обратного вызова" 
    и она сработает тогда, когда выполнится функция first()----
    }

    Простым языком - есть одна функция и у нее в параметре другая. Сперва выполнится сама функция, а потом та, которая является аргументом этой функции.
    Ответ написан
    Комментировать
  • Что такое обратный вызов в программировании?

    Обратный вызов (англ. callback) — это ещё одна функция, которую вызовут «потом».

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

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

    Например, нужно выполнить HTTP запрос к далёкому серверу и получить от него ответ.

    Тогда в функцию, которая займётся общением с далёким сервером, передают не только параметры запроса, но и callback-функцию, которая будет вызвана после получения ответа, с данными из ответа.
    Ответ написан
    1 комментарий
  • Что такое обратный вызов в программировании?

    Griboks
    @Griboks
    Когда функция выполняется долго, нет смысла ожидать её завершения (визуально это будет выглядеть как зависший браузер, и пользователь закроет сайт). Поэтому ей передают callback, мол, сама сообщишь, когда закончишь работу.
    Ответ написан
    Комментировать
  • Как удалить файл desktop.ini в папке и всех её подпапках?

    axifive
    @axifive
    Software Engineer
    del /s /q /f /a ".\desktop.ini"
    Ответ написан
    Комментировать
  • Какой выбрать жанр для андроид игры?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Не знаю какие актуальны, но могу накидать более-менее оригинальных идей.
    Это только часть, есть ещё=).
    Игра 'Дворник'

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

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

    Arty Fight

    Геолокационная массовая межконтинентальная артиллерийская онлайн-игра с дополненной реальностью и элементами tower defence.

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

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

    Да, время от времени можно сбрасывать на территорию "гуманитарную помощь" с полезными и не очень сюрпризами. Как в старом добром Worms Armageddon.
    Можно развернуть над столицей или своей кафешкой гигантский силовой щит, можно отстреливать на лету медленные снаряды, ставить "батуты" и отправлять "наковальни" обратно.

    Игра на общей карте с захватом территорий кругами

    • концепция чем-то похожа на игру "Ножички"
    • игрок оказывается в произвольном месте наобщей карте и ему принадлежит круг определенного радиуса.
    • в IDLE режиме юнит ходит только по периметру своей территории, пользователь указывает ему точку дуги. которую следует укреплять.
    • в IDLE накапливается какой-то ресурс для "Рывка", например появляется новый юнит и старого можно послать в "Рывок"
    • с некоторой частотой он может сделать "Рывок" - побежать по кругу наружу от своей границы и добежав до своего же периметра откусывает новый кусок территории. С ростом территории растёт и протяженность границ
    • радиус забега можно фиксировать, его можно повышать и бустерами
    • бустеры и прочие сюрпризы падают с неба, как, впрочем и метеориты с бомбами, которые отхватывают от твоей территории такие же круглые куски
    • скорость/частота событий может зависеть от радиуса/площади
    • ПВП:
      • В Рывке можно захавать кусок территории противника, если удастся прорваться за участок его забора за доступное время (секунды).
      • Если противник оказался онлайн, можно попробовать пересечь след выбежавшего в Рывок юнита и юнит будет потерян/захвачен, если окажется окружен. внутри территории врага.
      • можно подумать над агломерациями союзников.

    IDLE игра на огромном глобальном гексагональном поле

    • С некоторой частотой можно занимать ячейки рядом со своими
      • перемещением одной из своих занятых ячеек (быстрее/чаще)
      • размножением одной из своих занятых ячеек (медленнее/реже)

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

    Игра на гекссагональном поле

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

    RIP Tumi (рвать газетку)

    Мобильная игра: рвать газету на тонкие полосы
    • название игры состоит из фамилии Крейга Туми, одного из героев фильма "Лангольеры" Стивена Кинга, и его основного занятия -- рвать бумагу
    • геймплей:
      • на экране скроллируемая область с большой газетой или страницей журнала
      • если начать медленный свайп от края листа, то он будет рваться в сторону свайпа
      • если дёрнуть слишком быстро, то разрыв произойдёт до ближайшего края

    • метрики:
      • время:
        • разрывания
        • игры
        • скорость (максимальная, средняя, по газете...)


    • рейтинги:
      • среднее арифметическое длин всех оторванных кусков текущей газеты (вычисляется в реальном времени)
      • суммарная длина всех оторванных кусков текущей газеты (вчисляется в реальном времени)
      • количество кусков текущей газеты
      • среднее арифметическое длин всех оторванных кусков в пределах профиля
      • суммараня длина всех оторванных кусков в пределах профиля
      • суммарное количество всех клочков по профилю


    • ачивки:
      • достижения длин, сравнимых с длинами:
        • самолёта
        • ВПП
        • расстояний между городами
        • экваторов различных планет
        • расстояний до планет и небесных тел


    • достижение количеств, сравнимых с интересными количествами
    • достижение объёмов порванной бумаги, сравнимых с интересными объёмами (вычисляется по эмпирическому коэффициенту)

    • монетизация:
      • реклама на разрываемых газетах



    Черепашьи бега

    Айдлер. На единой карте (в пределах сессии или всего мира) бегают по маршруту черепашки. Цель - пройти маршрут по пилонам.
    Черепах можно приманивать и отпугивать (едой, кактусами и т.д.). Всего этого ограниченное количество, выпадает и пополняется периодически.
    Ответ написан
    Комментировать
  • Есть ли простое приложение (для iOS), которое присылает уведомление при приближении к заданным GPS-координатам?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Напоминания на iOS 13 это умеют. По крайней мере есть настройка.
    Ответ написан
    3 комментария
  • Стоит ли использовать Lua в качестве бэкенда для разработки браузерных игр?

    Trave
    @Trave
    Есть ещё LuaJIT — ускаряет до 64х. Питон медленнее.
    Под луа тоже есть практически все нужные библиотеки.
    Имхо бэк на lua лучше и быстрее чем бэк на python.
    И не нужно забывать что lua — register based vm, а python — stack based vm.
    Т.е. даже интерпретация lua будет быстрее python'a.
    Ответ написан
    Комментировать
  • С чего начать создание игры на android/iOS?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    C#, Unity, и оба - по оф.документации, и никаких видео кроме тех, что будет в оф.документации!
    Ответ написан
  • Как быстро снова окунуться в свой же код?

    "Я через месяц отпуска" — то же, что "другой, новый разработчик в проекте".

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

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

    @evgeniy_lm
    Хочу то, хочу се, ... пятое, десятое. Ну, блин, хочешь - делай. Я тоже много чего хочу, но делать приходится то что могу и то то что необходимо.
    Ответ написан
    Комментировать
  • Как сделать рейкастинг?

    profesor08
    @profesor08 Куратор тега JavaScript
    Если коротко, то на шейдерах.

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

    glslsandbox.com/e#52242.4
    https://www.youtube.com/watch?v=D-HroAIUePM
    Ответ написан
    4 комментария