Как стать автором
Обновить
103
0
Денис Чмель @denver

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

Отправить сообщение

Провинциальное портфолио

Время на прочтение1 мин
Количество просмотров819
Я уже показывал какие-то наши работы. Ну вот еще одна — наш собственный сайт.

Наверное надо рассказать зачем так: во-первых хотелось сделать блог-неблог, все таки мы не писаки, во-вторых хотелось сделать интранет, чтобы все сотрудники были в теме, в-третьих хотелось стать абсолютно открытыми, ибо нечего скрывать.
Первое решили такими вот плашками, которые настраиваются в зависимости от желания модератора и установленной эпохи (эпоха задает основной цвет) и всякими фонами, картинками. Чтобы было веселее.
Второе решили тем, что постят ВСЕ сотрудники, только часть записей видна после авторизации.Для сотрудника история ставновится полнее :)
Третье решилось само собой. На одной странице вся наша история, как годовые кольца у дерева или как картина, которая предстает перед археологом при раскопках. История...

Удачного скроллинга!

www.k-r.su (http://habrahabr.ru/company/kovalev/)
Всего голосов 44: ↑33 и ↓11+22
Комментарии100

JS-TrackBar, четвертая версия бегунков

Время на прочтение3 мин
Количество просмотров7.1K
Не так давно на Хабре был опубликован сей труд: «Еще раз о трекбаре», в котором описывается простой скрипт для создания таких вот ползунков:
TrackBar

Благодаря откликам пользователей возможности первой версии скрипта были существенно расширены. Она выросла до v3.0, с одновременным обновлением статьи, описывающей новый функционал. Однако, некоторые изменения откладывались «на потом», т.к. требовали более серьезного вмешательства в код. И вот долгожданное «потом» настало и вышла четвертая версия JS-TrackBar.

Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии67

Переменные сессии на яваскрипте без кук

Время на прочтение3 мин
Количество просмотров30K
Мне никогда не нравилась реализация кук в Яваскрипте. Объем ограничен (4х20 Кб на домен), хранить возможно только в строковом типе, синтаксис для установки и получения кук избыточно сложен.

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

Поэтому я написал маленький скрипт, который позволит вам использовать переменные сессии в Яваскрипте без установки кук. Он позволяет хранить до 2 Мб данных, что намного меньше ограничивает в возможностях, чем решение на основе кук.

Читать дальше →
Всего голосов 70: ↑66 и ↓4+62
Комментарии135

Ежедневная порция знаний. Хочется больше.

Время на прочтение2 мин
Количество просмотров1.1K
Прошу отнестись терпимо и дочитать до конца. Может быть это не совсем подходящий блог, и вообще было бы лучше создать отдельный (на что пока не хватает кармы).

Я работаю руководителем проектов в компании, которая делает сайты. Работаю головой: проектирую, слежу за работой и общаюсь с клиентами.

Мне нужно быть в курсе возможностей современных технологий и тенденций, чтобы знать что сделать можно, чего нельзя, что хорошо, что плохо. Поэтому я ежедневно получаю порцию знаний. Многие источники у нас с тобой, читатель, конечно совпадут. Но, разумеется, кто-то здесь найдет новое. Это наиболее авторитетные, сильные источники. Даю гарантию, что если вы с ними не знакомы, то познакомившись вырастете на несколько уровней. От них уже расходятся второсортные ручейки, ученики. Итак, источники (порядок ничего не значит):
Читать дальше →
Всего голосов 46: ↑38 и ↓8+30
Комментарии55

Задача о придворных.

Время на прочтение1 мин
Количество просмотров1.1K
Король не доверяет своим придворным. Он составил полный список всех придворных и приказал каждому из них следить за кем-нибудь одним из остальных. При этом, первый придворный из списка следит за тем, кто следит за вторым. Второй следит за тем, кто следит за третьим, и так далее. Предпоследний следит за тем, кто следит за последним. Последний следит за тем, кто следит за первым.

Вопрос: четное или нечетное число придворных у короля?
Всего голосов 27: ↑22 и ↓5+17
Комментарии76

Личность программиста

Время на прочтение5 мин
Количество просмотров36K
«Чтобы стать экспертом в практической или научной области, нужны огромный труд и долгое время. Если человек добросовестно трудится каждый час рабочего дня, когда-нибудь он проснется одним из самых компетенткых специалистов своего поколения.»
Ульям Джеймс


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

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

В этой статье попытаемся ответить на вопрос, какими же качествами должен обладать человек для того, чтобы писать совершенный код.
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии15

Основы мастерства

Время на прочтение6 мин
Количество просмотров1.6K

Боритесь со сложностью


Как известно, мозг человека может одновременно рассматривать 7±2 элемента. Поэтому очень важно стремиться к снижению сложности ПО. Вот некоторые конкретные рекомендации:
  • Разделите систему на подсистемы на уровне архитектуры, чтобы концентрироваться в каждый конкретный момент времени на меньшей части системы.
  • Тщательно определяйте интерфейсы классов, чтобы можно было игнорировать
    внутреннее устройство классов.
  • Поддерживайте абстракцию, формируемую интерфейсом класса, чтобы не
    запоминать ненужных деталей.
  • Избегайте глобальных данных, потому что их использование значительно увеличивает процент кода, который нужно удерживать в уме в любой момент
    времени.
  • Избегайте глубоких иерархий наследования, потому что они предъявляют
    высокие требования к интеллекту.

Читать дальше →
Всего голосов 34: ↑29 и ↓5+24
Комментарии32

10 лучших офисных кресел

Время на прочтение1 мин
Количество просмотров16K
Герман Миллер (Herman Miller) произвел настоящую революцию офисной мебели, создав кресло Аэрон (Aeron) в 1994 году. Главными достоинствами нового кресла Аэрон были комфорт и гибкость, что «подстегнуло» других производителей стремиться к новым высотам качества. Мы выбрали 10 самых на наш взгляд интересных моделей офисных кресел.
Читать дальше →
Всего голосов 83: ↑49 и ↓34+15
Комментарии120

Давайте обсудим интерфейсы различных проектов и сервисов

Время на прочтение1 мин
Количество просмотров851
В этом топике хотелось бы обсудить вкусы хабровчан на пользовательские веб интерфейсы. На каком проекте или сервисе вы видели на ваш взгляд лучший — самый удобный, красивый и понятный.

Конечно не обязательно высказывать мнение именно о веб интерфейсах. Если есть какие-то мысли об интерфейсах в других областях, то было бы интересно услышать.

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

Этот вопрос лично для меня сейчас очень актуален и может найдутся люди, кто мог бы поддержать беседу.

Спасибо.
Всего голосов 34: ↑22 и ↓12+10
Комментарии79

Автоматическая привязка URL к view

Время на прочтение2 мин
Количество просмотров2K
Я недавно «подсел» на Django и мне очень нравится этот фреймворк. Однако есть деталь, которая доставляет беспокойство. Это одновременное редактирование файла с моими views и файла urls.py при создании нового view. Я понимаю, что это связано с тем, что URL-ы и views вещи достаточно разные и для большей модульности лучше держать их раздельно, однако для небольших проектов было бы очень удобно иметь возможность править view и его настройки в одном месте.

Здесь я предлагаю такое решение, конечно же, завязанное на декораторах.

Читать дальше →
Всего голосов 24: ↑18 и ↓6+12
Комментарии12

Рабочая библиотека веб-типографа и контент-менеджера

Время на прочтение4 мин
Количество просмотров7.5K
Несмотря на то, что основной инструмент работы веб-типографа и контент-менеджера — это Интернет, пока ещё не весь корпус полезных для нас материалов переведён в электронную форму. Поэтому я решил перечислить те бумажные книги, которые стоят у меня на отдельной полке, и на которые не успевает оседать пыль из-за постоянного их использования.

Список книг будет разбит на группы по темам, и каждая из них — на группы «обязательно прочесть и иметь» и «можно прочесть и иметь» (это выделение безусловно субъективно, так что спорить насчёт него не буду точно). В принципе, большинство книг есть в широкой продаже, в том числе и в крупнейших российских интернет-магазинах. Некоторые есть в отсканированном виде и их можно найти в Интернете.

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


Читать дальше →
Всего голосов 86: ↑82 и ↓4+78
Комментарии47

Элемент управления, TrackBar но с двумя ползунками

Время на прочтение1 мин
Количество просмотров10K
Понадобилась тут такая «штука», как TrackBar только с двумя ползунками, готового решения на jQuery не нашел, решил писать самостоятельно, правда не на jQuery а на чистом JS. Вроде от этого хуже не стало. «Штука» эта нужна была для выбора числовых значений в формах информационного киоска.
Читать дальше →
Всего голосов 91: ↑87 и ↓4+83
Комментарии110

Smashingmagazine опубликовал новую подборку Ajax и Javascript решений.

Время на прочтение1 мин
Количество просмотров1.2K
Наверняка пост под названием 80+ Smashingmagazine AJAX-Solutions For Professional Coding у многих в закладках. Эта подборка включает в себя самые новые на, то время, и вкусные решения с применением Ajax, собранные со всего мира.
И вот, почти год спустя новая подборка новых вкусных решений — 60 More AJAX — and Javascript Solutions For Professional Coding. Многие скрипты уже знакомы, но есть и замечательные новинки.
Всего голосов 51: ↑46 и ↓5+41
Комментарии34

Как сделать RSS иконку любого цвета, используя одну картинку

Время на прочтение1 мин
Количество просмотров4.8K
Как сделать RSS иконку любого цвета, используя одну картинку
В этой статье я расскажу вам как сделать RSS иконку любого цвета, используя всего одну картинку.

Идея заключается в том, чтобы использовать -элемент, фоном которого будет картинка в формате .png, а цвет фона элемента будет цветом нашей иконки. Мы возьмем именно png изображение, чтобы воспользоваться свойством сохранения прозрачности этого формата.
Читать дальше →
Всего голосов 81: ↑66 и ↓15+51
Комментарии60

data URI

Время на прочтение2 мин
Количество просмотров7.7K
Пару лет назад я занимался проблемой data URL в Internet Explorer, добился определённых результатов, но то, что получилось, использовать было невозможно. Data URL (иногда его ещё называют «протокол data:») — возможность вставлять ресурсы (графику, CSS, JavaScript и так далее) в HTML код.


Подробнее о data URL можно узнать из свежей статьи на «Хабре» «Картинки в теле страницы с помощью data:URL». Хотелось только её дополнить двумя замечаниями: IE8b1 поддерживает data URL длиной не более 32Кб, в современных версиях других браузеров ограничений увидеть не удалось, Safari/Opera/FF показали изображения размером около 700Кб.


Теперь амбула.


Вчера ночью мне пришла в голову идея как можно попытаться корректно совместить data URL и включение картинок через протокол mhtml. То, что у меня не получилось два года назад, получилось сейчас.


Результат — готовый код на PHP из двух функций. Первую функцию («bolk_data_uri_header») нужно вызвать в самом начале перед выводом любого вашего кода, вторую («bolk_data_uri») собственно для включения картинки в код.


Надеюсь на примерах всё понятно:
bolk_data_uri_header();
bolk_data_uri('myjpeg.jpg');
bolk_data_uri('ourpng.png', 'border: 2px dotted red');


Код самой библиотеки:
function bolk_data_uri_header() 
{ 
    echo "<!--\n" 
        ."Content-Type: multipart/related; boundary=\"=_NextPart_01C6A9B1.539AB070\"\n\n" 
        ."--=_NextPart_01C6A9B1.539AB070\n" 
        ."Content-Transfer-Encoding: base64\n" 
        ."Content-Type: text/html\n" 
        ."-->\n\n"; 

} 

function bolk_data_uri($file, $style = '') 
{ 
    if (!( file_exists($file) && ($data = @getimagesize($file)) )) return false; 

    $name = uniqid('', true); 

    if ($style <> '') $style = ' style="'.htmlspecialchars($style).'"'; 
    $mime = strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') ? " type='{$data['mime']}" : '';

    echo "<!--\n" 
        ."--=_NextPart_01C6A9B1.539AB070\n" 
        ."Content-Location: {$name}\n" 
        ."Content-Transfer-Encoding: base64\n" 
        ."Content-Type: {$data['mime']}; -->\n" 
        ."<object data='data:{$data['mime']};base64,\n\n"; 

    echo base64_encode(file_get_contents($file)); 

    echo "' {$data[3]}{$style}{$mime}'><img " 
        ."src='mhtml:http://{$_SERVER['HTTP_HOST']}"
        ."{$_SERVER['REQUEST_URI']}!{$name}' {$data[3]}{$style} /></object>\n\n" 
        ."<!--\n" 
        ."--=_NextPart_01C6A9B1.539AB070-->"; 

    return true; 
}



Секрет в совмещении данных, чтобы IE, обратившись к странице по протоколу mhtml нашёл нужный кусор, «спрятанный» внутри тега, а остальные браузеры увидели бы картинку через data URL.


Код тестировался под Opera 9.50b, FF 2.0.0.13, Safari 3.1 и IE6. Предложения и результаты испытаний — прошу в комментарии.


Оригинал записи опубликован в моём блоге.
Всего голосов 46: ↑43 и ↓3+40
Комментарии85

Трекбар для работы с датами

Время на прочтение1 мин
Количество просмотров1.3K
Много уже написано на тему трекбаров, но в комментариях к прошлым хабратопикам кто-то интересовался трекбаром с двумя «ползунками», чтобы можно было смещать сразу весь диапазон (а не каждые ползунки по отдельности), ну и отдельно каждый ползунок, естественно (да еще и написанный изначально для работы с датами). Я свято клялся отыскать такую знатную вещь, ибо видел ее на днях, и вот только сейчас наткнулся на нее опять.
Позвольте вас познакомить — The sliding date-picker.
пример работы

Посмотреть пример работы
Посетить страницу с описанием и скачать
Всего голосов 31: ↑25 и ↓6+19
Комментарии23

Фрагментарное кэширование в MVC веб-фреймворках

Время на прочтение4 мин
Количество просмотров2.7K
Наверняка большинство программистов, работающих с современными веб-фрейворками, реализующими схему MVC, сталкивалось с таким небольшим затруднением: кэширование фрагмента View.

Хорошие фреймворки предлагают инструменты для полного кэширования страниц, фрагментарного, или кэширования экшенов. Недавно я посмотрел 90 выпуск подкаста Railscasts, посвященный именно фрагментарному кэшированию в Ruby on Rails и уважаемый автор решал проблему, как мне показалось, неоптимально.

Опишу ситуацию.
Мы в шаблоне страницы и хотим закэшировать ее часть, например, список новых товаров. Пока все хорошо, мы пользуемся встроенными во фреймворк удобными средствами и в две-три строчки окружаем блок — ура, он кэшируется. Но — чу!, контроллер-то об этом ничего не знает и продолжает выполнять свою работу по подготовке данных для View. Естественно, ведь проверка наличия кэша осуществляется уже из шаблона, а контроллер к тому моменту отработал.
Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии66

Практическое применение Google AJAX Language API — встраиваем переводчик в свой проект.

Время на прочтение7 мин
Количество просмотров4.6K

Приветствую вас, уважаемые читатели! Возможно, несколько нескромно, но позволю себе обьявить, что далее будет самый первый в Рунете обзор и описание практического применения недавно открытого Google AJAX Language API для доступа с приложений на JavaScript к сервису переводов. Везде я видел пока только анонсы и попытки проанализировать, чем же это может обернутся для разработчиков и пользователей, но именно руководства по встраиванию в свой сайт или проект еще не читал, поэтому решил самостоятельно разобраться и написать.

И так, сначала общая информация. Как известно, у компании Google есть сервис переводов, который умеет переводить тексты на более чем десятке языков. Всего пар переводов есть намного больше, но для некоторых языков доступны только переводы на один-два языка, для других, например, английского — на множество. Раньше вы могли использовать этот сервис для переводов веб-страниц на лету, или перевода отдельных слов и предложений в браузере, но вот дистанционный доступ к сервису при помощи AJAX-а — это стало возможно только на днях с открытием соответствующего API и размещения примеров кода.

API включает в себя функции автоматического определения языка исходного текста, и, собственно сам перевод. Поддерживается пока тринадцать разных языков и двадцать девять вариантов перевода. К сожалению, русский поддерживается только в виде пары Russian <> English, то есть, перевод с русского на английский и обратно, а самое большое число переводов конечно же, для английского. Впрочем, обещают в дальнейшем пополнять возможности переводов, так что не отчаивайтесь.
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии32

Profiling PHP Applications With xdebug

Время на прочтение8 мин
Количество просмотров41K
Добро пожаловать в третью статью о xdebug. Уже сейчас вы должны были попробовать xdebug, если нет, сделайте это сегодня ;-).
В первой статье рассказывалось о том, как установить и настроить xdebug, описывались некоторые простейшие возможности, такие как улучшение вывода функции var_dump() или вывод трассировки стека вызовов при получении сообщения об ошибке. Во второй части мы рассмотрели такую возможность xdebug как трассировку. Трассировка содержит все вызовы функций и методов в программе, время запуска, опционально размер памяти, передаваемые и возвращаемые параметры. Лог трассировки может помочь вам понять пути выполнения сложной программы. Вместо того чтобы вставлять отладочный код внутрь программы, вы включаете или выключаете трассировку в тем места где нужно, а потом используете утилиты подобные grep или собственно написанные приложения на PHP для анализа лог файла.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии17

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность