Pull to refresh
38
0
Пётр Ерёменко @prg

User

Send message

Эссе о валидации данных

Reading time8 min
Views30K
В заметке «Можно ли делить на 0,01 ?» на сайте тестировщиков я написал, что при тестировании нужно проверять согласованность валидаторов входных данных с логикой обработки этих данных приложением. Но из комментариев к этой заметке я понял, что для понимания того, как надо тестировать валидацию данных, надо понимать, как она должна работать, что можно считать правильным, а что нет. Поэтому я написал об этом отдельную статью. В ней рассматривается три вопроса: 1) зачем вообще нужна валидация данных, и 2) где и когда может выполняться валидация данных, 3) какие бывают разновидности проверок. Ну и конечно продемонстрировано, как всё это выглядит на живых примерах. А может быть мои рассуждения окажутся интересны не только тестировщикам, но и разработчикам.
Читать дальше →

.NET 4.0: что нового в базовых классах (BCL)? Подробный обзор

Reading time9 min
Views3.3K

Visual Studio 2010 и .NET Framework 4 Beta 2 уже доступны для загрузки. .NET 4 Beta 2 содержит некоторое количество нового функционала и улучшений в базовых классах (BCL) в дополнение к тем, которые мы представили ранее в .NET 4 Beta 1. Многие эти улучшения были произведены благодаря отзывам и рекомендациям от клиентов, полученным через Microsoft Connect.
Читать дальше →

VS 2010 улучшения в Intellisense

Reading time2 min
Views3.4K
image В сегодняшнем посте, я расскажу о небольшом, но очень удобном нововведении в intellisense у VS 2010, которое улучшает фильтр автодополнения типов и членов. Вы сможете более просто и эффективно работать с API при написании кода.

Читать дальше →

GPS компонент

Reading time1 min
Views997
image Еще одно пополнение на CodePlex — новый компонент для работы с GPS.
GPS.NET прежде всего является коммерческим .NET компонентом, разрабатываемый GeoFrameworks LLC c 2004 года. В 2009 Джон Пирсон решил выложить полный исходный код GPS.NET для публичного использования. Текущая версия продукта 3.0, которая вышла незадолго до публикации на CodePlex. Данный фреймворк предлагает интуитивный GPS функционал в реальном времени, который максимально эффективно работает на любом компьютере, мобильном устройстве и NMEA-совместимыми GPS устройствами.
Узнать возможности компонента

Построение regexp'a по входным строкам S1..SN

Reading time3 min
Views2K
Вот совершенно недавно столкнулся с задачкой, по которой не смог накопать не то, чтобы каких либо библиотек, но даже теории или алгоритмов. Т.к. время поджимало, решил сам разбираться с задачей. Написал статью для тех, кто с подобной задачей столкнется в будущем, да и интресна критика. Как бы вы решали подобную задачу?

Итак, задача ...


На входе алгоритма есть набор строк S1..SN. Требуется, по данным строкам построить такое минимальное регулярное выражение R, чтобы R(Si)=true, i [1,N] (N порядка нескольких тысяч).
Требование минимальности — не строгое, и доказывать минимальность построенного regexp'a не требуется. Если строки S1..SN обладают некоторой схожей структурой, то regexp должен выявлять эту структуру. Стандартное задание программисту — в меру конкретизировано, но и с некоторой свободой действий.
Читать дальше →

Показать себя

Reading time3 min
Views752
Эта заметка должна была стать первой главой книги о веб-разработке, компьютерной графике и дизайне. Вернее, об идеологических моментах работы людей, так или иначе связанных с визуальным сектором информационных технологий. Но я ещё не уверен, что осилю целую книгу в течении хотя бы одного года, поэтому публикую пока как есть. Заодно посмотрю на сколько такой материал будет востребован целевой группой и скорректирую свои планы. А может и вовсе заброшу это дело.

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


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

Нам предлагают три сценария на выбор и как перед Ильями Муровцами рисуют три дорожки с указателями — «Выиграть миллион в лотерею», «Украсть», «Заработать тяжким трудом». Из зала подсказывают, что нужно заработать.

Читать дальше →

Дело о потерянных строках в DataView

Reading time3 min
Views2K
Отлаживая WPF-ный редактор для таблицы БД, столкнулся с Exception-ом при переходе между соседними ячейками с помощью клавиатуры.
Казалось бы, обычное дело — кто из нас эксепшенов не нюхал? Да и компонент DataGrid из WPF Toolkit весьма экспериментальный, так что удивляться нечему. Однако, кое-что меня насторожило.

что же?

Начало научной карьеры (часть 3)

Reading time4 min
Views8.4K
Разобравшись с высшим образованием в виде бакалавриата и магистратуры, можно перейти к первому шагу на пути к настоящей научной карьере — к поступлению в аспирантуру.

Для начала необходимо пояснить, что отношение к аспирантуре в России и за границей немного отличается.

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

На Западе для трудоустройства «в миру» практически всегда достаточно бакалаврского, максимум, магистерского образования. Законченная аспирантура требуется исключительно в научной карьере (либо в тех редких случаях, когда частная фирма реально занимается какой-либо исследовательской деятельностью).
Читать дальше →

Методы защиты веб-формы без капчи

Reading time3 min
Views62K

О чём речь?


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

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

В этом обзорном посте я бы хотел рассмотреть незаметные для пользователя методы защиты от ботов.

Методы защиты


Читать дальше →

Компилятор выражений

Reading time12 min
Views19K
Недавно у меня возникла необходимость в вычислении выражений. Выражение представлено в виде строки и может содержать имена переменных, целые числа, строковые константы и любые операции над ними.

Пример:
   выражение: «x + 10 == 5 * y / (1 + z*2)»;
   требуется уметь вычислять это выражение для любых значений x, y и z.

И конечно при этом надо учитывать приоритеты операторов.

Для решения нужно сделать компилятор, который по строке строит объект «Вычислимое Выражение». У этого объекта будет метод «вычислить для данных значений переменных».

Решение на Java, но может быть легко переведено на другие языки.

Подробнее...

Парсер математических выражений

Reading time5 min
Views48K
Спасибо всем! Статья набрала необходимое число плюсов и автор к нам присоединяется! Вот и он: elw00d
Представляю вниманию товарищей-дотнетчиков библиотечку собственного написания, с помощью которой можно легко обращаться с несложными математическими функциями, переводя их из строковой формы инфиксной записи в обработанное представление, составленное в постфиксной нотации, и обратно. Для чего это может понадобиться?

К примеру, можно написать приложение, которое принимает ввод функции пользователем в виде строки, анализирует корректность синтаксиса, вычисляет его значение в указанных точках, оптимизирует введенное выражение, минимизируя количество операций, требуемых для вычисления, и может выдавать результат в виде строки, представляющей собой корректное строковое представление оптимизированной функции. В качестве конкретных применений можно отметить различные специализированные калькуляторы (в том числе, построенные наподобие программируемых), приложения, используемые для построения графиков или других отчетов, требующие задания начальных функций, или как оригинальное средство для построения защиты от спама / автоматических регистраций.
Читать дальше →

Тривиальные задачи по вёрстке

Reading time4 min
Views60K
image

Начинаю вести серию статей Это статья про вёрстку html css js, начинаю с самого простого, потом планирую описать более сложные вещи и всякие тонкости и этим видимо так и закончил

Читать дальше →

Кунг-фу поддержки проектов

Reading time3 min
Views1.5K
Наверно каждому из программистов приходилось сталкиваться на новом или на не новом месте работы с необходимостью поддерживать «чужой» проект.

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

Все реагируют на «чужой» код по разному. Одних бросает в холодный пот, другие стиснув зубы разбираются. Так получилось, что я наблюдал этот процесс изнутри, как сторонний наблюдатель, как team leader и как специалист передающий свой код «новичку»

Читать дальше →

Огнелис в роли сервера разработки

Reading time2 min
Views692
Прочитал только что статью про пример использования telnet-сервера в firefox и наткнулся на комментарий пользователя @merlin_rterm, который упомянул про расширение POW, или Plain Old Webserver. Данное расширение позволяет запускать серверные скрипты средствами огнелиса. Далее опишу как настроить огнелис для работы с PHP и SQLite под Ubuntu. Думаю, что под Mac и Windows инструкция не будет сильно отличаться.
Читать дальше →

Subversion: cлияние переименований файлов

Reading time3 min
Views3.5K
— Зачем ты, Белка, летишь за мной, Кабаном?
— Не знаю, Кабан! Приказ Хорька. Как понял? Приём.
— Ни хера не понял! Какого Хорька, Белка? Я Кабан. Кто такой Хорёк? Кто это? Приём.
— Кабан, ты дятел! Как понял? Приём.
— Понял тебя, Белка. Я — Дятел. Повторяю вопрос про хорька. Кто это?
— Кабан, сука, ты всех заманал, лети вперёд молча! Конец связи.
Виктор Шендерович

Как известно, Subversion не умеет отслеживать переименования файлов. Согласно документации, команда svn move равносильна svn copy с последующим svn delete. Такое поведение вызывает большие проблемы при слиянии веток. Рассмотрим способы их решения.
Читать дальше →

Оптимизация процесса создания unit-тестов

Reading time6 min
Views4.8K
Всем привет! Хабраюзер shai_xylyd написал статью про аспекты тестирования, где им были рассмотрены некоторые понятия и ценности TDD. В частности, он упомянул очень интересный способ создания первичных юнит-тестов — когда функциональный код пишется совместно с кодом юнит-теста, чем меня очень заинтриговал.

Дело в том, что я (как программист), нахожусь в состоянии переходного процесса между «классической» разработкой и разработкой test-driven, поэтому всякими способами ищу возможности упростить и сделать более естественной последнюю. После пары приседаний, сразу включиться в методику shai_xylyd не сумел. Начал переписку с автором статьи, где он натолкнул меня на мысль подойти к решению с математической точки зрения. Идея в том, чтобы воспользоваться функциональным пространством среды программирования и «разложить» написание юнит-теста на составляющие. После чего сделать выводы.
Немного математики, а потом пример

Непопулярные аспекты тестирования

Reading time5 min
Views2.6K

Непопулярные аспекты тестирования


     Каждый разработчик знает, что писать тесты это правильно, часть разработчиков знает это на своем опыте, другая из книг тех программистов, которые знают это на личном опыте и умеют продавать свои книги. Писать книги я не умею, да и опыта мало, но поделиться некоторыми аспектами использования unit тестов я могу. Ниже, я постараюсь поменьше упоминать прописные истины, но побольше оригинальных мыслей. Все размышления не привязаны к какому либо языку или фреймворку, поэтому эта статья может быть полезна широкой аудитории разработчиков.

Я соглашаюсь с тем, что данная статья распространяется на условиях CC-NC-BY

Кузявые ли бутявки, т.е. пишем морфологический анализатор на Python

Reading time8 min
Views54K
Морфологический анализатор для русского языка — это что-то заумное? Программа, которая приводит слово к начальной форме, определяет падеж, находит словоформы — непонятно, как и подступиться? А на самом деле все не так и сложно. В статье — как я писал аналог mystem, lemmatizer и phpmorphy на Python, и что из этого получилось.
Читать дальше →

Information

Rating
Does not participate
Location
Бишкек, Кыргызстан, Кыргызстан
Date of birth
Registered
Activity