Архивы рубрики: Интернет

Продвинутые советы по рекламе вКонтакте

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

Удачные посты получились на блоге у Димка про создание прибыльной CPA кампании в Facebook и у Маула, про работу с PPC рекламой вКонтакте.
Читать далее

Безвизовые страны для отдыха

Travel with passport and map

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

Обзор браузеров Google Chrome, Яндекс браузер, Mozilla, Opera

Чем отличаются браузеры и какой выбрать?

Google Chrome, Яндекс браузер, Mozilla, Opera.

В этой статье я рассмотрю 4 популярных браузера: Google Chrome, Яндекс браузер, Mozilla, Opera. Так же постараюсь дать ответ, какой же браузер наиболее лучший, безопасный, быстрый и удобный.

Google Chrome — создан на базе движка Webkit. Разработчиками компании Google. По сравнению со своими основными конкурентами MS Explorer, Mozila и Opera, браузер молодой, но за очень короткий срок благодаря свой быстроте, безопасности и удобству Google Chrome успел полюбиться большому числу пользователей и успешно конкурирует с вышеперечисленными браузерами. Гугл Хром успешно интегрируется со всеми сервисами Google, что не удивительно.

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

Mozilla — не молодой и очень популярный проект. Mozilla Firefox работает на собственном движке Gecko. Среди пользователей этот браузер заслужил популярность за стабильную и быструю работу. Mozilla имеет множество надстроек и плагинов, за счёт чего браузеру до сих пор удаётся удерживать свою популярность среди пользователей.

Opera — старейший браузер, со множеством расширений и плагинов. Имеет огромную популярность среди пользователей.

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

Безопасность.
Читать далее

Синтаксис Active X

Для органов управления ActiveX попускать кавычки нельзя.

CODEBASE = URL

В данном атрибуте пишется URL-адрес файла, который содержит вызываемый орган управления и доступный для получения с одного из серверов Интернета.

CODETYPE = MIME-тип, TYPE = MIME-тип

Данные два необязательных атрибута дают возможность указать типы (в терминах стандарта MIME) файлов, к которым обращаются атрибуты CLASSID (атрибут CODETYPE) и DATA (атрибут TYPE).

DATA = URL

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

DECLARE

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

ID = идентификатор

Атрибут ID дает возможность приписать создаваемому объекту имя в форме какого-то идентификатора. Обращение к данному объекту от других объектов или сценариев возможно только через указание данного имени.

NAME = идентификатор

Этот необязательный атрибут. Создаваемый объект может внести свой вклад в данные, которые броузер отправит на сервер после заполнения пользователем HTML-бланка.

SHAPES

Такой пустой атрибут заставляет броузер наложить на прямоугольник, который занимает объект, карту (map), так, чтобы отдельные части этого прямоугольника являлись рабочими частями гипертекстовых ссылок. Координаты этих частей и URL-адреса ссылок для них записываются с помощью тегов со специальными дополнительными атрибутами, которые должны находиться между и соответствующим ему
.

STANDBY = текст

В данном атрибуте можно приводить текстовую надпись, которая будет находиться в прямоугольнике, отведенном объекту, пока сам объект загружается и запускается.

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

 

Органы управления (controls) Active X

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

В отличие от модулей Netscape Navigator органы управления ActiveX обладают более узкой и дробной специализацией, меньшими размерами передаваемых по сети файлов, а также полностью автоматизированной установкой. Наткнувшись в HTML на ссылку на опреде-
ленный орган управления, броузер проверяет, нет ли его на компьютере пользователя (т. е. не применялся ли он раньше). Если орган управления был найден, броузер его запускает, передает необходимые для работы данные и тем самым избавляется от лишнего выхода в сеть.
При отсутствии в компьютере этого компонента броузер обращается к серверу, адрес которого указан в HTML- документе и, взяв с него файл, устанавливает и регистрирует новый орган управления в Windows. В результате органом управления может пользоваться не только
броузер, но и каждое приложение, которое может работать с так называемыми «нестандартными органами управления OLE» («OLE Custom Controls», OCX). Самые важные достоинства и недостатки органов управления ActiveX ярче всего демонстрирует сравнение их с Java-апплетами. Первым явным недостатком всей системы ActiveX является ее жесткая привязка к определенной операционной системе (Windows 95-NT). Так как значительную часть поддержки ActiveX и взаимодействия компонентов OLE осуществляет сама операционная система, то перенести все это, например, на UNIX практически невозможно.

Еще один серьезный недостаток — безопасность. Файл, расширение которого .ocx с компонентом системы ActiveX, получает управление почти так же, как и любой другой применяемый файл в Windows, и имеет те же права — к примеру, право бесконтрольной записи на диск (под Windows NT такие права могут быть ограничены уровнем привилегий пользователя, который запускает этот компонент). Здесь открываются
большие перспективы для деятельности авторов вирусов и других вредных программ, для которых ActiveX может стать вполне комфортной питательной средой.

Система ActiveX и использованный в ней механизм безопасности кое в чем намного удобнее использования языка Java.

Во-первых, отсутствие защитной оболочки виртуальной машины дает возможность расширить функциональность компонентов ActiveX — они имеют прямой и эффективный контроль над компьютером. Однако основной плюс технологии ActiveX, из-за которого она так резво стартовала и так быстро завоевала свой круг потребителей, — это то, что программистам, которые желают заняться разработкой компонентов ActiveX, почти не приходится переучиваться. OCX-модули появились одновременно с версией 4.0 языка Visual Basic и очень многое взяли от еще более старого стандарта VBX («Visual Basic Controls»). Органы управления VBX в свое время и стали причиной развития целой индустрии программных модулей, которые каждый программист может купить и применять в своих разработках. Переделать же OCX-модуль в компонент ActiveX даже легче, чем старый VBX в OCX.

 

Оптимизация для конкретных моделей процессоров

Если некоторая программа будет работать на компьютерах со строго определенными моделями процессоров, можно попытаться применить ориентированные на определенные модели процессоров команды.

Многие из новых команд дают возможность повысить производительность программы.

1. Линейные и циклические сдвиги с аргументом, не равным единице.
2. Команда PUSH с непосредственным операндом.
3. Команды ввода и вывода символьных строк.
4. Команды обмена со стеком тем, что содержится во всех регистрах PUSHA и POPA.
5. Команды ENTER и LEAVE для выделения и освобождения кадра стека.
6. Команды контроля соблюдения границ массива BOUND.
7. Команды умножения числа на непосредственный операнд.

Можно увеличить производительность на несколько процентов за счет малого объема памяти. При составлении программ для процессоров 80386 и 80486 и их разновидностей можно повысить производительность 16-разрядной программы, используя все вышеупомянутые команды для процессоров 80188, 80188 и 80286 и при этом выравнивая данные и адреса передачи управления по границам 32-разрядных слов,
применить следующие дополнительные особенности.

1. 32-разрядные регистры (но применять их следует с осторожностью, так как их содержимое не сохраняется, если работают некоторые эмуляторы системы DOS, например модуль совместимости с DOS системы OS-2 версий до 1.3).
2. Команды пересылки с распространением нуля или знакового бита (MOVZX или MOVSX).
3. 64-разрядные сдвиги (в сдвоенных регистрах) — команды SHLD и SHRD.
4. Установка в байте параметров «истина» или «ложь» по содержимому флажков центрального процессора, что дает возможность избавиться от команд условного перехода (SETZ, SETC и т. д.).
5. Команды проверки, установки, сброса, инвертирования и просмотра битов (BT, BTC, BTR, BTS, BSF и BSR).
6. Обобщенная индексная адресация и режимы адресации с масштабированием индексов.
7. Быстрое умножение с помощью команды LEA с применением масштабированной индексной адресации.
8. «Дальние» условных переходов.
9. Перемножение 32-разрядных чисел и деление 64-разрядных чисел на 32-разрядные.
10. Дополнительные сегментные регистры (FS и GS).
11. Команды загрузки сегментных регистров SS, FS и GS (LSS, LFS и LGS).

 

Управляющие таблицы

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

Особенно удобно применять оптимизацию просмотром управляющих таблиц. Покажем прикладную систему, в которой удобнее всего применять управляющие таблицы. Это программа, в которой необходимо поворачивать и перемещать отрезки линий, чтобы создавать у пользователя иллюзию объемного изображения. Подобная программа должна определять синусы и косинусы углов. Для вычисления данных функций обычно используют числа с плавающей точкой и разложение в ряды, расчет которых влечет за собой множественные умножения и деления, а эти операции по времени счета «дорогостоящие».

При этом получаемые величины обладают значительно большей точностью, чем
это реально необходимо для обычных графических адаптеров персональных компьютеров: даже цифры с плавающей точкой одинарной точности (32 разряда) вычисляются до 8 десятичных знаков, из которых необходимы только 4 или 5. В подобной задаче и можно пользоваться преимуществами таблицы, в которую можно занести синусы углов с шагом в 1 градус и с точностью до 4 десятичных знаков.

Иногда управляющие таблицы вполне эффективно применяются в самых неожиданных ситуациях. Например, необходимо составить подпрограмму, которая будет рассчитывать число ненулевых разрядов в байте. Можно составить цикл со сдвигами и действитель-
но сосчитать ненулевые разряды. Однако намного быстрее будет применить таблицу, позиции в которой будут соответствовать значениям байта — от 0 до 255, а значения в данных позициях — числу ненулевых разрядов для каждого из подобных значений байта. При этом для повышения быстродействия можно оформить данную подпрограмму как макроопределение и встраивать в программу везде, где необходимо. Для байтовых таблиц можно также повысить производительность с помощью замещения команды MOV на специальные команды XLAT. При этом можно будет обрабатывать не только байтовые таблицы.

 

Оптимизация переходов и вызовов подпрограмм

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

В этом случае существуют свои проблемы, но сначала рассмотрим некоторые особенности процессоров фирмы Intel.

Быстродействие данных процессоров в значительной мере зависит от их архитектуры, основанной на простой конвейерной схеме, которая содержит три компоненты: шинный интерфейс (BIU — Bus Interface Unit), очередь упреждающей выборки и исполнительный модуль (EU — Execution Unit). Если шина памяти в нерабочем состоянии, например в случае выполнения команды из многих циклов, с операндами, находящимися в регистрах, шинный интерфейс получает байты команд из памяти и располагает их в очередь упреждающей выборки,
последовательно продвигаясь дальше от текущего расположения командного счетчика центрального процессора. Когда исполнительный модуль заканчивает выполнение очередной команды, он ищет следующую команду в ряде упреждающей выборки: если она есть, к ее рас-
шифровке можно приступать непосредственно, не обращаясь лишний раз к памяти.

Каждый раз, когда исполнительный модуль уточняет команду перехода или вызова, он аннулирует текущее содержимое очереди упреждающей выборки и определяет новый счетчик команд. Затем шинный интерфейс снова выбирает байты команд, начиная при этом с нового адреса, и заносит их в очередь. Исполнительный модуль в это время должен «простаивать», пока не будет определена полная команда. При этом все обращения к памяти, необходимые для исполнения команды перехода по новому адресу, тоже влияют на выборку следующих команд из памяти. Может пройти много времени, прежде чем шина опять заполнит очередь упреждающей выборки, так, чтобы применяемый модуль мог работать с наибольшей скоростью. Кроме того, размер очереди командных байтов не одинаков для разных моделей центральных процессоров. Он составляет только 4 байта в ранних моделях и 32 байта в современных компьютерах. Таким образом, крайне сложно предсказать время исполнения для данных последовательностей команд исходя из количества тактов и длин в байтах. Также состояние очереди команд для разных типов центральных процессоров определяется «выравниванием» команд. Шинный интерфейс обязан выбирать команды по разрядности адресной и информационной частей шины. Исходя из всего вышесказанного, можно сформулировать первое правило оптимизации переходов и вызовов: необходимо проверить, что их точки назначения попадают в подходящие границы адресов для того типа процессора, на котором данная программа будет работать чаще всего. При этом следует добавить подходящий атрибут выравнивания (WORD или DWORD) в объявления сегментов, а также вставить директиву ALIGN перед каждой меткой.