Рубрика «Веб-разработка» - 228

Доброго времени суток, читатель!

Предисловие

Я работаю программистом и пишу проекты для внутренних нужд компании. Проекты попадаются разнообразные и интересные.
До недавнего времени многие «красивости» я делал при помощи небезызвестного jQuery UI. В наборе есть практически все необходимые виджеты и т.п., использовать его просто и удобно. И даже если возникли проблемы, ответы на вопросы можно без проблем найти в сети.
И все бы было хорошо в датском королевстве, если не одно НО
Читать полностью »

DVelum — платформа разработки на PHP + ExtJS4 Выпуск версии 0.9Основная цель проекта — создание удобной RAD-платформы разработки web-приложений, интерфейсов управления базами данных, CRM-систем, автоматизированных рабочих мест. Функционал платформы максимально автоматизирует рутинные процессы разработки, освобождая пространство для творческой самореализации.

В прошлом году мы уже знакомили вас с платформой DVelum в публикации «DVelum – платформа разработки на PHP + ExtJS4».

На тот момент платформа была достаточно сырая (beta release), после публикации получили много полезных советов и отзывов. Многое из предложенного внедрено и исправлено, хотелось бы познакомить вас с тем, что было сделано за это время. Проект окреп, приобрел более стройный вид, включил в себя достаточный набор инструментов для повседневной разработки.
Читать полностью »

В данном небольшом посте я бы хотел поделиться своими мыслями насчёт скорости работы скриптов/программ, которые мы с вами пишем каждый день и обратить внимание на то, сколько «невидимой» работы совершается при выполнении привычных действий.

Выполнение SQL-запросов

Все знают, что работа с SQL обычно является одной из самых медленных компонентов любого сайта. Есть ли какие-то объективные причины для этого? Действительно ли базы данных такие медленные и срочно нужно переходить на NoSQL :)? Давайте посмотрим.

Создадим тестовую табличку в MySQL и наполним её 1 млн записей:

Код на PHP!

<?php
mysql_connect(...) or die("Cannot connectn");
mysql_select_db(...) or die("Cannot select DBn");

mysql_query('CREATE TABLE IF NOT EXISTS `one_million` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `one` int(11) NOT NULL,
  `two` int(11) NOT NULL,
  `three` int(11) NOT NULL,
  `four` int(11) NOT NULL,
  `five` int(11) NOT NULL,
  `six` int(11) NOT NULL,
  `seven` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB') or die("Cannot create tablen");

for ($i = 0; $i < 1000000; $i++) {
if ($i % 1000 === 999) echo "Done $in";
mysql_query('INSERT INTO one_million VALUES(NULL, ' . rand() . ', ' . rand() . ', ' . rand() . ', ' . rand() . ', ' . rand() . ', ' . rand() . ', ' . rand() . ')');
}

// Да, код не использует batch insert, а также использует устаревшее, но до сих пор работающее расширение mysql

Давайте теперь выполним какой-нибудь простенький запрос, который прочитает нам 1 млн записей:

SELECT COUNT(*) FROM one_million WHERE three = 333

На моем компьютере запрос выполнился за 200 мс! Таким образом, можно заключить, что InnoDB в состоянии просмотреть около 5 млн записей за 1 секунду! Давайте подумаем, где же на веб-сайтах может потребоваться просматривать столько записей на одну страницу :)? На моей прошлой работе я принудительно выставил ограничение в 20 000 просмотренных строк на все SQL-запросы, и после вычищения всех «тормозных» мест время открытия страницы упало в 5 раз!
Читать полностью »

Повторяющийся зубчатый фон на CSS

Давно на хабре не было постов про CSS и я решил восполнить этот пробел. Сегодня мы учимся готовить зубчатый фон используя только средства CSS и никаких изображений!

Важные требования к такому забору:

  • Он должен спокойно тянуться по горизонтали
  • Обязательно должен поддерживать неравномерный фон у подложки
  • Фон не должен требовать никакой экстра-разметки. Лучше всего будет избегать псевдо-элементов (экономия — хорошо).

Поддерживаемые браузеры: Chrome, Firefox (> 3.6), Opera (>= 12), Safari (>= 5), IE10.

Для IE 7, 8 у нас будет фоллбэк в виде обычной заливки. А вот с IE9 проблема — он не поддерживает градиенты, но при этом понимает hsla и rgba цвета. Воистину «великолепный» браузер. Что ж, его пока придётся игнорировать. Если кто–то подскажет хороший фоллбэк для IE буду только благодарен.
Читать полностью »

Предлагаем вашему вниманию очередную подборку с ссылками на новости, интересные материалы и полезные ресурсы.
Кстати, сегодня исполняется ровно год с момента поста нашего первого дайджеста на Хабре. Вам спасибо, что до сих пор нас читате, нам спасибо, что все еще продолжаем это дело :)

Дайджест интересных новостей и материалов из мира айти за последнюю неделю №52 (6 — 12 апреля 2013)
Читать полностью »

Вероятно, многие уже привыкли видеть недоделанные или тестовые версии сайтов разнообразных коммерческих и некоммерческих организаций, да и разработчики понимают, что всем уже приелись «lorem ipsum». Я и сам как-то раньше мирился с подобными вещами, но когда видишь такое на сайте, заказчиком которого является Министерство образования и науки Российской Федерации, это, мягко говоря, шокирует.
Читать полностью »

10 заблуждений в веб разработке

1. Сделать сайт очень сложно.

На самом деле 99 процентов сайтов отлично вписываются по требуемому функционалу в какую-нибудь готовую бесплатную CMS. Остается лишь разработать и внедрить дизайн, что с технической стороны больше рутинно, чем сложно, но как раз рутина и отнимает много времени, весь сайт может быть сделан за неделю, а исправление мелочей может отнять месяц.

2. Мой сайт должен уметь всё.

На моем сайте должен быть блог, форум, магазин, 100500 видов платежных систем, онлайн-суппорт и маленький котеночек на главной страничке, еще там должны все регистрироваться, писать, рейтинги, голосования, гугл-карты, погода, RSS и еще…
Вам это не надо. Как показывает практика — люди приходят на сайты компаний с целью просто найти информацию о продуктах и услугах, почитать отзывы и, может быть, заказать товар онлайн. Главным образом сайт должен уметь только это. Всё остальное никому не нужно. Речь идет именно о тех 99 процентах, 1 процент исключений не подпадает под это правило, это в большинстве своём какие-нибудь необычные стартапы.

3. Мне сделали сайт. Сейчас нахлынут клиенты.

Ваш новый сайт — это как только что открывшийся магазин на окраине города. Он как бы есть, но о нем никто не знает, редко кто забредет туда, скорее всего случайно. Сайт нужно не только сделать, но и раскрутить. Как? Это зависит от целей, которые вы преследуете, но как минимум нужно зарегистрировать сайт в поисковых системах, если вы продаете услуги или товары — нужно заказать обзоры на тематических ресурсах. Есть еще много способов раскрутки, как «белых», так и «серых», и даже «черных» и «красных», но это уже совсем другая область, возможно она раскроется в одной из следующих статей.
Читать полностью »

Вместо вступления

Я хочу рассказать вам о некоторых трудностях, с которыми мы столкнулись при разработке встраиваемого JavaScript приложения, виджета комментариев "Комментатр".
В этой статье я опишу некоторые проблемы и тонкости разработки подобных приложений, а также предложу варианты их решения.
В качестве backend–решения мы используем приложение на Ruby on Rails, поэтому некоторые фрагменты этой статьи будут специфичны для Rails–окружения.

Комментатр состоит из двух проектов: API и виджета, который устанавливается на сайт клиента. Речь пойдет об их взаимодействии между собой и виджета с сайтом клиента. В основном общение виджета и API происходит посредством JSONP, который, как известно, поддерживает только GET–запросы. В связи с этим возникает первая сложность.

Читать полностью »

Последнее время все чаще стали попадаться сайты магазинов на Magento с длинной историей разработки и сопровождения (в несколько лет). На большинстве этих сайтов подключаемые CSS файлы завалены «ошметками» стилевой разметки для страниц, которых уже давно нет на сайте. Как правило, все это не структурировано и не откомментировано. Удаление этого мусора занимает кучу времени и в большинстве случаев на это просто «забивают». Со временем при таком подходе CSS файлы на некоторых сайтах достигаю чудовищных размеров в несколько сотен килобайт.
Читать полностью »

Иногда человечество поражает своей тупостью и нежеланием видеть ситуацию так, как она действительно есть… ( Неизвестные )

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

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

Расскажу небольшую историю, которая случилась со мной на работе. Дело было давно, как-то приасанили меня к новому web-проекту, проектированием которого я не имел ни малейшего отношения. Тимлид первым делом залил в svn php и js framework'и.
В качестве JS был выбран Mootools 1.2.2 или 1.2.4, а в дополнение к нему Jx UI Library в виде JxLib. Все шло хорошо, проект подходил к своему завершению, версии браузеров росли и тд. И вот, в один прекрасный момент, придя на работу я увидел баг, в кором говорилось а том что в IE9 (а он только-только вышел) админка не работает вообще. Первым делам начал искать проблему, как оказалось Mootools 1.2.x — не поддерживает IE9, а вот в версиях over 1.3.x — все работает и летает. Ну, долго не думая, качаем последнюю версию сего чуда и ставим. Радоватся пришлось не долго — начали вылазить баги в JxLib. Оказывается, что проект 'заглох', и последняя доступная версия совместима только с Mootools 1.2.x. Много времени прошло с того момента, но тот говнокод, с помощью которого пришлось залатать этот баг, надломал мою веру в Mootools и ему подобные вещи. Теперь, я думаю, стало ясно, откуда такое отношение к JS либам.

А теперь хочется ответить (пояснить почему так, а не иначе) на некоторые комментарии.

1)
Сonsole.log — вот этого я не ожидал, я предлогал многое но только не это. Я в курсе того что он (console.log) поддерживает форматирование и передачу нескольких параметров, но я не могу вспомнить, когда последний раз я этим пользовался. Мне вполне хватает одной переменной, а усложнять _d() ради того чтобы использовать всю мощь сonsole.log раз в месяц, — нецелесообразно (проще написать заветные 11 символов `сonsole.log`).

2)

Функция addEvent продолжит выполняться после обработки ошибки с помощью функции _d.

— я в курсе этого, это сделано специально, ибо проверку на существование DOM объекта, а предпочитаю делать в основном скрипте, но вы меня меня убедили — добавлю return false.

3)

Загрязнение глобального пространства переменных — очень плохой тон.

— тут вы правы, но кроме readyList = []; я ничего не могу найти глобального :)

Ну что ж, я думаю пора заканчивать эти холивары и начать рассмотрение новой партии JS кода.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js