MYCSS

Показ дописів із міткою programming. Показати всі дописи
Показ дописів із міткою programming. Показати всі дописи

2016-11-01

Нотатка для себе: JavaScript - скільки років пройшло.

Потрібно було написати маленький код щоб, сторінка історичних фактів була завжди актуальна, на кшталт: 23 роки тому.  До того ж код відрізняв різні мови сайту, за адресою сторінки: /uk/...., /en/....
Проблема стала в тому що цей код повинен працювати на форумі, де є обрізання службових символів таких як: <, >.
<script>function toD(yy){var te,te1,d1,texf,pastext,lang,yt;var parser=document.createElement('a');parser.href=document.URL;lang=parser.pathname.split('/',2)[1].toLowerCase();d1=new Date();d1.setFullYear(yy,0,1);te=new Date().getFullYear()-d1.getFullYear();if(te==0)return;te1=te-(Math.floor(te/10)*10);switch(lang){case"ru":yt="лет";switch(te1){case 1:yt="год";break;case 2:case 3:case 4:yt="года";break;} pastext=yt+" назад";break;case"en":yt="years";if(te1==1)yt="year";pastext=yt+" ago";break;default:yt="років";switch(te1){case 1:yt="рік";break;case 2:case 3:case 4:yt="роки";break;} pastext=yt+" тому";} texf=" ("+te+" "+pastext+") ";document.write(texf);return te;}</script>
Використання:
<script>toD(2000)</script>
Наприклад, 2000 рік це було:

2016-09-15

Використання змінних з проект файлу Qt5 у С++ програмі

Наприклад у інтерфейсі програмі треба показати версію програми, визначаємо змінну VERSION у файлі .pro:
VERSION = 0.1.0
Але є проблема що у програмі це повинна бути string, обробляємо:
VERSTR = '\\"$${VERSION}\\"'
І додаємо оброблену зміну через визначення DEFINES:
DEFINES += VER=\"$${VERSTR}\"
Після цього можна використати у власній програмі .cpp:
#ifdef  VER
QString("version: %1 (Build: %2 %3)").arg(VER).arg(__DATE__).arg(__TIME__);
#endif
P.S. DEFINES визначає змінні макросів С препроцесора для qmake через ключ  -D (add_definition)

2016-06-18

Qt контрольована робота QRunnable, QThread, QThreadPool, на прикладі QWebSocket

За допомогою статті можна зробити контрольовану роботу QRunnable та QThreadPool у Qt.
Тобто передати результати роботу зовнішньому СЛОТУ.
Через симуляцію connect:
QMetaObject::invokeMethod(receiver, "updateProgressBar",
                                      Qt::QueuedConnection,
                                      Q_ARG(int, pFinished));


How to report progress and abort a long running operation with QRunnable and QThreadPool

P.S. Не забуваємо про попереднє використання qRegisterMetaType.
на кшталт 
qRegisterMetaType<QWebSocket*>(); 

2016-03-04

Qt. Вбудува до вікна QWindow вікна зовнішньої програми.


Задача вбудувати роботу зовнішньої програми (mpv) до проекту Qt. Тобто створити вікно QWindow, і прикріпити до нього вікно зовнішньої програми. За результатами публікації створено цей код.

2016-02-20

Компіляція mpv player (static) для OS Windows у MSYS2

На сьогодні спроба зробити компіляцію за методом "Компіляція mpv player для OS Windows у VM OS OpenSUSE" має невдачу.
https://github.com/mpv-player
Задача компілювати проект для операційної системи Windows x64. Тому використаємо метод "Native compilation with MSYS2" котрий рекомендовано на сайті виробника .

2016-01-16

Викорисатння ImageMagic у debug режимі. Qt5, C++.

Роблю собі нотатку.
Стала потреба тестувати С++ проект з середовища Qt5, де використовується API від проекту ImageMagic.

Якщо використати у режимі (debug)  Qt5 проект, то отримаємо помилки на кшталт цих:
Exception at 0x7ff9a2051f08, code: 0xe06d7363: C++ exception, flags=0x1
(execution cannot be continued) (first chance) in CORE_RL_Magick___!Magick::throwException "createIM Magick: unable to open module file `C:\\Users\\user\\.magick\\IM_MOD_RL_?\u0002?F?\u0001_.dll': No such file or directory @ warning/module.c/GetMagickModulePath/812"

2015-11-18

Компіляція у середовищі Qt 5 з pkg-confg на прикладі проекту MPV

Для компіляції проекта "MPV" у середовищі "Qt5" використовується наступна команда PKGCONFIG з прикладу "mpv\DOCS\client_api_examples\qt\qtexample.pro"

PKGCONFIG += mpv

Для компіляції потрібно мати  pkg-config.exe, можна використати з  пакунку msys2, котрий потрібен для компіляції MPV під Windows.  ...\msys64\usr\bin\pkg-config.exe
Потрібно додати до змінної оточення PATH шлях: з msys64\usr\bin\

2015-05-14

Перші спроби багатопотокового програмування Qt5 + OpenMP +MS Visual Studio

 Продовжуючи вивчати багатопотоковість з'ясував що бібліотека libraw має підтримку багатопотокового програмування - OpenMP.

Для використання потрібно дозволити компілятору використовувати OpenMP у  випадку MS  Visual Studio це вмикається так : OpenMP in Visual C++, /openmp (Enable OpenMP 2.0 Support)


Перші спроби багатопотокового програмування Qt5

Існує задача обробки зображень, по пікселям обробляється у циклі. 
Наприклад:
for (int i = 0; i < numPixels; i++, data += pixelSize) {
 if (output->colors == 3) {
  pixels[i * 4] = data[2 * colorSize];
  pixels[i * 4 + 1] = data[1 * colorSize];
  pixels[i * 4 + 2] = data[0];
 }
 else {
  pixels[i * 4] = data[0];
  pixels[i * 4 + 1] = data[0];
  pixels[i * 4 + 2] = data[0];
 }
}
З метою оптимізації розрахунку, спробую використати можливості багатопроцесорного комп'ютера.
Використовуючи фрейморк Qt 5.4.0. Створив новий клас IncTask. Вхідні дані до потоку можливо передати тільки під час ініціалізації класу. А надалі використовувати приватні змінні.
Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready