Задать вопрос
  • Как просматривать разрабатываемый сайт через телефон?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Просто сделать локальный сервер доступный по Wi-Fi и подключаться к нему с телефона.
    Ответ написан
    Комментировать
  • Куда податься на фрилансе?

    Zoominger
    @Zoominger
    System Integrator
    т.к. для меня лучше получать "копейки", но работать из дома.

    Ну да, то самое #затоненадядю.

    С такими знаниями на фрилансе делать нечего.
    Ответ написан
    2 комментария
  • Можно-ли скачать видео с YouTube используя DevTools?

    Есть такая «секретная» ссылка: www.youtube.com/get_video_info?video_id=XXXXXX
    Вместо XXXXXX подставьте хэш видео, который в ссылке на ролик, типа youtu.be/BWCiWZtrWXU после слеша.

    По этой (первой) ссылке вернутся URL-encoded данные. Распакуйте их и возьмите параметр url_encoded_fmt_stream_map. Его значение опять надо распаковать как URL-параметры. И из результата вытащить параметр url – это ссылка на единый скачивабельный видеофайл.

    Например, в консоли браузера:
    function getUrlParams(search) {
        let hashes = search.slice(search.indexOf('?') + 1).split('&')
        let params = {}
        hashes.map(hash => {
            let [key, val] = hash.split('=')
            params[key] = decodeURIComponent(val)
        })
    
        return params
    }
    var s = '------'; // здесь длиннющая строка из ответа /get_video_info
    var a = getUrlParams(s);
    var b = getUrlParams(a.url_encoded_fmt_stream_map);
    console.log(b.url); // эту ссылку открываем в браузере - это скачиваемый видеофайл


    Очень надеюсь, что вы покопаетесь в этих данных более подробно, разберётесь, как получать прямые ссылки на скачиваемые файлы во всех форматах и размерах, которые предлагает YouTube, и напишете короткий материал на Хабр по результатам, а также опубликуете gist с рабочим кодом для консоли браузера.
    Ответ написан
    3 комментария
  • Что делать если youtube занимает слишком много времени?

    Kadzi
    @Kadzi
    Ом
    Тут речь о мягких навыках, в частности про управление собой и концентрацию.

    Как вариант, использовать эту привычку во благо. Посещать ютуб стало привычкой, теперь нужно культивировать просмотр нужного контента.

    Начать стоит с коротких полезных видео по тематике профессии или что-нибудь про софт-скилы. Уверен, что никаких резких изменений не последует, но, культ полезного контента даст плоды.

    Вот например, чтобы изучить что-то основательно, нужно курить 3-4 часовые видео + практика, но в реалиях такого энтузиазма мало у кого есть, поэтому, как вариант начать с 5-15 минутных видео. Просто начать.

    У меня была точно такая же история, только вместо ютуба я читал тостер)))) Понимая, что не могу с собой ничего поделать, я начал просматривать по 300-400 советов из разных тематик ежедневно в том числе рубрики в которых я полный ноль. А позже я культивировал полезный поиск + сбор полезных материалов, в том числе из комментариев.

    Я купил ежедневник, где что-то зарисовываю или записываю о том, что я смотрю и читаю, подстегивая себя к новым знаниям. Это своеобразная медитация. Скептически всегда относился к ежедневникам, но оказалось забавно, как такая штука может якорить и напоминать: не останавливайся, чувак!

    В один момент, я понял, что хочу углубляться по вопросам и перескочил с тостера на видео, книги и практику. Начинал так же, с банальных вещей, которые культивировал. Например, что такое цвет? И по 15-20 мин ежедневно что-то читал, смотрел изучал, пока не захотелось это делать по 30 мин в день. некоторые вещи я хочу делать теперь по 3-4 часа в день.

    Мой посыл в том, что резкой перемены не произойдет. А чтобы произошла перемена ты сам должен сказать себе: так, мне пора на следующий уровень. Чтобы попасть на следующий уровень окружи себя инфополем текущего, пока эта информация не покажется усвоенной.

    Повторюсь, если ты чувствуешь что жизнь идёт как у овоща, начни с примитивнейших вещей и самых простых ежедневных задач. Например, завтра делай всё тоже самое, только посмотри 10 минут видео, которое полезно, например про софт скилы. Завтра снова страдай херней, но снова посмотри 10 минут и так далее. Через месяц-полтора доза увеличиться, а свою привычку ты сможешь использовать во благо.

    Мягкие навыки 1
    мягкие навыки 2
    40 правил философии ответственности обрати внимание на 2 правило
    теория психики
    рекомендую его заметки

    Давай ещё разок: тебе не сжигать мосты нужно, а выжать полезное действие из привычки.

    0. Никаких резких перемен не будет.
    1. Почитать про софт скилы и что формирует их.
    2. Продолжить смотреть ютуб, разбавив ежедневной рубрикой "полезные 15 минут"
    3. Окружить себя инфополем текущего уровня, пока не захочется на следующий. А захочется, так как эти 15 минут превратятся рано или поздно в 20, а потом в 30. Культивация полезного действия.
    4. Попав на новый уровень, проделать тоже самое.

    Культ полезного действия применим к любым жизненным ситуациям. Учиться учиться, учиться правильно читать, искать, серфить, смотреть и слушать. Это тоже навык.
    Ответ написан
    Комментировать
  • Легаси-монстр. Как побеждаете?

    @MasterMike
    Из вопроса не очень понятно, что именно составляет ваш интерес отрефакторить этот проект.

    Если вы чисто по доброте душевной хотите помочь бизнесу, то не надо этого делать, иначе вы на своем личном опыте осознаете фразу "инициатива наказуема" )

    Касательно сути вопроса поддержу уже сказавших свое мнение: постепенное помодульное переписывание старого кода на современный лад. Старый код работает вместе с новым и так далее, пока от legacy ничего не останется.
    Ответ написан
    3 комментария
  • Удаленная работа с Европой/Америкой Ваш опыт?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Уже года 4 как не работаю с СНГ вообще (с момента, как рубль просел в два раза).
    За это время был положительный опыт со следующими странами: Австралия, США, Канада, Израиль, Норвегия и даже Вьетнам и Чили.
    Ставки на западе на порядок выше наших, причём они не считают, что если они платят вам много, то они имеют право выжать из вас все соки.
    Лично я неплохо знаю рынок PHP. Если в России в среднем PHP'шник получает 50,000-150,000 руб ($5 - $15/час), то за рубежом миддл может спокойно иметь $20-30/час. Сеньор имеет $30-60/час. В России такие суммы даже страшно вслух назвать - не поверят.

    Конечно, чем ниже ваша квалификация, тем выше конкуренция, тем больше демпинг и тем сложнее пробиться в целом. Ниже миддла я бы не советовал соваться по фриланс.
    Ответ написан
    4 комментария
  • Где дешево держать .com домены?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Вряд ли. Если $7 - это не только регистрация, но и продление, то это - очень хорошее предложение, меньше, чем регистратор платит реестру.
    Также обратите внимание не просят ли они отдельных денег за Private whois / Whois privacy.

    Из известных и вменяемых регистраторов с адекватными ценами я могу посоветовать Porkbun и NameSilo.
    Если найдёте что-то заметно дешевле них, то я бы посоветовал сначала изучить что это за компания и почитать отзывы о ней.

    Ещё как вариант - подождать Чёрной пятницы и зарегистрировать домены в рамках акций, которые будут проводиться. Первый год вполне может выйти заметно дешевле среднего по рынку.
    Ответ написан
    Комментировать
  • В какой последовательности читать книги по JS?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    За всю свою практику продолжительностью более 20 лет я прочитал только одну книжку по программированию, это был Фигурнов про программирование на паскале под ДОС, и это было в середине девяностых... С тех пор читаю только документацию и то по мере необходимости.

    Обычно всегда ситуация так складывалась, что приходилось сначала ввязываться в бой, а по ходу уже разбираться что к чему, как, зачем и почему. В результате в начале было катастрофически сложно, зато сразу изучаешь только актуальные вещи. К тому же вырабатывается привычка постоянно искать и находить, осмыслять, переиначивать и использовать.

    В первые годы любой начинающий программист должен бессовестно красть чужой код и препарировать его, пытаясь понять ход мысли более опытных товарищей. Это гораздо лучше, чем витать в облаках, считая что прочитал умную книжку и все в порядке.

    В общем критерий истины - практика и никак иначе.

    Я не говорю что книжки читать не нужно - нужно. А вот уповать на книжки и надеяться на мощный обучающий эффект - это вряд ли. Память устроена таким образом, что сохраняет в себе только то, что действительно очень нужно, а все остальное отвалится так или иначе, практически сразу или чуть позже.

    Поэтому выбери себе проект, и начинай делать. Сначала будет все плохо, непонятно и вообще адский адов ад. И только если тебе хватит упорства и настойчивости, усидчивости, концентрации и везения, то, постепенно, все начнет меняться.

    Короче говоря ключевое слово тут ДЕЛАТЬ, а все остальное - лишь вспомогательные элементы.

    ЗЫ: Я встречал немало народу, почитавших книжек, прошедших курсов, знающих команды, но не умеющих их использовать, в результате не способных программировать. Для того, чтобы программировать, т.е. транслировать машине свою волю, на понятном ей языке, необходимо иметь эту самую волю для начала, а остальное уже приложится по ходу дела.
    Ответ написан
    3 комментария
  • Какая из посадок верстки на Wordpress более актуальная и правильная?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    1) либо используйте стартовые темы Пример - https://understrap.com/ underscores.me
    2) пишите с нуля, не редактируйте стандартные темы ВП и т.д.
    3) насчет страницы настроек для темы (Простой вариант - ACF, более грамотный вариант фреймворки). Пример фреймворка - redux framewor
    https://reduxframework.com/ https://ru.wordpress.org/plugins/redux-framework/
    Ответ написан
    3 комментария
  • Куда ехать фрилансить, в какую страну?

    Подтролливают тебя немного =)

    $1000 баксов это не очень большая сумма, но все ж одному вполне можно пожить в разных интересных местах.

    Вот, например, забавный вариант: Казахстан/Астана. Молодой, современный город. В прошлом году прожил там 5 месяцев случайно, и, надо сказать, в восторге. Сам из СПб, сравниваю с ним.
    Страна мусульманская, но это заметно только тем, что синьки по улицам не шатается и гопотни во дворах не сидит. Ночью в любое время прогуляться приятно. Малышня без присмотра взрослых и мамы с колясками гуляют до 2 ночи. Люди сами по себе добрей, чем в СПб. У меня по возвращении был культурный шок. Неделю дома сидел - выходить не хотелось.
    Цены низкие на все. Питаться - практически бесплатно. Самый лучший шашлык в моей жизни попробовал именно там, в отличном ресторане, в который местные не ходят, т.к. дорого. Шашлык обошелся в 150 рублей.
    Транспорт - автобусы. Но за 5 месяцев я ездил на автобусе 1 раз. Потому что убер "бесплатный". Однажды довелось проехать весь город по диагонали на Порше Кайен за 100 рублей! Это убер икс, не блэк.
    Казашки очень красивые девушки и любят "фарангов" =)
    Климат/погода прекрасные. Один нюанс - нет демисезонов. Лето, а потом сразу снежок пошел =)
    Жилье - по разному. Я немного жировал и снимал огромную светлую новую квартиру в неплохом районе. По деньгам где-то 30к+ выходило. Интернет шикарнейший. Во время моего там прибывания проходила выставка Экспо 2017, поэтому цены были очень высокие. Выставка кончилась, должны были сильно упасть.
    В общем, на $1000 там можно жить очень комфортно. Заморочка одна - виза. Въезд без визы, на 1 месяц. Потом надо идти в миграционку с хозяином квартиры ( надо договориться с ним, чтоб сделал тебе гостевую визу ). Ее продляют до 3х месяцев ( то есть первый + еще 2 ). Потом по-любому бордер-ран нужен. Ну и по новой. Заморочек никаких.

    Тайланд ( сейчас тут как раз, уже 4 месяца ). На $1000 вполне можно жить. Все упирается в желаемый уровень комфорта и любовь к транжирству денег =) Паттайю не советую. Мое мнение - помойка полная. Куча прекрасных мест. В качестве бюджетного варианта посоветовал бы Краби попробовать. В Краби мало пляжей, делать особо нечего, но спокойно и дешево. Самое то, чтоб начать. И чтоб на байке научиться кататься - там движение хорошее, спокойное, дороги кайф. Домик можно снять тыщ за 8-9 бат неплохой ( в рублях, грубо, х2 ). Считай в 20к уложишься. Важно, чтоб с кухней. Тайская еда осточертеет, начнешь по дорогим рестикам ходить. Я вот в какой-то момент по 1-2к бат в день на хавку сливать начал =) Ужас. Байк на месяц 3к бат. Безнин дешевый, байк почти не ест. Похавать самому - зависит. Можно и в 100бт уложиться. Средняк для пацана, я бы сказал, 200-250бт, если с пивом ( в рестиках дороже в 2 раза, нежели в магазе ). Питаться дома дешевле, большие магазины есть, чтоб затариваться. В общем - на $1000 прожить вполне можно, если не загуливать особо. А вот загулять тебе может быть очень несложно. Тайку в постель заполучить тут сильно проще ( и дешевле ), чем в России симотную девку в кино с рестиком сводить без каких-либо дальнейших перспектив. Так что - самодисциплина прежде всего =)
    Если хочется чего-то пошумней, чтоб движухи побольше - Пхукет или Самуи можно попробовать. Пхукет - дорогой с туристической стороны ( на западе острова ), а вот если поселиться в Равайе - можно тоже очень бюджетно. Есть хорошие кондоминиумы, где отличнейшие квартирки по 8-9к бат. Но действительно очень хорошие и с кухней. Самуи считается дорогим местом, но "места надо знать". Туристам простым жилье загоняют за большие деньги, зная места можно снять прекрасный дом за 10-15к бат. Дом! С кондеем, гигантским балконом, 2-3 комнатами и т.д. На Самуи тьма русских ( больше чем тайцев по ощущениям ), русские всех сортов - от быдо-нариков-бухариков, до семей с кучей детишек и т.д. Кому-то наличие соотечественников плюс, кому-то минус. Но в твоем случае может плюс - больше помощи, советов, поддержки и т.д. Не так сложно начинать бродяжничать будет =)

    В общем - главное начать. Искренне советую сперва подкопить денег загашник небольшой, чтоб обеспечил хотя бы пару месяцев жизни и не пришлось домой линять сразу, как-только все закончиться.
    Ответ написан
    7 комментариев
  • Каков сценарий использования git для одного разработчика?

    gobananas
    @gobananas
    finishhim.ru
    Делаете ветку master, ветку dev и отдельные ветки под отдельные фичи.
    Делаете 2 сайта - один сам проект (основной) - на него выкатываете master, второй сайт тестовый - на него выкатываете ветку dev. Остальные ветки разрабатываете, сливаете с dev выкатываете на тест, если там всё нормально то dev сливаете с мастером. За ноут просто когда садитесь если мастер новый есть делаете git pull и стягиваете новую версию
    Ответ написан
    11 комментариев
  • Как обезопасить свой бекенд от разработчиков?

    thewind
    @thewind
    php программист, front / backend developer
    Git + gitflow + code review
    Любые странные куски обсуждаются
    Ответ написан
    4 комментария
  • Как обезопасить свой бекенд от разработчиков?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Во первых бекапы. Поломал - зафиксировали, отправили заяву в ментовку и восстановились из бекапа.
    От закладок поможет наличие либо знаний, либо второго человека, который будет работать в комманде.
    Ну и самое главное - хорошие отношения с работниками и не наё... с зарплатой, обещал - плати.
    Ответ написан
    8 комментариев
  • Как могут взломать базу данных MySQL?

    @BorisKorobkov Куратор тега MySQL
    Web developer
    1. Через SQL-инъекцию (выполнить любой SQL). Если посмотреть в вопросах Тостера выложенный код, то в половине случаев там полно уязвимостей. Для защиты надо как минимум использовать PDO.
    2. Другой вариант - через JS/HTML-инъекцию (засунуть на страницу зловред и украсть пароль админа).
    3. Подобрать пароль админа.
    4. Есть еще много других способов.

    Что делать? Писать не-говнокод. Изучать все эти методы. Использовать тестирование, сканеры уязвимостей.
    Ответ написан
    Комментировать
  • Как могут взломать базу данных MySQL?

    @Z1odeypnd
    Здравствуйте.
    Технологий взлома уйма.
    В зависимости от того, какие привелегии получил "хакер" при вломе вашей БД - зависит очень много.
    Если он получил доступ только на чтение, то захешированные в MD5 пароли ему мало чем помогут, т.к. MD5 не имеет алгоритма обратной расшифровки и хэширование спасёт тем, что взломщик получивший доступ на чтение паролей - самих паролей не получит (есть конечно словарь MD5 хешей, то это другая история).
    Вообще для защиты любой БД есть несколько золотых правил:
    0. Переименовать дефолтного админа и защитить его сложным паролем.
    1. Для каждой БД должен создаваться свой владелец и несколько пользователей с разными наборами привелегий.
    2. Ни у одного из пользователей, созданных в п.1 не должно быть прав на изменение таблиц в соседней БД.
    Если есть необходимость обновлять соседние БД - делайте это триггером в соседней БД.
    3. Каждый внешний веб-сервис должен ходить в БД только с тем набором прав, которых ему достаточно для работы. Т.е. не нужно везде прописывать root и надеяться на лучшее.
    В этом случае, если взломщик получит привелегии этого пользователя, то сможет сделать только то, что разрешено этому пользователю. Тогда не выйдет "удалить все и сразу".
    Например, для наполнения католога товаров в интернет-магазине может быть отдельный пользователь, с правами на SELECT, INSERT, UPDATE, DELETE в таблице SHOP_PRODUCTS, например. И ничего более.
    А пользователи, приходящие в магазин за покупками могут делать SELECT, INSERT, UPDATE, DELETE только в таблицу CUSTOMER_CART. В коде веб-сервиса, естественно должна быть проверка, что покупатель редактирует СВОЮ корзину.
    Для показа каталога товаров - отдельный пользователь, имеющий право только на SELECT из таблицы SHOP_PRODUCTS.
    А продажу товара может делать отдельный пользователь, с правом только на UPDATE колонки AMOUNT в таблице SHOP_PRODUCTS. Пример:
    GRANT SELECT ON shopdb.SHOP_PRODUCTS TO 'trader_bot'@'shophost';
    GRANT UPDATE (AMOUNT) ON shopdb.SHOP_PRODUCTS TO 'trader_bot'@'shophost';

    И т.п. По принципу "Разделяй и властвуй."
    4. Писать запросы с использованием placeholder'ов (подстановку данных), что убережёт от SQL-инъекций.
    Пример:
    $DB->select('SELECT * FROM tbl WHERE a=? AND b=?', $a, $b);

    5. Если и БД и приложение, используещее БД установлены на одном сервере - отключить удалённый доступ к БД и работать через сокеты.
    6. Последний, но самый важный - БЕКАПЫ. При удалении всего и вся - нужно откуда-то восстановиться. Делайте бекапы и храните на отдельном сервере (не выставленном наружу).
    Ответ написан
    3 комментария
  • Какие предметы желательно освоить программисту без технической "вышки"?

    @mr_jumper
    К пунктам выше добавил бы системотехнику, булеву логику, сети, языки моделирования, архитектурные паттерны.
    Ответ написан
    Комментировать
  • Как мотивировать себя делать скучную работу?

    zamboga
    @zamboga
    Аналитика данных, BI-аналитика, дашборды
    Отвлекаюсь на все не могу себя заставить, нормально работать

    Отключить все уведомления или выключить звук+вибро на телефоне.
    Отключить все попапы в Windows, уведомления браузеров.
    Отключить звук на компе.

    Если помогает быстрая музыка — включить её (я фигачу под транс с di.fm).

    Взять любой секундомер, поставить на нем таймер 10 минут. Уж 10 минут вы в состоянии выдержать?
    После звонка таймера поставить новый на 15 минут. Это всего на 5 мин больше прошлого таймера.
    После звонка таймера поставить новый на 25 минут. Это всего на 10 мин больше прошлого таймера.
    Как вы поняли, это плавное привыкание к технике Помодоро=)

    Теперь берем лист бумаги и рисуем на нем один кружок, и закрашиваем его черным.

    Прошло 50 минут. Теперь отдых. Выключить музыку, надо отдохнуть: ставите таймер на 10 минут, гуляете вокруг компа, смотрите в окно, делаете легкую зарядку, просто сидите с закрытыми глазами.

    Телефон во время отдыха в руки не брать и почту /скайп (что там вы используйте) не проверять!! — Это ключевое. Отдых должен быть отдыхом. Умеете медитировать — медитируйте.

    Ставите новый таймер на 50 минут. Один раз продержались, что, второй раз не сможете? Сможете.
    После этого опять отдых, 10 минут.

    После 3-4 циклов по 50работа/10отдых, делаете отдых 30/40/60 минут (как раз пообедать + проверить почту/телефон).

    Потом новый комплект 3-4 цикла 50/10.
    В конце дня можете проверить почту/телефон.

    Ключевое во всём этом — не отвлекаться на внешние раздражители, которые мы все выключили, и работать по таймеру, помня, что скоро будет заслуженный отдых и удовольствие от сделанного — смотрим на лист с закрашенными кружками.

    Также, если мотивация падает, говорим себе мантру: "Потерпи только сегодня, только один день. Пофиг, что там будет завтра, а вот сегодня надо потерпеть и сделать".

    Для удобства на компе можно использовать любой тайм-трекер со встроенным Pomodoro, например Toggl (+могу еще насоветовать, знаю много трекеров)

    UPD 1. Из другого ответа: "чтобы работать длинный промежуток времени, очень выручал https://www.forestapp.cc/"
    Я протестировал приложение под Андроид и расширение для Хром и стал использовать: это отличное дополнение к методике, что тут описал, с автоматическим отключением всех внешних раздражителей. Рекомендую.

    UPD 2. Классическая Помодорная схема — 4 цикла по 25работа/5отдых, потом отдых 20 мин.
    Но она не подходит для работы "в потоке" — пока погружаешься в задачу, уже проходит 15 минут и остается всего 10 минут до отдыха на саму задачу, что мало.
    Поэтому я использую циклы 50/10 для основных задач, +один цикл 50/10 в начале дня на планирование, почту и прочую мелочевку.
    Ответ написан
    2 комментария
  • Где используются прототипы, наследование в JS приложениях?

    yurakostin
    @yurakostin
    Front-end developer
    Здравствуйте.
    На самом деле всё проще.
    Не обижайтесь, но вы просто не так хорошо знаете сам javascript.

    1. prototype - ссылка на прототип объекта.
    Array.prototype, Number.prototype. В нём хранятся методы и свойства этого объекта, а также... (далее переходим к __proto__)

    2. __proto__ - тоже ссылка на прототип. Например, введите в консоли [] и раскройте ветвь. У вас всего два свойства. Одно - length - количество элементов в массиве. Другое - __proto__. А где же все методы, которые мы можем использовать с массивами filter, map, slice и так далее? Они лежат в __proto__. Более подробно здесь.

    3. inheritance соответственно - наследование. JS построен на прототипной парадигме (надеюсь, я тут не наврал). Array наследуется от Object. Это можно легко увидеть, посмотрев Array.prototype. Там вы увидите тот самый __proto__, являющийся ссылкой на Object.prototype. Вся инфа по ссылке выше.

    4, 5. call и apply постепенно уходят из обихода, но тем не менее про них важно знать и уметь ими пользоваться. Эти методы позволяют вызвать функцию в контексте, который вам необходим.

    Например вам нужно вызвать метод какого-то объекта, который работает с this в контексте другого объекта, у которого этого метода нет. Вы можете сделать следующее:
    var o_1 = {
    	name: 'Peter',
    	hello: function () {
    		console.log('Hello, ' + this.name);
    	}
    };
    
    var o_2 = {
    	name: 'Jane'
    };
    
    o_1.hello.call(o_2); // Фактически вы говорите "вызови метод такой-то для объекта такого-то"


    Для передачи аргументов в "заимствованную" функцию оба метода принимают аргументы, каждый по-своему.
    var o_1 = {
    	name: 'Peter',
    	hello: function () {
    		console.log('Hello, ' + this.name);
    	},
            sum: function (a, b) {
    		console.log(`${this.name} sum a and b to ${a + b}`);
    	}
    };
    
    var o_2 = {
    	name: 'Jane'
    };
    
    o_1.sum.call(o_2, 2, 4);
    o_1.sum.apply(o_2, [1, 2]);


    Отличие между этими двумя методами в том, как они принимают аргументы, которые попадут в функцию.
    call принимает список аргументов, начиная со второго, а apply, соответственно, принимает массив.

    Также, ничто не мешает вам вызвать функцию, которая не нуждается в контексте, для этого первым аргументом можно передать null.

    var o = {
    	sum: function (a, b) {
    		console.log(a + b);
    	}
    }
    o.sum.call(null, 1, 2);
    o.sum.apply(null, [1, 2]);


    Подробнее тут.

    6. bind тоже довольно простая штука. Отчасти он похож на предыдущие два метода, за исключением того, что он не вызывает функцию сразу же.
    Основная его задача - вернуть функцию, которая будет вызвана для нужного вам контекста.

    var o = {
    	a: 1,
    	b: 2,
    	sum: function () {
    		console.log(this.a + this.b);
    	}
    };
    
    var o2 = {
    	a: 10,
    	b: 20
    };
    
    var o2Sum = o.sum.bind(o2);
    
    o2Sum();


    Также с помощью bind можно каррировать функции.
    Всё есть здесь

    PS: надеюсь, код не содержит ошибок и я нигде не налажал и всё правильно рассказал.
    Ответ написан
    4 комментария
  • Как вы работате с гитом?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Я почти всегда при работе с Git пользуюсь IDE, соответственно все действия с git (почти все, иногда лезу в консоль) делаю через неё.
    Обычно коммиты делаются после завершения некоторого логического куска работы (новая фича, исправление бага, добавленный тест или группа тестов, некоторые достаточно существенные промежуточные состояния и так далее), смотрите на GitHub примеры как это делают другие.

    То есть кратко:
    1) нет
    2) нет
    3) да
    Ответ написан
    3 комментария
  • Имеет ли юридическую силу запрет на парсинг сайта?

    @nirvimel
    Любые дополнительные юридические ограничения (сверх того, что требует государственное законодательство) можно навязать пользователю лишь одним способом - путем ДОБРОВОЛЬНОГО (с обеих сторон) заключения договора. Это обычно реализуется в виде пользовательского соглашения при регистрации на сайте. При этом одна сторона (сайт) обязуется предоставить какие-то услуги (например, доступ к некоторой информации), в то время как другая сторона (пользователь) добровольно принимает на себя какие-то ограничения (например, не пользоваться никакими автоматизированными средствами для извлечения, предоставляемой ему, информации). Это соглашения вступает в юридическую силу с момента нажатия на кнопку "Принимаю условия" (см. акцепт).
    Поскольку с анонимом в принципе невозможно заключить никакой договор (очевидно), то на, не прошедшего регистрацию пользователя, невозможно возложить никакие ограничения (сверх существующих в законе).

    Но все вышеописанное касается только СПОСОБА, которым пользователь взаимодействует с сайтом (автоматизированный/ручной/ножной/и.т.д.). Что касается самого контента, который пользователь потребляет, то на него распространяется все нормы авторского права (независимо от способа, которым он получен). Поскольку авторское право (как государственный закон и международное соглашение) распространяется на всех без исключения (в том числе и на анонимов), то не требуется заключать с пользователем никакого договора (и заставлять проходить регистрацию). Достаточно упомянуть (желательно на видном местом) запрет на использование данного контента в любых целях, кроме личного ознакомления. Это допустимо на основании того, что владелец исключительных прав на контент может определять любые ограничения на его использование. Что это дает: контент, собранный автоматизированными средствами, в дальнейшем не может быть использован никак без нарушения закона о защите авторских прав (это серьезнее, чем нарушение пользовательского соглашения). Это полный юридический тупик для того, кто захочет заняться парсингом (пусть даже само по себе это будет законно).
    Ответ написан
    2 комментария