Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

AJAX без AJAX или кое-что об IFRAME

Просмотров: 6700Комментарии: 0
Alib.spb.ru

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

Для начала. Все началось с того, что, заинтересовавшись AJAX, мне захотелось попробовать уйти от его основного недостатка: невозможности сохранять результаты в нормальном виде на локальном диске. Великий и могучий Интернет подарил замечательную статью Красносельского Константина Константиновича про AJAX (ссылку см. в конце заметки).

В статье, кроме всего прочего, речь шла о возможности отказа от классов JavaScript (в частности xHTTPRequest) в пользу использования IFRAME для реализации динамической погрузки содержимого без перезагрузки страницы. Разумеется, не обошлось и без JavaScript:) Я немного «довел под себя» предлагаемое решение, оставив неизменной идею.

Но обо всем по-порядку.

Постановка задачи:

Необходимо сформировать на сервере при помощи php код html, который разместить в отдельном элементе (например, в <div>) страницы.

Решение (в несколько действий):

Действие 1:

В основной странице (т.е. там, где мы предполагаем делать динамические AJAX вставки) определяем элемент-контейнер. Для наглядности поместим в него кнопку, которая будет инициировать заполнение элемента:

<div id=’myelm’>

<input type=”button” value=”Load”>

</div>

.

Действие 2:

В основном файле страницы определяем невидимый iframe, который будет выступать контейнером:

<iframe onLoad="javascript:ol();" src="" name="sframe" id="sframe" width="0" height="0" scrolling="no" frameborder="0" style="display: none"></iframe>

Я (на всякий случай) определяю этот iframe в самом конце страницы. Про обработчик onLoad и для чего он нужен будет подробнее описано чуть ниже.

Действие 3:

Определяем обработчик нажатия на кнопку и обработчик загрузки невидимого фрейма

<script language="javascript">

function btn_go()

{

window.frames.sframe.location.href = 'include.html';

}

function ol()

{

if (window.frames.sframe.document.body.innerHTML!='')

{window.document.getElementById('myelm').innerHTML=window.frames.sframe.document.body.innerHTML;}

}

</script>

Естественно, что файл include.html – это исключительно демонстрация. Никто не мешает нам написать, например, следующее:

window.frames.sframe.location.href = ‘srv_return.php?s=1&d=2&f=3&res=221?=664ub&etc=11’;

то есть, вызвать php скрипт, результаты работы которого будут отображены в контейнере div

Подробнее стоит остановиться на функции ol(). Ее появление обусловлено тем, что IE (я тестировал на версии 6) не умеет дожидаться загрузки документа. То есть, если бы я определил функцию btn_go() так:

function btn_go()

{

window.frames.sframe.location.href = 'include.html';

window.document.getElementById('myelm').innerHTML=window.frames.sframe.document.body.innerHTML;

}

то при использовании IE контейнер бы просто обнулялся (сценарий уже выполнен, а документ еще не успел загрузиться – можете проверить)

Действие 4:

Подправляем код кнопки в контейнере, связывая обработчик, который разработан на предыдущем шаге, с кнопкой, которая определена в действии 1; одновременно для наглядности «раскрасим» div:

<div id=’myelm’ style=”border: 1px solid blue; background-color: gray;”>

<input type=”button” value=”Load” onClick=”javascript:btn_go();”>

</div>

Действие 5:

Opera (у меня версии 9) «не понимает» конструкции about:blank (пустая страница) и заполняет невидимый фрейм чем-то по своему усмотрению. В итоге, следует предусмотреть «обнуление» фрейма при создании основного документа:

<body onLoad="javascript:window.frames.sframe.document.body.innerHTML='';">

Собственно говоря, все.

Для наглядности приведу демо-примеры полностью

1. Файл client_example.html

<html>

<head>

<title>Example</title>

<script language="javascript">

function btn_go()

{

window.frames.sframe.location.href = 'include.html';

}

function ol()

{

if (window.frames.sframe.document.body.innerHTML!='')

{window.document.getElementById('myelm').innerHTML=window.frames.sframe.document.body.innerHTML;}

}

</script>

</head>

<body onLoad="javascript:window.frames.sframe.document.body.innerHTML='';">

<div id='myelm' style="border: 1px solid blue; background-color: gray;">

<input type="button" value="Load" onClick="javascript:btn_go();">

</div>

<iframe onLoad="javascript:ol();" src="" name="sframe" id="sframe" width="0" height="0" scrolling="no" frameborder="0" style="display: none"></iframe>

</body>

</html>

