Задать вопрос
  • В чем отличия между .onclick() и .on('click', .....) в jQuery?

    leni_m
    @leni_m
    ЧупаКобрус
    .click(...) = .on('click', ...) просто укороченный вариант записи,
    только при последнем варианте больше возможностей.
    в .on() помимо клика можно использовать кучу других событий.
    И еще уточнять элементы т.е.
    $("#parent").on("click", "#child", ...) // клик вешается на id="child"

    Например, если у вас нету элемента с id="el" при загрузке страницы, а появляется он потом, например через ajax, то такая конструкция не сработает $("#el").click(...).
    А вот такая сработает $('body').on('click', '#el', ...) т.к. <body>почти всегда есть.
    Ответ написан
    5 комментариев
  • С какого разрешения начинать верстать?

    Alexey_Suprun
    @Alexey_Suprun
    Web Developer Blog - ссылка в описании
    Абсолютным позиционированием ? Вы серьёзно?
    Ответ написан
    1 комментарий
  • Под какие разрешения рисовать адаптивный дизайн?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    При рисовании любого дизайна встает техническая задача — уместить элементы сайта в указанную ширину. Уместить в заданную ширину тяжелее, чем растянуть до заданной ширины. Растянуть легко на этапе верстки. Поэтому нужно ориентироваться на минимальную ширину в классе.

    1. Мобильные телефоны — 320px. Ориентируемся на viewport айфона, т.к. он самый маленький. У современных андроидов вьюпорт больше, поэтому их игнорируем (растянется на верстке).

    2. Планшеты — 768px. Опять-таки ориентируемся на айпад в портретной ориентации , т.к. у андроид планшетов вьюпорты обычно имеют размер от 800×1200 или совпадают с айпадом. Планшеты с вьюпортом 600×1024px устарели. К тому же ничего страшного, если в вертикальной ориентации сайт на таком планшете будет выглядеть как на мобильнике, а в горизонтальной ориентации — как на десктопе.

    3. Десктоп и планшеты в ландшафтной ориентации — 1000px. Почему 1000, а не 1024: первое, в настольных браузерах полоса прокрутки съедает (обычно) 18px ширины; второе, от 1000px верстальщику удобнее расчитывать размеры в процентах, а до 1024 все равно растянется при верстке.

    В принципе, этого достаточно, чтобы верстальщик справился.

    Если дизайн не имеет максимальной ширины и тянется от края до края окна браузера, то на усмотрение дизайнера можно нарисовать еще один или несколько эскизов для более широких экранов.

    В каком порядке рисовать? Смотря как поставлено тех.задание. Чаще всего в задании описан полный функционал для настольной версии. Тогда проще нарисовать дизайн под 1000px и перекомпоновать под 768 и 320, выбросив или упростив по пути менее значимые элементы сайта. Т.е. двигаться от сложного к простому.

    Верстать при этом удобнее от меньшего экрана к большему (от простого к сложному). При mobile first верстальщику приходится дописывать новые стили для бóльших экранов поверх базовой версии в 320px вместо того, чтобы обнулять написанные для настольных браузеров стили. В результате для мобильника css весит меньше и парсится быстрее.
    Ответ написан
    Комментировать
  • Что значит оборачивание функции в скобки (function() { ... })?

    copist
    @copist
    Empower people to give
    Короткий ответ
    (function() { ... })()
    Это определение анонимной функции без параметров и непосредственный вызов её, так же, без параметров

    Длинный ответ
    Зачем оборачивать значение в круглые скобки?

    Оборачивание функции в скобки, так же как и оборачивание константы в скобки - это просто способ показать интерпретатору, что это значение внутри скобок может быть использовано как возвращаемое значение.
    var var_a = 5
    (var_a) /* или */ (5) // не является ошибкой, возвращает значение переменной или выражения
    function func_b() { }
    (func_b) /* или */ (function func_b() { }) // не является ошибкой, возвращает ссылку на функцию
    var var_c = { key: "val" }
    (var_c) /* или */ ({ key: "val" }) // не является ошибкой, возвращает объект
    var var_d = [ "one", "two" ]
    (var_d) /* или */ ([ "one", "two" ]) // не является ошибкой, возвращает массив


    Ну а раз (func_b) - это ссылка на функцию func_b, то значит её можно сразу же вызвать.
    A если (var_c) - это объект, то значит можно сразу же использовать его
    Аналогично (var_d) - это массив, то значит можно сразу же использовать его

    (func_b)() или (function func_b() { })() вызвать функцию
    (var_c).key или ({ "key": "val" }).key использовать объект
    (var_d)[0] или ([ "one", "two" ])[0] использовать массив

    Синтаксической ошибкой было бы использование функции, массива, объекта без скобок ( )
    function func_b() { }() ошибка "Unexpected token )"

    Хотя нет ошибки, по крайней мере в Google Chrome
    { key: "val" }["key"]
    ["one", "two"][0]

    Для чего вообще придумали самовызывающиеся функции?
    Для того, чтобы изолировать переменные и функции, чтобы они не попадали в глобальную область видимости.

    Сравни
    var a = "test"
    alert(a)

    по завершении этого блока переменная a болтается в глобальной области видимости

    и
    (function(){
        var a = "test"
    })()
    
    alert(a) // недоступно, потому что она была локальной переменной внутри анонимной функции


    Почему скобки ( ) пустые?
    В данном случае у функции function() { ... }нет формальных параметров, значит и вызывать можно без параметров.

    Но вообще в самовызывающуюся функцию можно передавать параметры. Это общая практика передачи ссылок на глобальные объекты:

    (function (w, d, $) {
       // некоторым нравится сокращать код путём использования коротких имён переменных
       w['fizz'] = "buzz" // вот так можно принудительно зарегистрировать
                           // глобальную переменную fizz
       $('body').css({background: 'red'}) // вот так можно работать с jQuery через привычную $
                           // даже если библиотека была загружена в режиме noСonflict
    }(window, document, jQuery))


    Некоторым не нравится длинный вариант проверки на undefined и они специально предусматривают лишний параметр, который не инициализируют

    (function (message1, message2, empty) {
        // это и есть проверка на undefined
        if (message1 === empty)
            alert('message1 is undefined')
        else
            alert('message1 = ' + message1)
    
        if (message2 === empty)
            alert('message2 is undefined')
        else
            alert('message2 = ' + message2)
    })("test") // вызвана только с одним параметром, значит второй по имени message2
    //  будет пустой, а третий empty специально ввели в качестве образца
    //  данных с типом "undefined", для служебного использования

    Зачем функция анонимная?
    Аналогично - чтобы не регистрировать её имя в глобальной области видимости, если она нужна один раз.
    Ответ написан
    7 комментариев
  • Почему большинство программистов выбирают Mac?

    Общая идея выше уже описана.
    Начинал с Windows, потом долго работал на Linux и в конце концов пересел на Mac.
    Как выше отметили переход на Mac для программиста оправдан если это web-разработка. Так сложилось что большая часть сайтов работают под unix-системами.

    По этой причине под windows не совсем удобно работать. Поэтому приходим к мысли что нужно что-то unix-like.
    Сейчас меня забросают минусами, но у всего unix-like IMHO не особо хорошо с интерфейсом (мне лично чего-то не хватает: порой кажется, что окошки зря расходуют место) и самое главное - если заниматься не только кодингом, то нет некоторого софта (типа photoshop etc).
    Вообще под linux вполне можно жить, но некоторых типов софта там либо нет, либо он еще развивается.

    Плюс нужно так или иначе заниматься ОС. Что-то настраивать/подстраивать. В общем, это как ни крути, а система для гиков. Не то чтобы мне это не нравится, но порой надоедает и хочется просто заниматься кодингом.

    Что касается Mac OS, то это UNIX с графической оболочкой которую разрабатывал профессиональный дизайнер. И как ни странно, она просто работает и многие вещи очень неплохо продуманы. Мне не надо постоянно что-то подкручивать после обновления. Думать как поставить какую-то программу потому что конфликт и тп. Устанавливать драйвера на железо через одно место.
    Плюс довольно неплохая поддержка производителями железа/софта. IMHO, не сильно хуже Windows.
    В общем фактически под этой ОС занимаешься своим делом, а не администрированием.
    Насчет цены, она конечно немного завышена (хотя как посмотреть, ведь полноценная ОС идет бесплатно). Но если сравнивать одинакового уровня железо, то разница до скачков курса была не такая уж и большая.

    В итоге обычно рано или поздно выбор становится вполне очевидным и осознанным. :)

    P.S. Нужно понимать что ОС - это всего лишь инструмент. Где-то есть свои уникальные фишки, софт. Кому-то нравятся инструменты от одной компании, кому-то от другой.
    Ответ написан
    Комментировать
  • Можно ли писать вирусы на python?

    AlexDarkStalker
    @AlexDarkStalker
    Хочу научится программировать на Python
    Я увлекся пайтоном может с 2 месяца назад. Я написал на нем себе для компьютера ассистента с распознаванием речи(очень глупого, но все же он облегчает мне жизнь), написал парсер погоды(и встроил в ассистента), хотел поиграться с нейронными сетями, но понял что 2 месяца - это довольно короткий срок, и решил лучше подучить как пайтон, так и всякую теорию, которая может пригодиться программисту. Думал про написание вирусов, но даже не приступил, потому что вспомнил, что питон не компилируется, и получается вирус должен всегда носить с собой интерпритатор, который много весит(для вируса). Я думаю пайтон больше подходит для частного пользования, всяких научных исследований и других полезных штуках, чем для написания вирусов. Для вирусописания лучше использовать языки из семейства Си, т.к. в мире много компов с операционной системой Windows.
    Если что неправильно написал, не бейте сильно, я еще маленький программист.
    Ответ написан
    2 комментария