Pull to refresh
0
Karma
0
Rating
Александр @san4ez

PHP developer

Symfony2 Voters и Doctrine Filters на страже безопасности

Information Security *Website development *PHP *Symfony *Doctrine ORM *
Все началось, когда я настраивал систему безопасности одной CRM. Как это часто бывает, в ней были пользователи с разными уровнями доступа к основным данным (назовем их entities). Вид основного грида у них был одинаковый, необходима была гибкость настроек доступа к entities. Сперва я подумал об ACL, но…
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views 14K
Comments 9

Верстка email рассылок от А до Я для чайников

Website development *HTML *Email layout *
Sandbox
Уже 3 с лишним года занимаюсь дизайном и версткой почтовых рассылок, которые ориентированы на англоязычных пользователей. За время работы перелопатили огромную кучу информации, перепробовали много вариантов верстки, набили достаточное количество шишек. Были найдены и исправлены типичные баги, которые в той или иной мере повторялись во всех почтовых клиентах. Также нашлись проблемы с некоторыми CSS свойствами — различные почтовые клиенты интерпретировали их по разному. Каждое письмо тестировалось на самых популярных почтовых клиентах: Gmail, Outlook, Yahoo, Android, iOS, MozillaThunderbird, Microsoft Outlook, The Bat. Рассылки ходят на сотни миллионов пользователей и приносят очень хорошие результаты. Итак, приступим к изучению.
Читать дальше →
Total votes 66: ↑62 and ↓4 +58
Views 363K
Comments 35

Несколько интересностей и полезностей для веб-разработчика #32

Website development *JavaScript *
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

ICEcoder



Это не просто песочница, а полноценный open source редактор в вашем браузере. Вообще существуют десктопные версии, но по-моему, наибольшие внимание разработчики уделают веб-версии. ICEcoder поддерживает HTML, CSS, LESS, SASS, JS, Coffee, PHP, RonR, Python, C/C++/C#, Java, Lua, Rust, SQL, Markdown, всего более 60 языков! Фичи: возможность совместной работы с кодом, Emmet, LiveReload, работа с БД, колопикер, diff tool, линтеры и еще целое множество удачных интерфейсных решений. Повторюсь — это все в вашем браузере!

Читать дальше →
Total votes 61: ↑53 and ↓8 +45
Views 51K
Comments 9

Постраничная верстка rel=«next|prev»

IT-companies
Translation
Наряду с использование атрибута rel=«canonical» для указания поисковому боту на дублирование контента, теперь возможно использовать для HTML ссылок значение rel=“next” и rel=“prev” для обозначения положения текущей страницы в отношении соседних в рамках навигационного блока. В рамках веба встречаются различные варианты использования постраничной навигации — статья, разделенная на несколько страниц, либо категория товаров распределенных по нескольким страницам, либо ветка форума, разделенная на последовательность URL-ов. Теперь, включив rel=“next” и rel=“prev” в верстку страниц, мы можем указать Google:
  • Создать консолидированный индекс страниц, чтобы ссылки не рассеивались между отдельными страницами page-1.html, page-2.html, и так далее
  • При поиске направить пользователя на наиболее релевантную страницу среди всех остальных, например в начало статьи, разбитой на несколько страниц
Подробности и нюансы использования
Total votes 80: ↑77 and ↓3 +74
Views 13K
Comments 25

Кастомные социальные кнопки

Social networks and communities
Sandbox
Недавно участвовал в разработке одного проекта — фото конкурса. По задумке, рейтинг фото альбомов должен формироваться из суммы всех публикаций в социальных сетях: Facebook, Вконтакте, Twitter. Т.е. общий рейтинг фотоальбома расчитывается:
Рейтинг фотоальбома = кол-во «Share» в Facebook + кол-во «Сохранить» в Вконтакте + кол-во «Retweet» в Twitter

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

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

Итак:
  • количество лайков будем получать от REST сервисов каждой социалки
  • кнопки рисуем свои и обрабатываем событие click

Читать дальше →
Total votes 99: ↑94 and ↓5 +89
Views 44K
Comments 58

Treelogic Mini 4Gb, обзор плеера

Computer hardware
Всем привет.
В качестве вступления: время моих ежедневных поездок на работу и с работы в среднем составляет 2,5 часа не считая пеших переходов между видами транспорта. Тут-то и возник вопрос — на чём слушать музыку?! Первое время выручил телефон, но поскольку я немного рассеян и постоянно забываю его зарядить, есть риск остаться без связи. Я сформулировал свои требования к плееру и пошел выбирать. Итак, знакомьтесь, Treelogic Mini 4Gb.
Внутри — фото, описание и опыт использования. (трафик)
image

Читать дальше →
Total votes 40: ↑29 and ↓11 +18
Views 1.4K
Comments 113

Алхимия. Привет из прошлого

Games and game consoles

О чём речь ?


Alchemy — игра для DOS-а, цель которой создать новую цивилизацию.
Мир в котором всё можно построить из воды, земли, воздуха и огня.



Игра развивает память и тренирует мышление.
Она по своей сути гениальная, я подсел на неё очень крепко и уже второй вечер трачу на её прохождение :)
Скрины, хинты и ссылки внутри
Total votes 82: ↑77 and ↓5 +72
Views 1.2K
Comments 82

Одновременное использование нескольких операционых систем при помощи colinux, Virtual PC и утилиты Desktops

Lumber room

Преамбула:


Последнее время, мне приходится писать немного кода, и есть необходимость тестировать результаты его работы под разными платформами. Естественно я использую виртуальные машины.
Так как, кроме меня, моим ноутбуком пользуется еще и жена то основная ОС на нем winxp. Мне в принципе все равно с чем работать поэтому пусть будет windows…

Раньше, когда у меня в качестве оконного менеджера использовался IceWM, мне нравилось то что я могу использовать несколько «рабочих столов», для запуска различных тематических приложений в отдельно отведенном для них месте. Под windows такая возможность тоже есть, но те утилиты которые я пробовал, имели те или иные недостатки, поэтому рано или поздно мне приходилось от них отказываться… В конце концов я остановился на Desktops (от sysinternals) она тоже не лишена недостатков, но стабильность ее работы и небольшой размер перевесили все «минусы».

Цель:


Чего мы пытаемся добиться:
  • запустить на каждом из «рабочих столов» по отдельной операционной системе
  • сделать переключение между ними максимально удобным и быстрым


Читать дальше →
Total votes 47: ↑42 and ↓5 +37
Views 2.1K
Comments 40

«Прибитый» к низу футер без заморочек

Lumber room
Доброго времени суток, Хабраюзеры.
Ввиду непонятного назначения сего топика — CSS Sticky Footer / Прилипающий футер и того, что моя не является зарегистрированным юзером Хабрахабра, предлагаю свой вариант.

Вариант стар и испробован сотнями проектов, но для начала опишу минус вышеупомянутого способа:
— если Вам нужен попап или много попапов (в неаяксовых вариантах) внутри #main, то разделив #main и #footer глобальным z-index-ированием (для ИЕ6) Ваши попапы будут залезать под Ваш футер, т.к. хотя бы для ФФ, но z-index у #footer надо будет указывать больше, чем у #main.

И так, метод:

<div class="page">

<div class="header">
</div>

<div class="content">
</div>

<div class="footer">
</div>

</div>

Также прилагается стилевая часть шаблона:

.page { width: 100%; min-width: 996px; min-height: 100%; position: relative; z-index: 1; }
.header { width: 100%; height: 150px; position: relative; z-index: 3; }
.content { width: 100%; padding-bottom: 50px; position: relative; z-index: 2; }
.footer { width: 100%; height: 50px; left: 0; right: 0; bottom: 0; position: absolute; z-index: 4; }

Для ИЕ6 думаю стили всем известны, но всё же опишу то, что использую лично я, то, что испытанное несколькими сотнями проектов и то, что ни разу не подвело даже в самых непростых дизайнах:

* html .page { height: 100%; width: expression((document.compatMode && document.compatMode == 'CSS1Compat') ? (document.documentElement.clientWidth < 996 ? "996px" : "auto") : (document.body.clientWidth < 996 ? "996px" : "auto")); }

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

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

Плюсы:
  • один expression для ИЕ6 на ширину
  • нет лишних, ненужных блоков

Минусы:
  • фиксированная высота


P.S. Не ругайте за форматирование, я обязательно сделаю во втором посте всё красиво.

UPD: Пример

Сейчас писать отдельный пример нет времени. Просто сегодня только прислали приглашение.
Total votes 25: ↑16 and ↓9 +7
Views 1.2K
Comments 58

повторяющееся изображение

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

(если можно то как именно это делается в гимпе или фотошопе...)
Total votes 12: ↑6 and ↓6 0
Views 649
Comments 7

Ускорение загрузки Windows for fun and profit

Development for Windows *
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Total votes 532: ↑516 and ↓16 +500
Views 448K
Comments 364

Принудительное перемещение и/или установка приложений на карту памяти без Root'a

Development for Android *
Sandbox
Данный топик посвящен пользователям ОС Android а в частности решению насущной проблемы с нехваткой внутренней памяти устройства.
А самое главное что действия описанные в статье не требуют получения Root прав, что является отпугивающим фактором для большинства рядовых пользователей, так как рутованный Андроид лишается гарантии и получения официальных обновлений. Всех кто заинтригован прошу под кат.
Читать дальше →
Total votes 39: ↑31 and ↓8 +23
Views 281K
Comments 43

Формы в Angularjs. Как я обрел любовь

Website development *JavaScript *Angular *
Recovery mode
Tutorial
Мне предстояло в очередной раз сделать это. Казалось бы ничего ужасного, я делал это сотни раз. Но чувство… чувство, что все это неправильно, так не должно быть и должен быть другой выход, не покидало меня. Тогда я еще не знал, что в скором времени мне предстоит встреча, которая навсегда изменит мой мир, откроет глаза и наполнит жизнь смыслом. Смыслом вставать каждое утро, смыслом делать то, что практически перестало доставлять мне удовольствие, смыслом делиться этим чувством с другими.
Читать дальше →
Total votes 101: ↑69 and ↓32 +37
Views 86K
Comments 28

Директивы в Angularjs для начинающих. Часть 1

Website development *JavaScript *Angular *
Tutorial
На мой взгляд, директивы являются основной изюминкой декларативного стиля Angularjs. Однако, если открыть комментарии пользователей в разделе официальной документации Angularjs, посвященной директивам, то вы увидите, что самый популярный из них: «Пожалуйста, перепишите документацию, сделайте ее более доступной и структурированной. Начинающему разработчику на Angularjs сложно в ней разобраться» («Please rewrite a clearer well structured documentation of directives., this is not friendly to first time angular developers»). С этим трудно не согласится, документация пока еще сыровата и в некоторых моментах приходится прилагать большие усилия, чтобы разобраться в логике и сути функционала. Поэтому я предлагаю вам свой вольный пересказ данной главы в надежде, что кому-то это позволит сэкономить время, а так же рассчитываю на вашу поддержку и участие в комментариях. Итак, поехали!
Читать дальше →
Total votes 47: ↑44 and ↓3 +41
Views 196K
Comments 45

Установка Atom от GitHub на Ubuntu, OpenSUSE и Windows. Краткий обзор

Website development *Programming *
Tutorial
image

Вчера вышла сборка редактора Atom от GitHub для Windows, до этого был доступен только для Mac OS.
А установка для *nix систем описана в официальном репозитории проекта.
Здесь я расскажу как мы его устанавливали для следующих ОС, в порядке убывания сложности:
  • Windows 7
  • Ubuntu 14.04
  • OpenSUSE 13.1

А так же первые впечатления от его использования.
Сразу оговорюсь, для Windows и Ubuntu установка — это пара шагов. Для OpenSUSE, чуть больше.
Внимание трафик — картинки.
Подробности
Total votes 128: ↑111 and ↓17 +94
Views 97K
Comments 33

Приводим в порядок css-код. Опыт Яндекса

Яндекс corporate blog Website development *CSS *
Всем привет!

Я работаю над фронтендом огромного проекта — поисковой выдачи Яндекса. И у нас, как и у любого другого большого веб-проекта, есть огромное количество css-кода и немаленькая команда, которая с ним взаимодействует.

Когда много людей, используя разные инструменты, пишут и редактируют css, со временем этот css может получиться очень запутанным, неконсистентым и в целом начинает выглядеть плохо. Например, кому-то удобнее писать вендорные префиксы в одном порядке, кому-то — в другом, кто-то ставит кавычки вокруг url, кто-то — нет, а кто-нибудь фикся срочную багу к релизу мог бы, к примеру, написать position: relative в начале блока свойств, незаметив что где-нибудь внизу между color и box-shadow, уже есть position: absolute, и долго гадать, почему у него ничего не работает.



Но несмотря на то, что все пишут код по-разному, у нас в репозитории идеальный порядок: css-код полностью консистентен, и прекрасно выглядит. Весь.

Как мы этого добились, можно прочитать под катом.
Читать дальше →
Total votes 174: ↑169 and ↓5 +164
Views 88K
Comments 70

Подборка полезных CSS рецептов, или чем мы занимаемся на голых пятницах

Lesta Studio corporate blog CSS *HTML *
Tutorial


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

Итак, представляем вашему вниманию сборку интересных и (надеемся) малоизвестных HTML и CSS-рецептов. Будем рады, если каждый из вас узнает что-то новое!
Вперед!
Total votes 143: ↑122 and ↓21 +101
Views 92K
Comments 75

Правильная адаптивная типографика с FlowType.JS

Web design *Typography *
image


Согласно правилам типографики, контент страницы хорошо читается, если в строке от 45 до 75 символов. При разработке адаптивного дизайна это сложно реализовать только лишь с помощью Media Queries. Появился jQuery плагин FlowType, который помогает добиться такого соотношения при любом размере экрана и ширине окна.

FlowType меняет размер шрифта и междустрочный интервал в соответствии с шириной блока контента. Кроме того можно задавать параметры плагина, например максимальную и минимальную ширину окна, при которой FlowType будет работать.
Читать дальше →
Total votes 34: ↑27 and ↓7 +20
Views 15K
Comments 7

Генераторы в действии

PHP *
Sandbox
Tutorial

Небольшое вступление


Не так давно я решил для себя, что пора восполнить большой пробел в знаниях и решил прочитать про переходы между версиями PHP, т.к. понимал, что остался где-то между 5.2 и 5.3 и этот пробел необходимо как-то устранить. До этого я читал про namespaces, traits и т.д, но дальше чтения не уходило. И вот тут я заметил генераторы, почитал документацию, одну из статей на хабре на этот счет и после этого возникла мысль — а как раньше без них жили-то?

Данным переводом хочу помочь хотя бы новичкам, поскольку на php.net документация по генераторам на английском и, на мой взгляд, должным образом не раскрывает всю идею и места применения. Текста много, кода чуть меньше, картинок нет. Потребуются общие знания, например, про итераторы. Очевидный код комментировать не буду, а вот сложные для понимания примеры постараюсь объяснить в силу своих знаний.

UPD1: Изменил расплывчатую формулировку, про которую говорили в комментариях.
UPD2: Добавил решение с принудительным break.

И сразу под хабракат
Total votes 59: ↑55 and ↓4 +51
Views 89K
Comments 25

Information

Rating
Does not participate
Location
Сумы, Сумская обл., Украина
Date of birth
Registered
Activity