Мажордома личный кабинет. Дополнительные услуги и возможности хостинг-провайдера Majordomo. Приятные бонусы от хостинг-провайдера Majordomo

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое.


XML DOM 2

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

XML файл, который используется для примера.

Mazda 2007 BMW 2009

xml dom

В данный момент, наш файл содержит следующую структуру:

Взаимоотношение между узлами в XML DOM , основные моменты:

1. Любой узел в DOM дереве имеет родителя ParentNode . В нашем примере garage является родителем для обоих элементов car, а оба элемента car, являются в свою очередь родителями для элементов: model и year.

Как получить родителя для xml элемента car?

Console.WriteLine(elmRoot["car"].ParentNode.Name); //Результат: garage

2. У родителя могут быть дети ChildNodes. Например, для узла garage детьми являются оба элемента car. У элементов car, тоже есть дети model и year.

ChildNodes , представляет собой коллекцию, которая хранит все дочерние xml элементы, чтобы обратиться к нужному элементу, нужно указать его индекс. (Индекс всегда начинается с нуля!)

Например: как получить первый дочерний элемент?

ElmRoot.ChildNodes;

3. Как и в обычной жизни ребенок может родиться первым FirstChild, или последним LastChild.

Если взять для примера элемент car, то

FirstChild - это model LastChild - это year

4. В свою очередь между дочерними элементами тоже существуют связи, они могут быть братьями или сестрами, если проводить параллели с реальной жизнью.

У ребенка может быть к примеру брат Previous Sibling и следующий брат Next Sibling

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Результат: year Console.WriteLine(elmRoot.ChildNodes. LastChild.PreviousSibling.Name); //Результат: model

Если элемент не найден, то тогда возникает исключение: NullReferenceException, поэтому при работе с xml всегда используйте блоки try catch.

Console.WriteLine(elmRoot.ChildNodes. LastChild.NextSibling.Name); Console.WriteLine(elmRoot.ChildNodes. FirstChild.PreviousSibling.Name);

LastChild является NextSibling;
FirstChild является PreviousSibling;

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

Как получить значение xml элемента?

Значение xml элемента можно получить при помощи свойства InnerText, например:

Console.WriteLine(elmRoot["car"].FirstChild.InnerText); //Результат: mazda

Ещё один способ, чтобы получить это же значение xml элемента:

Console.WriteLine(elmRoot.FirstChild.FirstChild.InnerText); //Результат: mazda

Последовательность перемещений по DOM дереву:

Garage -> car -> model -> Мазда

Получаем год:

ElmRoot["car"].LastChild.InnerText; //Результат: 2007

Последовательность:

Garage -> car -> year -> 2007

