Как стать автором
Обновить
1
0
bashor @bashor

Пользователь

Отправить сообщение

Перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures»

Время на прочтение3 мин
Количество просмотров65K
imageПривет, Хабр!

Мы (@ali_aliev и avenat) с удовольствием представляем вашему вниманию перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» от Брэда Миллера (Brad Miller) и Дэвида Ранума (David Ranum) из Luther College, что в Айове, США.

О чём?

В учебнике подробно рассматриваются, объясняются и анализируются наиболее часто используемые структуры данных и алгоритмы. Изложение идёт от простого (что такое алгоритм, как оценить его производительность) к сложному (деревья, графы) с живыми примерами и кодом. В качестве языка программирования выбран Python, а для тех, кто с ним плохо знаком, в первой главе есть большой раздел с его концентрированным описанием.

Авторы рассказывают о таких структурах данных, как стеки, очереди (в том числе с приоритетом), деки, хэш-таблицы, списки, деревья и графы. Последним двум вообще посвящены весьма не маленькие главы. Изложение не просто описательное: для каждой структуры предлагается вариант (а иногда и не один) её реализации на Python. Упор, естественно, делается на объектно-ориентированное программирование: создаётся класс, к нему пишутся методы, некоторые из которых авторы оставляют читателям для самостоятельной доработки. Затем идут примеры использования рассмотренной структуры и описание алгоритмов с её участием.

Одна из глав учебника посвящена рекурсии, в том числе её графическому представлению (фракталы). Разбирается несколько известных рекурсивных задач, а в конце наглядно демонстрируется, что эта методика, несмотря на её элегантность, отнюдь не «серебряная пуля».

Не обделены вниманием и классические алгоритмы для сортировки и поиска. И, естественно, для каждого из них анализируются производительность и «подводные камни», а так же даются рекомендации по применению. В последних главах, посвящённых деревьям и графам, даётся много материала об их разновидностях и связанных с ними алгоритмах. Изложение тут становится более сжатым, многие моменты просто описываются с тем, чтобы после прочтения главы читатель реализовал их самостоятельно.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии19

Межпроцедурный анализ и оптимизации (I)

Время на прочтение14 мин
Количество просмотров9.1K
Одной из самых интересных и важных компонент современного оптимизирующего компилятора является межпроцедурный анализ и оптимизации. Хороший стиль программирования и необходимость разделения работы между разработчиками диктует необходимость разбиения большого проекта на отдельные модули, в которых основные утилиты реализованы как «черные ящики» для всех основных пользователей. Детали реализации, в лучшем случае, известны паре-тройке конкретных разработчиков, ну а иногда, за давностью лет, и вообще никому неизвестны. (А что поделаешь – специализация, глобализация). Ваш код, зачастую, содержит вызовы внешних функций, тела которых определены во внешних файлах или библиотеках и ваши знания о этих функциях минимальны. Ну и помимо этого при разработке больших проектов плодятся всякие глобальные переменные, с помощью которых компоненты большого проекта обмениваются ценной информацией, и для того, чтобы разобраться в работе вашей части кода в случае каких-то проблем, бывает необходимо перелопатить массу кода. Очевидно, что все это сильно осложняет и работу оптимизирующего компилятора. Какие негативные эффекты порождает модульность и есть ли в компиляторе специальные средства для их преодоления – тема для большого разговора. Сейчас я попытаюсь начать такой разговор. Я расскажу о некоторых интересных особенностях работы оптимизирующего компилятора на примере работы компилятора Intel. Ориентироваться буду на OS Windows, поэтому опции компилятора привожу характерные для этой платформы. Ну и чтобы облегчить себе жизнь, я иногда буду использовать аббревиатуры IPA для межпроцедурного анализа и IPO для межпроцедурных оптимизаций. А начну я с рассказа о моделях межпроцедурного анализа и графе вызовов.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии6

Критерий выгодности подстановки и динамическая профилировка

