Search
Write a publication
Pull to refresh
2
0
Садовников Антон Петрович @Siddthartha

Developer

Send message

Разгоняем CSS-селекторы: стоит ли?

Reading time1 min
Views2.9K
Виталию Харисову посвящается

После перевода заметки «Оптимизируем CSS-производительность» и справедливых замечаний Виталия vithar, я решил поставить серию экспериментов по скорости работы CSS-селекторов внутреннего движка браузеров. Результаты получились весьма забавными, а местами, наверное, даже интересными.

Методика. Размер файлов



Естественно, что скорость работы одиночного CSS-правила весьма высока, и даже десятки и сотни их не должны заметно замедлить работу браузеров. Поэтому нужно ставить эксперимент по работе с несколькими тысячами правил, иначе точность результатов будет весьма невысока. Использовать JavaScript для генерации HTML/CSS-кода не представляется разумным, ибо тогда придется учитывать еще и скорость работы JS-движка в браузерах, в итоге, эксперимент будет недостаточно чистым.

В конце концов, было решено сгенерить статичные файлы (порядка 300Кб), которые будут содержать достаточное число различных CSS-селекторов. Это самое «достаточное» число подбиралось по нескольким параметрам, в том числе: размер файла (гонять несколько Мб через браузер и интернет совсем не хотелось) и скорость работы HTML/CSS-кода в браузерах (она должна быть достаточно низкой, чтобы файлы в несколько сотен Кб уже заметно тормозили при открытии).

читать дальше на webo.in →

Оптимизация работы с MySQL

Reading time3 min
Views79K
Ни для кого не секрет, что работа с базой данных занимает большую часть работы практически любого сайта. И именно работа с БД чаще всего является узким местом веб-приложений.
В этой статье хотелось бы дать практические советы использования MySQL.
Сразу оговорюсь:
  • данная статья написана про MySQL, хотя общие вещи скорее всего справедливы для любой СУБД.
  • все написанное в статье является моей личной точкой зрения, и не является истиной в последней инстанции.
  • советы не претендуют на новизну и являются результатом обобщения прочтенной литературы и личного опыта.
  • в рамках данной статьи я не буду касаться вопросов конфигурирования MySQL.

Проблемы при использовании MySQL можно разделить на следующие три группы(в порядке значимости):
  1. Неиспользование или неправильное использование индексов.
  2. Неправильная структура БД.
  3. Неправильные \ неоптимальные SQL запросы.

Остановимся на каждой из этих групп подробнее.
Читать дальше →

text-overflow в Firefox и все, все, все

Reading time9 min
Views15K
Многие наверняка сталкивались с проблемой, когда какой-нибудь текст нужно выводить в одну строку. При этом текст может быть весьма длинным, а ширина блока, в котором этот текст находится, обычно ограничена, хотя бы тем же размером окна браузера. На эти случаи придумано свойство text-overflow, которое внесено в рекомендацию CSS3, а впервые было реализовано в IE6, очень давно. В случае использования этого свойства для блока, если его текст больше по ширине чем сам блок, то текст обрезается и в конце ставится многоточие. Хотя тут не все так просто, но вернемся к этому чуть позже.
С Internet Explorer'ом все понятно, что же относительно других браузеров? И хотя в настоящий момент из спецификации CSS3 свойство text-overflow исключено, Safari его поддерживает (по крайней мере, в 3-й версии), Opera тоже (с 9-й версии, правда называется свойство -o-overflow-text). А Firefox — нет, не поддерживает, и даже в 3-й версии не будет. Печально, но факт. Но может можно что-то сделать?

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

Через 10 месяцев родилась новая версия TrueCrypt 5.0

Reading time2 min
Views6.5K
Существует много программ для шифрования и криптографии, но TrueCrypt отличается некоторыми интересными особенностями, благодаря которым он работает у меня на двух машинах уже почти год. А новая версия 5.0 добавляет еще разных вкусностей…
Читать дальше →

GlassBox — Оформляем в стиле Vista

Reading time1 min
Views807
12313.png

GlassBox является компактной Javascript библиотекой, которая использует Prototype и Script.aculo.us для своих эффектов. В «GlassBox» вы можете построить прозрачные границы, цветные слои и т. п.
Читать дальше

Флажки

Reading time1 min
Views3.6K
По-моему иконки с флагами двухсот сорока семи государств мега-полезный комплект. И, даже, если вы будете регулярно использовать только одну-две, полезно будет знать где их взять, на всякий случай.
иконки-флаги
Все иконки проименованы в соответствии с международным стандартом ISO:3166-1, хранятся в двух форматах: png и gif, и могут использоваться в любых целях.
Спасибо Марку Джеймсу (Mark James, famfamfam.com).
Читать дальше →

FineReader и Клинопись

Reading time2 min
Views2.7K
Клинопись — именно так переводится слово «cuneiform» с английского языка. Правда я немного забежал вперед. Вернемся к первому слову из заголовка. FineReader — идеальное решение для тех, кому нужен высочайший уровень точности распознавания и сохранения оформления текстов, как написано на сайте компании ABBYY. Все очень хорошо, но купить для дома ее, увы, не совсем (или совсем не) рентабельно. Правда есть выход, возможно даже парадный.
Читать дальше →

PHP библиотека для jQuery

Reading time2 min
Views8.4K
jQuery-PHP

С тех пор как сочетание «Web 2.0» пришло в массы, все чаще разработчикам сайтов приходиться добавлять «web 2.0 красивости» к сайтам. Очень помогает в этом JavaScript фреймворк jQuery. Описывать все прелести данного фреймворка я думаю не имеет смысла (о нем и так слишком много написано), но мне, как PHP разработчику, нехватало удобного сервер сайда для генерации AJAX ответов, в итоге на свет появилась PHP библиотека jQuery-PHP
Читать дальше →

Практический CSS: рецепт успеха

Reading time11 min
Views12K
Ниже располагается перевод заметки CSS — A Recipe for Success, в которой рассматривается создание средствами HTML/CSS в браузере некоторого образца меню. В статье освещены довольно интересные случаи, и подробно описано их решение.

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

Рисунок 1. Стандартное меню
Рисунок 1

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

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

Псевдокласс: first-letter

Reading time1 min
Views7.6K


Уже довольно давно использую псевдокласс :first-letter для назначения двух фоновых изображений для одного элемента. Самое интересное что :first-letter, один из немногих псевдоклассов, которые работают в 6-ом Интернет Эксплорере. Но есть одна маленькая хитрость, которую нужно знать.

К делу. Как сказано выше, HTML элемент у нас один. Пусть это будет заголовок первого уровня.
Читать дальше →

Парсим микроформаты

Reading time7 min
Views3.9K
Микроформаты — это способ внедрения специфических семантических данных в HTML, который мы используем сегодня. Первый вопрос, который задал бы гуру XML: «А зачем применять HTML, если XML позволяет создать ту же самую семантику?» Я не буду перечислять все причины, по которым XML был бы лучшим или худшим выбором для кодирования данных, или же почему микроформатами был выбран HTML в качестве базы. Эта статья будет сосредоточена на том, как работают базовые правила парсинга, и как они отличаются от XML-ных.
Читать дальше →

Черные ходы Касперского 6/7

Reading time10 min
Views8K
Перевод статьи с сайта rootkit.com

Преамбула

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

Он имеет Модуль Проактивной Защиты (Proactive Defence), представляющий из себя частичную реализацию HIPS, способную, в теории, защитить компьютер от неизвестных угроз, анализируя поведение программ и предотвращая несанкционированные действия.

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

Эта статья — не просто обзор ошибок и уязвимостей — в конце каждой части мы даём рекомендации разработчикам антивируса, потому что мы видим, что они не могут разобраться с этими ошибками самостоятельно. И для приверженцев сразу оговорка: конечно, все, что написано ниже — не критические уязвимости, нет-нет =) Всего лишь несколько простых методов получить BSOD при установленном KAV/KIS даже из под гостевого аккаунта, всего лишь методы обхода KAV/KIS… и так далее, в общем не принимайте слишком близко к сердцу.

Версия Касперского, про который пойдёт речь в этой статье — 7.0, последний публичный билд 125, тип продукта — Internet Security.
Читать дальше →

Практический HTML: учимся любить формы

Reading time4 min
Views8.3K
Примечание: ниже находится перевод тезисов доклада «Learning to Love Forms» с конференции «WebVisions 2007» (автор Aaron Gustafson). Докладчик рассказывает о верстке форм, используя корректный и эффективный XHTML/CSS-код.

  • Формы — это необходимое зло. Людям свойственно усложнять формы, хотя они могут быть представлены весьма просто.
  • Рассматривайте верстку форм как создание обычного XHTML-кода. Но будьте готовы к несоответствиям со стороны браузеров и применению хаков.
  • Разбивайте сложные формы на несколько простых частей.
  • Старайтесь обеспечивать максимальную семантическую ценность кода.
  • Не усложняйте дизайн форм.


XHTML & CSS приемы



  1. Элемент FORM создает форму.
  2. Единственным обязательным его атрибутом является ACTION, и он всегда должен быть URI.
  3. По умолчанию METHOD выставляется в GET.
  4. Атрибут NAME устарел, используйте вместо него ID.
  5. Элемент FIELDSET используется для группировки связанных полей формы. Может быть вложенным.

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

Умный экспорт из SVN при помощи TortoiseSVN

Reading time2 min
Views8.8K
Достаточно давно я столкнулся с проблемой, что в хорошей и правильной программе TortoiseSVN (по-русски «тортойс эС-Ви-эН»), нету такой необходимой и желанной вещи, как экспорт только тех файлов, которые были затронуты определенными ревизиями. Особенно начинаешь страдать, когда приходится перезаливать на сервер весь проект, куда входят достаточно увесистые библиотеки и фреймворки. Можно, конечно, не включать библиотеки в Subversion, но это уже тема для другой беседы.
И вот, совсем недавно, один очень хороший гуру и друг совершенно ненавязчиво рассказал мне, как изящно и красиво решить эту проблему.
Ну, а я перескажу все это дело вам

FancyUpload. Самая удобная закачка файлов, основана на flash и mootools

Reading time1 min
Views3.9K
Сочетание SWF и AJAX для красивой и удобной передачи файлов на сервер.
«Мастхэвная» технология для любого сервиса, где требуется закачка фотографий, музыки и т.п.

digitarald.de/playground/uplooad.html

Для работы необходим Flash 8+ и любой современный браузер (Internet Explorer 6+, Opera 9, Firefox 1.5+ и Safari 2+). Исходники прилагаются.

JSON и XML. Что лучше?

Reading time8 min
Views223K
Примечание: ниже перевод обзорной статьи «JSON vs XML», посвященной JSON и его сравнению с XML по ряду критериев. Публикуется в целях популяризации JSON среди читателей Хабрахабра.

JSON (англ. JavaScript Object Notation) — формат обмена данными, легко читаем людьми, легко обрабатывается и генерируется программами.

Основан на подмножестве языка JavaScript, Standard ECMA-262 3rd Edition — декабрь 1999.

JSON — Википедия

Что является правильным форматом ответа на XMLHttpRequest в AJAX-приложениях? Для большинства приложений, основанных на разметке, ответ будет простым — (X)HTML. Для информационно-ориентированных приложений выбор будет лежать между XML и JSON. До недавнего времени я не сильно задавался вопросом, что лучше использовать, XML или JSON. Я просто предполагал, что в каждом конкретном случае стоит выбирать наиболее подходящий формат, и все. Но недавно мне довелось проверить на практике этот подход. В этой заметке я опишу критерии, по которым проводил сравнение между XML и JSON, и собственные умозаключения.

Итак, критерии следующие.

  • Удобочитаемость кода.
  • Простота создания объекта данных на стороне сервера.
  • Простота обработки данных на стороне клиента.
  • Простота расширения.
  • Отладка и исправление ошибок.
  • Безопасность.

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

jQuery для JavaScript-программистов

Reading time12 min
Views71K
Примечание: ниже расположен перевод статьи «jQuery for JavaScript programmers», в которой автор высказывает свое мнение об этой библиотеке, ориентируясь, в первую очередь, на продвинутых программистов, и приводит несколько десятков примеров ее использования.

Когда jQuery увидела свет в январе 2006, я подумал: «очередная красивая игрушка». Выбор CSS-селекторов в качестве базиса было, конечно, изящной идеей (подробнее о ней в моей заметке getElementsBySelector), но использование цепочек преобразований выглядело немного замысловато, и сама библиотека, по-видимому, не покрывала всех возможных случаев. Я расценивал тогда jQuery только как временное и проходящее решение.

Только несколько месяцев спустя понял я, насколько же ошибался по отношению к ней. jQuery является просто произведением инженерного искусства. Она умело покрывает достаточно широкой диапазон повседневных функций и предоставляет при этом удобный API для расширений, с помощью которых можно добавить любую другую функциональность. Абстрактность в ней заложена на уровне ядра — речь идет о выборе DOM-элементов — и она извлекает из него максимум пользы. И что важнее всего, использование этой библиотеки подразумевает следование хорошему стилю в программировании и хорошо сочетается с другими частями JavaScript-кода.

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

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

Google Maps: добавлена поддержка микроформата hCard

Reading time1 min
Views1.4K
Разработчики Google Maps сообщили в своём блоге о том, что отныне в выдаче Google Maps будет присутствовать информация, размеченная микроформатом hCard. Это сделано для удобства извлечения данных об адресе и контактной информации. Бонус сумеют оценить как пользователи Firefox (расширения Operator или Tails), так и пользователи IE и Safari (букмарклеты). Там же смотрите пример кода для работы с API.

Information

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

Specialization

Specialist
Lead
From 10,800 $
PHP
OOP
Docker
Rust
Linux
Asynchronous programming
MQTT
Geoinformation systems
Machine learning
Computer Science