пятница, 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})

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

пятница, 12 августа 2011 г.

Настраиваем IPN для работы с PayPal

Пришлось порядком повозиться, чтобы заставить сайт мгновенно узнавать о том, что пользователь оплатил заказ. Работаем с PayPal напрямую, без сайтов-посредников, возвращение пользователя на наш сайт также не требуется. PayPal сам отправляет нам post-запрос с кучей заголовков, как только платеж совершен.

Вот здесь понятно описано, с примером для c# http://www.codeproject.com/KB/aspnet/paypal_c_aspnet.aspx#IPN

Вкратце:
1. Нам приходит post-запрос.
2. Сохраняем его и отправляем обратно на PayPal, чтобы проверить, действительно ли платеж совершен, или это хак.
3. Получаем ответ от PayPal - Verified - если платеж совершен, или Invalid, если такого платежа не было. Ну и обрабатываем данные.

Свои параметры для пост-обработки заказа передаем с формы через параметр custom.
<input type="hidden" name="custom" value="our params">


При обработке ответа сервера не забываем проверить адресата платежа, сумму и валюту.

Для тестов регистрируемся на Sandbox.paypal.com, создаем тестового продавца и покупателя, и вперёд.

четверг, 26 мая 2011 г.

масштабное падение Skype

Сегодня волшебным образом у всего нашего офиса упал Skype. Почти одновременно на всех компьютерах программа выдала исключение и закрылась. Часа через полтора удалось запустить Skype на компьютере с Win7, на WinXP по прежнему вылетает исключение сразу при попытке запуска.

Известно, что накануне всеми любимая компания Microsoft купила Skype. Неужели теперь под WinXP о Skype можно будет и не мечтать?..

вторник, 17 мая 2011 г.

список штатов сша - asp.net dropdownlist

Может, кому-то пригодится. ASP.NET DropDownlist со списком штатов США.

<asp:DropDownList ID="state" runat="server" Width="160px">
<asp:ListItem Value="AL" Text="Alabama"></asp:ListItem>
<asp:ListItem Value="AK" Text="Alaska"></asp:ListItem>
<asp:ListItem Value="AZ" Text="Arizona"></asp:ListItem>
<asp:ListItem Value="AR" Text="Arkansas"></asp:ListItem>
<asp:ListItem Value="CA" Text="California"></asp:ListItem>
<asp:ListItem Value="CO" Text="Colorado"></asp:ListItem>
<asp:ListItem Value="CT" Text="Connecticut"></asp:ListItem>
<asp:ListItem Value="DE" Text="Delaware"></asp:ListItem>
<asp:ListItem Value="DC" Text="District of Columbia"></asp:ListItem>
<asp:ListItem Value="FL" Text="Florida"></asp:ListItem>
<asp:ListItem Value="GA" Text="Georgia"></asp:ListItem>
<asp:ListItem Value="HI" Text="Hawaii"></asp:ListItem>
<asp:ListItem Value="ID" Text="Idaho"></asp:ListItem>
<asp:ListItem Value="IL" Text="Illinois"></asp:ListItem>
<asp:ListItem Value="IN" Text="Indiana"></asp:ListItem>
<asp:ListItem Value="IA" Text="Iowa"></asp:ListItem>
<asp:ListItem Value="KS" Text="Kansas"></asp:ListItem>
<asp:ListItem Value="KY" Text="Kentucky"></asp:ListItem>
<asp:ListItem Value="LA" Text="Louisiana"></asp:ListItem>
<asp:ListItem Value="ME" Text="Maine"></asp:ListItem>
<asp:ListItem Value="MD" Text="Maryland"></asp:ListItem>
<asp:ListItem Value="MA" Text="Massachusetts"></asp:ListItem>
<asp:ListItem Value="MI" Text="Michigan"></asp:ListItem>
<asp:ListItem Value="MN" Text="Minnesota"></asp:ListItem>
<asp:ListItem Value="MS" Text="Mississippi"></asp:ListItem>
<asp:ListItem Value="MO" Text="Missouri"></asp:ListItem>
<asp:ListItem Value="MT" Text="Montana"></asp:ListItem>
<asp:ListItem Value="NE" Text="Nebraska"></asp:ListItem>
<asp:ListItem Value="NV" Text="Nevada"></asp:ListItem>
<asp:ListItem Value="NH" Text="New Hampshire"></asp:ListItem>
<asp:ListItem Value="NJ" Text="New Jersey"></asp:ListItem>
<asp:ListItem Value="NM" Text="New Mexico"></asp:ListItem>
<asp:ListItem Value="NY" Text="New York"></asp:ListItem>
<asp:ListItem Value="NC" Text="North Carolina"></asp:ListItem>
<asp:ListItem Value="ND" Text="North Dakota"></asp:ListItem>
<asp:ListItem Value="OH" Text="Ohio"></asp:ListItem>
<asp:ListItem Value="OK" Text="Oklahoma"></asp:ListItem>
<asp:ListItem Value="OR" Text="Oregon"></asp:ListItem>
<asp:ListItem Value="PA" Text="Pennsylvania"></asp:ListItem>
<asp:ListItem Value="RI" Text="Rhode Island"></asp:ListItem>
<asp:ListItem Value="SC" Text="South Carolina"></asp:ListItem>
<asp:ListItem Value="SD" Text="South Dakota"></asp:ListItem>
<asp:ListItem Value="TN" Text="Tennessee"></asp:ListItem>
<asp:ListItem Value="TX" Text="Texas"></asp:ListItem>
<asp:ListItem Value="UT" Text="Utah"></asp:ListItem>
<asp:ListItem Value="VT" Text="Vermont"></asp:ListItem>
<asp:ListItem Value="VA" Text="Virginia"></asp:ListItem>
<asp:ListItem Value="WA" Text="Washington"></asp:ListItem>
<asp:ListItem Value="WV" Text="West Virginia"></asp:ListItem>
<asp:ListItem Value="WI" Text="Wisconsin"></asp:ListItem>
<asp:ListItem Value="WY" Text="Wyoming"></asp:ListItem>
</asp:DropDownList>

среда, 11 мая 2011 г.

скругляем углы кроссбраузерно

Вопрос, волнующий, наверно, всех начинающих верстальщиков. Как скруглить углы любому элементу веб-страницы кроссбраузерно?

К всеобщему счастью, на данный момент почти все браузеры понимают свойство css3 border-radius. К всеобщему сожалению, нам до сих пор приходится поддерживать IE 7 и 8 версии, которые, понятное дело, таких вещей не понимают. Выход - использовать плагин, который нам поможет.

Я использую PIE. Из всех плагинов, которые я нашла, PIE единственный, который у меня корректно работает. Он, кстати, умеет не только углы скруглять, но и добавлять в IE свойства box-shadow и linear-gradient.

Итак, качаем файл PIE.htc с css3pie.com. В css пишем:

.element {
-moz-border-radius:8px; //для старых версий FF
border-radius:8px; //css3 для всех современных браузеров
behavior:url('PIE.htc'); //путь к файлу PIE.htc для IE 7-8
}


всё :)

среда, 4 мая 2011 г.

удивительная Opera

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

Сначала думала, что событие onmousedown в опере как-то специфически работает, потом думала, что javascript как-то не так к странице подключен....

Оказалось всё гораздо проще. Функция, которую я пыталась вызвать, называлась submit. А в опере submit отправляет форму на сервер, и свою функцию так называть нельзя...
Переименовала функцию в submitData, и - о чудо - всё работает :)

дежурная запись

Год назад начала заниматься версткой и веб-разработкой. В этом блоге я буду писать о том, что нового интересного я узнала по работе.