Задать вопрос
  • Как на javascript замерить время выполнения функции (в наносекундах)?

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

    во первых - performance.now возвращает дробное число, поэтому там в принципе может быть наносекундная точность. однако стандарт определяет что точность должна быть 5 микросекунд. Плюс браузеры могут специально занижать точность чтобы бороться с некоторыми атаками.

    поэтому правильно вызывать функцию много раз и считать среднее.
    так же в ноде есть process.hrtime которая дает наносекунды.

    оба этих метода "в лоб" не дадут нормального результата. Почему? потому что в реальности происходит много всего интересного при выполнении кода.

    в движке есть неимоверное количество оптимизаций, и функция вызванная 10 раз будет иметь совершенно другой код чем функция вызванная 100 раз. То же касается и типов параметров - например вы можете передавать целые или дробные числа.
    На одну вашу написанную js-функцию движок сгенерирует несколько функций которые это реализуют. У этих функций может быть совершенно разный код с разной произодительностью.

    Переключение происходит на лету и в общем виде вы не знаете когда это происходит.

    поэтому само по себе замерение скорости "функции" имеет мало смысла, так как там их несколько внутри. Если интересны детали - погуглите JIT, AOT и v8 optimizations.
    Сейчас важно то что есть "холодные" функции которые работают медленее но надеждее и как правило используются сразу и есть "горячие" варианты, которые компилятор начинает использовать когда видит что код вызван много раз, и условия не меняются. "Горячие" работают быстрее.

    при прогоне цикла сначала будет работать "холодный" вариант, затем в какой-то момент срабатывает оптимизация, он переключается на более быстрый. Таких переключений может быть несколько.

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

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

    И тут самый главный момент - даже если вы замерите эту скорость, что вы будете делать с этим знанием? В реальной программе при выполнении этого кода скорость может быть совсем не такая как вы намеряли. Эти тесты годятся только для своего общего развития

    На практике имеет смысл измерять скорость у функций которые выполняются намного дольше И там где это создает проблемы. погуглите термин "преждевременная оптимизация".
    В этом случае обычно понятно что создает задержки и измерить время работы одного вызова не составляет труда.
    Если же функция работат так быстро что вы не можете понять насколько именно, то вряд ли вам потребуется это выяснять.

    Для практических задач в браузере есть профайлер, если нужно выяснить что же тормозит в конкретном коде, правильнее всего начать с него.
    Ответ написан
    5 комментариев
  • На чем написать rest api для kanban доски?

    @ghostiam
    На Go писатель, серверов пинатель.
    На GO, "православный" стек, это стандартный пакет net/http + какой нибудь внешний роутер, например chi, либо вообще не http/rest, а gRPC (если мы говорим об API).
    Для БД чистый SQL, максимум какой нибудь маппер на структуру, типа sqlx(можно ещё использовать sql builder, но в IDE Goland хорошая поддержка чистого sql).

    ORM очень не советую, есть конечно gorm(генерирует запросы не эффективно, N+1 при связях), для мелких проектов хватит, но вот со сложными запросами любая ORM не справляется.
    Я категорически против ORM, так как за всё время моей работы в вебе, в любом проекте, самым слабым звеном всегда была ORM(долбит кучей запросов БД, когда на чистом sql это 1-2 запроса), либо программист, вместо того, чтобы написать запрос вида "SELECT SUM(amount) FROM book WHERE author = 'Petya'", достаёт все записи и суммирует это в коде(делает работу за БД + тратит ресурсы БД на чтение данных с диска и передачу их по сети).

    Не нужно использовать фреймворки, это не даст опыта написания на go(как и в большинстве языков).
    Go используют, где производительности других решений не достаточно, или нужна многопоточность, что фреймворки так себе обеспечивают.
    Шаблоны в go практически не использую, пишу фронт на vuejs и обращаюсь к go api.
    Есть генераторы документаций, но я тут не посоветую, их нужно тестировать отдельно, у каждого есть свои плюсы и минусы, сам использую другое решение(опишу в конце).

    Самое главное, побыстрее понять, что на go нужно писать как на go, а не так как привыкли в других языках, потому-что, в нём нет привычных классов, строгая типизация, процесс живёт долго и могут быть race condition(гонка состояний) при многопотоке(веб сервер многопоточный), поэтому о подходах из php советую поскорее забыть.

    В своих проектах(в проде), использую go только как сервис предоставляющий апи. Недавно начал использовать grpc-gateway(так как использую gRPC, но так же необходимо делать API доступное через web), проект позволяет описать всё что необходимо в proto файлах (см. gRPC), сгенерировать модели и обёртки под большенство языков + документацию в OpenAPI 2.0. Это не фреймворк, это обёртка над стандартным net/http, которая сразу валидирует и маппит данные на структуру.

    Коротко:
    Для новичка, советую забыть про фреймворки(они не помогут в изучении) и ORM(не эффективно).

    Использовать для веб сервера:
    net/http - встроен в го
    chi(проще) или gorilla/mux - роутер

    Для взаимодействия с БД:
    sqlx - обёртка над стандартным пакетом sql, но позволяет сразу считывать данные в структуру, без ручного сканирования.
    Ответ написан
    3 комментария
  • Остались ли еще толковые русскоязычные биржи?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    какие отклики можете дать?

    Учите английский и не связывайтесь с русскими биржами.
    Ответ написан
    4 комментария
  • Какие курсы в сфере Digital или IT действительно помогают сменить профессию?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Никакие. С тем же успехом можете отдать деньги цыганам, чтобы они вам счастье нагадали.
    Ответ написан
    17 комментариев
  • Кайфую от геометрии и физики, есть какие-то ресурсы на подобии описанного в вопросе?

    15432
    @15432
    Системный программист ^_^
    Не уроки, но я надолго залип

    Я.И. Перельман
    • Занимательная физика
    • Занимательная механика
    • Занимательная геометрия
    • Занимательная арифметика
    • Занимательная астрономия
    Ответ написан
    4 комментария
  • Как задать стили всем кроме первых четырех элементов?

    wapster92
    @wapster92 Куратор тега CSS
    Топовая статья по nth-child от Юли Бухваловой
    Ответ написан
    Комментировать
  • Почему не берут на работу HTML верстальщиком?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Во первых: HTML-верстальщики как профессия умирает уже с 2016. Сейчас верстальщик - по мимо верстки умеет PHP, JS, Jquery и полный стандартный инструментарий из 30-40 емкий названий вроде- PUG, BEM etc. Что делает его веб-мастером, который может претендовать на зарплату 30 тысяч рублей, которую можно смело сделать работая таксистом особо не заморачиваясь.

    Во вторых: Ваше резюме, особенно первая его часть - Frontend Developer. Я конечно не хочу капать ядом на стол, но лично я считаю что фронтенд - это больше про логику и умение строить приложения вроде SPA, а не верстать кнопки, которые можно смело украсть используя codepen, либо чужой код. Верстка нужна, но как правило она играет хорошим плюсом при условии что вы пишите - знаю нативный JS + ES6 + React\Vue, настраиваю webpack как отец. Как правило бэкэнд - это тоже про умение строить архитектуру, а не про создать базу данных под wordpress. Никто не пишет - backend разработчик - вчера прописал пару SQL запросов, и прошел курс по Node.js для новичков.

    В вашем же резюме - всё, буквально всё кричит что вы посмотрели пару курсов где Василий обжимая упругую попку блондинки, снимает свой курс по верстке для новичков IT, обещая им 60 тысяч рублей как нефиг делать на фрилансе.

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

    И всё у Вас получится. Успехов.
    Ответ написан
    Комментировать
  • Что сейчас используют веб-дизайнеры Figma или Photoshop?

    mmmaaak
    @mmmaaak
    У нас фигма
    Ответ написан
    Комментировать
  • Почему в ЕС и Сша нет нормального сайта по поиску работы?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ты откликаешься на вакансию и хз что с ней


    все по карме
    Ответ написан
    Комментировать
  • Как показать последние 4 символа в строке, а остальные заменять?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Может, без регулярок?
    const mask = (s) => '*'.repeat(s.length - 4) + s.substr(-4);
    
    mask('1234567890123456') // "************3456"
    Ответ написан
    Комментировать
  • Что НЕ стоит начинать изучать в ближайшем будущем?

    myks92
    @myks92
    Нашёл решение — пометь вопрос ответом!
    Всё, кроме того что советуют учить по теме: «Что учить новичку в 2020?»
    Ответ написан
    Комментировать
  • Можно ли с помощью php защитить сайт от воровства?

    prrrrrrr
    @prrrrrrr
    Верстаю сразу на PHP.
    Можно ли с помощью php защитить сайт от воровства?

    Можно. Запускать сайт на localhost
    Ответ написан
    Комментировать
  • Забанили в гугл. Что делать?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    У людей на базе сервисов гугл есть целые црм с миллионами оборотами, и вот так в один момент можно потерять все БД по сделкам и клиентам и даже данные свои не забрать....
    Да-да, точняк, свой номер только лохи указывают, пацаны свой номерок не палят всяким левым сервисам. А они нагло пользуются и отжимают бизнес у уважаемых людей...

    ЗЫ: если не окончательно забанили - вот
    Ответ написан
    6 комментариев
  • Как сверстать правильно такой блок?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега CSS
    Руководитель frontend направления, предприниматель
    1. Две независимые колонки.
    2. Гриды.
    3. Columns.
    4. Masonry.

    Скорее всего первый вариант, т.к. вроде как проглядываются равные промежутки между записями.
    Ответ написан
    3 комментария
  • Формы для тестирования и разработки rest api?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Postman, insomnia для старта. А вообще инструментариев для автоматического тестирования api хватает
    Ответ написан
    Комментировать
  • Как сделать чтобы псевдоэлемент ::before был под основным элементом?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега CSS
    Руководитель frontend направления, предприниматель
    z-index работает, просто применяешь ты его без понимания, как он работает. Тебе надо двигаться в этом ключе.
    Ответ написан
    2 комментария
  • Как зарабатывать на веб-программировании?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Как зарабатывать на веб программирование?

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ту, которая вам интересна.
    Ответ написан
    7 комментариев