Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
29 ноября 2018 г. 19:10

Boost

cpp, Boost, linking, C++, static

Небольшая заметка о статической линковке Boost, чтобы не забыть.

Исходные данные:

  • ОС Windows
  • MSVC 2017 64bit
  • Boost 1.68.0
  • Проект на CMake
Пример будет показан в самом простом варианте без специальных установок переменных. Максимально по умолчанию.

28 ноября 2018 г. 18:58

Java

Java, synchronization, threads, processes

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

Критические секции

Данный метод подойдет вам, если:

  • параллельные потоки работают с общим ресурсом;
  • требуется синхронизация между потоками, а не процессами;

Данный метод синхронизации называют синхронизацией по ресурсам (синхронизация типа “открыть – закрыть”). Идея данного метода состоит в том, что каждый объект в Java имеет ассоциированный с ним монитор. Монитор представляет своего рода инструмент для управления доступа к объекту.

25 ноября 2018 г. 22:11

Qt

QLineEdit, max, Qt

Напишем небольшое приложение для получения максимального числа из нескольких полей QLineEdit.

Это значит, что у нас будет несколько полей QLineEdit, допустим 4 штуки, в которые будут вводиться числа. И будет пятое поле QLineEdit в которое будет выводиться результат. Также имеем кнопку QPushButton, по нажатию будут забираться значения из всех полей QLineEdit и среди них будем искать максимальное число, которое было введено в эти поля.

Приложение будет выглядеть так

20 ноября 2018 г. 12:42

Qt

QThread, Qt, QAbstractTableModel, QSqlQuery

Возникла необходимость получить большой объем данных из базы данных для последующей работы пользователя с ними (Справочник товаров в определенном магазине).

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

Запрос сам по себе выполняет достаточно долго. По этому  делаем его в потоке, пользователю отображаем бесконечный ProgressBar с предложением "Откинутся на спинку стула и подождать." :-)

18 ноября 2018 г. 14:52

Qt

QSequentialAnimationGroup, cpp, Qt, C++, QPropertyAnimation

Напишем небольшой пример приложения, в котором будет передвигаться кнопка с помощью анимаций свойств. Для этого воспользуемся классами QSequentialAnimationGroup и QPropertyAnimation .

QSequentialAnimationGroup является классом объединяющим несколько анимаций в одну группу, что позволяет автоматически запускать одну анимацию, когда завершилась предыдущая QPropertyAnimation.

Анимация будет запускаться по нажатию кнопки и эта самая кнопка будет передвигаться в окне так, как показано на изображении.

18 ноября 2018 г. 10:57

Boost

cpp, Boost, Menu, C++

А вот и статья по boost из моих кое-каких накопившихся материалов. Предлагаю вашему вниманию вариант написания консольной программы с поддержкой консольного меню, которое реализуется с помощью boost::program_options .

boost::program_options отвечает за обработку передаваемых программе аргументов и устанавливает все необходимые переменные без необходимости реализовывать длинную логику из if else веток. Это уже реализуется внутри boost::program_optons .

Предположим, что наша программа будет принимать в качестве аргументов следующие данные

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

Также программа будет иметь меню help, которое и будет данным консольным меню.

На рисунке ниже представлен вариант использования данной программы.

6 ноября 2018 г. 22:13

EVILEG

EVILEG, Развитие, News

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

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

27 октября 2018 г. 23:36

Django

Django, Facebook, Social

Прикрутил авторизацию на сайте через Facebook.

Заодно собрал ещё пару подводных камней.

До Facebook я уже прикрутил авторизацию через социальную сеть ВКонтакте и Google . И вот тут мне понадобилось создавать страницу политики конфиденциальности, поскольку Facebook требует эту страницу, а также требует пользовательское соглашение, но я предоставил страницу политики конфиденциальности. Думаю, что с ростом сайта добавлю и полноценную страницу пользовательского соглашения, хотя когда это будет, неизвестно. Впрочем правила сайта описаны достаточно подробно.

Также наткнулся на строгую необходимость наличия https у сайта. Вообще, если учесть, что у меня есть https от Let`s Encrypt , то не думал, что возникнет какая-то проблема, но как оказалось, что по умолчанию django-social-auth формирует обратный адрес с протоколом HTTP, а для использования HTTPS нужно указать это в настройках.

А теперь посмотрим, как это делается.

26 октября 2018 г. 21:35

Qt

Qt5, QJsonArray, QJsonObject, QJsonDocument, JSON, Qt

Рассмотрим небольшой пример по формированию JSON документа из, например, текста и заголовка этого текста.

Например у текста есть:

  • Заголовок - First Title
  • Контент - First Content

И т.д.

Будем добавлять данный текст в QJsonObject , который будем добавлять в массив текстов QJsonArray . Массив объектов будет находиться в общем рабочем QJsonObject , который будем сохранять в файл.

Всё это будем делать через графический интерфейс, в котором есть:

  • QLineEdit - titleLineEdit - содержит заголовок текста, который нужно добавить
  • QTextEdit - contentTextEdit - содержит содержимое текста, который нужно добавить
  • QTextEdit - jsonDocumentTextEdit - предпросмотр JSON документа
  • QPushButton - addButton - кнопка для добавления нового текста в JSON
  • QPushButton - clearButton - кнопка для удаления всех текстов из  текущего QJsonObject
  • QPushButton - saveButton - кнопка для сохранения JSON документа в файл
  • QPushButton - loadButton - кнопка для считывания JSON из файла

В данном случае сможем считать JSON файл и добавить дополнительные тексты в считанный файл.

Приложение будет выглядеть так.

25 октября 2018 г. 6:47

Django

django, сообщение, Python, чат

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

Раньше имелась очень большая недоработка, которая заключалась в том, что не показывался счётчик диалогов с непрочитанными сообщениями, что приводило к тому, что пользователей, которому присылали сообщение, просто не обращал на него внимания, поскольку не знал об этом сообщений.

Теперь я наконец исправил этот недостаток. И в рамках предыдущего кода покажу, какие были добавлены исправления.

IO
20 января 2019 г. 18:39
Ivan Otreshko

C++ - Тест 003. Условия и циклы

  • Результат:0баллов,
  • Очки рейтинга-10
IO
20 января 2019 г. 15:27
Ivan Otreshko

C++ - Тест 003. Условия и циклы

  • Результат:0баллов,
  • Очки рейтинга-10
v
17 января 2019 г. 11:51
vitalir12

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

  • Результат:20баллов,
  • Очки рейтинга-10
Последние комментарии
I
16 января 2019 г. 8:06
IscanderChe

Заработало. Забыл model->select(); вписать.
I
16 января 2019 г. 8:02
IscanderChe

Всё равно пусто, хотя строка с данными в базу добавляется.
16 января 2019 г. 7:51
Евгений Легоцкой

потому, что нужно сохранять информацию для всех остальных ролей и столбцов через вызов переопределённого метода. Да к тому же вы ещё и зациклили вызов метода data. QVariant MySqlTableModel:...
I
16 января 2019 г. 7:43
IscanderChe

Сделал вот так. В tableView ничего нет, кроме заголовка. QVariant MySqlTableModel::data(const QModelIndex &index, int role) const{ if (role == Qt::DisplayRole) { QTime ...
Сейчас обсуждают на форуме
21 января 2019 г. 16:28
Михаиллл

Добрый день.Почему работая на С++, нельзя полноценно использовать dll , написанных на C#, java?И почему используя другие языки, можно использовать dll , написанных на C++?
21 января 2019 г. 16:24
Михаиллл

Нашел ссылку на древние типы данных , а тут нынешние их аналоги.Но все равно каое что непоня:что такое : LPCTSTR, CALLBACK (наверно QDialig),IDOK, EDITSTREAM, TCHARКод...
21 января 2019 г. 14:30
Евгений Легоцкой

Порядок создания тем - пункт 4
ПБ
21 января 2019 г. 9:23
Павел Богдевич

Ребята, привет. Это 2 версии одного приложения. Отличаются только способом инициализации таблицы. В одной версии работает сортировка таблицы, когда кликаешь по хедеру колонки, в другой - нет. ...
21 января 2019 г. 7:36
Евгений Легоцкой

Добрый день! Из ваего вопроса понятна первая часть. На сайте есть статья по динамическому созданию виджетов, посмотрите её для начала - Динамическое создание виджетов . ...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы