Форум вебмастеров и SEO оптимизаторов
Недавно наткнулся на один форум пока искал в гугле некоторые советы по оптимизации сайта. Форум мне показался достаточно приятным и полезным, иначе я бы не стал о нем писать. Новые сообщения появляются каждый день, видно, что форум живой и на нем общаются люди. Для программистов и оптимизаторов есть хорошая возможность поучаствовать в развитие данного форума. Вы можете поделиться новостью, рекламировать свою библиотеку, свой скрипт или описать свой проект.
Можно сказать, что форумов на данную тематику много и еще один не пристроится, но это не так. Администрация и посетители сайта создают особую атмосферу общения, что позволяет новичкам чувствовать себя комфортно и не стесняясь задавать интересующие вопросы. Скорость ответа на новые сообщения радует, т.к. администрация старается угодить всем и не дать ни одной теме упасть в недра форума.
Веб-программирование в Python. Создание и запуск сайтов на Python
Язык программирования Python широко применяется для создания web-сайтов и используется для решения различных проблем и задач которые возникают перед программистом. Во-первых, код на языке программирования Python предоставляет простые и удобные методы для генерирования набора статических HTML-страниц, которые будут обслуживаться веб-сервером. Например, сценарии может принимать некоторое содержимое и добавлять к нему элементы оформления, типичные для веб-сайта (панель навигации, боковую панель, рекламу, стили и так далее). Все это фактически сводится к работе с файлами и обработке текста.
Во-вторых, скрипты написанные на языке программирования Python могут применятся для создания динамических сайтов т.е. в связке MySQL + JavaScript + Ajax + Python. Сайт может работать на базе обычного веб сервера Nginx или Apache и отправлять данные из форм сценарию на языке Python для обработки и возвращение результата работы. В данном случае Python используется как обработчик данных из форм.
Модуль StringIO в Python
Модуль StringIO позволяет работать со строкой как с файловым объектом. Все операции с файловым объектом производится в оперативной памяти. Для создания нового объекта предназначен класс StringIO. Формат конструктора класса:
StringIO([<Начальное значение>])
Если параметр не указан, то начальным значением будет пустая строка. После создания объекта указатель текущей позиции устанавливается на начало "файла". Объект, возвращаемый конструктором класса, имеет следующие методы:
Создание простейшего проекта в среде Eclipse CDT
В самом начале необходимо кликнуть Выбрать Файл – Создать - C++ Project или нажать на панели инструментов стрелку рядом с кнопкой New C/C++ Project и в выпадающем списке выбрать C++ Project. В результате откроется окно создания проекта.
В окне следует ввести имя проекта, а затем в поле Project type (тип проекта) выбрать: Executable - Empty Project (Исполняемый - Пустой проект). Тип Executable обеспечивает создание исполняемого приложения (т.е. файла с расширением .ехе ). При этом файл сценария построения проекта (make-файл) генерируется средой CDT автоматически.
Разработка приложений под Windows 8
В последние несколько лет мы наблюдаем ситуацию, которую эксперты называют консьюмеризацией IT. Не погружаясь в историю данного явления, которое, кстати, характерно не только для IT-технологий, надо выделить главное: на сегодняшний день как раз «консьюмеры» готовы платить за значительный размер добавленной стоимости – иногда за счет количества, иногда – желанием и способностью получать новинки, а также интересные идеи.
Операционная система Windows, которая стремительно завоевывала популярность во время роста интереса простых обывателей к интернет-технологиям, интенсивно развивалась до середина 2000-х, пока персонализация вычислений не перешла на новый виток развития – мобильность и доступность.
Классы встроенных исключений в Python
Все встроенные исключения в языке Python представлены в виде классов. Иерархия встроенных классов исключений показана в листинге ниже.
Иерархия встроенных классов исключений
BaseException GeneratorExit (в Python 2.6 и выше) KeyboardInterrupt SystemExit Exception GeneratorExit (в Python 2.5) StopIteration Warning BytesWarning (в Python 2.6 и выше) DeprecationWarning, FutureWarning, ImportWarning PendingDeprecationWarning, RuntimeWarning, SyntaxWarning UnicodeWarning, UserWarning StandardError ArithmeticError FloatingPointError, OverflowError, ZeroDivisionError AssertionError AttributeError BufferError (в Python 2.6) EnvironmentError IOError OSError WindowsError EOFError ImportError LookupError IndexError, KeyError MemoryError NameError UnboundLocalError ReferenceError RuntimeError NotImplementedError SyntaxError IndentationError TabError SystemError TypeError ValueError UnicodeError UnicodeDecodeError, UnicodeEncodeError UnicodeTranslateError
Основное преимущество использования классов для обработки исключений заключается в возможности указания базового класса для перехвата всех исключений соответствующих классов-потомков. Например, для перехвата деления на ноль мы использовали класс ZeroDivisionError. Если вместо этого класса указать базовый класс ArithmeticError, то будут перехватываться исключения классов FloatingPointError, OverflowError и ZeroDivisionError. Пример:
Инструкция with - as в Python
Начиная с версии 2.6, язык Python поддерживает протокол менеджеров контекста. Этот протокол гарантирует выполнение завершающих действий (например, закрытие файла) вне зависимости от того, произошло исключение внутри блока кода или нет. Необходимо заметить, что в Python 2.5 также можно использовать протокол, предварительно указав выражения (в Python 2.6 и выше это выражение указывать не нужно).
from __future__ import with_statement
Для работы с протоколом предназначения инструкции with ... as. Инструкция имеет следующий формат:
with <Выражение>[ as <Переменная>]: <Блок, в котором перехватываем исключения>Далее...
Обработка исключений
Исключения - это извещения интерпретатора, возбуждаемые в случае возникновения ошибок в программном коде или при наступлении какого-либо события. Если в коде не предусмотрена обработка исключения, то программа прерывается и выводит сообщение об ошибке.
Существует три типа ошибок в программе:
Синтаксические - это ошибка в имени оператора или функции, отсутствие закрывающей или открывающей кавычек и т.д., т.е. ошибки в синтаксисе языка. Как правило, интерпретатор предупредит о наличии ошибки, а программа не будет выполняться совсем. Пример синтаксической ошибки.
>>> print "Нет завершающей кавычки!
SyntaxError: EOL while scanning string literal
Логические - это ошибка в логике работы программы, которые можно выявить только по результатам работы скрипта. Как правило, интерпретатор не предупреждает о наличии ошибки. А программа будет выполняться, т.к. не содержит синтаксических ошибок. Такие ошибки достаточно трудно выявить и исправить.
Свойства класса - ООП Python
Классы нового стиля позволяют создать идентификатор, через который можно получить, изменить или удалить значение атрибута класса. Создается такой идентификатор с помощью функции property(), форма функции:
<Свойства> = property(<Чтение>[, <Запись>[, <Удаление>[, <Строка документирования>]]])
В первых трех параметрах указывается ссылка на соответствующий метод класса. При попытке получить значение будет вызван метод, указанный в первом параметре. При операции присваивания значения будет вызван метод, указанный во втором параметре. Этот метод должен принимать один параметр. В случае удаления атрибута вызывается метод, указанный в третьем параметре. Если в качестве какого-либо параметра задано значение None, то это означает, что соответствующий метод не поддерживается. Рассмотрим свойства класса на примере.
Ограничение доступа к идентификаторам внутри класса
Все идентификаторы внутри класса в языке Python являются открытыми, т.е. доступы для непосредственного изменения. Для имитации частных идентификаторов можно воспользоваться методами __getattr__(), __getattribute__() и __setattr__(), которые перехватывают обращения к атрибутам класса. Кроме того, можно воспользоваться идентификаторами, названия которых начинаются с двух символов подчеркивания. Такие идентификаторы называются псевдочастными. Псевдочастные идентификаторы доступны внутри класса, но не доступны по имени через экземпляр класса.
Тем не менее, изменить идентификатор через экземпляр класса все равно можно, зная, каким образом искажается название идентификатора. Например, идентификатор __privateVar внутри класса Class1 будет доступен по имени _Class1__privateVar. Как видно из примера, перед идентификатором добавляется название класса с предваряющим символом подчеркивания. Приведем пример использования псевдочастных идентификаторов.