Темная материя в IT-компаниях

Некоторые IT-компании непропорционально огромны, учитывая то, что они делают. Давайте рассмотрим несколько примеров. Многие слышали про Dropbox: его штат насчитывает 800 человек, а основная деятельность компании — разработка системы облачного…

HTML5 vs. Native Apps

Business Insider (BI) Intelligence специализируется на аналитике мобильного и веб-программирования. И они задались вопросом: смогут ли веб-приложения вытеснить мобильные с рынка мобильных утилит?

Обложка поста

Отлаживай программы, как настоящий сыщик

Если вы всегда мечтали стать сыщиком — искать улики, проверять гипотезы и искать виновного — но, почему-то, стали программистом — не отчаивайтесь!

Задача про шарик с гелием в машине

Вы находитесь в автомобиле, где к полу веревочкой привязан шар, наполненный гелием. Окна закрыты. Вы нажимаете на педаль газа. Что произойдет с шаром: переместится он вперед, назад или останется в…

Обложка поста
Обложка поста

От бездомного до программиста

Сегодня мы расскажем Вам удивительную историю успеха разработчика. Это история настоящего стремления и истинной мотивации. Делаем первые шаги Нашего героя зовут Андрей. Его непростой путь к профессии программиста начался в 21…

Обложка поста

Руководство по моделированию 2D водной поверхности

Рассказывает Alex Rose В этой статье мы рассмотрим создание динамической 2D воды с простейшей физикой. Мы будем использовать рендер линий, мешей, триггеры и частицы. Конечный результат с волнами и брызгами…

Я изучаю %language_name%. Что мне написать?

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

Обложка поста

Конечный автомат: теория и реализация

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

Обложка поста

Оператор GOTO в Python

Оператор GOTO не ругал только ленивый. Тем не менее, это инструмент, и польза или вред от него определяется только тем, как его используют.

Обложка поста
Обложка поста

Большой сборник завораживающих визуализаций известных алгоритмов

Возможности человеческого разума ограничены…

Алгоритмы и структуры данных для начинающих: сортировка

В этой части мы посмотрим на пять основных алгоритмов сортировки данных в массиве. Начнем с самого простого — сортировки пузырьком — и закончим «быстрой сортировкой» (quicksort). Для каждого алгоритма, кроме…

Обложка поста

Собрать Google — это всё равно что скомпилировать Windows 40 раз

Насколько велика корпорация Google? На этот вопрос можно ответить, оценивая компанию в долларах выручки, в количестве её клиентов или рассуждая о её роли в нашей жизни. Однако Google — это…

Сравнение интерпретатора, обычного и JIT компиляторов

Рассказывает автор блога Nick Desaulniers Интерпретаторы и компиляторы — программы, которые используются для трансляции или запуска других программ. Интерпретируемые программы пишутся на языках вроде JavaScript, Ruby, Python, PHP и Perl.

Реализуйте метод сжатия строки на основе счетчика повторяющихся символов

Например, строка aabcccccaaa должна превратиться в а2b1с5аЗ. Если «сжатая» строка оказывается длиннее исходной, метод должен вернуть исходную строку.

Дилемма — отвечай на интересные вопросы и вырабатывай свою точку зрения

В современном обществе существуют такие актуальные проблемы, как: боязнь искренности — люди боятся говорить правду и быть за это осмеянными или осужденными; люди затрудняются в принятии решений, либо этого делать совершенно не умеют;…

Введение в spritesheet анимацию

Анимация, основанная на spritesheet’ах, используется в играх довольно продолжительное время. В том числе в таких популярных играх, как Legend of Zelda: A Link to the Past или Cut the Rope.

Рабочие места редакции Типичного программиста

В воскресенье, 13 сентября, в Москве в тайм-кафе :glhf состоится встреча по поводу праздника — Дня программиста. Приезжайте к нам, будет небольшая лекция с историей создания сообщества, возможность задать свои вопросы основателям…

Обложка поста
Обложка поста

