Задать вопрос
  • В чем разница в драйверах Linux, OS X и Windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    "драйвер это чаще всего графический инсталлятор"
    "Если в винде драйвер это инсталлятор, то что есть драйвер в Linux и OS X?"

    Не приравнивайте инсталлятор драйвера и сам драйвер. Драйвер в винде может предствлять собой один .inf файл, и не иметь никакого инсталлятора.

    У вас вообще сильно перепутано что такое драйвер и в качестве отличия драйверов между системами вы видите только способ установки, но всем системам нужны драйвера.

    Вам нужно просто понять принципы дистрибьюции софта в разных ОС.
    В Линукс принято пользоваться репозиториями, и редко качать что-то с сайта (обычно если качать, то там исходники, которые нужно еще и собирать)

    В Mac производитель железа и ОС один и тот же, поэтому идет с ОС, но для некоторых устройств - также на диске или с сайта, но так как производитель один, несложно организовать автоматическое скачивание, и даже сторонняя периферия сертифицируется в Apple, что упрощает автоматизацию.

    С виндой идет множество вшитых драйверов, которые не требуют от вас никаких действий, чтобы работать. Чем старше винда, тем больше девайсов, которые определятся сами.
    Но множество девайсов выпускаются без особого взаимодействия с MS, просто пользуясь их рекомендациями, WHQL драйвера считаются стабильными, но любой может написать драйвер к своему устройству, выложить на своем сайте, и понятно что MS про это может и не знать.

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

    Если взять видеокарту, которая поддерживает DirectX12, то в Линуксе его (DirectX) вообще нет, и Линукс не сможет пользоваться всеми фичами, предоставляемыми карточкой, вот и ответ почему Линукс работает со многими устройствами стандартными драйверами, а Windows требует индивидуальный.
    Ответ написан
    Комментировать
  • На чём реализовать прокси сервер?

    ulrich-schnauss
    @ulrich-schnauss
    Системный администратор, веб-разработчик
    На данный момент лучше чем squid и lightsquid ничего не придумали
    Ответ написан
    Комментировать
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    @spotifi
    Нету никаких проблем.
    Если только ваше конкретное используемое для ваших задач ПО нормально работает с Windows.

    Например, в моем случае используется Ansible и Docker, который не поддерживается на Windows. Приходится использовать Vagrant. Это достаточно удобно. Но ресурсы все же кушает.

    А так - даже Vim хорошо себя чуствует на Windows. Нативный. Не cygwin.

    Microsoft это тоже понимает.
    И вот уже они встроили подсистему Linux Ubuntu в Windows 10. Это не виртуализация, а именно полноценная подсистема.

    И многие вещи, например, те же шрифты - в Windows работают лучше, чем под Linux.

    Могут сказать - что лучше использовать для разработки ту же среду что и для production.

    Но дело в том, что даже если вы сидите на Ubuntu Desktop, то ваша среда серьезно отличается от среды сервера FreeBSD, CentOS, Debian, Ubutntu Server. И для полноценного CI все равно умные дядьки категорически рекомендуют и на Linux даже использовать Docker для полноценной эмуляции.

    Но ведь Docker-то можно использовать и на Windows. Правда, запускается он там подольше.

    Где именно вести разработку, где вам удобнее - это ваше личное дело. Вопрос ваших предпочтений. Никаких объективных причин в наше время, когда существуют Docker, Vagrant и виртуальные машины, когда куча приложений изначально сделанных для *nix запускаются в native под Windows - нет никаких причин себя строить. Кроме любопытства - а как оно там на других системах живется.

    У тех кто вас троллит есть еще одна причина: им приятно показать себя более умными. Как же - ведь Linux можно сконфигурить руками.

    Ага, конечно.

    Или используют готовые десктопные дистрибутивы. Не зря Ubuntu так популярна.
    Или если освоили ArchLinux - то построили себе совершенно убогое окружение по готовым мануалам.

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

    На деле 99% твердящих о гибкости Linux - далее чем ставить Apache и MySQL из пакетов - ничего сами и не умеют. Фактически работая в то же настроенной другими людьми десктопной среде. Но разве вы не умеете делать то же самое под Windows?

    Другое дело, что разворачивать и тестировать нужно под аутентичным операционным окружением.
    Неважно под Ubuntu ты сидишь или под Windows.

    Лучшие практики советуют использовать полностью изолированный и независимый от рабочего места разработчика инструментарий - виртуальные машины, Vagrant, Docker, отдельные физические сервера.

    В этом случае под твоей любимой ОС работает только текстовый да графический редактор. А все развертывание для тестирования и для продакшн проводится в совсем другой среде.

    Используя Docker хоть под Windows ты будешь получать даже больше преимущество повторяемости рабочей среды чем тем кругом, кто советуют тебе просто перейти на Linux. Если на более слабом железе это и было бы существенно (Docker под Linux стартует быстрее), то на твоем - несущественно на чем работать.
    Ответ написан
    9 комментариев
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    DevMan
    @DevMan
    1. вы получаете окружение близкое или идентичное к продакшену.
    2. вы получаете внятную консоль/шел из коробки.
    3. вы избавляетесь от массы вопросов типа "на локалке все работает, а залил на сервер и получил жопу" (или наоборот).
    4. у вас появляется более лучшее понимание как на сервере все работает.

    при теперешнем развитие технологий и производительности железа, нет необходимости себя ломать.
    можно попробовать в виртуалке (docker/vagrant)/дуалбуте и самому для себя решить стоит или нет.
    Ответ написан
    17 комментариев
  • Что подразумевается под получением ресурса и его инициализации в RAII?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    RAII это оборачивание в класс некоторой "сырой" сущности. Сущность может быть любая, но с ней неудобно работать, потому что надо следить за созданием и уничтожением в программе. Например

    class WinAPI32_Window
    {
    HWND hWnd = 0; // <--ресурс
    public:
      WinAPI32_Window()
      {
        //100 строк для регистрации класса окна и создания окна
        hWnd = CreateWindow(/* много параметров */); // <--получаем ресурс
    
        if (!hWnd) throw std::system_error("win creation error"); // кидаем исключение в конструкторе, если окно не создается, то объект не создается тоже 
        ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);
      }
    
      ~WinAPI32_Window()
      {
        DestroyWindow(hWnd);  // <-- освобождение ресурса
      }
    }
    
    //ну а дальше в программе:
    try {
      auto win = new WinAPI32_Window; //создаем объект = инициализируем и получаем внутри hWnd
    } catch //...
    //работаем
    delete win; //освобождаем ресурс путем удаления объекта
    Ответ написан
    1 комментарий
  • Typescript и типы по условиям. Как правильно поступить?

    @sanex3339 Автор вопроса
    Сделал пока через user defined guard functions:
    https://github.com/Microsoft/TypeScript/issues/1007

    public static isIdentifierNode (node: ITreeNode): node is IIdentifierNode {
        return node.type === 'Identifier';
    }
    
    estraverse.replace(catchClauseNode.param, {
        leave: (node: ITreeNode, parentNode: ITreeNode) => {
            if (NodeUtils.isIdentifierNode(node)) {
                this.catchClauseParam.set(node.name, Utils.getRandomVariableName());
                node.name = this.catchClauseParam.get(node.name);
    
                return;
            }
    
            return estraverse.VisitorOption.Skip;
        }
    });
    Ответ написан
    1 комментарий
  • Какие виды работ входят в тех поддержку сайта?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Кратко:
    Тех. поддержка - это починить, если поломалось и не допустить поломки.
    Всё остальное - доработки.

    По-видам работ для ТП:
    1. следить за объемом свободного места на хостинге (логи и прочее)
    2. следить за безопасностью и своевременно устранять "дыры"
    3. при внезапно возросшей нагрузке на сервер/сеть - быстро находить и устранять проблему (лучше - причину).
    4. обеспечить безотказную работу веб-сайта/сервиса на протяжении всего времени ТП.
    5. делать резервные копии и обновления ПО или его модулей (при необходимости)

    Остальное - ТЗ/доработки и/или доп.работы.
    Ответ написан
    4 комментария
  • Как ограничить доступ для разработчика в git проекте?

    sim3x
    @sim3x
    Никак
    Определить код в разные репозитории
    Ответ написан
    Комментировать
  • Как зарабатывают разработчики на бесплатных framework`ах?

    Rou1997
    @Rou1997
    А вы не задумывались, зачем вообще фреймворки нужны?
    Чтобы ускорить разработку - срубить больше бабла в те же сроки.
    Они запросто могут сами их использовать для создания сайтов по заказу.
    Фреймворк может быть разработан прямо в рамках одного из крупных и не срочных заказов, по принципу "долго запрягаем, потом быстро едем".
    Напротив, если автор фреймворков не создает сайтов на своем фреймворке, а сам фреймворк написал с бухты-барахты, то очень сомнительно, что фреймворк будет на что-то годиться - у него же нет опыта.
    Ответ написан
    1 комментарий
  • Как зарабатывают разработчики на бесплатных framework`ах?

    Denormalization
    @Denormalization
    Взять тот же Laravel:
    - Как минимум 3 сопутсвующих ПЛАТНЫХ проекта (forge, spark, envoyer).
    - Конференции с нехилым ценником.
    - Консультации
    - Не уверен, но возможно laracasts что-то отстегивает.

    И так же у многих крупных OpenSource проектов. Заработок идет на enterprise решениях на основе их проекта. (Та же платная поддержка).

    Некоторые (на вскидку не вспомню) OpenSource проекты получают финансированние от крупных организаций (Google, Yahoo, Microsoft, IBM).
    Ответ написан
    Комментировать
  • Как узнать скорость подключения клиента к сайту и дать соответствующий контент?

    @lubezniy
    Подход считаю неверным. Канал может быть и шустрым, но с платным и дорогим для пользователя трафиком. Как вариант, дайте пользователю минимальную версию и позвольте ему самому решить, надо ли ему какие-то плюшки в более высоком качестве.
    Ответ написан
    Комментировать
  • Как линкуются .cpp файлы к файлам .h?

    @abcd0x00
    Как он понимает, что реализация в file.cpp?

    Очень просто: ты подаёшь этот файл компилятору, а всё, что в нём есть, попадает в общее глобальное пространство. После обработки препроцессором всё это выглядит так, будто оно не в нескольких файлах, а в одном.

    В итоге, file.h file.cpp main.c становятся как бы одним файлом.
    Ответ написан
    5 комментариев
  • Как линкуются .cpp файлы к файлам .h?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Компоновщик ищет не файл с реализацией, а метод (на самом деле, это называется "символ") с соответствующим именем.

    Компоновщику передается список объектных файлов, и он во всех них ищет метод с нужной сигнатурой.

    Если в двух объектных файлах найдется одинаковый символ, компоновщик будет ругаться. В *.h компоновщик не смотрит.
    Ответ написан
    Комментировать
  • Код C, который не будет работать в C++?

    Массивы переменной длинны (VLA).

    #include "stdio.h"
    
    int main() {
     size_t n;
     scanf("%Iu", n);
     int array[n];
     return 0;
    }

    Но всё зависит от компилятора и строгости следования стандарту. GNU компилятор, например, вводит такие массивы для C++ в расширениях.

    Ещё в C есть restrict переменные, регистровые переменные, которых нет с C++.
    Ответ написан
  • Что наследуется в ООП?

    Класс наследуется, интерфейс реализуется.
    interface I {}
    class A {}
    class B extends A implements I {}

    Класс обычно называют чертежом объекта. А интерфейс - это контракт, который объект обязан выполнить.

    Возьмем, например, Велосипед, Грузовик и Мотоцикл.

    Мотоцикл - это почти Велосипед, он делается по тому же чертежу с небольшими дополнениями. Это наследование. Грузовик при этом ни от Велосипеда, ни от Мотоцикла не наследуется, у него совсем другой чертёж.

    Но каждый из этих объектов реализует контракт ТранспортноеСредство. Если у вас есть объект, являющийся ТранспортнымСредством, вы всегда уверены, что доедете из пункта А в пункт Б и при этом вам совершенно неважно сколько у этого объекта колёс.

    А вот если у вас есть контракт Автомобиль, то вы знаете, что можете выполнить такие действия как ОткрытьКапот, ВключитьСтеклоочистители. Велосипед при этом не сможет реализовать такой интерфейс. А Грузовик будет реализовывать оба контракта: хотите - передвигайтесь, хотите - открывайте капот.
    Ответ написан
    2 комментария
  • Как протестировать сайт на SQL-уязвимости?

    Antonoff
    @Antonoff
    Разработчик
    Ответ написан
    Комментировать
  • Как защитить REST API от невалидных запросов?

    @xfg
    Все что выполняется на стороне клиента, можно разобрать и вытащить секретную информацию. Поэтому любое приложение работающее на стороне клиента по определению является небезопасным и авторизовывать его нет смысла. Это можно будет подделать.

    То, что вы хотите можно сделать только с клиентами работающими на стороне сервера.

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

    Это так не работает. Нужно выбирать из двух:
    1. Публичный API -> Публичный клиент (выполняется на клиенте).
    2. Закрытй API -> Закрытый клиент (выполняется на сервере).
    Ответ написан
  • Вопрос по работе, что посоветуете?

    @GreatRash
    Если задачи однотипные, то можно придумать для них однотипное решение, затем клепать их за пять минут и оставшееся время проводить на тостере :) Ну или что-то для себя мутить.
    Ответ написан
    1 комментарий