Search
Write a publication
Pull to refresh
22
0.7
Копетан О. Я. @vanxant

User

Send message

Почему WAT

Reading time3 min
Views41K
Недавний доклад Гарри Бернхардта на CodeMash оказался довольно популярен (прим. пер.: в том числе и на хабре). В докладе он шутит по поводу некоторых особенностей поведения ruby и javascript.
Вряд ли я смогу вас убедить, что есть какой-то смысл в том, на что жалуется Гарри. Тем не менее, надеюсь, я смогу вам объяснить, почему javascript ведёт себя именно так.
Читать дальше →

Готовим css-спрайт в Spritepad

Reading time1 min
Views7.2K


Как мы часто составляем спрайты:

1) Выделяем отдельные элементы из PSD для групировки в спрайт.
2) Для точного нахождения координат элементов спрайта рисуем сетку из линеек для верстальщика.
3) И тупенько через alt+tab переписываем координаты в css.

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

Еще один шаг к упрощению процесса верстки спрайтами нам предоставляют энтузиасты из Германии «We are kiss» с проектом Spritepad.

1) Вырезаете все что нужно из PSD-шки в png24 и закидываем по очереди в браузер.
2) Позиционируем, и справа получаем готовую css-ку, классы которой будут генерироваться на основе имен скинутых в браузер файлов.

Простая интеграция сайта и 1С

Reading time6 min
Views143K
image
Последнее время натыкался на несколько различных статей об интеграции сайта и 1С. В комментариях часто начинались споры о различных подходах, и я решил поделится способом который однажды довелось реализовать мне. Разумеется, описанный ниже способ не претендует на универсальность и единственность, но, думаю, будет полезен тем, кто только собирается писать свой вариант.
Читать дальше →

Почти кроссбраузерный beforeprint

Reading time3 min
Views3K
Для Internet Explorer впервые реализовали события beforeprint и afterprint, и долгое время он был единственным, кто их поддерживает. Затем подтянулась Mozilla, поддерживающая эти события с 6-ой версии своего браузера. Вебкит очень долго не решался на реализацию, и наконец полностью от неё отказался, отсылая нас к интерфейсу matchMedia. Опера, насколько автор смог разобраться, не реализовала ни события, ни matchMedia, хотя не исключено недостаточное гугление этого вопроса.

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

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

Фриланс против бизнеса

Reading time5 min
Views1.8K
Фриланс, как массовое явление, появился совсем недавно, думаю не больше 10 лет назад, вместе с глобальным распространением и социализацией интернета, и на сегодняшний день эта модель деловой активности еще очень мало изучена, сегодняшние фрилансеры по сути — первопроходцы, изучающие новый способ жизни прямо на себе.

Я отправился в свое одиночное плавание в океане мировой экономики около 5 лет назад, но безопасный промысел в прибрежной зоне быстро наскучил, меня всегда манил открытый океан, где вдали проплывали огромные лайнеры мировых корпораций и быстрые яхты стартапов.

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

Мысли о скриншотах через JavaScript

Reading time1 min
Views39K
При разработке одного сервиса я столкнулся с необходимостью дать возможность пользователям сообщать об ошибках. Проблема заключалась в том, чтобы пользователь мог сделать скриншот без использования стороннего софта или сервиса.

Сначала эта задача показалась мне невыполнимой, но я нашел html2canvas.
Читать дальше →

Улучшаем юзабилити за 5 минут

Reading time4 min
Views7.3K
В этой блогозаписи я намерена поделиться несколькими такими советами по увеличению юзабилити сайта, каждый из которых очень лёгок в реализации. Не все они кросс-браузерны, но всё равно они «глазурь на тортике»: читатель и не заметит, что их нет.

1. Отображайте нажатия кнопок и кнопкоподобных ссылок


Мой излюбленный совет. Когда стиль кнопки задаётся в CSS, или когда для отображения необычной кнопки используется рисунок (либо как фон, либо как элемент <img />), то кнопка не реагирует на нажатие во всех или в некоторых браузерах (зависит от ситуации). Вот какой простой уловкою вы можете дать знать посетителю сайта, что он и впрямь нажал на нечто нажимаемое:

.mybutton:active {
   position: relative;
   top: 1px;
   left: 1px;
}

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

Есть другие, не менее быстрые варианты: придать границе свойство inset, указать свойству text-indent значение 1px, изменить направление градиентного фона (что можно сделать быстро, если для этого не придётся прибегнуть ко графическому редактору, то есть если где-то ещё на сайте используется готовый перевёрнутый градиент), или комбинация нескольких из них.

2. Плавные переходы (CSS3 transitions)


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

Simplify.js — JavaScript-библиотека для упрощения ломаных линий

Reading time2 min
Views10K
Рад представить вашему вниманию еще одну крохотную, но полезную open-source-утилиту своего авторства — Simplify.js.



Simplify.js — очень быстрая реализация упрощения ломаных линий на JavaScript. Изначально написав ее для Leaflet (библиотеки для интерактивных карт), после небольшого эксперимента по оптимизации захотелось выпустить ее в качестве отдельной библиотеки без зависимостей, которую можно использовать как в браузере, так и на серверных платформах, таких, как Node.js, и применять и для 2D, и для 3D-точек.

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

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

Почему стоит пользоваться PDO для работы с базой данных

Reading time9 min
Views331K

Перевод статьи Why you Should be using PHP’s PDO for Database Access.

Множество PHP-разработчиков привыкли использовать для работы с базами данных расширения mysql и mysqli. Но с версии 5.1 в PHP существует более удобный способ — PHP Data Objects. Этот класс, сокращенно именуемый PDO, предоставляет методы для работы с объектами и prepared statements, которые заметно повысят вашу продуктивность!

Введение в PDO


«PDO – PHP Data Objects – это прослойка, которая предлагает универсальный способ работы с несколькими базами данных.»

Заботу об особенностях синтаксиса различных СУБД она оставляет разработчику, но делает процесс переключения между платформами гораздо менее болезненным. Нередко для этого требуется лишь изменить строку подключения к базе данных.

Эта статья написана для людей, которые пользуются mysql и mysqli, чтобы помочь им в переходе на более мощный и гибкий PDO.
Читать дальше →

Шрифты из склепа

Reading time3 min
Views32K
image Мне от моноширинных шрифтов многого не надо. Адекватная поддержка кириллицы. Для программирования — отсутствие замыливания. Возможность различать 0 (который ноль) и О. Возможность различать I (которое i), l (которое L) и | (которое or). Для работы в консольном двухпанельнике — поддержка псевдографики. Однако в современном мире подобных шрифтов не так, чтобы много. Откуда же их взять?

Осторожно! Под катом — сплошные анахронизмы.

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

В комнате с белым потолком

Reading time4 min
Views9.6K
С вирусами стало сложно. С эксплойтами сложно. Антивиры помогают конечно, но машину грузят, да и надежность срабатывания не позволяет расслабиться. Но это еще ладно, вирусы это внешние факторы. А сама операционка? Раздел winsxs почистить невозможно (я нашел всего одну полурабочую тулзу) растет он по 1 гигу в месяц и размер его ввиду сплошных ссылок — сплошное же вранье. Реестр полон грязи от всевозможных левых, полулевых и очень даже правых программ. И качественно зачистить его тоже никто не может.

Однажды я понял, что лучше не будет, это технология. Регулярные чистки не помогают, антивирусы молчат. Пришлось искать другой выход. С год назад выход был установлен и опробован. Тоже, в общем технология, одним действием дело не ограничивается. Но один раз настроив — таки да можно реально расслабиться. Ничего принципиально нового, у меня просто хватило терпения довести дело до конца. Дальше — описание.
Читать дальше →

Зачем платить больше? Веб-студии, уменьшаем налоги с 34% до 20%

Reading time1 min
Views15K
Возможно, моя заметка для многих будет всем известной истиной, но для меня, как и для многих моих знакомых, это оказалось приятной новостью. Поскольку область нашей деятельности – веб-разработка, мое обращение именно к представителям этого сегмента. Хотя все, о чем пойдет речь ниже, будет относиться ко всем компаниям, которые занимаются разработкой ПО.
Читать дальше →

HTML5: Web Workers и AJAX

Reading time4 min
Views50K
Все прочнее в среду разработчиков входит HTML5. Важным его достоинством является наличие такой технологии, как web workers, которая позволяет в некоторой степени обеспечить, если не мультипоточность, то ее подобие при выполнении скриптов.

Суть технологии проста — в отдельные файлы выносятся функции, обеспечивающие функционирование AJAX, либо функции обрабатывающие большие массивы информации, которые во время работы уменьшают скорость построения страницы. Таких файлов может быть столько сколько нужно. При выполнении скрипта на стороне браузера создается специальный объект Worker, который и отвечает за вызов необходимых функций. Многие современные браузеры поддерживают данную технологию.
Читать дальше →

CSS хаки

Reading time4 min
Views126K
Браузеры и стандарты. Вечная погоня. Из-за несоответствий стандартам, из-за разных способов рендеринга страниц большая часть времени веб-дизайнера уходит на то, чтобы загладить эти несоответствия (использовать хаки). В итоге, вместо эффективной работы, дизайнер вступает в противоестественные отношения с браузерами, теряя драгоценное время.
Читать дальше →

Не очень честная генерация DOC файлов на PHP

Reading time3 min
Views17K
У каждой задачи есть несколько вариантов решения. И иногда в угоду скорости приходится выбирать не самый красивый, зато работающий и выполняющий поставленные перед ним цели. Итак, в один не очень прекрасный день возникла необходимость реализовать следующую функцию: у каждой (почти) страницы сайта должны быть автоматически сгенерированные копии в форматах DOC и PDF. С сохранением всех таблиц и картинок внутри контента. И если с PDF всё относительно просто (tcpdf наш друг и брат), то с DOC'ом возникла морока. Под катом — пример решения данной задачи.
Читать дальше →

Сравнение нескольких популярных российских облачных/обычных Windows VPS провайдеров

Reading time5 min
Views14K
На днях понадобилось мне выбрать виртуальную машинку для собственного проекта. Т.к. я пишу на Windows/.Net/Mssql, то, очевидно, и хостинг нужен соответствующий. Я выбирал только из российских провайдеров по причине необходимости хороших пингов и простоты расчетов, т.к. работать надо будет с юр. лицом. После не очень успешного Вопроса в Q&A я сам протестировал несколько провайдеров.
Updated Добавлен еще провайдер, дополнено финальное сравнение
Читать дальше →

API карт от 2ГИС: рецензия

Reading time10 min
Views12K
Недавно 2ГИС порадовал всех нас выспуском версии 1.0 собственного картографического JS API. API карт отечественного производства — штука редкая; Mail.ru и Rambler, например, так и не сподобились, хоть и обещали (пруф раз, пруф два). Посмотрим, что получилось у новосибирцев.

Знакомимся



Не будем откладывать в долгий ящик, открываем раздел "Быстрый старт" и копируем предложенный код. It works! Правда, заголовок показывает кракозябрами — оно, правда, и не удивительно, поскольку тэга с указанием charset-а нет. Ну да ладно, мелочи жизни. Смотрим на код.

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

Подводный камень в foreach($items as &$item)

Reading time2 min
Views77K
Многие любят писать такие конструкции в том или ином виде, каждый сталкивался:
foreach ($items as &$item) {
    $item += 2;
}

Но не многие подозревают о том, какая опасность тут скрывается.
Рассмотрим пример.
Читать дальше →

Information

Rating
2,797-th
Location
Agalli, Berat, Албания
Date of birth
Registered
Activity