Особенность событий в jQuery.
Насмотрелся всяких тут умных людей
и полез искать где бы соптимизировать в своих скриптах.
Сегодня замеряя скорость выполнения тех или иных кусков кода JS скриптов заметил такую штуку в случае добавления событий. Есть вот такой вариант №1.
$('#id').change(Obj.EventMethod);
и вариант №2
$('#id').change(function(){ console.log("CHANGE"); });
Кажется ничего особо их не отличает, если вы знакомы с jQuery. Но есть больше НО!. Каждый раз при выполнении кода из варианта №2 в очередь событий добавляется копия функции передаваемой как параметр. Соответственно в случае возникновения события “change” (”change” в приведенном случае) наша функция выполнится столько раз, сколько она была добавлена. Лично я этого незнал, но и таких случаев с многократным добавлением событий я пока что не нашел.
Так что используйте это дело аккуратно.
Интересное решение для noscript
Нашел в исходниках Google Reader интересное решение для noscript.
<noscript><style type="text/css">
div {display: none;}
#noscript {padding: 3em; font-size: 130%;}
</style>
<p id="noscript">JavaScript must be enabled in order for you to use Reader.
However, it seems JavaScript is either disabled or not supported by your
browser. To use Reader, enable JavaScript by changing your browser options,
then <a href="/reader/">try again</a>.</p></noscript>Эта штука скрывает все дивы на странице, и показывает только определенный тег <p>, в котором в данном случае написано что необходимо включить поддержку JavaScript в браузере и попробовать еще раз. Уже вставил и заюзал у себя такое…
Проверка вхождения строки или числа в массив в стиле Python
В Python есть очень приятная возможность проверить вхождение объекта в список. Выглядит это примерно вот так:
if 'a' in ['a','b','c']: print "YES" else: print "NO"
Согласитесь, просто и красиво. А вот в JavaScript нет такой штуки. И я решил написать для себя небольшое расширение объектов Number и String для JavaScript которое позволяет делать проверку похожим способом. › Continue reading
Замена всех подстрок в JavaScript. Пишем метод replaceAll()
Существует ряд наиболее стандартных задач в программировании которые реализованы в ядре языка. Некоторые из них не реализованы напрямую. Например задача замены всех вхождений подстроки в строку в JavaScript. Первое что приходит в голову это вызвать метод replace у строки.
var myString="q w e r qq w e q"; myString = myString.replace('q', 'Q');
Но, существует НО. Этот метод заменит только первую найденную подстроку, а мы хотим заменить все. Метода replaceAll не существует. Вызывать метод replace в цикле пока не будут заменены все подстроки — не наш путь. Решение рядом. › Continue reading
Как почистить скролл у Apple Mighty Mouse?
Сегодня досталась мне для теста мышка Apple Mighty Mouse. Не то что бы для теста, это я решил попробовать попользоваться самым худшим продуктом от Apple, ну так считается вроде. Взял я ее у Виталия Колесника, который тоже сказал что это ужас какой-то. И вот задача – скролл работает только вверх, вниз не крутится нивкакую. Ну засорилась, обычное дело.
Самый банальный метод разобрать и почистить. Для меня, инженера, это было бы не проблемно и довольно привычно, но 1) мышка не моя, поэтому разбирать совсем нежелательно. 2) нет подходящей отвертки под рукой и 3) нижняя часть этой мышки посажена на клей. Пришлось искать походящие способы. › Continue reading
Дибилами растем, дибилов производим
Смотрю, как студенты понтуются, кто из них больше ни фига не делал и всё сдал.
Эх…
Когда я был студентом, я сдавал право одной очень милой женщине. Она была практикующим юристом, и я ожидал, что такой специалист меня сейчас будет гонять от и до по всему конспекту.
Она посмотрела на меня и, ничего не спрашивая, поинтересовалась:
- Оценку вам какую ставить?
- Э… Пять хотелось бы
- Отлично, – сказала она, и стала писать в зачётке
- А вы что, даже ничего спрашивать не будете? – удивился я.
Она оторвалась от заполнения зачётки, внимательно посмотрела на меня и сказала:
- Запомните, молодой человек, чем меньше вы знаете, тем более ценна я как специалист.
Эта фраза мне запомнилась на всю жизнь и больше я не страдал фигнёй во время занятий.
И сейчас самое время мне, уже доценту и одновременно практикующему проектировщику зданий, повторить то же самое:
Господа студенты, не учитесь, пожалуйста! Старайтесь как можно больше получить на халяву! Чем меньше вы знаете по окончании института, тем более ценен я как специалист и тем большую зарплату я могу потребовать за свои услуги!
Вот эта цитата (источник) попала ко мне в гугл ридере, ее расшарил Макс Крайнов, уважаемый в русской блогосфере человек можно сказать обучающий своих читателей правильно жить. Не могу представить как ему понравилась эта цитата, поэтому решил высказать свое мнение по этому поводу. › Continue reading
Удалить все таблицы в базе MySQL одной строкой
Как удалить одной строкой (в том смысле что не писать кучу запросов типа DROP TABLE tablename;) все таблицы в базе данных MySQL. Кажется что может быть проще чем DROP ALL TABLES;. Ан нет! Нет такого запроса. Чтобы найти решение не пришлось долго рыться в бескрайнем интернете
Делюсь решением с вами.
mysql --silent --skip-column-names -u[USERNAME] -p[PASSWORD] [DATABASE] -e "show tables" | \ gawk '{print "drop table " $1 ";"}' | mysql -u [USERNAME] -p[PASSWORD] [DATABASE]
Второе решение этой задачи не заставило себя долго ждать
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | \ grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
via. Какие то проблемы есть с Windows… ну а кто этим занимается в винде? ![]()
Пользуйтесь!
Используем всю мощь TextMate вместе со Spaces
Я недавно заметил что TextMate неправильно ведет себя если использовать его на разных десктопах. Например если я работаю с 2 проектами одновремененно (как минимум 2 проекта в TextMate открыты), мне хочется воспользоваться преимуществами Spaces. Поэтому я распределяю окна относящиеся к разным проектам на разные десктопы.
В случае с TextMate этот так сказать “хак” работает не совсем как ожидается. Дело в том что если перенести одно окно на другой десктоп, то все остальные тоже туда же перекинутся. Соответственно разные проекты невозможно раскинуть по разным десктопам. › Continue reading
Французы решили учить английский
Как многие наверное знают французы не любители иностранных языков и иностранцев. Сегодня уведиел репортаж по BBC по этой теме. Суть в том что их министр образования подумал и решил что в мире все большую популярность набирает английский язык, и что надо больше внимания уделить изучению английского в системе образования.
Собственно не этот факт подтолкнул меня написать, в это как бы нет ничего особенного, современный тренд так сказать
. Поразило то как они его изучают. Там небыло показано как дети в школе сидят на уроке английского языка, хотя такие почти уверен есть. Они его изучают, углубляют, и практикуют на уроке физкультуры! Преподаватель дает указания на английском, и дети пытаются общаться на английском. Мне кажется это в разы лучше чем просто изучение английского на уроках английского языка. Очень хорошее решение.
Как скрыть код скрипта на Python для последующей его продажи.
Если вы пишите скрипты на продажу либо на заказ рано или поздно встает вопрос как скрыть код скрипта который вы продаете и не отдавать исходный код. Зачем это надо? Например для того чтобы скрипт сам по себе не пошел по рукам, за что вы будете получать 0$ со скрипта, который вы сделали для продажи. Для PHP был создан Zend Encoder. Но я уже не сижу на PHP, поэтому сегодня расскажу как скрыть код скрипта на Python.
Дело в том что все скрипты на Python при первом запуске пишутся интерпретатором в виде байткода в файлы с расширением .pyc (это не рус типа РУСский или что-нибудь в этом роде, это PYthonCompiled – т.е. скомпилированый Python код). Интерпретатор Python по умолчанию пытается запускать именно эти файлы, а если он не существует, то использует исходный код после чего записывает этот же pyc-файл. Эти файлы можно создать, так сказать, вручную перед распространением файлов. › Continue reading