Pull to refresh
0
0
Владимир @valdemar-const

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

Send message

Идиомы Pimpl и Fast Pimpl – указатель на реализацию

Reading time5 min
Views52K
Другие названия: Bridge, Compilation Firewall, Handle/Body
Допустим, нам необходимо написать кроссплатформенное сетевое приложение с использованием сокетов. Для этого нам необходим класс GeneralSocket (“Видимый класс”), который будет инкапсулировать в себе детали реализации конкретной платформы (“Скрываемый класс”). Часто требуется скрыть детали реализации от пользователей или других разработчиков:
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments3

Жизнь разработчика (в картинках)

Reading time1 min
Views66K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Total votes 884: ↑700 and ↓184+516
Comments132

Восемь возможностей C++17, которые должен применять каждый разработчик

Reading time9 min
Views134K

Мы поговорим о восьми удобных изменениях, которые влияют на ваш повседневный код. Четыре изменения касаются самого языка, а ещё четыре — его стандартной библиотеки.


Вам также может быть интересна статья Десять возможностей C++11, которые должен использовать каждый C++ разработчик
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments52

WPF, UWP, WinUI, MAUI, Windows App SDK

Reading time6 min
Views27K

Человека далёкого от клиентской разработки на Windows все эти термины определённо путают. И даже среди MS-сообщества регулярно возникают споры жив UWP или мёртв. Причем главный вопрос в этом споре - а что же такое UWP?

Вот уже года 3 Microsoft проводит "рефакторинг" в своём "королевстве".  Несколько устав видеть одни и те же споры в твиттере, и оставлять одни и те же комментарии на хабре, я решил расписать как же многочисленные UI-фреймворки MS соотносятся между собой. Кто из них больше мёртв. Возможно, кому-то это поможет в выборе технологии для будущего проекта.

Читать далее
Total votes 23: ↑22 and ↓1+30
Comments40

Шпаргалка с командами Docker

Reading time5 min
Views723K
Прим. перев.: Неделю назад Aymen El Amri, руководящий компанией eralabs и создавший обучающий курс «Безболезненный Docker», опубликовал свой Docker Cheat Sheet — шпаргалку по основным командам Docker. Git-репозиторий этого документа на GitHub уже набрал 1000+ stars и несколько сторонних контрибьюторов, что подтвердило его актуальность и пользу.



Представленные здесь команды описаны минимально (с акцентом на читаемость как есть) и включают в себя установку Docker, работу с реестрами и репозиториями, контейнерами, образами, сетью, Docker Swarm. Ниже представлен перевод шпаргалки в её состоянии на 2 сентября с дополнениями из комментариев ниже.
Читать дальше →
Total votes 46: ↑42 and ↓4+38
Comments15

Компиляция. 1: лексер

Reading time7 min
Views92K
Меня всегда завораживало таинство рождения программой программы. К сожалению, российские вузы уделяют мало внимания сей интереснейшей теме. Рассчитываю написать серию постов, в которых поэтапно создадим маленький работоспособный компилятор.

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

Далее в посте:

  1. С какой стати писать компиляторы?
  2. Общий план
  3. Анализ текста
  4. Практический пример
  5. Как это работает?
Читать дальше →
Total votes 93: ↑89 and ↓4+85
Comments45

Как найти своё место в программировании графики для игр

Reading time6 min
Views9.7K

Введение


«Графика стала слишком сложной».

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

Это сложно объяснить, но произносящие такие фразы в чём-то правы.

Когда я начал писать этот пост пару месяцев назад, он был совершенно другим, по сути, в нём аргументировалась необходимости создания высокоуровневой (как DX11, но лучше) API-обёртки для D3D12.

Но чем больше я писал, тем сильнее понимал, что проблема сложнее, чем кажется, а после публикации этого опроса в Twitter я убедился, что единого, подходящего всем решения для изучения графики больше не существует.

Кто-то может сказать «но и раньше его не было», и будет прав, но за последние годы разрыв увеличился. Давайте поговорим об этом.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments1

Популярная лингвистика. Книги про языки, которые мне нравятся

Reading time20 min
Views36K

cover


Наш телеграм канал


