Задать вопрос
  • В каком vlan находится коммутатор?

    Endru9
    @Endru9
    Админ Linux
    по умолчанию всегда используется VLAN 1.
    Ищи в настройках Management VLAN
    Ответ написан
    Комментировать
  • Какой штрих-код использовать?

    oren
    @oren
    Frontend Dev, Бизнес-информатика
    Берите этот код и шрифт к нему.
    Читается любым сканером.
    Ответ написан
    Комментировать
  • Хабрахабр, после публикации в песочницу привяжется ли пост ко мне?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    да
    Ответ написан
    Комментировать
  • Как перебросить аудиокнижки на телефон со сломанным usb портом?

    @davidnum95
    Через ftp в локалке вроде норм должны файлы передаваться. На телефоне через тотал подрубаешься к ftp и качаешь все что нужно.
    Ответ написан
    5 комментариев
  • WinScp запретить разрыв сессии?

    Frankenstine
    @Frankenstine
    Сисадмин
    Сессия рвётся сетевым стеком, а именно - протоколом TCP/IP.
    Ответ написан
    Комментировать
  • Кому принадлежат статьи, выложенные на Хабре?

    https://habrahabr.ru/info/agreement/ - 4 пункт об интеллектуальных правах. Там перечислено все, что вправе делать хабр, когда получается неисключительную лицензию на выложенный вами контент. Судя по написанному все написаннное автором остается за автором.
    Ответ написан
    Комментировать
  • Что сделать из смартфона (треснувший тач, артефакты по изображению)?

    x67
    @x67
    Подключи к телевизору, если получится, еще и мышь можно беспроводную подключить или джойстик. И будет домашняя приставка
    Ответ написан
    Комментировать
  • Что сделать из смартфона (треснувший тач, артефакты по изображению)?

    @other_letter
    В принципе что угодно - фоторамку, извещалку, мозги для "умного дома", наблюдалку, домофонку...
    Можно воткнуть OTG-кабель, а туда мышку и пользоваться себе почти как десктопом.
    Ответ написан
    Комментировать
  • Как можно запретить скачивание или просмотр видео с сервера постороним?

    Jump
    @Jump
    Системный администратор со стажем.
    Как можно запретить скачивание или просмотр видео с сервера постороним?
    Очень просто - запретить доступ на сервер. Разрешать только не постороним. В результате посторонние не смогут ни смотреть, ни скачивать ничего с вашего сервера.

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

    Важно помнить одну вешь -
    Чтобы что-то посмотреть нужно это что-то сначала скачать.
    Поэтому нельзя запретить скачивание и разрешить просмотр - это просто физически невозможно.
    Ответ написан
    6 комментариев
  • Зачем прокладывают провода по дну океана?

    Frankenstine
    @Frankenstine
    Сисадмин
    Спутниковая связь в сравнении с кабельной имеет три существенных недостатка:
    1) Очень большое расстояние до орбиты по сравнению с наземными/подводными сетями, как следствие - большая задержка между запросом и ответом (несколько десятых секунды в лучшем случае, чем ниже задержка тем ниже и больше нужно спутников))
    2) Низкая пропускная способность (у кабелей - терабиты в секунду, у спутников - на порядок-другой ниже)
    3) Низкий срок эксплуатации, отсюда дороговизна - через 5-10 лет надо запускать новые спутники.
    Ответ написан
    Комментировать
  • Зачем прокладывают провода по дну океана?

    Jump
    @Jump
    Системный администратор со стажем.
    Но зачем тратить столько денег на эти кабели, если есть спутниковые сети?
    Ну потому что кабель -
    • Намного дешевле. В десятки и сотни раз.
    • Намного проще проложить.
    • Намного больше пропускная способность. В тысячи и миллионы раз.
    Ответ написан
    Комментировать
  • Зачем прокладывают провода по дну океана?

    petermzg
    @petermzg
    Самый лучший программист
    Потому что по радиоканалу тот обьем траффика, что можно передать по толстому кабелю, современный методы компрессии передать не могут.
    Ответ написан
    Комментировать
  • Нормально ли спрашивать про бывшую зарплату?

    sim3x
    @sim3x
    На постсовке - нормально.
    Отвечать - стоит только после того как ты подписал документ, где указана твоя будущая зп на данном месте. Иначе, поторговаться о зп просто не получится.
    Если собеседующий будет показывать кислое лицо, спроси у него (если у них такая прозрачность в зп) сколько он получает сейчас и сколько получают другие люди в конторе

    В мире - не нормально. Потому что everybody lies и коммерческая тайна
    АПД: могут спрашивать об ожидаемой зп. Но такое стоит обсуждать уже после того, как технические собеседования прошли и они не провалены
    Ответ написан
  • Сервер (железка) как шлюз. Приемлемо для компании?

    Зависит от размеров компании и требований к роутеру.
    В малом-среднем бизнесе будет выгоднее использовать ПК, т.к. на нём вы запустите маршрутизацию, NAT, шейпер, статистику вести будете, туннели поднимите разнородные - гибко. Подойдёт не сликшмо навороченное б/у серверное оборудование.
    Ответ написан
    3 комментария
  • Вычислить по IP - миф или реальность?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Реально ли вычислить по IP его местоположение?

    Город - вполне, более точно - очень вряд ли. Баз данных, сопоставления IP/город - просто пруд пруди, от "приблизительных" до довольно точных, например вот.

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

    Для начала нужно убедиться в том, что это были не Вы, просто почему-то с другого адреса. Угловоное преступление - это когда есть пострадавшие и/или ущерб составляет какую-то крупную сумму денег. Представьте себе ситуацию, которая гипотетически вполне возможна, что у вас есть ящик "vasya1@yandex.ru" с паролем "qwe123", а кого-то есть ящик "vasya2@yandex.ru", с таким же точно паролем... и вот, Вы, по ошибке вместо "1" набираете"2" и "свой" пароль, и попадаете в чужой ящик, случайно, с "другого IP"... как думаете, это уголовное преступление? :) Нет, безусловно, если Вы докажите корыстный умысел злоумышленника, а так же то, что он проник в Ваш компьютер намеренно, с какой-то конкретной и противозаконной целью (хотя, взлом чужого компьютера, насколько я помню, сам по себе считается противозаконным) или каким-то другим неправедным путём завладел Вашими учётными данными от почты... - можете обратиться в полицию, заодно прихватив с собой доказательства. Они сделают запрос провайдеру, а тот в свою очередь выдаст адрес злодея. Но это всё формальности и работает на уровне "теории коммунизма".

    Что делать? Прежде всего, сменить пароль от почты на более серьёзный, привязать к ней телефон и задействовать прочие меры безопасности, из тех что предусмотрены вашим почтовым провайдером. А заодно написать в службу поддержки, они наверняка смогут подсказать, с какого примерно города был вход.
    Ответ написан
    1 комментарий
  • Какую программу использовать для простенького 3D моделирования?

    Blender
    Плюс, Blend4Web для публикации всего действа в виде красивой презентации.
    Ответ написан
    1 комментарий
  • Как исправить проблему с регистрацией и службой поддержки на хабре?

    Boomburum
    @Boomburum Куратор тега Хабр
    Местный
    Проверьте, чтобы у вас в браузере корректно работали всякие там JS, рефереры, куки итд, чтобы ничего не мешало — тогда всё должно получиться.
    Ответ написан
    1 комментарий
  • Что я делаю не так в открытии порта?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Подскажите что я упустил, или что я делал не так?
    Похоже вы пропустили главное.
    Чтобы получить доступ к своему компьютеру из интернета нужно иметь белый IP адрес.
    Если он есть, тогда можно пробрасывать порты с роутера, которому присвоен белый адрес, на компьютер.
    Если его нет - что толку пробрасывать? Доступа все равно не будет.

    Похоже у вас банально нет белого(реального) IP адреса.
    Вот и все.
    Ответ написан
  • Как правильно выводить информацию из QVector?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Откройте для себя Model/View в Qt. В частности, ваша задачка с каталогами описана здесь.

    Вкратце: у вас есть модель, в котором вы связываете ваш способ хранения (QVector в вашем случае) со стандарным интерфейсомQAbstractItemModel (или его потомки QAbstractListModel, QAbstractTableModel или QAbstractTreeModel), который можно передать в один из стандартных вью-виджетов (QListView, QTableView, QTreeView). Реализовав интерфейс (переопределив виртуальные методы data и setData для role==Qt::DisplayRole и Qt::EditRole), вы можете просто изменять состояние модели, а вью-виджеты подхватят изменения автоматически.

    Кроме того, есть еще такая штука - QDataWidgetMapper. Он умеет привязывать виджеты (даже обычные, не View) к определенным полям в модели.
    Пример

    Пример объемный, но минимально полный, содержащий всю необходимую инфраструктуру. Допустим, мы хотим создать редактор для некоторых статей (блога?). Нам нужен простой класс Article, чтобы собрать в кучу данные о каждой отдельной статье:

    class Article
    {
    public:
        Article(int id, const QString& title, const QString& content) 
            : _id(id), _title(title), _content(content) {}
    
        int id() const { return _id; } 
        void setId(int id) { _id = id; }
    
        QString title() const { return _title; } 
        void setTitle(const QString& title) { _title = title; }
    
        QString content() const { return _content; }
        void setContent(const QString& content) { _content = content; }
    
    private:
        int     _id;
        QString _title;
        QString _content;
    };

    Для него напишем модель хранения этих статей - ArticlesModel, содержащей массив статей и методы для их добавления/удаления. Кроме того, для нее мы реализуем стандартный интерфейс QAbstractTableModel (методы rowCount, columnCount, data и setData), чтобы виджеты знали, как оттуда брать и как обновлять данные.

    class ArticlesModel :
            public QAbstractTableModel
    {
    public:
        ArticlesModel(QObject *parent=nullptr);
    
        void addArticle(const Article& art);
        void removeArticle(int id);
    
        //QAbstractTableModel interface implamentation
        int rowCount(const QModelIndex &/*parent*/) const override;
        int columnCount(const QModelIndex &/*parent*/) const override;
    
        bool data(QModelIndex& index, const QVariant &value, int role) const override;
        QVariant setData(QModelIndex& index, int role) override;
        
    private:
        std::vector<Article> _articles;
    };
    
    // =================================================================
    
    ArticlesModel(QObject *parent/*=nullptr*/) 
        : QAbstractTableModel(parent)
    {
    }
    
    void ArticlesModel::addArticle(const Article& art) {
        _articles.push_back(art);
    }
    void ArticlesModel::removeArticle(int id) {
        auto found = std::find_if(begin(_articles), end(_articles), 
                                [id](const Article& art) {
                                    art.id() == id;
                                });
        if (found != std::end(_articles)) {
            _articles.erase(artIt);
        }
    }
    
    
    int ArticlesModel::rowCount(const QModelIndex &/*parent*/) const override {
        return _articles.size();
    }
    int ArticlesModel::columnCount(const QModelIndex &/*parent*/) const override {
        return 2;
    }
    
    bool ArticlesModel::data(QModelIndex& index, const QVariant &value, int role) const override {
        if (!index.isValid) return QVariant();
    
        if (role == Qt::EditRole) {
            switch (column) {
                case 0: 
                    QVariant(_articles[index.row()].setTitle(value.toString()));
                    return true; 
                case 1:
                    QVariant(_articles[index.row()].setContent(value.toString()));
                    return true; 
            }
        }
        return false;
    }
    
    QVariant ArticlesModel::setData(QModelIndex& index, int role) override {
        if (!index.isValid) return QVariant();
    
        if (role == Qt::DisplayRole || role == Qt::EditRole) {
            switch (column) {
                case 0: return QVariant(_articles[index.row()].title()); 
                case 1: return QVariant(_articles[index.row()].content());
            }
        }
        return QVariant();
    }


    Тогда можно сделать так:

    // this - это какой-то родительский виджет
    
    auto titleEditor = new QLineEdit(this);
    auto contentEditor = new QTextEdit(this);
    
    QAbstractTableModel *model = new ArticlesModel(this);
    model->addArticle(Article(1, "Hello title", "Hello content"));
    model->addArticle(Article(2, "Another title", "Another content"));
    
    auto mapper = new QDataWidgetMapper(this);
    mapper->setModel(model);
    mapper->addMapping(titleEditor, 0);
    mapper->addMapping(contentEditor, 1);
    mapper->toFirst(); // Переключаемся на первый элемент модели


    Теперь мы можем добавлять/удалять статьи в model->add/removeArticle(const Article&), переходить с заметки на заметку с помощью mapper->setCurrentIndex(int index), менять содержимое заметок в редакторе.

    Можно добавить QListView, так же передать туда модель через setModel() и связать сигнал изменения текущего элемента списка с тем же действием mapper, добавить пару кнопок для добавления/удаления заметок и мы получим полноценный редактор.
    Ответ написан
    Комментировать