Задать вопрос
  • Сайт не доступен с территории РФ. Как найти где блокировка?

    @pfg21
    ex-турист
    если отвечает по адресу, но не отвечает по имени, значит косяки в связке имя-адрес.

    добавить
    188.138.x.x site-name.com
    в C:\Windows\System32\drivers\etc\hosts и перезагрузить службу dns,
    добиться правильного ответа для команды
    >nslookup site-name.com
    на клиентской машине.
    Ответ написан
    5 комментариев
  • Можно ли настроить NAT в пределах одной сети?

    @dronmaxman
    VoIP Administrator
    /ip firewall mangle
    add chain=prerouting comment="NAT Loopback detect" dst-address=192.168.0.1 dst-port=3389 protocol=tcp in-interface-list=LAN connection-state=new action=mark-packet new-packet-mark=nat-loopback passthrough=yes
    
    /ip firewall nat
    add chain=srcnat packet-mark=nat-loopback action=masquerade comment="NAT Loopback replace address" 
    
    /ip firewall nat
    add chain=dstnat dst-address=192.168.0.1 protocol=tcp dst-port=3389 action=dst-nat to-addresses=192.168.0.10 to-port=3389
    Ответ написан
    1 комментарий
  • Как поделить api на части с различным функционалом?

    vabka
    @vabka Куратор тега Rust
    Лучше это не через поля, а через методы реализовывать - тогда будет более дёшево, да и женерик лишний можно будет убрать.

    Что-то типа
    struct Api {
      key: String
    }
    struct ApiPart<'a>{
      api: &'a Api
    }
    
    impl Api {
      pub fn part<'a>(&'a self) -> ApiPart<'a> {
        ApiPart {api: self}
      }
    }


    PS:
    Вот так делать точно не нужно:
    Не надо на ровном месте городить указатели и unsafe.
    У тебя из-за unsafe получился dangling pointer.
    fn new(api_key: *const String) -> Self {
            let api_key = unsafe { &*api_key };
            return Self {
                api_key,
            };
        }


    Норм практика делать вот так, в случае строк:
    fn new(api_key: impl Into<String>) -> Self {
            let api_key = api_key.into();
            return Self {
                api_key,
            };
        }


    Боксить строки также не нужно - они и так в куче лежат.
    Ответ написан
    6 комментариев
  • Какая файловая система наиболее устойчива к сбоям?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Современное ПО очень сложное в части гарантий сохранения транзакций например. В БД для того чтобы
    сохранился commit, мы должны гарантировать что за секунду до аварии мы успели сделать FSYNC
    для всех буферных операци I/O.

    И эта проблема никак не решается заменой одной ФС на другую. Вы пишите хоть в ZFS, хоть в RAW,
    но здесь эта гарантия дает сбой. База не смогла сохранить последний коммит. И при recovery будет
    откат транзакций назад. И дальше надо на уровне приложений разбираться где какие платежи не прошли
    и кому вернуть деньги.

    Поэтому сервак БД должен быть хотя-бы застабилизирован на 5-10 минут чтобы успеть корректно сделать
    shutdown. Либо дежурный админ это сделает либо ваш софт - неважно. Тоесть отключение энергии должно
    быть плановым и контролируемым.

    По поводу cannot read superblock - не знаю. Я такого в своей практике никогда не встречал. Надо поисследовать
    вопрос глубже. Предполагаю что это не сама причина а следствие чего-то другого. Например виртуальные машины не нашли свою файловую систему.
    Ответ написан
    2 комментария
  • Не пойму как работает true false в данном куске кода?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Надо добавить скобочек - сразу станет понятно.
    if (b) {
    System.out.println("Данная строка кода выполняется");
    }
    
    b = false;
    if (b) {
    System.out.println("Данная строка кода не выполняется");
    }
    Ответ написан
    1 комментарий
  • Почему производители не указывают тесты RFC2544?

    @mordo445
    Вот первый попавшийся SMB коммутатор Zyxel, в спецификации приведены результаты тестов.
    Вот дешманский SMB от Allied Telesis и в спецификации результаты тестов.
    И даже D-link дает результаты тестов в таблице с характеристиками.
    А вот на домашние роутеры не дают, потому как стыдно такое показывать. Ищите чипсет, на котором собран роутер и читайте на него даташит производителя, так можно получить ориентировочные характеристики при хорошем охлаждении
    Ответ написан
    1 комментарий
  • Почему потоки накапливаются и не уничтожаются?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Смотреть в сторону разницы: Process.GetCurrentProcess().Threads.Count и ThreadPool.ThreadCount
    Скорее всего какой-то сервис создает множество потоков (ручных) и держит ссылки на них, т.к. поток это объект ядра и он должен быть уничтожен когда на него перестают ссылаться, либо это просто поток, который не завершатся (while (true) какой-нибудь)
    Ответ написан
    2 комментария
  • Как реализовать побитовый сдвиг чисел, которые записаны как строки ( длинные числа хранятся в строках)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сдвиг на 2^64 это я так понимаю что сдвиг влево на 64 бита. Иначе смысла бы не было. Получили бы ноль.

    Сдвиг влево - это умножение на 2 в степени числа сдвигов. Тоесть

    2^32 * 2^64 = 2^96

    (при умножении степеней показатели складываются)
    Ответ написан
    5 комментариев
  • Как осуществить поиск по файлу CSV?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты действительно из JavaScript собираешся работать с CSV файлом? Просто обычно js работает с небольшими
    json документами которые прилетает от back-end и не требуют тяжелых поисковых операций.

    Я вижу лишь одно удачное коробочное решение - разбить твой документ на key / value и (ключевая часть
    и все остальное) и загрузить это в localstorage как тут пишут https://developer.mozilla.org/en-US/docs/Web/API/W...
    Ответ написан
  • На каком движке делались ролики к играм PS1?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Большинство игр 90-2000х использовали rendered графику в заставках. И графика эта могла делаться
    на 3DStudio Max, Blender, Maya или на любом пакете который тогда существовал. Движок самой игры обычно
    для какой-то детальной анимации не годился. Посмотрите на заставку к Quake3, StarCraft там от самой игры
    даже моделей нет.
    Ответ написан
    Комментировать
  • Как POJO влияет на производительность приложения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Сделай listDataRu, listDataEng синглтоном и ничего не будет нагружать.
    Ответ написан
    3 комментария
  • Какой сайт с задачами rust?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На codewars есть опция выбора языка. Можно взять Rust. И там можно решать задачи разной сложности. И после решения сравнить свой исходник с другими (более успешными обычно).
    Ответ написан
    Комментировать
  • Я написал свой сканер портов на языке Rust при помощи библиотеки std::net. Почему у меня зависает программа если ввести другое значение?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей. Первое. Скорее всего утилита зависает здесь
    TcpStream::connect(&ip)
    но ты должен это сам проверить и доказать во время подачи вопроса в хабр. Логгированием или профилированием неважно. Короче приходи - чуть более подготовленным чем просто с зависающей программой.

    Второе. Сам по себе TCP протокол не бесплатный. Каждый новый сокет аллоцирует память в виде буфера
    для отработки опций протокола (восстановление стрима с учетом потерянных пакетов) и этот буфер
    где-то регулируется. Поищи. Проверь также скорость работы твоего приложения. Как быстро он отрабатывает
    ответ от молчаливых портов которые ничего не отвечают. Это - тоже протокольная ситуация и ее надо как-то
    обработать. Грубо говоря не доверять дефолтным таймингам.

    Третье. Возможно некоторые промышленные утилиты-сканеры такие как nmap не используют создание
    сокетов
    . Они могут работать на уровне IP протокола просто посылая SYN-пакеты и обрабатывая ответы
    асинхронно. Это такая хитрость которая позволяет создать сокет без буфера. Это не честно с точки
    зрения полноценного протокола но достаточно чтобы проверить что ACK пришел. Вот почитай какие
    возможности у RUST есть в части IP-программирования.
    Ответ написан
    8 комментариев
  • Стоит ли хранить HTML документ в базе?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Когда говорят о базе данных, то 99% имеется в виду классическая реляционная БД типа Postgres/MySQL e.t.c.
    Такие базы данных создавались для эффективного соединения кортежей и сортировок. Длина DataRow
    при этом обычно не больашя (до 8К целый блок таких строк). Эта цифра имеет корни еще в 20м веке.
    И если заставить их хранить html (обычно 5-100К) то такая деятельность может быть не очень
    удобная для БД. Это как микроскопом гвозди забивать. Очень умная система будет использоваться как
    файловое хранилище. Возникает идея - просто взять что-то ориентированное на файлы. Например S3,
    BlobStorage, GoogleDrive.
    Это было-бы дешевле с точки зрения стоимости владения и бэкап делать
    проще.

    Я понимаю что мы живем в странное время, когда вместо расчета в калькуляторе - запускают гугл или вместо
    расчета в MathCad спрашивают ChatGpt, но все-таки программист должен быть немного хозяйственник
    и должен брать простые и дешевые решения там где они достаточны.
    Ответ написан
    6 комментариев
  • Как clickhouse использует ОЗУ при обработке запроса?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Кликхаус относится к классу column-oriented dbms. Это означает что data-row как таковой отсуствует.
    Строк нет. Но есть столбцы которые хранятся физически консолидировано. И когда ты указываешь
    SELECT * то это заставляет кликхаус сделать гораздо больше действий чем надо на самом деле. В
    силу этой колоночатой организации. Сами строки - виртуальны и чтобы их сформировать кликхаус
    должен вычитать физических данных гораздо больше чем реляционка. Столбец - больше чем ячейка.

    Чтоб такая система работала эффективно ты должен ее грузить аналитическими запросами типа

    select avg(amount) from my_table;
    Тогда кликхаус сработает быстрее чем Oracle или PG. В силу этой особенности формата.

    А то что ты делаешь - экспорт во внешние файлы лучше вообще не делать. Или делать редко
    или как-то по другому. Явно это не сильная сторона такой системы.
    Ответ написан
    2 комментария
  • Что стоит учить с или c++ или c#?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Добрый вечер! Столкнулся с такой проблемой: Мне очень нравятся семейство языков Си, у меня есть выбор учить C++ либо C#, хочу разрабатывать ПО для ПК. Подумал начать с C++ и говорят что сначала поучить чистый СИ, а после переходить на C++, так что же из этого правильно? Надо ли учить Си? Или может лучше начать с C#, а дальше уже выучу C++?

    Тема сравнения С/C++/C# в публичном пространстве - опасная тема. Она обычно заканчивается
    топиком в 1000 страниц и великой войной всех против всех. Я видел много таких войн.
    Они ничем не заканчиваются. Специалисты остаются при своих мнениях. А зритель просто развлекается.

    Сам по себе выбор языка ставят только новички. Професиионалу безразличен язык (почти). Его может больше интересует отрасль, стек технологий, стандарты и протоколы. С моей точки зрения сегодня
    таким стандартом может быть выбор облака (AWS, Azure, GCP).

    Чистый СИ учить смысла нет. Учи сразу С++. Но даже его создатель Бьорн Страуструп считает что С++ это
    сложный язык и он настаивает чтобы новички не брались учить все фичи сразу. Исключение по языку
    СИ может быть в том случае, если ты собрался быть инженером по разработке микро-контроллеров
    и у тебя скорее всего будет только СИ как основной (на 80-90%) инструмент взаимодействия с таким железом. Выйти на мидловый или синьорный уровень в С++ очень тяжело. Тяжелее чем в других языках.
    Поэтому будь готов терпеть. Вот когда виски станут седые - тогда и будешь господин-синьор.

    C# - это очень сильно корпоративный стандарт от Microsoft. Никакой связи с С++ он не имеет. Он конечно
    внешне похож но это сходство обманчиво. Да изучать его тоже можно. Он учится легко. Существуют книги
    вроде ".... C# за 14 дней". Разработка бизнес-приложений на шарпах идет гораздо быстрее чем на С++
    например. И завалить систему в синий экран в этом языке гораздо труднее. В нем реализованы методы
    защиты памяти и нельзя грязно трюкачить с указателями как это любят в С или С++. Производительность
    шарпов в численных методах будет слабее чем в С++ но обычно бизнес не ставит таких задач и чаще
    надо будет писать веб-хендлеры или хендлеры MQ-систем. Кач уровней синьорити идет быстрее в шарпах.
    Ответ написан
    2 комментария
  • Возможно ли объединение воксельной и полигональной графики в одной игре?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В игре Outcast, было использование и вокселов и полигонов. Ладншафт рисовался вокселами,
    а персонажи и вода и все остальное - полигонами.

    Да. Разрушаемость - это главное преимущество вокселов. Но это скорее оптимизация хранения
    и расчетов. С визуальной точки зрения можно сделать полигоны и вокселы неотличимыми.
    Яркий пример - Minecraft. Его модель мира основана на вокселах, но видим мы просто полигоны.
    Ответ написан
    Комментировать
  • Как улучшить качество декомпозиции в Go?

    mayton2019
    @mayton2019
    Bigdata Engineer
    неприлично долго думаю над тем что нужно вынеси в отдельный пакет, а что достаточно вынести в отдельную структуру


    Такая-же проблема и у меня. Я тоже долго думаю над дизайном. Но суть в том что в большинстве задач
    ты и бизнес не всегда знаете куда пойдет проект дальше. И поэтому нарисовать идельный дизайн нельзя.
    Я-бы даже сказал что попытка сопровождать идеальный дизайн - может затянуть внедрение проекта.

    Поэтому просто откажись от декомпозиции. Пиши сначала прототип в олимпиадном стиле. Тоесть функция
    main - и погнал писать как чукча. Что вижу то и пою.

    И после того как ты напишешь 1000 строк например к тебе придет понимание как следует декомпозировать.
    И к этому моменту у тебя будут ДОКАЗАТЕЛЬСТВА выгодности твоего дизана. И теоретические споры можно
    уже исключить.
    Ответ написан
    1 комментарий
  • Как наработать навык декомпозиции задач?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Программирование - это как плаванье. Ты сколько книжек не читай - все равно программистом не станешь.
    Ты просто должен сесть и начать программировать. Прыгнуть в воду и плыть.

    По поводу декомпозиции. Обычно такой вопрос возникает когда кода много или когда задача большая.
    Эта декомпозиция идет параллельно со знанием таких частей ООП как Single-Responsibility, и структурных
    шаблонов проектирования
    . Начни это применять и декомпозиция сама собой пойдет.

    Чаще заказывай code-review своего кода и слушай советы старших коллег. Даже если обидно и стыдно.
    Слушай. Записывай и потом применяй.

    По поводу Алгоритмов и Структур данных. Почитай Никлауса Вирта. Он как раз такую книгу и написал.
    Ответ написан
    2 комментария