В недавно вышедшем ASP.NET and Web Tools 2012.2 Update заявлена частичная поддержка протокола oData в ASP.NET Web API. Решил сам попробовать, да и с коллегами поделиться. В статье опишу как использовать запросы и CRUD операции по протоколу oData с несколькими связанными объектами модели данных. В качестве front-end клиента использован Kendo UI framework.
Сергей @sketcompani
User
Автоматизированное тестирование веб-приложения (MS Unit Testing Framework + Selenium WebDriver C#). Часть 2.2: Selenium API wrapper — WebElement
14 min
44KTutorial

Введение
Привет! В предыдущей части я описал основные проблемы, возникающие при работе с Selenium WebDriver, а так же привел пример обертки Browser. Вроде было не сложно, да?) Ну что ж, идем дальше. Надо разобраться с оставшимися проблемами:
- Описание элемента происходит одновременно с его поиском, т.е. на момент определения элемента он должен существовать в браузере. Очень часто решается путем написания getter для каждого элемента. Это накладно и плохо с точки зрения производительности
- ISearchContext.FindElements принимает только один параметр типа OpenQA.Selenium.By, т.е. мы не можем искать сразу по нескольким свойствам. Обычно элемент ищется по первому критерию, а затем начинается отсеивание по остальным
- Отсутствие многих, казалось бы, очевидных методов и свойств. Например: Exist, SetText, Select, SetCheck, InnerHtml и т.д. Вместо этого мы вынуждены довольствоваться Click, SendKeys и Text
- Множество проблем на различных браузерах, например на Firefox и Chrome элемент кликается, а на IE — нет. Приходится писать special cases, «костыли»
- Производительность. Да, драйвера работают не быстро. Впереди планеты всей как обычно IE — поиск может занимать секунды, иногда и десятки секунд
В этой части мы будем писать wrapper WebElement, который целиком направлен на пользователя, т.е. на разработчиков автотестов. Признаюсь, что в момент его написания моя задача заключалась в создании «фреймворка», которым должны пользоваться инженеры по ручному тестированию для написания автотестов. Естественно предполагалось, что они имеют весьма скромные познания в программировании. Поэтому было совершенно не важно, сколько тонн кода будет в самом фреймворке и насколько он будет сложным внутри. Главное, чтобы снаружи он был прост как три буквы. Предупреждаю, будет много кода и мало картинок =)
+8
Советы Google по кодированию на языке Python. Часть первая: советы по программированию
13 min
115KRecovery Mode

Хай, Хабр!
Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
+96
Ускоряем выборку произвольных записей MySQL
3 min
33KПоследнее время оживилась публика с вопросом случайной выборки из таблицы. Решений по оптимизации полно, и нового сейчас я вам наверное ничего не покажу, просто напомню про основные методы оптимизации — упрощение запроса и индексацию. Без предисловий про фриленсеров, сразу к делу ;)
+41
Интеграция AJAX в ASP.NET MVC 4
6 min
80KTutorial
Наверное, уже не существует веб разработчика, который не слышал о Ajax. Microsoft в такой ситуации не может оставаться в стороне, с каждым релизом старается облегчить жизнь именно нам, ASP.NET MVC разработчикам. Но прежде чем я продолжу статью, немного отступлюсь от темы.
Когда я познакомился с MVC фреймворком, он был тогда только во второй версии и, столкнувшись с такими хелперами как
Начну с того, что MVC может работать с двумя вариантами Ajax библиотек (конечно я же имею ввиду с коробки, не более того) — jQuery и Microsoft Ajax. Чтобы знать, для какого адаптера создавать разметку, существует настройка в
Когда я познакомился с MVC фреймворком, он был тогда только во второй версии и, столкнувшись с такими хелперами как
@Ajax....
, честно говоря, их реализация на стороне клиента меня не впечатлила. Нет, так нет, подумал я про себя, у меня есть jQuery со своим $.ajax
, мне его за глаза. Вот и забыл я про них на несколько лет, к своему великому сожалению проморгав этот момент с третьим релизом. Что было, то было. Благо что взялся за ум и почитал две книги по MVC 4. Далее расскажу, как можно сократить написание строк кода благодаря хелперам, упомянутым мною выше.Начну с того, что MVC может работать с двумя вариантами Ajax библиотек (конечно я же имею ввиду с коробки, не более того) — jQuery и Microsoft Ajax. Чтобы знать, для какого адаптера создавать разметку, существует настройка в
web.config
UnobtrusiveJavaScriptEnabled
и соответствующее значение true
(для работы с jQuery) и false
(для работы с Microsoft Ajax). Если же нам необходимо поменять значение только для одного представления, можно воспользоваться методом — @{Html.EnableUnobtrusiveJavaScript(bool);}
. Хочу обратить внимание, что данная настройка влияет и на формирование валидационных данных на стороне клиента.+11
Одна особенность FastScript + Delphi
2 min
8.7KПри разработке одного небольшого проекта на Delphi с использованием FastScript, столкнулись с одной неочевидной особенностью.
Надеюсь, кому-то найденная особенность будет полезной и сэкономит время разработки.
Надеюсь, кому-то найденная особенность будет полезной и сэкономит время разработки.
+4
Lexand LPB-78W: роутер и «розетка» на дачу и в путешествия
5 min
36KСтолбик термометра в последние несколько недель более-менее стабильно держится выше отметки в 20 градусов, а в отдельные дни и вовсе выдает все 30-35 Цельсиев. Это мотивирует на самые разные виды отдыха, сопряженные с пребыванием вне дома. Проблема для меня заключается в том, что где бы я ни был, мне всегда хочется получать доступ в Интернет. По счастливой случайности в моих руках оказался Lexand LPB-78W, который (насколько мне известно) не может похвастаться большим (да и вообще хоть каким-то) количеством конкурентов. В одной небольшой коробчонке с габаритами 111 х 63 х 23 мм было обнаружено совмещение ряда крайне небесполезных функций.


+11
Наклейка на сим-карту с микропроцессором поможет сэкономить в роуминге
2 min
102K
+84
+24
Использование разметки schema.org для логотипов организаций
1 min
33KTranslation
Уровень подготовки веб-мастера: любой
Теперь наша система поддерживает разметку schema.org для логотипов организаций. Это позволит вам выбрать логотип, который будет представлять ваш сайт в результатах поиска Google.
С помощью этой разметки вы можете указать системе, где находится ваш логотип. Например, если вы – владелец сайта www.example.com, можно использовать следующую разметку элементов на странице:
Теперь наша система поддерживает разметку schema.org для логотипов организаций. Это позволит вам выбрать логотип, который будет представлять ваш сайт в результатах поиска Google.
С помощью этой разметки вы можете указать системе, где находится ваш логотип. Например, если вы – владелец сайта www.example.com, можно использовать следующую разметку элементов на странице:
<div itemscope itemtype="http://schema.org/Organization">
<a itemprop="url" href="http://www.example.com/">Главная</a>
<img itemprop="logo" src="http://www.example.com/logo.png" />
</div>
+40
Виртурилка — текущее положение дел
2 min
35KМы довольно долго молчали после прошлой публикации про предзаказ, так как всякие незначительные новости писать не хотелось. Сейчас вот появились новости которые, думаю, многие ждали.
КДПВ

Была частично переделана принципиальная схема устройства, Wi-Fi вынесен с основной платы на дополнительный модуль, что позволит в дальнейшем использовать различные коммуникационные чипсеты, добавлены ранее неиспользуемые выводы для специальных устройств (например, для подключения LCD) и многое другое.
Также отказались от применения в штатном модуле Wi-Fi чипа HDG104, заменили на более приятный Marvell 88W8686.
КДПВ

Итак:
Мы доработали конструкторскую документацию на тиражную версию Виртурилки
Была частично переделана принципиальная схема устройства, Wi-Fi вынесен с основной платы на дополнительный модуль, что позволит в дальнейшем использовать различные коммуникационные чипсеты, добавлены ранее неиспользуемые выводы для специальных устройств (например, для подключения LCD) и многое другое.
Также отказались от применения в штатном модуле Wi-Fi чипа HDG104, заменили на более приятный Marvell 88W8686.
+61
Мультимедийная акустика для нетбука
3 min
65KВскоре начинается сезон отпусков, то самое время, на которое ноутбук или нетбук зачастую становится основным компьютером. И так же, зачастую, хочется иметь звук немного лучше, чем это позволяет встроенное подобие динамиков…


+33
Разработка мобильных приложений: с чего начать
10 min
470K
В нашей работе мы проходим все стадии жизненного цикла создания мобильного приложения, и я бы хотел поделиться нашим опытом в этой сфере. Под катом — рассказ об основах мобильной разработки: от выбора платформы до создания, размещения в магазине и последующего мониторинга.
+55
Как заставить хлам приносить пользу?
20 min
31KTutorial
О чём это я?
Задачи бывают разные… Бывают простые, бывают сложные, а бывают такие, на решение которых может уйти не одна неделя и достаточное количество нервных клеток. Одной из подобных задач как можно считать разворачивание чего-то серьёзного на большом количестве слабого железа. А именно…
(Здесь и далее будет говориться о немного специфичной и оптимизированной настройке LTSP и поднятии на его основе кластера серверов).
+171
IP-АТС на базе 3CX Phone System: особенности и настройка
2 min
37KВ этом посте мы хотели бы рассмотреть возможности и вкратце рассказать о подключении 3CX Phone System — одной из самых популярных SIP АТС (которая, к слову, 2 мая обновилась до 12-й альфа-версии).
Программная мини-АТС от 3CX хорошо известна во всем мире и в России в частности (по данным Sipnet, это более 12% всех российских абонентов). В мире ситуация еще более радужная (исследование WindowsNetworking.com):
1 3CX Phone System for Windows 27%
2 Cisco Unified Communications Manager 24%
3 Asterisk 23%
4 Sphericall IP PBX 3%
5 CommuniGate Pro 3%
6 Axon Virtual PBX System 2%
7 Dial-Office IP-PBX 2%
8 Icecom Multimedia PBX 1%
9 Brekeke PBX 1%
10 Другие 14%
Причин популярности 3CX много: простое подключение к публичным операторам связи и к местным провайдерам, которые поддерживают SIP-протокол, возможность подключения SIP АТС к каналам традиционной телефонной сети через специальные аналоговые шлюзы. Поддерживается 3CX практически всё: IP-телефоны Aastra, Grandstream, Yealink, Cisco, Linksys, Snom и шлюзы Linksys, Patton, Portech, Grandstream, AddPac, PCI-карты Sangoma.

Подключение 3CX к VoIP оператору — вполне тривиальный процесс. Например, вот так выглядит подключение к тому же Sipnet:
Программная мини-АТС от 3CX хорошо известна во всем мире и в России в частности (по данным Sipnet, это более 12% всех российских абонентов). В мире ситуация еще более радужная (исследование WindowsNetworking.com):
1 3CX Phone System for Windows 27%
2 Cisco Unified Communications Manager 24%
3 Asterisk 23%
4 Sphericall IP PBX 3%
5 CommuniGate Pro 3%
6 Axon Virtual PBX System 2%
7 Dial-Office IP-PBX 2%
8 Icecom Multimedia PBX 1%
9 Brekeke PBX 1%
10 Другие 14%
Причин популярности 3CX много: простое подключение к публичным операторам связи и к местным провайдерам, которые поддерживают SIP-протокол, возможность подключения SIP АТС к каналам традиционной телефонной сети через специальные аналоговые шлюзы. Поддерживается 3CX практически всё: IP-телефоны Aastra, Grandstream, Yealink, Cisco, Linksys, Snom и шлюзы Linksys, Patton, Portech, Grandstream, AddPac, PCI-карты Sangoma.

Подключение 3CX к VoIP оператору — вполне тривиальный процесс. Например, вот так выглядит подключение к тому же Sipnet:
+1
Как мы делали лазер из DVD-RW привода
2 min
851K
Без особых прелюдий начну с того, какой привод лучше использовать.
- Во-первых, это должен быть пишущий привод (RW);
- Во-вторых, чем выше у него скорость записи, тем мощнее получится лазер;
- Ну и, в-третьих, чем более ненужным он уже является, тем больше удовлетворения от этого можно получить. Я заметил прямую зависимость :)
+125
Yii2. Знакомство
4 min
109K
Введение
На днях, свершилось событие, которое Я и думаю еще немало людей ждали. Авторы Yii Framework выкатили превью-версию.Спустя день здесь на хабре появился обучающий материал, прочтение которого вызвали странные впечатления и после выходных потраченных на изучения кода Yii2, я решил написать свою версию. Надеюсь получится не хуже.
+105
Дайджест интересных новостей и материалов из мира PHP за последние две недели №16 (22.04.2013 — 06.05.2013)
5 min
21K
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
+46
Простой радиопередатчик FM диапазона на основе ПЛИС
1 min
29K7 мая — День Радио!
Надеюсь эта заметка будет как раз кстати.
Совсем недавно на хабре была статья про проект на базе платы Raspberry Pi — к ней подключался просто кусок провода и… это все. Программа, работающая на Raspberry Pi умудрялась вести вещание в FM диапазоне просто через этот кусок провода.
Вот ссылка на ту статью на хабре.
Теперь уже похожий проект появился и для ПЛИС Altera Cyclone III. Опять короткий кусок провода подключен прямо к выходу микросхемы, в данном случае микросхемы ПЛИС.
Аудио файл в формате WAV 22050Гц, 8 бит, МОНО просто передается в плату через последовательный порт. Плата принимает байты и ведет вещание этого потока в FM диапазоне на частоте 90МГц.
Демонстрационное видео трансляции есть на youtube, правда музыка несколько усыпляющая.
Видно, что мелодия принимается не только бытовым радиоприемником рядом с платой, но и в автомобиле во дворе, примерно в пятнадцати метрах.
Надеюсь эта заметка будет как раз кстати.
Совсем недавно на хабре была статья про проект на базе платы Raspberry Pi — к ней подключался просто кусок провода и… это все. Программа, работающая на Raspberry Pi умудрялась вести вещание в FM диапазоне просто через этот кусок провода.
Вот ссылка на ту статью на хабре.
Теперь уже похожий проект появился и для ПЛИС Altera Cyclone III. Опять короткий кусок провода подключен прямо к выходу микросхемы, в данном случае микросхемы ПЛИС.
Аудио файл в формате WAV 22050Гц, 8 бит, МОНО просто передается в плату через последовательный порт. Плата принимает байты и ведет вещание этого потока в FM диапазоне на частоте 90МГц.
Демонстрационное видео трансляции есть на youtube, правда музыка несколько усыпляющая.
Видно, что мелодия принимается не только бытовым радиоприемником рядом с платой, но и в автомобиле во дворе, примерно в пятнадцати метрах.
+17
Радиопередатчик из Raspberry Pi и куска провода
1 min
165KТеперь каждый может сделать из своего Raspberry Pi неплохой FM передатчик. Для этого не нужно каких-то особых умений или деталей, всё, что вам понадобится — кусок провода длиной примерно в 20см.
+50
Information
- Rating
- Does not participate
- Location
- Воронеж, Воронежская обл., Россия
- Date of birth
- Registered
- Activity