Как стать автором
Обновить

FORCE INDEX {FOR ORDER BY}

Время на прочтение 2 мин
Количество просмотров 840
MySQL *SQL *

После обновления марии до 10.9-версии FORCE INDEX перестал работать.

Как известно, оптимизатор запросов не всегда определяет верно индексы, которые нужно использовать. Это происходит ещё и потому, что оптимизатор учитывает объём доступной памяти, а она может быть занята другими выполняющимися запросами. Поэтому часто возникают "плавающие баги", когда один и тот же запрос то использует нужные индексы, то нещадно тормозит. USE INDEX в этом случае бессмысленно использовать — оптимизатор его просто игнорирует.

Почему же FORCE INDEX перестал работать? Оказывается изменился его синтаксис.

Новый синтаксис: FORCE INDEX [{FOR {JOIN|ORDER BY|GROUP BY}] ([index_list]).

Новый синтаксис предполагает, что если проиндексированный столбец находится не в WHERE, а в JOIN или ORDER BY или в GROUP BY, то это нужно указывать явно, иначе оптимизатор и не почешется.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

FWC: SmartSelect — тулкит для работы с компонентами форм типа select, combobox и т.д.

Время на прочтение 2 мин
Количество просмотров 3.3K
Разработка веб-сайтов *
FWC:SmartSelect 2.7

хей йо)
начну.
всем известны проблемы с тегом select в html: отсутствие возможности настройки внешнего вида, перекрывание абсолютно позиционированных слоев, отсутствие комбобоксов (выпадающих списков с возможностью ввода), отсутствие нормального мультивыбора и некоторые другие. все они имеют некоторые, чаще всего корявые, решения, которые врядли можно назвать панацеей.

когда мне всё это надоело, я написал тулкит, который решает все эти проблемы одним махом.
этот тулкит позволяет максимально просто создать «поддельный» выпадающий список, который на первый взгяд идентичен стандартному тегу select, но лишенный всех его недостатков.

кроме того он позволяет использовать некоторые очень полезные функции, крайне популярные в последнее время. например, удобный API для управления списками и пунктами (создание, редактирование, удаление), ajax-подгрузка каскадных списков (когда содержимое некоторых списков зависит от других), а также создание простых текстовых полей с автоподстановкой значений при вводе (в том числе и из серверных ресурсов, аналогично Google Suggest).

все настройки для компонентов smartselect описываются в отдельном xml-файле или json-строкой.

Читать дальше →
Всего голосов 29: ↑25 и ↓4 +21
Комментарии 85

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

Время на прочтение 4 мин
Количество просмотров 8K
Разработка веб-сайтов *
Перевод
Примечание: ниже находится перевод тезисов доклада «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 используется для группировки связанных полей формы. Может быть вложенным.

Читать дальше →
Всего голосов 43: ↑38 и ↓5 +33
Комментарии 70

Замена стандартного select с использованием Mootools

Время на прочтение 2 мин
Количество просмотров 4K
MooTools *
Иногда бывает нужно заменить стандартный HTML элемент select своим.
Обычно это необходимо, если фантазия дизайнера разыгралась и он нарисовал «кастомизированный» select и настаивает, чтобы было реализовано как он того захотел. Ну что ж, надо — сделаем.

Небольшая предыстория.

Однажды мне было необходимо кастомизировать select. Я использую mootools, поэтому, сразу пошел искать плагинчик для замены select'a — вдруг кто-то уже написал? Действительно, нашел несколько. Стал разбираться. Все просмотренные мною плагины оказались полной ерундой — они вели себя не как стандартный select. Выкинул их в помойку и решил написать свой плагин, который бы полностью повторял поведение стандартного select'a.
Читать дальше →
Всего голосов 52: ↑47 и ↓5 +42
Комментарии 76

Не возможно обновить (UPDATE) ту же таблицу, которую используешь в SELECT-запросе

Время на прочтение 1 мин
Количество просмотров 764
Чулан
Сегодня наткнулся на очень неприятный баг в MySQL. При выполнении следующего запроса в MySQL 5.0.45:

