Pull to refresh
42
0

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

Send message

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

Reading time8 min
Views41K

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

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

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

Читать далее
Total votes 253: ↑224 and ↓29+195
Comments183

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

Reading time5 min
Views16K

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

Читать далее
Total votes 23: ↑19 and ↓4+15
Comments10

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

Reading time8 min
Views5.2K

image


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

Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments29

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

Reading time47 min
Views5.6K

Введение


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

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

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

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

Reading time11 min
Views66K

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

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

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

Reading time5 min
Views75K


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

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

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

Reading time6 min
Views3.1K

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

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

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments1

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

Reading time9 min
Views97K

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

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

Читать далее
Total votes 181: ↑168 and ↓13+155
Comments415

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

Reading time12 min
Views26K

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


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



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


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

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


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

Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments128

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

Reading time13 min
Views17K

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

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

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

Начнем?
Total votes 31: ↑30 and ↓1+29
Comments36

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

Reading time8 min
Views15K

Введение


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

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

Reading time27 min
Views23K

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

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

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

Создать!
Total votes 91: ↑89 and ↓2+87
Comments43

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

Reading time11 min
Views71K
image
Это не призыв к действию. Не думайте о жареной картошке в сметане с грибами и прослойками подкопчённого бекона

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

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

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

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

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

Reading time27 min
Views46K


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


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

Читать дальше →
Total votes 129: ↑122 and ↓7+115
Comments114

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

Reading time14 min
Views30K

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

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

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

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

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

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

Элементы

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

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

Читать далее
Total votes 35: ↑35 and ↓0+35
Comments23

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

Reading time9 min
Views8.6K

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

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

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

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

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

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

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

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

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

Читать далее
Total votes 26: ↑20 and ↓6+14
Comments152

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

Reading time7 min
Views59K

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

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

Читать далее
Total votes 165: ↑157 and ↓8+149
Comments455

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

Reading time5 min
Views19K
image

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

А


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

B


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

C


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

D


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

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

Reading time2 min
Views34K
image

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

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

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

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

Information

Rating
Does not participate
Registered
Activity