С чего вдруг самые последнии модели от топовых брендов вдруг стали не топовыми?
Самые что ни на есть топовые, и самым что ни на есть прямым образом разбивают всю вашу псевдотеорию
Прежде чем учитывать инфляцию, надо разобраться с цифрами
Итого: средняя цена на топовый смарт в 2007-м году = 582$
…
А теперь наш радужный 2016-й. Смартфоны топовые. Цены смотрел на оф.сайтах и/или на Amazon.
…
Итого: средняя цена на топовый смарт в 2016-м году = 700$
Но если взять «радужный 2016» и посмотреть на цены, то получится:
iPhone 7 32Gb $649
Galaxy Note5 32Gb $539.99
Sony Xperia XZ 32Gb $649.99
Huawei Nexus 6P, 32Gb $499.95
И получается средняя цена: $584, а не $700
Тоесть на 2$ средняя цена смартфона выросла
А теперь добавляем учет инфляции, получается смартфоны становятся не только лучше, но и дешевле
По этой причине старший товарищ дал указание написать функцию на событие keypress.
…
Код взят со steckoverflow, но мой код мало чем отличался от примера выше.
…
Всё выглядело красиво — пользователь не видит вводимых чисел и курсор не перебрасывает в конец строки, но, как оказалось, радовались мы рано. Если смотреть на keycode клавиш на разных операционных системах (mac, linux, win), то они имеют некоторые различия, а если к этому прибавить то, что не у всех маков есть numPud и, следовательно, числа вводятся с зажатым шифтом и также цифры могут вводится с виртуальной клавиатуры. В итоге получается код во много раз больше, чем последний пример.
Разница есть. Ваш товарищ дал вам указание использовать keypress, а в примере keydown, в этом и есть разница
У keypress будет код финального символа, а у keydown будет выдан keyCode клавиши плюс флаги нажат ли shift, alt и т.д, раскладка игнорируется. Можно проверить в живую: https://learn.javascript.ru/keyboard-events
То есть если у нас keypress и нажать 1 мы получим keyCode=49, с зажатым шифтов получим уже keyCode=33
Если у нас keydown и нажать 1 (хоть с шифтом, хоть с чем угодно) мы всегда получим keyCode=49 на любой клавиатуре, на любой ОС, хоть на виртуальной клавиатуре планшета
Аналогично даже если текущая раскладка русская, нажимая точку получаем 'ю', но keyCode всё равно будет 190 (как и у просто точки), а не 1102 (код символа 'ю')
Обычно тоже просто тапом увеличиваю, а зумлю чтобы протестировать не разъезжается ли дизайн. Щас проверил в новом сафари, ранее открытые страницы он не затрагивает, зумит только текущую и ново открытые, не знаю изменят ли это поведение или нет, но вроде гуд
Больше порадовало, что наконец-то добавили cmd+shift+T чтобы возвращать всю историю открытых закладок, единственное чего реально не хватало перейдя с хрома. Ну и es6 полноценно завезли
В сафари на ios это сделано через «Добавить в список для чтения», страница будет выгружена в оффлайн и потом можно читать в любой момент, но неудобно, да
Но в целом на новых версия ios намного реже выгружает страницу, и даже запустив пару игр вернувшись в сафари страница остаётся как была, без перезагрузки (перепроверил щас, открыл 3 разные страницы с картинками и гифками, промотал их подальше, запустил асфальт, запустил тайм серфер, включил авиарежим, открыл сафари снова — всё осталось как было, все 3 страницы переключаются без интернета)
Меня наоборот всегда удивляет это поведение в хроме, хочу разово увеличить страницу, а он все перерисовывает под новый масштаб, даже которые уже были открыты
По поводу 1 пункта, очень часто вложенные функции из функции не получится вынести (хотя бы даже чтобы глобал скоп не засорять кучей ненужных функций)
Можно сделать проще и воспользоваться тем фактом, что функция это объект, у объекта могут быть «приватные методы» и собственно и вернуть экземпляр объекта с уже созданными единожды функциями trimStart и trimEnd. Эффект будет тот же:
var trim = function() {
function trimStart(string) {
return string.replace(/^\s+/g, "");
}
function trimEnd(string) {
return string.replace(/\s+$/g, "");
}
return function (string) {
return trimEnd(trimStart(string))
}
}();
Оригинал:
trim1: 138.231ms
Вынесли функции:
trim2: 102.128ms
Вернули объект:
trim3: 101.680ms
В firefox кстати результат для всех 3 случаев примерно ± одинаков
Почему бы и нет? По крайней мере с внедрением webassembly наступит куда быстрее, так как не придется ждать пока что-то добавят и реализуют в стандарте html5, а можно будет написать всё необходимое самостоятельно, подключать на станице нужный модуль и это будет работать на уровне ± нативной производительности
Этот подход чем-то похож на то, что уже есть с flash, но в первую очередь отличие в том, что не требуется ставить плагин в систему, который целиком зависит от единственной фирмы. Формат webassembly всё таки опенсорсный и все основные браузеры уже выпустили версию браузера с поддержкой webassebmly — https://webassembly.github.io/demo/
Самые что ни на есть топовые, и самым что ни на есть прямым образом разбивают всю вашу псевдотеорию
Средняя цена получается $612, а не $700
С учетом инфляции 20% получается тот же вывод, что и выше, смартфоны стали лучше и дешевле
Но если взять ваши модели:
iPhone 7 32Gb $649
Samsung Galaxy S7 32 Gb $540
Google Pixel 32Gb $649
Получается $612, что ближе к $582 из 2007, и далеко от 700$
Но если взять «радужный 2016» и посмотреть на цены, то получится:
iPhone 7 32Gb $649
Galaxy Note5 32Gb $539.99
Sony Xperia XZ 32Gb $649.99
Huawei Nexus 6P, 32Gb $499.95
И получается средняя цена: $584, а не $700
Тоесть на 2$ средняя цена смартфона выросла
А теперь добавляем учет инфляции, получается смартфоны становятся не только лучше, но и дешевле
это чето немного не то
В каментах уже предложили исправленную версию:
http://codepen.io/anon/pen/LZVbNm
Разница есть. Ваш товарищ дал вам указание использовать keypress, а в примере keydown, в этом и есть разница
У keypress будет код финального символа, а у keydown будет выдан keyCode клавиши плюс флаги нажат ли shift, alt и т.д, раскладка игнорируется. Можно проверить в живую: https://learn.javascript.ru/keyboard-events
То есть если у нас keypress и нажать 1 мы получим keyCode=49, с зажатым шифтов получим уже keyCode=33
Если у нас keydown и нажать 1 (хоть с шифтом, хоть с чем угодно) мы всегда получим keyCode=49 на любой клавиатуре, на любой ОС, хоть на виртуальной клавиатуре планшета
Аналогично даже если текущая раскладка русская, нажимая точку получаем 'ю', но keyCode всё равно будет 190 (как и у просто точки), а не 1102 (код символа 'ю')
Всё таки для винды можно просто докер образ развернуть без установок виртуалки, докер на 10 винде нативно работает
https://docs.docker.com/docker-for-windows/
https://hub.docker.com/r/tarantool/tarantool/
http://youmightnotneedjquery.com/
Больше порадовало, что наконец-то добавили cmd+shift+T чтобы возвращать всю историю открытых закладок, единственное чего реально не хватало перейдя с хрома. Ну и es6 полноценно завезли
настраивайте как хотите
Но в целом на новых версия ios намного реже выгружает страницу, и даже запустив пару игр вернувшись в сафари страница остаётся как была, без перезагрузки (перепроверил щас, открыл 3 разные страницы с картинками и гифками, промотал их подальше, запустил асфальт, запустил тайм серфер, включил авиарежим, открыл сафари снова — всё осталось как было, все 3 страницы переключаются без интернета)
Можно сделать проще и воспользоваться тем фактом, что функция это объект, у объекта могут быть «приватные методы» и собственно и вернуть экземпляр объекта с уже созданными единожды функциями trimStart и trimEnd. Эффект будет тот же:
Оригинал:
Вынесли функции:
Вернули объект:
В firefox кстати результат для всех 3 случаев примерно ± одинаков
Этот подход чем-то похож на то, что уже есть с flash, но в первую очередь отличие в том, что не требуется ставить плагин в систему, который целиком зависит от единственной фирмы. Формат webassembly всё таки опенсорсный и все основные браузеры уже выпустили версию браузера с поддержкой webassebmly — https://webassembly.github.io/demo/