• Что будет если забьется swap и оперативная на сервере ubuntu?

    mannaro
    @mannaro
    Умею профессионально гуглить
    В таком случае будет убито какое-либо приложение, дабы освободить оперативную память.
    Ответ написан
    1 комментарий
  • Зачем goto в исходниках Python?

    un1t
    @un1t
    Стандартная практика обработки ошибок или освобождения ресурсов в Си. Обычно в таких случаях goto более удобен и читаем чем альтернативные решения.
    Однако в данном конкретном примере функция очень короткая и в ней нет множества ветвлений, поэтому конечно проще написать без goto, но видимо сила привычки или задел на будущее.

    Вот напиример функция из питона с более уместным использованием goto

    static int
    ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
    {
        Py_ssize_t i, numfields = 0;
        int res = -1;
        PyObject *key, *value, *fields;
        fields = _PyObject_GetAttrId((PyObject*)Py_TYPE(self), &PyId__fields);
        if (!fields)
            PyErr_Clear();
        if (fields) {
            numfields = PySequence_Size(fields);
            if (numfields == -1)
                goto cleanup;
        }
    
        res = 0; /* if no error occurs, this stays 0 to the end */
        if (numfields < PyTuple_GET_SIZE(args)) {
            PyErr_Format(PyExc_TypeError, "%.400s constructor takes at most "
                         "%zd positional argument%s",
                         Py_TYPE(self)->tp_name,
                         numfields, numfields == 1 ? "" : "s");
            res = -1;
            goto cleanup;
        }
        for (i = 0; i < PyTuple_GET_SIZE(args); i++) {
            /* cannot be reached when fields is NULL */
            PyObject *name = PySequence_GetItem(fields, i);
            if (!name) {
                res = -1;
                goto cleanup;
            }
            res = PyObject_SetAttr(self, name, PyTuple_GET_ITEM(args, i));
            Py_DECREF(name);
            if (res < 0)
                goto cleanup;
        }
        if (kw) {
            i = 0;  /* needed by PyDict_Next */
            while (PyDict_Next(kw, &i, &key, &value)) {
                res = PyObject_SetAttr(self, key, value);
                if (res < 0)
                    goto cleanup;
            }
        }
      cleanup:
        Py_XDECREF(fields);
        return res;
    }
    Ответ написан
    Комментировать
  • Чем плохо проверять аргумент функции на допустимые значения внутри функции?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Вы заменяете условием то, что делается в два сдвига.
    Ответ написан
    1 комментарий
  • Чем плохо проверять аргумент функции на допустимые значения внутри функции?

    @res2001
    Developer, ex-admin
    assert в драйвере - это как-то перебор.
    Просто обнуляйте младший бит принудительно и будет у вас всегда четное число.
    А в инструкции опишите, что значение приводится к ближайшему меньшему четному.
    Для 1 байтового значения это будет так:
    val & 0xfe
    Ответ написан
    3 комментария
  • Как разрабатывать на маке в дома?

    wielski
    @wielski
    ✔ Совет: Вам помогли? Отметьте ответы решением.
    Напрягает, что постоянно висит в системе даже когда не разрабатываешь. А выключать, включать апач через консоль постоянно неудобно.

    Apache встроен в Mac OS не просто так. Он обязателен для работы многих внутренних систем.
    В связи с этим отключать его не рекомендуется.

    Да и в разработке, то по сути что надо? Используй одну версию php + веб-сервер, заливай файлы по фтп / sftp на боевой и все.

    По хорошему - свой сервер с git на борту (я использую gitlab), и работа только через него. FTP - зло.

    Что касается вашего вопроса - лучше всего Vagrant, но опять же это довольно неповоротливая махина, хоть и достаточно гибкая.

    Но лично я поставил php7.1 через brew и попросту запускаю проект на локалке через следующую команду:
    php -S localhost:8000 .

    В качестве среды разработки рекомендую PHPStorm. Серверы лицензий гуглятся за пару секунд. Пользуйтесь.
    Ответ написан
    2 комментария
  • Какая разница между Java и Python?

    Python позволяет быстрее вести разработку

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

    CityCat4
    @CityCat4 Куратор тега Сетевое оборудование
    Внимание! Изменился адрес почты!
    Возможно. Обычно роутер - это мини-сервер, специализированная железка, заточенная под задачи роутинга-файрволла-NAT и еще что-нибудь. Плюсы - маленький, нет механики (а значит нет износа), не сдохнет при внезапном выключении питания (сервер тоже не сдохнет, но fsck и возможно пропадание файлов никто не отменял). Минусы - если на сервере планируется не только прокси, но и сервисы, доступные извне - DNS, веб - придется пробрасывать порты и все такое.

    Решение с сервером в качестве роутера подойдет тем, кто сам сможет его админить. Решение с роутером в качестве роутера :) подойдет виндовозникам - тогда в качестве прокси можно поставить винду :)
    Ответ написан
    Комментировать
  • Как запретить работать линуксу при отказе жесткого диска?

    BuriK666
    @BuriK666
    Компьютерный псих
    в fstab добавьте errors=panic
    errors=panic Panic and halt the machine if an error occurs.
    (These mount options override the errors behavior
    specified in the superblock, which can be configured
    using tune2fs)

    https://www.kernel.org/doc/Documentation/filesyste...
    Ответ написан
    3 комментария
  • Почему нельзя декорировать ранее созданную функцию?

    @d1skort
    junior
    Ты не понимаешь суть декоратора.

    Раннее созданную функцию, можно обернуть, например вот так:
    func1 = decorator(func1)
    Ответ написан
    1 комментарий
  • Хватит ли скорости на 100 человек?

    Frankenstine
    @Frankenstine
    Сисадмин
    Внутрипровайдерская сеть может быть на 10Гб+ магистраль и по 1Гб на клиентах, но при этом никто не будет по этой сети давать 1Гб Интернет канал клиентам, это только канальная (физическая) скорость сети. Либо это будет ЗАМЕТНО дороже 150 руб/месяц. Толстый магистральный канал в данном случае нужен, чтобы качая друг у друга файлы, клиенты не положили всю сеть. По-хорошему, при 100 пользователях и магистральном канале в 10Гб, клиентам следует отдавать 100Мб соединение, иначе 6-8 человек в разных зданиях, качающих друг у друга блюрей фильмы через dc++, положат всю сеть к херам.
    Ответ написан
  • Что происходит с феном в ванной?

    longclaps
    @longclaps
    Пока никто не видит, фен в ванной флиртует с мочалкой.
    Ответ написан
    8 комментариев
  • Если я куплю американский macbook, слетит ли у меня гарантия при гравировке букв?

    @freeg0r
    .. some dude ..
    какая гравировка?? какое печатание вслепую??? просто идете в Preferences -> Keyboard -> Input Sources и добавляете Russian - Phonetic. Через два дня будете печатать так же вслепую со скоростью как на ЙЦУКЕН.
    b3f21d77be784a8ebd80ff31d18e89bf.png
    Ответ написан
    3 комментария
  • Чем собирать логи?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    как человек, сталкивавшийся с ELK
    6Г в день - не страшно для ELK. Но готовьтесь к прожорливости по памяти. Всеж Java...
    легкость масштабирования - в принципе да. Добавить ноду в кластер - дело минут. Синхронизация, правда, займет время. Но это везде так, данные "по волшебству" с ноды на ноду не перелетят.
    собирать из файлов - тоже без особых проблем. есть как Beats, так и Logstash - оба идеологически верные, от самого эластика. Да и альтернатив немало. Вплоть до скрипта на питоне - впихивание в эластик дело не сложное.
    сведение и поиск - в полный рост. быстрые диски(а лучше SSD) + обилие памяти и все будет летать.
    ускорялки - при Ваших 4-5 мб в минуту ускорялки врядли понадобятся.
    а вот о чем стоит подумать заранее - это что с какими полями вы собираетесь делать. А то сохранят размер файла как строку - а потом переживают, что поиск по меньше больше не работает. И про анализировать\не анализировать стоит подумать. Поиск по неанализированному полю ощутимо менне прожорлив - а значит быстрее
    Ответ написан
    7 комментариев
  • Где можно посмотреть пример сайта?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    djangogirls
    Ответ написан
    Комментировать
  • Как лучше создать поиск для сайта используя MySql + ElasticSearch?

    al_gon
    @al_gon
    Обычно в таких сценариях всё лежит в поисковом движке. Всё это поля для поиска и id самого товара. Больше этого не надо.
    Идет запрос к ES обычно страничный, находятся Id's идет запрос к SQL и вытаскиваются все нужные поля, часто между ES и SQL есть кэш.

    Как упаковать в Yii2, это отдельный вопрос (коим не владею), скорее всего вам понадобится позже фасетированние и автокомплит.
    Ответ написан
    4 комментария
  • Возможно ли сделать веб-приложение exe-файлом?

    Можно в программе поднимать локальный хост, на нём запускать сайт на flask, а в приложении просто открыть локальный адрес, например с помощью WinForms WebBrowserControl
    Ответ написан
    Комментировать
  • Как сделать систему безопасности виртуальных машин?

    ifaustrue
    @ifaustrue
    Пишу интересное в теллеграмм канале @cooladmin
    Краткий ликбез в то как работает виртуализация, чтобы чуть чуть продвинуть вас в вопросе про решение.
    Начнём с простого, как работает x86 система?
    Очень укрупнённо и упрощённо, она работает тактами. Каждый такт, процессор выполняет какие либо действия, что-то считает, что-то читает, что-то записывает.
    Каждый такт, на процессор поступает набор инструкций и они выполняются.
    В каждом такте у нас есть кусочек памяти, с которой мы можем работать - регистры. Какие-то мы можем читать и записывать, какие-то можем только читать, какие-то показывают нам текущее состояние. Регистров много и они разные.
    У нас есть таблица прерываний - она показывает нам состояние системы, состояние оборудования и устройств ввода и вывода.
    И много всего ещё. Всё это называет Контекст исполнения.
    Помимо прочего, у процессора (опять же если упростить) есть система безопастности основанная на уровнях привилегий процесса. Для Windows (и многих других систем), например, это два уровня: ядро (нулевой уровень, уровень ядра) и пользовательский (User-mode). Процесс (а в данном приближении - инструкции) запущенные на разных уровнях имеют различные привилегии, различный доступ к регистрам и прочим ресурсам и имеют различный Контекст исполнения

    Как работает ОС в штатном режиме?
    Операционная система запускает приложения, передаёт им управление на определённое время, делит процессор между приложениями согласно их приоритетам, их потребностям, наличию фокуса на окне, прерыванием от оборудования или драйверов, забирает процессор, если есть процесс важнее или если есть ожидание чего-либо (чтение, запись диска, сеть и тыды).
    Сама ОС и её драйвера, процессы, службы и прочее - работают в определённом Контексте исполнения, он частично меняется для каждого приложения, но не значительно.
    ОС (её ядро), часть процессов и часть драйверов - работают на нулевом уровне, с максимальными привилегиями, могут писать\читать куски памяти, писать в любое место, могут читать большинство регистров и так далее.

    С точки зрения ОС, что такое виртуальная машина?
    Ничего. Ну то есть прям вот так, для ОС нет никакого процесса или представления, для ОС (хостовой ОС) виртуальной машины не существует.

    А что есть? Ало?
    Есть процесс - гипервизард (если чуть точнее - мониторинг виртуальной машины - VMM). В его задачи входит следить за контекстом исполнения, за прерываниями, забирать управление у гостевой или хостовой ОС. Менять контекст исполнения и возвращать всё назад.

    И как это работает?
    Такт первый, в комнате двое ОС и VMM.
    ОС, вздыхая, присаживаясь на кушетку:
    - Кажется я немного устала и дел на сегодня больше нет
    VMM:
    - Тогда пожалуй мне пора.
    Выходит из комнаты с чайником
    Такт второй, улица, фонарь, двое в тени.
    VMM:
    - Псс, слышь, процессор интересует?
    Некто:
    - О! И маска процессора мне нравится и вообще круто, только регистры что-то не вижу, где, позвольте VT-D?
    VMM:
    - Чё сказал? Брать будешь нет?
    Некто:
    - Да ладно, ладно, я ж только спросил, буду конечно, быть виртуалкой меня ещё поучи
    Так третий. Заключительный
    В комнате накуренно, разбросаны бутылки, пахнет жжёными тряпками. Где-то смеются.
    Мужчина в трусах и с пультом от PS4 уставился в монитор. Дверь срывается с петель и падает на пол.
    VMM врываясь:
    - Всем выйти из сумрака! Это ночной дозор!

    *переводя на компьютерные термины.
    Для ОС VMM это процесс. ОС передаёт ему управление, как обычному процессу. Тот, меняет контекст исполнения (меняет все все регистры. Или почти все все регистры) и передаёт управление гостевой ОС, та выполняет какую-то свою работу (заведомо зная что она виртуализирована). Дальше гипервизард ставит гостевую ОС на паузу и возвращает всё назад. ПОсле этого хостовая ОС получает свой контекст исполнения и делает свою работу.
    И так такт за тактом.
    Поступило прерывание? Проверили кому оно, сменили контекст исполнения, доставили прерывание, почистили таблицы, вернули назад.
    **на самом деле всё чуть сложнее. И с прерываниями, и с уровнями доступа, и с регистрами, и с оборудованием, и тыды, но это выходит за пределы вопроса (и мне лень).
    ***речь идёт про аппаратную виртуализацию.

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

    Смените тему диплома. ПОкопайте как работает виртуализация. Сама по себе это очень годная тема для изучения.
    Ответ написан
    1 комментарий
  • Чем отличается JDBC от ORM?

    Rou1997
    @Rou1997
    Работая с JDBC, вы непосредственно работаете с базой данных, ORM же представляет "обертку" для того же JDBC, которая (ORM) реализует паттерны, обеспечивающее большее удобство, помогает ускорить разработку, очевидно что лучше предпочитать второе, но первое проще для простых задач, более гибко, а также помогает освоить второе.
    Ответ написан
    Комментировать
  • Как импортировать класс?

    urtow
    @urtow
    *nix, python, QA, bagpipe, folk music
    from baza import ИмяКласса

    https://docs.python.org/3.5/tutorial/modules.html
    Ответ написан
    Комментировать
  • Как отыскать нагрузку?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    в админку стучатся не более 10 раз за день, в xmlrpc не более 5 в день

    А во все остальное? Если никуда не стучатся, то это вопрос к хостеру, откуда там нагрузка.

    А вообще VPS лучше взять, по цене так же, а по всему остальному гораздо лучше. И не будет никаких "превышений нагрузки".
    Ответ написан
    8 комментариев