Pull to refresh
2
0
Send message

8 полезных регэкспов с наглядным разбором

Reading time2 min
Views272K
О мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:

1. Часть ЧПУ (человекопонятный URL)


По сути, слово с дефисами.

Паттерн: /^[a-z0-9-]+$/
short_url

Примеры посерьёзнее
Total votes 176: ↑132 and ↓44+88
Comments119

Не учите фреймворки, учите архитектуру

Reading time5 min
Views198K
Некоторое время назад у меня состоялся интересный разговор, коллега активно защищал Angular, говорил, что тот ускоряет веб-разработку. Я более десяти лет разрабатываю сложные web-сервисы, работал в Microsoft, в Spotware Systems на Кипре, сейчас создаю приложение для стартапа из Кремниевой долины, и в общем то слежу за трендами. Однако почувствовал себя динозавром, потому что не видел смысла использовать фронтэнд-фреймворки до того момента, а оказалось, что это уже мейнстрим. Шёл 2014-й год, я погрузился в мир Angular, Knockout и Backbone, что из этого вышло, почему я от них в итоге отказался и рекомендую коллегам сделать то же самое – под катом.
Читать дальше →
Total votes 152: ↑133 and ↓19+114
Comments123

Как Google тестирует ПО

Reading time9 min
Views40K
Прослушав вебинар «How Google Tests Software» я был так вдохновлен, что решил записать некоторые тезисы. Эта статья и есть мой конспект. Прежде всего, я должен внести ясность относительно ее содержания. Это не дословный перевод. Здесь описаны только те вещи, которые показались мне важными. Проще говоря, здесь описано не все, что прозвучало в вебинаре. Так же существует вероятность, что я понял что-то не до конца или даже понял неправильно. Поэтому горячо рекомендую прослушать вебинар самостоятельно.
Его ведет Джэймс Витакер, который в данный момент занимает пост технического директора по тестированию ПО в Google. Джэймс совместно с коллегами готовится выпустить одноименную книгу. В ней можно будет получить исчерпывающую информацию о том, как проводят тестирование GoogleMaps, Google+, ChromeOS, Android и т.д…
Читать дальше →
Total votes 224: ↑217 and ↓7+210
Comments52

Проброс видеокарты в виртуальную машину

Reading time6 min
Views180K
Говорят, что современные аппаратные технологии поддержки виртуализации (VT-d у Intel, IOMMU у AMD) позволяют отдавать физическое устройство на шине PCI в непосредственное управление виртуальной машине. В том числе видеокарту.
Воображение рисует такую конфигурацию: настольный сервер с гипервизором, на нем запускается гостевая пользовательская операционная система, имеющая доступ к необходимым устройствам ввода-вывода, один-два неприхотливых сервера по мере надобности, ну и сколько надо виртуалок для бесчеловечных экспериментов. Управляем гипервизором через консоль в гостевой ОС либо удаленно, с ноутбука, скажем.
Вдохновленный этой картиной, я решил попробовать, но оказалось, что проброс (passthrough) видеоадаптера — задача не совсем тривиальная. Только месяца через три боданий с железом и чтения форумов удалось получить положительный результат. В качестве гипервизора пробовал VMware и Xen. Получилось только с Xen.
Читать дальше →
Total votes 65: ↑62 and ↓3+59
Comments71

20 вещей, которые я должен был знать в 20 лет

Reading time3 min
Views716K
1. Мир пытается оставить тебя тупым. Начиная от банковских платежей и процентов и заканчивая чудо-диетами — из необразованных людей легче вытрясти деньги и ими проще управлять. Занимайтесь самообразованием столько, сколько можете — для того, чтобы быть богатым, независимым и счастливым.
Читать дальше →
Total votes 544: ↑445 and ↓99+346
Comments544

IPoE, а также Client-VLAN и DHCP Option 82

Reading time5 min
Views83K
В этой статье я опишу что из себя представляет технология доступа в Интернет IPoE, которой на самом деле не существует. А также расскажу про схему Client-VLAN и про опцию 82 DHCP (DHCP Option 82), которые стали неотъемлемой частью этой несуществующей технологии. Все это, конечно же, с технической точки зрения и с примерами конфигов.
Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments81

White — автоматизация функционального тестирования приложений

Reading time6 min
Views4.7K
Существует множество инструментов для автоматизации функционального тестирования приложений. С одной стороны универсальные коммерческие пакеты, настоящие монстры автоматизации – HP QuickTest Pro, SilkTest, TestComplete. С другой – специализированные или «бедные» по функциональности свободные инструменты – Selenium (web-приложения), pyWinAuto, Win32::GuiTest и т.д. Но настоящей жемчужиной среди свободных инструментов, на мой взгляд является Codeplex White Framework.

Не так давно потребовалось автоматизировать некоторое .net приложение. На работе основным инструментом для автоматизации принят QuickTest Pro, но для этого конкретного проекта он был слишком дорог: проект очень небольшой – автоматизации подлежали всего несколько операций. Встал вопром с поиском бесплатной альтернативы.

Первым бы опробован перловый Win32::GuiTest. С задачей он справился, но код скрипта получился очень уж неаккуратный – слишком тяжело его было бы в последствии поддерживать. И тут на сайте codeplex’a был обнаружен White
Он оказался настолько простым и удобным, что было решено применять его. Этот framework поддерживает большинство стандартных контролов Win32, WinForms, WPF (Silverlight), SWT. Под катом пример простой автоматизации Калькулятора Windows XP.
Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments6

Простое управление вашим Arduino через web

Reading time6 min
Views106K
Эта статья предназначена для новичков. Здесь будет описано как из web приложения при помощи ajax запросов посылать команды phyton скрипту, который будет передавать их через serial port непосредственно на наш arduino.
Вы приобрели себе Arduino, попробовали несколько примеров, поигрались со скетчами. Но вам этого мало, вы хотите управлять, управлять всем этим добром через интернет. Самый простой способ — это приобрести шилдик с Ethernet-портом и подключить его к Arduino (или приобрести платку с уже встроенным Ethernet ). Но она и стоит дороже и в управлении надо поднатаскаться.

Если интересно, тогда читаем дальше.
Total votes 16: ↑11 and ↓5+6
Comments4

Случайность в автотестах

Reading time5 min
Views18K

Введение


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

С тех пор прошло значительное время, я успел поработать над несколькими разными проектами на разных языках и даже сменить команду. Сегодня я могу с уверенностью сказать: вы не должны использовать случайность в своих автотестах, кроме случаев, которые будут оговорены отдельно. И я расскажу почему.
Читать дальше →
Total votes 63: ↑51 and ↓12+39
Comments31

Примеры xpath-запросов к html

Reading time4 min
Views527K
Xpath — это язык запросов к элементам xml или xhtml документа. Также как SQL, xpath является декларативным языком запросов. Чтобы получить интересующие данные, необходимо всего лишь создать запрос, описывающий эти данные. Всю «черную» работу за вас выполнит интерпретатор языка xpath.
Очень удобно, не правда ли? Давайте посмотри какие возможности предлагает xpath для доступа к узлам веб-страниц.
Читать дальше →
Total votes 61: ↑57 and ↓4+53
Comments47

Git и Visual Studio: как правильно приготовить

Reading time3 min
Views158K
Некоторое время назад мы анонсировали поддержку Git в Visual Studio и TFS. Для того, чтобы научиться правильно готовить все это, я сам прошел весь путь и хочу рассказать вам о нем. Ниже — о том, как использовать Git в VS.
Читать дальше →
Total votes 34: ↑28 and ↓6+22
Comments50

Инфраструктура для нагрузочного тестирования в облаке — с Visual Studio 2013 и только тогда, когда надо

Reading time7 min
Views11K
Эта статья была создана с неоценимой помощью нашего коллеги из Лаборатории Касперского, Игоря Щегловитова, инженера QA отдела исследований облачных технологий. Предисловие – от ahriman.

Самая сложность в нагрузочном тестировании — начать его делать. Что нужно, чтобы начать делать нагрузочное тестирование? В общем случае – одна машина и целевой сервис. Этот метод хорош ровно до того момента, как ресурсов одной машины перестанет хватать для генерации нужной нагрузки.

Перестало хватать одной машины – берем две. Три. Десять. Где взять десять машин? Попросить у IT-отдела. Закончив нагрузочное тестирование, уведомить об этом IT-отдел. Через два часа после того, как IT-отдел вернет инфраструктуру в свое владение, обнаруживается [нечто] и инфраструктура нужна снова. Просим опять – и время, которое IT-отдел потратил ранее на развертывание инфраструктуры, внезапно увеличилось (конечно, никто не знает, почему).

Обычная история. Разработчики хотят быстро получить и начать использовать. Нагрузочное тестирование – это процесс итеративный, и наращивание инфраструктуры – тоже. Что, если бы разработчики имели эту инфраструктуру постоянно? Настроенную, по запросу? Выключенную, когда не надо, чтобы платить самый минимум? О том, как развернуть эту инфраструктуру на основе Visual Studio 2013 – в статье. В результате у вас будет всегда доступная готовая инфраструктура для нагрузочного тестирования, которую достаточно включить — и можно приступать к тестированию. В выключенном состоянии оплачиваться будет только хранилище для образов этих машин.



Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments0

Серия лабораторных работ по управлению тестированием с Microsoft Test Manager 2013

Reading time1 min
Views13K

Многим разработчикам и тестеровщикам, использующим Visual Studio, известен Брайан Келлер (http://blogs.msdn.com/b/briankel/ ) с его регулярно обновляемой виртуальной машиной, которая содержит последнюю версию Visual Studio и всю необходимую инфраструктуру для изучения и оценки всех возможностей средств разработки. Эта виртуальная машина сопровождается набором лабораторных работ aka.ms/VS13ALMVM, которые уже помогают оценить возможности средств разработки или даже научиться использовать новые возможности о которых вы либо не знали, либо не пользовались раньше.

Лабораторные работы — на английском языке, и каждый раз, когда мы рассказывали об этом наборе лабораторных и виртуальной машине, нас просили сделать эти лабораторные работы доступными на русском языке.

Сегодня мы рады сообщить, что благодаря ahriman, мы запустили проект по локализации этих лабораторных работ. Встречайте — первый набор из 4-х локализованых лабораторных работ, которые покрывают тему управления тестированием в Visual Studio 2013!
Ссылки на лабораторные пришлось перенести под кат
Total votes 21: ↑16 and ↓5+11
Comments0

Обзор образовательных ресурсов к 1 сентября

Reading time4 min
Views66K
Сегодня наступил день, символизирующий одно из сильнейших и лучших свойств человека — его интеллект. День Знаний, он же 1 сентября, он же начало учебного года. Ведь кем бы мы были без знаний и науки? Болтались бы где-то внизу пищевой пирамиды.



В честь этого рокового для каждого школьника и студента дня, мы решили сделать подборку различных образовательных ресурсов в сфере IT. Когда-то мы уже делали нечто подобное для желающих научиться веб-разработке и дизайну. Всё-таки учиться никогда не поздно, как бы банально это ни звучало. А в наше время так и совсем нельзя прекращать учиться, а то велик риск всё-таки оказаться на дне пирамиды, только уже социальной.
Читать дальше →
Total votes 69: ↑60 and ↓9+51
Comments21

Учим детей делать игры

Reading time4 min
Views51K
Хочу рассказать о некоммерческом проекте Кодабра. Здесь мы учим детей программировать и создавать игры.



Предыстория

Как-то пришло осознание того, что максимум удовольствия в этой жизни фаундерам приносят три процесса — программирование, обучение других и общение с детьми. Мысли стали активно бурлить по поводу школы для детей, а активные действия начались с января 2014. Нас вдохновили такие проекты как codeclub.org.uk, code.org, cs-first.com. И мы решили использовать их опыт и организовывать бесплатные уроки на базе существующих школ, детских домов и иных детских учреждений.

Явный акцент сделали на мотивацию детей. Мы учим их делать мультфильмы, компьютерные игры, творить в цифровой вселенной.
Читать дальше →
Total votes 68: ↑60 and ↓8+52
Comments30

Мой опыт обучения детей 8-10 лет программированию на Scratch

Reading time8 min
Views270K
Давно собирался написать об этом, но, модная болезнь прокрастинация брала вверх…

Знакомство со Scratch


Когда сыну Артёму исполнилось 7 лет и он пошел в школу, мы ему подарили компьютер, чтобы он не отставал от жизни. Несколько месяцев он играл в разные игры, наслаждался, развлекался и т.п. Мне стало немного обидно, что такой дорогой и сложный прибор как компьютер используется только для развлечений, и я решил придумать, как использовать компьютер для обучения. А чему можно научиться на компьютере? Конечно, программированию! Тут я и вбил в «Яндекс» заветную фразу «обучение детей программированию».
Читать дальше →
Total votes 77: ↑74 and ↓3+71
Comments62

Allure — фреймворк от Яндекса для создания простых и понятных отчётов автотестов [для любого языка]

Reading time4 min
Views150K
Прежде чем начать рассказ про наш очередной opensource-инструмент, давайте я поясню, для чего мы его сделали. Я довольно много общаюсь с коллегами-тестировщиками и разработчиками из разных компаний. И, по моему опыту, автоматизация тестирования ─ один из самых непрозрачных процессов в цикле разработки ПО. Посмотрим на типичный процесс разработки функциональных автотестов: ручные тестировщики пишут тест-кейсы, которые нужно автоматизировать; автоматизаторы что-то делают, дают кнопку для запуска; тесты падают, автоматизаторы разгребают проблемы.



Я вижу здесь сразу несколько проблем: ручные тестировщики не знают, насколько автотесты соответствуют написанным тест-кейсам; ручные тестировщики не знают, что именно покрывается автотестами; автоматизаторы тратят время на разбор отчётов. Как ни странно, но все три проблемы вытекают из одной: результаты выполнения тестов понятны только автоматизаторам — тем, кто эти тесты писал. Именно это я и называю непрозрачностью.

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

Именно поэтому мы разработали Allure — инструмент, позволяющий внести прозрачность в процесс создания и выполнения функциональных тестов. Красивые и понятные отчёты Allure помогают команде решить перечисленные выше проблемы и начать наконец разговаривать на одном языке. Инструмент имеет модульную структуру, позволяющую легко интегрировать его с уже используемыми инструментами автоматизации тестирования.
Читать дальше →
Total votes 67: ↑66 and ↓1+65
Comments19

Увидеть незримое

Reading time8 min
Views92K
Пару лет назад на Хабре проскакивало две статьи, в которых упоминался интересный алгоритм. Статьи, правда, были написаны нечитабильно. В стилистике «новости»(1, 2), но ссылка на сайт присутствовала, подробно можно было разобраться на месте (алгоритм за авторством MIT). А там была магия. Абсолютно волшебный алгоритм, позволяющий увидеть незримое. Оба автора на Хабре этого не заметили и сфокусировались на том, что алгоритм позволял увидеть пульс. Пропустив самое главное.



Алгоритм позволял усиливать движения, невидные глазу, показать вещи, которые никто никогда не видел живьём. Видео чуть выше – презентация c сайта MIT второй части алгоритма. Микросаккады, которые приведены начиная с 29ой секунды, раньше наблюдались только как отражения установленных на зрачках зеркалах. А тут они видны глазами.
Пару недель назад я опять натолкнулся на те статьи. Мне сразу стало любопытно: а что народ сделал за эти два года готового? Но… Пустота. Это определило развлечение на следующие полторы недели. Хочу сделать такой же алгоритм и разобраться, что с ним можно сделать и почему его до сих пор нет в каждом смартфоне, как минимум для измерения пульса.

В статье будет много матана, видео, картинок, немного кода и ответы на поставленные вопросы.
Читать дальше →
Total votes 185: ↑180 and ↓5+175
Comments44

Путь фрилансера. Часть 1. Советы новичкам

Level of difficultyEasy
Reading time11 min
Views243K


Доброго времени суток, друзья, люди, фрилансеры, инопланетяне.

Заметив тенденцию на спрос постов по тематике фриланса подумал, что, пожалуй, пора и мне внести свою лепту по этой тематике. Много чего уже было сказано, но, на мой взгляд, не всегда конкретизировано в конкретные пункты.

Вкратце в двух словах о себе и прочем чтобы пост имел некоторую большую содержательность: на фрилансе 3 последних года с копейками. Работаю не один. Команда. Объединены интернетом и рамками СНГ. Большинство никогда не видел и даже с ними ни разу не созванивался. Офиса нет. С одним из таких граждан общаюсь и работаю уже лет 5-6. Как это ни странно барьером это не послужило. Знакомых, друзей, бывший сотоварищей по работе в команде нет и никогда не было, как и не было этой самой другой работы. Да, есть и такие странные люди на свете, кто никогда не работал в офисе и ничем иным не занят и это ни разу мне не помешало, а скорее наоборот.

Как я «докатился до такой жизни» и всю иную историю, предысторию и реалии опишу как-нибудь в другой раз, если сообщество посчитает это нужным (на этот случай предусмотрен опрос). А сейчас перейдём к тому, что и было запланировано.
Читать дальше →
Total votes 76: ↑63 and ↓13+50
Comments51

Пишем простой интерпретатор на C++ с помощью TDD, часть 2

Reading time16 min
Views14K
В первой части был написан лексер. Далее будет рассмотрена разработка парсера.

Парсер


Парсер будет реализован по алгоритму сортировочной станции, так как он достаточно прост и не нуждается в рекурсии. Сам алгоритм таков:

В начале даются пустой выходной поток и пустой стек. Начнём читать токены из входного потока по очереди.

  • Если это число, то передать его в выходной поток.
  • Если это лево ассоциативный оператор, то выталкиваем токены из стека в выходной поток до тех пор, пока он не опустеет, либо не его вершине не встретится скобка, или оператор с более низким приоритетом.
  • Если это открывающая скобка, то положить её в стек.
  • Если это закрывающая скобка, то выталкиваем токены из стека в выходной поток до обнаружения открывающей скобки. Вытолкнуть открывающую скобку из стека, но не передавать её в выходной поток. Если стек опустел, и скобка не найдена, то генерируем ошибку.

После достижения конца входного потока, вытолкнуть все оставшиеся в стеке операторы в выходной поток. Если в нём найдено что-либо кроме операторов, то генерируем ошибку.

Прикинем, какие тесты могут понадобиться для начала.

  • При получении пустого списка, возвращается пустой список.
  • При получении списка с одним числом, возвращается список с этим числом.
  • При получении [1 + 2], возвращается [1 2 +].
  • При получении [1 + 2 + 3], возвращается [1 2 + 3 +], так как оператор + является лево ассоциативным.
  • При получении [1 * 2 + 3], возвращается [1 2 * 3 +].
  • При получении [1 + 2 * 3], возвращается [1 2 3 * +], так как оператор * имеет больший приоритет.

Со скобками и ошибками разберёмся позднее. Итак, напишем первый тест из списка.

TEST_CLASS(ParserTests) {
public:
    TEST_METHOD(Should_return_empty_list_when_put_empty_list) {
        Tokens tokens = Parser::Parse({});
        Assert::IsTrue(tokens.empty());
    }
};

Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments4
1

Information

Rating
Does not participate
Location
Пенза, Пензенская обл., Россия
Date of birth
Registered
Activity