Задать вопрос
Профиль пользователя заблокирован сроком с 16 октября 2023 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как отправлять на сервер объект с разной локализацией?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    У вас идет повтор 3 раза. Вынесите это в отдельный компонент, в компоненте высшего уровня просто прочитайте значения и сформируйте json
    Ответ написан
    Комментировать
  • Как изучить ООП С#?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Как выше сказали практика.
    Вот допустим инкапсуляция. Все свое ношу с собой и наружу не показываю. Впрочем это больше относится к сложным обьектам бизнес логики.

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

    Полиморфизм - изменение поведения кода. Допустим есть базовый класс отчета, вы создаете отчет для чайных ситечек. И вам ставят задачу составить отчет по продажам "Остапа Бендера" . Вы просто вызываете базовый метод и на основе его делаете фильтр по Остапу. Весь остальной код без изменений
    Ответ написан
  • Какое ПО есть для управления ПК в образовательном центре?

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

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    где то так после вешаете на модалки v-if и все

    computed: {
        modalAuth () {
          return store.state.modalAuth
        },
        modalCart () {
          return store.state.modalCart
        },
    
    
      }
    Ответ написан
    Комментировать
  • Как сделать так, чтобы при выборе какого-то события из списка, менялся код таймера (сколько остается дней до этого события)?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Как по мне вот так проще, чище и понятней
    Ответ написан
    Комментировать
  • Когда стоит использовать ленивую загрузку React?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    На примерах.
    Допустим у вас есть главная + несколько других страниц.
    Есть кабинет пользователя + страница оплаты (отложенная загрузка тут)
    Калькулятор (отложенная загрузка тут)

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

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    оно того не стоит.
    яндекс маил гугол и мс предлагают корпоративные ящики зачастую бесплатно.
    в пачку входит веб интерфейс интеграция с календарями файло помойкой и прочими их сервисами.
    Я бы с нуля оценил настройку почты от 200 тр.
    Причем не факт что письма не будут падать в спэм, монополия это все таки круто
    Ответ написан
    Комментировать
  • Как из 3d сделать псевдо 2d?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Легко
    https://www.google.com/search?q=blender+2d+render
    https://www.google.com/search?q=blender+cartoon+shader
    https://www.google.com/search?q=blender+cartoon+render
    Основной смысл использовать рендерер который это позволяет.
    По сути ваши 3Д обьекты рендерятся как есть но отбрасывается глубина, и мешам задается обводка. Все конечно сложнее но идея в этом.
    Ответ написан
    4 комментария
  • Зачем удалять вопрос?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Мой вам совет задавайте вопросы по бизнес логике а не по вашему видению реализации.
    Мои вопросы да в общем то и не удаляют, бывает удаляют ответы с формулировкой "Это вообще не ответ" хотя я подозреваю политическую мотивацию.
    В общем зайдите в мой профиль и почитайте мои ответы, я думаю вы поймете мою логику.
    Ответ написан
    Комментировать
  • Как записать iso образ на флешку из-под Linux Manjaro?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Комментировать
  • Как мне укоротить код, но так, чтобы функционал не менялся?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    отрефакторите, вынесите куски кода в функции, текстовые строки в константы, да и вообще используйте форматированные строки

    let message = `Ничья
    Вы победили ${userScore} раз
    Компьютер ${computerScore} раз`
    Ответ написан
    Комментировать
  • Как обработать HTML ответ от API?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Для рендеринга сырого html используйте v-html

    <template>
      <div v-html="legacySystemHTML">
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          // Just like JSX! Oh wait...
          legacySystemHTML: `
            <FONT color="#faddad" size="-2">
              <MARQUEE>Please enter your name to continue.</MARQUEE>
              ...
            </FONT>
          `
        }
      }
    }
    </script>


    Обязательно проверяйте приходящий код, что бы не было CSRF
    https://vuejsexamples.com/tag/editor/
    Далее на странице обязательно заполняйте теги meta title meta description и микроразметку для соцсетей.
    Все это нужно делать на основе текста статьи.
    Для "тупых" поисковиков желательно сделать пререндер страниц, хотя бы самых новых.

    вот один из моих проектов

    package.json
    {
      "name": "eggclodapp",
      "version": "2.0.1",
      "private": true,
      "scripts": {
        "serve": "vue-cli-service serve --verbosity silent",
        "dev": "yarn serve",
        "build": "vue-cli-service build",
        "lint": "vue-cli-service lint",
        "postversion": "node scripts/postversion.js",
        "start": "yarn dev"
      },
      "dependencies": {
        "@dreysolano/prerender-spa-plugin": "^1.0.3",
        "axios": "^0.27.2",
        "moment": "^2.29.3",
        "uuid": "^8.3.2",
        "vee-validate": "3.4.14",
        "vue": "^2.6.14",
        "vue-meta": "^2.4.0",
        "vue-router": "^3.5.2",
        "vue-top-progress": "^0.7.0",
        "vuetify": "^2.5.8",
        "vuex": "3"
      },
      "devDependencies": {
        "@babel/core": "^7.15.4",
        "@fortawesome/fontawesome-free": "^6.1.1",
        "@vue/cli-plugin-babel": "^4.5.13",
        "@vue/cli-plugin-router": "~4.5.13",
        "@vue/cli-service": "^4.5.13",
        "@vue/eslint-config-standard": "^6.1.0",
        "@vuetify/vue-cli-plugin-preset-base": "~0.3.2",
        "archiver": "^5.3.0",
        "babel-core": "7.0.0-bridge.0",
        "babel-eslint": "^10.1.0",
        "dotenv": "^8.2.0",
        "eslint": "^6.8.0",
        "eslint-config-standard": "^16.0.2",
        "eslint-config-vuetify": "^0.6.1",
        "eslint-plugin-import": "^2.22.1",
        "eslint-plugin-node": "^11.1.0",
        "eslint-plugin-promise": "^4.3.1",
        "eslint-plugin-standard": "^5.0.0",
        "eslint-plugin-vue": "^7.9.0",
        "eslint-plugin-vuetify": "^1.0.0-beta.7",
        "lodash": "^4.17.21",
        "open": "^7.0.3",
        "sass": "~1.32.0",
        "sass-loader": "^10.0.0",
        "shelljs": "^0.8.4",
        "vue-cli-plugin-vuetify": "~2.4.2",
        "vue-template-compiler": "^2.6.14",
        "vuetify-loader": "^1.7.3",
        "webfontloader": "^1.6.28",
        "webpack": "^5.52.0"
      }
    }


    vue.config.js

    const path = require('path')
    const PrerenderSPAPlugin = require('@dreysolano/prerender-spa-plugin')
    const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
    const isDev = process.env.NODE_ENV !== 'production'
    const plugins = isDev
      ? []
      : [
          new PrerenderSPAPlugin({
            // Required - The path to the webpack-outputted app to prerender.
            staticDir: path.join(__dirname, 'dist'),
    
            // Optional - The path your rendered app should be output to.
            // (Defaults to staticDir.)
            // outputDir: path.join(__dirname, 'prerendered'),
    
            // Optional - The location of index.html
            indexPath: path.join(__dirname, 'dist', 'index.html'),
    
            // Required - Routes to render.
            routes: ['/', '/about', '/description', '/price', '/about'],
    
            // Optional - Allows you to customize the HTML and output path before
            // writing the rendered contents to a file.
            // renderedRoute can be modified and it or an equivelant should be returned.
            // renderedRoute format:
            // {
            //   route: String, // Where the output file will end up (relative to outputDir)
            //   originalRoute: String, // The route that was passed into the renderer, before redirects.
            //   html: String, // The rendered HTML for this route.
            //   outputPath: String // The path the rendered HTML will be written to.
            // }
            postProcess (renderedRoute) {
              // Ignore any redirects.
              renderedRoute.route = renderedRoute.originalRoute
              // Basic whitespace removal. (Don't use this in production.)
              // renderedRoute.html = renderedRoute.html.split(/>[\s]+</gim).join('><');
              // Remove /index.html from the output path if the dir name ends with a .html file extension.
              // For example: /dist/dir/special.html/index.html -> /dist/dir/special.html
              if (renderedRoute.route.endsWith('.html')) {
                renderedRoute.outputPath = path.join(
                  __dirname,
                  'dist',
                  renderedRoute.route,
                )
              }
    
              return renderedRoute
            },
    
            // Optional - Uses html-minifier (https://github.com/kangax/html-minifier)
            // To minify the resulting HTML.
            // Option reference: https://github.com/kangax/html-minifier#options-quick-reference
            minify: {
              collapseBooleanAttributes: true,
              collapseWhitespace: true,
              decodeEntities: true,
              keepClosingSlash: true,
              sortAttributes: true,
            },
    
            // Server configuration options.
            server: {
              // Normally a free port is autodetected, but feel free to set this if needed.
              port: 8001,
            },
    
            // The actual renderer to use. (Feel free to write your own)
            // Available renderers: https://github.com/Tribex/prerenderer/tree/master/renderers
            renderer: new Renderer({
              // Optional - The name of the property to add to the window object with the contents of `inject`.
              injectProperty: '__PRERENDER_INJECTED',
              // Optional - Any values you'd like your app to have access to via `window.injectProperty`.
              inject: {
                foo: 'bar',
                prerender: false,
              },
    
              // Optional - defaults to 0, no limit.
              // Routes are rendered asynchronously.
              // Use this to limit the number of routes rendered in parallel.
              maxConcurrentRoutes: 4,
    
              // Optional - Wait to render until the specified event is dispatched on the document.
              // eg, with `document.dispatchEvent(new Event('custom-render-trigger'))`
              // renderAfterDocumentEvent: 'custom-render-trigger',
    
              // Optional - Wait to render until the specified element is detected using `document.querySelector`
              renderAfterElementExists: '#app',
    
              // Optional - Wait to render until a certain amount of time has passed.
              // NOT RECOMMENDED
              renderAfterTime: 5000, // Wait 5 seconds.
    
              // Other puppeteer options.
              // (See here: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteerlaunchoptions)
              headless: true, // Display the browser window when rendering. Useful for debugging.
            }),
          }),
        ]
    
    module.exports = {
    
      devServer: {
        disableHostCheck: true,
        progress: false,
        before () { // Output the same message as the react dev server to get the Spa middleware working with vue.
          console.info('Starting the development server...')
        },
      },
      transpileDependencies: ['vuetify'],
    
      configureWebpack: {
        plugins: [...plugins],
      },
    }
    Ответ написан
    Комментировать
  • Кто знает софт для создания responsive дизайна с помощью drag&drop без кода?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    не учите ребенка плохому.
    Дайте почитать алгоритмы Кнута.
    Ответ написан
    Комментировать
  • Чем и как можно заглянуть в сервер Proliant DL 380 Gen9?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Подключите монитор, клаву и мышку, дальше как на обычном компе.
    Кроме того можно сбросить биос и ilo
    Ответ написан
    2 комментария
  • Как собрать компактный сервер?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    могу вам продать под ваши хотелки HP Z420 e1650 где то 8 гигов оперативы но не помню.
    ssd esxi упаковано в обычный дешманский корпус.
    Опять же это реально оверхед.
    Я использовал как хост для билда ios приложений, кстати как хакинтош тоже заведется
    Ответ написан
  • Как исправить ошибку 404 при динамической генерации url?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    А кто будет вместо вас настраивать пути?
    # ловим все запросы к спа и перенаправляем на индекс, 404 обрабатываем в нем же
    <Directory ~ "^/[\w+\d+-]+">
      FallbackResource /index.html
    </Directory>
    
    # отдельно обрабатываем статику
    <Files ~ "\.(js|css|gif|jpe?g|png)$">
      FallbackResource disabled
      ErrorDocument 404 "File not found"
    </Files>


    // Imports
    import Vue from 'vue'
    import Router from 'vue-router'
    import { authGuard, logoutHabdler } from '@/helpers'
    
    Vue.use(Router)
    
    const router = new Router({
      mode: 'history',
      base: process.env.BASE_URL,
      scrollBehavior: (to, from, savedPosition) => {
        if (to.hash) return { selector: to.hash }
        if (savedPosition) return savedPosition
    
        return { x: 0, y: 0 }
      },
      routes: [
        {
          path: '/logout',
          beforeEnter: logoutHabdler,
        },
        {
          path: '/',
          component: () => import('@/layouts/home/Index.vue'),
          children: [
            {
              path: '',
              name: 'Home',
              component: () => import('@/views/home/Index.vue'),
            },
    
            {
              path: 'about',
              name: 'About',
              component: () => import('@/views/about/Index.vue'),
            },
            {
              path: 'description',
              name: 'Description',
              component: () => import('@/views/description/Index.vue'),
            },
            {
              path: 'price',
              name: 'Price',
              component: () => import('@/views/price/Index.vue'),
            },
            {
              path: 'login',
              name: 'Login',
              component: () => import('@/views/login/Index.vue'),
            },
            {
              path: 'legal',
              name: 'Legal',
              component: () => import('@/views/home/Legal.vue'),
            },
            {
              path: 'eula',
              name: 'Eula',
              component: () => import('@/views/home/Eula.vue'),
            },
            {
              path: 'condition',
              name: 'Condition',
              component: () => import('@/views/home/Condition.vue'),
            },
            {
              path: 'disclosure/:id?',
              name: 'Disclosure',
              component: () => import('@/views/home/Disclosure.vue'),
            },
            {
              path: 'userlist/:id?',
              name: 'UserList',
              component: () => import('@/views/home/UserList.vue'),
            },
            {
              path: 'open/:id?',
              name: 'SuccessorList',
              component: () => import('@/views/home/SuccessorList.vue'),
            },
          ],
        },
        {
          path: '/user',
          component: () => import('@/layouts/user/Index.vue'),
          beforeEnter: authGuard,
          children: [
            {
              path: '',
              name: 'UserHome',
              component: () => import('@/views/user/Index.vue'),
            },
            {
              path: 'store/:id?',
              name: 'UserStore',
              component: () => import('@/views/user/Store.vue'),
            },
            {
              path: 'faq',
              name: 'UserFaq',
              component: () => import('@/views/user/Faq.vue'),
            },
            {
              path: 'messages',
              name: 'UserMessages',
              component: () => import('@/views/user/Messages.vue'),
            },
            {
              path: 'contacts',
              name: 'UserContacts',
              component: () => import('@/views/user/Contacts.vue'),
            },
            {
              path: 'profile',
              name: 'UserProfile',
              component: () => import('@/views/user/Profile.vue'),
            },
            {
              path: 'payment/:id',
              name: 'Payment',
              component: () => import('@/views/user/Payment.vue'),
            },
          ],
        },
        {
          path: '*',
          component: () => import('@/layouts/user/Page404.vue'),
          children: [
            {
              path: '*',
              name: 'Page404',
              component: () => import('@/views/user/Page404.vue'),
            },
           ],
      },
      ],
    })
    
    export default router
    Ответ написан
    Комментировать
  • Как написать свою собственную операционную систему под кнопочный телефон?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    https://habr.com/ru/post/249273/
    Я бы рекомендовал freertos
    По схематике достаточно "синей пилюли" + матрицы клавиш + возможно экран от нокии + любой модуль G3/G4/G5 и флешка
    Сразу скажу никакого рокетскенса тут нет, чуть сложнее мигания светодиодами. Впрочем все современные телефоны сделаны примерно по этой схеме. Модем и вся остальная ординарная обвязка.

    между тем модем это собственно самая мякотка в мобильниках. Это и своя ОС и свое железо и куча софта недоступного практически ни кому и куча патентов.

    Кроме этого есть более простой путь
    https://aliexpress.ru/item/32826849478.html
    Вот этот модуль по сути готовый телефон только распаяй по даташиту.
    Из коробки
    2g-3g GPS Wifi blutooth , выходы для микрофона и наушника, вход для подключения сенсор движения, крайне низкое потребление
    Ответ написан
    Комментировать
  • Как сравнить введенную дату с текущей?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Посмотрите
    Ответ написан
    Комментировать
  • Какой гипервизор выбрать для компании?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Windows Server 2012 Oct 30, 2012 Oct 10, 2023

    Сначала обновите сервер или думайте о переходе на линукс.
    Потом произведите инвентаризацию по.
    Обсудите с начальством что и как, разницы кстати по деньгам не заметите.
    Если остановитесь на Windows то ставьте Hyper-V
    Если линукс то https://www.linux-kvm.org/page/Management_Tools
    Ответ написан
    Комментировать
  • Как распарсить JSON с помощью JS на страницу?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ваш скрипт выдает невалидный json, где то не происходит экранирование
    {"message": "что то "тебе понравиться, давай быстрей" "}

    Воспользуйтесь вот этим советом https://it-blackcat.blogspot.com/2019/11/string-va...

    Далее вырезал эту вашу историю, поржав перед этим, data содержит обычный js обьект
    var json = `{"message": "success", "posts": {"17": "n", "16": "\u042f \u0441 \u043a\u043e\u043d\u0441\u043e\u043b\u0438", "15": "I'm from CLI", "14": "I'm from CLI", "13": "I'm from CLI", "11": "\u0421\u0430\u043b\u043e 2", "8": "\u0421\u0430\u043b\u043e", "7": "Hello world", "6": "Hello world", "5": "Hello world", "4": "Hello world", "3": "Hello world", "2": "32", "1": "jrtu"}}
    `
    var data = JSON.parse(json)
    console.log(data)


    UPD: если вы не с хероку будете запускать то получите ошибку CORS при использовании fetch или любого другого запроса из JS
    примеры запроса
    https://developer.mozilla.org/en-US/docs/Web/API/F...
    Ответ написан
    Комментировать