Как стать автором
Обновить
1
0

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

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

Превозмогая трудности: Gravity Defied на sed

Время на прочтение5 мин
Количество просмотров9.3K
image Итак, эта статья посвящается тем, кто любит решать нестандартные задачи на не предназначенных для этого инструментах. Здесь я опишу основные проблемы, с которыми столкнулся во время создания аналога игры Gravity defied с использованием потокового текстового редактора (sed).

Далее предполагается, что читатель хотя бы немного знаком с синтаксисом sed'ом и и написанием скриптов под bash.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии8

Организация многозадачности в ядре ОС

Время на прочтение22 мин
Количество просмотров79K
Волею судеб мне довелось разбираться с организацией многозадачности, точнее псевдо-многозадачности, поскольку задачи делят время на одном ядре процессора. Я уже несколько раз встречала на хабре статьи по данной теме, и мне показалось, что данная тема сообществу интересна, поэтому я позволю себе внести свою скромную лепту в освещение данного вопроса.
Сначала я попытаюсь рассказать о типах многозадачности (кооперативной и вытесняющей). Затем перейду к принципам планирования для вытесняющей многозадачности. Рассказ рассчитан скорее на начинающего читателя, который хочет разобраться, как работает многозадачность на уровне ядра ОС. Но поскольку все будет сопровождаться примерами, которые можно скомпилировать, запустить, и с которыми при желании можно поиграться, то, возможно, статья заинтересует и тех, кто уже знаком с теорией, но никогда не пробовал планировщик “на вкус”. Кому лень читать, может сразу перейти к изучению кода, поскольку код примеров будет взят из нашего проекта.
Ну, и многопоточные котики для привлечения внимания.

Читать дальше →
Всего голосов 92: ↑92 и ↓0+92
Комментарии19

Выбор структур данных для самописного текстового редактора

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

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

Ресурсы


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

  • Build Your Own Text Editor — наверно, самый фундаментальный пост о создании текстового редактора с нуля, который я видел. Это превосходный туториал на случай, если вы хотите начать писать собственный текстовый редактор. Стоит заметить, что в редакторе из этого туториала в качестве внутренней структуры для текста используется, по сути, вектор строк.
  • Text Editor: Data Structures — отличный обзор множества структур данных, которые можно использовать при реализации текстового редактора. (Спойлер: как минимум одна из них будет рассмотрена в моём посте)
  • Плейлист Ded (Text Editor) на YouTube — это потрясающая серия, в которой @tscoding фиксирует процесс создания с нуля текстового редактора. Эти видео стали для меня источником вдохновения.

Зачем?


Если в сети есть так много хороших ресурсов о создании собственного текстового редактора (не говоря уже о том, что уже существует множество феноменальных текстовых редакторов), то зачем я это пишу? На то есть несколько причин:

  1. Я хотел заняться проектом, непохожим ни на один свой прошлый.
  2. Я хотел создать инструмент, которым смогу пользоваться.
  3. Мне всегда хотелось глубже разобраться с созданием собственных структур данных.
Читать дальше →
Всего голосов 47: ↑46 и ↓1+58
Комментарии18

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

Время на прочтение4 мин
Количество просмотров24K

Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java. И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.

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

Читать далее
Всего голосов 72: ↑68 и ↓4+79
Комментарии22

Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1

Время на прочтение11 мин
Количество просмотров16K

Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.

Под катом мы погрузимся в мир неопределённого поведения в C++ и рассмотрим некоторые примеры ситуаций, в которых оно может возникать.

P.S.: Часть приведённых в статье примеров вдохновлены материалами, которые можно посмотреть в разделе «Полезные ссылки».

Читать далее
Всего голосов 42: ↑40 и ↓2+44
Комментарии44

Как я случайно обошёл блокировку Google Pixel и получил за это $70 тысяч

Время на прочтение8 мин
Количество просмотров86K

Я обнаружил уязвимость, похоже, затронувшую все телефоны Google Pixel: вы можете дать мне любое заблокированное устройство Pixel, и я верну его вам разблокированным. Баг устранили в обновлении безопасности 5 ноября 2022 года.

Проблема позволяла атакующему с физическим доступом к телефону обойти меры защиты экрана блокировки (отпечаток пальца, PIN и так далее), получив полный доступ к устройству пользователя. Уязвимость зафиксирована как CVE-2022-20465; она может затронуть и устройства Android других производителей. Мои рекомендации по патчу и сырой баг-репорт, отправленные Google, можно найти здесь: feed.bugs.xdavidhu.me.
Читать дальше →
Всего голосов 150: ↑147 и ↓3+186
Комментарии163

Хабраюзер, помогай, тут еще истории карьерных тупиков

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров18K

Мне часто не нравятся продолжения сериалов, я говорю «они уже всё сказали в первом сезоне» или просто «фу, скатились». Но написать вторую часть статьи, в которой мы вместе разбираем карьерные провалы, попробую.

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

Три истории опубликованы здесь. Забегайте, читайте и делитесь мнением в комментариях (или просто читайте комментарии — там интересно). Пять новых историй — в этой статье.

Читать далее
Всего голосов 16: ↑14 и ↓2+23
Комментарии16

Хабраюзер, помоги выйти из карьерного тупика

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров39K

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

За месяц мы получили около 50 разных историй: от потери работы и неудачных проектов до трудностей руководителей и корпоративного абьюза. Единственное, что объединяло истории всех авторов, — это разочарование от того, что всё пошло не так, как задумывалось в карьере. 

Собранные истории мы будем публиковать здесь без имен. Надеемся, что ребята, которые проходили через подобные трудности, увидят в этих историях себя, поделятся крутыми и адекватными рекомендациями, и покажут, что неудачи — это нормально, и что карьера — не столько история успеха, сколько история провалов.

Читать далее
Всего голосов 29: ↑24 и ↓5+41
Комментарии169

Что такое TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR (итд)

Время на прочтение12 мин
Количество просмотров343K


Многие C++ программисты, пишущие под Windows часто путаются над этими странными идентификаторами как TCHAR, LPCTSTR. В этой статье я попытаюсь наилучшим способом расставить все точки над И. И рассеять туман сомнений.

В свое время я потратил много времени копаясь в исходниках и не понимал что значат эти загадочные TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR.
Недавно нашел очень грамотную статью и представляю ее качественный перевод.
Статья рекомендуется тем кто бессонными ночами копошиться в кодах С++.

Вам интересно ??
Прошу под кат!!!
Читать дальше →
Всего голосов 91: ↑64 и ↓27+37
Комментарии85

Git на практике

Время на прочтение9 мин
Количество просмотров167K
Существует замечательная книга Pro Git, в которой подробно описаны все команды и возможности гита. Но после ее прочтения у многих остается непонимание того, как это все использовать на практике. В частности, у программистов разного уровня часто возникают вопросы о том, как работать с ветками в Git, когда их заводить и как мержить между собой. Порой мне попадались очень «оригинальные» и неоправданно усложненные схемы работы с гитом. В то время как в сообществе программистов уже сформировалась схема работы с гитом и ветками в нем. В этой статье я хочу дать краткий обзор основных моментов при работе с Git, и описать «классическую» схему работы с ветками. Многое из того что описано в этой статье будет справедливо и для других систем управления версиями.
Читать дальше →
Всего голосов 21: ↑8 и ↓13-5
Комментарии50

Как за полчаса написать простую читалку книг FB2 для десктопа на Java

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров19K

Недавно мне для личных целей понадобилось написать читалку FB2. И сразу я столкнулась с тем, что информации по теме минимум. Палочка-выручалочка под названием ChatGPT выдал что-то невразумительное в ответ на довольно подробный запрос. К тому же, никаких готовых библиотек, чтобы по-быстренькому наваять ридер, я также не смогла обнаружить. Хотя искала долго и упорно, как Чубакка расческу.

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

А раз все так просто, зачем я пишу эту статью? Для этого у меня есть две причины. Во-первых, это моя первая проба пера на Хабре. А во-вторых, возможно, это сэкономит кучу времени другому такому же новичку, как я. Ну, или пригодится какому-нибудь студенту, который пишет реферат.

Читать далее
Всего голосов 18: ↑13 и ↓5+13
Комментарии69

Царица наук: математика, беспощадная ты мука

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

Дайджест про то, как и зачем учить математику, 
если ты взрослый

С самых юных лет было очевидно, что я — естественнонаучник: ребёнок, выросший в семье инженеров и с неподдельным интересом обожающий всё живое, зелёное и биологическое. Дальше началось смешное: во дворе была филологическая гимназия, а чего далеко ходить... В свою очередь, гимназии нужны были олимпиадники и вот она, математика и мама с грозными задачниками, ибо в школе нас просто не учили (была вообще импортная адаптивная программа с усеченной геометрией). Для школы и вуза стараний родителей хватило, для олимпиад нет: физика шла на ура, а математика с приличным скрипом. Как я сейчас говорю, «не щёлкало». Сейчас мне 37 лет и я нет‑нет, да возвращаюсь к математике, хотя она мне точно не нужна ни в работе, ни в увлечении.

Читать далее
Всего голосов 49: ↑45 и ↓4+63
Комментарии163

Как в панельном доме заменить старый конвектор на новый радиатор, чтобы не пожалеть о полученном результате?

Время на прочтение28 мин
Количество просмотров62K

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

В этом видосике сошлись в смертельной схватке два «блогера‑сантехника», каждый из которых считал, что только он прав.

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

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

Особый интерес к этой теме у меня возник потому, что я сам лично как‑то собрался поменять такую старую облезлую «гармошку» (см.рис.1) на новый белый и красивы биметаллический радиатор (см.рис.2).

Читать далее
Всего голосов 147: ↑142 и ↓5+179
Комментарии304

10 самых важных вех в развитии ИИ на сегодняшний день

Время на прочтение8 мин
Количество просмотров32K

На протяжении своей истории, от первых рассказов Азимова про роботов до AlphaGo, у ИИ были взлёты и падения. Но на самом деле его история только начинается.




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

1. Айзек Азимов впервые упомянул "Три закона робототехники" (1942)


Рассказ Азимова "Хоровод" отмечает первое появление в историях этого знаменитого фантаста «трёх законов робототехники»:
Читать дальше →
Всего голосов 20: ↑15 и ↓5+10
Комментарии21

Почему я всё ещё люблю C, но при этом терпеть не могу C++?

Время на прочтение10 мин
Количество просмотров53K
Мне на удивление часто приходится говорить о том, почему мне всё ещё нравится язык C, и о том, почему я плохо отношусь к C++. Поэтому я решил, что мне стоит об этом написать, а не снова и снова повторять одно и то же.



Как это обычно бывает у C-программистов, язык C не был ни моим первым языком, ни языком, после которого я уже не изучал ничего другого. Но мне всё ещё нравится этот язык, и когда мне нужно писать программы — я выбираю именно его. Правда, в то же время, я стараюсь быть в курсе того, что происходит в мире современных (и не очень) языков программирования. Я слежу за тенденциями в этой сфере и пишу собственный хобби-проект, связанный с мультимедийными технологиями, на Rust. Почему же я до сих пор не поменял C на что-то более современное? И при чём тут C++?
Читать дальше →
Всего голосов 87: ↑67 и ↓20+74
Комментарии508

Ещё раз о неопределённом поведении или «почему не стоит забивать гвозди бензопилой»

Время на прочтение8 мин
Количество просмотров38K
Про неопределённое поведение писали не раз. Приводились цитаты из стандартов, объяснения их интерпретации, разного рода поучительные примеры, но, похоже, все люди, пытавшиеся об этом писать пропускали важный пункт: по-моему никто внятно так и не удосужился объяснить — откуда это понятие в языке, собственно, появилось, и, главное, кому оно адресовано.

Хотя на самом-то деле, если вспомнить историю Си, всё достаточно очевидно и, главное, логично. А все жалобы людей, «обжёгшихся» на неопределённом поведении для людей не забывших что такое Си и зачем он вообще существует звучат примерно как: «я тут гвозди бензопилой забивал… забивал и забивал, всё было хорошо, а потом я дёрнул за ручку и у неё коготки как забегают, задёргаются, мне руку оттяпало и полноги… ну кто так строит?».

Люди, которые знают что такое бензопила пытаются, конечно, объяснить, что за если за эту рукоятку дёрнуть, то так, в общем-то, и должно быть, но люди, считающие, что у них у руках такой себе молоток говорят «мимо» них, и, в результате, все остаются при своих.

Так какой же важный секрет люди упускают из виду?
Всего голосов 83: ↑76 и ↓7+69
Комментарии206

Облачный гейминг в браузере

Время на прочтение5 мин
Количество просмотров5.2K

В облако сегодня перебирается всё больше категорий приложений, в том числе игры. У VK Play Cloud уже есть свои нативные приложения под Windows, Mac, Android и Android TV, которые позволяют играть в облаке в современные требовательные игры даже на слабых компьютерах. А теперь мы добавили ещё и веб-клиент — запускать можно прямо в браузере. 

Читать далее
Всего голосов 20: ↑15 и ↓5+19
Комментарии0

Как писать конспекты на компьютере быстрее, чем от руки, при помощи VS Code

Время на прочтение5 мин
Количество просмотров51K

Привет всем!

В этой статье говорится о том, как я конспектирую на компьютере, а точнее описываются способы ускорения набора LaTeX-овского текста.

Читать далее
Всего голосов 42: ↑42 и ↓0+42
Комментарии50

Вы НЕ сошли с ума (о режиме сна в Windows)

Время на прочтение8 мин
Количество просмотров139K

Вы сталкивались с тем, что ноутбук случайно включается, хотя вы уверены, что отправляли его в сон?

Бывало, что батарея оказывалась пустой, хотя вы точно-точно помните, как убирали в сумку заряженный на 100% ноутбук?

Тогда вам сюда:

Мне сюда
Всего голосов 214: ↑204 и ↓10+238
Комментарии508

СТРАННЫЕ Люди. Как западная цивилизация вырвалась вперед?

Время на прочтение19 мин
Количество просмотров91K

По нашей планете распространяется необычная и СТРАННАЯ человеческая психика - Western, Educated, Industrialized, Rich and Democratic (WEIRD) - западный, образованный, индустриальный, богатый и демократичный.

Читать далее
Всего голосов 161: ↑150 и ↓11+182
Комментарии611

Информация

В рейтинге
4 937-й
Зарегистрирован
Активность