Время на прочтение13 мин
Количество просмотров8.1K
image

Продолжаю тему межпроцедурных оптимизаций, введение в которую можно найти в предыдущем посте. Сегодня хочется немного порассуждать о подстановке функции (inlining) и о том, как подстановка влияет на производительность приложения.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии2

Есть ли жизнь с телефоном за <1000 рублей?

Время на прочтение2 мин
Количество просмотров1.4K
Привет.

Что-то давно не видно хороших обзоров, а я так мечтал попробовать себя в роли автора одного из них) За мою недолгую жизнь у меня было около десятка телефонов. Дорогие и как вы узнаете из этого обзора дешевые. Знакомьтесь Philips Xenium:

Читать дальше →
Всего голосов 148: ↑124 и ↓24+100
Комментарии154

Спать мало, но правильно?

Время на прочтение7 мин
Количество просмотров899K
Навеяно этим постом от юзера case. Пост не новый, и на главную он не попал.
Но я вот наткнулся на него сегодня и решил написать кое-что о сне. Уверен, что это будет полезно многим хабравчанам, да и случайным читателям тоже.
Читать дальше →
Всего голосов 713: ↑670 и ↓43+627
Комментарии420

Роль сна в контексте личной эффективности

Время на прочтение2 мин
Количество просмотров31K
Оказывается, физиология полезная наука, если слушать, понимать и делать практические выводы. Расскажу своими словами не претендуя на академичность и научную достоверность.

Роль сна в контексте личной эффективности

Ночью, во время полноценного сна, наш мозг фильтрует все, что прошло через него за день и либо складывает это дело в долгосрочную память (и тогда мы про это помним), либо сбрасывает то, что по разным причинам в памяти нам не нужно. Самый простой пример, который иллюстрирует этот механизм — видеомагнитофон с лентой, которая перематывается назад каждую ночь, потом проматывается с той же скоростью весь день (и это важный момент: скорость проигрывания примерно равна скорости записи) и вырезает из него куски, которые сбрасывает. На эту работу мозгу нужно примерно столько же времени, сколько на само проживание заполненных кусков жизни (то есть не каждый вдох-выдох, а тему, разговор, вопрос, письмо, строку или блок кода, тест-кейс и т.д.). Есть люди, у которых эти процессы идут медленнее или быстрее, тогда им надо соотв. меньше или больше времени на поспать. Но, в среднем по больнице, если ты работаешь мозгами часов 8, то и поспать надо те же 8 часов.

Отсюда простое прямое правило и не очень очевидное правило обратное, про которое мы и поговорим далее.

Прямое правило: сколько поработал, столько и поспал.
Обратное правило: сколько поспал, столько и поработал.

Если ты ночью поспал 3 часа и «бодрячком» поехал на работу, то в твоем наличии «кассета магнитофона», которая свободна только на 3 часа.
Читать дальше →
Всего голосов 54: ↑39 и ↓15+24
Комментарии71

50 цитат о программировании всех времён

Время на прочтение6 мин
Количество просмотров160K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

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

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →
Всего голосов 344: ↑336 и ↓8+328
Комментарии136

Уникальное торговое предложение SaaS сервисов

Время на прочтение1 мин
Количество просмотров727
Есть такая книжка у Джефри Мура, называется «Внутри торнадо». Он рассказывает о стратегиях завоевания рынков. Основная мысль — это завоевание сначала нишевого рынка путем создания целостного продукта. Например, Directum сначала поставлял приложения для фармацевтической отрасли. А потом пошел на смежные рынки, а потом стал технологическим лидером. Основная мысль — хотя бы для небольшой ниши создать целостные продукт. Это называется стратегия кегельбана.
Вспомнилось мне это в связи с моими недавними рассуждениями на тему проблем развития SaaS-сервисов (в моем блоге). А ведь действительно, я не знаю ни одного SaaS сервиса, который предоставлял бы целостное решение для какой-либо ниши.
Читать дальше →
Всего голосов 14: ↑7 и ↓70
Комментарии9

Симбиоз идей: примеры хорошего совмещения идей в дизайне логотипов и рекламы

Время на прочтение2 мин
Количество просмотров7.6K
Здравствуй, хабр! Сегодня я хочу представить вам всем дозу дизайнерского вдохновения для мозга.

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

Для чего это нужно


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

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

Сильная идея + простая (но, естественно, качественная!) реализация оказываются не менее эффективнее, чем сложная реализация самого высокого уровня с привычной идеей. А, собственно, сильную свежую идею можно найти путём совмещения обычных.

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

Логотипы










Еще четыре десятка логотипов и рекламы под катом
Всего голосов 152: ↑127 и ↓25+102
Комментарии78

15 Вопросов на собеседовании в Google, из-за которых вы можете почувствовать себя глупым

Время на прочтение2 мин
Количество просмотров319K
15 вопросов от Google
Google снова набирает людей.
Это отличная новость для тысяч начинающих менеджеров и разработчиков ПО, желающих найти спокойную пристань в эти сложные дни.
Теперь плохие новости:
  • Google предпочитает людей из «Лиги Плюща»
  • Им интересны ваши оценки (в институте), даже если вам уже за 30
  • Они ищут людей, которые хотят изменить мир

Хуже того, если вы подходите по всем этим параметрам, вам все равно надо проходить собеседование.
Льюис Пин (Lewis Pin), тренер по поиску работы из Сиэтла, собрал 140 вопросов, которые в Google спрашивали его клиентов.

Сколько шариков для гольфа поместится в школьный автобус?


Сколько шариков для гольфа поместится в школьный автобус?
Позиция: Менеджер проекта

Читать дальше →
Всего голосов 268: ↑231 и ↓37+194
Комментарии525

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

Время на прочтение1 мин
Количество просмотров849
Доступно видео, в котором объясняется как работает система управления интерфейсами через разные касания, жестами пальцами или прикосновения к коже. Научный проект разрабатывается Microsoft и носит кодовое имя «Skinput».

Всего голосов 24: ↑13 и ↓11+2
Комментарии4

Программа Calibre. Управление библиотекой и универсальный конвертер электронных книг

Время на прочтение4 мин
Количество просмотров216K

Предисловие


Так как являюсь большим поклонником чтения, то в какой момент взор мой упал на электронные книги. Преимущества были для меня налицо. Особенно с частыми командировками. Вес, размер, удобство, ну и цена электронных версий книг (предпочитаю честную покупку текстов). Попользовавшись несколькими экземплярами остановился на Sony PRS-505. Сначала смутил формат lrf, но выход был быстро найден — онлайн-конвертеры fb2 в lrf. Онлайн — потому что являюсь пользователем Linux и дома и на работе, плюс дома для игр использую WinXP. В общем полный разброд. Но когда начал искать книги на английском, то наткнулся на кучу других форматов от pdf до epub и еще более экзотические варианты. Плюс книг на компах стало много и разбираться в них стало трудновато (я не единственный пользователь еКниги в семье). В общем назрела необходимость в каком то управлении этим хаосом и удобным конвертированием форматов, плюс нативная поддержка Linux. В одном из комментов на Хабре увидел упоминание про Calibre. Скачал, поставил — понравилось. Теперь пользуюсь полностью ей. Поэтому хотелось бы сделать краткий обзор данной программы.
Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии72

VKFS — Файловая система для VKontakte на основе Fuse

Время на прочтение1 мин
Количество просмотров48K
Не так давно на хабре (и на лепре, и еще где-то) появилась такая гифка:
image
Я посидел и подумал: «А почему бы и нет?»
Прошло некоторое время и, как я и обещал
Встречайте! VKFS — файловая система vkontakte, основаная на fuse.
Это не релиз — пока что реализована только возможность чтения собственной стены, но уже готов весь «каркас» для этого всего.
Читать дальше →
Всего голосов 247: ↑214 и ↓33+181
Комментарии159

23 логотипа со скрытым смыслом

Время на прочтение4 мин
Количество просмотров155K
Логотипы не всегда являются тем, чем они кажутся. Некоторые из таких логотипов могут содержать в себе много информации о бренде, и всё что вам нужно сделать — вглядеться в детали. Я выбрал двадцать три отличных логотипа, у которых есть такое «скрытое послание». Я уверен, что ранее вы видели некоторые из этих «скрытых посланий», но надеюсь, что смогу показать новые.

Читать дальше →
Всего голосов 369: ↑344 и ↓25+319
Комментарии269

Студенты vs Разработчики

Время на прочтение4 мин
Количество просмотров1K
Существует два противоположных мнения о найме программистов. Сторонники первого мнения считают, что опытные разработчики лучше, чем студенты. Разработчики продуктивней и их карьере ничего не угрожает. Противоположное мнение состоит в том, что нанять 3-5 студентов дешевле.

Пора разобраться в странном положении фигур на доске...
Всего голосов 53: ↑42 и ↓11+31
Комментарии46

Файловые системы — отстой

Время на прочтение3 мин
Количество просмотров15K
Компьютеры пришли в народ из мира инженеров. А в мире инженеров реализация всегда превалирует над интерфейсом. Вот и с файловой системой так. Несмотря на на колоссальный скачок от перфокарт к EXT3 или NTFS, интерфейс файловой системы остается таким
Каким?
Всего голосов 128: ↑97 и ↓31+66
Комментарии348

Вышла opentodo 0.91

Время на прочтение1 мин
Количество просмотров659
Буду писать о новых релизах в персональном блоге :)

Новое в версии 0.91
  • Теперь для перехода к задаче из списка достаточно кликнуть по ряду таблицы (не обязательно по названию задачи).
  • Ссылки для автоматической вставки html-тегов в textarea (описание задач и проектов, комментарии).
  • Переработан парсинг html, исправлены ошибки. Библиотека Beautiful Soap больше не используется.
  • Исправлен баг — при ответе на комментарий его автору не приходило уведомление по почте.
  • Теперь в настройках MEDIA_URL не имеет значения, есть слэш в конце или нет, все корректно работает в любом случае.

Страница проекта на Google Code
Онлайн демо
Всего голосов 13: ↑12 и ↓1+11
Комментарии15

Обзор open source — систем для баг-трекинга.

Время на прочтение2 мин
Количество просмотров11K
Недавно на работе был поднят такой вопрос: пора бы завести наконец-то систему баг-трекинга, но вот только какую? Условия были поставлены следующие: система должна быть open source, должна без проблем ставиться на не-виндовс системы, использовать в качестве БД MySQL и желательно быть написанной на PHP, на случай, если очень захочется доработать напильником.

Варианты предлагались такие: Jira (отпадает в виду небесплатности), BugZilla (отпала в виду того, что админ обвинил ее в требованиях «каких-то специфичных настроек MySQL-я»), Trac (в нем долго сомневались, т.к. у нас svn).

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

Итак: краткий обзор систем баг-трекинга.

1. BugZilla.
image
О ней, наверно, знают все, но на всякий случай кратко для тех, кто еще не знает.

Система от разработчиков FireFox, вообще ребята очень ответственно подходят к проблеме багов.

Установка: Гарантируется поддержка Linux или Solaris, для работы нужен Perl и одна из СУБД: MySQL, PostgerSQL, Oracle.

Список использующих BugZilla, впечатляющий: Mozilla Foundation (ну это в общем-то не удивительно), Open Office, RedHat, NASA, Facebook и еще сотня довольно известных и тысячи неизвестных компаний.
Читать дальше →
Всего голосов 25: ↑15 и ↓10+5
Комментарии21

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность