В этом посте речь пойдет о тех ошибках, которые допускают дизайнеры в макетах, предназначенных для вёрстки. Рассмотрим наиболее часто встречающиеся проблемы, с которыми сталкивается верстальщик при работе с psd-макетами. Если Вы дизайнер, и Вам часто приходится передавать свой дизайн в руки коллег по цеху, то, возможно, этот пост поможет Вам лучше понять, какие неприятности испытывают верстальщики, и избежать некоторых ошибок в будущем, за что коллеги будут Вам очень благодарны.
Андрей Тюрин @DarkPreacher
User
Пишем парсер с помощью XPath и Yii
7 min
22KTutorial
Введение
Иногда бывают задачи когда нужно реализовать обертку для работы с API некоторого сервиса для нужд заказчика и сделать подобною задачу в основном довольно просто, но в сервиса не всегда есть этот API, либо возникает мысль что лучше бы его не было, поэтому приходиться парсить полностью страницу контента.
В качестве примера для данной статьи мы будем использовать выданное демо форума XenForo и заранее созданной темой, откуда будем парсить типичные данные: заголовок, время создания и сам текст темы, при этом парсинг будет осуществляться в авторизированном аккаунте форума. Все остальные данные можно будет взять по аналогии.
Сам парсер реализуем в виде компонента для удобного использования в Yii2.
+2
Смотрим Олимпиаду, используя IPTV
50 min
123KВ чем суть?
У меня нет обычного зомбо-телевидения — я не смотрю эфирные каналы уже лет 7, чему несказанно рад и вам советую. Для вечернего диванного времяпрепровождения после трудового дня дома имеется полный стек продуктов от яблочной компании — начиная с компьютера-лаптопа и заканчивая тв-приставкой (подключенной к обычному 34" телевизору по HDMI). Все это между собой прекрасно работает и дружит, а используя некоторые онлайн-сервисы я вообще могу смотреть любимые сериалы прямо из интернета и не качая торренты. Жилось-былось мне так вполне хорошо, но вот в России проводят Олимпиаду, а тут еще и тесть приехал — заядлый спортсмен. Хочется посмотреть Игры! И таким вот образом образовалась задача — обеспечить качественный показ спортивных передач (то есть не на экране мобильного телефона), которые идут на нескольких эфирных каналах и все это используя подручные средства. И чтобы не очень долго и сложно было реализовывать.
+80
Правильное использование Yii
18 min
115KВступление
На самом деле, в заголовке должен стоять знак вопроса. Довольно долго я не кодил как на yii, так и на php в целом. Сейчас, вернувшись, хочется переосмыслить свои принципы разработки, понять куда двигаться дальше. И лучший способ — изложить их и выложить на ревью профессионалам, что я и делаю в этом посте. Несмотря на то, что я преследую чисто корыстные цели, пост будет полезен многим новичкам, и даже не новичкам.
+53
Не дразните программиста
4 min
168KПодходит к концу очередная рабочая неделя. Не знаю, как у вас, а у меня эта неделя, что называется, — не задалась. Потрачена куча энергии и нервных клеток, и никакого движения вперед. Переносить стрессовое состояние на выходные мне очень не хочется, поэтому я решил взять короткую паузу и немного развеяться.
Вы устали? Хотите выпустить пар? Вам требуется передышка? Предлагаю вам присоединится ко мне, тем более, что на дворе пятница.
Вы устали? Хотите выпустить пар? Вам требуется передышка? Предлагаю вам присоединится ко мне, тем более, что на дворе пятница.
+364
Пример использования standalone actions в Yii2
7 min
39KTutorial
Recovery Mode
При разработке сайта неотъемлемую часть занимает получение коллекций данных. Выборка по определённым условиям, пагинация. Каждый раз писать реализацию в контроллерах весьма занудно. Когда как можно один раз сделать расширяемую реализацию часто используемого функционала.
В данной статье будет приведен пример как при использовании функционала Standalone actions фреймворка Yii2 красиво организовать единообразную архитектуру, которую можно использовать во всех частях приложения.
В данной статье будет приведен пример как при использовании функционала Standalone actions фреймворка Yii2 красиво организовать единообразную архитектуру, которую можно использовать во всех частях приложения.
+4
Как я заставил работать API в Yiinitializr Advanced
9 min
5.3KTutorial
В продолжение моего предыдущего поста о таком интересном инструменте как Yiinitializr, я решил ответить на вопрос о возможностях работы API, предоставляемых шаблоном Advanced. В рамках комментария или дополнительного пункта к прошлой статье материал уместить не удалось, поэтому всех, кого интересует данная тема, приглашаю под кат. В ней мы не будем касаться принципов проектирования правильной архитектуры API, а разберёмся как воспользоваться трудами ребят из 2amigos, которые дали нам возможность быстро (после прочтения статьи — точно быстро) развернуть API для наших проектов на Yii.
Способ реализации работы с API в Yiinitializr
API — программный интерфейс приложения, служащий для использования во внешних программных продуктах. Если мы хотим, чтобы возможностями нашего приложения могли воспользоваться другие разработчики в своих проектах, то без хорошо спроектированного API нам не обойтись. К сожалению, Yii первой версии не сможет помочь в этом деле. Вероятно, вам подойдет Yiinitializr, который решит часть вопросов, но, как мы знаем, отсутствие документации является серьезным препятствием.
Представим, что работа над нашим замечательным приложением закончена, работа API налажена, и уже появился первый разработчик, желающий воспользоваться возможностями нашей системы. По какому принципу будет строиться её использование?
+12
Создаем поведение (behavior) для Yii2
7 min
80KЧасто, а на самом деле практически всегда, при создании сайта необходимо, чтобы страницы сайта открывались не по id сущности в базе, а по текстовому идентификатору, назовем его slug.
(из url'а стоило бы убрать и view, но урок не о том)
Самым примитивным путем можно создать в таблице post поле slug, в модели Post соответственно появляется новый атрибут, в представление (view) добавляем новый input, в который ручками вбиваем slug.
post/view/1 => post/view/testovaya-novost
(из url'а стоило бы убрать и view, но урок не о том)
Самым примитивным путем можно создать в таблице post поле slug, в модели Post соответственно появляется новый атрибут, в представление (view) добавляем новый input, в который ручками вбиваем slug.
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/**
* @var yii\web\View $this
* @var common\models\Post $model
* @var yii\widgets\ActiveForm $form
*/
?>
<div class="post-form">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field( $model, 'name' )->textInput( [ 'maxlength' => 255 ] ) ?>
<?= $form->field( $model, 'slug' )->textInput( [ 'maxlength' => 255 ] ) ?>
<?= $form->field( $model, 'content' )->textarea( [ 'rows' => 6 ] ) ?>
<div class="form-group">
<?= Html::submitButton( $model->isNewRecord ? Yii::t( 'app', 'Create' ) : Yii::t( 'app', 'Update' ), [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ] ) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
+7
Большое руководство по Yiinitializr
14 min
17KTutorial
Ребята из Yii Software готовят бомбу. Пока я лишь наблюдаю за новой версией фреймворка из-за угла, но уже вижу улучшения во всём — от использования новых возможностей языка до удобного создания собственных структур для крупных проектов.
Однако в настоящее время дела обстоят таким образом, что поезд только встаёт на рельсы (не ищите аналогий, хотя они тут есть) и стабильную версию ещё придётся подождать, а новые проекты нужно делать уже сегодня. Для счастливой разработки не хватает совсем немного, а именно — удобной структуры приложения, развёртывания без лишних проблем, ну и разных плюшек по желанию. На данный момент наиболее приятным решением является Yiinitializr.
Yiinitializr — библиотека, помогающая упростить и ускорить цикл разработки приложения на основе фреймворка Yii. Из коробки доступны 3 варианта структурных шаблонов:
Почему стоит ознакомиться с этой статьёй? Отсутствие доходчивой документации вводит ещё неискушённых разработчиков в ступор (проверено на себе), а куча различных сюрпризов (например, в виде багов) замечательно дополняют это ощущение. Я попытался разобрать процесс работы с Yiinitializr до винтиков, чтобы уберечь вас от большинства неприятностей на пути его освоения.
На этом, я думаю, описательных слов достаточно. Если вы читаете эту статью, значит вы уже, скорее всего, знаете, что такое Yiinitializr, и хотите получить ответы на конкретные вопросы по его использованию. А если всё-таки ещё не знаете, то основную суть, я надеюсь, вы уловили, так что не бойтесь читать дальше.
Однако в настоящее время дела обстоят таким образом, что поезд только встаёт на рельсы (не ищите аналогий, хотя они тут есть) и стабильную версию ещё придётся подождать, а новые проекты нужно делать уже сегодня. Для счастливой разработки не хватает совсем немного, а именно — удобной структуры приложения, развёртывания без лишних проблем, ну и разных плюшек по желанию. На данный момент наиболее приятным решением является Yiinitializr.
Yiinitializr — библиотека, помогающая упростить и ускорить цикл разработки приложения на основе фреймворка Yii. Из коробки доступны 3 варианта структурных шаблонов:
- Basic — создан для проектов небольших масштабов;
- Intermediate — подойдёт для большинства проектов средней сложности;
- Advanced — будет хорошим выбором для более сложных проектов с необходимостью предоставления собственного API.
Почему стоит ознакомиться с этой статьёй? Отсутствие доходчивой документации вводит ещё неискушённых разработчиков в ступор (проверено на себе), а куча различных сюрпризов (например, в виде багов) замечательно дополняют это ощущение. Я попытался разобрать процесс работы с Yiinitializr до винтиков, чтобы уберечь вас от большинства неприятностей на пути его освоения.
На этом, я думаю, описательных слов достаточно. Если вы читаете эту статью, значит вы уже, скорее всего, знаете, что такое Yiinitializr, и хотите получить ответы на конкретные вопросы по его использованию. А если всё-таки ещё не знаете, то основную суть, я надеюсь, вы уловили, так что не бойтесь читать дальше.
+23
Резервное копирование веб-проектов на Яндекс.Диск без ООП и натурщиц
6 min
40KПозавчера хабраюзер vasiatka в посте №206752 поделился с хабрасообществом, а следовательно и со всем остальным миром, продуманным и весьма развитым классом для работы с Яндекс.Диском. Некоторое время назад я тоже стал использовать этот сервис для хранения там бэкапов. Хочу поделиться значительно более коротким вариантом скрипта на php, который делает архивы базы данных и файлов сайта, и заливает их по WebDAV. Возможно кому-то и он придётся по душе.
+42
Успех, решение проблем, труд и рутина — звенья одной цепи
4 min
28KЕсли вокруг одни дураки — значит, вы центральный.
Автор данной статьи предупреждает, что это лишь его личное мнение, и ничего большего. Возможно, что текст полон когнитивных искажений, вызовет когнитивную жопоболь. Поэтому настоятельно рекомендуется убрать от экранов людей со слабыми нервами, женщин и детей до 18 лет
Виконт де Бражелон
Вот эта чудесная статья сподвигла меня на то, чтобы взять перо в столь поздний час.
Я буду писать не об авторе той статьи, которого лично не знаю, а о тех, чье поведение обычно внешним образом повторяет отношение к жизни, изложенное в том материале.
Вспоминается театр, в котором я когда-то играл год и о чем с благодарностью вспоминаю. Руководитель театра за свои деньги организовывает кучу мероприятий, бесплатных для молодых артистов, обучает их и развивает. В обмен — лишь выступление на ведущих площадках, конкурсах. Некоторые из бывших в театре — сегодня звезды ТВ и эстрады.
Неоднократно при мне приходили люди, которых руководитель долго и упорно учил. А затем уходили после неадекватных проявлений в поведении, и всегда поливали калом театр впоследствии. Никто из них, что примечательно, не добился серьезного успеха за последующие годы.
И я не так давно для себя уяснил, почему так происходит. В обществе у нас не принято, например, показывать страх и слабость — поэтому руководитель не признается публично в страхе срыва проекта или слабости навыков менеджмента. Вместо этого демонстрирует принятую в обществе агрессию — орет на подчиненных, закатывает истерики, переходит на личности и так далее.
Так и у нас в России не принято брать на себя ответственность за свою жизнь. А вот обвинять кого угодно — это приветствуется в любом коллективе. Поэтому признать себя виновным в факапе — это участь немногих, а вот публично поливать критикой окружающих и самому в нее поверить в итоге — идет на ура.
Также не принято работать, за исключением IT и ряда других сфер — а вот говорить о работе любит каждый
+29
Закончен новый модуль базы данных для PHPixie
3 min
7.1KTranslation
Сегодня я написал последний тест для версии 3.0 модуля доступа к БД для PHPixie. Когда я начал казалось что это займет всего несколько недель, но на самом деле все растянулось на где-то 2 месяца из-за огромного количества рефакторинга и переписывания сначала. Зато теперь мы имеем расширяемую библиотеку, которую можно использовать даже вне самого фреймворка (то есть если вас заставят писать на каком-то другом фреймворке или CMS вы сможете захватить свою любимую библиотеку с собой).
Я сделаю релиз после того как закончу модуль ORM и поправлю существующие модули для работы с новым API. Но если вам интересно вы можете заглянуть в ветку 3.0 на гитхабе (следует однако предупредить что документации там пока нет, она появится вместе с ORM). А теперь давайте посмотрим на новые возможности.
+8
HTML Purifier. Расширяем возможности
8 min
37KБуквально пару абзацев я уделю внимание особенностям взаимодействия этой библиотеки с фреймворком Yii, остальное же в полной мере универсально и будет интересно всем, кто использует или планирует использовать эту библиотеку.
Если вы уже хорошо знакомы с Purifier, то можете смело начинать читать отсюда
Немного о HTML Purifier
Если вы не слышали о такой прекрасной библиотеке (а поиск на Хабре говорит о не такой уж большой популярности) как HTML Purifier, то советую обязательно к ней присмотреться, особенно если ваши пользователи генерируют контент в html формате. Это может быть рядовой пользователь, модератор или даже администратор.
Что же делает эта библиотека?
Согласно конфигурации она очищает любой html код от всех вредоносных, невалидных, запрещенных (вашей конфигурацией) частей кода, в том числе отдельные атрибуты.
+24
Изменение коммитов в Git
2 min
290KЭто пост для тех, кто начинает работу с Git. Все, что здесь написано по частям можно найти в многочисленных простынях о Git на Хабре. Но я подумал, что неплохо было бы иметь отдельный предельно понятный топик, который бы гуглился по запросу «git изменение коммитов».
+66
Разработка директив angularjs — это просто
7 min
91KTutorial
Translation
AngularJS директивы – это клево
AngularJS является каркасом (фреймворком) для построения web приложений, который позволяет создавать сложные приложения достаточно просто. Одна из его лучших возможностей, это создание директив, которые являются повторно используемыми web компонентами. Это дает возможность создавать новые HTML теги и атрибуты, которые могут динамично отображать контент в ответ на изменение данных, и обновлять сами данные, в случае необходимости.
Это очень высокопроизводительный подход, поскольку он позволяет вам оборачивать сложное взаимодействие с DOM в повторно используемые пакеты кода.
+33
Слово в защиту пиксельных значений media queries
8 min
36KЧитая публикации о верстке для вэба, вы не раз натыкались на рекомендацию не использовать пикселы в media queries. Например, вот цитата из совсем недавней статьи на Хабре:
Вместо использования фиксированных размеров, лучше использовать относительные единицы для определения breakpoints. На хабре уже многократно была раскрыта тема использования относительных размеров в верстке. Вот неполный список статей: здесь, здесь, здесь. Приведу лишь самый главный довод — это позволит браузерам изменять дизайн в зависимости от уровня установленного размера зума пользователем, в результате чего пользователь увидит более приятный, более доступный для просмотра сайт.
Что, если я скажу вам, что использование пикселов в media queries не только не причиняет никакого вреда верстке, но и имеет преимущества над использованием em'ов?
Вместо использования фиксированных размеров, лучше использовать относительные единицы для определения breakpoints. На хабре уже многократно была раскрыта тема использования относительных размеров в верстке. Вот неполный список статей: здесь, здесь, здесь. Приведу лишь самый главный довод — это позволит браузерам изменять дизайн в зависимости от уровня установленного размера зума пользователем, в результате чего пользователь увидит более приятный, более доступный для просмотра сайт.
Что, если я скажу вам, что использование пикселов в media queries не только не причиняет никакого вреда верстке, но и имеет преимущества над использованием em'ов?
+110
Удаленная работа — это не «фриланс»
5 min
137KСегодня на глаза попался старый вопрос "Почему работодатель предпочитает нанимать веб-разработчика в офис?": habrahabr.ru/qa/22292. Вопрос был задан еще в 2012 году, но, на мой взгляд, ситуация с тех пор не сильно изменилась.
Коллеги, тут есть серьезное недопонимание, которое давно пора устранить.
Многие, как мне кажется, представляют себе фрилансера примерно так:
- Приходит на какую-то отдельную небольшую задачу, выполняет ее и уходит.
- Работает над несколькими мелкими проектами одновременно. Либо имеет постоянную работу, а фрилансером просто подрабатывает в оставшееся время.
- Его не беспокоит проект в целом. Только то, за что он отвечает.
- Огораживает себя техническими заданиями. И из-за каждой новой плюшки может возникнуть конфликт.
- Работает когда хочет. С ним сложно связаться.
+248
Laravel. Установка, настройка, создание и деплой приложения
55 min
184KTutorial
Итак, у вас есть желание попробовать или узнать о фреймворке Laravel.
Если вы хорошо знакомы с другими
Статья очень большая. Рекомендую читать ее полностью во время выходных.
Для ленивых:
GitHub
Приложение
Если вы хорошо знакомы с другими
PHP
фреймворками — для вас это не составит особого труда, если же нет — это отличный выбор для первого фреймворка.Статья очень большая. Рекомендую читать ее полностью во время выходных.
Для ленивых:
GitHub
Приложение
+29
AngularJS: еще одна таблица с сортировкой, фильтрацией и постраничной навигацией
5 min
42KRecovery Mode
Что это?
Это очередное AngularJS приложение, которое добавляет в обычную таблицу возможности сортировки, фильтрации, разбиения на страницы и пр.
Разумеется, существует несколько готовых решений (1, 2, 3, 4, 5), но они не подходили по ряду причин. В итоге, было решено создать свой вариант, тем более, что я не имею большого работы с AngularJS, а изучать этот фреймворк и его потрясающие возможности лучше на практике.
+7
Собранные требования к psd-макету веб-сайта
3 min
69KПривет, фрондэнд разработчики!
При верстке сайта с psd-макета, мы постоянно сталкиваемся с проблемой реализации некоторых элементов, которые нарисовал дизайнер. Будь то кнопка, или какой-то хитрый градиент. Нам приходится либо изворачиваться, тратя на это свое рабочее время или просить дизайнера переделать или в крайнем случае забить и сделать более-менее что-то похожее.
Если наш заказчик жутко внимательный, то часто принимая последнее решение, у нас возникают проблемы несоответствия того, что сверстано в итоге, с тем, что нарисовал дизайнер. Все эти факторы накладывают на нас — разработчиков темное пятно, в то время как дизайнер получил свою премию и уже пьет коктели, в нас кидают помидорами и обвиняют в некомпетентности, хотя проблема далеко не в нас, а в том, что дизайнер иногда не знаком даже с основами верстки и не знает, что некоторые вещи рисовать нельзя.
Немного набрал в весе мозга и статуса в компании, в какой-то момент я понял, что так дальше продолжаться не может и начал собирать свои требования в psd макетам.
При верстке сайта с psd-макета, мы постоянно сталкиваемся с проблемой реализации некоторых элементов, которые нарисовал дизайнер. Будь то кнопка, или какой-то хитрый градиент. Нам приходится либо изворачиваться, тратя на это свое рабочее время или просить дизайнера переделать или в крайнем случае забить и сделать более-менее что-то похожее.
Если наш заказчик жутко внимательный, то часто принимая последнее решение, у нас возникают проблемы несоответствия того, что сверстано в итоге, с тем, что нарисовал дизайнер. Все эти факторы накладывают на нас — разработчиков темное пятно, в то время как дизайнер получил свою премию и уже пьет коктели, в нас кидают помидорами и обвиняют в некомпетентности, хотя проблема далеко не в нас, а в том, что дизайнер иногда не знаком даже с основами верстки и не знает, что некоторые вещи рисовать нельзя.
Немного набрал в весе мозга и статуса в компании, в какой-то момент я понял, что так дальше продолжаться не может и начал собирать свои требования в psd макетам.
+31
Information
- Rating
- Does not participate
- Location
- Тула, Тульская обл., Россия
- Registered
- Activity