[UX] Артуро Толедо — 24 недели Metro-дизайна для Windows Phone
Оригиналы (англ.) - http://ux.artu.tv/
Перевод первых трёх статей
Принципы
Процесс проектирования приложений
Формирование идей и концепции
Статьи вообще направлены на Metro, как не трудно догадаться, но могут быть использованы и для разработки интерфейсов вообще.
Первые три статьи как раз описывают общие принципы практически без перехода к конкретике.
[Алгоритмы] MAXimal
Нашел отличный сайт: http://e-maxx.ru/algo/
"Здесь представлено 145 алгоритмов. Ко всем алгоритмам даны краткие описания и программы на C++."
Также на сайте представлено большое количество книг по программированию
МСВС и Qt
Понадобилось запустить программу под МСВС3.0 (Kernel 2.4.32, gcc-2.95 и 3.3, Qt 4.4.2)
Сама программа писалась под Qt 4.6.3
Отличия 4.6 от 4.4 достаточно существенны, чтобы программы не компилировалась совсем.
Статическая сборка (собиралось под gcc44 и на ядре 2.6+) работать отказалась, мотивируя отказ фразой "Исключение в операции с плавающей точкой (core dumped)"
Решил задачу так.
Qt 4.6 можно собрать только на gcc4, поэтому скачал gcc-4.2, скомпилировал и поставил.
Скачал qt-4.6.3 (qt-everywhere-opensource-src-4.6.3.tar.gz), распаковал, собрал как статику:
./configure -debug-and-release -static -qt-sql-sqlite -no-qt3support -qt-libtiff -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tools -no-webkit -prefix /opt/qt4.6.3static
Всё успешно собралось и установилось.
Creator удалось поставить вот такой версии - qt-creator-linux-x86-gcc3.3-opensource-1.2.1.bin
Проект с программой успешно собрался, но release версия так работать и не захотела. Segmentation fault и всё тут.
Зато debug версия запустилась на ура.
Перетащил на чистый МСВС - не может найти и загрузить libstdc++.so.6
Утаскиваем и её. Положил рядом с бинарником, сделал симлинк ln -s libstdc++.so.6.0.3 /usr/lib/libstdc++.so.6
Всё завелось и полетело. Решить бы еще проблему с release версией... Но это уже не так страшно.
Компиляция программ в консоли Линукс (на примере CentOS)
Для компиляции программ необходимо установить gcc.
Для С:
yum install gcc
Для С++:
yum install gcc-c++
Программы достаточно удобно писать в MC (yum install mc.i386)
Делаем: mcedit <имяфайла> (например mcedit hello.cpp - окончание у файлов *.cpp - c++, а *.c - C)
В появившемся оконце набираем свою программу. Например, классическое, на С++:
#include <iostream> using namespace std; int main() { cout << "Hello, world" << endl; return 0; }
Нужно делать типа пустую строку после окончания набора кода.
Жмем F2 для сохранения и F10 для выхода (или еще можно "сворачивать" редактор нажатием ctrl+o (разворачивать также)
Теперь набираем:
g++ hello.cpp -o hello
и, если все правильно, получаем на выходе исполняемый файлик hello, который можно юзать - ./hello
Для С-программ:
gcc <имя_файла> -o <имя_выходного_файла>
Объектно-ориентированное программирование. Введение.
Существует два основных способа проектирования программных систем – структурное проектирование, основанное на алгоритмической декомпозиции, и объектно-ориентированное проектирование, основанное на объектно-ориентированной декомпозиции. Разделение по алгоритмам концентрирует внимание на порядке происходящих событий, а разделение по объектам придает особое значение агентам, которые являются либо объектами, либо субъектами действия. Однако эти способы, по сути, ортогональны, поэтому нельзя сконструировать сложную систему одновременно двумя способами. Необходимо начать разделение системы либо по алгоритмам, либо по объектам, а затем, используя полученную структуру, попытаться рассмотреть проблему с другой точки зрения.
Алгоритмическую декомпозицию можно представить как обычное разделение алгоритмов, где каждый модуль системы выполняет один из этапов общего процесса. При объектно-ориентированной декомпозиции каждый объект обладает своим собственным поведением, и каждый из них моделирует некоторый объект реального мира. С этой точки зрения объект является вполне осязаемой вещью, которая демонстрирует вполне определенное поведение. Объекты что-то делают, и мы можем, послав им сообщение, попросить их выполнить некоторые операции.
Объектная декомпозиция имеет несколько преимуществ перед алгоритмической:
• объектная декомпозиция уменьшает размер программных систем за счет повторного использования общих механизмов, что приводит к существенной экономии выразительных средств;
• объектно-ориентированные системы более гибки и проще эволюционируют со временем, потому что их схемы базируется на устойчивых промежуточных формах. Действительно, объектная декомпозиция существенно снижает риск при создании сложной программной системы, так как она развивается из меньших систем, в которых мы уже уверены;
• объектная декомпозиция помогает нам разобраться в сложной программной системе, предлагая нам разумные решения относительно выбора подпространства большого пространства состояний.
В объектно-ориентированном анализе существует четыре основных типа моделей: динамическая, статическая, логическая и физическая. Через них можно выразить результаты анализа и проектирования, выполненные в рамках любого проекта. Эти модели в совокупности семантически достаточно богаты и универсальны, чтобы разработчик мог выразить все заслуживающие внимания стратегические и тактические решения, которые он должен принять при анализе системы и формировании ее архитектуры. Кроме того, эти модели достаточно полны, чтобы служить техническим проектом реализации практически на любом объектно-ориентированном языке программирования.
Фактически все сложные системы можно представить одной и той же (канонической) формой – в виде двух ортогональных иерархий одной системы: классов и объектов. Каждая иерархия является многоуровневой, причем в ней классы и объекты более высокого уровня построены из более простых. Какой класс или объект выбран в качестве элементарного, зависит от рассматриваемой задачи. Объекты одного уровня имеют четко выраженные связи, особенно это касается компонентов структуры объектов. Внутри любого рассматриваемого уровня находится следующий уровень сложности. Структуры классов и объектов не являются независимыми: каждый элемент структуры объектов представляет специфический экземпляр определенного класса. Объектов в сложной системе обычно гораздо больше, чем классов. С введением структуры классов в ней размещаются общие свойства экземпляров классов.
Структурный подход состоит в декомпозиции (разбиении) системы на элементарные функции, т.е., система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее. Процесс разбиения продолжается вплоть до конкретных процедур. При этом создаваемая система сохраняет целостное представление, в котором все составляющие компоненты взаимоувязаны.
Все наиболее распространенные методологии структурного подхода базируются на ряде общих принципов. В качестве двух базовых принципов используются следующие:
• принцип решения сложных проблем путем их разбиения на множество меньших независимых задач, легких для понимания и решения;
• принцип организации составных частей проблемы в иерархические древовидные структуры с добавлением новых деталей на каждом уровне – так называемый принцип иерархического упорядочивания.
В структурном анализе используются в основном две группы средств, иллюстрирующих функции, выполняемые системой и отношения между данными. Каждой группе средств соответствуют определенные виды моделей (диаграмм), наиболее распространенными среди которых являются следующие:
• SADT (Structured Analysis and Design Technique) модели и соответствующие функциональные диаграммы;
• DFD (Data Flow Diagrams) диаграммы потоков данных;
• ERD (Entity-Relationship Diagrams) диаграммы "сущность-связь".
На стадии проектирования системы модели расширяются, уточняются и дополняются диаграммами, отражающими ее структуру.
Перечисленные модели в совокупности дают полное описание системы независимо от того, является ли она существующей или вновь разрабатываемой. Состав диаграмм в каждом конкретном случае зависит от необходимой полноты описания системы.
Полный справочник по C++
Полный справочник по C++ (C++: The Complete Reference, 4th Edition )
4-е издание
Герберт Шилдт (Herbert Schildt)
Год выпуска: 2003
Изд-во: Диалектика-Вильямс
ISBN: 5-8459-0489-7
800 страниц
Формат: djvu
http://rs174.rapidshare.com/files/353769049/Pospps.rar
или
http://narod.ru/disk/19646038000/Pospps.rar.html
или
http://axis.bplaced.net/files/Pospps.rar
Венгерская нотация (Hungarian Notation)
Автор: Charles Simonyi (Чарльз Симонии), Корпорация Microsoft, ноябрь 1999
Перевод: Nick E. Geht (Гехт Николай), Центр Интернет ОмГУ, декабрь 1999
Резюме документа
"Венгерское соглашение" об именах идентификаторов Чарльза Симонии.