UPDATE `files` SET `file_md5` =
(
SELECT MD5( `file_blob` )
FROM `files`
WHERE `id`= 6
)
WHERE `id` = 6

Получил ошибку:
#1093 — You can't specify target table 'files' for update in FROM clause
Читать дальше...
Всего голосов 35: ↑6 и ↓29 -23
Комментарии 12

Дерево в выпадающем списке средствами XSLT

Время на прочтение 6 мин
Количество просмотров 4K
XSLT *
Допустим, у нас на сайте есть у нас нечто иерархическое. Например, категории товаров. У категорий есть подкатегории и так далее. И пусть нам захотелось вывести эту иерархию в выпадающий список.
Далее
Всего голосов 32: ↑30 и ↓2 +28
Комментарии 30

Полный html-код для вывода списка регионов России

Время на прочтение 14 мин
Количество просмотров 6.5K
Чулан
При создании формы, в строке «регион» потребовалось сделать перечисление регионов. Поискав в сети подобного списка, да ещё к тому же совпадающего с текстом Конституции, не нашёл. В итоге создал свой. Делюсь им со всеми желающими.

1. Важно — регионов сейчас 83 (upd!). Не все программисты заметили, что в последние годы некоторые регионы успели объединиться. Под катом html-код.

2. Создал три варианта для Value. Один по названиям регионов, второй по автомобильным кодировкам, третий — по ISO. Регионы отсортированы по тому, как идут в Конституции, однако у новообъединённых регионов вроде Забайкальского края, код не соответствует положению.

UPD: регионов всё-таки 83. Прошу прощения. Код поправлен.
UPD: создан третий вариант с ISO-3166-2 в качестве ID и Value для регионов.
UPD: добавил недостающие названия республик.

Пожалуйста, пользуйтесь.
Читать дальше →
Всего голосов 23: ↑19 и ↓4 +15
Комментарии 48

Select теряет ON при JOIN'e

Время на прочтение 1 мин
Количество просмотров 597
Zend Framework *
Столкнулся с проблемой в ZF.
Есть две связанных таблицы. Обе наследуют Zend_Db_Table_Abstract. Формируем запрос к БД:

$select = $this->select();
$select->where(’Catalog.trashed = ?’, 1)
->where(’C.trashed = ?’, 0)
->join(array(’C’ => ‘Categories’), ‘C.id = Catalog.categoryid’, array())
->order($sort);


Смотрим запрос к БД:
SELECT `Catalog`.* FROM `Categories` AS `C` INNER JOIN `Catalog` WHERE (Catalog.trashed = 1) AND (C.trashed = 0) ORDER BY `sort` ASC

ON в JOIN потерялся.
А вот и решение:
Всего голосов 2: ↑0 и ↓2 -2
Комментарии 4

css opacity и select-ы

Время на прочтение 2 мин
Количество просмотров 13K
Разработка веб-сайтов *
Совсем недавно натолкнулся на один занимательный CSS баг/фичу, решил поделиться, возможно кому пригодится.
Нужно было на сайте создать выбор городов из списка, стандартный список не подошел по эстетическим соображениям, результат должен был выглядить как «ссылка» при клике на которой выпадает список доступных городов, задача банальна, но тут случайно наткнулся на занимательное поведение браузеров, причем как оказалось у всех одинаковое.
Читать дальше →
Всего голосов 70: ↑65 и ↓5 +60
Комментарии 48

Отличия сетевых вызовов Windows и Linux

Время на прочтение 4 мин
Количество просмотров 20K
Разработка веб-сайтов *
Из песочницы
image
Во многом совместимые на уровне исходных кодов модели сокетов от Berkeley и Microsoft, на практике оказываются не такими уж кросплатформенными.

Рассмотрим некоторые хитрые различия в их реализации, которые обнаружились при написании кросплатформенного RPC для перенаправления сетевых вызовов некоторого процесса в одной ОС на другую ОС.
Читать дальше →
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 2

Пять способов показать выпадающий список в Asp.Net MVC, с достоинствами и недостатками

Время на прочтение 7 мин
Количество просмотров 44K
ASP *
В большинстве интродукций к Asp.Net MVC рассказывается о том, как красиво и просто организовать привязку модели к простым полям ввода, таким, как текстовое или чекбокс. Если ты, бесстрашный кодер, осилил этот этап, и хочешь разобраться, как показывать выпадающие списки, списки чекбоксов или радиобаттонов,
этот пост для тебя.
Всего голосов 48: ↑35 и ↓13 +22
Комментарии 18

Еще раз об архитектуре сетевых демонов

Время на прочтение 13 мин
Количество просмотров 18K
Высокая производительность *
Во многих статьях, в том числе на хабре, упоминаются и даже описываются разные способы построения архитектуры сетевых сервисов (демонов). При этом мало у кого из авторов есть реальный опыт создания и оптимизации демонов, работающих с десятками тысяч одновременных соединений и/или гигабитным трафиком.

Так как большинство авторов не удосуживается хотя бы залезть в документацию, то обычно в таких статьях вся информация базируется на неких слухах и пересказах слухов. Эти слухи бродят по сети и поражают википедию, хабрахабр и другие уважаемые ресурсы. В результате получаются опусы вроде "Вы наверное шутите, мистер Дал, или почему Node.js" (пунктуация автора сохранена): она, в основном, верная по сути, но изобилует неточностями, содержит ряд фактических ошибок и изображает предмет с какого-то непонятного ракурса.

Мне было сложно пройти мимо статьи, изобилующей фразами вроде «эффективные реализации polling'а на сегодняшний день имеются лишь в *nix-системах» (как будто poll() есть где-то, кроме некоторых *nix). Этот пост начинался как комментарий, разъясняющий уважаемому inikulin ошибки в его статье. В процессе написания оказалось, что проще изложить предмет с самого начала, что я собственно и делаю отдельным постом.
В моем очерке нет срыва покровов или каких-то неизвестных трюков, здесь просто описываются преимущества и недостатки разных подходов человеком, который проверял, как всё это работает на практике в разных операционных системах.
Для желающих просветиться — добро пожаловать под кат.
Читать дальше →
Всего голосов 161: ↑159 и ↓2 +157
Комментарии 53

jQuery CoreUISelect — плагин для стилизации селекта

Время на прочтение 1 мин
Количество просмотров 19K
Разработка веб-сайтов *JavaScript *jQuery *
На Хабре уже проскальзывали обзоры плагинов для стилизации селекта (раз и два)

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



Итак, задача — сделать плагин с блэкджеком и ш… для стилизации селекта, который по максимуму повторяет поведение стандартного. А это навигация с клавиатуры, автоподгонка ширины дропдауна, поддержка optgroup, автокомплит и самое главное полная кастомизация, включая скроллбар*.
Читать дальше →
Всего голосов 63: ↑57 и ↓6 +51
Комментарии 61

Оптимизация производительности SQL Server с использованием индексов

Время на прочтение 8 мин
Количество просмотров 72K
SQL *Microsoft SQL Server *
Из песочницы

Введение


Как известно, индексы повышают производительность аналогично оглавлению или предметному указателю в кнгие. Прочитав несколько статей в интернете и пару глав из книжек, хотелось бы узнать, насколько индексы помогают увеличить скорость выборки данных из SQL Server. Рассмотрим на примере.
Читать дальше →
Всего голосов 17: ↑7 и ↓10 -3
Комментарии 49

Замена стандартных селектов в браузере

Время на прочтение 2 мин
Количество просмотров 13K
JavaScript *jQuery *
Selectimus


На текущем проекте некоторое время назад стала задача по унификации селектов во всех браузерах. Нужно было изменить их так, чтобы при одинаковом отображении они внешне оставались близкими к стандартным но при этом имели возможность гибкой настройки средствами CSS. Поискав готовые библиотеки, на тот момент ничего подходящего не нашел и решил сделать свой. Взял за отправную точку дизайн близкий к стандартному, плюс замена скроллбара, со стандартного системного на свой, также одинаковый во всех браузерах. Реализован скрипт в виде jQuery плагина. Требуемая версия jQuery – 1.5+.
Читать дальше →
Всего голосов 25: ↑11 и ↓14 -3
Комментарии 62

Тонкости AngularJS: select внутри шаблона директивы

Время на прочтение 3 мин
Количество просмотров 23K
JavaScript *Angular *
Эта статья будет описывать решение одной конкретной задачи, а также на примере показывать как работает $transclude.

Задача такая: сделать директиву, обертку для select-а. Предположим, что мы хотим одним тегом добавлять сразу и селект и label к нему (потом можно будет туда добавить ошибки заполнения, но мы для простоты не будем этого делать). В общем то, на первый взгляд выглядит все просто.

Сделаем директиву и назовем ее field. Использовать будем так:

<field title="Цвет" type="select" ng-model="selectedColor" options="color.id as color.name for color in colors"></field>
Читать дальше →
Всего голосов 26: ↑20 и ↓6 +14
Комментарии 9

Мультиселект и автокомплит на AngularJS

Время на прочтение 4 мин
Количество просмотров 24K
Разработка веб-сайтов *JavaScript *Angular *
Со списками множественного выбора на Ангуляре всегда было неважно. Существующие решения либо обертки над jQuery-плагином, либо выглядят как не пойми что, либо просто корявы. И у всех естественно особое уникальное АПИ, как будто пользователям делать больше нечего как вникать в ход мыслей разработчиков каждого плагина. Меня такое положение дел не устроило, поэтому написал свой велосипед. Спустя год он дозрел до публикации.

Та-дам! (и забавная история вконце)
Читать дальше →
Всего голосов 22: ↑20 и ↓2 +18
Комментарии 71

Параллельная обработка большого селекта в нескольких сессиях

Время на прочтение 10 мин
Количество просмотров 19K
Блог компании Samtrest Oracle *Java *SQL *
Представьте: есть селект, который возвращает записи, каждую из которых нужно обработать, и то ли много записей, то ли обработка каждой записи занимает много времени, а процесс обработки одной записи не зависит от процессов других записей.
Классический пример для того, чтобы задействовать многопоточность или в случае баз данных выполнять обработку в нескольких сессиях. В Оракле для этого используется hint /*+ parallel() */ и pipelined functions. Это здорово, но если у вас Oracle standard edition(где parallel не работает) или вы хотите обработать не каждую запись по отдельности(из соображений, что лучше накопить работу, а потом в bulk, одним ударом, выполнить), а поделить весь вывод селекта на куски и каждый обработать отдельно?
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 9

select / poll / epoll: практическая разница

Время на прочтение 10 мин
Количество просмотров 60K
Блог компании Инфопульс Украина Системное программирование *Сетевые технологии *C *Разработка под Linux *
Перевод
При проектировании высокопроизводительных сетевых приложения с неблокирующими сокетами важно решить, какой именно метод мониторинга сетевых событий мы будем использовать. Их есть несколько и каждый хорош и плох по-своему. Выбор правильного метода может быть критически важной вещью для архитектуры вашего приложения.

В этой статье мы рассмотрим:

  • select()
  • poll()
  • epoll()
  • libevent
Читать дальше →
Всего голосов 60: ↑55 и ↓5 +50
Комментарии 65

Серия MicroSD, созданная с чистого холста

Время на прочтение 6 мин
Количество просмотров 28K
Блог компании Kingston Technology Разработка под Android *Смартфоны Фототехника Настольные компьютеры
Вот казалось — SD-карты памяти. Изобретены лет 20 назад, начали продаваться — чуть позже, эксплуатируются повсеместно, дважды уменьшались в размерах — сперва до Mini-формата, а затем и до Micro. За время жизни выросли по объёму ~ в 2 000 раз, чего ещё желать? Правильно, увеличения скорости работы. И разумных цен. И то, и другое есть у новых линеек Kingston. А ещё в них наконец навели порядок — вместо десятка вариантов осталось всего три. Заманчиво?


Читать дальше →
Всего голосов 26: ↑21 и ↓5 +16
Комментарии 60
1