• Какой тип данных лучше использовать JSON или JSONB?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какой формат данных (JSON или JSONB) лучше использовать в этой ситуации?

    Похоже автор занялся любимой задачей скучающих разработчиков. А именно - ПРЕЖДЕВРЕМЕННОЙ оптимизацией.

    JSON и JSONB возникли например из задачи хранения в БД ДОКУМЕНТОВ. Документ - предполагает специфический юзкейс. Например однократное создание и редкую модификацию. И частое чтение с поиском по текстовому индексу например.

    Является ли задача автора - подходящей под данный use-case? Чорт его знает. Я-бы сказал что пока нет. Все таки комментарии пользователя это такие себе... частые модификации документа которых хотелось-бы избежать.

    И вообще пока не будет создано 2 макета или 2 proof-of-concept с бенчмарками - мы не можем точно сказать что лучше.

    Сам-же Бартунов например в одном из своих докладов рассказывал что сама идея затащить в PG документы возникла из идеи работать с properties в одном поле. С такой себе неструктурированной информацией. А сама задача вознила из прикладной проблемы в дизайне базы для системы образования. Им нужно было хранить в строке неспецифицированный лист атрибутов. Это еще не JSON но уже дедушка его. Вот его так порешали. Это похоже на кейс автора? Я-бы сказал что далеко нет.

    Вообще чтоб доказать или опровергнуть огульный тезис о JSON-ификации я-бы довел постановку до абсурда. Зачем мы будем трекать комментарии в JSON. Давайте и посты туда-же. И странички. И вообще всю модель положим в 1 документ JSON. Каково а? У нас будет база с 1 единственной JSON строкой которая хранит в себе всё. Технологично? Да. И не запрещается.

    Вот как-то так.
    Ответ написан
    Комментировать
  • Kotlin медленный?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Kotlin как и все JVM-основанные языки имеет сложный рантайм. Который обладает способностью прогреваться от постоянных запусков. И поэтому чтобы точно и уверенно замерять перформанс - нужно правильно подходить к проблеме. Например использовать JMH для изммерений.

    А для редких (одноразовых) запусков Python действительно может быть быстрее. Это я сам наблюдал в AWS-Lambda.
    Функция лямбда которая вызывается 1 раз в сутки должна быть написана на чем-то вроде Python/NodeJS.
    Ответ написан
    Комментировать
  • Kotlin медленный?

    Jacen11
    @Jacen11
    могу еще добавить что не умеешь измерять скорость программ с виртуальной машиной
    Ответ написан
    Комментировать
  • Что будет при увеличении вместимости канала?

    @deliro
    1. Нет, либо нет в 99.9999% случаев
    2. Да, чтобы ограничить то, на скольких OS тредах может расположиться рантайм. Это прямо влияет на CPU-bound задачи и почти не влияет на IO-bound. Например, у тебя есть функция, которая перемножает матрицы. В канал поступают матрицы, есть 10 горутин, которые читают оттуда и умножают матрицы. Очевидно, что если GOMAXPROCS будет == 1, то все эти горутины будут жить на одном треде и будут "мешать" друг другу, задействуя не более одного ядра процессора. Если GOMAXPROCS будет 10, то каждая горутина может расположиться в отдельном ОС треде и считать себе там матрицы на "собственном" ядре.
    3. Увеличится канал (sic!). Канал — это очередь. Канал без буфера — это "очередь", в которую можно добавить элемент только если с другой стороны этот канал кто-то пытается прочитать. Если такого нет — горутина будет ждать, пока этот канал кто-то захочет прочитать и наоборот, если кто-то читает канал, а с другого конца никто туда не пишет, то горутина будет ждать до тех пор, пока в канал кто-то не захочет записать. Если в канале есть буфер, то это уже становится полноценной очередью. Есть N слотов, если кто-то пришёл записать в канал, канал никем не слушается и там есть хотя бы один свободный слот — этот "кто-то" запишет в канал и пойдёт по своим делам и только если в буфере нет свободных слотов, то этот "кто-то" будет ждать, пока слот освободится. И наоборот, если кто-то слушает канал и в буфере канала уже что-то есть, то он сразу забирает первый на очереди элемент и уходит. Обычно это делают, чтобы сгладить нагрузку. Например, у тебя есть парсеры, которые что-то парсят, чтобы потом записать на диск. Но диск — штука непредсказуемая, может записать за 1мс, а может тупить 20мс. Довольно странно, если парсер будет ждать диск эти 20мс, хотя у него есть работа, которую он может выполнять прямо сейчас. Для этого можно создать буфер, куда парсер будет кидать данные СРАЗУ, а горутина, которая пишет на диск, заберёт их "когда-нибудь потом", когда диск перестанет тупить.
    Ответ написан
    4 комментария
  • Какими средствами сделать веб-интерфейс работы с БД?

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

    @garbagecollected
    То, что вы хотите, имеет научное название headless cms, например, strapi или ей подобные.
    Ответ написан
    Комментировать
  • Что должен уметь делать Python разработчик?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Не перестают удивлять меня такие вопросы. Каждый день вы имеете дело с результатами труда разработчиков. Включаете компьютер, у него в железе крутятся прошивки, написанные кем-то, загружается операционная система, написанная кем-то, вы открываете браузер, написанный кем-то, взаимодействуете с фронтом qna.habr.com, написанным кем-то, который шлёт web-серверу, написанному кем-то, запрос к бэкенду qna.habr.com, написанному кем-то, который работает с брокерами, кэшами, СУБД и прочим-прочим, написанным кем-то. Вот уметь написать всё это и должен разработчик неважно на чём. Когда я начинал, я постоянно задавался вопросами "Как это устроено? Смогу я написать такое же? Что надо, чтобы смог?", поэтому мне не нужно было ни у кого спрашивать, что изучать.
    Ответ написан
    Комментировать
  • Что должен уметь делать Python разработчик?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Должен уметь делать то же самое, что и любой не питон-разработчик ПО. ЯП - лишь инструмент. Программирование и разработка ПО - проектирование и реализация алгоритмов в рамках требований задачи и возможностей используемых инструментов.
    Ответ написан
    Комментировать
  • Как процессор ''понимает'' машинный код?

    @pfg21
    ex-турист
    в ЦПУ нет понятия "аналоговый сигнал" - он работает с четко заданными состояниями "0" и "1" (бывает и не двоичный процессор), описанными напряжением в соответствующих ячейках памяти.
    эти состояния "нажимают" через проводки на АЛУ и прочие модули процессора и перестраивают их работу.
    для пример стоит глянуть видосик с ткацкой машинкой управляющей перфокартами, наглядно неимоверно.
    Ответ написан
    Комментировать
  • Как процессор ''понимает'' машинный код?

    @evgeniy_lm
    как процессор понимает нули и единицы
    Никак, он вообще думать не умеет
    как происходит преобразование нулей и единиц в электрический сигнал.
    Никак. Нет там нулей/единиц, Есть только электрические сигналы типа включено/выключено. Это человек такие сигналы называет "логический ноль", "логическая единица"
    Есть ли в ЦПУ ЦАП?
    А что такое ЦПУ? Если имеется ввиду CPU (логика подсказывает), то нет его там. Я даже представить не могу что ему там делать. Современный процессор с аналоговыми сигналами ни как не пересекается. Существуют процессоры для цифровой обработки аналоговых сигналов (аудио, видео, пр.) называется DSP там и ЦАП есть и АЦП и даже не один.
    Ответ написан
    Комментировать
  • Как лучше работать с вычислительными задачами и потоками во Flask?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Многопоточность
    Седой и строгий
    Во-первых, while блокирует воркер так же, как и join. Во-вторых, Flask не предназначен для многопоточности и её в нём следует избегать. Лучше использовать асинхронность или очередь задач.
    Ответ написан
    6 комментариев
  • Как лучше хранить мелкие данные в базе?

    @alexalexes
    В самом кратком варианте у вас будет одна таблица, которая будет отвечать за дерево страниц.
    Таблица pages:
    id - идентификатор страницы;
    parent_id - идентификатор родителя страницы;
    title - Название страницы
    short_name - Краткое наименование (обычно используются для пунктов меню)
    alias - имя алиаса для построения url страницы (то что вы указали как type: about, advantages, etc...)
    create_date - дата-время создания страницы
    update_date - дата-время изменения страницы
    content - тело страницы
    is_hidden - флаг скрытости страницы (удобно использовать для устаревания страниц)
    PS: Посмотрите как это реализовано в любой популярной CMS, похожая таблица и свойства таблиц есть в любой из реализаций.
    Ответ написан
    Комментировать
  • Как исправить эту ошибку docker-compose?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Идём сюда: archive.ubuntu.com/ubuntu/dists и видим, что там нет релиза hirsute. Зато он есть тут: https://old-releases.ubuntu.com/ubuntu/dists/ , так что меняем archive.ubuntu.com на old-releases.ubuntu.com. Ещё лучше, конечно, обновить Dockerfile на более новую версию убунты, но может потребоваться разобраться в разных нюансах (какой-нить пакет иначе называется, какие-то конфиги в другом месте лежат и всякое такое).
    Ответ написан
    4 комментария
  • Какие есть сервисы кэширования для сайта?

    @MaxKozlov
    proxy_cache_bypass

    Насколько я знаю, оно лезет напрямую и следом обновляет запись в кеше. По смыслу очень близко. Разница том, что при отдельном запросе на ban/purge новая версия появится не тут же, а позже, при реальном запросе.

    Вот тут ещё статеечка на эту тему - https://habr.com/ru/post/428127/
    можно чистить скриптиком, как там предлагается.
    Комментарии там тоже не пропустите

    proxy_cache_bypass доступна во free,
    проверил, proxy_cache_purge в free версии нет, доступна как часть коммерческой подписки
    Ответ написан
    2 комментария
  • Легален ли дизайн сайта со стилистикой популярных фильмов?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Можно. Но как только посещаемость такого сайта станет выше полутора калек, придет хозяин копирайта и скажет "чувак, ты пользвал мое! а ну-ка давай-ка отдавай сайт!" (или еще чего - тут от ситуации зависит).

    Ну а продавать чужое просто нельзя. Это примерно как перепродажа краденого :)
    Ответ написан
    Комментировать
  • Легален ли дизайн сайта со стилистикой популярных фильмов?

    @McBernar
    Не для продажи — всем пофиг.

    Продавать чужой арт нельзя. Ни как часть своего дизайна, ни как просто заглушка для картинок.

    Договаривайтесь с автором.
    Ответ написан
    3 комментария
  • Где брать все эти прикольные фоны и фотографии для сайта?

    KickeRocK
    @KickeRocK
    FrontFinish
    1) Если вы разработчик: Из макета-> У дизайнера
    2) Если вы сам себе дизайнер:
    Взять на бесплатных стоках фоток / сделать самому изображения / украсть на любом сайте
    Google: photo stock free
    Ответ написан
    1 комментарий
  • Golang выдает ошибку, что делать?

    Вам компилятор четко пишет
    main redeclared in this block {строка 8 столбец 6 }
    previous declaration at ./hello.go:18:6

    Перевожу: функция main написана несколько раз, второй раз она встречается в файле hello.go на 18 строчке.
    Видимо, у вас в одной папке несколько файлов и в нескольких из них есть функция main. Так делать нельзя, все, что находится в одной папке, го считает одним пакетом.

    Что касается второй ошибки, отправляйтесь изучать основы синтаксиса языка, иначе далеко так не уедете. У вас лишние запятые в конце списка параметров и в конце списка переменных.
    Ответ написан
    7 комментариев
  • Почему синхронный код в JS потребляет больше памяти?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Поскольку код "до" и "после" в вопросе отсутствует, можно только гадать на хрустальном шаре, что же там пошло не так.

    Сам по себе чехол со стразами синтаксический сахар async / await не меняет асинхронной сути исполнения. Перечитайте, что ли, про awync / await.
    Ответ написан
    Комментировать