• Как организовать fastify и nuxt?

    Комментировать
  • Как организовать fastify и nuxt?

    dergunovs
    @dergunovs
    dergunov.com
    Ответ написан
    Комментировать
  • Как запускать работу js скрипта каждый час по глобальному времени?

    twobomb
    @twobomb
    var startScript = (new Date().getHours()+1)%24;//Берем текущий час например 21 прибавляем 1, 21 + 1 = 22 это час когда нужно запустить скрипт
    if(new Date().getMinutes() == 0)//Если мы зашли на сайт и минуты равны 0, например 22:00 то сразу же запускаем наш скрипт
        myScript();
    loop();//Вызываем наш цикл
    function loop(){
        var date = new Date();//Берем текущее время
        if(date.getMinutes() == 0 && date.getHours()==startScript){//Если минут равны нулю и текущий час тому в котором нужно запустить скрипт
         	   startScript = (startScript+1)%24 ;//прибавляем +1 к часу в котором нужно запустить скрипт
            	myScript();// и запускаем скрипт
        }
        setTimeout(loop,30000);//проверка текущего времени 1 раз в 30 секунд, если нужно чтобы скрипт запускался с точностью до секунды (22:00:00) поставить ~500
    }
    
    function myScript(){
     	//Ваш скрипт    
        alert("hello,word!");
    }
    Ответ написан
    Комментировать
  • Как телеграм боту получить доступ к сообщениям?

    ExtremeCode
    @ExtremeCode
    csharp developer, blogger
    У ботов по умолчанию настроены политики приватности, дать доступ ко всем сообщениям необходимо в BotFather в настройках бота - Privacy Mode. В API есть больше информации.

    Для того чтобы у бота была возможность слать сообщения, необходимо иметь ChatId (по сути канал это тоже чат, но я не уверен что это будет работать, необходимо проверить). А так же убедиться в том что у бота будут доступны права для отправки сообщений в канал

    P.S.
    Как вариант вместо Bot Api можно использовать API клиента, там точно будет доступ ко всем сообщениям и отправке их в любые каналы
    Ответ написан
    Комментировать
  • Как подписаться через this.$refs.element на addEventListener()?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Используйте mounted вместо created:

    mounted() {
      this.$refs.textArea.addEventListener(...
    Ответ написан
    Комментировать
  • Как сделать случайный цвет у div?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    '#' + (Math.random().toString(16) + '000000').substring(2,8).toUpperCase()


    Ответ написан
    1 комментарий
  • На чем написать rest api для kanban доски?

    @ghostiam
    На Go писатель, серверов пинатель.
    На GO, "православный" стек, это стандартный пакет net/http + какой нибудь внешний роутер, например chi, либо вообще не http/rest, а gRPC (если мы говорим об API).
    Для БД чистый SQL, максимум какой нибудь маппер на структуру, типа sqlx(можно ещё использовать sql builder, но в IDE Goland хорошая поддержка чистого sql).

    ORM очень не советую, есть конечно gorm(генерирует запросы не эффективно, N+1 при связях), для мелких проектов хватит, но вот со сложными запросами любая ORM не справляется.
    Я категорически против ORM, так как за всё время моей работы в вебе, в любом проекте, самым слабым звеном всегда была ORM(долбит кучей запросов БД, когда на чистом sql это 1-2 запроса), либо программист, вместо того, чтобы написать запрос вида "SELECT SUM(amount) FROM book WHERE author = 'Petya'", достаёт все записи и суммирует это в коде(делает работу за БД + тратит ресурсы БД на чтение данных с диска и передачу их по сети).

    Не нужно использовать фреймворки, это не даст опыта написания на go(как и в большинстве языков).
    Go используют, где производительности других решений не достаточно, или нужна многопоточность, что фреймворки так себе обеспечивают.
    Шаблоны в go практически не использую, пишу фронт на vuejs и обращаюсь к go api.
    Есть генераторы документаций, но я тут не посоветую, их нужно тестировать отдельно, у каждого есть свои плюсы и минусы, сам использую другое решение(опишу в конце).

    Самое главное, побыстрее понять, что на go нужно писать как на go, а не так как привыкли в других языках, потому-что, в нём нет привычных классов, строгая типизация, процесс живёт долго и могут быть race condition(гонка состояний) при многопотоке(веб сервер многопоточный), поэтому о подходах из php советую поскорее забыть.

    В своих проектах(в проде), использую go только как сервис предоставляющий апи. Недавно начал использовать grpc-gateway(так как использую gRPC, но так же необходимо делать API доступное через web), проект позволяет описать всё что необходимо в proto файлах (см. gRPC), сгенерировать модели и обёртки под большенство языков + документацию в OpenAPI 2.0. Это не фреймворк, это обёртка над стандартным net/http, которая сразу валидирует и маппит данные на структуру.

    Коротко:
    Для новичка, советую забыть про фреймворки(они не помогут в изучении) и ORM(не эффективно).

    Использовать для веб сервера:
    net/http - встроен в го
    chi(проще) или gorilla/mux - роутер

    Для взаимодействия с БД:
    sqlx - обёртка над стандартным пакетом sql, но позволяет сразу считывать данные в структуру, без ручного сканирования.
    Ответ написан
    3 комментария
  • Имеет ли смысл сделать код открытым для приложения?

    Robur
    @Robur
    Знаю больше чем это необходимо
    имеет смысл - значит есть какая-то цель и результат. какой результат вы хотите достичь за счет открытия кода?
    Если понимаете какой и он для вас имеет ценность - то смысл есть. если никакого - то нет.
    Ответ написан
    3 комментария
  • Как спарсить ipro.etm.ru?

    @kostya_vtomske
    Я не фанат парсинга. И вообще копировать материал с чужих сайтов но

    ipro.etm.ru/cat/descsc.html?nn=500&t=ipro
    Перебрать ссылку по nn= от 1 до 1200756

    Оставить только валидные ссылки и по ним парсить инфу.
    Ответ написан
    4 комментария
  • Как спарсить ipro.etm.ru?

    frekby
    @frekby
    Руководитель интернет-направленияn elektro.ru
    :-) не одним поставщиком едины. Если вы из Сибири, то я дам вам api сайта торговой сети Планета Электрика (если вы клиент торговой сети). Юзайте по вашему разумению. Стройте сайт на нашей основе.
    Ответ написан
    1 комментарий
  • Как правильно писать на TypeScript VUEX модули?

    @Arsync
    Попробуйте библиотеку "vuex-class-modules". Модули ложатся идеально. Особенность именно этой либы в том, что $store можно передать в конструктор модуля прямо внутри компонента, тем самым зарегистрировав модуль не во время компиляции через декоратор как в других решениях, а на этапе выполнения (что может оказаться важным при работе в режиме SSR, где store создаётся вызовом функции createStore(); до монтирования корневого инстанса Vue).
    <!-- App.vue -->
    <template>
      <div id="q-app">
        <router-view />
      </div>
    </template>
    
    <script lang="ts">
    import { ExampleModule } from 'src/store/module-example';
    
    export default {
      name: 'App',
    
      created() {
        const myModule = new ExampleModule({ store: this.$store, name: 'example'});
    
        myModule.setProp(false); // Mutation calling;
    
        myModule.confirmProp(); // Action calling
      }
    };
    </script>

    Файл модуля:
    // src/store/module-example/index.ts
    import {
      VuexModule, Module, Mutation, Action
    } from 'vuex-class-modules';
    
    @Module
    export class ExampleModule extends VuexModule {
      prop: boolean = false;
    
      @Mutation
      setProp(payload: boolean) {
        this.prop = payload;
      }
    
      @Action
      confirmProp() {
        this.setProp(true);
      }
    }


    Гораздо более популярная библиотека - "vuex-module-decorators", в ней тоже есть принцип, похожий на описанный выше и совместимый с SSR. Пример можно найти здесь.
    Ответ написан
    5 комментариев
  • Почему не отображаются часть изображений на сайте?

    joeberetta
    @joeberetta Куратор тега JavaScript
    Читай: https://epdf.pub/google-for-dummies.html
    Коллеги уже ответили, а чтобы удостоверить вас, прилагаю скрин, без адБлока
    5e18cc6168c00347260300.jpeg
    Ответ написан
    3 комментария
  • Как правильно настроить окружение для node.js?

    @AlexSuslov
    Нашел как победить проверку на человечность Хабра.

    Привет!
    Самый костыльный запуск сервера, это старт из под screen. Но если приложение при авто деплое сможет на глухо завесить прод, так что и данные из базы не достать. Будет много приятных минут.

    По поводу исходников на проде.
    Это не хорошо. Может утечь что то лишнее. Собрать и залить результат.

    Сейчас пошла мода разрабатывать и собирать все в контейнерах.
    В ноде работает много зависимостей. Здоровья не хватит всё посмотреть. Стартуют с правами разработчика. Могут потырить контакты или секреты какие.
    Не хорошо. Поэтому запускаем все в своей песочнице. Секреты храним в vault
    https://github.com/alexsuslov/vault-consul-docker

    2 Nginx отличная штука!

    Поможет:
    - раскидать трафик как между процессами так между машинами
    - сертификаты подсунуть.
    - ограничить доступ к админке по ip
    - запаролить что то
    и еще много чего

    Авторизация
    - Регистрация
    процесс относительно редкий, данные пишем в базу
    - Идинтификация
    это происходит на каждый запрос
    дергать на каждый чих базу не хорошо

    JWT это шифрованный объект в заголовках http.
    Сервер его сам делает и может прочитать.
    Итого: мы заставляем пользователя таскать с собой некий паспорт в котором храним что нам нравится. Трафик немного растет, но не критично.
    Полезная штука

    Про эластик не помогу. Как то он мимо меня все время пробегает.

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

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

    Делать какую то сумму этого. Подсовывать в авто комплит под инпутом.
    Надеюсь понятно написал.
    Удачи.
    Ответ написан
  • Как правильно настроить окружение для node.js?

    @vitaly_il1
    DevOps Consulting
    2 и 3 - да, nginx использует практически всегда - и для SSL termination, и для load balancing, и для статики, и т.д.

    4 - в github есть GitHub Actions, на них довольно просто сделать CI
    Ответ написан
    Комментировать
  • Как осуществить поиск по таблице в Postgres с разным регистром?

    idShura
    @idShura
    Попробуй привести все в нижний регистр с помощью функции LOWER() (Приводить нужно поле в котором ищешь и текст поиска введенный пользователем)

    upd LOWER() используй только в запросе, сами данные изменять не нужно
    Ответ написан
    1 комментарий
  • Как правильно подключить Swagger для fastify на node.js?

    @Nc_Soft
    У меня всё работает с таким же кодом
    const fastify = require('fastify');
    const SwaggerPlugin = require('fastify-swagger');
    
    const server = fastify({
      logger: true
    });
    
    server.register(SwaggerPlugin, {
      routePrefix: '/doc',
      exposeRoute: true,
      swagger: {
        info: {
          title: 'Fastify API',
          description: 'Building a blazing fast REST API with Node.js, MongoDB, Fastify and Swagger',
          version: '1.0.0'
        },
        externalDocs: {
          url: 'https://swagger.io',
          description: 'Find more info here'
        },
        host: 'localhost:3000',
        schemes: ['http'],
        consumes: ['application/json'],
        produces: ['application/json']
      }
    });
    
    server.listen(Number.parseInt(process.env.PORT) || 3000, '0.0.0.0', (err, address) => {
      if (err) throw err;
    
      server.log.info(`Server listening on ${address}`);
      server.swagger()
    });


    5e0e221b518a1620494250.png
    Ответ написан
    6 комментариев
  • Как сделать страницу 404 в VUE.js?

    @serg127
    Здравствуйте.
    А чем плох подход из официальной документации, о котором уже писали выше?
    guide
    const routes: [
        ...
        { path: "*", component: PageNotFound }
    ]
    Ответ написан
    Комментировать
  • Как сделать страницу 404 в VUE.js?

    dosya97
    @dosya97
    Fullstack web-developer
    const routes = [
    ...
      { 
    		path: '/404', 
    		name: '404', 
    		component: NotFound, 
    	}, { 
    		path: '*', 
    		redirect: '/404' 
    	}
    ]
    Ответ написан
    4 комментария
  • Как распарсить JSON в MYSQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    если это надо сделать 1 раз, имхо нет смысла заморачиваться и проще через пых все вбить.
    если чисто интересно потрахаться через мускуль - https://dev.mysql.com/doc/refman/8.0/en/json-attri...
    Ответ написан
    5 комментариев