All streams
Search
Write a publication
Pull to refresh
22
Ясюкевич Павел @pashakread⁠-⁠only

User

Send message
Хорошее замечание: для подобного вида изображений лучше использовать PNG.

А шрифт:
1) Где-то я уже видел что-то похожее
2) Ну стало больше на один свободный шрифт, не более того
3) Кстати да, его можно использовать для гипертекстового векторного фидонета
Честно, я не понимаю гугл. Зачем создавать еще один язык программирования?
1) У них V8 и так быстр, куда уж быстрее.
2) С какой стати остальные браузеры будут поддерживать Dart? Есть же JavaScript.
3) Насколько я помню, на гугле еще Go висит. И насколько выросла его популярность? Даже сам гугл при запросе показывает Go шестым по счёту. Я думаю, Dart постигнет та же участь.
4) Да и люди ленивы. Если до сих пор на IE7-8 сидят, особенно это касается крупных компаний, то про Dart тут и речи не может быть.
5) Разработчики интернетов обещали JavaScript 2.0. И я не сомневаюсь, что он выйдет.

поддавайся на уловки @ минусуй
Как клиентский программист, я с вами согласен, что IE можно поддерживать с восьмой версии, но не ниже. Потому что в плане рендеринга страниц восьмая версия, конечно, отстаёт от девятой, но имеет результат гораздно более близкий к ожидаемому. Эта проблема относится к верстальщикам. Огорчает IE и программистов, потому что в своё время IE8 был очень большим продвижением, но всё равно его функционала не хватает для нормальной разработки: постоянно приходится что-то дописывать.

И мне всё равно, что этот комментарий заминусуют. Но поймите же вы, что, идя на уступки в виде поддержки старых браузеров, вы замедляете развитие интернетов!
1-2. За совет спасибо.

3. Почитайте, что такое strict mode. Если мне вдруг придётся сделать рекурсивную функцию, то с помощью arguments.callee я не смогу обратиться к текущей анонимной функции. Во-вторых, при отладке я сразу же буду видеть по именам в стеке вызовов, где произошла ошибка. Это, кстати, для меня и есть главная причина писать имена. В-третьих, гляньте пример:
(function init() {
    var f = function f() {
            alert(f);
        },
        z = f;
    f = 1;
    alert(f);
    z();
})();
В таком случае внутри функции f переменная f не будет замыканием.

6-7. В заголовке написано — именно для IE8.

9. Признаю фейл с оператором %. И, да, я потерял проверку, когда переписывал эту функцию.

За пункты 5, 8 и 9 ставлю плюс.

Отдельная благодарность будет в статье.
Специально для вас:
clip2net.unet.by/page/m341/61867
Просто откройте при включенном интернете.
Сваял по-быстрому, поэтому возможны ошибки. Да и на английский не обижайтесь )
Толсто, друг мой.

Переменные верхнего регистра у меня обозначают замыкания, недоступные извне.

Если вас бесят конструкции приведенного вида, вы можете переписать их сами — было бы желание.

По поводу хранения ссылок: их можно и не хранить, но тогда при большом количестве элементов при траверсе HTML при обновлении словаря будут страшные тормоза на странице.

А еще у меня совсем не виджеты, а полноценные приложения. И да, архитектура намного сложнее, чем вы можете представить.

Пожалуйста, это ваше собственное желание — писать по IE. Кстати, да, вот вам баянчик.

И давайте не будем мыслить узко. Эта штука может не только языки менять, а текст как вам угодно в принципе. Например, кто-то независимо дописывает тексты в БД, и как только происходит сохранение, то изменения отражаются на клиенте почти моментально (например, с использованием лонг-поллинга или веб-сокетов).
/*саркастично*/
Правильно — пересоздайте все элементы на странице и потеряйте обработчики событий на них.
Еще раз для вас:
Суть библиотеки не в замене ключей на их значения, а в изменении текущего значения элемента на новое при изменении словаря. Причём словарь может быть загружен или выгружен в произвольный момент времени.
Совершенно необязательно. Реализация связывания элементов с хэшем ложится на стороннего программиста, который использует эту библиотеку.
Да, можно использовать и приведённый вами пример; можно указывать ключ в атрибутах; можно вообще не указывать ключ, а совершать «накладывание» JavaScript-объекта с ключами на HTML-структуру.
Суть библиотеки не в замене ключей на их значения, а в изменении текущего значения элемента на новое при изменении словаря. Причём словарь может быть загружен или выгружен в произвольный момент времени.
> На стороне сервера нужно все равно подстраивать вмето текста название этих ключей, а потом в js вручную создавать хеш значений
Я не понимаю до конца, что вы здесь имеете в виду.
А применить можно в любом веб-приложении, где необходима локализация.
Подводя итоги, можно сделать вывод, что иногда без функции eval просто не обойтись. И большинство принимают правильное решение: её можно использовать, но чем меньше — тем лучше.
От себя хочется добавить ярым противникам eval:
Неважно, как появился код: загружен сторонний скрипт, с помощью Function, с помощью eval — все равно он может быть потенциально опасным. А так называемое зло eval (потенциальный доступ к переменным, медленность работы) преувеличено, потому что всё зависит только от степени понимания программистом тонкостей языка. Если ты быдлокодер, то и без eval наделаешь уязвимостей.
> Новые малыши. Всего в проекте 123.
Сказано, словно еще 123 малыша запроектировано.
Я думаю, правильнее: В проекте участвуют 123 малыша.
Запустите код — и всё поймёте сами.
Можно немного дополнить Резига, указав, что при работе с интервалами при блокировке кода методами alert(), prompt(), confirm() в работе браузеров наблюдаются отличия:

setInterval(function(){
	alert(1);
},2000)

Получив сообщение через 2 секунды, подождите примерно еще 2 секунды, а затем закройте сообщение. Firefox 10, IE9, Opera 12 мгновенно показывают новое сообщение. Вебкитовские Chrome и Safari ожидают 2 секунды после закрытия, т.е. в них отсчёт интервала запускается только после того, как завершится текущая функция по интервалу. Это неважно в повседневном коде, но может оказаться важным при специализированно разработке (например, очереди ядра).
И где картинки? Хоть бы ссылки вставили.
Связь arguments с именованными параметрами происходит через getter/setter. Так что если мой пример дополнить кодом:
...//для каждой переменной
var a=arguments[0];
delete arguments[0];//необходимо из-за отсутствия флага "настраиваемый"
Object.defineProperty(arguments,"0",{get:function(){return a;},set:function(v){a=v;}});
...
то получится ситуация, описанная вами.
Но смысл в том же: параметры функций также являются локальными переменными.
Это единственное отличие. Но замечание дельное.
Выдержка из книги Д. Флэнагана «JavaScript. Подробное руководство» 5-е изд.:
«Параметры функций также считаются локальными переменными, определенными только в теле этой функции».

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity