Pull to refresh
4
0
Антон @larinam

User

Send message

Структуры данных: двоичная куча (binary heap)

Reading time4 min
Views231K
Двоичная куча (binary heap) – просто реализуемая структура данных, позволяющая быстро (за логарифмическое время) добавлять элементы и извлекать элемент с максимальным приоритетом (например, максимальный по значению).

Для дальнейшего чтения необходимо иметь представление о деревьях, а также желательно знать об оценке сложности алгоритмов. Алгоритмы в этой статье будут сопровождаться кодом на C#.

Введение


Двоичная куча представляет собой полное бинарное дерево, для которого выполняется основное свойство кучи: приоритет каждой вершины больше приоритетов её потомков. В простейшем случае приоритет каждой вершины можно считать равным её значению. В таком случае структура называется max-heap, поскольку корень поддерева является максимумом из значений элементов поддерева. В этой статье для простоты используется именно такое представление. Напомню также, что дерево называется полным бинарным, если у каждой вершины есть не более двух потомков, а заполнение уровней вершин идет сверху вниз (в пределах одного уровня – слева направо).



Читать дальше →
Total votes 72: ↑58 and ↓14+44
Comments58

Советы для инженеров от менеджера Google

Reading time8 min
Views40K
Всем привет!

Меня зовут Лариса. Я работаю в Google и веду блог на larrr.com, где я изначально и опубликовала эту статью.

Сегодня я предлагаю вашему вниманию статью, которая изначально была написана исключительно для внутреннего пользования Google. Мне очень понравилась, так что я связалась с автором, с ее разрешения я ее немного переделала, и получила разрешение от Google Press на публикацию. Перевод мой.

На всякий случай – это не официальный Google документ, и Google не несет ответственности за его содержание. Он субъективный, и написан сотрудником для сотрудников.

Советы для инженеров

15 апреля 2013
Отредактировано 21 мая 2014
Переведено 31 августа 2015
Gretta Bartels, Software Engineering Manager at Google


Уважаемый читатель,

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

Один из моих более опытных коллег научил меня тому, что для менеджера очень важно быть предельно предсказуемым. У менеджера должен быть какой-то набор простых правил, о которых знают все его подчиненные, и которым они могут следовать даже когда менеджера рядом нет. Поэтому моя цель – чтобы программисты в моей команде могли задать сами себе вопрос “Что бы на это сказала мой менеджер?”, и сами себе на него правильно ответить. Тогда команда сможет работать практически самостоятельно, без моего руководства. А я буду сидеть дома и кушать пирожные :).

Вот список моих основных правил:
Читать дальше →
Total votes 63: ↑51 and ↓12+39
Comments57

Почему Hackintosh уже актуален. Развенчание мифов

Reading time7 min
Views135K

Каждому iOS разработчику нужен свой уголок с печеньками, плюшевой уточкой и шайтан-машиной на OSX.


В свете перехода на Swift, мощность железа стала особенно востребована. Чтобы комфортно разрабатывать под айфоны, нужен как минимум процессор с частотой 3+ ghz, SSD на 120-250Gb и оперативы гигов 16. Все это как раз для того, чтобы не было желания посмотреть футбол, пока запускается проект или открывается interface builder.


А знаете, что еще было всегда актуально? Сумасшедшие цены на яблочные устройства:


image


PC с таким же, плюс-минус, железом можно запросто собрать всего за 30.000 рублей! (инфа на ноябрь 2016). Многие, конечно, думают, что раз компания покупает железо, то значит финансы бесконечные, можно не стесняться в средствах. Если вы работаете в Google, то вам повезло и жизнь хороша. Но в остальных случаях это не так.


Что же делать? Не разрабатывать же под Android в конце концов?


Под катом мы узнаем о современном Hackintosh, его роли в разработке, способам безболезненной установки и настройки, услышим мнение людей, работающих на нем не первый год, и проведем тест на iOS инструментах.


Читать дальше →
Total votes 128: ↑110 and ↓18+92
Comments431

Генерация фиктивных данных с Mimesis: Часть I

Reading time7 min
Views36K
image

Mimesis — это библиотека для языка программирования Python, которая помогает генерировать фиктивные данные для различных целей. Библиотека написана с использованием средств, включенных в стандартную библиотеку языка Python, потому не имеет никаких сторонних зависимостей. На данный момент библиотека поддерживает 30 языковых стандартов (в числе которых и русский) и более 20 классов-провайдеров, предоставляющих разного рода данные.


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


  1. Сбор необходимой информации.
  2. Постобработка собранных данных.
  3. Программирования генераторов данных.

Эта непростая задача по-настоящему усложняется в тот момент, когда требуется сгенерировать не 10-15 пользователей, а 100-150 тысяч пользователей (или иного рода данные). В этой и двух последующих статьях мы постараемся обратить ваше внимание на инструмент, который в разы упрощает процесс генерации тестовых данных, начальной загрузки базы данных и тестирования в целом.

Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments40

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

Reading time3 min
Views125K
"The joy of coding Python should be in seeing short, concise, readable classes that express a lot of action in a small amount of clear code — not in reams of trivial code that bores the reader to death."
Guido van Rossum

Python — язык программирования, на котором приятно писать и который приятно читать. Мы предлагаем тринадцать лекций осеннего курса CS центра, чтобы посмотреть вглубь языка и попробовать понять, как пользоваться всеми его возможностями. Лекции читает Сергей Лебедев, разработчик в компании JetBrains и преподаватель в Computer Science Center.

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

Фотография сделана осенью 2014 года в Страсбурге, за две недели до начала первого прочтения этого курса.
Открыть лекции курса
Total votes 45: ↑42 and ↓3+39
Comments32

Путь жаворонка 2: At the End of the Rainbow

Reading time6 min
Views32K
В мае сего года я описывал эксперимент по переходу из состояния «совы» в режим «жаворонка» — вставать в 5 утра каждый день. На момент публикации статьи эксперимент продолжался пол месяца и имел следующие результаты и бонусы:
  • Появилось время на занятие гитарой (игра «Rocksmith 2014», утро).
  • Ввиду смещения рабочего графика на час назад, появилась возможность посещать недоступные ранее тренировки (с 18:00).
  • Появилось время на изучение английского языка (доступ в группы с 18:00, утро).
  • Более комфортный путь на работу и с работы (метро до часа пик).
  • Нормальные завтраки.
  • Субъективно увеличилась продолжительность суток

Минусы:
  • Компьютерные игры сошли на нет.
  • Стали меньше смотреть кино. Вообще совместной деятельности в будни стало меньше (хотя в выходные — больше)
  • 6 часов сна, всё же, мало при активном образе жизни, даже (или особенно) если основная активность приходится на мозг.

С тех пор прошло много времени. Получил несколько раз вопросы по разным каналам о результатах. Возможно, кому-то ещё будет интересно. А мне будет полезно упорядочить их в своей голове.
Эксперимент продолжался до конца сентября. Неплохо, если учесть, что изначальная планируемая длительность составляла месяц, а начался он в апреле. Да и нельзя сказать, что он кончился, поскольку изменения в жизни и распорядке произошли существенные. Их можно разбить на две подтемы. Они под катом. Статья содержит только описание личного опыта и является логическим завершением предыдущей.
Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments25

Проснуться правильно

Reading time1 min
Views30K
Замечали ли вы, что иногда, поспав всего 5-6 часов, можно проснуться бодрым и отдохнувшим, а порой встаешь после здорового восьмичасового сна — и как будто выжатый лимон? А причина такого парадокса — в фазах сна: то, в какой фазе мы находились в момент пробуждения, и определяет наше состояние с утра.

Ведь, как известно, сон — циклический процесс, состоящий из 2 основных фаз: быстрого сна и медленного сна. В течение каждого такого цикла мы испытываем различные уровни готовности проснуться. Лучше всего просыпаться в стадии быстрого сна — той, в течении которой мы видим сны.
Читать дальше →
Total votes 52: ↑45 and ↓7+38
Comments180

Веб 3.0: официальное определение от Калаканиса

Reading time2 min
Views1.4K
После многочисленных просьб Джейсон Калаканис всё-таки согласился выдать чёткое и конкретное определение, что такое Веб 3.0. Вот оно.

Веб 3.0 определяется как высококачественный контент и сервисы, которые создаются талантливыми профессионалами на технологической платформе Веб 2.0.

Основная идея здесь состоит в том, что Веб 2.0 — это не финальный продукт, а всего лишь технологическая платформа. Сегодня социальную сеть или другой сервис Веб 2.0 можно создать с нуля практически бесплатно. Таких сервисов тысячи и они уже не имеют ценности сами по себе. Если талантливые профессионалы начнут использовать эту платформу и создадут нечто по-настоящему интересное — вот это и будет Веб 3.0, вкрапления которого в интернете есть уже сейчас. Те же известные проекты Digg или Youtube дают вдохновение для создания ярких авторских проектов, которые вполне принадлежат поколению Веб 3.0. например, юмористический видеосервис Funny Or Die.

Что ж, довольно логичная позиция, достойная внимания.
Читать дальше →
Total votes 29: ↑19 and ↓10+9
Comments48

Пользователи Windows более религиозны

Reading time1 min
Views503
Все мы видели эту смешную рекламу Apple в стиле «Mac против PC», которая наглядно показывает, чем отличаются владельцы «маков» от пользователей Windows. Если судить по рекламе, это совсем разные люди. Первые — талантливые, творческие, красивые, умные и подтянутые. Вторые — скучные, безвкусные, туповатые и толстые. Конечно, это всего лишь реклама.



Но некоторые исследования показывают, что между пользователями Windows и Mac действительно есть серьёзная разница. Например, продвинутый движок рекомендаций Thoof способен анализировать, какие тексты предложить для прочтения каждому посетителю сайта, в зависимости от его истории серфинга. Для каждого пользователя определяются темы, которые ему интересны. Так вот, анализ предпочтений пользователей Mac и Windows показывает коренные отличия между этими двумя социальными группами.
Интересная статистика
Total votes 23: ↑12 and ↓11+1
Comments16

Облака — ещё дешевле

Reading time5 min
Views115K
Наверняка вы слышали о сервисах Amazon EC2, Rackspace и им подобным. Может быть даже пользовались. Лично мне бывает нужен иногда личный VPN-сервер. Для этих целей я уже давно держал микро-инстанс на Амазоне, предоставляемый им в течении первого года бесплатно. Плюс использовал для архивов Amazon Glacier, который с его ценой «1 цент за гигабайт в месяц» можно считать тоже почти бесплатным. Но вот год закончился и за EC2 стало нужно платить. Архивы мои тоже разрослись прилично и затраты на Glacier аналогично перестали радовать.

Случайно пробежавший мимо обзор сервиса DigitalOcean по-началу оставил меня равнодушным. Ну, облачный сервис, ну виртуалки. Ну да, чуть-чуть дешевле (но не так чтобы уж очень), чего-то аналогичного Glacier вроде бы нет да и вообще оно того не стоит.

Я сильно ошибался. Ниже будет рассказано как на базе DigitalOcean сделать себе VPN-сервер в пару десятков раз дешевле такого же на Амазоне и сервис хранения архивов, в бесконечность раз дешевле Glacier.
Читать дальше →
Total votes 120: ↑102 and ↓18+84
Comments87

Java собеседование. Коллекции

Reading time10 min
Views890K
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →
Total votes 97: ↑86 and ↓11+75
Comments306

Автоконфигурация в облаке Amazon при помощи Chef-Solo

Reading time3 min
Views7.4K
Здравствуйте!

В этой статье я хочу рассказать об автоконфигурации в облаке. Для примера запустим ec2-инстанс, на котором «приготовится» WordPress.

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



Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments8

Подсветка синтаксиса в less

Reading time1 min
Views5.4K
Администраторы Unix-подобных ОС очень часто пишут командные сценарии для автоматизации выполнения рутинных задач, используя свой любимый тектовый редактор. Время от времени приходится открывать написанные однажды сценарии, чтобы что-то в них подсмотреть. Я это делаю с помощью less. С помощью последнего мне очень понравилось читать раскрашенные руководства и захотелось того же при обычном просмотре текста в консоли (shell-сценарий, html-документ и пр.).
Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments6

Юзабилити и Коммуникации (на конференции «PR в Интернете»)

Reading time1 min
Views1.3K
Сегодня (13.05.09) мы с Артёмом Бергером выступали на небольшой конференции «PR в Интернете» с докладом «Юзабилити и Коммуникации», увидев симметрию между PR-коммуникациями (Компания-Рынок) и улучшением взаимодействия (Продукт-Потребитель): Продукт — производная Компании, Потребитель — представитель Рынка.

В докладе мы также немного раскрыли зарождающуюся у нас в компании концепцию «Вовлечение-Концентрация-Действие», которую проиллюстрировали результатами только что закончившегося eye-tracking исследования, направленного на поиск механизмов управления вниманием пользователя.



Общая продолжительность: 38 минут.
Чуть подробнее >
Total votes 19: ↑15 and ↓4+11
Comments22

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity