пятница, 30 марта 2012 г.

вызываем window.onload несколько раз

Известно, что определить событие window.onload на странице мы можем только один раз. Каждое следующее определение window.onload затирает предыдущее. Что же делать, если возникла необходимость прописать его повторно?

Все очень просто. Нужно сохранить старое событие, и переопределить window.onload так, чтобы сначала вызывалось старое событие, а потом уже наши дополнительные методы.

Например,
var saveOnLoad = window.onload;
window.onload = function(){
saveOnLoad();
newOnLoadFunction1();
newOnLoadFunction2();
...
}

вторник, 20 марта 2012 г.

создаем css стили динамически

Я в свое время долго ломала голову, как прописывать css стили динамически с серверной стороны, причем не просто установить свойство CssClass, а прописать конкретно margin или padding.
Оказывается, всё предельно просто: у элементов есть свойство Style. Пользоваться им вот так:

Elem.Style.Add("margin-top", "40px");

пятница, 11 ноября 2011 г.

как узнать, сколько сообщений находится в MSMQ?

Задача: необходимо узнать, сколько сообщений находится в очереди сообщений MSMQ, не получая эти сообщения. Также необходимо определить, какое место в очереди занимает заданное сообщение.

У меня получилось так:

int num = 0;
if (MessageQueue.Exists("path to your queue"))
{
MessageQueue mq = new MessageQueue("path to your queue", QueueAccessMode.Peek);
var messages = mq.GetMessageEnumerator2();
while (messages.MoveNext())
{
num++;
}
}

В конструкторе MessageQueue() обязательно указываем метод доступа к очереди Peek, который не удаляет сообщения из очереди.
Если необходимо узнать, какое место в очереди занимает наше сообщение, добавляем сравнение поля Label очереди в цикл while.

while (messages.MoveNext())
{
if (messages.Current.Label != "someCustomLabel")
num++;
else
break;
}

вторник, 25 октября 2011 г.

совет от профессионала

The easiest way to optimise code is to follow the rule of KISS (Keep It Simple, Stupid). If you keep your code as simple as possible it will most likely be optimised from the start or then it will be very easy to optimise later.
(c) Mikko Haapoja


изучаю, как рисовать 3d при помощи javascript.

понедельник, 24 октября 2011 г.

Visibility vs Display

Чем отличаются css свойства visibility и display?

Visibility: visible - элемент виден на странице
Visibility: hidden - элемент скрыт, но все остальные блоки ведут себя так, будто он присутствует. Его ширина-высота доступны в clientWidth и clientHeight.

Display: block - элемент виден на странице
Display: none - элемент скрыт, и остальные элемент ведут себя так, будто его нет.

понедельник, 3 октября 2011 г.

Выравниваем меню по центру

Часто возникает необходимость выровнять меню, представляющее собой список ul li, горизонтально по центру страницы. Ширина меню нам неизвестна, она может изменяться в зависимости от страницы, поэтому задать жесткие отступы - не вариант.

Я поступаю следующим образом.
Заворачиваем наше меню в два div'а.

<div id="menu-wrap">
      <div id="menu">
            <ul>
                  <li></li>
                  <li></li>
                  ...
            </ul>
      </div>
</div>

Верхнему div'у задаем фиксированную ширину. Это максимально возможная ширина нашего меню.

Второму div'у задаем margin-left:50%, а самому списку ul margin-left:-50%.

Для кроссбраузерности обязательно всем трем блокам задаем position:relative, а второму div'у и списку ul float:left

вторник, 23 августа 2011 г.

Регулярные выражения для javascript

Задача: написать проверку сложности пароля. Пароль должен иметь длину не менее 5 символов, и содержать в себе хотя бы одну цифру, при этом пароль может содержать только цифры и латинские буквы в верхнем и нижнем регистре.

Получившееся у меня выражение:

((?=.*\d).(?!.*\W).{5,20})

Здесь можно посмотреть шаблоны регулярных выражений, с объяснением как они работают