Избегаем часто встречающихся ошибок при работе с MySQL

Работа с базой данных — зачастую самое слабое место в производительности многих web-приложений. И часто можно заметить, как на одни и те же грабли наступают разработчики при проектировании базы данных. Данная…

Хокку ко дню тестировщика

Разумеется, местное просвещенное сообщество в курсе того, какой сегодня день. 9 сентября — день тестировщика! Сотрудники Acronis Russia настолько расчувствовались по этому поводу, что в качестве поздравления коллегам у них…

Интервью с Нариманом Намазовым, владельцем 2ch.hk

Пятого сентября по российскому интернету прокатилась волна DDoS-атак. Она затронула множество крупных ресурсов: 2ch.hk, rutracker.org, несколько более мелких торрент-трекеров и «Роскомсвободу». После того, как TJournal опубликовал расследование, DDoS-ить начали и…

Обложка поста
Обложка поста

Подсчёт количества путей робота на сетке

Представьте себе робота, находящегося в левом верхнем углу сетки с координатами (X, Y). Робот может перемещаться в двух направлениях: вправо и вниз. Сколько существует маршрутов, проходящих от точки (0, 0)…

Алгоритмы и структуры данных для начинающих: множества

Множество — это коллекция, которая реализует основные математические операции над множествами: пересечения (intersection), объединение (union), разность (difference) и симметрическая разность (symmetric difference). Каждый из алгоритмов мы разберем в соответствующем разделе.

Обложка поста

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

Первое, что приходит в голову, — выбрать случайные элементы из массива и поместить их в новый массив. Но что если мы выберем один и тот же элемент дважды? В идеале…

Алгоритмы и структуры данных для начинающих: двоичное дерево поиска

До сих пор мы рассматривали структуры данных, данные в которых располагаются линейно. В связном списке — от первого узла к единственному последнему. В динамическом массиве — в виде непрерывного блока. В этой…

Обложка поста
Обложка поста

Трассировщик лучей на визитке

Рассказывает Фабиен Санглард, автор блога fabiensanglard.net Недавно в интернете я наткнулся на трассировщик лучей на визитке Пола Гекберта. Для тех, кто не в курсе: это очень известная задача, изначально предложенная…

Обложка поста

Почему программисты снова становятся инженерами — вице-президент Parallels рассказал об окончании «эры айтишников»

Некоторое время назад Look at me поделился дельными мыслями одного человека по поводу того, что широта знаний вновь становится важнее узкой специализации. Мы не могли пройти мимо и подготовили для вас…

Обложка поста

Что делать, если правительство отключает Интернет?

Попытки бороться с нежелательной информацией в Интернете правительство РФ проявляет уже достаточно давно. Еще в 2007 году был опубликован «Федеральный список экстремистских материалов» — тогда провайдеры впервые начали повсеместно блокировать…

Шпаргалка по принципам ООП

Главное Инкапсулируйте все, что может изменяться; Уделяйте больше внимания интерфейсам, а не их реализациям; Каждый класс в вашем приложении должен иметь только одно назначение; Классы — это их поведение и…

Обложка поста
Обложка поста

Интервью с Денисом Неклюдовым, Google Developer Expert Android

Типичный программист взял небольшое интервью у Дениса Неклюдова — эксперта по Android-разработке со статусом Google Developer Expert (а такие не каждому раздают, между прочим). Денис вкратце расказал об особенностях новой версии…

Алгоритмы и структуры данных для начинающих: стеки и очереди

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

Обложка поста

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

Если бы мы работали с массивом, то было бы много сложностей, связанных со смещением элементов. Со связным списком задача намного проще. Вместо того чтобы смещать и менять местами элементы, мы…

Обложка поста

Файл, который нужно включить в проект на Си или С++ перед увольнением

Пользователь Aras Pranckevičius поделился на github файлом preprocessor_fun.h, который рекомендуется включать в репозиторий проекта перед увольнением с работы. Некоторые строчки несут в себе слишком много боли, слабонервным рекомендуем не смотреть.