Как стать автором
Обновить
0
0
Александр Егоров @kagor

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

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

Что такое анти-паттерны?

Время на прочтение9 мин
Количество просмотров143K
Анти-паттерны — полная противоположность паттернам. Если паттерны проектирования —
это примеры практик хорошего программирования, то есть шаблоны решения определённых задач. То анти-паттерны — их полная противоположность, это — шаблоны ошибок, которые совершаются при решении различных задач. Частью практик хорошего программирования является именно избежание анти-паттернов. Не надо думать, что это такая непонятная теоретическая фигня — это конкретные проблемы, с которыми сталкивался практически каждый разработчик. Кто осведомлен, тот и вооружён! Рассмотрим же несколько расрпотранённых анти-паттернов в программировании.
Да, рассмотрим!
Всего голосов 157: ↑147 и ↓10+137
Комментарии103

Паттерны ООП в метафорах

Время на прочтение17 мин
Количество просмотров565K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Всего голосов 214: ↑201 и ↓13+188
Комментарии86

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

Время на прочтение3 мин
Количество просмотров380K
Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
Читать дальше →
Всего голосов 236: ↑219 и ↓17+202
Комментарии182

Я не знаю Си

Время на прочтение4 мин
Количество просмотров51K
Цель этой статьи — заставить всех, особенно программистов на Си, сказать «я не знаю Си».
Хочется показать, что тёмные углы в Си значительно ближе, чем кажется и даже тривиальные строки кода несут в себе undefined behavior.
Читать дальше →
Всего голосов 285: ↑268 и ↓17+251
Комментарии309

Язык D2 и метапрограммирование: всё страньше и страньше

Время на прочтение9 мин
Количество просмотров3.9K
Не так давно Monnoroch опубликовал несколько прекрасных вступительных статей по языку D2, и это было хорошо. Но, прочитав последнюю статью, посвящённую метапрограммированию, захотелось сделать ещё лучше и раскрыть тему немножко подробнее. Дьявол, как известно, в деталях — и именно внимание к мелочам делает реализацию meta-парадигмы в D2 столь удобной. Если вы не читали статью Monnoroch, рекомендую вначале ознакомиться с ней, т.к. в рамках этой не хотелось бы тратить время на базовые вещи.

Итак, если вам уже знакомы некоторые возможности шаблонов в D2, я хотел бы подробнее рассказать о том, что сопутствует им — инструментах статической интроспекции, нюансах CTFE и даже такой запретной, но притягательной вещице, как mixin.

Цель — больше наглядных примеров кода с комментариями и меньше слов.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии38

DriverPack Solution 12

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

Для тех кто не в курсе, что это и с для чего:

DriverPack Solution — не простой установщик драйверов.
Функции диагностики компьютера и создания бэкапов драйверов делают его незаменимым для любого сисадмина! Быстро определит ваши железки по ID и поставит из своего пака или скачает с инета.
Читать дальше →
Всего голосов 87: ↑66 и ↓21+45
Комментарии69

Профилирование программ в QNX Momentics

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

Общие сведения



QNX Momentics Professional Edition (PE) основанная на платформе Eclipse — это полнофункциональный и высокоинтегрированный профессиональный комплект разработчика, который содержит все необходимое для построения и оптимизации приложений для ОСРВ QNX Neutrino. Благодаря широкому набору удобных инструментов – от средств встраивания на процессорную плату до средств удаленной диагностики – комплект QNX Momentics PE обеспечивает единую, гибкую программную среду для всего цикла разработки.

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

В данном руководстве по шагам профилируем учебное, многопоточное приложение sy21 с помощью инструментов QNX System Profiler и QNX Application Profiler, для демонстрации возможностей средств профилирования в QNX Momentics.

Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии4

Разработка приложений для Meego Harmattan

Время на прочтение14 мин
Количество просмотров5.3K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

image
В данной статье хотелось бы поделится с Хабрасообществом своим опытом по разработке софта с использованием QtComponents'ов на примере Meego Harmattan'а. Писать мы будем редактор заметок с синхронизацией средствами Ubuntu One.

Читать дальше →
Всего голосов 62: ↑51 и ↓11+40
Комментарии9

LLVM 3.0 Release

Время на прочтение2 мин
Количество просмотров2.1K
1 декабря состоялся релиз LLVM 3.0 (Low Level Virtual Machine) — «инфраструктуры для компиляторов», которая генерирует платформонезависимый оптимизированный байткод низкого уровня (см. обзор на Хабре). LLVM используется в том числе в официальных средствах разработки для Mac OS X и iOS.

С момента выхода LLVM 2.9 прошло шесть месяцев, новшеств довольно много, в том числе новый «жадный» аллокатор регистров. Он применяет интересные способы оптимизации и способен значительно улучшить производительность кода.
Читать дальше →
Всего голосов 36: ↑31 и ↓5+26
Комментарии7

Разбираем исходный код GNU Coreutils: утилита yes

Время на прочтение6 мин
Количество просмотров11K
(Статья доступна для оффлайн чтения: Markdown | PDF | PDF (print) | HTML)

Зачем?


Все вокруг постоянно говорят: «Хочешь научиться писать профессиональные программы? Посмотри, как это делают другие!». Вот и я решил последовать этому совету, тем более что моё обучение в университете как раз подходит к концу. Особенно интересно сравнить то как учили делать и то как делается в реальном мире. В качестве примера для подражания был выбран пакет GNU Coreutils. В нём есть всё:
  1. Жёсткие требования к переносимости.
  2. Большой жизненный цикл.
  3. Огромная команда разработчиков.
  4. Код различной сложности: от тривиального echo до супер-изощерённого sed, от чисто прикладного wc до более близкого к ОС mkdir.
Читать дальше →
Всего голосов 103: ↑93 и ↓10+83
Комментарии46

Интеграция приложений Qt в среду Mac OS X (с использованием Cocoa и Objective-C++)

Время на прочтение9 мин
Количество просмотров14K
Доброго всем дня!

Недавно я писал о кастомизации заголовка окна в Mac OS X и получил реквесты написать поподробнее о взаимодействии Qt и Cocoa. Думаю, тему можно немного развернуть и написать об интеграции приложений, написанных с помощью Qt, в среду Mac OS X. Оговорюсь, что используется в данном случае Qt for Cocoa, если возьмёте Qt for Carbon, то и работать придётся только с карбоном. Но он морально устарел, и использовать его стоит только в крайних случаях.

Обычная Qt-программа имеет ряд несостыковок с Apple HIG. Точнее, может иметь, так как не всем программам нужен дополнительный функционал. Например, не любой программе надо иметь бэдж поверх значка в доке, расширять меню дока или выносить/дублировать некоторые функции в маковское меню.

Но что делать, если такой функционал нужен? Если нужно отображать в доке количество уведомлений (а-ля скайп), обрабатывать клик по иконке в доке, добавлять свои пункты меню в док, да ещё и иметь нормальное меню, в общем, сделать так, чтобы программа смотрелась как родная в Mac OS? Что-то из этого можно сделать с помощью штатных или полудокументированных функций Qt, а что-то — только с использованием Cocoa и, соответственно, Objective-C… Что же делать?

Нам поможет Objective-C-plus-plus!
Всего голосов 48: ↑46 и ↓2+44
Комментарии25

Разработка ПО: 1. Индустрия на стероидах

Время на прочтение5 мин
Количество просмотров2.2K
Битва закончена, люди много говорят о том, какой методикой они руководствовались, когда принимали свои решения, но вообще-то всегда бывает чертовски много того, к чему приходят на ощупь.
Адмирал Ф.Д.Флетчер

image

Несколько дней назад я размышлял, почему так получилось, что тщательно прописанный и формализованный проект в очередной раз со свистом вылетел из сроков и бюджета, превысив их в разы. Иногда бывает, что проекты ведут себя по другому, но чаще происходит именно так. И это мало зависит от того, какую методику я использую для оценки объема работ и самой разработки. Даже McConnell, которого я считаю серьезным авторитетом в области разработки ПО, в начале книги Software Estimation: Demystifying the Black Art констатирует то, что простые методики оценки размера проекта удивительным образом оказывается ничуть не хуже сложных и испытывают те же самые проблемы. Возможно этот вывод можно распространить не только на методики оценки.

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

Речь пойдет о достаточно простых вещах, но я неоднократно замечал, что в научных исследованиях прогресс или тупик возникает, когда простая и очевидная вещь оказывается не тем, чем она кажется, или дефект в программе внезапно обнаруживается в модуле, который “не может” содержать ошибку.

(на иллюстрации персонаж фильма «Железный человек 2» Иван Ванко в момент произнесения фразы «Ваш софт — говно»)

1. Индустрия на стероидах


Читать дальше →
Всего голосов 49: ↑43 и ↓6+37
Комментарии6

Пишем примитивный и никому не нужный компилятор

Время на прочтение9 мин
Количество просмотров173K
Я считаю, что каждый программист должен написать свой компилятор.

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

В посте мы рассмотрим, как можно написать свой компилятор C-подобного языка меньше чем за час, исписав всего 300 строчек кода. В качестве бонуса, сюда входит и код виртуальной машины, в байткод которой будет компилироваться исходник.
Читать дальше →
Всего голосов 247: ↑231 и ↓16+215
Комментарии67

Qt Quick и Box2d: Симулируем физику

Время на прочтение12 мин
Количество просмотров15K
Этот пост участвует в конкурсе „Умные телефоны за умные посты
image
Даже не смотря на то, что многие программисты, в данный момент, не спешат переводить разработку своих приложений и игр на рельсы Qt Quick, инфраструктура вокруг самой технологии с каждым днём лишь растёт и развивается.

Вот и до симуляции физики в двухмерном пространстве дошло дело. А вернее до появления QML-плагина. который позволяет с присущей Qt Quick легкостью интегрировать в своё приложения физический движок Box2D. Вот об этом сегодня и поговорим. А точнее, разберём на примере реализации простого арканоида, насколько быстро можно создать простенькую игру, никогда ранее не работая с физическими движками и почти незная терминологии.
Читать дальше →
Всего голосов 52: ↑36 и ↓16+20
Комментарии25

Кто такой «хороший программист»?

Время на прочтение3 мин
Количество просмотров7.1K
Я уже не первый раз замечаю, что сам не знаю, чем закончится начатая мною статья. Вот, например, совсем недавно меня попросили написать небольшую заметку в корпоративную газету о .NET направлении. Я выбрал направление, начал его развивать, в результате чего получилась статья, в которой .NET-а не оказалось вовсе. Так что в этот раз мы продолжим философскую тему, но если в прошлый раз речь шла о хорошей архитектуре, то на этот раз речь пойдет о том, кто такой хороший программист и какие вопросы стоит задавать себе время от времени, чтобы двигаться в правильном направлении.

Что отличает хорошего программиста от посредственного? И как самому стать хорошим программистом и заслужить среди друзей и коллег «почет и уважение»?

Читать дальше →
Всего голосов 135: ↑78 и ↓57+21
Комментарии81

ARM выпустила Development Studio 5 Community Edition — среду разработки для Android

Время на прочтение1 мин
Количество просмотров8.6K
Вчера ARM выпустил среду разработки для Android — ARM Development Studio 5 Community Edition, учитывающую особенности микропроцессоров ARM, прелесть которой заключается в том, что эта версия стала бесплатной, в отличие от ранее представленной коммерческой версии. Конечно, выпущенная среда CE содержит ограниченный функционал коммерческой версии, однако же все основные инструменты для написания и отладки кода присутствуют в полной мере — включая стандартный SDK (Software Development kit) и набор NDK (Native development kit).

Среда разработки представляет из себя кастомизированный Eclipse, сама разработка ведется на С++.

Утвердается, что программы, написанные при помощи среды разработки ARM при аналогичных условиях работают в 4 раза быстрее, чем Java-код, запущенный в аналогичных условиях и написанный в Eclipse при помощи ADT от Google.

Доступны версии для Windows и Linux. Страница продукта находится здесь.
Всего голосов 25: ↑23 и ↓2+21
Комментарии22

Расширения Firefox для веб-разработки на все случаи жизни

Время на прочтение6 мин
Количество просмотров57K
Исторически сложилось так, что Firefox пользуется широкой популярностью среди веб-разработчиков благодаря его расширяемости через подключение всевозможных плагинов и дополнений, написанных сторонними разработчиками. Идея выделения функционала в расширения позволила решать массу всевозможных задач прямо в браузере, не прибегая к внешним инструментам.

Безусловно в этом списке вы обязательно найдёте уже знакомые расширения, однако огромный пласт полезных расширений всегда остаётся в стороне. Так что приготовьтесь установить ещё парочку расширений! :)

Встроенные инструменты разработки в Firefox


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

При разработке интерфейса этих инструментов было перепробовано множество подходов и решений. В результате получился довольно приятный интерфейс, который любой желающий может испробовать, установив Firefox Aurora (хм, вы ещё его не поставили?)



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

Читать дальше →
Всего голосов 216: ↑197 и ↓19+178
Комментарии55

Работа со строковыми ресурсами Android

Время на прочтение9 мин
Количество просмотров119K
Понимание, что используемый в программе текст это отдельный ресурс, такой же как изображения и звук, приходит на сразу. Но стоит несколько раз поменять имя программы в паре десятков файлов или заняться исправлением однотипной синтаксической ошибки в пяти, шести разных местах и необходимость хранить строки отдельно от кода становиться очевидной.
В Android работа со строковыми ресурсами сделана очень удобна и не вызывает поначалу никаких сложностей. В официальной документации она описана в статье String Resources. В файле project\res\values\strings.xml задаем строку и ее имя после чего в Activity загружаем строку по этому имени.
Читать дальше →
Всего голосов 41: ↑32 и ↓9+23
Комментарии25

Исследование защиты программы Quick Password Recovery PRO 1.7

Время на прочтение14 мин
Количество просмотров3.2K
Всем привет. Сегодня я хочу на примере программы Quick Password Recovery Pro 1.7.1 показать исследование защиты в которой используются пару интересных приемов и хеш-функция.
Читать дальше →
Всего голосов 57: ↑48 и ↓9+39
Комментарии10

Миграции баз данных — обзор библиотеки и ее использование

Время на прочтение5 мин
Количество просмотров5.3K
Как вы уже могли прочесть, недавно вышла новая версия CodeIgniter, одним из нововведений которого является библиотека Migration. Один из главных ее разработчиков, Phil Sturgeon был настолько воодушевлен удобством управления версиями баз данных для Rails, что решил создать аналог такого метода для CodeIgniter, и вот, в конце-концов вы можете видеть эту библиотеку в официальной поставке.
Из этой статьи вы получите общее представление о миграциях, а также научитесь их создавать. Во второй же части, мы с вами увидим, как легко они могут быть интегрированы в ваше приложение.
Данная статья будет полезна начинающим пользователям CodeIgniter, но я надеюсь что и более продвинутые коллеги узнают об этой чудесной библиотеке и подчерпнут для себя что-нибудь новое.

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

Итак, если я сумел вас заинтересовать, то добро пожаловать под кат!
Всего голосов 40: ↑38 и ↓2+36
Комментарии22

Информация

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