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

Типострадалец

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

Кровь и бетон. Как не надо писать

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

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

К чёрту. Варианты закончились. Чтобы не терять времени, перейдем к оскорблениям.

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

Читать далее
Всего голосов 253: ↑224 и ↓29+195
Комментарии183

Все айтишники делают это, или почему у вас скорее всего отваливается спина

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

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

Читать далее
Всего голосов 69: ↑53 и ↓16+37
Комментарии98

20+ консольных команд, которые изменят ваше представление об отладке

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

Вам, вероятно, уже известен метод console.log и несколько других, но на деле их существует более 20 видов. Каждый из них по-своему полезен, и используя их по назначению, вы заметно повысите качество отладки.

Читать далее
Всего голосов 23: ↑19 и ↓4+15
Комментарии10

Nanopass или как я писал компилятор этой осенью

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

image


Сразу прошу прощения за несколько надоевший всем стиль «lytdybr», но уж очень хочется поделиться крайне приятным опытом и рассказать о по-своему замечательном компиляторном курсе. И это ещё хорошо, что я пишу сейчас, когда эмоции подугасли, а не когда я только закончил вторую главу курса и от эйфории чувствовал себя как «хомячок, которого капля никотина разрывает на части»! Сразу предупреждаю, наверняка для кого-то эта заметка — «ребёнок познаёт мир», тех прошу сразу закрыть вкладку и не судить строго. Здесь и далее, всегда и всюду, во всех четырёх сферах прошу учитывать, что я не только не создаю компиляторы, но даже и не обучаю этому и не пишу методички! ;-)

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

Как простой баг повреждения памяти ядра Linux может привести к полной компрометации системы

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

Введение


В этом посте описывается простой в реализации баг блокировки ядра Linux и то, как я использовал его против ядра Debian Buster 4.19.0-13-amd64. В посте рассматриваются варианты устранения бага, препятствующие или усложняющие использование подобных проблем злоумышленниками.

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

Многие описанные здесь отдельные техники эксплойтов и варианты их устранения не новы. Однако я считаю, что стоит объединить их в одну статью, чтобы показать, как различные способы устранения взаимодействуют друг с другом на примере достаточно стандартного эксплойта с использованием освобождённой памяти.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии1

Как оптимизировали экономику СССР и что из этого вышло

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

Я работаю специалистом по обработке и анализу данных (data scientist), поэтому большая часть моей работы включает в себя подбор оптимизируемых метрик и размышления о том, как выполнять процессы с максимальной эффективностью. Недавно я обнаружил совершенно удивительную книгу об экономических проблемах в СССР и о коллективе экономистов и компьютерных учёных, стремившихся решить их на основе данных. Книга называется Red Plenty. На самом деле она написана в жанре романа, что странно, однако представляет собой точную экономическую историю СССР. Автор активно заимствует информацию из книги 1973 года под названием Planning Problems in the USSR, которую я тоже приобрёл. При чтении этих книг я не мог не обратить внимания на параллели с планированием в любой современной организации. Факт, который покажется сегодня знакомым каждому data scientist: во второй книге есть цитата исследователя, жалующегося на то, что 90% своего времени он потратил на очистку данных, и только 10% — на само моделирование!

Кроме проведения интересных параллелей с современными data science и методами исследований технологических операций, эти книги помогли мне многое понять об интересных аспектах, о которых ранее я почти ничего не знал, например, о линейном программировании, ценовом равновесии и истории Советского Союза. В этом посте я расскажу о том, что узнал.
Читать дальше →
Всего голосов 141: ↑136 и ↓5+131
Комментарии2043

Сможете ли вы решить задачки со вступительных экзаменов в Оксфордский университет?

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


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

Все три задачки в последние годы задавались во время собеседований при поступлении в Оксфордский университет на философский факультет. В каждой из задач есть первоначальный вопрос, и почти все кандидаты правильно ответили на него. Далее в тексте идут дополнительные вопросы, с которыми справились только лучшие из лучших.
Читать дальше →
Всего голосов 86: ↑83 и ↓3+80
Комментарии93

Недельный геймдев: #40 — 17 октября, 2021

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

Из новостей на этой неделе: Valve запретила в Steam игры на основе блокчейна, поддержка AMD скоро появится в Cycles-X для Blender 3.0, а в Blender 3.1 будет нативная поддержка Metal в Cycles.

Из интересностей: видео с GDC про озвучку Hades, Inmost и секреты её звучания, King’s Bounty II возвращается к своим 30-летним корням.

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

Заблуждения об английском, которым нас научила школа

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

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

Результаты этих занятий печальны. После сотен академических часов понимают и говорят ученики с трудом, но зато прочно запоминают устаревшие понятия, формализмы и локальные британские обороты речи. Этот багаж остается с ними надолго (или лучше сказать “с нами”, поскольку автор статьи после школы был точно в такой же ситуации). Избавиться от него обычно помогает только общение с носителями языка, которые внезапно не понимают, на каком языке им что-то пытается сказать этот странный русский. Или прочтение подобных статей, заботливо сотканных мозолистыми руками случайных авторов из интернета. То есть, основного источника знаний любого уважающего себя современного человека.

Читать далее
Всего голосов 181: ↑168 и ↓13+155
Комментарии415

Введение в программирование: заготовка игры-платформера на SDL в 300 строк C++

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

Этот текст предназначен для тех, кто только осваивает программирование. Я читаю лекции по C++ на первом курсе местного университета, и в качестве практикума предлагаю запрограммировать любую игру (не выношу проектов типа "софт бронирования книг в местной библиотеке"). Соответственно, чтобы помочь начинающим, я сделал некоторое количество заготовок, с которых можно стартовать свой проект. Например, заготовку олдскульного 3д шутера в 486 строк C++ я уже описывал, а вот тут можно посмотреть, что из неё сделали первокурсники.


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



На данный момент проект содержит менее трёхсот строчек цпп:


ssloy@khronos:~/sdl2-demo/src$ cat *.cpp *.h | wc -l
296

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


Итак, поехали!

Читать дальше →
Всего голосов 58: ↑57 и ↓1+56
Комментарии128

Тестовое задание — крышка гроба или ступенька вверх по карьерной лестнице?

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

Привет! Меня зовут Евгений Судак, и я два с половиной года руководил отделом геймдизайна в Pixonic. Сегодня я хотел бы поговорить о тестовых заданиях.

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

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

Начнем?
Всего голосов 31: ↑30 и ↓1+29
Комментарии36

Рейкастинг в игровых 2D-движках

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

Введение


На мой взгляд, рейкастинг — великолепная концепция, понять которую не так сложно, но качественных ресурсов по ней очень мало. Я расскажу о математике, лежащей в её основе, чтобы вы при желании с лёгкостью могли реализовать её в своих будущих проектах. Постараюсь сделать объяснение как можно более понятным, рассказать о всех тонкостях и проблемах, с которыми вы можете столкнуться. Также мы поговорим об оптимизации и о том, как сильно вам могут помочь пространственные хэш-карты. Ещё я напишу простые интерактивные примеры, с которыми вы сможете поэкспериментировать. Учтите, что демо написаны максимально простым образом, не ожидайте увидеть в них код уровня энтерпрайза — мы изучаем саму концепцию, а не реализацию.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии0

Создаем новое ключевое слово в C++

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

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

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

В этой статье мы в учебных целях напишем для C++ поддержку нового ключевого слова defer, которое будет работать во многом аналогично такому в языках Go и Swift. Это будет сделано через правку исходного кода Clang.

Создать!
Всего голосов 91: ↑89 и ↓2+87
Комментарии43

Что нужно есть, чтобы коже стало плохо

Время на прочтение11 мин
Количество просмотров71K
image
Это не призыв к действию. Не думайте о жареной картошке в сметане с грибами и прослойками подкопчённого бекона

Иногда хочется сожрать какую-нибудь гадость: беляш там, сосиску в тесте или пончик в солидоле на вокзале. На крайний случай тройной жирбургер с двойной колой без сахара. Это совершенно нормально и понятно.

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

  • Прыщи от сладкого не из-за того, что вы потеете сахаром.
  • Что такое БАДы по изначальной задумке (до прибежавших маркетологов).
  • Коллаген принимать перорально неэффективно.
  • Есть витамины просто так — довольно плохая идея.
  • Синтетические витамины хуже всасываются, а кальций так вообще лучше только из скорлупы получать.
  • Модная непереносимость глютена.
  • Можно ли пить молоко, если вам уже исполнилось 18 лет.

Коротко — жалко, что этого нет в школьных учебниках биологии.
Читать дальше →
Всего голосов 148: ↑142 и ↓6+136
Комментарии275

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

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


Всем привет, это PsyHaSTe и сегодня я хотел бы рассказать о том, куда меня занесла нелегкая в процессе оптимизации и рефакторинга кода решения тестового задания из статьи товарища novar (кто пропустил — рекомендую ознакомиться). Какие проблемы были у этого решения? Почему все-таки человеку отказали в работе? Что можно с этим сделать? Ответы на эти и многие другие вопросы оказались слишком длинными для комментария и вылились в статью с подробным разбором, примерами и альтернативной реализацией задания.


Если вам интересно кто в здравом уме мог для выполнения поставленной задачи написать код сочетающий монады с goto, а также одновременно сократил объем кода и увеличил его производительность, то добро пожаловать под кат. И, конечно же, самое вкусное, связанное с оптимизациями на базе работы JIT — в конце. Итоговую версию решения тестового можно посмотреть на гитхабе по ссылке.

Читать дальше →
Всего голосов 129: ↑122 и ↓7+115
Комментарии114

Что можно положить в тег <head>

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

Рекомендуемый минимум

Ниже приведены основные элементы для любого веб-документа (веб-сайта/приложения):

meta charset — определяет кодировку веб-сайта, стандартом является utf-8.

meta name="viewport" — настройки viewport, связанные с мобильной отзывчивостью

width=device-width — физическая ширина устройства (отлично подходит для мобильных устройств!)

initial-scale=1 — начальный масштаб, 1 означает отсутствие масштабирования

Элементы

Допустимые элементы <head> включают meta, link, title, style, script, noscript и base.

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

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

Идеальная избирательная система

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

На днях мне пришло сообщение от портала Госуслуги, с предложением поучаствовать в тестировании дистанционного электронного голосования (ДЭГ). Стало интересно, начал гуглить и поисковик сразу же выдал ссылку на хабровскую статью «Обзор системы дистанционного электронного голосования ЦИК РФ». Ознакомился…и…после прочтения, испытал противоречивые чувства, которые вылились в эту статью, созданную на базе идеи, описанной мной еще в 2018 году на сайте change.org.

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

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

власть имущими, не желающими уступать дорогу другим

теми, кто власти пока не имеет, но желает её получить

теми, кто хорошо устроился при действующей власти и ничего менять не хочет.

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

И главная проблема любой избирательной системы – представители первой группы, потому что у власть имущих есть доступ к данным всех жителей страны, которые могут быть использованы для формирования потока фейковых бюллетеней. Есть огромный админ ресурс. Есть доступ к бюджетным деньгам. Под рукой имеется силовой аппарат и карманная судебная система.

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

Читать далее
Всего голосов 26: ↑20 и ↓6+14
Комментарии152

Когда маркетологи заигрались и потеряли человека

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

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

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

Читать далее
Всего голосов 165: ↑157 и ↓8+149
Комментарии455

Языки программирования с однобуквенным названием

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

Список языков программирования, названных одной буквой.

А


Язык программирования A+ является потомком APL, как и другие языки на этой странице, потому что сообщество APL любит однобуквенные имена. Артур Уитни (создатель многих диалектов APL) создал A, затем Морган Стенли расширил его до A+.

B


Язык программирования B является предшественником C и в наши дни больше не используется.

C


Нет необходимости представлять C. Если эта статья вас интересует, то вы знаете C. Мы также можем считать C++ и C #, поскольку разрешены небуквенные и нецифровые символы.

D


D — это улучшенный C++. В настоящее время это мой самый любимый язык, поэтому все будет очень предвзято. Если у вас есть возможность выбирать языки, считайте это рекомендацией проверить D!
Читать дальше →
Всего голосов 76: ↑69 и ↓7+62
Комментарии44

Оптические иллюзии: Стрелочка, которая всегда права

Время на прочтение2 мин
Количество просмотров34K
image

Kokichi Sugihara — японский математик и художник, мастер по созданию трехмерных оптических иллюзий. Постоянный победитель во всемирном конкурсе оптических иллюзий: первое место — в 2010, 2013, 2018 и 2020 году, второе место — в 2015 и 2016 году.

Его интерес к иллюзиям проистекает из его исследований в 1980-х годах по автоматизации анализа рисования перспективы, которые он опубликовал в книге MIT Press 1986 года «Machine Interpretation of Line Drawings». Когда он попросил свою компьютерную систему интерпретировать невозможные объекты, такие как в картинах Эшера, он обнаружил, что они могут быть интерпретированы как рисунки реальных объектов неожиданной формы.

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

Под катом — самые интересные работы Kokichi Sugihara, его лекции и файлы для распечатывания на 3д-принтере невозможных объектов.
Всего голосов 63: ↑61 и ↓2+59
Комментарии27
1
23 ...

Информация

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