Pull to refresh
5
0
Сергей Турсунов @fiveze

iOS Developer

Send message

Адаптивный веб-дизайн на практике

Reading time12 min
Views85K
Мы уже писали о методах (Mobile First и Response Web Design), которые используем при разработке нашего сервиса. В этой статье я хочу поделиться с вами нашим опытом. То, что в теории кажется простым, на практике порой оборачивается кошмаром. Речь пойдет о том, как нам удается создавать универсальный веб-сервис, способный работать на большом количестве устройств.
Читать дальше →
Total votes 139: ↑133 and ↓6+127
Comments34

Авторы Хабрахабра в поисковой выдаче Google

Reading time1 min
Views7.3K
Как вы знаете, недавно компания Google запустила пилотный проект по представлению сведений об авторстве в результатах поиска. Учитывая количество уникального контента на Хабрахабре, мы решили не упускать возможность воспользоваться данной функцией и интегрировали её в сайт.



Более подробно об этой функции можете почитать на официальной странице компании Google.

А пока, если хотите мелькать в результатах поиска, проделайте следующее.
Подробности
Total votes 158: ↑148 and ↓10+138
Comments81

PHP: фрактал плохого дизайна

Reading time32 min
Views206K

Предисловие


Я капризный. Я жалуюсь о многих вещах. Многое в мире технологий мне не нравится и это предсказуемо: программирование — шумная молодая дисциплина, и никто из нас не имеет ни малейшего представления, что он делает. Учитывая закон Старджона, у нас достаточно вещей для постижения на всю жизнь.

Тут другое дело. PHP не просто неудобен в использовании, плохо мне подходит, субоптимален или не соответствует моим религиозным убеждениям. Я могу рассказать вам много хороших вещей о языках, которых я стараюсь избегать, и много плохих вещей о языках, которые мне нравятся. Вперёд, спрашивайте! Получаются интересные обсуждения.

PHP — единственное исключение. Фактически каждая деталь PHP в какой-то мере поломана. Язык, структура, экосистема: всё плохо. И даже нельзя указать на одну убийственную вещь, настолько дефект систематичный. Каждый раз, когда я пытаюсь систематизировать недостатки PHP, я теряюсь в поиске в глубину обнаруживая всё больше и больше ужасных мелочей(отсюда фрактал).

PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.
Читать дальше →
Total votes 450: ↑392 and ↓58+334
Comments538

Лайткуб (Фотобокс, Лайтбокс) своими руками за 300р

Reading time3 min
Views388K


Допустим, вы хотите сделать качественные фотографии гаджета для обзора или вас интересует предметная съемка в домашних условиях, но под рукой лишь недорогая мыльница. Как быть? Вам нужен лайткуб! О том, как я сделал свой недорогой, но прочный лайткуб, примеры фоток и многое другое – под катом.

Читать дальше →
Total votes 136: ↑124 and ↓12+112
Comments65

Уведомление о непрочитанном входящем письме с помощью Yoctupuce-Demo

Reading time3 min
Views3.6K
image

Вступление:


Я был вдохновлен 2мя статьями, этой и этой. Мне очень понравилась идея первой статьи, но я подумал, что покупать Arduino для этой затеи было бы слишком «жирно». Затем, когда я наткнулся на вторую статью, я понял, что Yoctopuce-demo -как раз то, что мне надо! И я решил заказать его.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments26

Face.com API определяет возраст по фотографии

Reading time1 min
Views38K
В Face.com API добавлена функция определения возраста. Интерфейсы Face.com API используются многими приложениями, в том числе фейсбуковскими Photo Finder и Photo Tagger. «Яндекс» как один из акционеров Face.com использует их API на «Яндекс.Фотках».

API показывает минимальный и максимальный возраст, а также среднюю оценку.

Возможно, новая функция может использоваться на сайтах знакомств для сортировки набора фотографий (анкет), а также в системах безопасности, требующих авторизации по веб-камере — для запрета на доступ лиц моложе определённого возраста.
Читать дальше →
Total votes 47: ↑41 and ↓6+35
Comments46

По колено в PDF. PHP парсер с плюшками

Reading time9 min
Views11K
Так получилось, что с месяц назад передо мной выросла совершенно неожиданная задача: сконвертировать PDF в html по имеющемуся шаблону. В том числе необходимо было разбивать все на страницы и выделять в них параграфы. Да и много еще чего. И все бы ничего, и обошелся бы я какой-нибудь левой библиотечкой, но кое-какие специфичные штучки-финтеплюшки, так необходимые мне, в библиотеках не нашлись. И это было печально…
Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments13

iPhone: MiTM-атака из кармана

Reading time3 min
Views93K
imageПриветствую, коллеги!
Традиционным устройством для проведения атаки на сети Wi-Fi, пожалуй, является ноутбук. Это обусловлено многими факторами: возможностью использования «специфичных» модулей Wi-Fi, наличием необходимого ПО и достаточной вычислительной мощностью. Поэтому «классическим» образом злоумышленника является человек в машине с ноутбуком и торчащей из окна антенной. Но развитие мобильных платформ не стоит на месте, и многие операции давно уже можно выполнять «из кармана».

Многие из нас пользуются «яблочными» устройствами на операционной системе iOS. И ни для кого не является секретом, что iOS является по-сути представителем *nix-семейства со всеми вытекающими из этого плюсами, в числе которых и возможность использовать многие классические pentest-приложения. Сегодня мне хотелось бы рассказать об инструментах для проведения простейшей классической атаки Man in the Middle на клиентов сети Wi-Fi с использованием метода arp poisoning.

Читать дальше →
Total votes 84: ↑80 and ↓4+76
Comments46

Перестаньте писать классы

Reading time9 min
Views186K
Фото Джэка Дидриха из профиля на G+ Признак того, что объект не должен быть классом — если в нём всего 2 метода, и один из них — инициализация, __init__. Каждый раз видя это, подумайте: «наверное, мне нужна просто одна функция».

Каждый раз когда из написанного класса вы создаёте всего один экземпляр, используете только раз и тут же выбрасываете, следует думать: «ой, надо бы это отрефакторить! Можно сделать проще, намного проще!»

Перевод доклада Джэка Дидриха, одного из ключевых разработчиков языка Питон. Доклад прозвучал 9 марта 2012 на конференции PyCon US.
Читать дальше →
Total votes 234: ↑206 and ↓28+178
Comments148

jQuery File Upload

Reading time2 min
Views182K
Ура! Еще один, свеженький… чем он лучше других?



а) Новенький! Всегда, кто берется что-то делать, то обычно смотрит: есть ли в этом смысл, и если есть — делает это.
б) Красивенький! Можно не точить, а ставить из коробки. Основан на Bootstrap'е и иконках Glyphicons
в) Само собой мультиселект файлов, Drag&drop, прогрессбар и превьюшки фотографий.
г) Поддержка кросдоменного соединения, докачка и ресайз фоток на стороне клиента.
д) Готов для любой платформы сервера (PHP, Python, Ruby on Rails, Java, Node.js, и тому подобное.)

blueimp.github.com/jQuery-File-Upload

Поддержка браузеров:

github.com/blueimp/jQuery-File-Upload/wiki/Browser-support

Читать дальше →
Total votes 215: ↑206 and ↓9+197
Comments118

API со вкусом Eviterra

Reading time1 min
Views4.4K
Привет, Хабрахабр!

Мы — один из самых современных (и дешевых) авиабилетных сервисов
Eviterra.com давно ничего здесь не писали, потому что готовим несколько очень интересных новостей: например, скоро у нас будет очень существенный апдейт интерфейса (такого, кстати, вообще никто не делал раньше), бонусные программы и много всего более лучшего.

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



Как это сделать?
Total votes 26: ↑22 and ↓4+18
Comments9

Разработчики PHP перешли на Git

Reading time1 min
Views1.4K
Спустя пол года после голосования о переходе на DVCS
и вслед за релизом PHP5.4, команда разработчиков PHP переехала с Subversion на Git.
Официальный анонс: www.php.net/archive/2012.php#id2012-03-20-1
Читать дальше →
Total votes 67: ↑58 and ↓9+49
Comments19

Smart pointers для начинающих

Reading time6 min
Views204K
Эта небольшая статья в первую очередь предназначена для начинающих C++ программистов, которые либо слышали об умных указателях, но боялись их применять, либо они устали следить за new-delete.
Читать дальше →
Total votes 74: ↑67 and ↓7+60
Comments44

Советы себе в прошлом

Reading time4 min
Views23K
У меня очень мало опыта (суммарно программистом я проработал 16 месяцев), тем не менее, я хотел бы дать несколько советов себе-в-прошлом, ну, или иными словами всем тем, кто сейчас учится в университете и планирует стать разработчиком ПО. Ни в коей мере не претендую на мудрость или опытность. Немного подумав, я понял, что все эти советы как никогда актуальны для меня и сегодня тоже. Первую заметку я опубликовал в своем блоге в прошлом году, а сейчас публикую здесь список, расширенный советами читателей блога.

Все советы автономны и их порядок не имеет значения.
Читать дальше →
Total votes 219: ↑193 and ↓26+167
Comments311

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

Reading time5 min
Views16K


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


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

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

Все уязвимости уже исправлены. Ну или почти все. Поэтому, если вы найдёте очередную дыру, то пишите на support@habrahabr.ru — миф о том, что эту почту никто не читает всего лишь миф.
Читать дальше →
Total votes 256: ↑240 and ↓16+224
Comments82

Рисуем код из «Матрицы» на PHP

Reading time5 min
Views15K
Однажды мне пришла в голову идея сделать динамически создаваемый фон для блога в виде пресловутого кода из фильма «Матрица». После убийства вечера и половины ночи я-таки достиг желаемого результата, и решил поделиться им с народом. К сожалению, я не нашёл подобной реализации, а иметь динамически создаваемую «матрицу» как фон бложика таки хочется.
Итак, пишем генератор кода «Матрицы» на PHP с использованием библиотеки gd.
Читать дальше →
Total votes 71: ↑45 and ↓26+19
Comments59

Документация jQuery UI на русском

Reading time1 min
Views54K
В справочнике jquery.page2page.ru появилась документация jQuery UI. Помимо подробного описания каждого плагина, она содержит статьи о фабрике виджетов, с помощью которой можно создавать собственные подобные плагины, правилах темизации (оформления) виджетов UI, собственной системе позиционирования UI, а так же о расширенных анимационных эффектах, доступных при подключении jQuery UI к сайту. Ну и конечно же есть вводная статья с которой можно начать изучение jQuery UI.

Кроме этого, обновлена карта функций, в которую были добавлены методы с двух последних обновлений jQuery, а так же все плагины jQuery UI.
Total votes 56: ↑51 and ↓5+46
Comments18

PHP Unit. Опыт тестирования классов, работающих с Базой Данных

Reading time7 min
Views16K
Тестировать или нет классы, взаимодействующие с Базой данных — вопрос куда более холиварный, чем спор «покрывать код тестами или нет». Просмотрев свой проект, нам стало очевидно, что львиная доля классов основана на взаимодействии с базой данных. Поэтому было однозначно решено: «тестированию быть».
Далее я хочу поделится опытом написания модульных тестов для кода, работающего с базой данных.

PHPUnit содержит расширение для тестирования базы данных. Расширение выполняет следующие функции:
  • перевод базы данных в заранее известное состояние,
  • выполнение необходимых модификаций данных,
  • проверка, что в базе данных созданы ожидаемые записи.

К сожалению в этом списке отсутствует одна очень нужная нам фича — восстановление данных в состояние, в котором они находились до тестов. Я хочу предложить 2 варианта решения этой проблемы. Так же попутно остановлюсь на проблеме внешних ключей, которая часто возникает при накатывании не полных тестовых данных на «рабочую» базу.

Итак, я предлагаю 2 варианта решения проблемы: как после проведения юнит теста вернуть базу данных в исходное состояние:
Первый путь — «Транзакционный». Суть которого сводится к выполнению всего теста в рамках одной транзакции, и последующему rollback'у транзакции.
Второй — Перед выполнением теста скопировать структуру «рабочей» базы и проводить тестирование на ней.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments28

Как я делал самый популярный сайт о выборах

Reading time10 min
Views15K
Статистика President2012.ru Друзья, я хочу вам рассказать историю развития проекта president2012.ru. Сайт является лидером по тематике выборов президента России, за 3 месяца его посетило около 2 млн. человек, в пике имел до 20 тыс. посетителей онлайн и более 1 млн. хитов в сутки, задействовано было 3 сервера облака.

Интересных моментов в процессе работы над проектом набралось столько, что держать в себе эти знания я не могу, и хочу поделится с вами. Я понимаю, что многое, о чем я сейчас собираюсь рассказать, уже описано качественнее в специализированных разделах, и ничего нового я не открою. Моя задача скорее в том, чтобы через отдельные нюансы передать ту атмосферу, в которой проходила работа над проектом. А так же в миллионный раз с помощью success story показать таким же как я людям, что всё возможно и всё в их руках.

Кому это может быть интересно? Всем, кто так или иначе занимается созданием тематичных веб-сайтов и рассчитывает работать с высоконагруженными проектами.
Читать дальше →
Total votes 274: ↑253 and ↓21+232
Comments214

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity