© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
25 августа 2016 г. 17:00

LinuxТоп 10 Разработчиков и Компаний, внёсших вклад в ядро Linux в 2015-2016 годах

Linux, 25 лет, Linux Kernel

Сообщество ядра Linux закрыло год установлением нового рекорда по числу изменений влитых в один релиз, по сравнению с предыдущим отчётом разработки Linux Kernel .

В версии ядра 4.6 можно увидеть около 13,517 патчей влитых за 63 дня, что равно рекорду, установленному версией 3,15 в объёме 13,722 патчей 8 июня 2014.

Но изменения в ядро вносятся сломя голову последние 15 месяцев, с количеством в более чем 3 миллиона строк, добавленных в ядро Linux со скоростью 7,8 изменений в час.

"Способность поддерживать данную скорость изменений в течение многих лет является беспрецедентной для какого-либо общественного проекта программного обеспечения" - согласно отчёту.

Седьмое издание этого отчёта детализирует информацию по разработчикам, внёсшим вклад в ядро, и компаниям, в которых они работают, и наиболее важные изменения сделанные в коде в процессе разработки ядра с версии 3.18. Данные охватывают в основном разработку с последнего отчёта в Марте 2015 -- версии с 3.19 по 4.7 -- но некоторая статистика охватывает и 2005 год, когда разработка была перемещена в Git репозиторий, и даже охватывает первый выпуск Линуса Торвальдса в 1991 году.

25 августа 2016 г. 15:47

QtОт Visual Studio Add-In к Qt VS Tools (Beta)

Add-in, Qt VS Tools

Прошло почти три года с последнего официального выпуска Qt Visual Studio Add-in , но сейчас разработчики Qt предлагают кое-что новое: Qt VS Tools. Beta версию можно скачать с Qt Downloads для тестирования. Размер пакета был снижен с 200 Мб до 7 Мб.

В будущем планируется сделать Qt VS Tools доступным из Visual Studio Gallery с возможностью установки из Visual Studio 2013 и 2015. Необходимо обратить внимание на то, что поддержка старых версий Visual Studio прекращена. Перед установкой необходимо убедиться, что старая версия Qt Visual Studio Add-in удалена, поскольку совместно эти дополнения плохо работают.

Когда Вы начнёте использовать Qt VS Tools, Вы найдёте Qt New Item и New Project шаблоны в Templates|Visual C++|Qt . Не требуется использовать какие-либо пункты из визарда, названного Qt5, поскольку это артефакты Add-in.

25 августа 2016 г. 15:04

QtQt/C++ - Урок 053. Сборка IBASE SQL драйвера Qt 5.7 на openSUSE Leap 42.1

FireBird, IBASE, Leap, openSUSE, Qt, SQL

Установка Qt 5.7 на openSUSE Leap 42.1

Скачиваем последнюю версию Qt для Linux:

wget http://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run

Делаем файл исполняемым

chmod +x qt-unified-linux-x64-online.run

Устанавливаем gcc, make и прочие необходимые библиотеки:

sudo zypper install --type pattern devel_basis

Далее устанавливаем Qt:

./qt-unified-linux-x64-online.run

Следуем указаниям графического инсталятора. Не забываем отметить пункт Source для установки исходных кодов библиотек.

25 августа 2016 г. 7:05

RubyUser Guide #23 - Ruby - Константы класса

class, constants, Ruby, Ruby уроки, user guide, руководство пользователя

Константа имеет имя, начинающееся с латинской буквы в верхнем регистре. Значение константе присваивается только один раз при инициализации. В текущей реализации Ruby повторное присваивание значения константе вызывает предупреждение, но не ошибку (не-ANSI версия eval.rb не показывает предупреждения):

ruby>fluid=30
   30
ruby>fluid=31
   31
ruby>Solid=32
   32
ruby>Solid=33
   (eval):1: warning: already initialized constant Solid
   33
30 июля 2016 г. 16:03

QtQt WinAPI - Урок 004. QtIFW - Автоматизация WinDeployQt и сборки инсталляторов с Qt Installer Framework

Qt, Qt Installer Framework, QtIFW, windeployqt

Правильный программист - это ленивый программист. Если есть возможность что-то автоматизировать, то обязательно нужно это сделать. Например, можно сделать автоматическое выполнение windeployqt со сборкой онлайн и оффлайн инсталляторов, а также подготовкой репозитория приложения с помощью Qt Installer Framework и чёрной магии QMake .

Для того, чтобы сделать это наиболее красивым образом, необходимо, чтобы проект был организован со структурой subdirs , то есть состоял из нескольких проектов. Нам же не нужно при каждой сборке проекта создавать инсталляторы. Поэтому проект инсталлятора будет отдельным.

Но автоматизацию windeployqt оставим в основном проекте.

Структура проекта

Итак, имеем проект, с двумя подпроектами:

  1. Hello.pro - проект приложения
  2. Installer.pro -  проект инсталлятора

Основной проект представляет собой самый обычный "Hello world", но самый большой интерес заключается в скрипте QMake, который отвечает за windeployqt приложения.

Второй проект имеет минимальную структуру для сборки оффлайн и онлайн инсталляторов, а также сборки репозитория. Скрипт QMake в профайле проекта также содержит необходимую информацию для автоматизации сборки инсталляторов.

28 июля 2016 г. 15:40

QtQt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC

Boost, MinGW, MSVC, Qt

Первоначальное знакомство с Boost под Windows начну со сборки предкомпилированных  библиотек и подключения их к проекту на Qt. При этом воспользуюсь кодом одного из Hello World-ов из документации Boost, а именно с установки locale с использованием boost.

Сборка Boost для MinGW

Вначале скачиваем последнюю версию Boost (на момент написания статьи это версия 1.61) и распаковываем архив в одну из папок. В моём случае архив был распакован по следующему пути:

D:\EVILEG\boost_1_61_0

После чего открываем консоль и переходим в эту папку. В данной папке имеется батник bootstrap.bat для сборки инструмента bjam, который предназначен для управления компиляцией библиотек под целевой компилятор.

Чтобы собрать данный инструмент для MinGW необходимо выполнить следующую команду:

bootstrap.bat gcc

После того, как инструмент будет собран выполняем сборку всех необходимых библиотек следующей командой:

b2 toolset=gcc link=shared --prefix=boost_mingw_530 install  // ,где
    // toolset  - это инструментарий, которым будут собираться библиотеки, 
    //            то есть тип компилятора, которым Вы будете собирать библиотеки
    // link     - это тип библиотек, в данном случае shared - динамические
    // --prefix - папка куда будут скопированы заголовочные файлы и собранные библиотеки
    //            в моём случае D:\EVILEG\boost_1_61_0\boost_mingw_530

Далее можно заняться своими делами, поскольку процесс этот не быстрый.

14 июля 2016 г. 9:57

QMLИгра на QML - Урок 1. Игровая арена и динамические объекты

JavaScript, QML, Qt, динамические объекты, игровая арена

После первого опыта по написанию игры на Qt под Android, хочу поделиться этим опытом и предлагаю вместе написать простенькую игру в стиле "Убей крота". Это игра, в которой нужно успевать попадать по кротам, которые вылазят из нор, но учитывая, что это будет упрощённая игра, то вместо кротов используем круглые мишени, которые будут появляться на игровом поле. В качестве игрового поля будет использовать сетку 6 на 6 ячеек. Но для создания поля не будет использоваться какой-то специальный объект, типа GridLayout . В игровом поле сетка будет формироваться из количества строк, колонок и длины стороны квадратной ячейки. Данные о заполненности ячейки будут храниться в двумерном массиве, который будет сформирован в javascript составляющей (на забываем, что QML - это декларативный JSON-подобный язык с поддержкой javascript).

Структура проекта

Проект состоит из следующих файлов:

  • TargetGame.pro - профайл проекта;
  • deployment.pri - файл сборки и деплоя проекта;
  • main.cpp - файл с main функцией проекта;
  • main.qml - основной файл QML-слоя с объектом главного окна приложения;
  • Target.qml - файл QML с описанием объекта мишени;
  • Target.png - внешний вид мишени является png рисунком;
  • GameArea.qml - игровая арена с сеткой для размещения мишеней;
  • logic.js - файл с javascript логикой игры.

Изучим содержание лишь тех файлов, которые отличаются от содержания по умолчанию при создании проекта.

14 июля 2016 г. 9:00

QMLИгра на QML - Урок 2. Добавляем следы от выстрелов и систему очков

GameDev, QML, Qt, система очков

После того, как была сделана игровая арена и добавлены мишени, настало время реализовать попадание по мишеням, промахи и систему начисления и списывания очков.

Система начисления и списывания очков будет следующая:

  • В случае промахов, предлагаю сделать следы пулевых отверстий, нескольких видов, а также списывание по одному очку с игрового счёта.
  • В случае исчезновения мишени без попадания по ней также сделать списывание одного очка с игрового счёта.
  • В случае попадания по мишени начислять от одного до пяти очков в зависимости от того, насколько близко к центру пришлось данное попадание.

Счёт будет отображаться в верхней части игрового поля.

Структура проекта

Для реализации данной задумки понадобится, кроме модификации части файлов, добавить следующие файлы:

  • InfoBar.qml - который будет отображать информацию о счёте;
  • Bullet.qml - файл с описанием типа пулевого отверстия;
  • bullet-1.png, bullet-2.png, bullet-3.png, bullet-4.png, bullet-5.png, bullet-6.png - файлы с изображениями пулевых отверстий;

Возможные варианты пулевых отверстий размещаются в папке graphics, туда же было перенесено изображение мишени.

10 июля 2016 г. 7:03

RubyUser Guide #22 - Ruby - Локальные переменные

local variables, Ruby, ruby lesson, ruby уроки, user guide, локальные переменные, руководство пользователя

Локальные переменные имеют имя, начинающееся с символа нижнего подчёркивания или буквы в нижнем регистре. Локальные переменные работают не так, как глобальные переменные или переменные экземпляров классов, которые имеют значение nil до инициализации:

ruby> $foo
   nil
ruby> @foo
   nil
ruby> foo
ERR: (eval):1: undefined local variable or method `foo' for main(Object)

При первом назначении вы создаёте локальную переменную выполняя её объявление. Если обратиться к неинициализированной локальной переменной, то интерпретатор Ruby подумает об этом, как о попытке вызвать метод с этим именем; соответственно вы увидите сообщение об ошибке.

10 июля 2016 г. 7:01

RubyUser Guide #21 - Ruby - переменные экземпляра класса

Instance variables, Ruby, ruby lesson, ruby уроки, user guide, переменные класса, руководство пользователя

Имена переменных класса начинаются с символа @, и их область применения ограничивается областью видимости внутри класса, то есть той областью, на которую можно сослаться, используя переменную self . Два различных объекта, даже если они относятся к одному класса, могут иметь различные значения их переменных экземпляра класса. Снаружи объекта, переменные экземпляра не могут быть изменены или просмотрены (то есть переменные экземпляра класса в Ruby никогда не бывают публичными, public ), исключая те случаи, когда программист предусматривает для этого специальные методы. Как и в случае глобальных переменных, переменные экземпляра класса имеют значение nil , до тех пор, пока не будут инициализированы.

21 мая 2018 г. 8:30
Nasty

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 10 баллов
  • Очки рейтинга -10
20 мая 2018 г. 12:26
Venic

C++ - Тест 002. Константы

  • Результат 58 баллов
  • Очки рейтинга -2
20 мая 2018 г. 12:16
Venic

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 90 баллов
  • Очки рейтинга 8
Последние комментарии
19 мая 2018 г. 12:44
EVILEG

Django - Snippet 001. get_object_or_none

А вы гарантируете, что метод first вернёт нужный объект, если в таблице две похожих записи? Этого никто не гарантирует. Может возникнуть неопределённое поведение приложения, если запись не так...
19 мая 2018 г. 12:34
Pavel

Django - Snippet 001. get_object_or_none

Согласен с тем что ваше решение более очевидно при чтении кода. first() же здесь применяется не совсем по назначению. А с последствиями "моего" решения не согласен. Метод вернёт только один об...
19 мая 2018 г. 12:27
EVILEG

Как я использовал FilterView заместо ListView для упрощения фильтрации

Может быть, а может и нет, все имеют различную речь.. не могу отвечать за всех пользователей ресурса.. поскольку каждый пользователь может дополнить материал ресурса статьями.
19 мая 2018 г. 12:25
EVILEG

Django - Snippet 001. get_object_or_none

В вашем случае происходит подмена сущностей. Вместо того, чтобы взять один конкретный объект, вы забираете queryset а потом берёте из него первый объект. Нехорошо будет, если queryset в каком-...
19 мая 2018 г. 11:11
Pavel

Django - Snippet 001. get_object_or_none

Тоже искал подобную функцию, чтобы не обрабатывать каждый раз исключения. И нашёл на so совет использовать вместо неё метод менеджера first(), который возвращает None при пустом queryset. Т.е ...
Сейчас обсуждают на форуме
21 мая 2018 г. 16:18
otvertka

Выводит мусор

Да, мыши. Т.е. мне надо создать класс-потомок от QPushButton, и там переопределить метод mousePressEvent? И как тогда у  Buttons поменять класс на созданный?
20 мая 2018 г. 2:05
vitaliy_antipov

Удаление серии из графика

Ой, извините, совсем запарился. Туплю: void MainWindow::onDelSeries(int i){ chartview->chart()->findChild<QLineSeries *>("obj" + QString::number(i))->deleteLater();...
18 мая 2018 г. 8:55
mak_trefa

Сборщик мусора и Connections в qml

можешь попробовать в деструкторе модели вызвать throw; и в дебагере посмотреть stacktrace
17 мая 2018 г. 20:30
EVILEG

Нарисовать дугу в QGraphicsItem

Добрый день! Оу, я смотрю по гитхабу, что вы уже разобрались с проблемой. Извиняюсь, заработался и забыл про ваш вопрос.
17 мая 2018 г. 15:34
Евгений_Канусовский@1981

Проблема с combobox

Спасибо за очередную помощь!

Рекомендуемые страницы