habrahabr
Малоизвестные возможности языка C

Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java.И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.Текущая наиболее часто используемая версия языка, c99, принесла много новых возможностей, многие из которых совершенно неизвестны большинству программистов на C (в более старых спецификациях, очевидно, тоже есть сво…

  • суббота, 1 июля 2023 г. в 00:00:32
habrahabr
Приборы и материалы для чистки зубов (какая щётка лучше, например)

Вот это южнокорейская зубная щётка. Она в два раза длиннее обычной, потому что корейцы привыкли получать максимум эффекта на каждую потраченную вону. Теперь простой вопрос: может, стоит тоже купить такую, раз она больше? Можно будет чистить зубы быстрее или эффективнее? Нет, не стоит. Лучше купить щётку с большим количеством щетинок, хотя бы 5 тысячами штук. Такие щётки стоят в Москве 500–900 рублей в аптеках. Вот с ними реально одно движение может быть эквивалентно по эффекту 4–5 движени…

  • суббота, 1 июля 2023 г. в 00:00:32
golang
Эффективная работа с битами при помощи Go

Это статья познакомит вас с использованием возможностей Go для выполнения манипуляций с битами. Здесь мы разберём установку, очистку, инвертирование, сдвиг битов, использование техники SWAR, эффективную обработку Юникода и прочие приёмы, позволяющие повысить продуктивность программирования. На самом фундаментальном уровне программисту нужно манипулировать битами. Современные процессоры работают с данными через регистры, а не в виде отдельных битов, поэтому необходимо уметь управлять битами …

  • суббота, 1 июля 2023 г. в 00:00:31
golang
Атомики в Go: особенности внутренней реализации

Атомики в Go - это один из методов синхронизации горутин. Они находятся в пакете стандартной библиотеки sync/atomic. Некоторые статьи сравнивают atomics с mutex, так как это примитивы синхронизации низкого уровня. Они предоставляют бенчмарки и сравнения по скорости, например Go: How to Reduce Lock Contention with the Atomic Package. Однако важно понимать, что, хотя это примитивы синхронизации низкого уровня, они разные по своей сути. Прежде всего атомики являются "low-level atomic memory …

  • суббота, 1 июля 2023 г. в 00:00:27
golang
Пишем свою мини-СУБД на Golang (Часть 1)

Привет, Хабр! Создание небольшой системы управления базами данных - это всегда прекрасный опыт и способ почерпнуть новые знания или же, закрепить уже существующие навыки. В этом цикле статей мы попробуем собрать нашу небольшую СУБД с использованием стандартной библиотеки Go :P Та самая инновационная СУБДТребованияНачнем с определения требований, которые мы хотим выдвинуть к нашей будущей СУБД (далее для позерства удобства будем называть ее repaDB). Здесь выделяют множество этапов, но если крат…

  • суббота, 1 июля 2023 г. в 00:00:26
javascript
Zod: Типизация и валидация Вашего .env (Vite + React и не только)

ВведениеНередко в проектах необходимо заводить переменные окружения (environment variables). Существует много способов сделать это. Например, указать переменную "inline", как MY_VAR="my value" node index.js или обозначить источник командой source. Некоторые фреймворки имеют даже целые отдельные пакеты для формирования переменных окружения (прим. nest.js). Но чаще всего за годы работы в сфере фронтенд-разработки мне приходилось работать со способом, который подразумевает содержа…

  • суббота, 1 июля 2023 г. в 00:00:25
javascript
Чек-лист фронтендера при разработке рекламного спецпроекта

Привет! Меня зовут Наташа, я фронтенд-разработчик в отделе рекламных спецпроектов KTS.В отделе мы делаем множество сервисов в мини-приложениях VK, Одноклассниках, Телеграме, создаём лендинги. Мы делаем как краткосрочные проекты, которые могут длиться 2 недели, так и долгосрочные — сроком работы от года.Изначально я написала этот материал для внутреннего использования, чтобы разработчик на каждом этапе разработки приложения знал, на что обратить внимание. Эта статья — подсказка, которая помога…

  • суббота, 1 июля 2023 г. в 00:00:24
javascript
Сравнение тяжеловесности популярных библиотек UI компонент для Vue 3

Библиотеки UI компонент популярны и удобны в некоторых случаях, но у них тоже есть обратные стороны. Одно дело, когда делаешь админку и используешь десятки компонент, другое - когда тебе надо всего пару компонент.Было проведено исследование - взяты три HTML элемента: Button, Input и Select, и проверено, насколько увеличатся js и css бандлы если использовать для них одну из 10 распространенных UI библиотек для Vue 3.Создать стилизованный по своему желанию компонент Button - это несколько килоба…

  • суббота, 1 июля 2023 г. в 00:00:23
javascript
React Context: создание глобального стора, используя useContext и useState

Что такое react-контекст?React Context API - это интерфейс, который позволяет сохранять некоторую величину (переменную или объект), и использовать ее между несколькими компонентами. Под самим же контекстным стором, или как его просто называют - контекстом, понимают эту сохраненную величину.Интерфейс react-контекста состоит из метода createContext, компонента Context.Provider и хука useContext. С их помощью вы можете создать контекст, а затем обернуть компоненты в провайдер от этого контекста. …

  • суббота, 1 июля 2023 г. в 00:00:23