Задать вопрос
  • Как лучше создать поиск для сайта используя 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 комментариев
  • Качество связи в локальной сети - каким софтом можно измерить?

    @cssman
    iperf, hping
    Ответ написан
    Комментировать
  • Как использовать SAX-парсер для сохранения только дочерних элементов и хранение их в коллекции?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    import java.io.IOException;
    
    import java.util.List;
    import java.util.ArrayList;
    
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    
    class Department {
        private String number;
        private String name;
        private List<Integer> products;
    
        public Department(String number, String name) {
            this.number = number;
            this.name = name;
            this.products = new ArrayList<>();
        }
        
        public void setProducts(List<Integer> products) {
            this.products = products;
        }
        
        public String toString() {
            return String.format("Name: %s\nNumber: %s\nProducts: %s\n", name, number, products);
        }
    }
    
    public class SAXHandler extends DefaultHandler {
        private List<Department> departments;
        private List<Integer> products;
        private Department currentDepartment;
        
        public SAXHandler() {
            this.departments = new ArrayList<>();
        }
        
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            if(qName.equals("department")) {
                String name = attributes.getValue("name");
                String number = attributes.getValue("number");
                
                products = new ArrayList<>();
    
                currentDepartment = new Department(name, number);
            }
            
            if(qName.equals("product")) {
                String id = attributes.getValue("id");
                products.add(Integer.valueOf(id));
            }
        }
        
        public void endElement(String uri, String localName, String qName) throws SAXException {
            if(qName.equals("department")) {
                currentDepartment.setProducts(products);
                departments.add(currentDepartment);
            }
    	}
        
        public List<Department> getResult() {
            return departments;
        }
    
        public static void main(final String args[]) {
            try {
                SAXParserFactory factory = SAXParserFactory.newInstance();
                SAXParser saxParser = factory.newSAXParser();
        
                SAXHandler handler = new SAXHandler();
                saxParser.parse("test.xml", handler);
            
                handler.getResult().stream().forEach(System.out::println);
            }
            catch(SAXException ex) {}
            catch(ParserConfigurationException ex) {}
            catch(IOException ex) {}
        }
    }
    Ответ написан
    4 комментария
  • Как отфильтровать лишние слова в bash?

    @RPG
    echo "lint.sh some.css some.js somecss some.csss" | grep -owP "[^\s]+\.css"
    some.css
    Ответ написан
    3 комментария
  • Сколько выполнятся программа в Python?

    @nirvimel
    Если только в самом алгоритме не предусмотрена функция информирования о прогрессе собственного исполнения, то снаружи теоретически невозможно определить на каком этапе находится решение задачи и даже то, будет ли эта задача решена когда-либо вообще.
    Ответ написан
    Комментировать
  • Почему может рваться TCP-подключение без видимых причин?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Скорее всего вылетает по таймауту. Попробуйте включить keepalive
    socket.SetSocketOption(SocketOptionLevel.Socket, 
                           SocketOptionName.KeepAlive, true );
    Ответ написан
    9 комментариев
  • Как кэшировать картинки?

    @pcdesign
    Все же статику должен отдавать nginx, а flask другими делами заниматься.

    В ngnix все просто.
    Указываете путь и время кеширования, например:

    root   /home/flask/app/;
    expires 30d;


    А картинку отдаете с темплейта, с прямым путем.
    Ответ написан
    Комментировать
  • Ддос на сайт через поиск, что делать?

    @alameya
    Для начала отрубить поиск чтобы остальная часть сайта работала пока вы исправляете его.
    ддос через поиск одна из самых простых атак.
    все дело в медленных запросах к бд. скорее всего у вас стоит mysql с движком innodb или другая бд/движок mysql не поддерживающая полнотекстовый поиск, либо поддерживает но индекс не построен.
    Поэтому часто совсем небольшого кол-ва запросов (4-10) достаточно чтобы положить сайт.

    Выходов несколько:
    1. Временная мера - бан по ip или кол-ву поисковых запросов в ед времени на уровне приложения.
    2. Проверка БД, индексов и самих медленных запросов
    3. Сервера полнотекстового поиска: sphinx, elasticsearch, solr, apache lucence итп
    Ответ написан
    2 комментария
  • Что посоветуете улучшить в компьютере?

    kykyryky
    @kykyryky
    Поставьте SSD, а на него винду.
    Ответ написан
    Комментировать
  • Хорошая практика для Python?

    @Cnfc19932
    Full-stack web developer
    Какие книги?Вы о чем вообще, 2016 год за окном.Просто берете и пишите код.Берите любую задачу и пробуйте ее реализовать, никакие книги не помогут
    Ответ написан
    9 комментариев
  • Как замедлить работу MacBook Pro?

    0xcffaedfe
    @0xcffaedfe
    Developer & Reverser
    Поставь на него винду.
    Ответ написан
    Комментировать
  • Что делать, если после очистки ноутбука выдаёт "MBR ERROR" и не воспринимает диск?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    на днях стёрла всё с ноутбука hp pavilion при помощи acronis

    Вы стёрли ВСЁ - и свои данные, фото, документы, и Винду - вот ноутбук и не загружается.
    Нужно устанавливать операционную систему поновой.
    Ответ написан
    2 комментария
  • Влияет ли dhcp на заражение ARP-таблиц?

    mikes
    @mikes
    dhcp bспользовать вполне безопасно.
    вообще если подходить только с точки зрения теории, то пользоваться вообще ничем нельзя, потому что есть атаки основанные на практически всех технологиях.

    если есть желание усилить безопасность своей сети то ms ad + ms ias/freeradius + 802.1x вам в руки в купе с включением dhcp relay да arp guard каким нить в в коммутаторах.
    Ответ написан
    Комментировать
  • На что сменить Фотошоп на Mac OS, если занимаешься СММ?

    0xcffaedfe
    @0xcffaedfe
    Developer & Reverser
    я юзаю Pixelmator
    Ответ написан
    Комментировать