• Как читать документацию по node.js?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    на официальномй сайте, проматываю чуть ниже и вижу

    fs.writeFile(file, data[, options], callback)#
    History:
    • file <string> | <Buffer> | <URL> | <integer> filename or file descriptor
    • data
      <string> | <Buffer> | <TypedArray> | <DataView> | <Object>

    • options <Object> | <string>
      • encoding <string> | <null> Default: 'utf8'
      • mode <integer> Default: 0o666
      • flag <string> See support of file system flags. Default: 'w'.
      • signal <AbortSignal> allows aborting an in-progress writeFile

    • callback <Function>
      • err <Error> | <AggregateError>



    When file is a filename, asynchronously writes data to the file, replacing the file if it already exists. data can be a string or a buffer.

    When file is a file descriptor, the behavior is similar to calling fs.write() directly (which is recommended). See the notes below on using a file descriptor.

    The encoding option is ignored if data is a buffer.

    If data is a plain object, it must have an own (not inherited) toString function property.
    ...


    откуда следует что:
    первый параметр - это имя файла который нужно создать,
    второй параметр - это данные которые нужно записать,
    третий (необязательный) - это объект с опциями
    а четвертый (или третий если предыдущий параметр не был указан) - это коллбэк

    ЗЫ: уважаемый ТС, я понимаю что вопрос скорее всего был задан из-за вашей невнимательности, но тем не менее ответ вы получили, отметьте его решением)))

    Вот вам способ быстро найти информацию на странице:
    - открыв нужную страницу с большим объемом текста, перемотайте страницу в начала (до оглавления) и затем нажмите комбинацию кнопок CTRL+F (поиск по тексту страницы) и в появившемся окошке вбивайте искомый текст (в данном случае fs.write). После этого нужные пункты оглавления подсветятся желтым и вы легко найдете нужный.
    Ответ написан
    12 комментариев
  • Как правильно "объединить тип"?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    Так как порядок в юнион не определен, можно получить лишь юнион всех возможных вариантов:
    type Char = "A" | "B" | "C" | "D";
    type ConcatMap<T> = T extends unknown
        ? {} extends T[keyof T]
            ? `${string & keyof T}`
            : `${string & keyof T}${ConcatMap<T[keyof T]>}`
        : never;
    type MapChars<C extends Char> = {
        [K in C]: MapChars<Exclude<C, K>>
    };
    type Split<S extends string> = S extends `${infer H}${infer Tail}`
        ? [H, ...Split<Tail>]
        : [];
    type T1 = Split<T2>;
    type T2 = ConcatMap<MapChars<Char>>;

    https://www.typescriptlang.org/play?#code/C4TwDgpg...
    Ответ написан
    Комментировать
  • Когда использовать TypeScript?

    WblCHA
    @WblCHA
    1. когда уместно использовать данный язык?

    Всегда.

    2. Можно ли использовать TS без фреймов и библиотек?

    Да.

    3. И есть ли смысл его использовать без фреймворков?

    Да.
    Ответ написан
    2 комментария
  • Как подготовиться по алгоритмам к собеседованию(junior)?

    @dmshar
    Никогда не понимал, что значит "подготовиться к собеседованию". К экзамену понимаю - выучили "от сих до сих", ответили на вопрос, удовлетворили преподавателя, получили свою оценку и гуд бай.
    А к собеседованию? Что толку, если вы "нахватаетесь" за 4 дня каких-то отрывочных знаний, даже на что-то правильно (почти случайно) ответите на собеседовании без глубокого понимания. Вы ведь тут не препода обманываете, вы завтра должны решать будете не игрушечно-собеседную, а реальную производственную задачу. Работодатель думает, что вы спец по алгоритмам, а вы просто чего-то там "нахватались" перед собеседованием. Можно догадаться, как закончиться ваш испытательный период. Так зачем тратить время? Лучше его потратить на ИЗУЧЕНИЕ алгоритмов, и на следующем собеседовании не трястись что тебя спросят чего-то, что не успел прочитать. Тогда и работодатель поймет с кем дело имеет, и вам польза будет на будущее.
    В общем, собеседование - это не экзамен! К нему специально готовиться - себе во вред. Но на собеседовании надо показывать именно то, что вы собой на самом деле представляете. А если это не устраивает работодателя, то благодарить Бога, что на эту работу вас не взяли.
    Впрочем, вменяемый работодатель и не будет заставлять на собеседовании до запятой рассказывать конкретный алгоритм. А вот попросить сравнить, объяснить почему один из них лучше, быстрее, экономичнее и пр. другого очень даже может. Или например попросить вас для конкретной задачи и конкретных данных подобрать наиболее подходящий алгоритм. Вот к пониманию именно таких вещей и надо посвящать время подготовки.
    Ответ написан
    2 комментария
  • Зачем бэкенду уметь писать запросы к БД?

    DevMan
    @DevMan
    да, вы не понимаете.
    шняга, которую вы не помните, называется ORM. и её действительно хватает для типовых задач.
    проблемы возникают когда возможностей ORM не хватает. и/или нужно спроектировать БД с нуля и с хитрыми каскадами.

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

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    <!-- Для примера -->
    <div id="data"></div>


    fetch('https://www.cbr.ru/currency_base/daily/')
      .then(response => response.text())
      .then(data => {
        const parser = new DOMParser();
        const pageDOM = parser.parseFromString(data, "text/html");
        const tableData = pageDOM.querySelector('.data');
        
        // Для примера	
        const dataElement = document.getElementById('data');
        dataElement.innerHTML = tableData;
    
        console.log(tableData)
      });


    P.S. вы можете прям щас зайти к ним на сайт, открыть панель разработчика, вкладку консоль и вставить туда js код. Получите в консоли таблицу с валютами.

    Для бека суть такая же, только вам придётся использовать свой парсер для DOM. А в остальном суть такая же
    Ответ написан
    6 комментариев
  • Можно ли ограничиться JS в проекте?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    Технически — можно.

    Только не получится ограничиться только JS в браузере — без бэкенда отправку писем и сообщений в тележку не сделать, т.к. используются ключи, которые надо держать в секрете, а не раздавать каждому посетителю страницы.

    Доставка писем отдельная тема, и вместо простой отправки письма прямо с сервера лучше воспользоваться каким-то сервисом email рассылок. Крупным, «белым». Скорее всего с бесплатным начальным планом. Тут дело в репутации IP адресов, с которых уходят письма: хостинг скорее всего уже подпорчен спамерами, пытавшимися слать с него ерунду. А вот сервисы рассылок блокируют плохую активность, и отправленные от них письма менее вероятно упадут в спам у получателя.

    Бэкенд вполне можно написать на JS — NodeJS.
    Ответ написан
    1 комментарий
  • Почему setTimeout выполняется быстрее setImmediate?

    Lynn
    @Lynn
    nginx, js, css
    Потому что так повезло. Это не гарантия.

    https://nodejs.org/en/docs/guides/event-loop-timer...

    For example, if we run the following script which is not within an I/O cycle (i.e. the main module), the order in which the two timers are executed is non-deterministic, as it is bound by the performance of the process: [...]

    However, if you move the two calls within an I/O cycle, the immediate callback is always executed first:
    Ответ написан
    Комментировать
  • Как рекурсивно обойти древовидный объект?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const getKeys = obj =>
      obj instanceof Object
        ? Object.entries(obj).flatMap(n => [ n[0], ...getKeys(n[1]) ])
        : [];
    Ответ написан
    Комментировать
  • Как получают API?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Wiki
    API (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай][1]) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой


    По простому
    API - это набор правил, по которым можно наладить связь между разными системами. Это то, что предоставляет некоторый сервис. Он же и разрабатывает его и он же даёт его в пользование.

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

    API как правило - это документация. Пример такой документации (API) для погоды - https://openweathermap.org/current

    Если углубиться в вопрос, то ты столкнёшься с такими понятиями как токен или ключ, которые определяют уровень доступа к методам API. Некоторые API могут работать без таких вещей, но по большей части все используют токены. Хотя бы номинально.

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

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

    Дополнительно

    API - это не только про запросы. API - более широкое понятие нежели доступ к серверу.
    Через API работают, например, все программы в Windows - WinAPI. Через API программы взаимодействуют между собой. Плагины в браузере используют API браузера для работы с плагинами.
    Ответ написан
    2 комментария
  • Await в axios не работает?

    qork
    @qork
    { background: #F00B42 }
    После вызова функция async возвращает Promise.

    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Ответ написан
    Комментировать
  • Возможно ли фрилансить на Си?

    Zoominger
    @Zoominger
    System Integrator
    Нет. На Сишке пишут низкоуровневое ПО, драйверы, прошивки, системный софт. На фриланс такое не отдают.
    Ответ написан
    1 комментарий
  • Какой это язык?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Это не язык программирования.
    Это обычный HTML
    Ответ написан
    4 комментария
  • Какой это язык?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    Коротко:
    Какой это язык программирования?
    Это язык разметки
    Пишет что html , но он не выглядит как html
    html и есть, закомментированные строки содержат некоторую информацию в JSON, но суть от этого не меняется, возможно какой-либо скрипт на фронте умеет вытащить из коментов некую инфу, что-то типа нотаций. ИМХО так себе решение, что в прочем не сильно удивительно для вордпресса...
    Ответ написан
    Комментировать
  • Как сформировать массив только тех полей, которые изменились, чтобы потом их отправить?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Запоминаем изначальное состояние полей
    Перед отправкой берём текущее состояние
    Вычисляем diff между объектами
    Ответ написан
    5 комментариев
  • Как понять, что пора повышать зарплату?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Я Junior Full-stack разработчик

    Опыт работы у меня примерно полгода

    уже год преподаю Java на одних курсах для людей, что хотят профессию сменить.

    Это не слезы, просто дождь течет по лицу :) Все абзацы смехотворны, если честно. Сам пишу с 2011 года на JS + бэк на PHP\Python, могу ли я себя назвать фуллстэком - наверное нет. Но ок - >

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

    Как понять что можно просить больше(и заслужил) = опыт коммерческой разработки(всем пофиг сколько пет проектов вы написали до этого) от года + решение бизнес задач без помощи сеньора\мидла + регион.

    Если вы пишите серьезную бизнес логику не обращаясь к мидлу и отработали больше года, то однозначно стоит. Если каждый чих сопровождается комментарием к pull request - нет.

    Для джуна даже московского запрлата в 800-900 долларов = это хорошая зарплата, при условии того что вы обращаетесь за частой помощью к своим товарищам, и пока не можете выполнять серьезные таски сами.
    Ответ написан
    2 комментария
  • Как правильно распарсить и получить нужные данные с этого сайта?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    https://freelance.habr.com Вам туда, тут за вас это никто делать не будет
    Ответ написан
    1 комментарий
  • Есть ли нормальный способ выгрузить таблицу из сайта в файл эксель?

    MANAB
    @MANAB
    Разрабатываю на C#: Web, Desktop, Gamedev
    Сделать надо на стороне фронта или бэкенда? Только товары со страницы или все из БД?
    Если бэкенд, то либа для работы с Excel нужна. Дергаешь метод для получения данных из БД, заполняешь, отдаешь файл. Если на фронте - тут я хз про работу с Excel, но или нужен запрос на получение всех данных из БД и его данные оформляешь через либу в файл, или парсишь DOM и заполняешь файл данными со страницы.
    Ответ написан
    5 комментариев
  • Как безболезненно перейти с Python на Rust?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Учишь rust -> пишешь на rust.
    Ответ написан
    3 комментария
  • Как из двух массивов образовать новый, взяв часть данных?

    0xD34F
    @0xD34F
    Такое вообще возможно?

    Нет, блин. Невозможно.

    $items = array_combine(
      array_column($arr2['entries'], 'name_item'),
      $arr2['entries']
    );
    
    $keys = [ 'price_item', 'image_item' ];
    
    foreach ($arr1 as $n) {
      foreach ($keys as $k) {
        $n[$k] = $items[$n[0]][$k];
      }
    
      $arr3[] = $n;
    }

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