Задать вопрос
  • Как задавать структуру XML?

    @d-stream
    Готовые решения - не подаю, но...
    1. XML_Schema (собственно то что называют xsd
    2. вот п.1 и хранить (либо см. п.3)
    3. для большинства яп существуют библиотеки/фреймворки которые как раз умеют:
    - создать описания классов по схеме (xsd)
    - сериализовывать/десериализовывать экземпляры

    xslt - чуть из другой оперы - это язык описания преобразования одной схемы в другую
    Ответ написан
    Комментировать
  • Каково реальное актуальное ограничение по скорости интернета со стороны провайдера/серверов?

    @d-stream
    Готовые решения - не подаю, но...
    Категории кабеля не имеют понятности актуальности. Каждая из них имеет свой диапазон применимости. В диапазонах до 1Гбит/с - категория 5e - сверхдостаточна и оптимальна. Аналогия: фапать на кабель AWG-0000 для зарядки сотового телефона)

    Домашние провайдеры не предоставляют услуг гарантированного канала - поэтому и тарифы "10Мбит" и "1гигабит" и "100500гигабит" звучат так только в рекламном булшите... в договорах звучит как "..скоростью [от нуля] до xx Гбит/с [до порта провайдера]" и в переводе на человекопонятный язык это выглядит как:
    - даже скорость 0 (ноль) гигабит/с в таких тарифах юридически допустима и нормальна
    - это скорость от квартиры до ближайшего коммутатора, не более...

    Так что в принципе всё это скорее развод для лошков)

    Классика жанра:
    абоненты домового провайдера подключены гигабитом до ближайшего коммутатора, который... подключен оптикой к оптическому коммутатору ядра... тоже гигабитом... А ядро имеет пару-тройку 10 гигабитных аплинков до IX

    Дальше можно прикинуть что будет когда 48 жителей одного подъезда вдруг зарядят например закачку торрентов))

    Ну и да: более-менее нормальные сайты и ресурсы обязательно шейпят отдаваемый в одни руки поток... как правило не очень быстрый
    Ответ написан
    4 комментария
  • Gitlab CI можно настроить на деплой в разные проекты?

    @d-stream
    Готовые решения - не подаю, но...
    Можно.
    Обычно так и делают. Например в зависимости от переменной CI_COMMIT_BRANCH (ветка)
    Ответ написан
    Комментировать
  • Допускает ли лицензия Win 11 OEM установку Win 10 или даже win 7 с сохранением лицензии?

    @d-stream
    Готовые решения - не подаю, но...
    OEM лицензия windows подразумевает что производитель поставляет оборудование с windows [11] как единое целое. Естественно подразумевается что это самое изделие в виде железа и софта - работоспособно.
    Соответственно остальная часть вопроса в такой постановке не имеет смысла.
    Ответ написан
    Комментировать
  • Как организовать Deploy кода на несколько проектов?

    @d-stream
    Готовые решения - не подаю, но...
    Один из вариантов - использование скриптом конфигурационных (env) файлов, которые не деплоятся в рамках сборки, а живут на каждом конкретном сервере (разовая первоначальная настройка).
    Ответ написан
    Комментировать
  • Как использовать Gitlab runner SaaS на самом gitlab.com?

    @d-stream
    Готовые решения - не подаю, но...
    А чего бы не попробовать?
    То есть тупо нарисовать простейший .gitlab-ci.yml из одного стейджа:

    image: alpine:latest 
    stages:
      - Build
    Build:
      stage: Build
      script:
        - echo Worked!

    и потом полюбоваться на лог

    По крайней мере по ссылке пишут про своего рода "продуктовые" (стартапы, opensource) linux раннеры на гугловых машинках со свежим докером
    Ответ написан
  • Выделение ресурсов в ESXI для 1С ERP?

    @d-stream
    Готовые решения - не подаю, но...
    Ну самое простое - выдать сколько-нибудь и потом смотреть в мониторинге фактическую загрузку [ну и слушать жалобы пользователей]. По результатам мониторинга - корректировать выделение ресурсов.
    Ответ написан
  • Можно ли в .NET (C#) при компиляции вычистить из подключенной библиотеки лишние функции?

    @d-stream
    Готовые решения - не подаю, но...
    Надо превратить эту библиотеку во множество nuget пакетов [вместо одного самолёта с зонтиком, гусеницами, бассейном и теннисными кортами]
    Ответ написан
    Комментировать
  • Как сохранять в MongoDB поле с тремя возможными значениями: разрешён / запрещён / не установлен?

    @d-stream
    Готовые решения - не подаю, но...
    nullable bool полностью покроет варианты
    ну и всякие ifnull для полного счастья
    Ответ написан
    Комментировать
  • Как выгрузить данные из Active Directory с помощью Python?

    @d-stream
    Готовые решения - не подаю, но...
    Надо вспомнить что "рядом" с ad - LDAP

    https://www.python-ldap.org/en/python-ldap-3.4.0/r...
    Ответ написан
    Комментировать
  • Как заключить договор на покупку домена?

    @d-stream
    Готовые решения - не подаю, но...
    Первые же результаты поиска "продажа домена юрлицами" приводит:
    - в консультат+ где готовая подборка документов для этого плюс статьи комментарии
    - на кучку регистраторв, которые оказывают услуги гаранта (естественно за %%)

    Ну и вроде на nic.ru был магазин, где он вообще выступал "промежуточным звеном" - т.е. юрлицо продаёт/передаёт nic, а тот уже продаёт от своего имени другому юрлицу
    Ответ написан
    Комментировать
  • Как загрузить файлы при запуске сайта на сервере?

    @d-stream
    Готовые решения - не подаю, но...
    Ну вообще хранить бинарники в системе контроля версий - ненормально. Поэтому верный путь состоит из нескольких направлений:
    - чужие исходники - в отдельные репозитории
    - бинарные артефакты - в хранилище артефактов (зависимостей)

    Ну а в процессе сборки своего проекта - тянуть из первого и второго необходимые зависимости и из всего этого собирать то что будет деплоится на сервер.
    Ответ написан
    Комментировать
  • Как автоматически увеличивать версию сборки GitLab?

    @d-stream
    Готовые решения - не подаю, но...
    Не совсем понял про есть или нет линия сборки...
    Если всё-таки есть - то использовать например CI_PIPELINE_ID или CI_PIPELINE_IID из предопределенных переменных.
    Ответ написан
  • Как перенести Data на сетевой диск?

    @d-stream
    Готовые решения - не подаю, но...
    Теоретически можно смаппить "букву диска" сетевому пути
    то бишь net use x: \\share\folder
    Но это в любом случае не лучшая идея (мягко говоря).
    Сам сервис mysql рассчитывает на более быструю и надёжную работу со своим файлом data чем обеспечивает бытовая связка nas-хост
    Ответ написан
    Комментировать
  • Как мне установить домен для сервера ubuntu?

    @d-stream
    Готовые решения - не подаю, но...
    "купленный домен" - это скорее купленная запись в общепринятом справочнике.
    то бишь все, сунувшиеся на domen.org получат справку что надо идти по ip адресу 1.2.3.4
    И они пойдут
    А дальше сервер на этом адресе - должен слушать обращения и отвечать.

    Отсюда:
    надо на сервере начать слушать обращения - то бишь 80 порт для http и 443 порт для https и переправлять это тем или иным образом приложению (которое слушает в данном случае иной порт)

    Наиболее распространенные варианты - это например nginx, haproxy и т.п.

    Теперь про "имя сервера": собственно никто не мешает для кучи разных доменных имён указать один и тот же ip адрес и все обращения будут прилетать к одному серверу (L3), но в каждом обращении будет фигурировать имя к которому обращались (L7) и то самое, что слушает 80/443 порт по этой информации может например передавать (проксировать) обращения например в разные приложения/контейнеры/порты

    Итого: поднять на самом сервере или в контейнере nginx/haproxy и прописать в конфигах:
    при обращении domen1.org - перенаправлять в контейнер на порт 8000, когда-нибудь потом добавить что при обращении к domen2.org - перенаправлять на соседний контейнер на порт например 8001

    Ну или пока упростив - слушать контейнером 80/443 порт ( 80:8000 ) и внутри контейнера пока ничего не делать дополнительного пока не появится второй домен
    Ответ написан
    3 комментария
  • Почему у некоторых пользователей не работает 301 редирект?

    @d-stream
    Готовые решения - не подаю, но...
    Видимо такое может быть. Почему иногда реализуют всякое разное типа:
    - 301 в заголовках
    - в html "туда идите" с линком + js-редирект в теле

    Как вариант такого эффекта "неперехода" можно добиться накрутив всякие параноидальные настройки броузера.

    p.s. с чем можно было бы "поиграться":
    - выпустить серт в виде "один на всё" где в SubjectAltName будут все 4 или более вариации имён
    - добавить еще и js-редирект
    - попробовать отдавать по www.xx.yy полностью идентичный yy.xx контент (не меняя линки)
    Ответ написан
    Комментировать
  • Как грамотно организовать хранение исходного кода и сборку NuGet-пакетов в Gitlab?

    @d-stream
    Готовые решения - не подаю, но...
    Ну хранить бинарные это в гитлабе - по мне не самая лучшая идея. Идеологически пакеты - это результаты а не исходный материал. Как один из вариантов - использовать внешнее хранилище. К примеру sonatype nexus. Притом он умеет и не только в .nuget. Бонусом - его умение полноценно поддерживать nuget-api. То есть не возникнет вопросов при использовании пакетов и восстановлении транзитивных зависимостей.
    Конечно в .nuspec можно и нужно заполнять честно Видимо да, корнем будет Company или нечто подобное для группы компаний.
    Дальше видимо отдельная ветвь нечто совсем общего для всех продуктов со своим ветвлением на lib/utils/helpers/etc и ветвления на продукты, где далее опять же нечто общее для всех версий и далее ветвление по версиям и дальше уже опять же modules/libs/utils

    (кстати внутреннюю делёжку можно подсмотреть со стороны самой структуры дерева в nuget (рекомендуемая структура target от ms)

    То бишь в итоге получится нечто типа такого:
    Brand
     - CommonBrandSubTree
       - *
     - Subbrands
       - SubbrandsCommon
         - * 
         - ProductX 
           - ProductCommon
           - *
         - ProductY 
           - ProductCommon
           - *
    ________
    * - это то самое lib/tools/frameworks/etc


    Притом не стоит бояться слишком разветвлённого дерева - хотя на первом этапе это и будет выглядеть чрезмерно переинженеренным. Зато потом не придётся его ломать и ветвить на ходу.

    Ну а смысл в общем-то есть: у среднего человека мгновенная память/восприятие способна охватить "за раз" 5-9 объектов и исходя из этого максимально комфортной структурой окажется дерево, где на каждом уровне будет видно где-то по 5-9 объектов.

    Естественно волшебных гениев не существует и самую идеальную структуру не создать. Но можно посмотреть на те же имена от ms - где более-менее просматривается что-то подобное, но с итерациями к подходу (ветвление по платформам, архитектурам начали появляться попозже и т.п.)

    с длиной имён путей/файлов - да можно огрести чуть дальше - на уровне сборки - win-раннеры не умеют в \\?\driveletter и воспользоваться вариантом длины пути в 32767 символов не выйдет...

    p.s. ну и по-любому морально стоит готовиться к какому-то кардинальному моменту, когда захочется начать новое дерево с нуля - этакую v.2.0 (возможно стартовав такое уже в другой компании))
    Ответ написан
    Комментировать
  • Как сделать доступным интернет проект 24/7?

    @d-stream
    Готовые решения - не подаю, но...
    Ну обычно во-первых надо начать поиски более другого хостера.
    Потом (если этого будет мало) - арендовать у хостера несколько виртуалок и сервис балансировки
    Потом смотреть в сторону нескольких хостеров и балансировку осуществлять третьей стороной между ними
    Потом озаботится вопросом близости данных к получателям и задействовать cdn
    Ну и потом уже начать размещать свои cache-servers в центрах обмена трафиком и у крупных провайдеров

    точнее начать и остановиться в том месте из вышеперечисленных пунктов где желаания максимальной доступности начнут сдерживаться финансами). Предположу что скорее всего будет достаточно первого пункта
    Ответ написан
    Комментировать
  • Gitlab CI/CD простого проекта?

    @d-stream
    Готовые решения - не подаю, но...
    ну примерно вот так:

    image: # имя докер-образа 
    
    stages:
      - build
      - tests
      - deploy
    
    build_my_project:
      stage: build
      tags: 
        - тэг раннера где запустить
      script:
        - ... # собственно действия для билда
        - ... 
        - ...
        - ...
      artifacts:
        name: как будет обзываться артефакт сборки
        paths:
        - путь до файлов в артефакт
        expire_in: 1 hour # сколько ему жить
    test1: 
      stage: tests
      tags: 
        - тэг раннера где запустить
      needs:
        - build
      scripts:
        - # действия по выполнению теста
    
    test2: 
      stage: tests
      tags: 
        - тэг раннера где запустить
      scripts:
        - # действия по выполнению теста 2
    
    deploy_to_dev:
      stage: deploy
      tags: 
        - тэг раннера где запустить
      needs:
        - tests
      rules:
        - if: $CI_COMMIT_BRANCH == "development"
      scripts:
        - # действия деплою в dev
    
    
    deploy_to_prod:
      stage: deploy
      tags: 
        - тэг раннера где запустить
      needs:
        - tests
      rules:
        - if: $CI_COMMIT_BRANCH == "master"
      scripts:
        - # действия деплою в dev


    словами: на первом шаге - build выполнится то что прописано в scripts (последовательно, по строкам)
    на втором шаге - test - параллельно выполнится два (ну или сколько надо блоков тестов)
    на третьем - deploy - выполнится или deploy_to_prod или deploy_to_dev или ничего в зависимости от того в какой ветке идет сборка ($CI_COMMIT_BRANCH)
    image: # имя докер-образа - имя соответсвующего docker-образа с подготовленной средой разработки (node:14 - для npm, mcr.microsoft.com/dotnet/sdk:6.0 - для .net6 и так далее)
    можно и любой свой

    needs: - описывает от каких шагов зависит шаг (это относительно свежее, ранее более жесткое dependencies:)
    Ответ написан
    1 комментарий
  • Collection was modified, но она не менялась?

    @d-stream
    Готовые решения - не подаю, но...
    А не является ли SessionInstance ссылочным типом со всеми нюансами копирования ссылки, а не объекта?
    Ответ написан
    Комментировать