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

User

Send message

PHPUnit: Mock объекты

Reading time7 min
Views94K
Довольно часто при написании модульных тестов нам приходится сталкиваться с тем, что тестируемый класс зависит от данных из внешних источников, состояние которых мы не можем контролировать. К таким источникам можно отнести далеко расположенную общедоступную базу данных или службу, датчик какого-нибудь физического процесса и пр. Либо нам необходимо убедиться, что некие действия выполняются в строго определенном порядке. В этих случаях к нам на помощь приходят Mock объекты (mock в переводе с английского — пародия), позволяя тестировать классы в изоляции от внешних зависимостей. Использованию Mock объектов в PHPUnit посвящается эта статья.
Читать дальше →

Переопределение функций в PHP 5.3

Reading time2 min
Views11K
PHP 5.3 давно уже не новость и написано о нем прилично(да и приелся он как-то после выхода версии 5.4). Тем не менее, хотелось бы поставить акцент на одной его особенности.

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

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

Выводим текст на HTML5 Canvas

Reading time5 min
Views102K
HTML5 Canvas – очень обширная тема со многими “вкусностями”, о многих из которых уже писали и ещё будут писать. Поэтому, я хочу немного рассказать в этой статье, только об одной маленькой, и как на первый взгляд может показаться банальной темой – работа с текстом. Я хочу показать, что с ним почти также можно работать, как с обычным текстом в вебе, т.е. позиционировать, накладывать стили и градиенты, а также писать многострочные предложения легко и без проблем.
Читать дальше →

Канобувости, 135-й выпуск

Reading time1 min
Views9.2K


Приветствуем наших дорогих зрителей, зрительниц и бесполых братьев по разуму, которые случайно поймают сигнал через пару тысяч лет. С вами сто тридцать пятый выпуск «Канобувостей». Начнем с двух известий – хорошего и очень хорошего.

Смотрите в этом выпуске:
MechWarrior Online – беззаконие роботехники
— Resident Evil Chronicles HD Collection – вирусная новость
— Papo & Yo – папочка уехал
BioShock Infinite – папочка вернулся
XCOM: Enemy Unknown– сложное поколение
Ссылка на корометражку Halo.
Читать дальше →

Модуль nginx для борьбы с DDoS

Reading time6 min
Views67K
Многие сталкивались с таким явлением как DDoS атака методом HTTP флуда. Нет, это не очередной туториал по настройке nginx, хочу представить свой модуль, работающий как быстрый фильтр между ботами и бэкэндом во время L7 DDoS атаки и позволяющий отсеивать мусорные запросы.
Читать дальше →

Quick brown fox jumps over the lazy dog

Reading time1 min
Views10K
В английской типографике заметной популярностью пользуется фраза «quick brown fox jumps over the lazy dog» как панграмма, включающая все символы алфавита (причём символы «e», «r» и «u» — по два раза, символ «o» — четыре раза).

В переводе она означает «быстрая бурая лиса перепрыгивает ленивую собаку».

Моей фантазии никогда не хватало вообразить эту сцену происходящею в действительности сколько-нибудь правдоподобно до тех пор, пока я не натолкнулся в сети вот на этот анимированный GIF:

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

Защищаем сайт от атак на примере ХабраХабра

Reading time5 min
Views17K


Рано утром Хабр «выкатил» своё новое обновление, и я с чистой совестью достаю эту статью из черновиков.
Вчера у меня случился epic fail и этот топик частично, включая строчку об апдейте выше, попал в паблик на пару секунд. За эти секунды топик успело плюсануть несколько человек.
Ещё раз, теперь публично, прошу прощения у администрации!
Совет остальным — НИКОГДА не храните в черновиках информацию вроде этой.


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

В настоящей статье я хочу ещё раз поведать разработчикам о том, как ломают сайты, а чтобы вам не было скучно, я попутно буду ломать Хабр и подробно описывать, как я это делал. Мы рассмотрим такие интересные штучки, как «Активная XSS в профиле», «Бесконечное обнуление кармы», «Публикация топиков со значком 'Из песочницы'», «CSRF через Flash и дыру в Internet Explorer 6» и многое другое.

Все уязвимости уже исправлены. Ну или почти все. Поэтому, если вы найдёте очередную дыру, то пишите на support@habrahabr.ru — миф о том, что эту почту никто не читает всего лишь миф.
Читать дальше →

Азы социально-сетевого анализа (Social Network Analysis 101)

Reading time4 min
Views19K
От переводчика. Автор этой публикации — Майкл Ву (Michael Wu), ведущий аналитик компании Lithium, специализирующийся в изучении социальных взаимодействий и онлайн-сообществ.


Чтобы понять, что такое «социально-сетевой анализ» (Social Network Analysis, SNA), нужно понимать, что такое «социальная сеть» и что такое «социальный граф». Говоря просто, социально-сетевой анализ — это способ изучения социальных сетей, а социальная сеть — это набор сущностей, между которыми есть определенные отношения. Социальные сети существуют с тех пор, как люди начали бродить по земле. По правде говоря, подобные структуры есть не только у людей, но и у социальных животных (например, у волков, львов, дельфинов, мышей и даже муравьев).

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

Перевод на русский язык презентации Apple от 7 марта 2012 года — The new iPad

Reading time1 min
Views35K
image

7 марта 2012 года состоялась очередная презентация компании Apple. Канал GTV представляет перевод презентации нового iPad на русский язык.
Читать дальше →

Познание и внутренний опыт пользователя

Reading time5 min
Views8K

Предлагаю вашему вниманию вольный перевод статьи Jordan Julien Cognition & The Intrinsic User Experience

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

Практикум использования контрольных карт Шухарта

Reading time3 min
Views103K
Недавно я публиковал здесь свой слайдкаст с рассказом о 6-сигмах, контрольных картах Шухарта и людях снежинках, где достаточно простым языком, местами злоупотребляя сквернословием, под 20-ти минутный хохот слушателей рассказывал о том, как отделить системные вариации от вариаций, вызванных особыми причинами.

Теперь хочу подробно разобрать пример построения контрольной карты Шухарта на основе реальных данных. В качестве реальных данных я взял историческую информацию о завершенных личных задачах. Эта информация у меня есть благодаря адаптации под себя модели личной эффективности Дэвида Аллена Getting Things (про это у меня тоже есть старый слайдкаст в трех частях: Часть 1, Часть 2, Часть 3 + Excel-табличка с макросами для анализа задач из Outlook ).

Постановка задачи выглядит так. У меня имеется распределение среднего числа завершенных задач в зависимости от дня недели (ниже на графике) и нужно ответить на вопрос: «есть ли что-то особенное в понедельниках или это всего лишь погрешность системы?»

image

Ответим на этот вопрос при помощи контрольной карты Шухарта – основного инструмента статистического управления процессами.
Читать дальше →

Что нас ждет в Joomla Framework 12.1

Reading time3 min
Views3.8K
Возможно еще не все осознали, но Joomla давно разделилась на две части — Joomla CMS и Joomla Framework. Последний имеет версию 11.4, но усиленно пилится версия 12.1. Изначально планировалось, что фреймворк будет выходит раз в квартал, однако в этот год решили выпустить только три версии — 12.1, 12.2, 12.3. Соответственно, 12.1 выйдет 18 апреля. Что же нас в ней ждет?
Читать дальше →

Запланированная отправка постов (php, mongo, cron, regexp)

Reading time2 min
Views2K
Добрый день.

Недавно мне пришлось писать страницу отправки постов на стены социальных сетей. Была поставлена задача постить на стену в определенное время а не сразу.

Я написал страницу с полями для выбора соц сетей, текстом сообщения и самим полем для ввода времени отправки. Кроме обычного календаря с выбором даты и времени отправки, я добавил еще одно поле с вводом критерия отправки по правилу cron.

Шаблон * * * * *

После этого встал вопрос — как получить только нужные поля для отправки?
Читать дальше →

Тьюринговская трясина

Reading time4 min
Views5.9K
Бойтесь Тьюринговской трясины, в которой всё возможно, но ничего конкретного нельзя сделать просто.
Алан Перлис

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

Nette PHP Framework: первое знакомство

Reading time3 min
Views12K
Логотип фреймворка Nette Было очень приятно совершенно случайно обнаружить сайт этого фреймворка во второй половине рабочего дня. Новые фреймворки появляются редко, а тем более редко попадаются механизмы, которые нравятся с первого взгляда. На Хабре описания Nette я не нашел, поэтому поспешил поделиться своей находкой с Вами.

Во-первых, мне сразу приглянулось название. Nette. Это почти как Latte. Только Nette. Как оказалось позднее, есть и Latte — собственный встроенный подающий надежды шаблонизатор. Ого.
Читать дальше →

Наследование интерфейсов и контракты

Reading time8 min
Views7.9K
В библиотеке Code Contracts, которая любезно предоставляет возможности контрактного программирования на платформе .NET, для задания предусловий и постусловий используются вызовы статических методов класса Contract. С одной стороны – это хорошо, поскольку альтернативная реализация на основе атрибутов была бы слишком ограниченной. С другой стороны – это добавляет определенные сложности, когда дело касается контрактов интерфейсов или абстрактных методов, которые, по своей природе, не содержат никакого кода, а значит и вызывать методы просто не откуда.

Решается эта с помощью двух атрибутов: ContractClassAttribute, который вешается на интерфейс или абстрактный класс, и ContractClassForAttribute – который вешается на сам контракт.
Читать дальше →

Идентификация javascript зловреда

Reading time3 min
Views3.2K
На одном сайте на поддержке в js был обнаружен странный код, точнее было понятно что это зловред: аваст выдал предупреждение, а консоль показала что есть соединение с несколькими левыми сайтами.

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

MariO — релиз

Reading time1 min
Views8.4K
Устали от политики — вот довольно интересное занятие на сегодня (да и не только).

Mari0 — это довольно удачное сочетание игр Марио и Портал. Быть может кто также ждал релиз этой игры? Так вот — он сегодня. Что примечательно — можно скачать полные исходники, вместе с шейдерами, звуком, графикой. Написана на Lua, на движке для 2D игр LÖVE. Все запаковано в файл с раcширением .love, что по сути есть zip архив, можно распаковать и посмотреть что там внутри на глаз. А можно сходить и посмотреть что это за зверь сюда: https://love2d.org/.

Игра доступна для Windows, Linux и MacOS.

Для пользователей Windows чтобы игра работала может понадобиться vcredist.

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

Пишем плагины для Android

Reading time4 min
Views7.4K
По долгу службы мне уже полтора года доводится писать для платформы Android, и вроде бы знания мои в данной области обширны, но и на хабре объем уже охваченных тем не мал. В общем-то после долгих рассуждений решил я поведать хабралюдям о данной теме.
Читать дальше →

Тестируем в браузере с помощью Geb

Reading time10 min
Views14K

Geb на практике


Я вот, скажем, люблю, когда всю работу за меня делают роботы. Поэтому считаю необходимым всякие скрипты, inspections, проверщики орфографии и, разумеется, автоматические тесты. Кстати, как вам такой тестик:

Browser.drive(driver: new InternetExplorerDriver()) {

    go "http://www.google.com"

    $('form', action:endsWith('/search')).q = 
                    'тестирование при помощи geb и spock'
    $('button', value:'Поиск').click()
    waitFor { $('#search') }
    assert $('#search').size() == 1
    assert $('#search').find('li.g a.l').size() > 0
    println "Первый результат: " + $('#res').find('li.g a.l', 0).text()
}.quit()

Мне кажется, у таких тестов высокая степень читаемости — неважно даже, какой это язык. Можно по такому вот образцу написать еще несколько подобных же тестов, не имея вообще никакого понятия о Geb, Groovy и о том, как это работает. Но для полного понимания немного углубимся в основы.
Читать дальше →

Information

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