• Как в ubuntu полностью удалить python?

    @asmelnik
    В Linux на python очень много завязано-написано.
    Вам зачем? чем он вам так не угодил?
    Может оказаться, что после полного удаления всех питонов (а их там может оказаться больше одного) система станет не юзабельна.
    Ответ написан
    8 комментариев
  • Совместимость сокета для процессоров Intel Core i?

    Ну давай посмотрим.
    Intel Core i5-1135G7: Socket BGA1449
    Intel Core i7-920: Socket LGA1366

    Начнём с того что твой i5 вообще ноутбучный и он впаивается в материнскую плату.
    Заканчиваем тем, что цифры разные - значит количество контактов разное и даже если вдруг опечатка и у тебя какой-то другой i5 11XX, то всё равно ничего не выйдет.

    Про поддержку на уровне чипсета и биоса промолчу.
    Ответ написан
    Комментировать
  • На сколько популярно и корректно хранить данные в столбце в виде JSON строки?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В конце 20-го века, когда Эдгар Кодд развивал свою реляционную теорию было очень
    модно все данные нормализовывать для хранения их в БД. Это соотвествовало экономии
    ресурсов (диски мерялись килобайтами и мегабайтами) и нормализация хорошо ложилась на
    техно-стек. Все данные должны быть атомарны. И ты - плохой DBA и программист если
    кладешь в ячейку что-то более комплексное чем просто атом.

    В 2000х развитие веб и XML(XHTML/SGML, XSLT, XPath) дало толчок новым видам
    хранения информации в виде markup languages. Появляются технологии семанического веба.
    Мечтатели-теоретики создают RDF, OWL. Базы данных пытаются успеть втянуть в себя новые типы.
    Oracle начинает поддерживать XML+Schema как тип данных в таблице. Браузер начинает
    поддерживаеть трансформацию XML и обогащение его стилями. XML - моден. Его внедряют
    везде где можно и где не нужно. Даже в конфигах Apache Http и в сборщике Maven.

    Параллельно Дуглас Крокфорд работает над Java Scrip Obj Notation и создает лайтовый язык
    для описания объектов и документов. Они - конкурируют с XML но JSON практически побеждает
    в вебе, полностью захватывая веб протоколы (Ajax, WebSockets, e.t.c). И интеракцию с сервером.
    JSON становится более популярный для REST. Многие БД тоже начинают поддерживать JSON.
    Postgres даже делает бинарный JSON и добавляет спец-индексы для быстрого поиска атрибутов.
    Узко-специализированные системы такие как Mongo изначально заточены на храннение JSON
    информации.

    BigData плавно проростает в 2007 (кажется) и где-то в 2014 (или позже) году фреймворк Spark начинает поддерживать DataFrames + Structured Types которые по сути являются зеркалом JSON. Фреймворк
    позволяет грузить в бигдату JSON-lines датасеты, автоматически выводя схему.

    Это - финал. Я считаю что после такой конвергенции в бигдату JSON получил путевку везде где только можно.
    Сегодня вы можете без стыда использовать JSON везде в любых уровнях стека (даже в Redis) если
    у вас хватает памяти и вы уже порешали вопросы бизнес-согласованности данных и умеете эти
    данные инвалидировать и обновлять.

    Если поискать анти-паттерны применения JSON в базах данных - то я-бы предложил такую метрику.
    Если вы очень часто обновляете маленькое поле внутри большого JSON документа и это создает
    сильные I/O нагрузки то скорее всего вам надо перепроектировать вашу БД как-то по другому
    и вынести это поле во вне по отношению к документу
    Ответ написан
    5 комментариев
  • Как голосовые ассистенты "понимают" какую команду им необходимо сделать?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Это задача NLP - Natural Language Processing
    Если вкратце, то работа ведется в несколько этапов:
    1. Преобразование звука в текст
    2. С помощью NLP этот текст обогащается:
    - Форматируется
    - Убирается мусор
    - Выделяются ключевые слова
    3. Готовый текст подается на вход другой нейронке, которая используя свою базу данных (история, контекст) понимает немерение

    Собственно, сама работа ведется в последней части. Как эти нейронки работают - другой вопрос. Просто обучают на своих наборах данных
    Ответ написан
    2 комментария
  • Проверяет ли Роскомнадзор на территории какой страны расположен сайт?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Где расположен сервер - не важно. Важно только где расположена БД, которая эти ПД хранит.
    Это регламентирует статья 18 ФЗ-152
    Ответ написан
    9 комментариев
  • Что такое культура программирования?

    xez
    @xez
    TL Junior Roo
    Почти то же самое, что культура коммуникации.
    - Следование код-стайлу. Адекватный нейминг.
    - Умение писать выразительный, понятный код. Без лапши, без убер-методов на миллион строк, без олимпиадных трюков (если нет такой необходимости); код, в котором можно будет легко разобраться.
    - Любовь к тестам. Понимание почему и зачем тесты писать и почему и зачем не писать.
    - Следование общепринятым инженерным практикам. В Гите не пушить без реквеста в мастер, не ребейсить без необходимости, подписывать комиты, описывать реквесты. В бд предпочитать миграции и не лазить в прод трясущимися, грязными ручонками. Релизы согласовывать, к стейджам относится уважительно. В очереди не срать. Рута избегать.
    - Скилл в декомпозиции и оценке. Умение прогнозировать разработку, умение давать обещания и умение их выполнять.
    - Отсутствие магического мышления. Понимание причино-следственных связей. Знание что такое логи и что такое метрики.
    - и т.д..
    Ответ написан
    Комментировать
  • Какой Rust GUI лучше для прода в 2024?

    vabka
    @vabka Куратор тега Rust
    нынче развелось довольно много

    Не так уж и много.

    Наиболее близкое к проду, кмк - tauri из-за коммьюнити, хорошей документации, и гибкости, тк html+css.

    Если тебе допустимо immediate mode и внешний вид не сильно важен (к примеру какая-то небольшая утилита или ui для отладки в игре), то egui тоже норм.
    Ответ написан
    4 комментария
  • Почему при объединении двух объектов в один они автоматически сортируются?

    IvanU7n
    @IvanU7n
    nothing interesting here
    для обычных объектов никак, Map итерируется в порядке добавления
    Ответ написан
    3 комментария
  • Актуален ли ассемблер на сегодняшний день?

    @rPman
    Ассемблер это больше философия чем язык программирования. Понимать что это такое и как минимум быть готовым хотя бы читать и понимать листинги, сгенерированные компилятором и отладчиком, нужно для решения низкоуровневых проблем, в т.ч. производительности, когда другие способы уже не помогают.

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

    Области - реверсинженеринг, низкоуровневая оптимизация и низкоуровневая отладка unmanaged кода (т.е. к примеру c,c++). Все это можно встретить и в разработке для микроконтроллеров, и в оптимизации кода для gpu и поиске причины, почему простой цикл кратно работает медленнее из-за вот этой 'безобидной строчки'.

    Но повторюсь, без ассемблера живется неплохо.
    Ответ написан
    9 комментариев
  • Актуален ли ассемблер на сегодняшний день?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ассемблер полезен при анализе прошивок на безопасность.
    При изучении того как работает софт без исходного кода (обратный инжинеринг)
    и при решении задач интеграции разных слоёв софта.

    Ассемблер также очень близко стоит к разработке компилляторов. И если у вас нет
    соотвествующих знаний то строить свой компиллятор вы не сможете. Или вам нужно
    будет изучать готовые back-ends, virtual-machines.

    Ассемблер помогает при анализе узких мест в коде. В частности например
    векторизация вычислений ставит в первую очередь вопросы на которые ассемблер
    отвечает а ЯВУ - нет.

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

    Newto
    @Newto
    Ваш вопрос похож на вопрос не от технического специалиста, а от клиента, который хочет понять что будет делать технический специалист по его заказу. Если я прав, то бросьте это дело — а именно, не пытайтесь понять что должен сделать верстальщик, а что программист. Вам тут это тысячу раз объяснят, вы поймёте, а потом поймёте, что всё равно не поняли. Если вы сами этим не занимаетесь, то понимание придёт лишь с опытом общения с исполнителями.
    Ответ написан
    Комментировать
  • Какие есть способы хранения вебсокет соединений?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сокеты невозможно сериализовать. Придумай другую термиологию или другую идею.

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

    @Everything_is_bad
    Ты не можешь сериализовать "пул вебсокет соединений". Если он сделан в рамках приложения, то он там будет жить весь лайфтайм этого приложения. А "чтобы соединения были в редисе" это значит что ты пул изначально сделал через pub/sub в redis.
    Другое дело, что ты можешь поднять несколько инстансов (как отдельные процессы, так и отдельные сервера), и сделать либо маршрутизацию по ним, либо возможным обмен между ними, вот и всё масштабирование.
    ЗЫ про "pub/sub в redis." чуток не то написал, это не пул в нем сделан, а про коммуникацию для инстансов.
    Ответ написан
    2 комментария
  • Что я сделал не так?

    Vindicar
    @Vindicar
    RTFM!
    В-нулевых, пиши симптомы ошибки.
    Во-первых, simpleDividers(n)[len(simpleDividers(n))+1]
    Тебе что, палец отрезают за каждую использованную локальную переменную?
    Зачем два раза вычислять simpleDividers(n)? Почему не закинуть результат в переменную?
    Во-вторых, ты пытаешься обратиться к элементу списка с номером, превышающим его длину (потому что +1).
    Т.е. если у числа три делителя, ты бы обратился к номеру 4. Как по-твоему, это получится сделать?
    В-третьих, ты не возвращаешь answer через return при возврате из simpleDividers(), а код ниже написна так, словно ты его возвращаешь.
    Ответ написан
    Комментировать
  • Почему функция не видит переменную?

    @0x0f80
    Проблема в том, что переменная i из цикла for не видна внутри page.evaluate(). Чтобы это исправить, передайте i как аргумент в page.evaluate(), например:
    for(let i = 2; i <= 19; i++) {
        let arr = await page.evaluate((index) => {
            let text = document.querySelector(`body > main > div > section > div:nth-child(${index})`).innerText;
            return text;
        }, i); 
        console.log(arr);
    }
    Ответ написан
    1 комментарий
  • Полезность моделей памяти которые отличный от linear?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Во-первых, речь идет об Адресации памяти, а не Модели памяти - это совершенно разные вещи:
    - Адресация памяти - то, как мы к памяти обращаемся
    - Модель памяти - какие ограничения выставляются на рантайм. Например, реордеринг операций

    Не совсем понял, чем представленная модель отличается от обычной линейной. Если только тем, что указанный reference - любое число, а не просто смещение от базы, то:
    - Это только лишние расходы на определение реального адреса
    - Виртуальная память уже реализует такую концепцию, но более сложную - с несколькими уровнями адресации - https://www.kernel.org/doc/html/latest/mm/page_tab...

    Мне кажется что данная модель памяти подойдет для машины заточенной под ООП (привет java)

    Единственное преимущество - локальность (кэш хиты). Но его и самим можно добиться.
    В той же самой джаве это делается через паттерн Off Heap

    для машины с защитой памяти так как из reference выйти не получиться,то есть мы не сможем повредить память другого reference


    См. иерархию страниц памяти. Там это уже реализовано

    Собственно полезна ли данная модель памяти


    Полезна, но уже устарела. Сейчас используются более продвинутые стратегии - https://ru.wikipedia.org/wiki/Адресация_памяти

    если для операций над памятью буду использоваться load/store

    А как иначе?

    а алоцирование кусочков будет проводиться чем-то похожем на new

    Любой new под капотом использует системные вызовы, которые этот самый load/store вызывают
    Ответ написан
    Комментировать
  • Получение з/п в крипте. Какие минусы?

    Минусы:
    1. Вам самим придётся все свои доходы декларировать, чтобы потом не жаловаться, что вам заблокировали счета и начислили пени за неуплаченный налог в лучшем случае
    2. Закон тебя никак не защищает (могут уволить одним днём, например, и вполне законно могут недоплатить, списав на волатильность курса)
    3. Работодатель, который такое предлагает - в 99% случаев занимается чем-то серым, а то и незаконным => тебя ещё могут как соучастника накрыть, если очень сильно не повезёт.
    4. Курс волатильный и могут быть проблемы при попытке перевода в фиат (начиная с комиссий и невыгодного курса, заканчивая обвалом курса и отсутствием покупателей. Про возможность объявления крипты вне закона или блокировки счёта на бирже или в банке я молчу)

    Законно ли это(живу в России)?

    То что ты делаешь уже не законно, даже без привлечения крипты, тк в России запрещено иметь трудовые отношения (регулярные работы на полный рабочий день с фиксированной ежемесячной оплатой) между самозанятым (исполнителем в статусе самозанятого) и заказчиком, ибо это очевидное уклонение от налогов (со стороны исполнителя, ибо так ты уклоняешься от НФДЛ) и нарушение трудового кодекса (со стороны заказчика, тк он уклоняется от уплаты взносов в ФСС и ПФР, и не обеспечивает тебя-работника социальными гарантиями)

    Законно ли это(живу в России)?

    Крипта в России не является законным средством платежей. Так что если не хочется проблем с законом - нужно оформлять две операции:
    1. Оказание услуг (с ценой рублях).
    2. Продажа/покупка крипты на эту сумму.
    Причём по времени сначала ты должен оказать услугу, а уже потом "купить" крипту, после чего её продать, и уже тогда деньги с продажи крипты должны поступить на твой счёт в банке. Иначе рискуешь словить блокировку (в лучшем случае - временную, пока не объяснишь банку, что это вообще произошло)

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

    Много ли уходит на комиссиях?

    Это уже зависит от того, как будешь выводить и как тебе будет твой "работодатель" деньги присылать.
    Ответ написан
    4 комментария
  • Как работает динамическое прямое соединение для торрент-клиентов?

    @SunTechnik
    https://ru.m.wikipedia.org/wiki/BitTorrent
    Есть torent-tracker, (с белым ip) где регистрируются клиенты и сообщают свои параметры.
    Так как протокол udp без установления соединения, то можно открыть порт через Nat, послав пакет на известный белый ip, после чего другой клиент может слать данные на этот открытый udp порт. (читать про Tun/stun)

    Но в любом случае нужен посредник с белым ip, для регистрации и пробития NAT.
    Ответ написан
  • Какое ядро использует Debian?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В оригинальном ядре linux есть несвободные прошивка и блобы

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

    какое ядро всё-таки использует Debian ?

    Можно тупо взять и посмотреть, например для debian 12: https://packages.debian.org/source/bookworm/linux
    Внизу страницы есть ссылки на архив с исходниками ядра (это копия ядра из ветки stable) и на архив исходников debian-пакета, а также ссылка на git последнего.
    Ответ написан
    Комментировать
  • Как посчитать разницу между двумя датами в секундах, минутах, часах и т.д.?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Почему так происходит, и как такое можно решить?

    Потому что объект Date возвращает дату, а не интервал времени. Попробуйте так:
    function getTimeDiff(startDate, endDate) {
      const diff = endDate - startDate;
    
      const seconds = Math.floor(diff / 1000);
      const minutes = Math.floor(seconds / 60);
      const hours = Math.floor(minutes / 60);
      const days = Math.floor(hours / 24);
      const months = Math.floor(days / 30); // ~30
      const years = Math.floor(days / 365); // ~365
    
      return {
        years,
        months: months % 12,
        days: days % 30,
        hours: hours % 24,
        minutes: minutes % 60,
        seconds: seconds % 60
      };
    }
    
    const today = new Date();
    const targetDate = new Date("2023-12-29 00:00:00");
    const diff = getTimeDiff(targetDate, today);
    
    console.log(`Разница, лет: ${diff.years}, месяцев: ${diff.months}, дней: ${diff.days}, часов: ${diff.hours}, минут: ${diff.minutes}, секунд: ${diff.seconds}`);
    
    // Разница, лет: 0, месяцев: 0, дней: 0, часов: 9, минут: 51, секунд: 22
    Ответ написан
    Комментировать