Задать вопрос
  • Социальный фишинг (идентификация пользователей). Как работает?

    Wernalur
    @Wernalur
    Насколько мне известно используется Clickjacking
    Ответ написан
    Комментировать
  • Что значит оборачивание функции в скобки (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 комментариев
  • Как переслать 10ТБ в Китай?

    dimasmagadan
    @dimasmagadan
    А китайский аналог дропбокса попробовать не хотите?
    Вот эти https://www.weiyun.com/ предлагают 3Тб
    Можно сделать несколько аккаунтов и разбить файлы на части, или заливать по частям.

    Как минимум проблем с скачиванием в Китае с этого сервиса быть не должно.
    Ответ написан
    Комментировать
  • Как низкоуровнево работать с SSD жестким диском?

    Melkij
    @Melkij
    PostgreSQL DBA
    Ммм. Вопрос: а нафига вам низкоуровневая работа-то? Более чем высокоуровневого CRUD уровня файла достаточно.

    Берёте любой *nix. Всё есть файл, следовательно задача решена. Открываете /dev/sd? на чтение-запись обычными файловыми операциями. fseek'ом перемещаетесь, пишете-читаете кусками по 2кб. Остальное взаимодействие с накопителем оставляете ядру.
    Чего-нибудь только придумать с сисадмином, чтобы разрешить операции без запуска всего приложения от рута.

    Вопрос номер следующий: у вас и ваших коллег действительно достаточно опыта проектирования и эксплуатации СУБД и файловый систем для реализации всего пласта журналирования, обеспечения восстановления после аварий и консистентности данных?
    Ответ написан
    Комментировать
  • ООП головного мозга?

    Vadiok
    @Vadiok
    Веб разработчик
    Нельзя на 100% быть уверенным, что присваиваемое значение не придется как-то обрабатывать (например, приводить преобразование значение имени из "иванов ИВАН" в "Иванов Иван"). Если пользоваться сеттерами, то доп. обработка реализуется внутри класса и все. Если значения устанавливались напрямую через свойства, то придется возвращаться к использованию сеттеров, попутно переписывая присвоение свойств объектам класса во всех местах, где объекты этого класса используются.
    Ответ написан
    Комментировать
  • ООП головного мозга?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Когда вы пишете лабораторку или собственный маленький проектик, то можете делать как вам угодно.
    А теперь представьте себе ситуацию когда в команде программистов вы написали класс с публичными переменными, а потом подошел руководитель проекта и сказал что на каждое присваивание переменной надо делать запись в лог-файл. Теперь все программисты, которые пользовались вашим классом, вместо работы переписывают код с переменных на сеттеры.

    Советую почитать "Совершенный код", чтобы не задавать подобные вопросы.
    Ответ написан
    2 комментария
  • Как противодействовать воровству контента?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Как противодействовать воровству контента?

    Не публиковать, увы только так.

    Вдумайтесь: вы отдаете клиенту ваш контент (при скачивании он уже делает копию), что бы тот его посмотрел, и при этом не хотите, что бы он его копировал, не находите противоречий?

    Цель любой защиты - сделать взлом не выгодным, не более того.

    Можете конечно выводить в виде не удобном для копирования, например в виде svg-шки, сгенерированной на сервере c кривыми, вместо текста. Да, копирование текста это затруднит, но от принтскрина + распознавания символов - не спасет.

    Для видео - можно использовать потоковое вещание, например на базе rtmp, но от записи с экрана - не спасет.

    В общем тот, кому надо скопировать - это сделает, тот кому не надо - не будет париться.
    Ответ написан
    Комментировать
  • Как проводить анализ рынка в Интернете?

    @KkJ
    Строительный бизнес - это бизнес серьезных денег и серьезных дядек.
    Интернет для них так, игрушки... Все делается в реальном мире.
    Ничего вы не проанализируйте, только огрызки информации.
    Ответ написан
    1 комментарий
  • Парсим/грабим веб-страницы без мусора?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Конечно есть - lxml.de/lxmlhtml.html#cleaning-up-html
    Ну и уже из очищенного можно выделять что нужно.
    Да, забирать лучше библиотекой requests - docs.python-requests.org/en/master
    Ответ написан
    Комментировать
  • Как запустить python html парсер в несколько потоков?

    @asd111
    Самая простая многопоточность:
    import urllib2 
    from multiprocessing.dummy import Pool as ThreadPool 
    
    urls = [
      'http://www.python.org', 
      'http://www.python.org/about/',
      'http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html',
      'http://www.python.org/doc/'  
      ]
    
    # Make the Pool of workers
    pool = ThreadPool(4) 
    
    # Open the urls in their own threads
    # and return the results
    results = pool.map(urllib2.urlopen, urls)
    
    #close the pool and wait for the work to finish 
    pool.close() 
    pool.join()
    Ответ написан
    9 комментариев
  • Может ли оператор связи выпустить дубликат моей Сим-карты и сделать так, что некоторые SMS приходят только на этот дубликат?

    @vm916
    В последних сериях сим-карт дубликат сделать невозможно. Если активируется вторая симка ,то тухнет первая (не ловит сеть). Такое реально сделать если у тебя телефон на андройд и вирусня на нём )) Вирус скрывает входящие смс от определённых отправителей и автоматом редиректит их на другой номер. Это можно проверить взяв детализацию у своего сотового оператора.

    Хочу уточнить что речь идёт про российских операторов.
    Ответ написан
    Комментировать
  • Хорош ли PHP для математических вычислений?

    DevMan
    @DevMan
    я бы взял питон: у него намного богаче стандартная либа, плюс такие средства как numpy/scipy.
    Ответ написан
    Комментировать
  • Какое железо взять для программирования в 2016 году?

    в бюджет 1000-1500$ (чистая стоимость железа)

    Игры совсем не обязательно, чтобы тянуло.

    Это шутка такая? Да за такие бабки серверную машину можно собирать.

    Если по делу, то советую затариться оперативой, благо она дешевая, а жрут её сейчас все, тем более если планируете запускать эмуляторы/виртуалки.
    Ответ написан
  • На чем писать фронтенд легко и непринужденно?

    Zhandos
    @Zhandos
    Мне кажется, легко и непринужденно писать фронтенд невозможно
    Ответ написан
    Комментировать
  • Отказ возврата товара Юлмартом со статусом "мех повреждение" законно ли?

    @FoxInSox
    что тут дело не в конденсаторе, а в горелки GPU.

    А если это вы спалили GPU и теперь пытаетесь обмануть Юлмарт? Не надо наглеть. Против(и для) таких жадных зануд как вы и пишут 10-и страничные условия и правила возврата товара.
    Ответ написан
    Комментировать
  • Отказ возврата товара Юлмартом со статусом "мех повреждение" законно ли?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Если на сайте где нибудь в правилах было написано, что товары данной категории возврату и обмену не подлежат, то скорее всего считается что вы согласились с правилами. Т.к. таким образом магазин избавляется от неликвида по сниженным ценам и это плата за экономию, т.к. в таком состоянии гарантийка у них не примет.
    Ответ написан
    1 комментарий
  • Как добавить распаковку для объекта своего класса?

    @abcd0x00
    Это тебе полный вариант, если что сложное делать соберёшься.
    >>> class A:
    ...     
    ...     def __iter__(self):
    ...         self.it = iter('abc')
    ...         return self
    ...     
    ...     def __next__(self):
    ...         return next(self.it)
    ... 
    >>> a = A()
    >>> print(*a)
    a b c
    >>>
    Ответ написан
    Комментировать