Задать вопрос
  • Как восстановить удаленные файлы на старых местах?

    @rPman
    Нет, все утилиты восстановления удаленных файлов копируют данные на новый диск. В теории это возможно конечно, но на практике готового софта нет.

    80Тб это значит несколько дисков. В зависимости от того, как на их основе построен архив, можно попробовать по одному диску от архива отсоединять и на него восстаналивать (так не получится если на всех дисках создан один огромный raid массив)

    на время восстановления массив не перезаписывать и вообще ничего с ним не делать, т.е. режим только чтения.
    Ответ написан
    3 комментария
  • Почему Doom портируют куда только можно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Doom - это была одна из первых игр где была реализована в полной мере техника BSP (Binary-Space-Partition). Это позволяло в реальном времени очень быстро сортировать и рендерить полигоны без привлечения Z-Buffer. (Рендеринг был чисто прогарммный. На то время еще не было ускорителей 3Д графики и видеокарточка умела только отображать память на экран. ) Игра не была по настоящему трехмерной. А только рализовывала 1 этаж. Рендерить надо было только пол и потолок. Для каждой точки где стоял персонаж. И наклонных горизонтальных поверхностей в ней не было как раз по этой причине. Ее называли 2.5-мерной игрой. Было также много идей оптимизации вычислений. Например вместо вещественных чисел - целые 32х битные с fixed point.

    В скобках замечу что это был 1993 год и на дворе было царство Intel 286/386. Это были машины с тактовой частотой меньше ваших телефонов (Pentium только только релизнулся и еще ни у кого не был). И трехмерный Doom был прорывом. На моем тогда еще 386SX от подтормаживал но играть было можно. И со звуком для SoundBlaster. И конечно это было лучше чем Wolfenstein.

    Аналогичное было реализовано в Duke Nukem 3d. Но Дюк был менее популярен ИМХО. Были и масса других 3д игр в жанке RPG но они были не такие динамичные. Походовые в основном.

    Вобщем сегодня если вы гейм-дев то вам желательно хотя-бы ознакомиться с техниками оптимизации которые были в Doom. Можно почитать и про Quake но это просто развитие идеи BSP деревьев для полного 3D с 5 или 6 степенями свободы. Еще можно почитать про реализацию игры Esctatica. Там не на полигонах а на шариках или эллипсах реализована игровая графика. Тоже интересно.

    UPD: Заменил MMORPG на RPG.
    Ответ написан
    6 комментариев
  • Как найти все вхождения слова в строку и перенести их в начало строки?

    freeExec
    @freeExec
    Участник OpenStreetMap
    У IndexOf если аргумент, откуда начинать поиск.
    Да и задача решается в 3 подхода: разбить на слова, отсортировать по условию, склеить обратно в строку.
    Ответ написан
    Комментировать
  • Как генерируются файлы и путь в браузере?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Алгоритм состоит из трех основных частей:
    • Роутер - он получает на вход ссылку и разбирает её на составляющие и далее вызывает соответствующий контроллер (например: site.ru/$category/$id)
    • Контроллер - он получает на входе данные от роутера, делает нужные запросы к БД или кэшу, делает еще какую-то работу по подготовке данных и передает их в шаблон
    • Шаблон - это шаблон html страницы, он на входе получает данные от контроллера и выдает результат в виде html страницы со всеми данным в нужных местах и с нужным форматированием
    Ответ написан
    1 комментарий
  • Как генерируются файлы и путь в браузере?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    как реализуется генерация html файлов?
    Никак. Никаких файлов не генерируется. Генерируется строка, содержащая какой-то шаблонный набор тегов (собственно так и называется - шаблон), и основное содержимое страницы (например статья или список статей), обычно хранящееся в базе данных или в другом хранилище. Эта строка отдается клиенту с соответствующими заголовками, объясняющими клиенту что за данные передаются (например "это будет хтмл" или "кодировка данных утф-8", естественно в более формальном виде, гуглите http headers).
    В урл указываются некоторые параметры, через get переменные (www.trusy.ru/?variant1=a&variant2=g) или через параметры пути (www.trusy.ru/variant1/variant2), которые на сервере преобразуются в переменные и уже по ним выбираются нужные для отображения данные.

    Гуглить по теме:
    единая точка входа
    роутинг
    MVC
    Ответ написан
    1 комментарий
  • Зачем нужна рекурсия в реальных случаях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Рекурсия нужна при обработке иерархических данных. Например - обойти файлы и каталоги
    в файловой системе и выполнить какое-то действие. Или действие с условием. Например если
    в текущем фолдере есть фолдер .git - то выполнить какой-то git script.

    Рекурсия может понадобиться при работе с документами XML/JSon (шаблон composer). И хотя
    в некоторых API рекурсия может быть частично скрыта за языками XPath/JSonPath тем не меннее
    ее рекурсивная природа остается налицо. Кроме того если вам достался узкий API типа DomDocument
    без поисковых диалектов - то обойти его можно на любом ЯП с рекурсивной функцией.

    Рекурсия нужна при парсинге сайтов. Это вобщем просто более расширенная трактовка работы с файловой
    системой. Если Url-s это как-бы файлы в web пространстве и они имеют ссылки друг на друга - то вы
    можете рекурсией это все обходить.

    Рекурсия почти всегда нужна при работе с графами. Берите любой алгорим на теорию графов и я готов
    спорить что 99% он будет содержать рекурсию.

    Все настольные игры (шахматы-шашки) в основе своего алгоритма альфа-бета поиска с отсечениями и
    BWF базируются на рекурсии.
    Ответ написан
  • Возможно ли вытащить пароли Chrome из мертвой системы?

    А папка с хромом живая? То можно подкинуть профиль старый и всё должно подцепиться
    Ответ написан
    Комментировать
  • Как скопировать текст множество раз с счетчиком на конце?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Так простейший же FOR справится:
    for /l %%N in (1,1,3000) do echo Example-%%N.jpg >>out.txt
    Ответ написан
    5 комментариев
  • Как максимально недорого и просто сделать звуковой эффект эха аппаратно?

    размером с тумбочку

    Пружинный ревербератор! Одна (или несколько) длинных пружин, с одной стороны электромагнит создаёт колебания, с другой пьезодатчик их снимает, как вариант. Несложное устройство. Тёплый ламповый – вот это вот всё )
    фото
    1200px-Spring_Reverb_8325.jpg


    Звук, как я понимаю, снимать со стекла, с поверхности — тоже лучше пьезодатчиком. Купить для акустической гитары, например. Тогда постукивания по стеклу снимутся, а громкий динамик соседнего стенда меньше попадёт в сигнал.
    Ответ написан
    3 комментария
  • Как скопировать определенные (не все) свойства объекта?

    Fragster
    @Fragster
    помогло? отметь решением!
    const {b, c} = obj
    const obj2 = {b, c}
    Ответ написан
    Комментировать
  • Транзисторный ключ вместо реле на 24в?

    @VT100
    Embedded hardware & software.
    Схемы на 12 и на 24 - отличаются только номиналами.
    Полевой транзистор на такое напряжение - да, будет лучше.
    Вопрос не полон без указания:
    1. что за нагрузка (влияет на схему защиты);
    2. к какому выводу источника питания подключена нагрузка (влияет на тип транзистора и влияет на схему в целом);
    3. какой сигнал управления (относительно какого вывода источника питания и какой размах сигнала - влияет на схему);
    4. в каком радиомагазине закупаетесь или какие детали есть в наличии или в разборе.
    Ответ написан
    2 комментария
  • Как привести формат ФИО к одному значению?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Если это задача объемная и/или регулярная, попробуйте NLP-фреймворк natasha. Я его использовал, он хорошо распознает бОльшую часть фамилий, имен и отчеств. Правда, сам фреймворк очень развесистый и обращение с ним довольно непростое. Но работает неплохо.
    Ответ написан
    Комментировать
  • Как в гугл таблицах сделать последовательность ссылок?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    ={
        "Наши ссылки"
        ;ARRAYFORMULA(
            "https://....product/mod"
            &SEQUENCE(100)
            &"/"
        )
    }
    Ответ написан
    1 комментарий
  • Как рассчитать пройденное расстояние, которое тело пройдёт при разгоне с 0 до 100 км/час?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для с̶ф̶е̶р̶и̶ч̶е̶с̶к̶о̶г̶о̶ ̶к̶о̶н̶я̶ ̶в̶ ̶в̶а̶к̶у̶у̶м̶е простейшего случая тут уже привели вычисления.
    В реальности мощность двигателя зависит от оборотов, обороты связаны со скоростью и переключением передач, лобовое сопротивление растёт пропорционально квадрату скорости. В результате график ускорений выглядит как-то так:
    image203.png
    Ответ написан
    2 комментария
  • Как получить самую давнюю дату, хранящуюся в массиве?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const [ date = null ] = arr.map(n => n.date).sort();

    или

    const date = arr.reduce((min, { date: n }) => min !== null && min < n ? min : n, null);

    или

    const date = arr.length
      ? new Date(Math.min(...arr.map(n => new Date(n.date)))).toISOString()
      : null;
    Ответ написан
    Комментировать
  • Как получить самую давнюю дату, хранящуюся в массиве?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    new Date( // чтобы конечный результат был в виде человеко читаемой строки
     Math.min.apply(  // применим функцию поиска минимального элемента в массиве с помощью apply
       null, // контекст не нужен
       arr.map(i => new Date(i.date)) // в качестве массива, среди которого ищем минимум - массив дат, преобразованных в Date
      )
    ).toISOString() // собственно, преобразовываем в человеко понятную строку.


    Ну или нагляднее:
    const dates = arr.map(i => new Date(i.date))
    const minDate = Math.min.apply(null, dates)
    const minDateString = new Date(minDate).toISOString()
    Ответ написан
    Комментировать
  • Как в Google Sheets вывести курс валюты по конкретной дате?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    У вас массив 2×2. Нужно получить значение из определённой позиции — для этого есть функция INDEX. Вуаля!
    =INDEX(GoogleFinance("Currency:USDRUB";"price";"20.10.2022");2;2)
    Ответ написан
    5 комментариев
  • Как эффективно получить данные со страницы из элемента script?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Google Apps Script не подготовлен для Cheerio.

    Следует избегать загрузки этого модуля.

    Пример без него.

    const url = 'https://www.pdfah.com/product/4944/hylo-gel-lubricating-eyes-drops-%E0%B8%99%E0%B9%89%E0%B8%B3%E0%B8%95%E0%B8%B2%E0%B9%80%E0%B8%97%E0%B8%B5%E0%B8%A2%E0%B8%A1%E0%B8%8A%E0%B8%99%E0%B8%B4%E0%B8%94%E0%B9%80%E0%B8%88%E0%B8%A5-10ml-300%E0%B8%AB%E0%B8%A2%E0%B8%94';
    
    function getData() {
      const data = UrlFetchApp.fetch(url);
      const content = data.getContentText();
      const exec = /application\/ld\+json">(.*?)<\/script>/gi
        .exec(content.replace(/[\r\n]+/g, ' '));
      if (exec) {
        const product = JSON.parse(exec[1]);
        console.log(product);
      }
    }


    В Таблице https://docs.google.com/spreadsheets/d/1DQPeBVHMeQ...
    Ответ написан
    Комментировать
  • Как отследить изменения?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Одним из основных способов является подписка на триггер изменений в Таблице, который реализуется в Google Apps Script.

    Вы можете построить свое решение на основе примера https://qna.habr.com/q/1207030#answer_2234340
    Ответ написан
    Комментировать
  • Как передать параметры из функции в QUERY?

    @remaikee Автор вопроса
    Огромное всем спасибо за присланные ответы! Они натолкнули меня на мысль и задачка была решена!

    Собственно хотел заставить работать встроенную гугловскую функцию QUERY с наименованиями полей в передаваемой таблице. Решение напрашивалось самое простое - заменить в запросе наименования полей на соответствующие наименования Col1, Col2 и т.д. Надо было только найти красивое решение как перехватывать запрос и на лету изменять его:)

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

    Решение:

    В Google.Docs есть такая штука, как именованные функции: https://support.google.com/docs/answer/12504534

    В итоге я через именованные функции сделал свою:
    M_QUERY(диапазон, запрос)
    которую описал как:
    =QUERY({диапазон}; Q(диапазон; запрос))

    а в Apps Script описал функцию Q, которая и обрабатывает передаваемые запросы:
    function Q(table, query){
      console.log(query);
      if (table[0].map){
        table = table[0];
        for(var key in table){
          query = query.replaceAll('`'+table[key]+'`', 'Col'+(1+Number(key)));
        }
      }
      return query;
    }


    Собственно все подготовительные операции проведены и можно в таблицах гугл использовать созданную функцию M_QUERY

    Берём таблицу вида:
    6356da09f2f86969780191.png
    где первая строка содержит наименования полей

    и на требуемом листе пишем формулу:
    =M_QUERY(1:1000; "select `ID` where `ASIGNED_BY` like '%Иванов%'")
    "1:1000" - заменяем на диапазон, содержащий исходные данные :)

    Профит!
    Ответ написан
    Комментировать