Pull to refresh
3
0.5
Send message

Иерархические структуры данных и производительность

Reading time14 min
Views23K

Введение



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

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

Читать дальше →

Как научиться разработке на Python: новый видеокурс Яндекса

Reading time6 min
Views259K
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
Читать дальше →

Как стать лучшим в мире в какой-то нише

Reading time6 min
Views80K


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


Давайте подумаем, что нужно, чтобы стать игроком НБА. Большинство профессиональных баскетболистов оттачивали мастерство практически с младенчества. Годы бесконечных тренировок, сборов и игр помогли им отработать различные важные в этом спорте навыки: броски, ведение мяча, пасы, защита и так далее.

Как вы можете себе представить, вероятность стать игроком НБА очень низкая: всего есть 30 команд по 15 игроков в каждой, что дает в общей сложности около 450 человек — не так уж много, особенно если учесть, что в молодежный баскетбол играет более полумиллиона ребят. Несложные подсчеты показывают, что меньше чем один из тысячи становится профессионалом.


Источник: Томас Пуэйо

Так что давайте будем реалистами: вы не попадете в НБА, не станете ни президентом, ни величайшим писателем в мире, ни лучшим шахматистом, ни самым искусным оратором. Вы никогда не станете лучшим в мире в каком-либо конкретном навыке: всегда найдется кто-то, кто выкладывается больше, у кого лучше генетические данные, кому больше везет (или всё сразу).


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

Пытаться стать лучшим в одном деле — не самый разумный путь к успеху. Лучше приложить усилия в освоении сочетания навыков. То есть, решением является комбинирование навыков — концепция, популяризируемая Скоттом Адамсом. Принцип ее работы следующий.

Переведено в Alconost
Читать дальше →

Как Youtube и Instagram: интернационализация и локализация приложения на Python

Reading time9 min
Views9.3K
Язык Python лежит в основе всемирно известных приложений, таких как Youtube, Instagram и Pinterest. Для продвижения на мировом рынке приложению необходима локализация, то есть адаптация к особенностям той или иной страны, и интернационализация – перевод контента. В статье мы поделимся опытом, как ускорить автоматизацию перевода и решить некоторые типичные проблемы в этой области.

Читать дальше →

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

Reading time8 min
Views152K
Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

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

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

Итак, сегодня я покажу, как отрисовывать подобные картинки:


Читать дальше →

Приведение типов

Reading time4 min
Views212K
Будучи на конференции Qt Developer Days 2010 я узнал, что одним из самых популярных вопросов на собеседовании в разные зарубежные компании, работающие с Qt библиотекой, является вопрос о различиях в способах приведения типов в C++. Поэтому здесь я рассмотрю основные различия между static_cast, dynamic_cast, const_cast, reinterpret_cast, C-style cast, qobject_cast и qvariant_cast

Читать дальше →
12 ...
9

Information

Rating
2,093-rd
Registered
Activity