Обновить
4
0

Пользователь

Отправить сообщение

Как конфигурировать Git

Время на прочтение13 мин
Охват и читатели8.8K

Какие настройки git config сейчас следует устанавливать по умолчанию? Ниже рассмотрены избранные настройки, менять которые не стесняются даже разработчики самого Git.

Несколько недель назад я написал о настройке Git help.autocorrect и поведал странную историю о том, как её значение стали задавать в децисекундах.  

Эта статья заставила меня поразмыслить и о других настройках git config, вероятно, не известных широкому кругу пользователей. Возможно, для этих настроек стоит задать по умолчанию иные значения, чем действуют сейчас.

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

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

Читать далее

Многопоточное программирование на C

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели10K

Привет хабр! Новичок в написании статей, но никогда не поздно начать. Объемный гайд по функциям pthreads для людей знающих базы C/C++.

Читать далее

Фрактальный декоратор в C#

Время на прочтение6 мин
Охват и читатели3.4K

Привет, Хабр!

Сегодня разберём паттерн «Фрактальный декоратор» — способ рекурсивного декорирования объектов, позволяющий динамически добавлять уровни логики без изменения базового кода.

Читать далее

Еще раз о забытом. Roslyn Source Generators

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели1.7K

Каждый разработчик часто сталкивается с написанием большого объема рутинного и повторяющегося кода, который имеет один и тот же смысл. Начиная с C# версии 9 появилась возможность генерации кода, которая интегрирована напрямую с компилятором. Такой подход позволяет избавиться от множества строк шаблонного кода. О нём сегодня и поговорим.

Читать далее

Создание файлового сервера на c++ и Boost

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели3.2K

В этой статье я описал процесс создания файлового сервера — инструмента для организации доступа к файлам по сети. В статье представлен пример реализации файлового сервера на C++ с использованием библиотеки Boost.Beast и Boost.Filesystem. Сервер позволяет просматривать содержимое указанной директории и поддиректорий, скачивать файлы.

Читать далее

Про Rust — просто. Что читать в каком порядке?

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели19K

Друзья! Многие из вас, возможно, как и я, интересовались изучением и использованием в работе очень эффективного и востребованного языка программирования Rust но, как и я, оставляли свои попытки из-за сложности, запутанности и многослойности доступного материала и книг по этой теме.

Лично я делал не меньше 5 попыток на протяжении последних 10 лет, прорабатывая, большей частью в свободное и личное время, литературу, некоторые книги по несколько раз, в поисках ответов на простые человеческие вопросы - как свободно писать на Rust и решать, как орешки, ежедневные задачи, не страдая от головной боли и хорошо понимая, что происходит и почему простая программа не компилируется.

В результате, сейчас, наконец-то, стало понятно все в деталях, код пишется быстро, задачи решаются легко, результаты применения языка поражают своей эффективностью и точностью и возникло желание восполнить пробел и поделиться с вами накопленным опытом, но, главное, провести и привести вас к совершенному пониманию простоты и лаконичности этого удивительно эффективного языка наиболеее коротким и приятным путем. Приготовьтесь к увлекательной и познавательной прогулке и подъему по ступеням вверх, к мастерству написания полезного кода на Rust.

Читать далее

Операционная система в 1 000 строках кода (часть 1)

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели26K

Всем привет! В этой небольшой книге (серии статей, — прим. пер.) мы с нуля, шаг за шагом, напишем скромную ОС.

▍ Навигация по частям



Вы можете насторожиться, услышав, что разработка ОС или ядра, в частности, их базовых функций на удивление проста. Даже система Linux, которая воспринимается как масштабный опенсорсный проект, на стадии версии 0.01 включала всего 8 413 строк кода. Сегодня ядро Linux действительно огромно, но начиналось оно, как и типичный хобби-проект, с крохотной базы кода.

В рамках предстоящей серии статей мы на языке С реализуем базовое переключение контекста, страничное распределение памяти, режим пользователя, командную оболочку, драйвер дискового устройства и операции чтения/записи. И хотя такой объём работы может показаться масштабным, всё это уместится всего в 1 000 строк кода.

Но сразу предупрежу — процесс окажется не так прост, как выглядит на первый взгляд. Самой сложной частью создания собственной ОС является отладка. И мы не сможем использовать для этого printf, пока её не реализуем. Здесь вам потребуется освоить различные техники и приёмы отладки, которые в разработке ПО вы никогда не использовали. В частности, начиная «с нуля», вы будете встречать сложные этапы вроде процесса загрузки и страничной организации памяти. Но не пугайтесь, «отлаживать ОС» мы тоже научимся!

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

Операционная система в 1 000 строках кода (часть 2)

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели7.1K

Продолжаем серию статей, посвящённую написанию собственной минималистичной ОС. В прошлой части мы познакомились со всеми вводными компонентами проекта и поставили общие цели. В этой же мы реализуем загрузку ядра, вывод строки Hello World!, механизм паники ядра, а также некоторые функции управления памятью и работы со строками.

▍ Навигация по вышедшим частям


Читать дальше →

Операционная система в 1 000 строк кода (часть 3)

Уровень сложностиСредний
Время на прочтение28 мин
Охват и читатели5.9K

Перед вами третья часть серии статей, в которой мы пишем собственную небольшую ОС. В этой части мы реализуем аллокатор памяти, механизм её адресации с использованием таблицы страниц, а также переключение контекста и некоторые другие элементы системы.

▍ Навигация по вышедшим частям


Читать дальше →

Негостеприимные красные карлики. Об ультрафиолетовой зоне обитаемости

Время на прочтение9 мин
Охват и читатели4K

Одна из самых больших дискуссий в моём блоге на Хабре развернулась под статьёй «Укрощение кислорода и подводные камни терраформирования», опубликованной в апреле 2023 года (+69, 15k просмотров, 237 комментариев). В этой статье я затрагивал, в том числе, и тему «кислородной катастрофы», то есть, крайней губительности кислорода для первых анаэробных организмов. Об эволюционном смысле кислородной катастрофы подробно рассказывает знаменитый популяризатор науки Сергей Ястребов в статье «Кислородная революция и Земля-снежок», вышедшей в 2016 году в журнале «Химия и жизнь». Тема кислородной катастрофы на Хабре исследована слабо (но затрагивается в ещё одной чрезвычайно удачной статье «Мы уникальны. И, вероятно, одиноки», которую уважаемый @Barrayar опубликовал в блоге компании VK), поэтому заинтересовавшихся ею отсылаю, прежде всего, к статье господина Ястребова. Но здесь я затрону смежный вопрос, всерьёз интересующий современных астробиологов: а как быть с тем, что первая жизнь на Земле образовалась в практически бескислородный период, при отсутствии озонового слоя? Модели, описывающие роль ультрафиолета на ранних этапах биологической эволюции, сегодня даже заставляют выделять специфическую «ультрафиолетовую зону обитаемости» и присматриваться к доле ультрафиолетового излучения в спектре звёзд M и K (красных и оранжевых карликов). О соотношении убийственной и живительной роли звёздного ультрафиолета поговорим под катом.   

Читать далее

Барьеры и модели памяти – explained

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели3.9K

Всем привет! 

Начну с предыстории.

Когда мы в Амазоне планировали переносить сервис с x86/64 на ARM, почему-то никто в нашей команде не поднял тему того, что надо уделить особое внимание работе с многопоточностью и синхронизацией, так как из-за того, что у этих двух архитектур разные модели памяти, могли случиться неожиданные проблемы.

Однако, на тот момент я тоже об этом не знал, и нам повезло, что мы изначально везде использовали модель памяти Sequential Consistency (что это – далее в статье), поэтому все прошло гладко. Теперь, зная про модели памяти и возможные последствия, боюсь представить, что было бы в противном случае.

Как родилась статья

Когда я впервые изучал модели памяти, я мало что понял, и спустя месяц все забыл. Потом прочитал еще раз, но, к сожалению, тоже хватило ненадолго. В итоге я решил расписать все для себя максимально подробно, с красивыми картинками, чтобы при необходимости можно было к ним возвращаться и не тратить много времени на вспоминание.

Статья основана на материалах лекции Computer Science Center (CSC) с курса “Параллельные вычисления” преподавателя Калишенко Е.Л. Крайне рекомендую ознакомиться со всеми лекциями курса (более структурированного материала по теме я еще не встречал). Благо он в открытом доступе – ссылка.

Что такое барьеры памяти и зачем это все нужно?

Начнем с небольшого описания того, как устроена “условная” архитектура процессора. Почему условная? Потому что может отличаться в зависимости от конкретной реализации, но суть похожа. 

Читать далее

lvalues, rvalues, glvalues, prvalues, xvalues, помогите! -

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.9K

Случайно попалась довольно старая статья 2018 года с простым и понятным описанием категорий значений в C++. До неё всякие glvalues, prvalues, xvalues были малопонятными для меня.

cppreference.com просто перечисляет категории, и это не добавляет понимания, всё кажется чрезмерно излишним.

На stackoverflow.com есть 24 поста разной степени ценности, что только добавляет недоумения от сложности этой темы.

Читать далее

​Как создать собственное расширение компилятора C++

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели5.6K


Это перевод статьи, которая, к сожалению, у меня не доступна без слова из трех букв. А так как тема довольно интересная, то я решил совместить полезное с полезным и не только самому покопаться с примерами из публикации, но и сделать её перевод на Хабре. Вдруг еще кому данный материал будет интересен?

Создание пользовательского расширения компилятора C++ подразумевает понимание базовых механизмов работы компиляторов, изменение или расширение их функциональности и бесшовную интеграцию этих изменений в существующую инфраструктуру компилятора. Это руководство проведет вас через весь процесс, от понимания основ до внедрения и тестирования вашего пользовательского расширения. Целевая аудитория этого руководства — разработчики, которые уже знакомы с C++ и имеют базовое понимание концепций компилятора.

Читать дальше →

Scrum is dead или почему Kanban намного эффективнее Scrum

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели16K

Методы управления проектами в сфере разработки программного обеспечения, такие как Scrum и Kanban, стали основными инструментами для команд, работающих по методологии Agile. В этой статье я рассмотрю, какие преимущества даёт Kanban по сравнению со Scrum.

Читать далее

Загадка потерянного инкремента

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели3.5K

Всё вроде должно быть просто

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

Но по моему опыту, чрезвычайно простой машинный код — это, на самом деле, один из самых частых источников чего-то странного. Так как мы передаём CPU ограниченное количество крайне специфичных команд без остальной части когда, то упираемся в границы того, что проектировщики оборудования ожидали встретить в реальном мире. В этой ситуации вы с большей вероятностью сможете пощупать границы микроархитектуры, чем в более стандартном сценарии.

Читать далее

Бес фокусов: жизнь и безжалостные разоблачения иллюзиониста и скептика Джеймса Рэнди

Время на прочтение10 мин
Охват и читатели7.9K

«АЛИЛУУЙЙЙЯ, — орет проповедник на манер рок-звезды. — АЛИЛУУУЙЙЙЯ! ВЫ ЧУВСТВУЕТЕ ОГОНЬ В СВОИХ ВЕНАХ? ГОСПОДЬ, ВЫЖГИ ЕЕ РАК! ИСЦЕЛИ ЕГО ТРОМБОЗ! ДЬЯВОЛ, УБИРАЙСЯ ПРОЧЬ!» 

Аудитория заходится экстатическими криками, снова позволяя Питеру Попоффу преисполниться мессианского самодовольства. Он еще не знает, что совсем скоро его «дар» ждет унизительное разоблачение, а его самого — банкротство.

Телепроповедник Питер Попофф — всего лишь одна из многих «жертв» Джеймса Рэнди, великого комбинатора от мира научного скептицизма. Некогда успешный канадо-американский иллюзионист, в 1970-е Рэнди оставил карьеру, чтобы выводить на чистую воду всевозможных шарлатанов. Причем делать это не абы как — а со вкусом.

Например, с помощью клея лишить способностей сгибателя ложек силой разума Ури Геллера (привет, «Матрица»!). Или — внедрить в научную лабораторию двух фокусников, убедив ученых, что те — настоящие экстрасенсы. Или — слетать в Россию, чтобы в компании прекрасных дам Инги и Светланы погадать на Теда Банди. Или — пообещать $1 000 000 любому, кто докажет существование чудес.  Джеймс Рэнди не просто боролся с псевдонаукой и лжемедициной, а, как и положено фокуснику в завязке, не забывал, что он — шоумен.

В пятницу предлагаем вам отдохнуть от серьезных тем и почитать о самых нашумевших «скептических аферах» этого старика с клюкой, похожего не то на Мефистофеля, не то на гнома. А также о том, как Рэнди и его «паранормальные» оппоненты повлияли на современные науку и культуру.

Читать далее

VPN: последний выпуск. Завтра об этом писать нельзя

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели120K

Закрываем двери в свободный интернет: завтра, 30 ноября, вступает в силу закон №406-ФЗ запрещающий распространять информацию о способах обхода блокировок.

Кто знает о визитах на Pornhub?
- Какие именно данные сохраняют провайдеры о нас — с VPN и без.
- Что нового запретят обсуждать о VPN (и почему).
- VLESS — замена VPN, которую ещё можно упомянуть (пока).
- ТРИ способа как вычислить, что вы зашли через прокси или VPN.

Читайте, пока это ещё не заблокировали!

Читать далее

Как спрятать любые данные в PNG

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели36K

А вы уже прятали что-то внутри PNG? Базовый способ надежно спрятать что-то внутри картинки. И все на вашем любимом JavaScript!

Подробнее

Хитрости для программистов: пять команд Linux, с которыми ваша жизнь не будет прежней

Время на прочтение8 мин
Охват и читатели58K

Интерфейс командной строки — это альфа и омега для большинства технарей, особенно для разработчиков и сисадминов. Чем бы вы ни занимались — скриптами, конфигурацией серверов или автоматизацией задач, — команды Linux сэкономят вам часы рабочего времени. Но если только вы умеете грамотно с ними обращаться.

Поначалу Linux многих обескураживает, но как только вы разберётесь с интерфейсом командной строки (CLI), вы поймёте, что это лучший друг программиста. Простые, но эффективные команды Linux могут заметно улучшить любые рабочие процессы — от навигации по каталогам до манипуляции с файлами и даже исправления ошибок.

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

Читать далее

constexpr Game of Life

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели16K

В C++ уже больше 10 лет существует constexpr, который позволяет программисту ушло возложить часть вычислений на компилятор. В свое время это взорвало мне мозг, ведь компилятор может посчитать какие-то достаточно сложные вещи еще до запуска программы!

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

На этом моменте и зародился мой челлендж:

"Без рук" или "даже не думай запускать exe-файл"

Челлендж принят!

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность