• Почему этот код не работает?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Потому что date.getMonth внутри использует this, который с вашей магией теряется.
    Вот так будет работать: magic(date.getMonth.bind(date));
    Ответ написан
  • Существует ли логотип для искусственного интеллекта вообще?

    Не существует.
    Т.к. в науч.попе это что-то человекоподобное, а людям в теме логотипы не нужны.
    Изображения Терминатора, к сожалению, все запатентованы, как и сам персонаж.
    Ответ написан
  • Существует ли логотип для искусственного интеллекта вообще?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Типа того (только повёрнут влево, но иногда - без верхней части черепа: только крупные шестерни и контур черепа снизу):
    b8db138630aae9edf163e8ff22af0146--machin
    Ответ написан
  • Как поменять цвет кнопки, панели, текста, через скрипт?

    GavriKos
    @GavriKos Куратор тега Unity Game Engine
    У каждого компонента свой параметр есть для этого.
    В юнити у кнопки и панели нет цвета - они используют Image.
    У компонента Image есть параметр color - меняйте на здоровье.

    С текстом чуть сложнее - их несколько видов (TMPro, Юнитевый), но у всех тоже есть параметр color,

    Итого вам надо чтобы ваш скрипт знал о нужных компонентах (SerializeField, GetComponent и т.д. - базовые вещи) и меняйте им параметр на здоровье.

    Ну и гуглом учитесь пользоваться - ответ есть в любом туториале по UI,
    Ответ написан
  • Геймдейв: многокнопочное управление?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    со Старкрафт же справляются

    Ну так и используйте раскладку старкрафта.

    Собственно - а где сам вопрос? В чем он? Какую раскладку использовать, или что?
    Ответ написан
  • Можно ли нормальным способом запретить редактировать всё, кроме диапазона?

    oshliaer
    @oshliaer
    Google Products Expert
    Вы можете защитить лист и добавить исклюючения в защиту листа, а не добавлять "разрешительный" диапазон.

    Например, вы не можете создать новый лист или изменить структуру текущего листа, но можете редактировать A1 https://docs.google.com/spreadsheets/d/1nleri9Tedl...

    Я в своих проектах делаю скрипты, которые качественно обрабатывают несколько слоев защиты. Это намного быстрее, чем руками.

    /**
     *
     * @param {GoogleAppsScript.Spreadsheet.Sheet} sheet
     */
    function protectSheet_(sheet) {
      var protection = sheet.protect().setDescription('Autoprotection');
      var unprotected = sheet.getRangeList(getCommonNotasList_()).getRanges();
      protection.setUnprotectedRanges(unprotected);
    
      var me = Session.getEffectiveUser();
      protection.addEditor(me);
      protection.removeEditors(protection.getEditors());
      protection.addEditors(editors);
      if (protection.canDomainEdit()) protection.setDomainEdit(false);
    };
    
    var getCommonNotasList_ = function() {
      var a1Notations = [
        'B2:B4',
        'B6:B7',
        'A14:E30',
        'I3:Q26',
        'S2:V21',
        'T33:W264'
      ];
      return a1Notations;
    };


    С уважением,
    contributor.pw
    Ответ написан
  • На чем создают игры для сервиса gamee?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Поковырял код одной игры - Phaser там используется.
    35 Мб чего? Исходников? 100% графику не оптимизировали.
    Ответ написан
  • Возможна ли монетизация мобильного приложения без размещения его в Google Play?

    axifive
    @axifive
    Go/Java Developer
    Конечно, если приложение востребовано, на 4pda и xda-developers можете найти приложения, которые запрещены для размещения в Google Play, но тем не менее пользуются популярностью из-за предлагаемого функционала.
    Ответ написан
  • Как в гугл таблицах открыть доступ к определенному диапазону ячеек?

    @Comrues
    Что бы был доступ к определённому диапазону ячеек только у тебя нужно:
    1. Выделить диапазон ячеек которые нужно заблокировать для других пользователей.
    2. ПКМ > "Защитить диапазон..."
    3. Кнопка "Задать разрешения"
    4. Указать у кого будет доступ к выбранному диапазону ячеек.
    Ответ написан
  • Как в гугл таблицах открыть доступ к определенному диапазону ячеек?

    coderisimo
    @coderisimo
    Хотите ответ? Формулируйте вопрос КОРРЕКТНО ! :)
    1) Выделяете диапазон ячеек.
    2) В меню Data кликаете Protected sheets and ranges
    3) Запрещаете редактирования всем кроме себя
    4) Скрываете эти столбцы (hide) !

    при попытке открыть скрытый диапазон "левый" юзер получит сообщение "Произошла ошибка
    Эта область защищена. Чтобы отредактировать ее, попросите владельца таблицы отключить защиту."
    Ответ написан
  • Комментарии в коде?

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


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


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

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

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

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

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

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

    CityCat4
    @CityCat4
    У тролля даже мозги - и то каменные!
    на хосте стоит винда, на ней могу запустить серый файл

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

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

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

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

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

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

    bingo347
    @bingo347
    Бородатый программер
    Что такое обратные вызовы?
    Я знаю только что это функция которая передается как аргумент в другую функцию.
    В принципе, можно и так сказать. Если быть более точным - это вызов функции переданной в качестве аргумента.
    Почему они так называются?
    Это игра слов. На английском 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)(n, 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, замыкания возведены в абсолют, и каждая функция является замыканием.
    Ответ написан
  • Что такое обратный вызов в программировании?

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

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

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

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

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

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