2. Файл include.html

<span style="">Hello!<br>

This is AJAX script.</span>

(обратите внимание, что в этом файле содержится (а потенциально – генерируется) только тот текст, который должен быть встроен в контейнер, без тегов типа <html> и т.д.)

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

PS. Возникает вопрос - а почему бы, вместо того, чтобы изображать все описанное выше, не использовать просто IFRAME? Вроде проще и надежнее. Это, безусловно, так. Но! Если мы разрабатываем сложную динамическую страницу с элементами div, которые могут перекрыть требуемый нам элемент, то в случае с IFRAME и IE IRFAME будет "просвечивать" сквозь div - т.к. с точки зрения IE, IFRAME (как оконный элемент управления) имеет бесконечно большой z-index... Кстати, в Opera (версии 9) был обнаружен схожий глюк.

Приведенное же выше решение указанного недостатка не имеет.

Ссылки по теме:

Статья Красносельского К.К. AJAX http://webdesign.site3k.net/consulting/ajax.html

Магазины Эльдорадо

Просмотров: 3141Комментарии: 0
Alib.spb.ru

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

- Если вам чего-то надо – не ходите в «Эльдорадо».

- Да бросьте!

- Бросил бы. Да нечего…

Из диалога с продавцом Эльдорадо.

Порой вполне обыденные вещи оборачиваются самой настоящей фантастикой. Например, покупка. Простого бытового прибора. Фена. Вот, например: сгорел фен (этот прибор был вообще отдельной песней – поделка под названием Elenberg мужественно дохла с момента приобретения, но продержалась около 2 лет – рекорд для настолько низкокачественной техники. А вот зачем я его тогда купил… было надо, срочно и вообще – он был самый дешевый). Итак, он наконец-то сгорел. Выкинув его я с чистой совестью отправился в Эльдорадо. Почему именно в него? Да потому, что рядом с работой (метро Лесная в Питере) есть только два магазина техники: Эльдорадо (имел ранее опыт общения с ними – как успешный – 1 раз, так и не очень – три раза) и Телемакс (однажды что-то покупал, вроде – ничего себе магазинчик), причем до Телемкаса идти хоть немного, но дольше. Лень. Она не только двигатель прогресса, но и кумир современности.

Откровенно говоря, придя в Эльдорадо просто по-хорошему удивился. Выбор фенов был достаточно большой (моделей 15..20), из которых со значительными скидками (внимание, акция) продавалось примерно модели три. Все три – Rowenta. После непродолжительных телефонных консультаций с супругой было выяснено, что в принципе можно брать любую. Соблазнительно за цену от 300 до 500 рублей (да, да!!!) получить хороший (по описанию) прибор, в котором присутствуют все функции профессионального фена. Yes!

Акт 1

Итак, вооружившись коробкой с прибором и сверив название прибора и ценник, я бодро направился к кассе. Но был перехвачен по дороге бдительной продавщицей, которая сообщила, что сначала «надо посмотреть». Надо – так посмотрим! Подошли к стойке, и тут началось самое интересное. Оно заключалось в том, что данного прибора на складе не было, хотя в справочнике номенклатуры он присутствовал). Продавец вежливо объяснила, что продать указанную модель она не может, т.к. привезли недавно, выставили, а «по системе не провели». НА мой вопрос «а какие фены можете продать?» была приглашена Главная По Фенам, которая указала на все фены, подпадающие под акцию, и сообщила, что «они пока недоступны для продажи».

Ok. Попробуем поискать справедливости в другом месте. Дошел до стойки ин6формации. Изложил ситуацию. Отнеслись к ней с пониманием, в частности молодой человек, представившийся администратором магазина, долго и путано объяснял, что «продажа не может, вот девушка была…» Минут через 10 я понял: все, пора валить, позитивной конкретики не предвидится (типа: «отложим и известим»). На прощание задал конкретный (и логичный, как мне кажется вопрос): когда будет-то? А??? Молодой человек вздохнул и печально отправил меня в туманное «завтра», пробормотав что-то про 5 экземпляров. К чему это было сказано, я понял позже;) Сожалея в душе о потраченных впустую 40 минутах, отбываю.

Акт 2

Прихожу «завтра». Правда, не с утра (открываются они в 10 часов), а около 12. Подходу к витрине с фенами. И… (внимание) – ни одной из интересующих моделей просто нет. Одни ценники остались. На мой изумленный вопрос девушка-консультант с милым лицом и грустными глазами несколько раз извинилась и сообщила, что все раскупили. Все, нет. Ценники остались. Что будем делать? А ничего! Покупайте, что есть. Дешевый Elenberg (ну уж нет), или дорогой Braun и Bosh. Или ждите – вечером должна прийти новая партия на распродажу. (Тут меня осенило: то вчерашнее «бормотание» администратора про цифру 5, видимо, указывало на размер ежедневной партии. В штуках). После еще нескольких извинений от имени компании мне стало просто жаль продавца. Странная работа – вместо продажи товара гасить эмоции покупателей. Работать, простите, сборником мусора человеческих эмоций (Не я один такой… не один). Но я ей признателен, безвестной девушке – Продавцу (именно так, с большой буквы), чей бейджик так и не разглядел – во-первых, она честно попыталась найти лучший с ее точки зрения выход. А во-вторых, просто по-человечески человечный человек.

Акт 3

На выходе приметил листок с телефоном и адресом email, куда можно оставить свои комментарии относительно работы и качества сервиса магазина. (Сервиса у них нет, качества кажись маловато… ну да не об том разговор). Звоню. Вежливая, чуть уставшая девушка. Излагаю суть. Практически не реагирую на ее замечания – перекипел. Сообщаю все, что считаю нужным сообщить. Прощаемся. Грустный ухожу.

Акт 4

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

Вывод

Если вам чего-то надо, не ходите в Эльдорадо. Особенно, если речь идет о приобретении чего-то со скидкой. Или если надеетесь получить сервис. Или если вам нужен качественный товар. Идти туда можно, с моей точки зрения, только когда

  • Точно знаешь, чего нужно и есть желание купит именно там (странно, но такое иногда бывает – больше некуда податься. Например, только в ЭР продают приличный не оконцованый аудиокабель. Правда, его же можно купить и на Юноне, и в Микрониксе, но ЭР - рядом);
  • Есть много лишнего времени;

PS. А описанная мной продавщица, как мне кажется – явление в Эльдорадо редкое и, очевидно (к сожалению), временное. Были бы там все такие, а особенно в руководстве – проблем, подобных описанной выше, не существовало бы в принципе.

Прогноз погоды

Просмотров: 2726Комментарии: 0
Alib.spb.ru

Сегодня слышал по радио утром: "Это был прогноз погоды от Павла Глоба". Даже проснулся. Видимо, оговорился ди-джей. Или "так сложились звезды". Теперь совсем не удивляюсь тому, что он не исполняется. А если следовать этой логике и дальше, то скоро мы услышим отдельно прогноз погоды для разных знаков зодика. Представляете:

Овен: "Сегодня -3..-5, без осадков, переменная облачность, ветер южный"

Телец: "+4..+6, ливни, ветер северо-западный, умеренный, местами порывы до 10 м/сек".

и так далее. Вот хохма-то будет!

Mandriva 2007. Linux vs Windows :)

Просмотров: 12325Комментарии: 0
Linux

Хорошей традицией нового года считается войти в него (новый год то есть) с чем-то новеньким. Вот и я решил поэксперементировать: войти в новый год с новым дистрибутивом linux.

Самый первый этап - выбор "того самого" дистрибутива. Для этого я сформулировал следующие требования:

  1. Локализация "из коробки"
  2. rpm-based (у меня много ПО в rpm формате, и заниматься конвертацией rpm - deb/source и т.д. просто лень)
  3. Некоммерческий (бывают и коммерческие версии linux - посмотрите хотя бы на linux xp)
  4. user-frenly (в конце концов, у меня рабочая машина а не сервер)
  5. Хороший набор мультемедийных программ (в конце концов, просмотр фильмов и прослшивание музыки на компьютере никто не отменял)
  6. apache/mysql/php должны присутствовать "из коробки"
  7. Минимальные усилия по конфигурированию:)

Не буду утомлять описанием "состязанием дистрибутивов" (на разных тематических форумах, посвященных linux, по этому поводу идут целые баталии), скажу лишь, что победителем стал дистрибутив Mandriva Linux 2007 (download version).

Дистрибутив хорош тем, что позволяет как новичку, так и опытному пользователю "просто и изящно", а главное - быстро развернуть полноценное рабочее место под управлением linux. Инсталлятор сделан весьма добротно, есть возможность выбора и сохранения выбора (!!!) списка пакетов. Из коробки идет KDE и Gmone + еще несколько рабочих столов. Я де-факто использую Gnome, но KDE ставлю "за библиотеки", то есть, для того, чтобы иметь возможность из-под Gnome запускать приложения, изначально разработанные под KDE. А еще того, чтобы "иметь резерв" - в случае, если "перемудрю" с настройкой Gnome из-под KDE в режиме редактирования конфигурационных файлов всегда можно решить возникшую проблему (так, кстати, и получилось, когда в графическом конфигураторе предложил гному использовать kde-шный набор иконок, Gmone просто завис).

В дистрибутив входит достаточно большой набор пакетов. Доставлять пришлось самую малость - двухпанельный графический файловый менеджер (я использую krusader) и переставил OpenOffice. Дело в том, что по умолчанию в дистрибутиве присутствует OpenOffice 2.0 EN. Мне, разумеется, хочется, чтобы все было по-русски, даже не в смысле инфтерфейса, а в смысле работы с языком - корректной проверки орфографии и т.д. Поэтому вместо идущего в комплекте OpenOffice 2.0 EN я поставил самую свежую (на момент установки) версию OpenOffice 2.1 RU (сборки от ИнфраРесурс). Как и следовало ожидать, интеграция с gnome не прошла (известный баг для mandriva). Впрочем, никто сильно не расстроился - все настроилось вручную. Установка пакетов office тоже проходила не так гладко, как хотелось бы: каждый пакет считал своим долгом сообщить о неудовлетворенных зависимостях, причем зависимости имели циклический характер. Решилась все просто: принудительная установка пакетов в режиме игнорирования анализа зависимостей.

Некоторое время ушло на конфигурирование gnome. Вернее. у меня уже была конфигурация, которую всего-навсего надо было аккуратно перенести на новое место, убедившись, что все работает именно так, как того хочу я, а не разработчики дистрибутива;)

Итог: за несколько дней (и ночей) я получил полноценное (и лицензионно чистое) рабочее место, способное с ходу удовлетворить процентов 70 пользователей по своим возможностям, с неплохим набором софта и фантастической управляемостью системы. Такой, которая пользователю Windows и не снилась. Обратная сторона медали - большая сложность системы, с моей точки зрения, с лихвой окупается той самой управляемостью. Впрочем, не хотелось бы быть агитатором - Windows не менее хорошая система. просто, поработав в linux (и особенно понастраивав его), кажется что Windows в качестве desktop системы - это так... для ленивых:)

Нужен ли Service Desk?

Просмотров: 4671Комментарии: 0
Alib.spb.ru

Часто можно услышать: Service Desk (служба поддержки пользователей, если по-русски) - это миф. Эту функцию прекрасно может выполнять весь ИТ отдел, и не надо тут лишних затрат;) В лучшем случае - предлагается вместо SD использовать некое средство автоматизации (ПО), при помощи которого пользователь может завести свою заявку и отследить ее дальнейшую судьбу. Ниже приведу свое мнение, в котором, кроме всего прочего, есть и про судьбу, и про самые затраты:)

Сразу же скажу, что с моей точки зрения она (служба) однозначно необходима по следующим причинам:

  1. Пользователь порой не в состоянии квалифицированно определить суть инцидента. Например, инцидент с описанием «не работает компьютер», отнесенный пользователем к категории «Сетевые проблемы» может быть просто потерян на той стадии, когда пользователю будет необходима помощь и поддержка за счет того, что проблема не в сети, а в чем-то другом.
  2. Автоматизированный ввод инцидентов самим пользователем не отменяет механизма ввода и диспетчеризации инцидентов оператором ServiceDesk, поскольку в ряде случаев пользователь просто не имеет возможности завести заявку (инцидент) для автоматической обработки; (например, компьютер сломан и не включается - как заводить инцидент?)
  3. В случае наличия Service Desk пользователь получает единую точку контакта. Это очень важно, поскольку отпадает необходимость запоминать, какой ИТ специалист за что отвечает;
  4. В случае отсутствия SD у пользователя может возникнуть «синдром любимого ИТшника», который заключается в том, что свои инциденты он направляет только ему (или, что еще хуже – на его группу, с последующей просьбой взять их в работу именно конкретного сотрудника);
  5. При отказе от SD возможна организация «очередей» заявок у высококвалифицированных ИТ специалистов;
  6. Через некоторое время после запуска SD при правильной организации работ на первой линии (то есть службой SD) разрешается до 70% (в среднем) заявок (за счет накопления базы знаний). Это экономит время высокооплачиваемых специалистов, освобождая их для других (более важных) задач.
  7. Оставшиеся 30% заявок маршрутизируются таким образом, что гарантируется их скорейшее решение. Это происходит из-за того, что первичную классификацию заявок проводит не пользователь, а оператор SD
  8. Консультационная помощь пользователям (как правило) может оказываться специалистами SD.
  9. В случае отсутствия SD ее роль играет весь отдел ИТ
  10. Психологический момент: пользователь всегда знает, куда обратиться с проблемами.

А саму экономическую целесообразность службы SD на этапе промышленной эксплуатации несложно: достаточно правильно соотнести стоимость времени специалиста первой и второй линии с количеством заявок, то есть вычислить среднюю стоимость обработки заявки в случае с действующим SD и без него (при этом количество специалистов на второй линии разное - так как в первом случае "их и не надо много": частично работу по решению инцидентов выполняет перавя линия.).

ITSM и ITIL

Просмотров: 4636Комментарии: 0
Alib.spb.ru

Недавно в википедии (ru.wikipedia.org) нашел статью, посвященную ITIL. В ней утверждалось, что ITSM является подмножеством ITIL. Наверное, вопрос из разряда "курица или яйцо", но...

С моей точки зрения, ITSM (Information Technology Service Management) - это концепция. Которая говорит о применимости сервисного подхода в организации управлении ИТ (ИТ менеджменте). Или о том, как управлять ИТ как бизнесом (на тех же принципах, что и бизнесом), используя сервисный подход. Основные постулаты ITSM:

  • ИТ предоставляет бизнесу сервиы (услуги);
  • Качество поставляемых сервисов является измеримой величиной;
  • Отношения между бизнесом и ИТ строятся на принципах, описанных в соглашении об уровне сервиса;

Будучи концепцией, ITSM не описывает, как надо строить деятельность ИТ. Но не отвечает на вопрос - что надо делать для того, чтобы реализовать этот подход на практике.

Кстати, ITSM является частью более общей концепции - BSM (Buisness Service Management), то есть концепции сервисного управления бизнесом.

ITIL (Information Technology Infrastructure library) - это библиотека передового опыта в области организации деятельности ИТ служб. В ней описано - что надо делать. Справедливости ради следует отметить, что и в ней маловато конкретики, но есть рекомендации: как надо организовать деятельность ИТ, чтобы получить некоторые выгоды в виде улучшения ИТ сервисов (сокращение времени обслуживания, повышение отказоустойчивости и т.д.), сокращения расходов (что происходит далеко не всегда). Таким образом, прослеживается совершенно четкая зависимость: BSM - ITSM - ITIL (от теории к практике).

Из всего сказанного выше напрашивается однозначный вывод: ITIL не включает в себя ITSM, он являтся его частью, поскольку приводит рекомендации того, что нужно сделать для того, чтобы реализовать принципы сервисного управления.

Ссылки по теме:

  1. Обсуждение статьи ITIL в Wikipedia
  2. Статья ITIL в Wikipedia
  3. Ветка "Что такое ITSM " на форуме ITSMF

PS. В обсуждении статьи ITIL в Wikipedia скопировал эту заметку. Лучше аргументацию построить все равно вряд ли получится.

Евангилие от Иуды

Просмотров: 2981Комментарии: 0
Книги

Сегодня ко мне попала прелюбопытная книжица - "Евангелие от Иуды".

Скажу сразу - большего околорелигиозного бреда мне давно не приходилось читать. Это "произведение" по количеству содержащейся в нем ереси (во всех смыслах) достойно занять почетное место в театре абсурда.

Впрочем, не все так однозначно. Помните, у Маяковского: если звезды зажигают, значит - это кому-то нужно? Так и здесь. Никто не станет писать (и издавать) заведомо бредовое и провальное произведение. (Хотя некоторые "беселлеры" последнего времени типа "Кода да Винчи" упорно пытаются доказать обратное). Раз оно написано, значит оно кому-то нужно. Кому? Да тем, кто пытается выставить Иуду не предателем, а любимым учеником Христа. Еретикам, что кстати, подтверждается историей создания документа - по одной из версий, документ был создан с целью распространения ереси гностиков, которые, судя по всему, примерно в 1 в н.э. и создали сей "манускрипт".

Читать книгу не рекомендую никому, особенно христианам.

"Никому" - потому что бред;)

Христианам - потому что в книге просматривается откровенная хула на Бога.

PS.

1. Самое верное суждение, которое я прочитал о сем "трактате" - насельника Сретенского монастыря иеромонаха Иова (Гумерова) (находится здесь )

2. Подтверждением того, что указанное произведение написано кем угодно, но не Иудой предателем, служит факт, описанный у Евангелистов: Иуда удавился после совершения предательства.