• Целесообразно ли хранить изображения как BLOB в БД?

    ScriptKiddo
    @ScriptKiddo
    Несколько тысяч - можно и в БД
    Вот что пишут про хранение небольших бинарников в базе SQLITE

    SQLite читает и записывает небольшие BLOB-объекты (например, эскизы изображений) на 35 % быстрее¹, чем те же BLOB-объекты, которые можно читать или записывать в отдельные файлы на диске с помощью функций fread() или fwrite().

    Кроме того, одна база данных SQLite, содержащая 10-килобайтные BLOB-объекты, использует примерно на 20 % меньше места на диске, чем хранение BLOB-объектов в отдельных файлах.

    Разница в производительности возникает (мы полагаем), потому что при работе с базой данных SQLite системные вызовы open() и close() вызываются только один раз, тогда как open() и close() вызываются один раз для каждого BLOB-объекта при использовании BLOB-объектов, хранящихся в отдельные файлы. Похоже, что накладные расходы на вызовы open() и close() больше, чем накладные расходы на использование базы данных. Уменьшение размера связано с тем, что отдельные файлы дополняются до следующего кратного размера блока файловой системы, в то время как большие двоичные объекты более плотно упаковываются в базу данных SQLite.

    https://www.sqlite.org/fasterthanfs.html
    Ответ написан
    1 комментарий
  • Нужна ли лицензия для приватного репозитория?

    Если речь о лицензии на код, то лицензия нужна тогда, когда ты хочешь другим людям дать какие-то права.
    Код без лицензии = код без прав на какое-либо использование кем-либо кроме автора.
    Ответ написан
    Комментировать
  • Какой язык програмирования дает скомпилированый файл с самым маленьким размером?

    почему такая большая разница?

    Каждый имеет свою стандартную библиотеку и какой-то свой рантайм, которые весят не ноль.
    В случае хаскеля, он собой ещё тащит GC.
    + Компилятор в разной степени может наоптимизировать твой код.

    Как уже сказали выше - минимальный размер тебе дадут машинные коды (или же ассемблер), если ты будешь писать код прямо на них. В зависимости от ОС и архитектуры, простая программа может занимать считанные сотни байт (если не десятки).

    Если смотреть на компилируемые языки чуть более высокого уровня, то самый компактный выхлоп дают C, C++, и Rust, в зависимости от настроек компилятора, подключаемых библиотек, и используемых фич.

    В целом - 11 мегабайт даже для консольной утилиты сейчас копейки.
    Ответ написан
    1 комментарий
  • Почему много HTTP запросов - это плохо?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Тебе когда надо достать из холодильника 5 бутылок пива, что проще - открыть холодильник, взять 5 бутылок пива и закрыть холодильник, или открыть холодильник, взять бутылку, закрыть холодильник, открыть холодильник, взять бутылку, закрыть холодильник, открыть холодильник, взять бутылку, закрыть холодильник, открыть холодильник, взять бутылку, закрыть холодильник, открыть холодильник, взять бутылку, закрыть холодильник?
    Ответ написан
  • Как создать npm пакет на typescript?

    Kozack
    @Kozack
    Thinking about a11y
    - Куда помещать typescript и javascript файлы?
    Куда вам удобно

    - Для чего нужно создавать папку dist?
    Обычно вы пишете исходники в TS. Потому компилируете его в JS и публикуете JS. Обычно в папке dist лежит именно скомпилированный js.

    - Какой файл указывать в package.json, .ts или .js?
    js.

    - Надо ли создавать .d.ts файлы?
    Да

    - Добавлять ли "type": "module" в package.json?
    - Использовать export или module.exports?
    Зависит от того, в какой формат вы компилируете ваш JS

    - Надо ли создавать @types/проект, и если да что нужно делать там?
    Нет. Это нужно только в тех случаях, если ваши d.ts файлы не включены в сам пакет.

    А вообще в интернете полно руководств
    https://itnext.io/step-by-step-building-and-publis...
    Ответ написан
    Комментировать
  • Как убрать подсветку в vs code?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Ума не приложу зачем, но цвет выделения (и вообще любые цветовые кастомизации) можно настроить по пути как на картинке.

    Тут все возможные токены, также прямо в файле есть автокомплит, если начать вводить.

    Чтобы убрать - нужно сделать прозрачным, указать любой цвет и 00 на альфа-канале, например `#ffffff00`.

    620eab4c3659a131653695.jpeg
    Ответ написан
    3 комментария
  • Как правильно затипизировать данный кусок кода?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Если не используете Node.js то просто исключите типы для неё из конфига TS.
    Тогда у вас setTimeout будет возвращать простой number, а clearTimeout будет принимать number | undefined. И никаких проблем.)

    Если же код ноды по каким-то причинам у вас идёт вперемешку со фронтовым кодом, то для фронтовых таймеров можете писать явно window.setTimeout и window.clearTimeout.
    Ответ написан
    Комментировать
  • Как разработать графический конструктор отчётов для пользователей?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Погоняйте SSRS Builder. Ну или эксель. Или Power BI или Power App.

    По идее это все делалось для пользователей что бы они накидали по быстрому и все, в итоге можно увидеть Power BI senior enginer.
    Что конкретно доставляет. И программы нифига не простые. Мне вот проще накидать скрипт, создать нужную вьюху и прокинуть в SSRS
    Ответ написан
    3 комментария
  • Как отформатировать миллисекунды на минуты, часы, дни?

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    new Date(298999).toLocaleString('en', {minute: '2-digit', second: '2-digit'}) // 04:58
    Ответ написан
    Комментировать
  • Вопрос про изучение C# – оптимальная методика?

    twobomb
    @twobomb
    Да нормально, это. Я начал знакомство с программированием с языка C++, потом появилась необходимость коё-что сделать на VBA(visual basic for application), выучил его, потом на веб потянуло, выучил js,html, потом полез в бекенд php пришлось осознать что такое бд, поработал с mysql, postgres. Потом решил создать онлайн игру полез в node js, там познакомился с mongodb. Потом столкнулся с Java, за пару недель выучил java и новомодную оболочку javafx. Потом была необходимость разбираться с ассемблерами, masm, fasm, написал загрузчик, упорол флешку, сложно, забил. Потом узнал про C#, полез туда win forms, wpf, опять в геймдев потянуло , полез в Unity параллельно занимался моделированием для игры, познавал себя в блендере, до этого на 3д максе работал. Где-то среди всего этого еще затерялся action script 3 (это язык для флеша, пусть земля ему будет пухом), на котором я тоже делал игруху на бокс2д, чтобы карты для неё можно было создавать через tiled map editor. И это всё малый список из того что я попробовал в первые годы входа в среду программирования, там еще кучи фреймворков было опробовано на разных языках.
    Ну и естественно бывало когда я обучался сразу в 3х+ разных языках. На самом деле самое сложное это определится чего ты хочешь, чем конкретно тебе нравится заниматься, особенно если нравится всё. Поэтому ваше 'я учу C#, а может быть мне хтмл поковырять' выглядит смешно.
    Ответ написан
    Комментировать
  • Обычная и служебная страница CMS на одном адресе?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Если страница не перегружается, то либо аякс, как написали выше, либо тупо часть контента скрывается, и вместо него показывается другая, ранее скрытая. И в том и в другом случае просто работа яваскрипта по манипуляции с элементами странички.

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

    @rPman
    Это нормальный рабочий вариант, если недостатки удаленной работы тебя не пугают (лаги и зависимость от наличия интернета)

    Покупать отдельный компьютер не требуется, достаточно планшетника или даже смартфона. Usb хаб для подключения мыши и клавиатуры либо bluetooth (что бы не занимать разъем для питания). Для подключения смартфона, не имеющего hdmi разъема использовать адаптер miracast или еще называют wifi hdmi (примерно 1-2т.р.), настоятельно рекомендую протестировать в магазине с вашим устройством, у меня лежит один, который для конкретного планшетника поворачивал экран на 90 градусов (я тогда это не победил), глючил скорее всего планшетник, так как со смартфонами все работало нормально
    Ответ написан
    Комментировать
  • Стоит ли использовать микрокомпьютер для удаленной работы?

    @Drno
    Я за intel Nuc(который ввиде флешки) или RPI

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

    Берите ноут, хоть 1 рабочее устройство будет если что. С точки зрения логики и подстраховки это единственный нормальный вариант
    Ответ написан
    2 комментария
  • TypeScript. Как сделать оверлоад объекта стрелочной функции?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    ТС недостаточно умный для этого. Решает он так, потому что когда ты делаешь SomeType extends BaseType для аргумента функции, внутри функции значение этого аргумента просто BaseType и автоматический вывод исходит из этого. Тут либо добавлять руками оверлоады и на враппер, или пробовать писать головоломный тип, или обойтись без оверлоадов явными условиями типа:
    type MyFuncAs =<T extends boolean> (obj?: Obj<T>) => T extends false ? number : string;
    Ответ написан
    1 комментарий
  • Vetur отключить предуприждение стилистики?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    В каком-ниюудь модуле укажи:
    declare global {
      const VUE_APP_WS_URL: string | undefined;
    }

    В тайпскрит всё должно быть типизированнно. Ты не можешь просто с потолка брать какие-то переменные.
    Ответ написан
    Комментировать
  • Как избежать преждевременной оптимизации? Или как не зная что будет потом в проекте, обрабатывать исключения?

    @Akela_wolf
    Extreme Programmer
    Для вашей ситуации придумали интерфейсы.

    Вот смотрите, есть логика вывода (Котлин, надеюсь понятно что этот код делает):
    interface Report {
      fun getAverageTime(): BigDecimal
    }
    
    fun printReport(report: Report) {
      println("Average time: ${report.getAverageTime()}") 
    }

    Мы получаем данные из отчета. И нас в этом месте мало волнует как именно эти данные рассчитаны и как обрабатывается 0. Это логика отчета. Мало того, у нас может быть несколько разных реализаций интерфейса Report, каждая из которых обрабатывает этот случай каким-то собственным образом, вплоть до того что кидает исключение и, в результате, возникает ошибка (обработка такого исключения за рамками этого примера).

    Теперь у нас возникает необходимость добавить еще один параметр в отчет:
    interface Report {
      fun getAverageTime(): BigDecimal
      fun getCountWithZeroTime(): Int
    }
    
    fun printReport(report: Report) {
      println("Average time: ${report.getAverageTime()}") 
      println("Participants have zero-time: ${report.getCountWithZeroTime()}")
    }


    И никакой преждевременной оптимизации, только структурированный код.
    Ответ написан
    Комментировать
  • Нормально ли комментировать верстку?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    слишком много комментариев лишних

    Ключевое слово – лишних.
    Лишних быть не должно.

    Вот в этом месте
    <!-- nav item -->
    <li class="header__menu-item">
        <a href="./contacts.html" class="header__menu-link">КОНТАКТЫ</a>
    </li>
    <!-- nav item end  -->

    комментирование абсолютно лишнее. Это визуальный мусор.

    Разметку комментировать не нужно.
    В верстке бывает полезно выделить блоки комментариями.

    Что я имею ввиду: если вы просто верстальщик и результат вашей работыбудет передан программисту для интеграции в CMS, то он будет вам благодарен, если вы выделите основные блоки комментариями, особенно, если разметка блока большая и не вмещается в один экран. Просто так будет проще скопировать кусок кода, чтобы перенести его в шаблон системы управления сайтом.

    Если же вы тот самый программист, то html комментарии в результате вашей работы соверщенно излишни.
    Ответ написан
    Комментировать
  • Как суммировать столбцы?

    @Akela_wolf
    Extreme Programmer
    SELECT SUM(confirmed_ones) AS confirmed_ones, SUM(rejected_ones) AS rejected_ones FROM (
      SELECT ... /*тут ваш запрос из вопроса */
    )
    Ответ написан
    Комментировать
  • Есть ли какая то статья, где будет соотношение кол-ва одновременных юзеров на сайте и рекомендуемой конфигурации сервера?

    @dimuska139
    Backend developer
    Нет, потому что 500 человек, грузящие на сервер видео для обработки, и 500 человек, просто читающие на сайте статьи - это совершенно разные вещи, которые требуют совершенно разные конфигурации сервера.
    Ответ написан
    Комментировать