Месяц: Октябрь 2011

Checkbox в Chrome и Safari

В браузерах, основанных на WebKit, иногда портятся check­­box-ы. Девид Уолш описал проблему и дал великолепное решение: .check­boxList li { /* ..or what­ev­er the par­ent is */ line-height: 20px; }

JavaScript: быстрые циклы

length в JavaScript — штука медленная. Это очень хорошо видно по скорости выполнения циклов. Вовремя заменив for на while, можно получить выигрыш в производительности в 7 раз. В умелых руках циклы JavaScript прекрасно заменяют друг друга. А значит, есть повод дополнить старый постинг о среднем арифметическом. var digitRegEx=/^-?d+([,.]d+)?$/g; func­tion arith­meticMean() { var len = arguments.length,…

Прочитать статью целиком

JavaScript: быстрый парсинг числа

Как вы думаете, как быстрее парсить число с плавающей точкой — вот так: func­tion isNumber(n) { if (n == null) return null; var num_parsed = parseFloat(n); return (!isNaN(num_parsed) && isFinite(n)) ? true : false; } Или так (reg­Exp немного исправлен по сравнению с примером с суммой, чтобы уважить сербов): var digitRegEx=/^-?d+([,.](d+)?)?$/g; func­tion isNumberRegExp(n) { return…

Прочитать статью целиком

JavaScript: переменные в RegExp

Reg­­Exp-переменные для string.replace() в JavaScript от автора известной мануалки. $1: 1-ая группа $99: 99-ая группа. Если группы 99 нет — 9-ая и 9. Если 9-ой нет — просто 99 долларов $+: Группа с максимальным номером. $&: Весь Reg­Exp. Никакого $0 нет!!! $‘ (back­tick): Слева от Reg­­Exp-а. $’ (sin­gle quote): Справа от Reg­­Exp-а. $_: Вся строка,…

Прочитать статью целиком

JavaScript: concat для getElementsByTagName

Иногда гибкость JavaScript немного обманывает. Например, все знают, что getEle­ments­By­Tag­Name возвращает вроде бы массив. И если нам нужно получить все input и textarea, то мы посмотрим в справке, что есть фунция con­cat и — склеим! Увы, нас ждёт разочарование. То, что приходит — это набор, но не совсем массив. Его надо преобразовывать в Array и…

Прочитать статью целиком

C++: Размер массива, switch в одну строку и cдвиги

Размер массива в C/C++: MyHugeStruc­ture array[100]; int array_size = sizeof(array)/sizeof(*array); for(int i = 0; i < array_size; i++) array[i].id = i; Следующие два варианта актуальны и для других языков. Switch в одну строку с поддержкой всех типов: str = num­ber == 1 ? “one” : num­ber == 2 ? “two” : num­ber == 3 ?…

Прочитать статью целиком