14.11.2021 — Upd 7. В японский язык добавил Путь бесхвостой птички Адиля Талышханова (Shinrin), в английский — The Mother Tongue — English And How It Got That Way Билла Брайсона (alexey-m-ukolov) и Приключения английского языка Мелвина Брэгга, Введение в прикладную лингвистику Анатолия Баранова к серьезной лингвистике (darkTux)


Upd 6. Добавил Атомы языка Марка Бейкера (9_pm) и The Language Instinct (Язык как инстинкт) Стивена Пинкера (alex518 и snvtr). Проставил у рекомендаций значок ?


Upd 5. Добавил раздел 'Лингвистические задачи'. Лингвистические задачи Зализняка, "Три склянки пополудни" Бердичевского и Пиперски (книга только вышла!) (middle), и еще одни "Лингвистические задачи" от коллектива авторов, включая Алпатова и Зализняка (AlexKarpan и DinaPy). Спасибо всем, кто рекомендует!


Upd 4. Добавил раздел 'Полевая лингвистика'. Не спи — кругом змеи! Дэниела Эверетта (9_pm), добавил "Слово о словах" Льва Успенского (Temmokan и saboteur_kiev)


Upd 3. Добавил раздел 'Серьезно о лингвистике'. Человек говорящий. Эволюция и язык Хомского и Бервика (alex518) и Значение и структура языка Чейфа Л. Уоллеса (darkTux)


Upd 2. Добавил "The Unfolding of Language" Гая Дойчера и "Our Magnificent Bastard Tongue" Джона Макуортера (etoropov)


Upd 1. Добавил раздел 'Грамотность и стиль'. "Слово живое и мертвое" Норы Галь (darkTux) и "The Sense of Style" Стивена Пинкера (9_pm)


Количество атомов в наблюдаемой Вселенной — где-то 10^80, число Дэвидов на картинке к статье — 2. Количество книг в этой подборке находится между этими ориентирами и будет пополняться (всегда рад рекомендациям). Что же это за книги?

Читать дальше →
Total votes 35: ↑34 and ↓1+51
Comments72

Как определить C и C++-программистов по коду, который они пишут

Reading time4 min
Views40K

Так уж случилось, что я пишу код для разных IoT-железок, связанных с электричеством, типа зарядных станций автомобилей. Поскольку аппаратных ресурсов, как правило, вполне достаточно, то основным фокусом является не экономия каждого байта и такта процессора, а понятный и надежный код. Поэтому в проекте разрабатывают под Embedded Linux и в качестве основного языка используют C++ в его современном варианте - C++17, активно поглядывая на фичи из стандарта 20-го года и новее.

Иногда запускаются новые проекты на той же платформе, с теми же процессами и с переиспользованием многих уже существующих компонентов, и тогда в эти проекты мы ищем программистов, с учетом вышесказанного - программистов на C++. В embedded, тем не менее, чистый C все еще очень популярен, и нередко собеседоваться на вакансию C++ Developer'а приходят именно сишники. Логика у человека простая: языки, на первый взгляд, довольно близкие, базовый синтаксис одинаков, про ООП кандидат что-то слышал, и значит, основная база уже есть и он сможет легко освоить C++ за 21 день в процессе работы, поэтому можно наплести про "с C++ тоже работал", начать писать на "Си с классами" и все получится.

Но нет, не получится.
Total votes 89: ↑65 and ↓24+62
Comments404

Python Testing с pytest. Плагины, ГЛАВА 5

Reading time21 min
Views25K

Вернуться Дальше


Достаточно мощный pytest прямо из коробки, становится еще лучше, когда вы добавляете в него микс из плагинов. Кодовая база pytest структурирована настройками и расширениями, и есть хуки, доступные для модификации и улучшений через плагины.


Читать дальше →
Total votes 26: ↑19 and ↓7+12
Comments0

Сегментация памяти (Схема памяти компьютера)

Reading time19 min
Views59K
Представляю, Вам, перевод статьи одного из разработчиков PHP, в том числе версии 7 и выше, сертифицированного инженера ZendFramework. В данный момент работает в SensioLabs и большую часть занимается низкоуровневыми вещами, в том числе программированием в С под Unix. Оригинал статьи здесь.

Ошибка Сегментации: (Компьютерная верстка памяти)


Несколько слов, о чем эта запись в блоге


Я планирую в будущем писать технические статьи о PHP, связанные с глубоким пониманием памяти. Мне нужно, чтобы мои читатели имели такие знания, которые им помогут понять некоторые концепции дальнейшего объяснения. Для того, чтобы ответить на этот вопрос, нам придется перемотать время назад в 1960-е года. Я собираюсь объяснить вам, как работает компьютер, а точнее, как происходит доступ к памяти в современном компьютере, а затем вы поймете, из-за чего происходит это странное сообщение об ошибке — Segmentation Fault.

То, что вы будете читать здесь, краткое изложение основ дизайна компьютерной архитектуры. Я не буду заходить слишком далеко, если это не нужно, и буду использовать хорошо известные формулировки, так что, кто работает с компьютером каждый день может понять такие важные понятия о том, как работает ПК. Существует много книг о компьютерной архитектуре. Если вы хотите углубиться дальше в этой теме, я предлагаю вам достать некоторые из них и начать читать. Кроме того, откройте исходный код ядра ОС и изучите его, будь то ядро Linux, или любое другое.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments7

Управление памятью: Взгляд изнутри

Reading time26 min
Views73K

Доброго времени суток!
Хочу представить вашему вниманию перевод статьи Джонатана Барлетта (Jonathan Bartlett), который является техническим директором в компании New Medio. Статья была опубликована 16 ноября 2004 года на сайте ibm.com и посвящена методам управления памятью. Хотя возраст статьи достаточно высок (по меркам IT), информация в ней является фундаментальной и описывает подходы к распределению памяти, их сильные и слабые стороны. Всё это сопровождается «самопальными» реализациями, для лучшего усвоения материала.

Аннотация от автора
Решения, компромиссы и реализации динамического распределения памяти
Получите представление о методах управления памятью, которые доступны Linux разработчикам. Данные методы не ограничиваются языком C, они также применяются и в других языках программирования. Эта статья даёт подробное описание как происходит управление памятью, на примерах ручного подхода (manually), полуавтоматического (semi-manually) с использованием подсчёта ссылок (referencing count) или пула (pooling) и автоматического при помощи сборщика мусора (garbage collection).

Читать далее...
Total votes 1: ↑1 and ↓0+1
Comments3

Что такое научное мышление?

Reading time3 min
Views21K

«Когда люди думали, что Земля плоская, они ошибались. Когда люди думали, что Земля была сферической, они ошибались. Но если вы считаете, что первые и вторые одинаково ошибались, то Вы ошибаетесь больше, чем они все вместе взятые» - Айзек Азимов.

Разобраться
Total votes 37: ↑31 and ↓6+37
Comments147

Сокеты в ОС Linux

Reading time5 min
Views91K

В данной статье будет рассмотрено понятие сокета в операционной системе Linux: основные структуры данных, как они работают и можно ли управлять состоянием сокета с помощью приложения. В качестве практики будут рассмотрены инструменты netcat и socat.

Читать далее
Total votes 27: ↑24 and ↓3+29
Comments15

Кватернионы, матрицы поворота и перепроецирование векторов между системами координат

Reading time5 min
Views14K
Пришлось это мне в последнее время поработать с задачами, где нужно было оперировать кватернионами и заниматься перепроецированием векторов в разные системы координат (это еще называется заменой базиса). Сначала по чужим формулам — причем с опечатками и даже, как выяснилось, с фактическими ошибками — а потом делать свои, по аналогии. И всё даже работало! Но сохранялся какой-то туман в понимании происходящего. А всё, как оказалось, из-за этих ошибок: их комбинация давала систему, в целом сохраняющую корректность, неверным путем таки достигался верный результат. Зато такая удача сильно мешала осознанию проблемы и прояснению природы феномена «верный итог при подозрительных формулах». При этом разбираться досконально времени все не было — работает же, числа выдает правильные, чего тебе еще надо, собака? Вперед, нужно больше золота кода! А вот сейчас пришел момент, когда я, похоже, окончательно всё понял, и хочу поделиться получившейся картинкой с окружающими. Вдруг кому пригодится, и себе памятка.

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

Стало быть, речь у нас пойдет в особенности о проекциях и поворотах.

image
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments6

Создаем ELF-файл с отладочной информацией (DWARF) вручную (для микроконтроллеров ARM)

Reading time27 min
Views30K

Введение


С недавнего времени я увлекся микроконтроллерами. Сначала AVR, затем ARM. Для программирования микроконтроллеров существует два основных варианта: ассемблер и С. Однако, я фанат языка программирования Форт и занялся портированием его на эти микроконтроллеры. Конечно, существуют и готовые решения, но ни в одном из них не было того, что я хотел: отладки с помощью gdb. И я задался целью заполнить этот пробел (пока только для ARM). В моем распоряжении была плата stm32vldiscovery с 32-битным процессором ARM Cortex-M3, 128кБ flash и 8 кБ RAM, поэтому я и начал с нее.
Писал я кросс-транслятор Форта конечно на Форте, и кода в статье не будет, так как этот язык считается экзотическим. Ограничусь достаточно подробными рекомендациями. Документации и примеров в сети по предмету почти нет, некоторые параметры подбирались мной путем проб и ошибок, некоторые — путем анализа выходных файлов компилятора gcc. Кроме того, я использовал только необходимый минимум отладочной информации, не касаясь, например, relocation-ов и множества других вещей. Тема очень обширна и, признаюсь, разобрался я с ней только процентов на 30, что оказалось для меня достаточным.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments3

Путешествие по Стеку. Часть 1

Reading time7 min
Views95K


В предыдущих материалах мы рассмотрели размещение программы в памяти – одну из центральных концепций, касающихся выполнения программ на компьютерах. Теперь обратимся к стеку вызовов – рабочей лошадке большинства языков программирования и виртуальных машин. Нас ожидает знакомство с удивительными вещами вроде функций-замыканий, переполнений буфера и рекурсии. Однако всему свое время – в начале нужно составить базовое представление о том, как работает стек.
Читать дальше →
Total votes 47: ↑44 and ↓3+41
Comments15

Структуры данных и алгоритмы, которыми я пользовался, работая в технологических компаниях

Reading time15 min
Views111K
Пользуетесь ли вы структурами данных и алгоритмами в повседневной работе? Я обратил внимание на то, что всё больше и больше людей считает алгоритмы чем-то таким, чем, без особой связи с реальностью, технические компании, лишь по собственной прихоти, интересуются на собеседованиях. Многие жалуются на то, что задачи на алгоритмы — это нечто из области теории, имеющей слабое отношение к настоящей работе. Такой взгляд на вещи, определённо, распространился после того, как Макс Хауэлл, автор Homebrew, опубликовал твит о том, что произошло с ним на собеседовании в Google:

Google: 90% наших инженеров пользуются программой, которую вы написали (Homebrew), но вы не можете инвертировать бинарное дерево на доске, поэтому — прощайте.

Хотя и у меня никогда не возникало нужды в инверсии бинарного дерева, я сталкивался с примерами реального использования структур данных и алгоритмов в повседневной работе, когда трудился в Skype/Microsoft, Skyscanner и Uber. Сюда входило написание кода и принятие решений, основанное на особенностях структур данных и алгоритмов. Но соответствующие знания я, по большей части, использовал для того чтобы понять то, как созданы некие системы, и то, почему они созданы именно так. Знание соответствующих концепций упрощает понимание архитектуры и реализации систем, в которых эти концепции используются.



В эту статью я включил рассказы о ситуациях, в которых структуры данных, вроде деревьев и графов, а так же различные алгоритмы, были использованы в реальных проектах. Здесь я надеюсь показать читателю то, что базовые знания структур данных и алгоритмов — это не бесполезная теория, нужная только для собеседований, а что-то такое, что, весьма вероятно, по-настоящему понадобится тому, кто работает в быстрорастущих инновационных технологических компаниях.
Читать дальше →
Total votes 54: ↑52 and ↓2+67
Comments53

«Просто похудеть» — непросто

Reading time15 min
Views127K

Интернет наводнен статьями о том, как похудеть "просто съедая меньше чем потратил" и отчетами об успешном опыте некоторых везунчиков. Чего нету (ну или очень мало) в интернете — это отчетов о том, как миллионы людей безрезультатно пытаются просто "съесть меньше", садясь на все новомодные диеты и неизменно возвращаясь к тому, с чего начинали, а иногда и скатываясь по шкале индекса массы тела в еще более красную зону.


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

Хакнуть свой мозг
Total votes 157: ↑135 and ↓22+166
Comments638
1
23 ...

Information

Rating
Does not participate
Location
Ступино, Москва и Московская обл., Россия
Date of birth
Registered
Activity