Ещё пример: 3 способа, для получения одного и того же результата.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["car"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Результат: BMW

Если надо получить год для элемента со значением Mazda:

Console.WriteLine(elmRoot.FirstChild.LastChild.InnerText); //Результат: 2007

Для BMW (два способа, получить один и тот же результат)

Console.WriteLine(elmRoot.ChildNodes.Item(1). ChildNodes.Item(1).InnerText); Console.WriteLine(elmRoot.ChildNodes.ChildNodes.InnerText); //Результат: 2009

Как изменить значения xml элемента?

С помощью свойства InnerText() можно, как получить, так и изменить значение xml элемента, например изменим год.

//Устанавливаем новое значение elmRoot.FirstChild.LastChild.InnerText = "2010"; //Выводим новое значение на экран консоли Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Результат: 2010

При этом нужно помнить, что все изменения происходят с виртуальным xml файлом, если Вы откроете физический файл, то увидите, что по-прежнему в нём указан год 2007.

Для того, чтобы изменения вступили в силу, нужно воспользоваться методом Save, например:

ElmRoot.Save("имя xml файла или поток");

Теперь информация будет изменена в «физическом» xml файле.

Как получить количество дочерних элементов?

Console.WriteLine(elmRoot.FirstChild.ChildNodes.Count);

garage -> car содержит 2 ребенка: model и year

Console.WriteLine(elmRoot.FirstChild.FirstChild.ChildNodes.Count);

garage -> car -> model содержит 1 дочерний xml элемент.

Обращение к дочерним элементам

по индексу

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Результат: car

С помощью цикла

Foreach (XmlNode nod in elmRoot.ChildNodes) { Console.WriteLine(nod.Name); } //Результат: car, car

Как получить имя xml элемента?

elmRoot.Name; //Результат: garage

Создание нового XML элемента

Создадим новый элемент в нашем XML документе, чтобы он отличался от двух других (car) назовём его автобус (bus).

При создании нового элемента воспользуемся рекомендацией с сайта msdn и вместо стандартного new XmlElement воспользуемся методом CreateElement.

XmlElement elm = xmlDoc.CreateElement("bus");

Создание и добавление нового xml элемента

Создадим новый xml элемент по имени «BUS».

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //car, car XmlElement elmNew = xmlDoc.CreateElement("bus"); elmRoot.AppendChild(elmNew); Console.WriteLine(elmRoot.ChildNodes.Count); //3 car, car, bus xmlDoc.Save("имя xml файла");

Пояснение:

1. Сначала получаем root-элемент к которому будем крепить новые элементы.

2. В качестве проверки выведем текущее количество дочерних элементов у элемента garage: 2 (car и car)

3. Создаем новый элемент BUS

4. При помощи метода AppendChild добавляем новый элемент в дерево

5. Снова воспользуемся проверкой и выведем текущее количество элементов у элемента garage, теперь их стало 3: car, car, bus.

6. Чтобы изменения затронули физический файл, сохраняемся

В самом XML файле новый элемент будет выглядеть так:

Как добавить новый xml элемент?

Задача: создать новый XML элемент и добавить в него какое-нибудь текстовое содержимое, например год выпуска.

String strFilename = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmNew = xmlDoc.CreateElement("bus"); XmlText new_txt = xmlDoc.CreateTextNode("2006"); elmRoot.AppendChild(elmNew); elmRoot.LastChild.AppendChild(new_txt); Console.WriteLine(elmRoot.ChildNodes.Name); //bus Console.WriteLine(elmRoot.ChildNodes.LastChild.InnerText); //2006 Console.Read();

В XML файле:

2006

Для наглядности

А теперь создадим узел «bus», с такой же архитектурой, как и car, то есть добавим узлы: model, year и какое-нибудь текстовое содержимое.

Создание XML элемента с дочерними элементами

string strFilename = @"C:\lessons\Auto.xml"; //создаем новый xml документ в памяти XmlDocument xmlDoc = new XmlDocument(); //загружаем xml файл в память xmlDoc.Load(strFilename); //Получаем root-элемент XmlElement elmRoot = xmlDoc.DocumentElement; //Создаём 3 элемента: bus, model, year XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("year"); //Устанавливаем значения для элементов: model, year XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); добавим иначе //К элементу bus добавляем два дочерних элемента: model и year elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); //Добавляем значения узлам model и year elmModel.InnerText = "liaz"; elmYear.AppendChild(year_txt); //Добавляем в дерево новый xml элемент bus elmRoot.AppendChild(elmBUS); //Проверяем, всё ли добавлено, как надо Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Если всё в порядке, то используем метод Save xmlDoc.Save("имя xml файла");

Результат:

liaz 2006

Как можно сократить, данный код? Например, следующим образом:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("model"); XmlElement elmYear = xmlDoc.CreateElement("year"); //Добавляем значения узлам model и year elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); elmRoot.AppendChild(elmBUS); //Если всё верно, то вызываем метод Save xmlDoc.Save("имя xml файла");

Ещё немного сократим код, для этого воспользуемся свойством InnerXml:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("bus"); string txt = "liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (будет равен garage) - это ещё один способ обратиться к root-элементу, тоже самое что и XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild(elmXML); xmlDoc.Save(PathXmlFile);

Результат

Получить список элементов при помощи GetElementByTagName

GetElementByTagName возвращает XmlNodeList , в котором содержаться все элементы потомки, принадлежащие указному элементу, например, нам нужно получить все модели машин, которые хранятся в гараже:

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); foreach (XmlNode node in modelName) { Console.WriteLine(node.InnerText); } //Результат: mazda, bmw, liaz

Обращение при помощи индекса:

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //Результат: liaz

Как изменить текстовое содержимое, у только что созданного элемента «bus», при помощи метода GetElementByTagName?

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //Получили значение: liaz

Либо можно изменить имя liaz на Ikarus

Console.WriteLine(modelName.InnerText = "Ikarus");

Опыт общения с хостерами у меня относительно скромный, на данный момент было лично опробовано лишь четыре российские площадки - 1Gb , St-Hosting (ныне покойный), Majordomo и TimeWeb (рассматриваю исключительно платный хостинг). Но и этого опыта достаточно, чтобы составить личное мение о качестве предоставляемых услуг.

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

Угораздило меня завести один проект на Majordomo, за год использования которого пришлось сменить два тарифных плана (всё время с удорожанием), но каких-то существенных изменений в лучшую сторону это не принесло. На сайте самого Majordomo вы найдете исключительно хвалебные отзывы о нем любимом, но всё далеко не так радужно, как они хотят представить.

Итак, вот почему я ушел с Majordomo :

  1. «Cайт заработает через 10 мин». Вообще тема 10 минут проходит белой линией через всю работу данного хостинга... Подобные отключения сайта из-за ограничений на использование ресурсов процессора просто убивали, такое ощущение, что сервера работают на процессорах от калькуляторов раз отключаются даже при минимальной нагрузке. Предвидя высказывания возможных оппонентов о моей собственной ошибке в выборе тарифного плана, скажу, что подобных отключений по нагрузке, ресурса перенесённого с Majordomo на TimeWeb не наблюдается, да ещё и учитывая, что стоимость меньше. Делаем выводы.
  2. Собственная панель управления ущербная, любые действия сопровождаются уже упомянутыми десятиминутными ожиданиями. Ничего не скажешь real-time. Хоть бы посмотрели как это сделано у конкурентов. В общем, за удобство управления тоже минус.
  3. Техподдержка... это отдельная песня. Оперативность сногсшибательная - общение исключительно по почте и ответ в лучшем случае приходит спустя 12 часов. Приходится обращаться по таким вопросам, решать которые на другом хостинге дают самостоятельно (например смена DNS-серверов). Есть ещё LiveChat , так называемая техподдержка реального времени, типичное её состояние, вне зависимости от времени - "все сотрудники заняты ". Может есть счастливчики, которым всё-таки удалось пробиться, я явно не из их числа.

Надеюсь мой негативный опыт кому-то поможет сделать правильный выбор хостинга для ваших проектов. На данный момент могу порекомендовать timeweb.ru . И данный блог подтверждение моего выбора.

Оценка: 5

Нормальный хостинг/VPS, зачем нагонять. Ну, аптайм конечно не айс, над чем следует бы поработать, но всегда на VPS стоит последний софт + цены вовсе небольшие для таких мощностей, так что можно работать вполне. Но, они не абузоустойчивые и это самый больший минус ибо торренты, музыку, софт тут нечего размещать т.к завлят абузами и все... А так, VPS шустрые, места много за такие деньги но думаю такие цены низкие из-за того что они не абузоустойчивые, а так, столько места не для торрентов и пр. вообще не знаю зачем надо и такие мощности... Ну, разве что информационник или статейник накатать на WP и того это имеет смысл:). Так что, обращать стоит внимание если у вас крупные проекты и не нарушают автороское право, а так - не имеет смысла тут платить деньги, лучше найти что-то еще дешевле ибо хостингы не уважаю, всегда VPS беру.

Оценка: 5

При создании своего личного сайта (тематика художник), на который у меня ушло уйма времени, мои страдания не закончились, нужно было сделать так, чтобы не я одна любовалась, а еще и другие смогли посетить мою галерею.
Нужно было место, где будет располагаться сайт, естественно созвучное с моим хобби. Я выбрала площадку Majordomo.ru потому что это один из самых дешевых хостингов по оплате за год. Всего 140 рублей, а ты уже на голову выше своих коллег, у которых нет сайта! Я считаю 140 рублей это вообще не деньги, особенно если на 365 дней поделить на посуточную плату, зато сайт красиво написан в зоне рф без лишних бесплатных разноуровневых адресов, которые в жизнь не запомнишь и поисковик не выдаст.
Договор можно заключить в офисе Екатеринбурга, вежливые консультанты предложили мне использовать парковку домена, но я пока попробую именно как галерею.
Так же у меня есть почта созвучная с именем сайта. Очень довольна! Давно мечтала о своем сайте, сделанным своими руками, и чтобы его увидели люди!

Оценка: 4

Цены у этого провайдера немного завышены, я плачу ежемесячно около 200 рублей за размещение, да и то лишь из-за того, что оплатил годовую подписку, а то вышло бы на порядок больше. Но зато условия нормальные, выделили 10 Гб места, диск ССД, лимита по сайтам или мускульным базам данных нет, а поначалу так вообще дали попробовать 2 недели бесплатно, чтобы понять, что к чему. Тогда все устроило, поэтому оформился, пока не жалею, разве что цена чуть выше, если судить объективно.
Время работы серверов близко к идеальному, сами сайты, размещенные на хостинге, летают. Еще у них удобная панель управления, лимитов на трафик нет, в почте отлично фильтруется спам. Также иногда проводят акции и скидки, я там приобрел домен за 49 рублей, такое еще поискать надо. Но вот расширяться на нем, не меняя тариф, совершенно невыгодно. Там за 100 Мб надо ежемесячно докидывать 30 рублей, так что для совсем уж крупных ресурсов не факт, что подойдет. В общем, ценовая политика единственное их слабое место, а с технологией все нормально.

Оценка: 5

На этот хостинг садился 3 раза. Первый раз решил попробовать, выбрал дешевый тариф, загрузил сайт с посещаемостью 800 человек в день. Работает. Потом хотел расшириться на том же дешевом тарифе, но уперся в ограничения, техподдержка посоветовала сменить тариф.
В итоге остался с одним сайтом на дешевом. Контракт кончился, сайт перенес, но через год вернулся. Взял тариф, который предлагали, к тому времени его расширили, условия понравились.
Перенес 3 сайта примерно с такой же нагрузкой, по деньгам получалась неплохая экономия. После окончания контракта какое-то время унес все на одну площадку, год назад снова взял второй тариф, повесил 4 сайта, общая посещаемость - 3000 хостов в сутки.
Плюсы:
1. Стабильность (иногда сайты пропадают, но ненадолго). Аптайм вполне сносный.
2. Нет глюков и странностей в настройках софта. Переносишь сайт, минимально настраиваешь, и все работает.
3. Нет проблем с поддержкой.
Минусы:
1. Лимиты тарифов виртуального хостинга. Мягко намекают что при постоянной нагрузке надо жить на VPS. Но такая политика почти у всех хостеров.

Пользуюсь хостингом месяц, и уже ОЧЕНЬ сожалею что выбрал услуги этой конторы, не знаю как от них уехать...
Все началось с регистрации домена в среде.RU Зарегистрировал, деньги естественно взяли за регистрацию, в течении часа, двух - сайт не работает...
думал просто так долго регистрируется... на следующий день пишу с службу поддержки о проблеме, в ответ - вам нужно подтвердить номер телефона и поставить домен на делегирование. При регистрации домена речь об этом не шла вообще... Хоть и не имел желания писать свой телефон, но все таки подтвердил его... поставил сайт на делегирование, ну вроди можно жить - работает...
Но не тут то было... Через два дня сайт опять не работает... опять у меня те же вопросы - оказывается им уже надо сканкопии паспорта, что бы сайт работал...
Но тут тоже не так все просто, при регистрации я вводил абсолютню любые данные, по скольку никакого предупреждения НЕ БЫЛО, что бы вводить реальные паспортные данные,
потому что придется пройти проверку. И сейчас предоставивши свои реальные данные паспортные - все равно получил отказ в делегировании, в связи с несовпадением данных при регистрации... Решил немедленно уйти из этой канторы, но тут тоже не так все просто, оказывается деньги они возвращают ТОЛЬКО на пластиковую карту или сберкнижку, вернуть их обратно на вебмани откуда и получили оплату за весь год они не могут =) Цирк а не хостинг...
Я в безвыходной ситуации - заплатил 1700 рублей + 150 за домен, и остался ни с чем реально ни с чем... Сайт не работает и не будет работать, перенести его к нормальному хостеру не возможно, ну и удалить не возможно. Выходит заплатил за все, а предоставить услуги то уже не их проблемы) для них это нормально.

Вот переписка со службой по доменам:

Долныгин Илья (13:47:04 16.04.2012)
Ваш домен был зарегистрирован на "вымышленные" данные, при выборочной проверке регистратором была запущена проверка указанных данных (запрошены подтверждающие документы). Документы на "вымышленные" данные не могут быть предоставлены. К сожалению, в этом случае сложилась такая ситуация, что какие-либо действия с доменом теперь невозможны. Следовало указать существующие данные (или хотя бы часть данных), тогда можно было бы откорректировать неверные. Когда все данные неверные, сделать ничего нельзя.

breerd (13:47:47 16.04.2012)
тоесть что теперь вы взяли деньги а сайт работать не будет?

Долныгин Илья (13:49:15 16.04.2012)
Средства за регистрацию домена не подлежат возврату, так как владелец домена приобрел на него право администрирования (регистрация доменов не является обратимой процедурой).
В случае с доменом в зоне.ru, к сожалению, он не может быть нормально использован.
Сожалею, но таковы правила регистрации доменов RU и РФ (ООО "Регистрант" обязан их соблюдать).

Одним словом не желаю никому попасть в такую ситуацию и такую кантору.

В сегодняшнем обзоре речь пойдет о хостинг-провайдере Majordomo . Мы постараемся объективно разобраться в его ключевых особенностях, преимуществах и недостатках. Ведь идеального хостинга не бывает. Или все-таки бывает?

О Majordomo

О виртуальном хостинге от Majordomo

Так как виртуальный хостинг является наиболее востребованной и массовой услугой у любого провайдера – поговорим о нем более подробно. Что нам может предложить Majordomo ?

Стоимость виртуального хостинга от Majordomo варьируется от 99 до 749 рублей в месяц (при оплате за год ).


При этом посмотрев на изображение, приведенное выше, вы быстро поймете, что «безлимитный » виртуальный хостинг доступен только на тарифах «Безлимитный » и «Безлимитный+ », а на самом дешевом тарифе «Старт » некоторые ограничения все-таки присутствуют. Однако для большинства начинающих вебмастеров и пользователей виртуального хостинга они станут вполне допустимыми.

Приятные бонусы от хостинг-провайдера Majordomo

Перед тем как перечислить приятные «плюшки » предоставляемые пользователям хостинг-провайдера Majordomo стоит оговориться, что некоторые из них недоступны на тарифе «Старт ».

Итак, о бонусах:

  • При единовременной оплате трех месяцев обслуживания на тарифных планах «Безлимитный » или «Безлимитный + » любой пользователь Majordomo получает в подарок домен в зоне .ru или .рф (на выбор ).
  • Бесплатная почта для домена от «Mail.ru для бизнеса ».
  • Автоматическая установка таких популярных CMS-систем как WordPress и Joomla (на тарифах «Безлимитный» или «Безлимитный +» ).
  • Бесплатный SSL-сертификат .
  • Предоставление промокода Google AdWords на сумму 2000 рублей (на всех тарифах ).
  • Бесплатный перенос сайта от другого провайдера плюс три месяца хостинга в подарок (не распространяется на тарифный план «Старт» ).
  • Специальные корпоративные тарифные планы «Бизнес » и «Бизнес + ». При стоимости в 599 и 749 рублей в месяц соответственно, они включают в себя приоритетную техническую поддержку, оперативную юридическую консультацию, профессиональную помощь в настройке сайтов и, что самое главное — размещение на отдельных выделенных серверах.


Дополнительные услуги и возможности хостинг-провайдера Majordomo

  • Поддержка полного спектра SSL-сертификатов Comodo и возможность их приобретения.
  • Возможность проведения всестороннего SEO-аудита сайта.
  • Обеспечение защиты сайта от взлома и лечение сайтов от вирусов (в партнерстве с компанией Revisium ).
  • Комплексная услуга «Сайт под наблюдением », включающая в себя своевременное лечение зараженного сайта, его защиту от взлома хакерами и ботами, а также круглосуточный мониторинг веб-угроз и контроль за доступом. Услуга предоставляется в партнерстве с компанией Revisium .
  • Возможность обеспечения дополнительной защиты от спама и почтовых вирусов.
  • Базовая или премиальная настройка контекстной рекламы в Яндекс.Директ и Google AdWords .

Вместо заключения

Подводя итог можно сказать, что если вы ищите хостинг, то Majordomo действительно заслуживает вашего пристального внимания. Обязательно воспользуйтесь 14-дневным периодом бесплатного тестирования, ведь этот хостинг обладает множеством достоинств, а среди недостатков можно отметить лишь некоторые ограничения, присутствующие в тарифном плане «Старт ».



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: