Криминальное чтиво Андрей Аксёнов, Sphinx v.2.0, HighLoad, Мск, 2015.

Презентация:



Advertisements
Похожие презентации
Учитель информатики Кюкяйской СОШ,Сунтарского улуса, Республики Саха Федоров Александр Михайлович,2010 год.
Advertisements

Система подготовки презентаций. Где используются презентации Доклады (научные, учебные и т.п.) Доклады (научные, учебные и т.п.) Рекламные выступления.
На основании курса Тестирования программных продуктов Терехов А. А. Слайд 1 Анализ стандартных методов тестирования. Применимость к разработке игр. Шишенин.
УЧИМСЯ РАССУЖДАТЬ... ЗАЧЕМ? О ЧЁМ? КАК?. Сегодня мы поговорим о таком типе речи, как рассуждение. Есть даже в детских книгах герои, любящие порассуждать.
Р АЗМЫШЛЕНИЕ. А КАК ВСЁ НАЧИНАЛОСЬ … Где начинается любовь, там логика уходит в подполье. Иногда бывает такой парадокс: нередко любовь и дружба находят.
Наши ошибки в воспитании детей Родительское собрание в 5 классе Разработал классный руководитель: Иост Лариса Ивановна.
Наши ошибки в воспитании детей Общешкольное родительское собрание МКОУ «Усть-Волчихинская СШ»
VDas.livejournal.com © 2009 presents. Ну, во-первых, не будем заморачиваться умными словами «новые тэги html5» и прочими Во-вторых, рассмотрим пару самых.
Инструкция добавления материалов на Современный Учительский портал © Соловьев П.Е www.easyen.ru.
Основные виды ресурсов и возможности их разделения.
Поделитесь проблемой! Главная Краткая история создания рубрики: Как-то разговаривая с классным наставником мы обсуждали так сказать проблемы нашей подростковой.
Что клиенты просят доделать после партнеров Евгений Потапов ITSumma.
Машинная команда Энциклопедия учителя информатики Газета «Первое сентября»
Рефакторинг Забота о коде Андрей Скляревский.NET Developer, Murano Software
Какие бывают компьютеры © Хацкевич Александр Георгиевич 2011.
Жила-была ТОЧКА. Она была любопытная и хотела всё знать. - Как же я могу всё узнать, если всегда буду жить на одном месте?! - Отправлюсь я путешествовать,
Горская Серафима Александровна МОУ СОШ 4 города Приозерска Ленинградской области Библиотечный репетитор.
В один прекрасный день я вдруг задумался о том как я появился на свет и стал тем кто я есть …..
Никого нельзя ничему научить, но всему можно научиться народная мудрость.
Креатив и оптимизация: друзья или враги? Пьеса в 4-х действиях с прологом и эпилогом.
Транксрипт:

Криминальное чтиво Андрей Аксёнов, Sphinx v.2.0, HighLoad, Мск, 2015

Зачем вообще доклад Я уже говорил всякие общие слова как именно хорошо бы уметь Хочу сказати всякие более конкретные что именно надо бы изучати (мега замах) ВУЗы типично канают слабо, поэтому первый драфт учебного плана жахнем тут Плюс, возможно, собеседования!!! Тот раз в пять лет, где сложный алгоритм!!! 4/38

Disclaimers Слов много, времени мало, продолжати трындеть можно на afterparty в будке! Некоторые будут нехорошие, дети до 16 и ханжи за 30, покиньте зал Обычно я стараюсь хоть одной вещи да научить, но сегодня – только запутати!!! 5/38

Как именно хорошо бы уметь Религия, тезисно Системы уже сложные – и будут сложнее Commander Keen … Doom 1 … UE4 DOS … Windows 3. x … Windows 10 Lynx … IE4 … Chrome CSV … MySQL … ??? index.html … LAMP guestbook … Google Проблемы в них тоже – и будут сложнее Отчизна требует героев! 6/38

q.e.d. Про картинку #2 еще могут быть сомнения – система, на самом деле, не очень сложна! Про картинку #3 уже нет, совершенно очевидно, герои – необходимы… Заметьте, идеал – всегда картинка #1

Ну так каких ещё героев?! Религия вкратце: я за универсалов! Иначе невозможно решати проблемы на стыке Иначе невозможно придумывати решения Широкий кругозор, не менее 3 го размера! Антирелигия: универсалы чмо, спецы сила! Универсалы всё знают одинаково плохо Чем уже спец, тем приятнее эээ разработка Противоречия, на самом деле, (пока) нет 11/38

Чем мерить героизм [1/3] Радиус туннельного зрения Можно уметь верстати HTML+CSS – и всё Можно уметь пользовати LAMP стек – и всё Или представлять устройство разного софта Или разных уровней железа Идеально знати вообще всё – невозможно Однако представлять в общем – таки да Как следствие, внезапно… 12/38

Чем мерить героизм [2/3] Радиус туннельного зрения Понимание границ незнания Культура это палимпсест Я не помню, как умножати кватернионы :( Я не знаю, как писати на Angular.js или Django Я не знаю, как устроен RTMP Да и php programmerus vulgaris не отсобеседую Но есть нюанс… 13/38

Чем мерить героизм [3/3] Радиус туннельного зрения Понимание границ незнания Способность самостоятельно действовати Не надо думати, надо прыгати! Думати иногда надо, но лучше бы пореже 14/38

Чем мерить героизм Радиус туннельного зрения Понимание границ незнания Способность самостоятельно действовати Плюс собеседования!!! Вопрос на засыпку: а зачем вообще нужны собеседования? 15/38

Хочу всё знати! А что всё? Проверочные вопросы Я в целом понимаю, как устроен X Я знаю ряд деталей и могу тюнить/чинить X Я и сам могу сделати этот ваш X Толкиен дурак, Сильм лажа, не так всё было X = {процессор 8086, самый первый тетрис, гастевуха штоп пасрати, TCP стек, всё ядро, …} Надо бы понимати все уровни! От клика мышкой до пикселов на экране 16/38

Собственно, ключевые слова Железо. Обязательно CPU, RAM, диск, сеть. Бонусом про видео, звук, периферию, USB, PCI, IB/FC, про энергопотребление. Что есть, как внутри устроено, как снаружи работает, чего может. Иногда ещё как влияет на софт: SSD vs HDD, GPU акселерация, тупо SIMD, виртуализация, итп. 17/38

Собственно, ключевые слова Софт L1. Ассемблер. Инструкции, стеки, бранчи и цены, прерывания. Битики, бантики, форматы int/float, откуда берутся указатели. Частоты, латентности, кеши. Защищенный режим, переключения контекстов, ядра, треды, GPF vs TLB vs mwahaha. Про SIMD. Бонусом про Intel, ARM, muops, энергию, прочий ад. 18/38

Собственно, ключевые слова Софт L2. OS. Менеджмент ресурсов (память, диск, файлы, сокеты, треды, …), syscalls, IPC (shm, mmap, pipes, signals, …), ценники. Как что профайлить, трейсить, джентльменский набор vmstat, iostat, strace, oprofile, gperf итп. Виртуализация, гори она в аду. Бонусом устройство FS, IP/TCP/UDP. 19/38

Собственно, ключевые слова Софт L3. Middleware. Базы, OLTP, OLAP, DW, в широком смысле (+memcache итп). Веб, апп сервера. Бонусом обработка картинок, видео, звук, поиск, комп зрение, сжатие, маш обучение, bigdata, облачные хранилки и выполнялки (hadoop hadoop hadoop!) и т.п. как бы спец темы и спец софт. Каждый пункт – отдельная большая наука, ага 20/38

Собственно, ключевые слова Софт L4. Языки. Про скрипты, нативный код, VM и байт-код, JIT. Императивные, функциональные, типизированные и нет. Отладка тулзами, отладка логами, профайлинг. Статический и динамический анализ, рефакторинг, VCS, DVCS. 21/38

Экватор! Ровно 0.5 списка ключевиков. Щаз наконец будет и про код.

Собственно, ключевые слова Софт L5. Базовый код: методы. Базовые структуры данных: массивы, вектора, хеши, списки, деревья, очереди. Манипуляции с ними, комбинации их, родных. Базовые алгоритмы: сортировки, поиски, эээ, упс. Вычислительная сложность. Юнит-тесты, моки, ассерты, логи, внезапный отладчик. 24/38

Собственно, ключевые слова Софт L6. Код повыше: классы и потоки. ООП, паттерны. ФП, хоть чуть. Стандартные техники: regexp, генераторы парсеров, прочий автоген, DSL. Потоки, файберы. Синхронизация (mutex, rwlock, прочий IPC), atomic, lockfree структуры. Races, deadlocks, отлов, борьба, недопущение. Внезапно снова ФП и пуризм. 25/38

Собственно, ключевые слова Софт L7. Код сбоку: спец темы. Сжатие данных; работа с картинками, видео, звуком; прочий DSP; встроенные системы; интерпретаторы и компиляторы; 3D графика; компьютерное зрение; гигазы варёза и неизбежный MapReduce; машинное обучение; HPC; мобилы; … Каждый пункт – отдельная наука опять!!! 26/38

Собственно, ключевые слова Софт L8. Код еще выше: системы. Модули, внешние и внутренние API, спеки, тесты (приемка, регрессии, перф, итп). Форматы, версии, совместимость API/данных. Беды распределенных систем, методы борьбы. Билды и беды с ними, прочий CI, поддержка деплоя. 27/38

Собственно, ключевые слова Инфраструктура. Билды и беды с ними, CI, теплой – теперь без кода. Бэкапы, восстановление. Логи, мониторинг, реакция на аварии, аналитика. Стресс- тесты, планирование емкости. Автоматизация этого всего, типа devops. 28/38

Preemptive FAQ Q:...ати, это ж минима 37 томов читати. A: Наверное больше, плюс наколка: читати мало, надо стремиться их уметь написати. Q:...уй и зачем же мне это всё, я херачу на PHP тупо, плюс у меня стоянка, капает кеш. A: Строго из личного интереса, мыгыгы, но может случайно появиться и пабло. Q: Да ты сам небось ни …ра не знаешь! A: Разумеется!!! 29/38

И для разнообразия о приятном Всё подряд и идеально (см. эксперт) знати вообще невозможно – но и не нужно Часть – вы знаете уже Часть – особо малоприменима Часть – лично неинтересна Порядок – может быть любой Список неполон, но понятен – действуй!!! 30/38

Читай книжки, например Но лучше не читай; можно зачитатися Оптимально позже; штоп проверить книжку Читай маны, читай код, читай гегель Сначала ПИШИ, потом уже всякое читай, не читати учимся Про подъем штанги еще сцуко почитай!!! 31/38

Пиши код, например Начинай с простого, и быстрые итерации ВЕЗДЕ есть развлечения на полчаса, ну или максимум на вечер НИГДЕ нету невообразимой rocket science, всегда очень много можно спрототипить в очень мало строк 32/38

Пиши код, например L1, asm. Напиши Win32 hello world. Залей окошко gray(x xor y). А теперь на MMX. А теперь померь скорость. L2, OS. Побенчмаркай malloc(). Позырь strace, поудивляйся. Почитай ext4 какой. L3, middle. Напиши простенький calcd. А теперь простенький in-mem KV. А теперь чуть сложнее с диском, Btree, libevent. 33/38

Пиши код, например L4, lang. Выбери новый язык, напиши чего. Посмотри дизасм, в том числе байт-кода. L5, methods. Напиши хеш. Скрести его с чем. А теперь radixsort. А теперь SIMD. L6, classes/threads. Перепиши calcd на yacc. А теперь многопоточно. А теперь без сайд эффектов, just because fuck you. L7, specials. Напиши JPEG декодер. Напиши рей трейсер. Затекстурируй треугольник. 34/38

Пиши код, например Экспериментируй смело, чморить некому!!! Пробуй разное, но не распыляйся Фейлись много и с удовольствием, но чини Не забывай учиться, в третий раз… не пацан Доводи до конца, не работает => не сделал Переделывай N раз, на целевые LOC/время Если ничто никак не идет, меняй индустрию! 35/38

Пиши код, например Самое главное. Напиши себе свой личный список. Мой неполный, кривой, biased и вообще. Не жди никакого внезапного мега-толка. Его не будет все равно, муахаха. 36/38

Сверхцель всего процесса Мысль про магию Байка про ниндзю Шутка про зарплату!!! 37/38

Вопросы? (Не в церкви, не обманут.) shodan.ru/ppt

Опа, бонус-трек! (если вдруг останется время) 39/49

Про хайлоад

Есть ли специфика? А у вас какой хайлоад? Длинный или толстый? Кривой? Это у всех, это ничего; мы с мамой подумали, нам из него не стрелять... Длинный == много быстрых запросов Толстый == мало тяжелых запросов Оптимизировати нельзя скейлить

Длинный highload Оптимизировати нельзя! => Скейлить Но аккуратно тут, может быть иллюзией Распределенные системы в целом Middleware в частности Железо, борьба со сбоями, боттлнеки

Толстый highload Оптимизировати! => Нельзя скейлить Т.к. смысла нет, сначала хоть POC Локальная оптимизация в целом Middleware в частности! mwahaha Железо, боттлнеки

Про собеседования

Но.. Но.. Но как же собеседования? И причем тут вообще все эти мега списки!? Давайте поговорим про собеседования! Что вы хотите узнати?

Большая тайна собеседований! Вариантов реализации много! Маленькая боевая задача FizzBuzz, strrev(), strdup(), … IndustrialRPN Интервью имени Баткина (c) вроде G, F, B, Y и их никогда не нужные загадки А сверх цель одна!!! А обобщенный критерий один!!!

Большая тайна собеседований! Тезис раз, всем в целом покер твой React, Objective-C или успехи на почве Clojure Тезис два, чем больше покрытие списка, тем больше общих тем (плюс лексикон) Тезис три, надо уметь писати простой код, сложный надо уметь не писати Плюс, собственно, можно ведь... готовиться

Теперь совсем всё. Упс. shodan.ru/ppt