Как-то раз столкнулся с необходимостью сгенерировать в Javascript хэш из строки. Да не просто сгенерировать, а так, что бы он полностью совпал с хэшем, сделанным в Java. Полазил в интернете и нашел.
String.prototype.hashCode = function() {
var hash = 0;
try {
if (this.length == 0) return hash;
for (i = 0; i < this.length; i++) {
char = this.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash; // Convert to 32bit integer
}
return hash;
} catch (e) {
throw new Error('hashCode: ' + e);
}
};
В январе месяце EPAM провел свой очередной хакатон EPAM Grand Hackathon 2013. На этот раз он был открыт, но не для участия, а для посещения, так что любой желающий мог придти и посмотреть «как это было».
Вот видео с этого мероприятия.
Часто возникает необходимость в JavaScript найти данные в массиве или объекте по ключу и значению. Стандартной функции или метода к сожалению не существует. Ниже пример такой функции, в которую нужно передать параметр arr
(массив или объект) и keyObj
(ключ и значение, например {id:10}
).
Всем давно и доподлинно известно, что использовать глобальные переменные в JavaScript не принято. Почему? Существует масса причин, все они, конечно же, глупы, но давайте придерживаться такой теории.
Однако иногда возникает необходимость иметь и пользовать глобальную переменную. Но как тогда быть? А если вдруг мы пишем для Node.js, там ведь нету глобального объекта window
, там root
? А если я хочу использовать свой код и во фронтенде и на сервере?
За сим предлагаю такое решение, которое знатно растиражированно, но никто о нем никогда не помнит.
var global = (function () {
return this || (1, eval)('this');
}());
Теперь у нас есть глобальный объект global, который обладает всеми свойствами window
/ root
. Элегантное и просто решение.
Придумал не я, украл вот тут.
Однажды один мой товарищ попросил сделать для одного его проекта кнопку удаления, которая содержала бы внутри себя подтверждение. Т.е. как это сделано обычно? Нажимаешь удалить - выскакивает окно с вопросом "Вы уверены, что ходите удалить то-то и то-то?" - нажимаешь "Да", после чего удаляется то, что надо. Так вот, он хотел чтобы нажимаешь "Удалить", внутри кнопки меняется текст на "Вы уверены?", нажимаешь еще раз и происходит удаление.
Идея показалась мне интересной, и я решил поделиться способом простой реализации.
Тут CNews сообщает:
Дыра в безопасности браузера Safari, которую в «Лаборатории Касперского» назвали «катастрофической», позволяет хакерам без лишних усилий узнавать логины и пароли пользователей к различным сайтам. Пары логин-пароль хранятся в plist-файле в незашифрованном виде.
Safari, как и многие другие современные браузеры, умеет восстанавливать прошлую рабочую сессию. То есть пользователь, открыв свой браузер, путем простейших манипуляций может восстановить все открытые им в прошлую рабочую сессию сайты и даже автоматически на них авторизоваться.
«Для того чтобы браузер знал, на чем пользователь закончил прошлую сессию, эту информацию надо где-то сохранить. Очевидно, что это надо сделать в месте, которое не будет легко доступно кому угодно, и уж точно информация должна быть в зашифрованном виде», - рассказал эксперт «Лаборатории Касперского» Вячеслав Закоржевский.
Согласно исследованию эксперта, Safari хранит данные последней рабочей сессии (включая пары логин-пароль для авторизации на посещаемых сайтах) в незашифрованном виде в обычном plist-файле в свободном доступе. «Из него легко добыть учетные данные пользователей», - говорит Закоржевский. «Мы считаем, что хранение конфиденциальной информации в открытом виде с неограниченным доступом - это катастрофическая дыра в безопасности, позволяющая злоумышленникам беспрепятственно воровать пользовательские данные, затрачивая при этом минимум усилий. На данный момент мы не можем подтвердить или опровергнуть существование реального вредоносного кода, обращающегося к этому файлу. Но готовы биться об заклад, что такое ПО не заставит себя долго ждать», - добавил аналитик.
Функция восстановления сессии (Reopen All Windows from Last Session») работает в следующих версиях OS X и Safari: OS X 10.8.5, Safari 6.0.5 (8536.30.1), OS X 10.7.5, Safari 6.0.5 (7536.30.1).
Ну так нефиг давать компьютер людям, которые могут полезть в plist
за вашими паролями!
Ниже несколько интересных CSS-хаков и свойств, о существовании которых забывают, а то и вовсе не знают.
html {
overflow-y: scroll;
font-size: 100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
Вы знаете, что если для html
жестко указать скролл по вертикали, то при динамическом добавлении контента у вас не будет неожиданного ресайза, когда скролл понадобиться, а мобильные браузеры не будут подстраивать размер шрифта если задать text-size-adjust
.
В силу разных причин, для работы я пользуюсь Mac OS. К счастью, разнообразие редакторов кода для этой системы позволяет выбрать что-то действительно удобное именно для меня. Попробовав многие из представленных на рынке программ, я составил свой рейтинг из четырех, который вам и представлю.
Первый из лучших, прототип для популярного Sublime Text. Вторая версия Textmate стала бесплатной и при этом не потеряла своей функциональности. Редактор не кроссплатформенный, а написан именно для использования в Mac OS, поэтому очень маленький и быстрый. Много плагинов и возможностей. Именно его я использую каждый день.
Наверное самый популярный сегодня кроссплатформенный редактор. Для него написаны сотни плагинов и сниппетов. Редактор платный - $70, но при этом его бесплатная версия ни в чем не уступает платной. Есть, правда, одна особенность, периодически при сохранении выскакивает окошко с предложением купить редактор. Достаточно просто закрыть это окно и можно успешно работать дальше. Неоспоримым преимуществом этого редактора является возможность выделять сразу много разрозненных кусков кода (мультиселект) и редактировать их одновременно.
Молодой, но многообесчающий редактор. Написан только для Mac OS. Стоимость - $49. Бесплатно можно пользоваться 14 дней. Количество плагинов пока не велико, но сообщество растет и развивается. Так же имеет в своем арсенале возможность мультиселекта.
Бесплатный редактор от Adobe с открытым исходным кодом. Написан под Windows, Mac OS, Linux. Интерес вызывает то, что написан он на JavaScript. Это правда обуславливает и его недостатки: медленную работу и большой размер. Есть у него и ряд преимуществ перед другими редакторами:
Никаких выводов делать не стану, каждый сам волен выбирать, что использовать для работы. Мне кажется, что описанные мной программы все-таки лучшие для Mac OS на сегодняшний день. И да, я не учитывал здесь огромные и громоздкие комбайны вроде WebStorm. Все-таки они слишком многофункциональны для html/css/javascript разработки.
Оформление современных сайтов состоят из множества стилей, которые могут работать или не работать в тех или иных браузерах. Чтобы всё работало везде, для некоторых свойств необходимо использовать префиксы разных браузеров. По английски они называются vendor prefixes
.
Ниже список самых необходимых и популярных свойств, использующих префиксы (или где их ставят по ошибке):
border-radius
: Если не нужна поддержка Firefox 3.6 или iOS 3.2
box-shadow
: Если не нужна поддержка Firefox 3.6 или iOS 4.3 или Safari 5.0
text-shadow
border-image
CSS Transitions
: -webkit- для Safari 6.0
CSS 3D Transforms
: -webkit- для Safari и Chrome
CSS Animation
: -webkit- для Safari и Chrome
CSS Gradients
: -webkit- для Safari
Box Sizing
: -moz-.
CSS Calc
: -webkit- для Safari 6.0
CSS Transforms
: -webkit- для Safari и Chrome и -ms- для IE9
Flex Box
: -webkit- и -ms-.
Columns
: -webkit- и -moz-.
Почему я не упомянул про префикс -o-, который использовался в опере до 12 версии включительно? Потому, что о ней стоит упоминать только в контексте сайтов, которые будут сделаны для просторов СНГ. Если это ваш случай, то помните - Opera <=12 занимает около 9 процентов СНГ-шного рынка браузеров. В таком случае префикс -o- необходимо добавлять для свойтсв, для которых могут ставиться префиксы -webkit- или -moz-.
2.9 тыс.
3.1 тыс.
2.5 тыс.
5.2 тыс.
2.9 тыс.
3.1 тыс.
1.4 тыс.
3.1 тыс.