Search
Write a publication
Pull to refresh
74
0
Виталий Чужа @hDrummer

Пользователь

Send message

Как сверстать веб-страницу. Часть 1

Reading time13 min
Views1.3M
Уважаемый читатель, этой статьей я открываю цикл статей, посвященных вёрстке.
В первой части будет описано, как это сделать с помощью стандартных средств на чистом HTML и CSS. В последующих частях рассмотрим как сделать тоже самое, но с помощью современных фреймворков и CMS.

Часть 1. Верстка стандартными средствами


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

Итак, давайте приступим. В качестве нашего подопытного мы возьмем бесплатный psd шаблон Corporate Blue от студии Pcklaboratory.
Читать дальше →

Асинхронность: назад в будущее

Reading time22 min
Views114K

Асинхронность… Услышав это слово, у программистов начинают блестеть глаза, дыхание становится поверхностным, руки начинают трястись, голос — заикаться, мозг начинает рисовать многочисленные уровни абстракции… У менеджеров округляются глаза, звуки становятся нечленораздельными, руки сжимаются в кулаки, а голос переходит на обертона… Единственное, что их объединяет — это учащенный пульс. Только причины этого различны: программисты рвутся в бой, а менеджеры пытаются заглянуть в хрустальный шар и осознать риски, начинают судорожно придумывать причины увеличения сроков в разы… И уже потом, когда большая часть кода написана, программисты начинают осознавать и познавать всю горечь асинхронности, проводя бесконечные ночи в дебаггере, отчаянно пытаясь понять, что же все-таки происходит…

Именно такую картину рисует мое воспаленное воображение при слове “асинхронность”. Конечно, все это слишком эмоционально и не всегда правда. Ведь так?.. Возможны варианты. Некоторые скажут, что “при правильном подходе все будет работать хорошо”. Однако это можно сказать всегда и везде при всяком удобном и не удобном случае. Но лучше от этого не становится, баги не исправляются, а бессонница не проходит.

Так что же такое асинхронность? Почему она так привлекательна? А главное: что с ней не так?
Назад в будущее...

Mooha — нодовый интерфейс для PHP

Reading time11 min
Views27K


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

Идея графического управления логикой программы мне всегда казалась очень элегантным, а в некоторых случаях, единственным удачным решением. Позже, когда помимо музыки и видео я увлекся программированием (в основном PHP, так уж сложилось), мне захотелось попробовать, пусть даже в качестве эксперимента, создать графическую оболочку для выполнения тех нехитрых задач, с которыми я сталкивался в своей работе.
Читать дальше →

Новый сертификат ZCPE от Zend на основе PHP 5.5

Reading time3 min
Views21K
image


3 октября 2013 года компания Zend объявила в своём блоге о доступности новой программы для сертификации девелоперов, основанную на языке PHP версии 5.5. На днях я успешно прошёл тестирование и стал третьим человеком в Украине, кто получил этот сертификат. Внутри я постараюсь рассказать подробнее о самом процессе тестирования и о подготовке к экзамену.
Читать дальше →

Управленческие инструменты: Как играть в нелинейные шахматы

Reading time7 min
Views68K
Менеджмент, на мой взгляд, сильно похож на шахматы. Ты изучаешь методологии, ходишь на тренинги (то есть, изучаешь дебюты, принципы миттельшпиля и эндшпиля), готовишься, рисуешь план и… начинаешь игру!

Разворачиваешь свои войска: пешки двинулись вперед, кони подтягиваются, слоны занимают диагонали. И тут к тебе подходит ферзь (тим лид) и говорит “Знаешь, старик, я, наверное, буду увольняться… Чего-то совсем меня все достало.” И через две недели сходит с доски.

Нападает небольшая растерянность: а че делать? В дебютах не писали про внезапное увольнение ферзей…

Идем к начальству. Там нас ждет знакомая песня: “Сейчас бюджета нет, ты давай там как-то коней помотивируй…“ А ты понимаешь, что мотивированный конь — это не совсем ферзь. Он продолжает действовать как конь, только у него глаза начинают гореть.

Или: “Мы тебе можем нанять три пешки, ты их там поментори и через шесть ходов они вполне могут стать ферзями.” А ты понимаешь, что через 6 ходов тебя уже закопают вместе с проектом.

Нелинейные шахматы. Причем со всей этой бандой ты как менеджер должен выдавать какие-то ожидаемые результаты…

К сожалению (и к счастью) у людей появляется интерес и пропадает интерес, рождаются дети, случаются разводы — и это все неминуемо сказывается на мотивации человека, и как следствие, его производительности.

Можем ли мы как менеджеры повлиять на нелинейность человека, про которую так много писал Алистер Коберн в своей программной статье [1]? На что-то можем, на что-то нет. Но мы абсолютно точно можем отслеживать состояние человека, используя ряд инструментов. Об одном из них сегодня и поговорим.

Вы сможете использовать этот инструмент как для оценки собственной мотивации, так и для оценки состояния своих сотрудников (а это вещи связанные, об этом мы тоже поговорим). Итак, поехали!

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

Как я завалил собеседование в Twitter

Reading time4 min
Views177K
image


До 28 октября я должен был принять решение, буду ли я работать в Amazon по окончанию стажировки. Оставалось совсем немного времени, но мой друг Дэниел убедил меня, что если я попробую попасть в Twitter, то как раз успею пройти все интервью. Я не смог устоять.

Сначала меня попросили решить пару вопросов с Codility, дав на все про все час времени. Вопросы попались средней интересности («является ли слово анаграммой палиндрома» и «посчитать количество седловых точек в двумерном массиве»). Я был не слишком уверен в получившихся решениях, но вскоре Джуди прислала мне письмо с приглашением на телефонное интервью в среду в 17:30.
Читать дальше →

Избранное: ссылки по IT безопасности

Reading time3 min
Views110K




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




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

Как обрабатывать Fatal Error в PHP

Reading time4 min
Views20K
В одном из наших проектов (социальная генеалогическая сеть), о котором я писал в данном топике, мы используем очередь отложенных событий, реализованную на мемкеше. Ее архитектура такова: приложение записывает в эту очередь различные события и данные, относящиеся к ним (тип события, входящие параметры, и функция обработчик этого события). После чего менеджер(-ы) очереди разбирают эту очередь и выполняют отложенные события. В частности такая очередь используется для сбора статистики, но также и для других более критичных к выполнению задач.
Поэтому очень важно обеспечить high availability для менеджера(-ов) очереди.

Но т.к. ф-ия обработчик очереди к нам приходит из вне, то за качество этого обработчика события мы не отвечаем, т.е. если обработчик вдруг выбросит ошибку, то нам ее нужно обработать и продолжить работу менеджера очереди. Но иногда случается, что обработчики выбрасывают фатальные ошибки (Fatal Error), и это может стать проблемой…

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

Active Record против Data Mapper-а для сохранения данных

Reading time4 min
Views84K
Эти 2 шаблона проектирования описаны в книге Мартина Фаулера «Шаблоны корпоративных приложений» и представляют собой способы работы с сохранением данных в объектно-ориентированном программировании.

Пример шаблона Active Record


class Foo
{
    protected $db;
    public $id;
    public $bar;
     
    public function __construct(PDO $db)
    {
        $this->db = $db;
    }
 
    public function do_something()
    {
        $this->bar .= uniqid();
    }
 
    public function save()
    {
        if ($this->id) {
            $sql = "UPDATE foo SET bar = :bar WHERE id = :id";
            $statement = $this->db->prepare($sql);
            $statement->bindParam("bar", $this->bar);
            $statement->bindParam("id", $this->id);
            $statement->execute();
        }
        else {
            $sql = "INSERT INTO foo (bar) VALUES (:bar)";
            $statement = $this->db->prepare($sql);
            $statement->bindParam("bar", $this->bar);
            $statement->execute();
            $this->id = $this->db->lastInsertId();
        }
    }
}
 
//Insert
$foo = new Foo($db);
$foo->bar = 'baz';
$foo->save();

В этом упрощенном примере, дескриптор базы данных вводится в конструкторе Foo (Использование инъекции зависимостей здесь позволяет тестировать объект без использования реальной базы данных), и Foo использует его, чтобы сохранять свои данные. Do_something — просто метод-заглушка, заменяющий бизнес логику.
Читать дальше →

Производительный сетевой сервер на PHP

Reading time9 min
Views29K
Вы пробовали заказать в Макдональдсе жаренного на орудийном шомполе поросенка с домашним вином и, на десерт, девушку рядом с вами за столиком, для приятной беседы во время трапезы? Даже не думали об этом?? Вот-вот — статья как раз об этом, о стереотипах программиста и лени, двигающей прогресс. А если серьезно — в статье мы напишем очень полезный многим высокопроизводительный сетевой сервер на PHP за пару часов. Я совершенно серьезно :-)

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

PHP RUtils — небольшая библиотека для обработки русского текста

Reading time5 min
Views20K
В работе на языке Python я частенько использую библиотеку Pytils для работы с русским текстом, и мне очень не хватало этой библиотеки при работе на PHP. Возможно, я искал плохо, но все, что я находил, не предоставляло подобных возможностей либо не слишком отвечало моим понятиям о чистом коде.

И вот, однажды я решил портировать библиотеку на PHP, и теперь хочу поделиться ею с народом и очень надеюсь на помощь в ее улучшении: буду рад советам, баг-репортам и особенно pull-реквестам. Библиотека находится на GitHub'е: github.com/Andre-487/php_rutils

UPD от 26.10.2013: теперь библиотека так же доступна через Composer: packagist.org/packages/andre_487/php_rutils
Так же хочу сказать спасибо всем, кто помог улучшить библиотеку и довести ее до стабильного релиза.

Возможности библиотеки


PHP RUtils — порт Pytils на PHP. Это утилиты для работы с русским текстом. Утилиты разделены на следующие модули (классы):

  • Numeral — работа с числами: склонение существительных в зависимости от количества, числа прописью, суммы денег в рублях и копейках прописью.
  • Dt — работа с датами: расширение формата дат PHP русскими именами месяцев, дней недели; временные периоды (например, 24 976 дней назад).
  • Translit — транслитерация, подготовка строк для использования в URL'ях, именах файлов.
  • Typo — небольшой набор правил типографики простого текста.

Примеры кода и подробности

Как я не взломал «Хабрахабр» или 10+ активных XSS

Reading time4 min
Views61K
image
Увидев как все ринулись искать XSS на прекрасно-синем Хабрахабре решил попытать свое счастье. POST-овые self-xss, бесполезные во многих контекстах и векторах, начиная с фильтрации в самых популярных браузеров (chrome/safari/ie etc) и заканчивая сложностью их же применения и эксплуатации было решено оставить остальным первопроходцам и отправиться на поиски чего-то более стоящего.
Читать дальше →

Принципы ИТ-профессионала

Reading time8 min
Views177K
Более 10 лет занимаясь ядрёной смесью из математики, программирования и управления проектами – всем тем, что входит в современное понимание Информационных Технологий — я сформулировал простые правила, которые считаю подходящими для любого профессионала, связанного с ИТ.

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

Node.js и новый фронтенд в вебе

Reading time5 min
Views46K
(Дата оригинала — 7.10.2013. У оригинала — очень оживлённая дискуссия в комментариях)

Фронтенд-разработчики имеют довольно долгую и сложную историю в программировании. Долгое время отправляемое в браузер было так легко отобразить, что не было настоящей потребности в этой специализации. Многие считали, что они были просто графическими дизайнерами с немного другими выразительными средствами. Мысль о том, что они могли в один прекрасный день специализироваться в веб-технологиях, HTML, CSS, Javascript — была смехотворной; в лучшем случае — пользовательский интерфейс их удел или, в конце концов, кто-то мог специализироваться на том и другом и иметь эту работу.
Читать дальше →

Laravel. Установка, настройка, создание и деплой приложения

Reading time55 min
Views189K
Итак, у вас есть желание попробовать или узнать о фреймворке Laravel.

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

Laravel - PHP framework for artisans!

Статья очень большая. Рекомендую читать ее полностью во время выходных.

Для ленивых:
GitHub
Приложение

Начнем!

Очередная программная закладка в роутерах D-Link

Reading time2 min
Views132K
image

На информационном портале devttys0.com некто Craig Heffner – опытный специалист в области реверс-инжиниринга – выложил статью-исследование очередной (уже находили) программной закладки в роутерах D-Link. На этот раз закладка была выявлена в официальной прошивке для DIR-100 revA, но, по его мнению, присутствует в роутерах других серий:

  • DIR-100
  • DI-524
  • DI-524UP
  • DI-604S
  • DI-604UP
  • DI-604+
  • TM-G5240
  • Planex BRL-04UR
  • Planex BRL-04CW

Коротко говоря, если у вашего браузера установлен User-Agent как «xmlset_roodkcableoj28840ybtide», то вы автоматически получаете админский доступ к веб-панели управления роутером без всякой авторизации.
Подробнее

Картинки с внешних ресурсов — добро или зло?

Reading time6 min
Views33K
Большинство многопосещаемых площадок позволяют размещать у себя картинки с внешних ресурсов. Это очень удобная и полезная фича не только для простых пользователей, но и для людей, собирающих информацию о вас.

Большой брат следит за тобой

Вы хотите узнать больше информации о самых действенных методах? Вам интересно, как с помощью маленькой картинки определить разрешение экрана, локальное время и сменить парочку паролей? Добро пожаловать под кат!
Читать дальше →

Подводные камни использования сессий в PHP

Reading time13 min
Views148K
image
Приветствую, уважаемое сообщество.

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

Цель этой статьи — осветить подводные камни использования сессий в PHP. Конечно, есть документация по PHP и масса примеров, и данная статья не претендует на полное руководство. Она призвана раскрыть некоторые ньюансы работы с сессиями и оградить разработчиков от ненужной траты времени.

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

Страсть к программированию. Как я отказался от $300.000, предложенных мне компанией Microsoft, взамен на полный рабочий день на GitHub’е

Reading time4 min
Views71K
< 6. Не слушай своих родителей | 7. Будь универсалом >

Том Престон-Вернер (Tom Preston-Werner)

2008 год был високосным. Это значит то, что 366 дней назад, почти в туже минуту, я сидел в спорт баре “Zeke’s Sports Bar and Grill” на третьей улице в Сан-Франциско. Я обычно не шатался по спорт барам, но тогда был четверг — ночь “У меня может быть Ruby”. Думаю, даже так “У меня может быть _” и сюда можно вставить все, что угодно. ICHR была полузакрытой встречей “Рубистов”, которая обычно и охотно превращалась в ночной запой. Обычно эти ночи проходили также как и мое похмелье под утро, но эта ночь отличалась. Это была ночь, когда родился GitHub.
Читать дальше →

Цвета в web-дизайне: Выбор правильного сочетания для вашего сайта

Reading time6 min
Views383K
Цвета в web-дизайнеЦвет, безусловно, является важным источником эмоции. Цвета могут устанавливать правильный тон и передавать необходимые эмоции посетителям, могут взволновать, вызвать множество чувств и стимулировать к действиям. Он является чрезвычайно мощным фактором воздействия на пользователей.
Читать дальше →

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity