Pull to refresh
1
0
Александр @Funcraft

User

Send message

Тестирование в Java. Spock Framework

Reading time15 min
Views70K

В предыдущих статьях на примерах JUnit и TestNG я упоминал о test-driven development(TDD) и data-driven testing(DDT). Но есть еще один активно набирающий популярность подход, behaviour-driven development(BDD). Это такое развитие TDD техники, при котором на тест смотрят не как на тестирование каких-то компонентов системы, а как на требования к функционалу. Если TDD оперирует такими понятиями, как тест или метод, то для BDD это спецификация и требования. Про эту технику уже говорили на хабре ранее:

Этот подход применим используя и JUnit, и TestNG. Но есть и другие инструменты заточенные именно под BDD. В этой статье я расскажу про такой фреймворк. Называется он Spock Framework и сочетает в себе не только принципы BDD, но и достоинства Groovy. Да-да, именно Groovy. И хотя используется Groovy, используется он и для тестирования Java кода. Примерами использования могут служить Spring, Grails, Tapestry5. Интересно? Тогда читаем дальше.
Читать дальше →

Udacity создаёт учебный план и будет выдавать дипломы

Reading time1 min
Views2.7K
Недавно онлайновый университет Udacity анонсировал два первых курса, которые начинаются 20 февраля. Курсы ведут стэнфордские профессоры Дэвид Эванс (David Evans) и Себастьян Тран (Sebastian Thrun).

CS 101: Строим поисковый движок (+ обучение Python)
CS 373: Программируем роботизированный автомобиль (требуется знание Python)

Это семинедельные курсы, которые рассчитаны на новичков. Однако, планы онлайн-университета гораздо амбициознее. Как они сообщили в почтовой рассылке, Udacity собирается разработать полноценную учебную программу по информатике и предлагать услуги сертификации. То есть они будут выдавать настоящие дипломы.

Список курсов, которые ожидаются в 2012 году:
  1. Теория алгоритмов
  2. Операционные системы
  3. Компьютерные сети
  4. Распределённые системы
  5. Компьютерная безопасность
  6. Алгоритмы и структуры данных
  7. Практика программной инженерии
  8. Разработка веб-приложений

Почему стоит пользоваться PDO для работы с базой данных

Reading time9 min
Views331K

Перевод статьи Why you Should be using PHP’s PDO for Database Access.

Множество PHP-разработчиков привыкли использовать для работы с базами данных расширения mysql и mysqli. Но с версии 5.1 в PHP существует более удобный способ — PHP Data Objects. Этот класс, сокращенно именуемый PDO, предоставляет методы для работы с объектами и prepared statements, которые заметно повысят вашу продуктивность!

Введение в PDO


«PDO – PHP Data Objects – это прослойка, которая предлагает универсальный способ работы с несколькими базами данных.»

Заботу об особенностях синтаксиса различных СУБД она оставляет разработчику, но делает процесс переключения между платформами гораздо менее болезненным. Нередко для этого требуется лишь изменить строку подключения к базе данных.

Эта статья написана для людей, которые пользуются mysql и mysqli, чтобы помочь им в переходе на более мощный и гибкий PDO.
Читать дальше →

Рейтинг фантастических романов, или Я сделаю свой «IMDB для книг», с преферансом и библиотекаршами

Reading time8 min
Views7.8K
Долго выбирал между «Алгоритмами», «Читальным залом» и «Я пиарюсь», в итоге остановился на Data Mining.

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

И вот, терзаясь муками выбора, я забил в поиск «IMDB for books» и… не нашел ничего пристойного. Весь интернет забит рекомендательными сервисами для книг, и все они выдают полную чушь. Вот, например, топ имхонета для раздела «Самая лучшая фантастика и фэнтези»:

1. Мастер и Маргарита. Михаил Булгаков, 1940 год
2. Цветы для Элджернона (рассказ). Дэниел Киз, 1959 год
3. Цветы для Элджернона. Дэниел Киз, 1966 год
4. Битва Королей. Джордж Мартин, 1998 год
5. Рыцарь Ордена: Клинки у трона. Сергей Садов, 2000 год
6. Голубятня в Орехове. Владислав Крапивин, 1983 год


Эээ… Это совсем не то, что я ожидал увидеть на первых местах в рейтинге фантастики. «Мы пойдём другим путём», — подумал я. Отказавшись от идеи найти нормальный читательский рейтинг, я просто пошёл в Вики, нашёл список лауреатов премий Хьюго и Небьюла и выбрал пару-тройку книг — как, собственно, я всегда раньше и делал.

«А не замутить ли мне свой рейтинг книг, взяв за основу престижные премии?» — внезапно подумал я. И замутил. Знакомьтесь: top-books.info

Путь к успеху

Оформление изображений на CSS3. Часть 2

Reading time2 min
Views4.5K
В предыдущей статье про оформление изображений была затронута тема создания у картинок идеально закругленных углов, строгих теней и других графических «фишек» с помощью свойств box-shadow, border-radius и transition. Т.к. эти свойства обрабатываются некоторыми браузерами некорректно, проблема кроссбраузерности была решена обёртыванием изображения в контейнер, где оно (изображение) используется в качестве фона.

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

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

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

Перевод The Little Redis Book

Reading time1 min
Views26K
The Little Redis Book — это бесплатная книга про Redis.

Книга была написана Karl Seguin, при поддержке Perry Neal. Karl Seguin является также автором книги The Little MongoDB Book, которую часто рекомендуют для быстрого старта с MongoDB. Первая версия повилась около недели назад.

Сегодня я сделал первую версию перевода этой книги. Исходные тексты доступны в репозитории на GitHub. Там же можно найти и готовый PDF.

Перевод выполнен с целью популяризации Redis среди русскоговорящих разработчиков. Книга является очень удобным и компактным руководством.

Я благодарен следующим людям за помощь в переводе оригинального текста и вычитке результата:


Я прошу все неточности и опечатки отправлять для коррекции перевода.

Бесплатная электронная книга по гибким методологиям разработки

Reading time2 min
Views51K

Хабравчане, позвольте вам представить мой небольшой и скромный труд (чуть больше 100 страниц) по гибким методологиям разработки. Электронная книга доступна бесплатно для скачивания со следующих сервисов в PDF:

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

Физика мира Minecraft

Reading time1 min
Views17K
Недавно был проведен занятный физический эксперимент в мире Minecraft. Чтобы измерить ускорение свободного падения g, проведен ряд опытов, а именно:

1. Строится пушка для запуска блоков
2. Вычисляется расстояние, которое пролетел блок, при стрельбе под углом
3. Вычисляется время полета
4. На середине пути блока строится башня из блоков, чтобы вычислить максимальную высоту траектории
5. Все эти данные используются для вычисления

Видео, описывающее данный процесс, не претендует на истину в последней инстанции, но результаты довольно интересные.

Выполнение кода в PHP 5.3.9

Reading time2 min
Views7.9K
Одним из новшеств релиза PHP 5.3.9 стало введение нового параметра конфигурации max_input_vars, который устанавливает максимальное возможное количество входящих параметров в запросе. Новая директива является мерой против атак Hash Collision DoS, которые могут привести к отказу в обслуживании при отправке большого количества входящих параметров. Однако в коде, отвечающим за ограничение количества параметров в запросе, была допущена ошибка, которая приводит к удаленному выполнению кода. Уязвимость была обнаружена специалистом в области информационной безопасности Стефаном Эссером, известным за публикацию ряда серьезных уязвимостей в PHP, а также за разработку джейлбрейка для Apple iOS.

Уязвимость возникает в случае, когда количество входящих параметров превышает значение max_input_vars (по умолчанию 1000).

Немного технических подробностей

Firefox: сочетания клавиш в стиле Emacs, а также загрузка содержимого clipboard по нажатию средней кнопки мыши

Reading time5 min
Views1.7K
Хочу поделиться с хабросообществом двумя рецептами «приготовления» Firefox для более приятного и удобного его использования в повседневной жизни юниксоида.

Речь будет идти о версии Firefox под FreeBSD. Но всё, описанное ниже, вполне применимо и к версии для Linux. Для Windows всё не так просто и решается другими способами.

Я опишу метод «внедрения» в Firefox сочетаний клавиш в стиле Emacs, а также как заставить Firefox загружать по mouse middleclick любой контент буфера обмена, а не только тот, который похож на ссылку (имеет префикс http:// и т.п.).

Если тема интересна, прошу под кат.
Читать дальше →

Деобфускация PHP кода

Reading time20 min
Views56K
Деобфускация PHP
Так уж случилось, что на днях мне попался один нужный PHP скрипт, но обфусцированный.
По какой-то причине он никак не работал. Я пишу на PHP достаточно давно, и мне очень нравится отлавливать нестандартные ситуации в скриптах, особенно когда при выполнении в логах нет ошибок, а скрипт просто не выполняет своих предназначенных обязанностей, руки так и чесались расшифровать. Последней каплей стало то, что автора этого скрипта не было в сети, чтобы помочь решить мою проблему. Скрипт кстати куплен моим товарищем, собственно он и попросил помочь.

Цель данной статьи, показать принцип дешифровки, зашифрованных скриптов, чтобы например расшифровать залитый злоумышленником вирус на PHP.

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

Существующие приложения и будущие Android x86 устройства

Reading time4 min
Views14K
Вскоре на рынке появятся новые смартфоны и планшеты, работающие на базе x86 архитектуры, о своих планах на выпуск подобных устройств уже заявили компании Lenovo и Motorola. Что принетсет новая платформа разработчикам программного обеспечения? Об этом я и хотел бы поговорить в данной статье.

Но сначала немного о планах и серьезности намерений производителей «железа».
Читать дальше →

MySQL в NGINX: использование блокирующих библиотек в неблокирующем сервере

Reading time7 min
Views8.5K
Как известно, при разработке высоконагруженных серверов часто применяется событийная модель работы с сокетами. Ключевым компонентом системы при этом является epoll (во FreeBSD и Windows есть свои решения, но остановимся на Линуксе). Функция epoll_wait, будучи единственным блокирующим вызовом, возвращает нам информацию обо всех сетевых событиях, которые нас интересуют. Подобным образом, конечно, работает и всем известный сервер NGINX.

Событийная модель программирования делает код весьма своеобразным, как будто выворачивает его наизнанку. Но эта проблема не так страшна. Есть другая проблема — использование в событийно-ориентированном коде существующих библиотек, изначально не предназначенных для него. Если подобная библиотека делает блокирующие вызовы (например, connect, recv и т.д.), вся событийная модель может потерять смысл т.к. окончания одного такого вызова будут ждать все остальные клиенты, что совершенно неприемлемо, если вы пишете серьезный продукт.
Читать дальше →

Дерево существующей реальности

Reading time3 min
Views16K
Все мы ежедневно (иногда и ежечасно) дома или на работе сталкиваемся с проблемами разного характера. Некоторые из них решаются сами собой, на некоторых нужно сосредоточить все свое внимание на немалый срок. Мы будем говорить скорее о последних.

Бывали ли вы в ситуации, когда нужно срочно решить какой-то вопрос, а все мысли, как назло, куда-то улетучились?
Или вас уже давно не устраивают, скажем, результаты работы ваших программистов, но вы не можете понять, в чем причина?
Или вы хотите разрешить какой-то давно мучающий вас вопрос, но не знаете, с какой стороны к нему подступиться?
Если вы ответили «да» хотя бы на один из вопросов, то эта статья для вас.

Прошу под кат!

NB: Это первая статья из серии «Техники анализа проблем и принятия решения».

NB2: Рассмотренные в примере выводы являются приблизительными и основаны на полностью выдуманной ситуации.

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

Игры id Software — на Github

Reading time1 min
Views8.7K
Компания id Software выложила все свои проекты Open Source на github. Вот полный список, пользуйтесь на здоровье!

Doom 3 GPL
Wolfenstein 3D для iOS
DOOM Classic для iOS
Quake GPL
DOOM
Quake-Tools, инструменты и утилиты для Quake
idsetup, setup от DOOM, Final DOOM, Strife и др.
Quake-2-Tools GPL
GtkRadiant GPL
Wolfenstein: Enemy Territory GPL
Return to Castle Wolfenstein Multiplayer GPL
Return to Castle Wolfenstein Single-player GPL
Quake 2 GPL
Quake III Arena GPL

Cериализация статических объектов в C#

Reading time2 min
Views11K
Контекст

С данным вопросом встретился при работе над одним из проектов, в котором очень много настроек. В виду того что добавление новых настроек происходило по ходу разработки то выявилась необходимость сделать класс к которому можно обратится из любого модуля программы. Для этого конечно был использован статический класс, а назвали мы его AppSettings. Конечно можно было бы использовать Properties.Settings… Не буду вдаваться в детали, но этот вариант не подходил.

Суть проблемы

Из за того что класс является статическим обычная сериализация не работает. Давайте проверим. Допустим, у нас есть простой статический класс:
public static class TestStatic
{
	// Fields...
	private static int _Counter;
	public static int Counter
	{
		get { return _Counter; }
		set
		{
		        _Counter = value;
		}
	}       
}


В общем если класс не был бы статическим, можно было бы использовать System.Xml.Serialization.XmlSerializer. Это не наш случай — класс у нас статический и в этом случае, по тому, что XmlSerializer.Serialize метод требует экземпляр класса, а не тип класса, то компилятор выдаст 'Test1.TestStatic' is a 'type' but is used like a 'variable'.
Читать дальше →

Bootstrap 2.0 – HTML+CSS+JS UI фреймворк

Reading time1 min
Views60K

Вышла новая версия офигительного UI фреймворка от Twitter — Bootstrap 2.0 Для тех кто не в курсе что это, настоятельно рекомендую ознакомиться. Этот набор позволяет создавать отличные шаблоны сайтов за считанные часы (проверено на собственном опыте) на основе готовых элементов и экономить килотонны нервов на адаптации кода под разные браузеры.

Особенности Bootstrap:
  • Полный набор компонентов в виде стилей и анимаций поведения для элементов интерфейса
  • Поддержка возможностей HTML5, CSS3 (но при этом работает и в IE7!)
  • Поддержка идеологии 940-пиксельной сетки
  • Поддержка идеологии fluid-grid
  • Кросплатформенность — наборы стилей для десктопных и мобильных браузеров
  • Возможность кастомизации и добавления собственных стилей
  • Возможность добавлять jQuery плагины

Мастхэв для верстальщиков и проектировщиков интерфейсов!

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity