Иногда возникает необходимость защитить свое творение, представлен разработанный мною подход, дорогие читатели, на ваше суждение и понимание, данная статья посвещена конфигурированию в 8 версии.
Итак для начала вы создали отчет, обработку или документ который конечно же является шедевром и те ноу хау которые вы там воплотили, не хочется по каким либо причинам, моральным или материальным, делится с клиентом.
1) Разработчики восьмой платформы для этих целей нам предлагают закрыть модуль паролем. Ну что же, большое вам за это спасибо.
Однажды у меня возникла ситуация когда клиент пожелал платить деньги позже, ну что же, хорошо, но прокактить вам жадины меня не придется, работа была сделана в срок и естественно была запоролена.
2) Но ведь от этого она не теряет свой функционал и рабочие свойства, мне могут сказать что работа выполнена плохо и денег мы вам не дадим. Ну что ж, в свой запороленый модуль я вставил такой код:
//СИСТЕМА ЗАЩИТЫ
Который вызывался перед ключевой процедурой или функцией, как вы видите она привязана ко времени и когда оно, время, приходит значение сохраняется даже перевод стрелок не спасает вредного клиента от головной боли, и ему придется раскошелится или связаться с разработчиком.
3)Идем дальше, бывают ситуации когда нужно позволить пользователю обновить конфигурацию, но если вы поставили пароль то при объединении он его обязательно спросит, что же делать, мой вам совет выполните все ваши важные и ключевые процедуры, функции (Даже можно включить вызов из них функции защиты) в экпортном виде, в модуле внешней обработки (модуль которой конечно вы закрыли).
Обработка готова и ваш документ умеет к ней обращатся, теперь нужно сохранить ее в двоичном виде макета, в объекте метаданных который вы разрабатывали.
Можно использовать такой код :
И теперь обращаясь к нашим любимым процедурам через созданную и закрытую обработку, мы не имеем проблем с обновлением.
Примечание - большая часть написанного здесь текста с примерами взята по памяти (пару лет назад изучал достаточно подробно, поэтому может что-то в алгоритмах не работать - я ведь их не копировал откуда-то, а прямо тут же и писал, так что за синтаксические ошибки не пинайте) - на данный момент я активно OLE не пользуюсь (не из-за каких-то проблем с самим OLE, а из-за отсутствия надобности в его использовании в текущий момент).
Основные преимущества, благодаря которым OLE активно используется:
* Для вызывающей базы "по барабану" - какой тип вызываемой базы (DBF или SQL)
* Объектами вызываемой базы можно управлять всеми известными методами работы с объектами в 1С (т.е. со справочниками работают методы ВыбратьЭлементы(), ИспользоватьДату() и т.п., с документами - ВыбратьДокументы() и т.п.), соответственно, можно напрямую решить - стоит отрабатывать конкретные объекты базы OLE или пропустить их.
Пример 1. Присоединение к базе 1С через OLE.
БазаОле=СоздатьОбъект("V77.Application"); // Получаем доступ к OLE объекту 1С
Локальная версия (на одного пользователя): V77L.Application
Сетевая версия: V77.Application
Версия SQL: V77S.Application
Далее вместо термина "вызываемая база" будет написано просто "база OLE", а вместо термина "вызывающая база" - "местная база"
Теперь, мы должны знать несколько параметров для запуска базы OLE: Каталог базы, имя пользователя и пароль. Ну, наверное, еще и желание запустить 1С в монопольном режиме :)
Комментарий: функции СокрЛП() стоят в примере на случай, если пользователь захочет указанные выше переменные сделать в форме диалога, а проблема при этом состоит в том, что в алгоритм программа передаст полное значение реквизита (т.е. допишет в конце значения то количество пробелов, которое необходимо для получения полной длины строки (указана в свойствах реквизита диалога)).
Пример 2. Доступ к объектам базы OLE.
Запомните на будущее как непреложный факт:
1. Из местной базы в базу OLE (и, соответственно, наоборот) напрямую методом присвоения можно перенести только числовые значения, даты и строки ограниченной длины!!! Т.е. местная база поймет прекрасно без дополнительных алгоритмов преобразования полученного значения только указанные типы значений. Кроме того, под ограничением строк подразумевается проблемы с пониманием в местной базе реквизитов объектов базы OLE типа "Строка неограниченной длины". К этому же еще надо добавить и периодические реквизиты. Естественно, под методом присвоения подразумеваются и попытки сравнить объекты разных баз в одном условии (например, в алгоритмах "Если" или "Пока" и т.п.).
2. Есть проблемы при попытке перенести "пустую" дату - OLE может ее конвертировать, например, в 31.12.1899 года и т.п. Поэтому вам лучше заранее выяснить те значения, которые могут появится в местной базе при переносе "пустых" дат, чтобы предусмотреть условия преобразования их в местной базе.
A) Доступ к константам базы OLE:
Б) Доступ к справочникам и документам базы OLE (через функцию "CreateObject"):
После создания объекта справочника или документа к ним применимы все методы, касающиеся таких объектов в 1С:
Заметьте, что если вместо "Сообщить(Спр.Наименование)" вы укажете "Сообщить(Спр.ТекущийЭлемент())", то вместо строкового/числового представления этого элемента программа выдаст вам в окошке сообщение "OLE". Именно это я и имел в виду, когда говорил, что напрямую мало что можно перенести. Т.е. не будут работать следующие методы (ошибки 1С не будет, но и результат работы будет нулевой). Рассмотрим следующий пример:
Однако, сработает следующий метод:
Отсюда вывод: возможность доступа к объектам базы 1С через OLE требуется, в основном, только для определенной задачи - получить доступ к реквизитам определенного элемента справочника или документа. Однако, не забываем, что объекты базы OLE поддерживают все методы работы с ними, в т.ч. и "Новый()", т.е. приведем пример противоположный предыдущему:
В) Доступ к регистрам базы OLE (Не сложнее справочников и документов):
Г) Доступ к перечислениям базы OLE (аналогичен константе):
ЗначениеПеречисленияOLE = БазаОле.Перечисление.Булево.НеЗнаю; // :)
Заметьте, что пользы для местной базы от переменной "ЗначениеПеречисленияOLE" особо-то и нет, ведь подобно справочнику и документу перечисление также напрямую недоступно для местной базы. Пожалуй, пример работы с ними может быть следующим (в качестве параметра условия):
По аналогии со справочниками и документами работает объект "Периодический", план счетов работает по аналогии с ВидомСубконто, ну и далее в том же духе… Отдельную главу посвятим запросу, а сейчас… стоп. Еще пункт забыл!
Ж) Доступ к функциям и процедурам глобального модуля базы OLE!
Как же я про это забыл-то, а? Поскольку при запуске базы автоматически компилируется глобальный модуль, то нам становятся доступны функции и процедуры глобального модуля (поправлюсь - только те, у которых стоит признак "Экспорт"). Плюс к ним еще и различные системные функции 1С. А доступны они нам через функцию 1С OLE - EvalExpr(). Приведем примеры работы с базой OLE:
На самом деле, в последней строке примера я исхитрился и забежал немного вперед. Дело в том, что как и запрос (см. отдельную главу), так и EvalExpr() выполняются внутри базы OLE, причем команды передавается им обычной строкой, и поэтому надо долго думать, как передать необходимые ссылки на объекты базы OLE в строке текста местной базы. Так что, всегда есть возможность поломать голову над этим…
Алгоритмы преобразования объектов в "удобоваримый вид" между базами.
Ясно, что алгоритмы преобразования нужны не только для переноса объектов между и базами, но и для такой простой задачи, как попытки сравнить их между собой.
И еще раз обращу внимание: ОБЪЕКТЫ ОДНОЙ БАЗЫ ПРЕКРАСНО ПОНИМАЮТ ДРУГ ДРУГА, ПРОБЛЕМЫ ВОЗНИКАЮТ ТОЛЬКО ТОГДА, КОГДА ВЫ НАЧИНАЕТЕ СВЯЗЫВАТЬ МЕЖДУ СОБОЙ ОБЪЕКТЫ РАЗНЫХ БАЗ, т.е. команда
будет прекрасно работать без ошибок. Не забывайте это, чтобы не перемудрить с алгоритмами!
Итак, повторяюсь, что напрямую перенести, да и просто сравнить можно только даты (причем не "пустые"), числа и строки ограниченной длины. Итак, как же нам сравнить объекты разных баз (не числа, не даты, не строки), т.е. как их преобразовать в эту самую строку/число/дату.
А) Преобразование справочников/документов базы OLE (если есть аналогичные справочники/документы в местной базе). В принципе, преобразование их было уже рассмотрено в примерах выше и сводится к поиску их аналогов в местной базе. Могу еще раз привести пример, заодно с использованием регистров:
Б) Преобразование перечислений и видов субконто (подразумевается, что в обоих базах есть аналогичные перечисления и виды субконто). Вся задача сводится к получению строкового или числового представления перечисления или вида субконто.
Не поймите это как прямую команду воспользоваться функцией Строка() или Число() :)) Нет. Для этого у нас есть обращение к уникальному представлению перечисления и вида субконто - метод Идентификатор() или ЗначениеПоНомеру(). Второй вариант не очень подходит, так как зачастую в разных базах даже перечисления бывают расположены в другом порядке, а вот идентификаторы стараются держать одинаковыми в разных базах. Отсюда вывод, пользуйтесь методом Идентификатор(). Кстати, не путайте вид субконто с самим субконто! Привожу пример преобразования:
То же самое относится и к плану счетов - принцип у него тот же, что и у вида субконто…
В) Преобразование счетов:
Во многом объект "Счет" аналогичен объекту "Справочник". Отсюда и пляшем:
Работа с запросами и EvalExpr().
Наконец-то добрались и до запросов. Надо пояснить несколько вещей, касаемых запросов (да и EvalExpr() тоже). Самое главное - компиляция текста OLE-запроса (т.е. разбор всех переменных внутри запроса), как и сами OLE-запросы выполняются внутри базы OLE и поэтому ни одна переменная, ни один реквизит местной базы там недоступны, да и запрос даже не подозревает, что его запускают по OLE из другой базы!!! Поэтому, чтобы правильно составить текст, иногда требуется не только обдумать, как передать параметры запроса в базу OLE, но и обдумать, что нужно добавить в глобальный модуль той самой OLE-базы, чтобы как-то собрать для запросы переменные!
1. Поскольку сам текст запроса и функции EvalExpr() является по сути текстом, а не набором параметров, то напрямую передать ему ссылку на элемент справочника, документ, счет и т.п. нельзя. Исключение может быть составлено для конкретных значений перечислений, видов субконто, констант, планов счетов и т.п.
2. Хоть и многим и так понятно, что я скажу дальше, но я все-таки уточню: при описании переменных в тексте запроса не забывайте, что объекты базы надо указывать напрямую, без всяких префиксов типа "БазаОле".
3. Отрабатывать запрос сложно тем, что ошибки, например, при компиляции напрямую не увидеть. Поэтому начинаем пошагово готовится к отработке запроса в базе OLE.
Вначале допишем в глобальном модуле базы OLE немного строк, которые нам помогут в работе:
Теперь начинаем потихоньку писать сам запрос. Что мы имеем:
В форме диалога местной базы несколько реквизитов диалога (либо местные переменные):
* Даты периода (НачДата и КонДата)
* Элементы справочников для фильтрации (ВыбТовар, ВыбФирма, ВыбКлиент, и т.д.)
* Какие-либо флажки (ТолькоЗамерзающийЗимойТовар , ..)
Мы начинаем писать запрос и сразу попадаем в такую ловушку:
ТекстЗапроса = " Период с НачДата по КонДата; ";
Вроде все в порядке, но такой запрос не выполнится в базе OLE, так как там понятия не имеют, что такое НачДата и КонДата :)) Ведь эти переменные действительны только для местной базы! Переписываем запрос заново:
Казалось бы все очень просто. По аналогии - если уникальность для товаров ведется по наименованию, то простой заменой слова "код" на "наименование" мы решаем вопрос и здесь. Теперь рассмотрим, когда мы выбрали группу, т.е. текст условия должен будет выглядеть так:
И здесь, правда можно проблему решить "двумями путями" :)) Первый пусть - когда мы имеем дело с двухуровне вымсправочником. Тогда проблема группы решается также просто, как и в 1-м варианте:
А если справочник очень даже многоуровневый? Вот для этого мы и используем написанную ранее функцию. Предположим, что список значений запроса с индексом массива " 1 " мы будем использовать для хранения подобных значений (например, хранить в нем группы товаров, клиентов) для хитрых условий. Итак, например, в ВыбТовар у нас указана группа товаров, а в ВыбКлиент - группа клиентов, которым мы товары группы ВыбТовар продавали. Кроме того, мы должны пропустить накладные возвратов поставщикам, и не забыть, что товары надо еще отбирать по флажку ТолькоЗамерзающийЗимойТовар:
Ну, а с реквизитами запроса разбираемся так же, как указано было выше в предыдущих разделах… И не забываем, что кроме хранения конкретных значений, можно использовать другие списки значений запроса. Например, можно заполнить какой-либо список значений запроса списком клиентов и использовать его в запросе:
В этой статье описываются полезные функции и процедуры, помогающие эффективно работать с различными типами данных в системе "1С:Предприятие 7.7".
* Обработка значений
* Форматирование
* Список значений
* Таблица значений
* Таблица
* Период и дата
* Календари и праздники
* Справочники
* Документы
* Предопределённые функции
* Налоговый учёт
Обработка значений в 1С
Форматирование данных в 1С
Список значений в 1С
Таблица значений в 1С
Таблица или печатная форма в 1С
Периоды и даты в 1С
Календари и праздники в 1С
Справочники в 1С
Документы в 1С
Предопределённые функции и процедуры в 1С
Налоговый учёт и первое событие в 1С
Резюме
В статье описаны функции и процедуры, используемые в программе "1С:Предприятие 7.7" для работы со справочниками, документами, списками значений, таблицами значений и с прочими агрегатными типами данных. Образцы практического применения описанных средств Вы сможете найти в статьях "Отчёты для 1С" и "Обработки для 1С".
Мне приходится часто менять клиентов, потому что работаю удаленно. Сделал одному – иди к другому. А еще я продаю свои программы через Интернет. При имеющейся специфике работы, заметил одну странность: примерно в двадцати пяти процентов случаев, предприятие, оплатившее работу программиста и принявшее его работу, не пользуется ею.
Начну с примеров
Фирма, продающая компьютеры, купили внушительный комплект программного обеспечения, все своевременно оплатили, купили необходимое торговое оборудование... Мы, соответственно, все им установили и приготовились запускать. Остановились на этапе, когда сотрудники фирмы, ответственные за ввод в эксплуатацию нового программного комплекса, должны внести в информацию по имеющимся в отделах остаткам. Для справки – это примерно пара сотен наименований. Но на этом все работы по проекту остановились, потому что остатки не были внесены к намеченному сроку, ни через неделю после срока, ни через месяц. Не внесены они и до сих пор, хотя прошло уже пол года. Официально мы договорились, что клиент нам позвонит, когда сотрудники освободятся и найдут время внести остатки. Сами понимаете, на небольших фирмах менеджеры – по совместительству еще и продавцы, еще и грузчики, и кассиры…
Еще пример
Достаточно крупный комбинат решил автоматизировать учет обедов собственным сотрудникам в счет зарплаты. Систему подготовили, протестировали, поставили. Обучили их специалиста. Все как обычно. Недавно узнал, что конечный пользователь нашу систему не использует. Оказывается, по весьма банальной причине: на приобретение нового компьютера руководство не выделяет средств, а на имеющемся оказалось недостаточно мощности. В свое время мы указывали им на необходимость более мощного компьютера, но в силу не совсем понятных мне внутренних интриг, этот вопрос был замят на уровне IT-отдела. В результате, автоматизация стала не эффективной, и от использования новой программы решено было отказаться.
Третий пример
Производственная фирма заказала автоматизацию учета. От фирмы был назначен специалист – постановщик ТЗ и в будущем - внедренец. Работу сделали, сдали, провели обучение внедренца (на углубленное внедрение и обучение нами всех сотрудников не выделили бюджет). Я перезвонил клиенту через пол года, чтобы узнать, не было ли замечено каких-либо багов в работе системы. С удивлением услышал, что учет по-прежнему ведется в Excel-е, потому что на глубокое, самостоятельное освоение новой системы у сотрудников нет времени, а специалист, которого мы обучали, уволился…
Хотелось бы обобщить имеющийся, скромный опыт по таким случаям, и порассуждать на тему, когда автоматизация учета становится не эффективной по вине заказчика.
Уже из приведенных примеров можно сделать одно важное заключение: во всех трех случаях явно, что администрация не была заинтересована в результате. В первом – директор не захотел останавливать продажи даже не день, чтобы довести начатое до конца, во втором и третьем был урезан бюджет, и решили сэкономить там, где этого делать было нельзя.
1. Незаинтересованность руководства в результатах
Для меня всегда было загадкой, зачем руководство той или иной фирмы вообще тратится на автоматизацию, если отчетов в excel-е достаточно, и нет желания доводить начатое до конца? Чего дирекция хочет добиться? Дань моде? Надоел ноющий главбух? Решили, что что-то пора менять, но что менять – не выяснили? Стоит напомнить, что грамотно поставленная автоматизация учета в торгово-производственных фирмах способна увеличить прибыль и уменьшить затраты. Хорошая автоматизация окупается достаточно быстро, и уже скоро начинает приносить прибыль и экономию. Но если руководство не оценило перспектив автоматизации или, что еще хуже, считает, что новый стол из красного дерева топ-менеджеру важнее нового сервера сисадмину, то вряд ли на такой фирме автоматизация будет успешной.
2. Ограниченный бюджет
Как правило, из первого следует второе. Когда руководство не совсем отдает себе отчет в том, чего они ждут от автоматизации, тогда возникают идеи, наподобие: «а давайте пригласим студента, и он все сделает, как надо», или «давайте посадим главбуха на сервер»... Я, конечно, не против подработки студентов и не сомневаюсь в потенциале российского студенчества, но хочу лишь сказать о том, что для внедрения серьезной системы учета простого умения программировать очень мало. Хороший внедренец должен уметь просчитать возможные последствия выбора той или иной стратегии автоматизации. Это достаточно кропотливая работа, требующая, прежде всего, большого практического опыта, понимание не только специфики учета предприятия, но и его неочевидных нюансов. В конце концов, такая работа требует настойчивости, потому что часто решения внедренцев могут встретить сопротивление со стороны заказчика, и нужно уметь отстоять свои предложения, основываясь, опять же, на собственном опыте, защищая интересы сопротивляющегося клиента. Вряд ли какой-либо студент, понимающий, что занимается временным, не свойственным ему делом, способен на такое. Поэтому, считаю, что экономия на уровне исполнителя – это почти гарантия неудавшейся автоматизации.
Это же относится и к неоправданной экономии на оборудовании. Как правило, сбой системы происходит в самом слабом ее звене и в самый неподходящий момент… Помню, как у одного моего клиента, смотрящего «сквозь пальцы» на предложение обновить сервер, этот сервер вдруг однажды сгорел, когда бухгалтерия делала годовой отчет. Печально было то, что архивирование данных не велось должным образом, опять же, не смотря на рекомендации: директор считал покупку пишущего cd-room (в то время) – не особенно необходимыми затратами. Систему, конечно, восстановили. Но я помню, как бухгалтерии пришлось две недели работать чуть ли не по ночам, чтобы восстановить потерянные за год данные по первичным документам. Кстати, после этого случая руководство все-таки купило в то время жутко дорогой сервер с райд-массивом…
3. Тендер на откатах
Где-то встречал в сети примерную статистику, какой процент тендеров на IT услуги в России выигрывается за счет откатов ответственному лицу. Статистика – не утешительна. Печально, что на откаты попадают в основном крупные заказчики, где сумма договора внушительна, и руководство напрямую не занимается подбором исполнителя, а поручает это собственному специалисту, который не всегда бывает доволен уровнем своей заработной платы. Практика показывает, что при таком раскладе, все работы бывают выполнены в срок, все документы подписаны, но сотрудники фирмы остаются недовольны результатами и не могут использовать внедренную систему в планируемом объеме по разным причинам. Соответственно, руководство не имеет требуемой аналитической базы и начинает выяснять, в чем причина. Такие разбирательства затягиваются надолго, часто сопровождаются кадровыми движениями и, в конечном итоге, поисками того, кто бы систему довел до ума…
4. К вопросу о лидерах отрасли
Хотел бы привести еще один пример, достаточно типичный. Фирма готова тратить деньги на автоматизацию, но не сориентировалась на рынке IT-услуг и обратилась к кому-то очень известному. В результате затраты превысили все разумные пределы, а итог оказался не совсем ожидаемым, хотя, возможно, приемлемым с натяжкой.
К сожалению, это только при покупке автомобиля можно руководствоваться рекламными буклетами, и, если позволяют средства, выбирать самое последнее из модельного ряда. В сфере IT-услуг, как показывает практика, все далеко не так, особенно в сфере автоматизации на базе продуктов фирмы «1С» фирмами-франчайзи. Если исполнитель – не на уровне масштабов компании «Intel Corporation», то его раскрученность совсем может не соответствовать качеству предлагаемых им услуг, а объемы клиентской сети, требующей постоянного сопровождения, могут не позволить заниматься новым клиентом на должном уровне. На фоне этого, стоило бы вспомнить о небольших фирмах, менее раскрученных, а потому не выигравших тендер, которые были бы просто счастливы получить крупного заказчика IT-услуг, даже с меньшей суммой договора, и были готовы отдать все силы на то, чтобы клиент остался доволен. Амбиции небольших коллективов, уровень их специалистов и заинтересованность в результатах работы часто оказываются выше, чем у раскрученных, больших компаний. Небольшие фирмы не могут допустить в работе того, что позволят себе монополии, потому что любая неудача может грозить такой фирме банкротством.
Я назвал лишь четыре, пожалуй, основных фактора, когда автоматизация не достигает результатов, и присходит это, отчасти, по вине заказчика. Наверняка, имеются и другие причины, но корень проблем, на мой взгляд, следует искать, прежде всего, в неправильной позиции руководства компании, которая выражается или в непонимании, зачем нужна автоматизация, или в неправильно выбранной стратегии решения этого вопроса. Там, где решения принимаются трезво и взвешенно, где оценивается уровень специалиста, а не его раскрученность на рынке, где руководство четко понимает, чего оно ждет от автоматизации в итоге – там все будет нормально, чего всем и желаю…
Эта заметка не имеет непосредственного отношения к DELPHI, уж извините :) Но получив в очередной раз письмо с предложение за два клика заработать $5000 я не выдержал, душа просит высказаться!
Я рассмотрю несколько вариантов заработка денег в internet с описанием, их плюсами и минусами. Сразу предупреждаю, это мое личное мнение, никак не претендую на глубину и всесторонность обзора.
1. Начнем с наиболее правильного и близкого нам программистам :) SHAREWARE.
Написание программы с целью ее продажи. Решаясь на подобное сначала все хорошенько обдумайте и взвесьте, зарабатывать на shareware можно и нужно, но… всегда есть проклятое "но" :) Для создания хорошо продаваемой программы вам придется не мало потрудиться. Срок от начала написания до реальных продаж вряд ли получится менее полугода. Вам придется много работать и главное думать. Здесь нет руководителя, который напишет Т.З. и скажет когда и что нужно сделать :( Все самому, а еще лучше команде. Одному человеку трудно быть одновременно хорошим программистом, генератором идей, дизайнером, маркетологом и т.д. и т.п. Лучше, если каждый будет заниматься тем, что умеет делать лучше всего. И тогда… по непроверенным данным ReGet получат более $50.000 в месяц! ;)
Как этого добиться? Здесь нет никаких строгих правил, все зависит от вашего таланта и, наверное, везения. Вот один из вариантов: выбрать направление программы, лучше, если это будет то, что требуется большому количеству людей каждый день в их постоянной работе за компьютером. Потратить с месяц или более, на сбор и анализ существующих подобных программ в интернете (трудно придумать что-то совсем уж уникальное :) обязательно уже есть аналоги, необходимо выяснить слабые и сильные стороны каждой программы и составить Т.З. для своей программы, включая туда самое лучшее. Кстати, не обязательно делать самостоятельную программу, это вполне может быть что-то прикладное к уже имеющимся. Например, каждый браузер умеет сам закачивать файлы из internet и тем не менее, "качалок" великое множество! Почему? Да потому что они удобнее в использовании и имеют дополнительные функции.
Далее самый плодотворный процесс - написание самой программы. На это уходит от месяца до года (больше не надо, а то она за это время бесконечно устареет :) По окончании написания программы, ее отладка и анализ, а действительно ли она так хороша, как предполагалось в начале?! ;) На этом этапе лучше выложить для скачивания бесплатную beta-версию на русском языке. И, зарегистрировавшись в русских каталогах, предлагать нашим тестировать новое чудо современных технологий! После чего, вы получите массу писем с ошибками и пожеланиями, все учитываете и дорабатываете, дорабатываете… На это может уйти даже больше, чем на написание основного кода программы. Когда считаете, что программа отшлифована и проверена на самых различных конфигурациях компьютеров, можно готовить английскую версию, выкладывать на сайт, регистрироваться в системах, которые помогут вам получать деньги от буржуев (например RegNow) и раскрутка вашего детища - регистрация в поисковых системах, а главное в каталогах для ShareWare программ, которых в инете великое множество. И с замиранием сердца ждать :) анализировать статистику заходов на ваш сайт, откуда приходят, почему с других мест не идут? Сколько людей пришло и "дошло" до скачивания и оплаты. На каком этапе вы потеряли клиента, почему? Все надо довести до идеала, клиенту нужно максимально упростить способ расставания с деньгами! :) Как видите, непосредственно программирование здесь занимает очень малую долю, и можно даже сказать, не главную! (Билл Гейтс ведь смог же продавать геморрой за деньги! :) :)
Рекомендую вам подписаться на рассылку российских шароварщиков swrus.com, узнаете много нового и полезного. А главное, общение с людьми, которые реально зарабатывают на этом! Плюсы:Это станет вашим основным заработком. Сумма, получаемая вами ежемесячно, ничем не ограничена, только вашим талантом! При удачной раскрутке, можно создавать свою фирму, становиться начальником, нанимая других программистов ;) Если на вас обратит внимание крупная западная фирма, то можно выгодно "продаться" :) Минусы: Вам придется долгое время вкалывать за красивую мечту. Никто, ничего не гарантирует. Вы с большой вероятностью можете в итоге оказаться у разбитого корыта :( Придется запастись терпением!
2. Создание сайта.
Вы создаете сайт, делаете его интересным для как можно большей доли посетителей интернета и как следствие, высокую посещаемость. После чего можно продавать рекламное место на своем сайте или зарабатывать через баннерные сети, что платят за показы или клики. Важно правильно выбрать тематику сайта, рекламодателям должно быть выгодно именно у вас размещать свою рекламу. Возьмем к примеру этот сайт (Мастера DELPHI), сайт сильно специфичен, рассчитан на очень малый процент людей в сети, мало того что именно программист, так еще и обязательно на DELPHI :) Потому добиться действительно высокой посещаемости его просто не реально. Но не это главное, кто из рекламодателей захочет здесь разместить рекламу? Ведь, понятно, его реклама должна ему же приносить деньги, т.е. чаще всего это или продажа своей программы, или привлечение целевой аудитории. Сайт русскоязычный, а русские не привыкли покупать программы, да и зачастую не на что! Вот и получается, что работаем мы над этим сайтом, только ради альтруизма и пользы вам, наши дорогие посетители :)
Или другой пример, сайт NoNaMe. Ему пол года, и за это время автор сайта добился блестящих результатов! (потому что сайт действительно интересен, всегда можно найти для себя что-то полезное. Рекомендую всем!) На данный момент до 9тыс. уникальных посетителей! Но… опять же, сайт специфичен, публикация кряков к программам оставляет весьма сомнительную вероятность того, что кто-то захочет рекламировать там свой продукт ;)
Лучше всего, конечно же, сайт рассчитанный на широкую публику: поисковые системы, каталоги, новости… игровые/развлекательные сайты здесь не лучшем положении (мой знакомый, автор сайта netcross.ru раскрутил его весьма хорошо, а сейчас практически забросил. Создал свою фирму по дизайну, и она за два месяца принесла денег больше чем за все время существования netcross.ru :) Плюсы:Широчайшее поле для творчества. Ваш доход ничем не ограничен. Интернет развивается бешенными темпами. И помните! Совсем недавно list.ru был продан за $5.000.000 !!! Вполне хватит на карманные расходы ;) Минусы: Вам придется в поте лица работать над своим сайтом и, как и в первом случае, большая вероятность остаться у разбитого корыта :(
3. Интернет услуги.
Создаете свою компанию по оказанию каких-либо интернет услуг: дизайн, интернет магазин, хостинг, регистрация, раскрутка и т.д. и т.п. Вполне реальный способ заработка, здесь нечего добавить. Практически в любом случае вы будете получать доход, доход лишь зависит от вашего желания работать и от того, откуда у вас растут руки :) Лично я напрямую связан с предоставлением хостинга российским компаниям, и со всей ответственностью заявляю, на хостинге можно и нужно зарабатывать. Помните, русский интернет сейчас развивается очень быстро, и потребность в различных видах услуг велика. Плюсы: Вы получаете реальные деньги за реальную работу. Все сводится только к поиску и привлечению людей, которым ваши услуги необходимы. Минусы: Зачастую требует начальных капиталовложений. Здесь нет халявы, не получится почивать на лаврах (как при удачном раскладе в первых двух пунктах), работать, работать и еще раз работать :)
На этом позвольте закончить вторую часть. Это не все о заработке, возможно я продолжу этот цикл, если вам конечно интересно :)
В практической работе приходится проводить импорт данных в "1С:Предприятие" из различных внешних приложений, обслуживающих базы данных. Встроенный язык программы "1С:Предприятие" и стандартизированные методы построения баз данных позволяют создавать универсальные обработки по импорту данных из внешних источников. Написание универсальной обработки, зачастую, - это сложный, но и достаточно увлекательный процесс. Сложным я могу назвать его потому, что на этапе разработки нужно заранее предусмотреть все возможные варианты импортирования и обработки данных. А увлекательным процесс написания универсальных обработок по импорту данных в 1С мне видится потому, что постоянно ощущаешь огромные выгоды от использования обработки в последующей работе.
Файловая система
Для начала давайте посмотрим, как проводится работа с файловой системой из программы 1С:Предприятие.
Импорт данных в 1С из MS Excel
Программу Microsoft Excel сегодня можно называть стандартом работы с электронными таблицами. Именно поэтому довольно часто приходится встречаться с ситуациями, когда массивы данных хранятся именно в файлах формата MS Excel. Для того, чтобы умело импортировать данные из файлов формата MS Excel в базу данных 1С:Предприятия, вы можете воспользоваться следующими примерами.
Импорт данных в 1С из текстового файла.
Основными преимуществами текстовых файлов являются их маленький размер и простота хранения данных внутри файла. Пожалуй, именно поэтому многие данные до сего дня передаются посредством текстовых файлов. Учитывая существующую потребность, вам могут потребоваться умения в импортировании данных в 1С из текстового файла. И нижеприведённые примеры помогут вам в приобретении необходимых знаний.
Самым распространённым случаем передачи данных текстовым файлом является способ выгрузки данных из системы Клиент-Банк. В примере, приведённом ниже, вы можете увидеть, каким образом производится загрузка данных о банковских операциях в 1С из текстового файла, в который предварительно выгружены данные из системы Банк-Клиент.
Импорт данных из файла формата DBF
Старый добрый формат dBase по-прежнему используется для хранения массивов данных. Чего уж говорить, если обычная версия 1С:Предприятия (не SQL) сама хранит базы данных в файлах с расширением DBF? Формат файлов DBF, на мой взгляд, очень удобен для передачи данных в базу 1С, поскольку преимуществами файла формата dBase являются маленький размер и матричная система хранения данных.
Программист 1С может встретиться с необходимостью импортировать данные в 1С из файла DBF, в который экспортированы данные о банковских операциях из системы Банк-Клиент. В нижеприведённом примере вы можете увидеть пример обработки файла DBF, из которого в 1С импортируется банковская выписка.
Импорт данных из файла формата XML
С недавних пор набирает популярность новый формат передачи многомерных массивов данных, который носит название eXtensible Markup Language или XML. Возможности нового языка разметки, используемого для хранения данных, огромны настолько, что его стали использовать даже для. передачи данных в программу 1С:Предприятие. Поэтому современный специалист по платформе 1С обязан уметь импортировать данные в 1С из файла, имеющего формат XML.
//процедура формирует печатную таблицу с данными, содержащимися в файле формата XML
Процедура Сформировать()
Перем Файл,Каталог;
Если ФС.ВыбратьФайл(0,Файл,Каталог,"Открытие документа XML","Документы XML|*.xml")=0 Тогда
Возврат;
КонецЕсли;
//таблица
Т=СоздатьОбъект("Таблица");
Т.ИсходнаяТаблица("");
Т.ВывестиСекцию("Шапка");
//документ
Анализатор=СоздатьОбъект("AddIn.XMLParser");
Д=Анализатор.СоздатьДокумент();
Д.Загрузить(Каталог+Файл);
//узлы
Узел=Д.ВыбратьУзел("Данные");
Для i=1 По Узел.КоличествоПодчиненных() Цикл
ТекУзел=Узел.ПолучитьПодчиненныйПоНомеру(i);
Состояние(ТекУзел.Текст);
//строка
тЭлемент=ТекУзел.Наименование;
тЗначение=ТекУзел.Значение;
Т.ВывестиСекцию("Строка");
КонецЦикла;
//таблица
Т.Опции(1,1,1,0);
Т.ПовторятьПриПечатиСтроки(1,1);
Т.ТолькоПросмотр(1);
Т.Показать("XML");
КонецПроцедуры
Ну вот собственно и все. Надеюсь данная статья оказалась вам полезна.
В этой статье описываются полезные функции и процедуры, помогающие эффективно работать с различными типами данных в системе "1С:Предприятие 7.7".
Форматирование данных в 1С
Список значений в 1С
Таблица значений в 1С
Таблица или печатная форма в 1С
Периоды и даты в 1С
Календари и праздники в 1С
[pagebreak]
Справочники в 1С
Документы в 1С
Предопределённые функции и процедуры в 1С
Налоговый учёт и первое событие в 1С
Резюме
В статье описаны функции и процедуры, используемые в программе "1С:Предприятие 7.7" для работы со справочниками, документами, списками значений, таблицами значений и с прочими агрегатными типами данных. Образцы практического применения описанных средств Вы сможете найти в статьях "Отчёты для 1С" и "Обработки для 1С".
В этом разделе вы создадите два новых приложения OLE. Первое - простая программа-сервер OLE, второе - пример простого контейнера OLE. Эти программы предназначены для демонстрации минимальных затрат программирования, необходимых для создания приложений OLE 2.
В любом случае, для создания оболочки программы следует воспользоваться приложением AppExpert. Сначала необходимо сгенерировать основу приложения в AppExpert, затем модифицировать созданные файлы для создания законченного рабочего примера.
При написании своих версий этих программ необходимо иметь в виду несколько моментов. Во-первых, в этой главе приводятся листинги только исходных, немодифицированных файлов.
Во-вторых, CLSID этих программ будет отличаться от CLSID программ, которые вы сгенерируете с помощью AppExpert. Это нормально и даже необходимо, поскольку с помощью CLSID одни серверные приложения в Windows отличаются от других.
В-третьих, эти примеры содержат минимум необходимых средств для того, чтобы начать программировать с OLE. Вы можете использовать эти примеры в качестве начального кода для создания своего действительно полезного сервера или контейнера. В этой главе просто не хватает места для описания реализации функциональных сервера и контейнера - в этом случае вам понадобился бы грузоподъемник, чтобы положить эту книгу на стол.
Создание сервера OLE
Первое приложение OLE в этой главе - сервер. В этом примере вы построите полный сервер - сервер, который может использоваться и как автономное приложение, и как сервер. Создавая автономный сервер (т.е. в виде исполняемой программы .ЕХЕ, а не в виде динамически подключаемой библиотеки DLL), вы упрощаете процесс регистрации сервера в Windows.
Начальный процесс разработки сервера прост. Сначала из интегрированной среды Borland C++ версии 4.5 запустите AppExpert. Задайте каталог и имя вашего проекта. Я поместил свой проект в каталог \BC45\SOURCE\OLESVR. Проект я назвал OLESVR (я всегда называю проекты и каталоги проектов одним и тем же именем, это облегчает запоминание). Ниже приводится последовательность действий, в результате которых был создан проект OLESVR.
Запустите AppExpert. В первом диалоговом окне следует задать имя и каталог проекта. Как уже отмечалось, я использовал OLESVR для задания обоих.
После выбора ОК в диалоговом окне имени и каталога проекта следующий раздел АррЕхреrt - диалоговое окно Application General Options (основные опции приложения). Это диалоговое окно позволяет задать конфигурацию приложения, генерируемого AppExpert. Вам придется модифицировать несколько опций для проекта OLESVR.
Первая опция, которую необходимо изменить, находится в блоке Application: Summary. Замените параметр по умолчанию Multiple document interface на Single document interface. Это изменение согласуется с призывом Microsoft делать ставку на однодокументные приложения для Windows. На рис. 21.1 демонстрируется модифицированный блок Application: Summary.
Второе изменение, которое необходимо внести, - указать AppExpert, что ваша программа будет сервером OLE. Это изменение вносится в пункт Application: OLE 2 Options, имеющий ряд опций OLE 2, которые можно задавать. Поскольку вы создаете сервер OLE, вы будете оперировать только элементами блока группы OLE 2 Server: (поищите его в правой верхней части диалога). Выберите кнопку ячейки пометки Server EXE. На рис. 21.2 демонстрируются изменения, проведенные в пункте Application:OLE 2 Options.
При желании вы можете заполнить элементы пункта Application: Admin Options блока диалога AppExpert. С его помощью вы можете задать в приложении заметку об авторском праве, имя и информацию о версии. Все элементы в Application: Admin Options необязательны, и вы можете их не задавать.
Подпункты пункта Main Window не нуждаются в модификациях, их следует оставить заданными значениями по умолчанию. Для данного приложения нет необходимости менять что-либо в этих подпунктах. Пункт MDI Child/View неприменим для этого проекта, поэтому нет нужды в нем что-нибудь менять.
После задания всех необходимых модификаций следует выбрать кнопку Generate в нижней части блока диалога AppExpert Application General Options. AppExpert запросит у вас подтверждение, действительно ли вы собираетесь создать проект; после принятия подтверждения AppExpert сгенерирует приложение. На рис. 21.3 приводится конечный проект, загруженный в интегрированную среду Borland C++ версии 4.5.
Теперь, когда программа сгенерирована, в нее следует добавить код, задающий функциональность сервера OLE. Необходимо включить код, рисующий изображение, а также провести другие незначительные изменения.
К счастью, помимо Borland C++ версии 4.5 можно воспользоваться программой ClassExpert, что облегчит внесение большей части изменений. Предположим, вы хотите сперва заняться вопросами отображения. Как и в любой созданной с помощью AppExpert программе, основная часть рисования выполняется классом отображения, производным от класса OWL TOleView. Файл, в котором содержится реализация отображения, имеет имя LSVROLVW.CPP. В листинге 21.1 приводится первоначальный файл OSROLVW.CPP.
Листинг (файл реализации класса отображения OLESVR, OSVROLVW.CPP)
Думать о продвижении сайта надо еще до его создания. Все начинается с постановки задач и опредления целей. Многие люди, которые собираются продвигать (рекламировать) свой сайт в Интернет, не знают зачем им это, нужен ли им сайт вообще, не знают как оптимизировать свое детище для того, чтобы было возможным осуществлять его продвижение, чтобы достичь поставленных целей и отдых под Киевом, каталог баз отдыха. Если вы относитесь к ним, то это статья для вас.
Сразу хочу уточнить, что в этой статье речь не идет о несерьезных ресурсах вроде домашних страниц. Свое мнение о том, стоит ли рекламировать домашную страницу, почему и как, я высказала в первой части вводной статьи к разделу Реклама. Настоятельно рекомендую всем владельцем домашних страниц перечитать первую часть вводной статьи раз 20-ть, а лучше сто, прежде чем пускаться во все тяжкие.
Теперь, когда я погрозил пальцем недобросовестным гражданам для очистки своей совести, перейдем непосредственно к делу.
Прежде, чем создавать сайт вы должны понять, нужен ли он вам вообще. Зачем, что, для чего.
К неверным мотивам создания сайта можно отнести следующие:
* У всех есть сайт. Чем я хуже?
* Я создам самый лучший ресурс, он поразит воображение всех нынеживущих в интернет, я буду популярным, ко мне придет много людей!
* У наших конкурентов есть сайт. Сваяем и мы что-нибудь по быстрому. Полагаю, прайс-листа и контактов хватит.
* Я сделаю себе сайт, раскручу его, и срублю много денег, ничего особо не делая…
Если, вас сподвигает на создание сайта что-то вроде того, что я только что перечислила - то вам сайт еще не нужен, если вы коммерческая организация. Почему? Потому что цель коммерческого сайта помочь вам завязать и упрочить отношения, которые помогут развитию вашего бизнеса. Подход, чтобы было - это не серьезный, не деловой подход, с таким долго не живут. Что же касается остальных, тщеславных граждан с домашними страничками - куда они идут я уже указывала в самом начале этой статьи. Никогда не забывайте, что интернет - прежде всего информационная сеть, человек сюда приходит за информацией, ему нужна интересная и качественная информация, так зачем же плодить мусор?
К правильным мотивам создания сайта можно отнести следующие:
* Привлечение новых посетилей (для комерческой организации: клиентов, потенциальных клиентов).
* Расширить свой бизнес, увеличить прибыль.
* Получить поддержку, склонить людей и общественное мнение к чему-либо.
* Найти единомышленников по какой-либо проблеме, поделиться инересной и нужной информацией с другими.
Только, когда у нас есть определенная цель, только тогда можно и нужно создавать ресурс, опираясь на нее. Когда есть цель - есть возможность правильно продумать и осуществить разработку ресурса. А при правильно разработанном ресурсе уже можно совершать успешные действия по его продвижению.
Итак, как же правильно осуществить разработку сайта, если мы хотим, чтобы было потом возможным продвигать его в сети:
1. Определите цели вашего сайта. Зачем вы его создаете? (об этом мы уже поговорили).
2. Определите вашу стратегию. Что вы хотите достичь? Как вы собираетесь добиться своих целей? Какие приемы вы будете использовать, чтобы показать себя, чтобы удержаться и развиваться, чтобы продвигать свой сайт? У вас есть конкуренты (фирмы-конкуренты, другие информационные сайты, сообщества). Вам надо исследовать, что они предлагают, какие методы используют для продвижения своего ресурса. На основе исследования определить, какие методы будете использовать вы для продвижения своего сайта. При составлении плана также нужно учесть, какие ресурсы вы имеете в наличии (люди, деньги, знания, время и т.д.), чтобы добиться своих целей.
3. Определите аудиторию вашего сайта. Для кого вы его создаете? Какова целевая аудитория вашего сайта (например, деловая современная женщина, с доходом средний и выше от 20 до 40 лет). В зависимости от того какова ваша аудитория вы решаете какие сервисы вы ей предложите, какие материалы разместите на сайте, каким будет языком вестись изложение материалов (согласитесь, язык научного сайта неприемлим для сайта с детской аудиторией, если детский ресурс будет написан на слишком непонятном его аудитории языке, то популярностью он пользоваться никогда не будет). Если у сайта широкая аудитория, то можно сделать несколько крупных разделов для каждой группы посетителей. Для сайтов, где аудитория говорит на разных языках делается несколько версий на разных языках, причем язык изложения может адаптироваться в зависимости от страны (допустим, что считается приличным в одной стране, может вызвать возмущение у жителей других стран, нужно обязательно учитывать национальные особенности, чтобы не потерять потом посетителя).
4. Доменое имя. То, каков адрес вашего сайта, решает многое. Согласитесь, что сайт с адресом http://firma.com или http://community.com внушает гораздо больше доверия и уважения, чем http://narod.ru/tut/tam/firma или http://freehosting.com/was/here/community, первые два доменных имени говорят о серьезности фирмы или организации, о том, что завтра она никуда не исчезнет, это важно, особенно если учесть, что есть злоумышленники, которые любят пользоваться доверием людей, и поэтому люди стали сейчас гораздо осторожнее и настороженнее относится к предлагаемым им услугам и информации.
Более того, адрес http://firma.com легче продвигать в поисковых системах и рейтингах. Кроме того, адрес http://firma.com, гораздо легче запомнить, чем http://narod.ru/tut/tam/firma. Старайтесь, чтобы в названии домена присуствовало название организации. Имя домена = имя фирмы - очень легко запоминается. Если у фирмы или организации сложное имя, то имя домена может символизировать область деятельности фирмы или организации. Допустим, комбинату по производству хлеба со сложным названием “Комбинат №4 по производству хлебо-булочных изделий “Серебрянный бор” никак не подобрать запоминаемое сокращение, чтобы его можно было использовать в качестве доменного имени, но зато можно зарегистрировать домен типа: http://hleb.ru или http://bulka.ru - запоминаемо и связано с деятельностью предприятия.
5. Презентабельность. Внешний вид вашего сайта не должен отталкивать. Наооборот, он обязан быть привлекательным. Помните - по одежке встречают. Первое впечатление - очень важно. Если оформление вашего сайта отталкивающее, то вы можете потерять посетителя, он уйдет, даже не попытавшись ознакомиться с представленной информацией.
6. Удобство. Вся информация на сайте должна быть организована так, чтобы ее было легко находить, чтобы было легко ориентироваться по сайту. Навигация должна быть простой и понятной. Желательно, чтобы до самого дальнего подраздела можно было дойти не более, чем в несколько кликов. Струтура сайта должна быть четкой и ясной посетителю.
7. Нужная информация. Какой бы ни был ваш сайт просто информационный, посвященный какой-либо проблеме, или коммерческий сайт, предназначенный продвигать вашу компанию посредством Интернет, самое главное - это содержимое сайта. Ваш посетитель приходит к вам за информацией, и поэтому, разрабатывая содержимое сайта, вы должны подумать, какую информацию хотела бы получить ваша аудитория, какую информацию они будут искать. Желательно, чтобы информация была уникальная. Только присуствие уникальной информации или сервисов на ресурсе может привлечь к вам посетителя, только наличие постоянно добавляемой и обновляемой уникальной информации может привлечь и убедить его зайти к вам на сайт еще раз, и не один раз. Именно поэтому, даже коммерческой организации не стоит делать сайт из серии “прайс-лист+контакты”, потому что такой сайт практически никому не будет интересен и не приведет к организации новых клиентов. Зато интересный портал, связанный с сферой деятельности фирмы, это то, что нужно. Он привлечет много посетителей, которые потом могут стать клиентами фирмы.
8. Интересные сервисы и предложения. Конечно, не только информацией единой жив сайт. Обязательно нужно учесть необходимость создания связи с посетителем, в этом вам помогут форум, или гостевая книга. Иногда необходимо напоминать о себе своим посетителям, для этого возможно стоит ввести рассылку новостей вашего сайта, чтобы каждый желающий мог на нее подписаться. Но это все стандартные, хотя и нужные ходы. Нужно еще что-то оригинальное и инетересное. Предложите поучавствовать посетителям в жизни сайта. Например, на популярных сайтах с кулинарными рецептами, вы можете найти не только миллион и один рецепт, а также прислать свой собственный, ваш рецепт могут оценить и обсудить другие посетители сайта. Кроме того, периодически устраиваются конкурсы на лучший рецепт, с призами, незайтейливыми, но приятными.
Однако, такое возможно не только для некоммерческого ресурса. Подобные ходы может взять себе на вооружение сайт какой-нибудь ресторанной сети, расчитанной на обывателя с средним доходом. Сборник рецептов, возможность посетителям его пополнять, обсуждать, учавствовать в конкурсах - все это не только не повредить коммерческому сайту, но и поможет в продвижении компании не только в сети интернет, Сходить на выходные с семьей в любимый ресторан, на сайте которого вечерами общаешься с подругой - думаю, это может стать традицией для многих женщин.
Итог:
Главная выгода, которую вам дает интернет - это непосредственное общение с вашим посетителем (потенциальным клиентом). Задача хорошего ресурса (как коммерческого, так и нет) быть ближе к посетителю, соотвествовать его нуждам. Вы должны думать о своей аудитории - это единственно правильный подход. Реклама в интернет не сводится к банальной баннерной рекламе, рассылке е-майл, продвижению сайта компании или организации в поисковиках, рейтингах, каталогах - это далеко не основные способы, эти способы как раз не так эффективны, как хотелось бы, хотя их все равно не стоит сбрасывать со счетов. Основное - это как раз создание неких взаимоотношений со своей аудиторией. Таким отношениям есть даже определенное название - PR - что означает Public Relations - связь с общественностью. Именно PR - есть самый эффективный способ продвижения чего-либо в Интернет, именно благодаря Public Relations вы сможете добиться своих целей и извлечь выгоду для своей организации или компании.
В этой статье я лишь затронула тему PR, и надеюсь, это было для вас интересным и познавательным. По традиции в правой колонке вы найдете ссылки по теме, и сможете ознакомиться с ней дальше сомостоятельно.
Когда пишут про сокетное программирование, конечно же, подразумевается TCP/IP. Вот тут мы и отступим от правил, поговорим про IPX/SPX.
А все начинается как всегда, а именно, с инициализации WINSOCK библиотеки, обработка ошибок упускается для упрощения кода:
Ну и собственно сокет, тут я дам только кусок, отличный от нормальных сокетов:
В остальном, работа с SPX идентична работе TCP сокетов, все выше написанное справедливо и для IPX сокетов, только не забудьте, что последние нельзя законнектить. Открываются они следующим образом:
Передача данных происходит следующим образом:
Дальше я дам несколько, на мой взгляд, полезных вещей при работе с данными протоколами.
Приём заголовка пакета данных
В некоторых случаях нам нужен больший контроль над IPX/SPX пакетами, и для того, чтоб наше приложение могло управлять, изменять заголовок IPX/SPX, нужно вызвать следующий код:
А вот вам и структура заголовка SPX пакета, взято из WSIPX.H
В данном режиме Windows Sockets не будут сегментировать пакеты, ограничивая их размер до максимально допустимого протоколом.
Широковещательные пакеты
Широковещательные пакеты могут быть использованы, например, в качестве средства "принюхивания" клиента к серверу, это в случае, когда мы знаем порт нужного нам сервера, но не знаем его сетевого адресса.
Установка, изменение DataStreamType в заголовке SPX пакета
Это может быть использовано в собственных целях, например, для искусственной сегментации своих данных для совместимости разных реализаций протокола. Например, некоторые реализации протокола для DOS поддерживают максимальную длину пакета в 512 байт либо принудительно ограниченную сетевыми модулями, вот они и используют DataStreamType, чтобы указать последнюю порцию данных.
Устанавливается следующим образом:
Причём данную установку надо делать перед каждым send. Работает всё ОК, когда посылаются данные ДОС клиенту, ну а при приеме пакетов WIN клиентом от ДОС клиент DataStreamType не хочет устанавливатся, т.е. мы не получим установленное значение DataStreamType ДОС клиентом. Я обошел данную проблему при помощи следующего куска кода:
Данный метод хорош еще тем, что WIN клиент может принять один пакет вместо нескольких, посланных ДОС клиентом.
Другие специфические расширения для данных протоколов, используемые getsockopt/setsockopt, можно найти в файле wsnwlink.h, но, как упоминалось выше, данные расширения - для NT-платформ и могут не работать для других реализаций данных протоколов.
Можно сказать, что современная корпорация буквально "пропитана" данными. Они повсюду и, более того, очень часто одни и те же данные могут находиться в нескольких местах. Корпорация должна иметь возможность идентифицировать источник, происхождение, семантику и пути доступа к данным. Метаданные или, как их обычно называют, "данные о данных", являются ключом для получения этой информации. Но, как это ни удивительно, у большинства корпораций нет отчетливой стратегии относительно метаданных. Различные подразделения организации используют разные наборы инструментов для поддержки своих данных.
Каждому такому набору соответствуют определенные метаданные. Поэтому картина, типичная для многих корпораций, - это так называемые "острова метаданных", т.е. некоторые объемы информации, которые невозможно связать друг с другом. Для решения этой проблемы некоторые организации начинают крупные проекты по интеграции метаданных, тратя на это значительные средства и время. Но, к сожалению, в большинстве проектов отсутствует структурный подход, поэтому временные и финансовые затраты не окупаются.
В предлагаемой статье обсуждаются подходы к управлению метаданными, в том числе то, какие метаданные необходимо собирать, как их можно моделировать, как создать требуемое архитектурное решение и как обеспечить простоту поддержки метаданных в долгосрочной перспективе. Большинство этих подходов уже существуют в той или иной форме в различных организациях. В данной статье сделана попытка собрать и обобщить имеющийся опыт.
Классификация метаданных
На самом высоком уровне метаданные могут быть разделены на две категории:
Элементы общих метаданных должны иметь совместные (непротиворечивые) определения и семантику в масштабах всей корпорации. Например, определение понятия "клиент" должно быть единым для всей компании.
Метаданные могут быть классифицированы и по другим параметрам:
Метаданные бизнеса включают определения объектов, относящихся к корпоративным пользователям, логическим картам данных и словарям Хранилищ данных. Технические метаданные включают данные о физических объектах: названия таблиц и столбцов, ограничения и правила физического преобразования между различными зонами. В метаданных процессов отражается статистическая информация о различных процессах: статистика загруженности, информация о календарном планировании и обработка исключений.
Создание решения для управления метаданными
Для создания успешного решения по управлению корпоративными метаданными автор рекомендует следовать определенной последовательности шагов:
1. собрать все требования, предъявляемые к метаданным;
2. выбрать соответствующую модель метаданных;
3. определить общие подходы к архитектуре;
4. внедрить выбранное решение и осуществлять его поддержку.
Сбор требований, предъявляемых к метаданным
Определение требований, предъявляемых к метаданным, может оказаться непростой задачей. Ключевые стороны, которым могут быть нужны метаданные, разнообразны и пространственно разобщены. Это могут быть как конечные пользователи или аналитики, так и приложения или наборы инструментов. Процесс сбора стандартных требований не должен слишком расплываться. Автор предлагает следующий подход, учитывающий специфическую природу метаданных:
* определение ключевых сторон для каждого элемента метаданных;
* отнесение каждого элемента метаданных к определенной категории: метаданным бизнеса, техническим или метаданным процессов;
* отнесение каждого элемента метаданных к категории общих или уникальных на основе их использования в тех или иных процессах.
Следующий шаг - идентификация источника элемента метаданных. Обычно они называются "официальными метаданными" или "метаданными записи"1. Метаданные записи указывают на официальную версию определенного элемента для какого-либо события, в котором может быть несколько источников одних и тех же данных. Для того чтобы назвать определенный элемент метаданных официальным, важно понимать различные процессы, которые могут привести к созданию этого элемента. Эта информация помогает определить официальный источник метаданных. Например, компания розничной торговли создает корпоративное Хранилище данных, при этом элементы, содержащие информацию о клиентах, появляются в нескольких местах, таких как Хранилище данных о потребителях, система управления отношениями с клиентами (Customer Relationship Management, сокр. CRM) и система сбыта. При этом важно проводить анализ надежности и полноты каждого источника и оценивать, какие именно определения могут использоваться в качестве официальной версии. В данном случае уже может существовать Хранилище данных о потребителях, определяющее соответствующее измерение, поэтому можно будет считать словарь данных этого Хранилища официальными метаданными записей. После того как этот процесс будет закончен для всех элементов метаданных, можно будет сказать, что организация требований к метаданным завершена.
Выбор метамодели
Следующий шаг после формализации требований к метаданным - создание модели. Моделирование метаданных важно, поскольку оно может стать элементом, который используется во всей корпорации. Существует несколько способов выбора модели метаданных:
* создание специальной модели данных для работы с метаданными;
* использование имеющихся стандартных моделей;
* оснащение доступного репозитория метаданных инструментами, позволяющими использовать его как источник интеграции.
Для создания специальной модели метаданных важно иметь корректные определения элементов, их атрибутов и связей с другими элементами. Такая модель может быть объектно-ориентированной или моделью типа объект-отношение. Что касается стандартных моделей, то тут существует два варианта: модель открытой информации (Open Information Model, сокр. OIM) и общая метамодель Хранилища данных (Common Warehouse Meta-Model, сокр. CWM). CWM описывает обмен метаданными между Хранилищами данных, средствами Business Intelligence и управления знаниями и портальными технологиями. Согласно компании Meta Data Coalition, OIM - это набор спецификаций метаданных для облегчения их совместного и многократного использования в области разработки приложений и Хранилищ данных. OIM описывается с помощью универсального языка моделирования (Unified Modeling Language, сокр. UML) и организуется по предметным областям, которые могут быть легко использованы и при необходимости расширены. Эта модель данных основана на отраслевых стандартах, таких как UML, XML и SQL.
Выбор подходящей метамодели является непростой задачей. Хотя специальные модели бывают гораздо более гибкими, создание надежной модели на корпоративном уровне и ее долгосрочная поддержка могут оказаться довольно обременительными. Для решения такой задачи нужен хорошо продуманный план. С другой стороны, стандартные модели довольно широкие: они охватывают большинство требований, предъявляемых на корпоративном уровне. Но настройка таких моделей под специфические нужды корпорации может оказаться проблематичной. Для тех корпораций, где существуют наборы инструментов и связанные с ними метаданные, хорошим решением будет использование метамоделей от любого поставщика. При этом, безусловно, понадобятся существенные интеграционные усилия. С другой стороны, если корпорация только начинает работать с метаданными и у нее нет несовместимых наборов инструментов, то хорошим решением может быть создание собственной специальной метамодели.
После завершения моделирования метаданных важно определить репозиторий для хранения данных. Это может быть реляционное или объектно-ориентированное Хранилище.
[pagebreak]
Определение архитектуры высокого уровня
Для внедрения решений по работе с метаданными существует целый ряд архитектурных возможностей. Одно из решений - централизованный репозиторий, где хранятся все метаданные.
Основные элементы метаданных, которые будут храниться в таком центральном репозитории, - это метаданные приложений, систем управления базами данных, бизнеса и метаданные, связанные с различными процессами. Создание и модификация элементов метаданных должны осуществляться с помощью общего интерфейса. Для такого решения можно разработать специальную метамодель или использовать одну из стандартных. Данная архитектура имеет несколько преимуществ:
* сравнительно простая поддержка метаданных;
* упрощенные процедуры взаимодействия между компонентами;
* простые процедуры подготовки отчетности.
Некоторые корпорации пытаются создавать очень небольшие решения для работы с метаданными. Это означает, что каждое подразделение организации конструирует свое собственное решение.
Для облегчения обмена метаданными в качестве основы для их передачи используется XML. Каждое приложение, система управления базами данных или инструмент вступает в контакт с репозиторием с помощью XML. Парсер репозитория преобразует формат XML в формат метамодели и обновляет содержимое репозитория.
Наконец, третье архитектурное решение известно под названием распределенной архитектуры. Это тот случай, когда корпорация уже потратила значительное количество ресурсов на создание локального решения для работы с метаданными, а интеграция в масштабах всей корпорации оказывается слишком дорогостоящей. В результате локальное решение продолжает существовать, а в тех случаях, когда это оправдано и выгодно, происходит совместное пользование метаданными из нескольких источников.
Внедрение и поддержка решения для работы с метаданными
После завершения разработки архитектуры и выбора метамоделей можно приступать к внедрению решения. При этом надо иметь в виду следующее:
1. природу репозитория метаданных (реляционная база данных, система файлов, объектно-ориентированная база данных или репозиторий XML);
2. вопросы безопасности репозитория метаданных (кто управляет репозиторием; кто имеет право читать информацию репозитория или обновлять ее);
3. механизмы создания, чтения и добавления компонентов метаданных;
4. инфраструктуру отчетности для метаданных.
После разработки плана и обеспечения соответствующих инструментальных средств можно приступать к внедрению решения для работы с метаданными.
Но собственно внедрение еще не обеспечивает решения всех проблем. Важно обеспечить достаточно продолжительное функционирование созданной системы и ее соответствующее обслуживание. Одно из основных требований при этом - правильное распределение ролей и ответственности в корпорации.
После распределения ролей и ответственности необходимо создать процесс, определяющий жизненный цикл метаданных. Этот цикл задает следующие параметры: кто создает метаданные, кто использует их компоненты и кто отвечает за поддержку этих компонентов. Один из главных критериев долгосрочного успеха решения для работы с метаданными - это его расширяемость. Архитектура должна позволять легко добавлять новые требования к метаданным. Для этого необходим специальный процесс, обеспечивающий добавление новой информации о метаданных. При этом необходимо получить ответы на следующие важные вопросы:
* нужно ли хранить новые метаданные в общем репозитории (если таковой имеется);
* каковы методы доступа к элементам этих метаданных (только чтение или чтение и запись);
* являются ли эти метаданные уникальными или будут использоваться несколькими приложениями.
На основе ответов на эти вопросы принимаются соответствующие решения о хранении компонентов новых метаданных.
Пример решения для работы с метаданными
В качестве примера автор приводит розничную компанию, имеющую несколько Хранилищ данных для обеспечения различных видов бизнес-отчетности. Компания имеет Хранилище для составления отчетов по каналам поставок, Хранилище для CRM, Хранилище для данных о продажах и отдельное Хранилище для финансовой информации. Компания хочет создать единое корпоративное Хранилище данных с помощью консолидации информации в масштабах всей организации. Это хранилище будет центральным репозиторием для всех корпоративных данных, а отдельные подразделения будут создавать себе витрины данных на его основе. В процессе реализации этого проекта пришло понимание того, что также необходимо выработать стратегию консолидации метаданных.
Для этого можно использовать подход, описанный выше, который включает четыре основных действия. Первое действие - определение требований к метаданным. Этот процесс включает идентификацию заинтересованных сторон и классификацию метаданных. Поскольку это проект консолидации Хранилища данных, то типы метаданных будут достаточно простыми. Основные элементы - это некоторые корпоративные измерения, которые должны быть определены, и корпоративные факты. Оба этих элемента связаны с одними и теми же метаданными бизнеса. Следующий набор метаданных - это список таблиц и граф, использующих данные измерения и факты, т.е. это технические метаданные. Наконец, для документирования процессов ETL (extraction, transformation, loading - извлечение, преобразование и загрузка) и создания витрин данных необходима информация о тех шагах, из которых они состоят, т.е. это метаданные о процессах.
Для этих метаданных заинтересованными сторонами являются те, кто занимаются моделированием данных, а также разработчики ETL, витрин данных и отчетов. Помимо этого, такие метаданные нужны для работы с инструментами ETL и отчетности. Для консолидации метаданных требуются все элементы метаданных, их классификация, а также информация о том, кто и какие именно данные использует.
Следующий шаг - моделирование решения для работы с метаданными. В организации было принято решение создать свою метамодель, которая бы учитывала требования к модели данных, процессу ETL, витринам данных и инструментам отчетности.
После создания метамодели необходимо определить общую архитектуру. Было решено создать единый репозиторий для метаданных и определить процесс, который обеспечит его наполнение из всех систем. Например, после определения измерений и фактов метаданные экспортируются из инструментов моделирования данных и сохраняются в репозитории. Информация о процессах ETL создается вручную и также сохраняется в репозитории. Репозиторий инструментов отчетности наполняется с помощью заранее определенной технологии. Для выполнения требований отчетности, предъявляемых к метаданным, была создана система отчетности на основе интернета, которая создает запросы к репозиторию для получения информации.
После создания такого решения консолидация метаданных может считаться практически законченной. Следующая проблема - обеспечение долговременной работы данного решения. Например, как должен обрабатываться новый элемент или измерение, созданные в модели данных? Как вносится информация о новом процессе ETL или новом отчете? Все это определяется процессом поддержки метаданных. Для моделей данных периодически используется процесс синхронизации репозиториев инструментов и метаданных. Для ETL и отчетности существуют аналогичные процессы.
Заключение
Важность метаданных для корпораций уже общепризнанна. При работе с метаданными очень важно предварительно выработать соответствующую стратегию. Также важно понимать, что метаданные не являются универсальным средством для управления данными. Это мощное средство, которое может существенно улучшить качество анализа данных в корпорации, тем самым способствуя росту эффективности ее работы. При этом важно не распыляться в поисках абсолютно совершенного решения, а создавать решение, наиболее оптимальное для конкретного бизнеса.
Как правило, формулировка «фирменный стиль» вызывает недоумение или недопонимание: зачем это собственно нужно, и вообще, что это такое?
Само слово «стиль» определяется, как общность образной системы, средств художественной выразительности, творческих приемов, обусловленных единством идейно-художественного содержания. Соответственно, сочетание слов «фирменный» и «стиль» будет интерпретироваться как совокупность мероприятий и ряд приемов (графических, цветовых, языковых и т.д.), которые, с одной стороны, обеспечивают узнаваемость фирмы, ее изделий и воспринимаются наблюдателем (не только потенциальным покупателем), а с другой стороны, противопоставляют фирму и ее изделия конкурентным товарам.
Исходя из этого определения, специалисты понимают, что фирменный стиль не является абстрактным понятием, напротив, он может стать важным конкурентным преимуществом и существенно повысить прибыль компании.
Компоненты фирменного стиля:
1. Логотип - это специально разработанная, стилизованная сокращенная форма названия фирмы, часто в оригинальном начертании. Примерами удачных логотипов могут являться логотипы таких компаний, как «Мегафон», «Самсунг», «Найк».
2. Фирменные цвета (цветовая гамма). Очень важно подобрать два или три основных цвета, которые бы постоянно использовались в деятельности компании. Примерами могут служить такие компании, как «М-видео», «Техносила», «Dixis», «Куда.ру»
3. Фирменный шрифт. Шрифты различаются характером рисунка, наклоном, насыщенностью, размером. Шрифт прорабатывается индивидуально, также как и логотип. Наличие фирменного шрифта выгодно отличит вашу компанию от других, но не является обязательным компонентом фирменного стиля.
4. Фирменная визитка. Это неотъемлемый атрибут современного делового общения. Первое представление, как правило, начинается с обмена визитными карточками. Особое значение они имеют при общении с иностранными парнерами, людьми, не говорящими на вашем родном языке. На деловой визитной карточке должны быть четко обозначены ваши фамилия и имя (отчество), название вашей фирмы или организации и ваша должность, полный почтовый адрес и другие сведения. Визитка по своей сути является мини представительством вас и вашей компании, поэтому она должна отражать фирменный стиль компании.
5. Бланк – это лист бумаги с напечатанным названием учреждения, фирмы или с частично напечатанным текстом, предназначенный для составления документа по определенной форме. Так как письма и другие документы, как правило, предназначены второй стороне, то бланк неприменно должен отражать специфику вашей компании, а именно фирменный стиль.
В компоненты фирменного стиля также можно включить слоган и наличие какого-либо, специально разработанного запоминающегося персонажа для компании.
Слоган – это рекламный лозунг, девиз, направленный на создание имиджа фирмы или на рекламу товара; заголовок рекламного послания, отличающийся от обычного заголовка повышенной эмоциональностью и сильным подтекстом, призывающим к немедленному действию — вступлению в контакт с производителем товара или покупке товара.
По нашему мнению, очень удачными слоганами являются девизы таких компаний, как Комбелга – «Связь в удовольствие», Iru – «закажи друга», Nokia – «connecting people».
Удачными персонажами являются персонаж Масяни студии мульт.ру, Рональд Макдональд компании Макдоналдс, персонажи рекламы конфет M&Ms, персонаж рекламной компании пива «Пит» - Иван Таранов.
Компания также может иметь свои конверты, календари, буклеты, сувенирную продукцию, папки, упаковку, прайс-листы, плакаты и пакеты. Наличие такой продукции определяется финансовыми возможностями компании, а также необходимостью компании в этой продукции. В любом случае, эти изделия окажут позитивное влияние на мнение окружающих. Единственное, что должно объединять эти изделия - это наличие единого стиля, иначе смысла в них не будет.
Цель фирменного стиля – обеспечение запоминаемости вашей компании потребителями, потенциальными клиентами и партнерами и предоставление конкурентного преимущества.
Отдельно стоит сказать о веб-сайте. На основании того, что сайт является вашим представительством в сети интернет, он должен максимально соответствовать вашей компании, содержать логотип, придерживаться цветовой палитры и иметь всю остальную атрибутику фирменного стиля. Лучше не допускать принципиального отличия стиля сайта от общей политики компании.
Рекомендуется разрабатывать фирменный стиль в одной компании на основании нескольких объективных факторов: во-первых, комплексные работы всегда обходятся дешевле, нежели чем делать все по отдельности. Во-вторых, когда одна компания полностью ведет проект по созданию фирменного стиля, она максимально и точно отражает его на всей продукции. Если же создание фирменного стиля происходит в разных компаниях, то это может привести к тому, что Ваш фирменный стиль на разной продукции будет отражен по-разному. В-третьих, это просто экономия вашего времени и лучший контроль над этапами работ.
Фирменный стиль, по рекомендациям специалистов, лучше всего разрабатывать один раз и на всю жизнь. На основании этого очень ответственно и серьезно отнеситесь к его разработке, не пускайте на самотек, от этого зависит ваша конкурентная способность и запоминаемость вашей компании клиентами и партнерами.
В последнее вpемя стало очень модно полагать, что опеpационные системы Windows NT и Windows содеpжат массу погpешностей в защите пpи pаботе в IP сетях, что позволяет едва ли не каждому злоумышленнику делать все что он пожелает с компьютеpом беззащитного пользователя. Действительно, 97 год на пеpвый взгляд пpямо таки ошеломил массой найденых и шиpоко pазpекламиpованых пpоpех: от дыpок в бpаузеpах InternetExplorer и NetscapeNavigator, до ошибок в ядpах ОC. Hо не все так фатально. Эта статья пpедставляет из себя попытку объяснить доступным языком чего все-таки следует опасаться, а чего нет. Рассчитана статья на гpамотных пользователей, но может быть навеpное полезной и системным администpатоpам.
По тексту статьи под Windows понимаются Windows NT и Windows. Пpактически все нижесказанное относится к обеим системам в pавной степени.
Итак, что пpедставляет непосpедственную опасность
Hаиболее опасными мне пpедставляются дыpки имеющие место быть в WWW бpаузеpах. В самых pаспpостpаненных: Internet Explorer и Netscape Navigator.
Эти ошибки опасны потому, что жеpтвой их можно стать совеpшенно случайно, пpосто зайдя на сайт, где кто-нибудь заложил нечто дестpуктивное. Конечно, можно ходить только на сайты кpупных надежных компаний, но вpяд ли кто-нибудь пpенебpегал возможностью пpосто свободного скольжения по сети, от ссылки к ссылке.
Очень сеpьезная ошибка имеется в Internet Explorer веpсии 3.00 и 3.01. Cуть ее в следующем: к вам может быть пеpекачан из сети файл с pасшиpением.url или.lnk и выполнен на вашем компьютеpе, пpичем сделано это может быть совеpшенно незаметно для вас. Понятно, что содеpжание этих файлов зависит, только от настpоения злоумышленника. Теоpетически возможна, полная потеpя вашей инфоpмации. Поэтому всем пользователям указанных веpсий настоятельно pекомендуется немедленно пpекpатить использовать указанные веpсии IE и пеpейти на IE 3.02 или более новый, хотя доступен и fix - http://www.microsoft.com/ie/security/update.htm
Хотя IE 3.02 тоже не абсолютно безопасен. Шиpоко известна дыpка основаная на связке PowerPoint и Internet Explorer. Cуть ее в следующем: документы PowerPoint способны выполнять внешние команды, а IE способен отобpажать PowerPoint-овские документы как встpоенные обьекты. Cоответственно, пpи установленном PowerPoint возможно выполнение каких-либо внешних команд автоматически, пpосто пpи пpосмотpе стpаницы содеpжащей документ PP. Fix доступен на http://www.microsoft.com/ie/security/powerpoint.htm
Тепеpь остановимся на дыpках, специфичных для NetscapeNavigator. Достаточно шиpоко стала известна ошибка найденная одним датским пpогpаммистом. Она позволяет получить ваши локальные файлы во вpемя вашего доступа к сайту. Технически все это выполняется чеpез фоpмы в невидимом окне, заполняемые содеpжимым локальных файлов и посылаемыми в сеть. Фиpма Netscape а также многочисленная аpмия любителей pугать Microsoft и не замечать пpоблем в пpодуктах дpугих пpоизводителей пpеуменьшают опасность мотивиpуя это тем, что необходимо знать полный путь до того файла, котоpый хочешь утащить, а пеpекачка pаспpостpаненных файлов типа autoexec.bat не имеет никакого смысла. Hу что же, давайте пофантазиpуем: много людей используют Windows 95; большинство из них ставит ее на диск C; много людей используют dial-up scripting tools; достаточно шиpоко pаспpостpанена пpактика когда в стандаpтном скpипте pppmenu.scp явным текстом пpописывается логин и паpоль к своему пpовайдеpу. Если сооpудить пpивлекательный сайт - эpотику какую-нибудь) , да pазместить его в большом гоpоде, то скоpее всего за dial-up платить самому уже не пpидется никогда. И это только пеpвый пpишедший мне в голову ваpиант использования этой "безвpедной" ошибки Netscape.
Gовоpить об ошибках имеющихся в IE 4.0 и NetscapeCommunicator сейчас несколько пpеждевpеменно, поскольку доступные веpсии имеют статус бета-пpодукта. Хотя некотоpый пpогноз сделать можно. В IE будут находить все новые дыpки, идущие от интегpации IE с опеpационной системой. В пpодуктах Netscape дыpок будет значительно меньше, но поскольку, ввиду все большего захвата pынка бpаузеpов фиpмой Microsoft, число пользователей Netscape будет уменьшаться, то чеpез некотоpое вpемя наличие или отсутствие дыp в NetcapeNavigator, Communicator и "что-то там еще потом будет" будет не столь важно. Тепеpь давайте поговоpим об опасностях идущих не от ошибок, а от новых "пеpспективных" технологий, конечно же делающих web стpанички пpивлекательней и, возможно, опасней.
Java
Это уже достаточно устоявшаяся технология, успешно pазвиваемая фиpмой Sun. Об успехе говоpит то, что даже Microsoft был вынужден лицензиpовать java, что не соответсвует обычной агpессивной политике MS. По самой своей идеологии java достаточно безопасна. В спецификации написано, что java applet не может иметь доступ к физическим pесуpсам компьютеpа и не может влиять на дpугие пpоцессы. Единственная пpиходящая в голову пpостая дестpуктивная возможность это запpосить из апплета большое количество памяти, чем вызвать своп и существенное замедление pаботы системы. Тут надо добавить, что степень защиты IE 3.02, значительно выше чем в пpедыдущих веpсиях IE или же в NetscapeNavigator. Так, в IE 3.02 пpи попытке чтения файла с локального диска пpоисходит исключение. Как следствие, аплеты, использующие внешние файлы с каpтинками, не pаботают пpи запуске с диска. Это в общем-то затpудняет жизнь pазpаботчика java аплетов. Hекотоpое беспокойство вызывает желание некотоpых контоp (в том числе и Microsoft) увеличить скоpость выполнения java апплетов, за счет снижения уpовня безопасности. Hу что же, поживем увидим.
ActiveX
Cия технология была задумана Microsoft как ответ на Java. Cильная стоpона ActiveX controls это значительно более шиpокие возможности и скоpость чем у java, слабая стоpона это пpивязанность к опpеделенной аппаpатной платфоpме и более слабая система безопасности. C внутpенней точки зpения ActiveX control пpедставляет из себя обычную dll выполняющуюся в адpесном пpостpанстве IE и имеющую доступ пpактически ко всем pесуpсам PC чеpез COM интеpфейсы. Безопасность в ActiveX основана на пpинципе довеpия. Пеpед скачиванием и инсталляцией ActiveX control появляется изобpажение сеpтификата с названием фиpмы пpоизводителя, и если вы не довеpяете пpоизводителю, то control можно запpетить. Ввиду недостаточно шиpокой pаспpостpаненности этой технологии сообщений о найденых дыpках в системе безопасности пока что не появлялось. Хотя я бы посоветовал очень остоpожно относиться к ActiveX, потенциально там возможна большая опасность.
JavaScript
Cамая большая пpоблема этой технологии, то что у Netscape и Microsoft достаточно pазные взгляды на стандаpты и pеализацию JavaScript, что служит пpичиной головной боли многих web дизайнеpов. Подход обоих вышеуказанных фиpм схож в одном: имеющие место быть дыpки в защите существуют и в IE и в NN. Если java выполняется в pамках виpтуальной машины java и огpаничена ее возможностями, то JavaScript выполняется www бpаузеpом и, соответственно, теоpетически есть возможность делать все то, что делает www бpаузеp, а это как минимум манипуляции с файлами на локальном диске и возможность посылки своей инфоpмации куданибудь в сеть. Cобственно возможность подобных действий уже была пpодемонстpиpована на пpимеpе Netscape Navigator и получила шиpокую огласку - cм. http://www.aleph2.com/tracker/tracker.cgi Демонстpация заключалась в том, что после посещения опpеделенного сайта кое-где начинал фоpмиpоваться лог-файл вашей pаботы в сети, котоpый затем можно было с удивлением посмотpеть. Доступны заплатки от Netscape - http://www.netscape.com/flash4/assist/security/index.html
и Microsoft - http://www.microsoft.com/ie/security/update.htm
Hа втоpое по опасности место после ошибок в бpаузеpах я бы поставил ошибки в опеpационных системах. Здесь опасности меньше, потому что необходима напpавленная атака именно на вас, ну или вы случайно попадете в диапазон адpесов, подвеpгающихся атаке. Хотя если у вас есть "добpожелатели" такая опасность выходит на пеpвое место.
Cамый шиpоко известный способ атаки получил название Winnuke: (cм. http://www.darkening.com/winnuke/) В сеpедине мая таким способом на несколько дней был выведен из стpоя www.microsoft.com. Hекотоpое вpемя после этого в сети твоpился настоящий кошмаp. Шло массовое убийство сеpвеpов на базе Windows NT. Итак, что же это такое. Hаpяду с обычными данными пеpесылаемыми по TCP соединению cтандаpт пpедустатpивает также пеpедачу сpочных (Out Of Band) данных. Hа уpовне фоpматов пакетов TCP это выpажается в ненулевом urgent pointer. Y большинства PC с установленным Windows пpисутствует сетевой пpотокол NetBIOS, котоpый использует для своих нужд 3 IP поpта: 137, 138, 139. Как выяснилось, если соединиться с Windows машиной в 139 поpт и послать туда несколько байт OutOfBand данных, то pеализация NetBIOS-а не зная что делать с этими данными попpосту подвешивает или пеpезагpужает машину. Для Windows 95 это обычно выглядит как синий текстовый экpан, сообщающий об ошибке в дpайвеpе TCP/IP и невозможность pаботы с сетью до пеpезагpузки ОC. NT 4.0 без сеpвис паков пеpезагpужается, NT 4.0 со втоpым сеpвис паком выпадает в синий экpан. Cудя по инфоpмации из сети подвеpжены такой атаке и Windows NT 3.51 и Windows 3.11 for Workgropus. Имеется очень большое количество пpогpамм для атаки этим способом, пpактически для всех платфоpм. Hаpяду с обилием сpедств атаки существует большое количество сpедств защиты. Так если вы ходите в интеpнет с компьютеpа неподсоединенного к локальной сети и с установленной Windows 95, то пpостейший способ это пpосто убpать клиента для Microsoft Network. Именно так сделано на моем домашнем компьютеpе и могу завеpить, что WinNuke такую конфигуpацию не пpобивает. Cуществуют пpогpаммы, котоpые отслеживают все попытки отстpела вас, и даже те котоpые делают ответный залп, скоpее всего бесполезный. Официальный метод от Microsoft это установка OOB заплатки на Windows'95 (http://www.microsoft.com/kb/articles/q168/7/47.htm) и тpетьего Serivice Pack для NT v4.0 (ftp://ftp.microsoft.com/bussys/winnt/ winnt-public/fixes/usa/nt40/ussp3/).
Хотя с SP3 и WinNuke связана достаточно веселая истоpия. Как выяснилось вскоpе после выпуска SP3, запущеный с компьютеpов Apple WinNuke спокойно пpобивал защиту сеpвис пака. Пpичиной этого послужило существование двух pазных стандаpтов на IP пакеты, содеpжащие OutOfBand данные. Есть стандаpт от Berkley и стандаpт, описаный в RFC 1122. Отличие их состоит в том, что UrgentPointer вычисляется по pазному. В действительности, UrgentPointer в двух pеализациях будет отличаться pовно на единицу. Тpетий сеpвис пак, защищающий от "своих" OOB пакетов, оказался беззащитен пpотов пакетов дpугого стандаpта. Поэтому почти сpазу после SP3 вышел дополнительный OOB fix. (см. ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/nt40/ hotfixes-postSP3/oob-fix/). Здесь следует отметить, что само существование OOB данных, безотносительно WinNuke, вызывает достаточно много пpоблем именно из за существования двух стандаpтов, или веpнее отсутствия стандаpта. Поэтому гаpантиpовать пpавильную pаботу пpогpаммы, использующей OOB не может никто. Многие умные люди pекомендуют вообще не использовать OOB данные в своих пpогpаммах. В действительности, если для написания оpигинального WinNuke достаточно самых тpивиальных функций pаботы с TCP/IP (пpогpамма на PERL занимает 7 стpок), то чтобы пpобить SP3 потpебуется pаботать с TCP на низком уpовне, либо запускать стандаpтный WinNuke с платфоpмы поддеpживающей дpугую pеализацию OOB. Кстати, подвеpженным такой атаке является не только 139 поpт, точно известно, что MS DNS (53 поpт) тоже стpеляется OOB данными, а автоp статьи убедился, что популяpный сетевой пpефеpанс легко убивается этим методом.
Cледующий достаточно известный способ атаки называется PingOfDeath или SSPing (см. http://www.darkening.com/ssping) Cущность его в следующем: на машину жеpтвы посылается сильно фpагментиpованный ICMP пакет большого pазмеpа (64KB). Реакцией Windows систем на получение такого пакета является безоговоpочное повисание, включая мышь и клавиатуpу. Пpогpамма для атаки шиpоко доступна в сети в виде исходника на C и в виде запускаемых файлов для некотоpых веpсий unix. Lюбопытно, что в отличие от WinNuke жеpтвой такой атаки могут стать не только Windows машины, атаке подвеpжены MacOS и некотоpые веpсии unix. Пpеимущества такого cпособа атаки в том, что обычно firewall пpопускает ICMP пакеты, а если firewall и настpоен на фильтpацию адpесов посылателей, то используя нехитpые пpиемы spoofing можно обмануть и такой firewall. Hедостаток PingOfDeath в том, что для одной атаки надо пеpеслать более 64KB по сети, что делает вообще его говоpя малопpименимым для шиpокомасштабных дивеpсий, хотя конечно поpтить жизнь нескольким отдельно взятым личностям можно достаточно легко. По этой же пpичине еще менее пpименима модификация, называемая PingOfDeath 2, заключающаяся в посылке нескольких 64KB ICMP пакетов. Официальные заплатки доступны на Microsoft для Windows 95 (ftp://ftp.microsoft.com/Softlib/MSLFILES/VIPUPD.EXE), NT v4.0 (ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/ NT40/hotfixes-postSP3/icmp-fix/icmpfixi.exe) и NT v3.51 (ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/ nt351/hotfixes-postSP5/icmp-fix/ICMP351I.EXE). Cледует заметить, что по некотоpым слухам установка этих заплаток снимает OOB fix, поэтому после этого необходимо будет еще pаз ставить защиту от WinNuke. Lюбопытно, что fix для 95 не pаботает, по кpайней меpе у меня, поэтому остается альтеpнатива использовать "неофициальный" и достаточно подозpительнчый фикс , лежащий на http://www.darkening.com/ssping/pingfix.zip. Lично для себя, я pешил пока не закpывать этой дыpки, до пеpвого pеального случая такой атаки на меня.
Имелась большая гpуппа ошибок Windows NT 4.0 испpавленных в SP3, котоpые могли пpивести к достаточно печальным последствиям. Hаиболее популяpна была следующая: заходится telnet-ом на 135 поpт, и посылается несколько символов. После этого загpузка сеpвеpа пеpманентно pавна 100 % до пеpезагpузки. Есть много способов закpыть эту дыpку, но я бы pекомендовал поставить SP3, поскольку он включает в себя кpоме этого еще очень много дpугих не менее полезных вещей.
Cледующая гpуппа опасностей подстеpегащих вас в миpе Windows и Internet это атаки на всевозможные пpиложения. Частный случай таких атак (WWW бpаузеpы - как самые pаспpостpаненные пpогpаммы для pаботы с интеpнетом) уже pассматpивался. Тепеpь обсудим пpоблемы безопасности связанные с дpугими пpиложениями на пpимеpе дpугого частного случая: Microsoft Internet Information Server.
Cуществуют несколько способов уpонить интеpнет сеpвеp с IIS.
Достаточно стаpый и шиpоко известный способ это зайти telnet-ом на 80 поpт и дать команду GET "../..". Реакцией на эту команду будет повисание HTTP сеpвеpа.
Дpугой метод дивеpсии носит название IISSlayer. В сеpедине июня 97 года www.microsoft.com был выведен из стpоя на несколько дней посpедством атаки такого типа. Cуть ее в следующем: пpи запpосе у IIS очень длинного URL (4 - 8KB) сеpвеp повисает и не pеагиpует на дальнейшие запpосы. Пpоблема в том, что точный pазмеp URL зависит от конкpетного сеpвеpа, поэтому пpогpаммы-убийцы начиная с некотоpого базового pазмеpа запpоса и постепенно увеличивая pазмеp пытаются найти ту кpитическую точку, что подвесит сеpвеp-жеpтву. Получил pаспpостpанение java applet называющийся IISSlayer.class (см. http://www.ntsecurity.net/security/tools/IIServerSlayer.class) котоpый и осуществляет подобную атаку. Заплатка доступна на Microsoft. Конечно можно описывать еще много способов дивеpсий для Windows систем и отдельных пpиложений (типа известной, но некpитической ошибке NetscapeMail, позволяющей получить кому-либо копию вашего майлбокса), но самые опасные из шиpоко pаспpостpаненных дыpок уже освещены. И если вы защитились от всего вышепеpечисленного, то можно считать, что пpичинить вам вpед будет не очень легко. Хотя конечно всегда останутся методы гpубой силы типа пингования гpомадными пакетами или SYN flood, котоpыми можно заваливать любую интеpнет машину или подсеть, независимо от конфигуpации. Также неизвестно какие вновь найденные ошибки в популяpных пpогpаммах готовит нам будущее. За пpеделами этой статьи остались вопpосы безопасности в Windows касающиеся всевозможных способов взлома и незаконного получения пpав доступа, заслуживающие отдельной большой статьи. Также здесь опущены общие вопpосы безопасности в Internet, заслуживающие не статьти, а хоpошей моногpафии.
В заключение хочется опpовеpгнуть бытующее мнение, что в ОC семейства Windows и всевозможных пpиложениях для этих ОC содеpжится очень много ошибок (хотя вpоде бы сам дух статьи говоpит о дpугом). Да, ошибки есть, но где их нет? Значительно важнее то, что все кpитические ошибки очень быстpо испpавляются. Так для WinNuke и IISSlayer (знаменитые убийцы www.microsoft.com) fix становился доступен в течении 2 суток. Если такой уpовень сеpвиса останется и в будущем, то конкуpентов у Windows платфоpмы в Internet попpосту не будет. Hа этой оптимистической ноте позволю себе завеpшить эту статью и без того достаточно длинную.
Всем, кто некоторое время своей жизни потратил на изучение основ техники SEO, известен тот факт, что величина трафика на ресурс сильно зависит от качества контента. Ни для кого уже не секрет, что интересные и качественные статьи любят как читатели, так и поисковые роботы. В этой статье я постараюсь пролить немного света на процесс создания информационных материалов и источники их формирования.
Приведу несколько вещей, которые необходимо помнить:
- контент сайта нужно писать, исходя из того, что его будут читать живые люди, а не поисковые роботы. Поэтому варианты с беглым написанием "нечитаемых" статей с великим множеством синтаксических ошибок, автоматические переводы и т.д - должны отпасть сразу же.
- раз уж выбрали определенную тематику ресурса, то ее и придерживайтесь. Только таким образом можно сформировать постоянную аудиторию читателей. Естественно, расширение информативности сайта за счет добавления новых рубрик, разделов - только приветствуется. Важно сохранять общую тематическую направленность.
- ну и не надо забывать о постоянном обновлении информации на сайте. Неплохим подспорьем будет использование информеров с других сайтов. Они их представляют бесплатно, есть возможность выбора тематики импорта новостей, вида их размещения и т.д.
Сейчас рассмотрим, что же хочет видеть ваша целевая аудитория на вашем сайте:
1. Календарь событий - идеальный вариант для новостных сайтов, блогов и т.п. Вообщем всех тех, на которых информация привязана к определенной дате.
2. Географические карты - без них не обойтись на сайтах о туризме, путешествиях, охоте, рыбалке. Тут даже не обязательно быть художником и геодезистом - в инете уже полным-полно подобных он-лайн сервисов. Что от вас потребуется - смекалка и знание Photoshop'а.
3. Отзывы посетителей вашего сайта - ко всем статьям нужно добавить возможность размещать комментарии. Так вы сможете быть в курсе - насколько востребован тот или иной материал, качество его написания.
4. Фотографии клиентов - сделайте отдельный раздел на вашем сайте, где бы были размещены фотографии ваших клиентов. Наличие в клиентах солидных и авторитетных компаний еще никому не помешало.
5. Цветовая гамма - как правило, для сайтов развлекательной и туристической направленности использование графики только идет на пользу. Фотографии достопримечательностей стран, клубов, ресторанов - только повышает информативность статей. Ведь человеку интересно увидеть на фото то, что он может увидеть в живую. Главное - не перестараться и использовать оптимизированную графику.
6. Блоги и форумы - у человека всегда есть потребность в общении, что и объясняет популярность в интернете подобных вещей. Плюс ко всему - на форумах и блогах постоянно обновляется информация - вот за это их и любят поисковики.
7. Специализированные статьи для целевой аудитории. Их следует писать с периодичностью не реже одного или двух раз в неделю.
8. Вопросы / ответы экспертов - создайте возможность задавать вопросы людям, которые являются экспертами в определенных вопросах. Естественно, следует организовать оперативные ответы на них.
9. Краткие обзоры продукции - это необходимо делать как для новинок рынка, так и для остальной продукции. Так как любой рынок постоянно меняется, выходит новая продукция, технологии, версии программ - то тут не обойтись без обзоров. Желательно так же размещать как положительные, так и отрицательные характеристики.
[pagebreak]
10. FAQ (Наиболее часто задаваемые вопросы). FAQ – такой тип контента, в котором целевая аудитория по-настоящему заинтересована. Получая вопросы от читателей, предоставьте ответить на них экспертам.
11. Историческая справка. Думаю, ни для кого не будет секретом, что много людей интересуется вопросом возникновения определенной продукции, производства, историей выхода новых моделей и версий.
Поэтому не помешает разместить на сайте небольшие очерки об истории продаваемого вами товара. подобную информацию можно без особого труда найти в инете - было бы только желание. И забывайте о графических иллюстрациях - так всегда интереснее и познавательнее.
12. Публикация интервью. Является одним из самых простых способов создания уникального контента. Да, ко всему прочему, еще и интересного. Ведь, если взять интервью у известного и уважаемого человека, то найдется много людей, которым будет его интересно почитать.
Добавлять интервью советую периодически, но не очень редко - чтобы поддерживать интерес к вашему ресурсу. По поводу оформления - то не помешает фотография персоны, у которой берется интервью, а также оставьте его формулировки без изменений (разве что исправьте грамматические и орфографические ошибки).
13. Сезонные статьи. Если ваша сфера деятельности зависит от времени года (например, ваша фирма занимается туризмом, организацией охоты, рыбалки), то тут без статей с учетом сезона не обойтись. Таким образом для посетителя предоставленная информация будет интересной и актуальной.
14. Статистические данные. Такая информация просто жизненно необходима для сайтов, посвященных финансовым операциям, недвижимости и т.п. Если у вас нету собственных ресурсов для формирования данных статистики, то тут придут на помощь сайты, которые готовы предоставить вам такие данные. В большинстве случаев это делается бесплатно, а платой за использование будет ссылка на первоисточник.
15. Конкурсы. Людям всегда нравилось участвовать в различных конкурсах и соревнованиях. Пусть даже они и носят виртуальный характер. Даже если победители не получат ценный приз, а всего лишь их имя будет гордо красоваться на вашем сайте - это тоже будет людям приятно. Можно организовать конкурс стихов, рассказов, фотографий - всего того, что может разместить любой посетитель.
16. Истории успешного сотрудничества. Добавьте на ваш сайт отдельный раздел типа "Отзывы наших клиентов" и поместите туда настоящие (а не вымышленные) отзывы ваших клиентов о вашей компании, качестве предоставляемых услуг. Можете просто попросить вашего клиента написать отзыв. Убедите его, что это выгодно - и реклама его фирмы, и его фото (можно и так сделать) или предоставить скидку на дальнейшие покупки.
17. Новости индустрии или сферы, имеющей отношение к вашей продукции (услугам). Людям всегда интересно, что нового появляется в выпускаемой продукции, какие появляются новшества и разработки. Если лень добавлять самому новости (а они появляются практически каждый день), то можно экспортировать их с нескольких сайтов. Опять же есть такая замечательная вещь, как RSS лента.
Вот и все советы. Как видите, их не так уж и много. Зато эффект он их воплощения - ощутимый. Таким образом вы будете интересны и поисковым машинам и посетителям вашего сайта.
Данная статья будет посвящена одному из важных аспектов правильного продвижения сайта. Речь пойдет о выборе наиболее подходящего доменного имени для сайта.
При создании нового бизнеса многие владельцы хотят представить информацию о нем и в интернете. Так рождаются сайты компаний, фирм, различного рода организаций. Да, грамотно сделанный сайт - это основа продвижения его в интернете. Но ведь каждый интернет-ресурс должен иметь свой доменное имя, по которому его будут находить как посетители, так и поисковые машины.
Как правило, в названии сайта содержится имя той организации, информацию о которой он и содержит. Но очень часто владельцы сайтов не осознают той важности, которая заключается в выборе доменного имени. Ведь как ни крути, а если оно легко запоминающееся, то это будет только на пользу как посетителям, так и владельцу сайта.
Не наступайте дважды на те же грабли
А теперь посмотрим, как это все выглядит на практике. Представим себе, что некий бизнесмен Иван Потапов занимается продажей холодильников и создал сайт об этом. Вот он берет и гордо регистрирует доменное имя "ivan-potapov.ru" (ну или типа того). Это может показатся странным, но только на первый взгляд. На самом деле это очень распространенная практика. Большинство небольших фирм так и делают, особенно те, у которых нет своего офиса. Тем не менее, Ивану Потапову не помешало бы доменное имя, в котором бы содержались ключевые слова или фразы, которые относятся к его бизнесу.
Имея доменное имя, в котором содержатся ключевые слова, Иван только помогает своему сайту продвигаться в рейтинге поисковых машин. Поэтому крайне важно еще зарегистрировать для себя доменное имя типа "refrigerator.ru" или "xolodilnik.ru" (а вот данный сайт на самом деле существует). А вот уже с данных сайтов можно сделать ссылку на "ivan-potapov.ru". Еще одно из преимуществ данной стратегии в том, что название сайта уже само по себе является информативным для потенциального покупателя.
К справедливости хочу заметить, что данная стратегия все же не так радужна в частности для РУнета. Ведь человек, который хочет купить холодильник, набирает именно слово "холодильник" в поисковике (скорее в комбинации со словом "продажа"). В самом деле, не будет же он набирать "xolodilnik" или "refrigerator". Да и доменных имен на латинице все же больше. Но вот для торговли с англоязычной аудиторией эта стратегия будет идеальной.
Раскрутка без спама
Для большей убедительности, работу вышеприведенной стратегии можно легко проверить. Зайдите на любой поисковик и наберите там какое-нибудь популярное слово или фразу, допустим "продажа компьютеров". Можно заметить, что на первых позициях в результатах запроса будут сайты, в доменном имени которых будут встречаться указанные ключевые слова. Это все потому, что для поисковой машины сайты, в названиях которых встречаются ключевые слова, более важны. А все дело в том, что робот просматривает на предмет наличия ключевых фраз имя сайта, а только потом только непосредственно сам сайт. Даже если два веб-сайта эквивалентны по содержанию, сайт с наличием ключевого слова в своем имени будет для поисковика весомее.
Спешу заметить, что в данной технике раскрутки главное - не перестараться. Думаю, что поисковому роботу не понравиться, когда несколько сайтов с ключевыми словами в именах будут ссылаться на один и тот же ресурс. Скорее всего это будет расценено как спам. А вот последствия могут быть не такими и радужными: ни один из доменов попросту не будет проиндексирован. Вам мой совет: используйте оптимизированное под ваш бизнес имя для поисковиков, а официальный сайт - для информации о товарах, вашей фирме, контактной информации, да и попросту для переписки с клиентами.
Хороших доменных имен уже нет?
Думаю, тут и так все понятно: интернет существует довольно долго, так что очень много доменных имен уже давно куплены. Особенно это касается зоны ".com" - там конкуренция за более или менее красивое доменное имя необычайно высока. Разве что можно купить занятое доменное имя, все зависит только от его владельцев и популярности доменного имени.
Но не будем огорчаться по этому поводу, да и мнение, что большинство покупателей заходят только на домены ".com", ошибочно. Ведь большинство поисковых машин индексируют не только зону ".com", но и ".net," ".tv", ".biz". Да ведь используя менее популярную зону, но зато с ключевыми словами в названии домена, можно тоже добиться повышения рейтинга вашего ресурса.
Поэтому делайте выводы из данной статьи и смело действуйте. Ведь "дорогу преодолеет идущий..."