Ярлыки
- С++ (3)
- Стихи (1)
- тонировка (1)
- Цитаты (2)
- ALTlinux (1)
- Apache (2)
- big-endian (1)
- Blogger (1)
- books (3)
- books links (1)
- Buisness (10)
- C (1)
- C# (5)
- c++ (27)
- car (8)
- Cheat (1)
- CSS (1)
- DLL (1)
- Draw (1)
- Eclipse (2)
- Films (1)
- Firefox (4)
- Flash (1)
- GTK (2)
- GUI (1)
- Home server (1)
- Hotels (1)
- HTML (6)
- IE (1)
- Internet (2)
- Java (1)
- JavaScript (6)
- jQuery (1)
- KDE (1)
- KeeTouch (1)
- Linux (34)
- little-endian (1)
- Makefile (1)
- MFC (6)
- multi-thread (2)
- Music (1)
- ODBC (2)
- OpenBox (2)
- photo (4)
- PHP (38)
- programing (2)
- proxy (1)
- QML (37)
- Qt (41)
- QtCreator (2)
- RegExp (3)
- Shopping (12)
- shutdown (1)
- Soft (1)
- Sound Card (1)
- SQL (1)
- SQL Server (14)
- Subversion (1)
- SVN (1)
- teach (4)
- text-editor (1)
- Travels (1)
- Ubuntu (38)
- Upstart (1)
- Vi (2)
- VirtualBox (2)
- Virtualization (1)
- vkontakte.ru (1)
- Web (2)
- Web-Kit (5)
- WinAPI (7)
- Windows (4)
понедельник, 31 января 2011 г.
воскресенье, 30 января 2011 г.
пятница, 28 января 2011 г.
Ubuntu рисовалка для заметок.
источник
четверг, 27 января 2011 г.
hardware-monitoring в Ubuntu
Эта задача решается очень просто. Кликните правой кнопкой мыши на панели, выберите «Добавить на панель» и найдите в списке апплет «Монитор изменения частоты процессора».
2. Настройка мониторинга аппаратного обеспечения.
Устанавливаем: sudo apt-get install lm-sensors
Запускаем поиск имеющихся в вашем компьютере средств аппаратного мониторинга: sudo sensors-detect
Перезагружаем модули ядра: sudo /etc/init.d/module-init-tools
Теперь вы можете осуществлять мониторинг системы командой:
sensors
Но кроме этого, у вас теперь есть отличная возможность вывести на панель GNOME апплет с информацией о состоянии системы. Устанавливаем апплет: sudo apt-get install sensors-applet
3. Настройка контроля скорости кулера
После того как lm-sensors правильно сконфигурированы запустите pwmconfig и настройте скорость работы ваших вентиляторов: sudo pwmconfig
link
PHP преобразовать строку с разделителями в массив
Возвращает массив строк, полученных разбиением строки string с использованием separator в качестве разделителя. Если передан аргумент limit передан, массив будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки string.
Если separator - пустая строка (""), explode() возвращает FALSE. Если separator не содержится в string, то explode() возвращает массив, содержащий один элемент string.
Поиск коттеджа для аренды в Финляндии
связ по телефону или через e-mail
оплата по приезду..
среда, 26 января 2011 г.
PHP SimpleXml задать кодировку
link
Linux посмотреть переменные окружения
Ниже приведены те переменные окружения, которые есть почти у всех пользователей Linux:
- USER - имя текущего пользователя
- HOME - путь к домашнему каталогу текущего пользователя
- PATH - список каталогов, разделенных двоеточиями, в которых производится "поиск" программ
- PWD - текущий каталог
- OLDPWD - предыдущий текущий каталог
- TERM - тип терминала
- SHELL - текущая командная оболочка
- HOSTNAME - имя машины
- QTDIR - расположение библиотеки QT
- MAIL - почтовый ящик
- LD_LIBRARY_PATH - место "поиска" дополнительных библиотек (см. предыдущую главу)
- MANPATH - место поиска файлов man-страниц (каталоги, разделенные двоеточием)
- LANG - язык и кодировка пользователя (иногда LANGUAGE)
- DISPLAY - текущий дисплей в X11
Отключение энергосбережения экрана в Ubuntu
понедельник, 24 января 2011 г.
воскресенье, 23 января 2011 г.
суббота, 22 января 2011 г.
buisness book
Дейл Карнеги «Ораторское искусство и оказание влияния на деловых партнеров»
Дейл Карнеги «Как выработать уверенность в себе и влиять на людей, выступая публично»
Роберт Кийосаки – Богатый папа, бедный папа
Роберт Кийосаки – Квадрант денежного потока
Наполеон Хилл - Думай и богатей 1 и 2
Стивен Кови - 7 Привычек Высокоэффективных Людей
Тим Феррис - 4часовая рабочая неделя
Дарьи Рейнер "7 фатальных ошибок начинающих бизнес-леди"
Генри Форд "Моя жизнь, мои достижения"(link)
Рей Крок "McDonalds"
пятница, 21 января 2011 г.
сенсорная панель KeeTouch
В файл /etc/udev/rules.d/69-touchscreen.rules добавляем строку:
KERNEL=="event*", SYSFS{idVendor}=="1aad", SYMLINK+="input/ktusb"
xorg.conf
Долго искал что же надо крутить чтобы мышка не крутилась в левом верхнем углу не дальше квадратного сантиметра в углу. В результате крутит надо вот ети кардинаты
Identifier "kt"
Driver "evtouch"
Option "Device" "/dev/input/ktusb"
Option "DeviceName" "KTUSB"
Option "MaxX" "306"#"3378"
Option "MaxY" "950"#"1914"
Это под мои 1280х1024
link
driver for ubuntu
talks
link
понедельник, 17 января 2011 г.
Subversion
Базовые команды
Извлекаем проекты
Вам необходимо знать URL компонентов, которые вы хотите извлечь. После этого Вы сможете сделать одно из следующих действийsvn checkout url
svn co urlЭти команды позволяют всё извлечь в директорию с именем по умолчанию. Например
svn checkout http://code.djangoproject.com/svn/django/trunkЭта комманда извлечет django в директорию с названием trunk в текущей директории.
Вы так же можете указать название директории, в которую будeт извлечены файлы:
svn checkout http://code.djangoproject.com/svn/django/trunk djangoТаким способом Вы извлечеты всё в директорию django
Svn Update и Revert
Svn update сливает изменения в репозитории и локальные изменения в коде, или показывает места, где возникли конфликты (конфликты показаны буквой C напротив файлов, который вы пытались обновить). Если кто-то другой закоммитил изменения в репозиторий и это не привело к конфликту с Вашей текущей версией, то svn update покажет G вместо C. Как бороться с конфликтами будет рассказано чуть ниже.- Чтобы обновить локальные файлы с изменениями, произведенными в репозитории, сделайте «svn update»
svn update
... - Чтобы перезаписать локальные файлы файлами из репозитория, сделайте «svn revert» – это может быть нужно, если Вы хотите вернуться к версии файлов, лежащих в репозитории, при этом вы потеряете все изменения, которые Вы внесли в него с момента последнего коммита
svn revert
...
svn update
Svn Diff
Заметьте, что diff не подключается к репозиторию! Он сравнивает ваши файлы с файлами, которые вы скачали, а не теми, что сейчас находятся в репозитории!Чтобы узнать какие изменения вы делали с файлами наберите:
cd <Нужная директория> svn diff
Svn commit
Запустите svn diff чтобы увидеть какие изменения вы вносили в файл с момента последнего апдейта. Потом обновите файл svn up, запустите svn diff , и svn commit с сообщением:svn diffПокажет вам изменения с последнего обновления.
svn updateЭта комманда сольет изменения, внесенные в файл в репозитории с теми что внесли Вы. Ваши изменения имеют приоритет. Но могут возникнуть конфликты, если строки которые вы правили на Вашей машине были изменены в репозитории с вашего последнего апдейта.
svn diffdiff покажет отличия между файлами: Вашим и тем что в репозитории. Убедитесь в том, что только новый код, который вы добавили это совокупность различий.
svn commit -m'Message'Message – это сообщение, которое пояснит какие правки вы вносили.
Чтобы производить действия над несколькими файлами, отделите их пробелами:
svn diffsvn update svn diff svn commit - m "message"
Добавляем новый файл в репозиторий
Как добавить новый файл в svn репозиторийsvn addВы можете добавить несколько файловsvn commit -m "This new file will do something useful"
svn addsvn commit -m "These new files work together to add some extra functionality"
Удаляем файлы из репозитория
Чтобы удалить файл из репозитория, если вы не находитесь в рабочей копииsvn remove -m "I deleted this file for a reason" http://svn.greenstone.org/....../thefile.extАлиасы для svn remove : svn delete , svn rm. Вы не можете удалить несколько файлов из репозитория за 1 раз в одну строку
Полезные команды svn
svn info
svn switch
svn statusЕсли вы делаете svn status в директории, он рекурсивно выдаст список всех Модифицированных (M), Удаленных (D) и добавленных (A) файлов. Так же он покажет и список конфликтных файлов (C) и тех, о которых svn не имеет понятия (?). Чтобы увидеть изменения в каждом отдельном файле наберите
svn diff
svn help svn help [item] svn help status
svn help commit
Конфликты svn и пути их решения
- Когда вы делаете «svn status» в директории, в которой есть файлы помеченные C, это значит, что файлы конфликтуют с версиями в репозитории
- svn update тоже может показать, что файлы конфликтуют. Если вы произвели svn up и один или несколько файлов имеют статус С – у Вас конфликт. Это значит, что пока вы работали над определенными строками(меняли их), кто-то уже успел внести изменения в эти же строки и сохранить их в репозитории. svn update не смог объединить код тк строки не совпали: строки конфликтуют.
Чтобы разрешить конфликт в файле, помеченном C
- Откройте конфликтный файл в редакторе
- Ищите вхождения «>>>>» или «====». Каждое такое вхождение указывает на конфликтную секцию, которую нужно решить.
- Разберитесь что делать с различающимися частями – какую оставить, какую убрать или как совместить их.
- Как только закончите редактирование, нужно поставить статус разрешенного конфликта!
svn resolvedЕсли попробуете ещё раз набрать svn update, конфликта больше быть не должно.
источник
PHP вызов xml-rpc медода на сервере
/* method implementation */
function impl($method_name,$params,$user_data){
var_dump(func_get_args('impl'));
return array_sum($params);
}
/* create server */
$s=xmlrpc_server_create();
xmlrpc_server_register_method($s,'add','impl');
/* calling server method */
//вызываем метод add с параметрами 1,2,3
$req=xmlrpc_encode_request('add',array(1,2,3));
//получаем отклик сразу передав array(3,4) в качестве параметра
$resp=xmlrpc_server_call_method($s,$req,array(3,4));
/* process result */
$decoded=xmlrpc_decode($resp);
if(xmlrpc_is_fault($decoded)){
echo 'fault!';
}
var_dump($decoded);
?>
PHP прочитать xml файл в массив
PHP XML-RPC server
function srvAdd($MethodName, $Params, $AppData)Любая функция, регистрируемая на xml-rpc сервере, должна принимать 3 параметра:
{
return $Params[0]+$Params[1];
}
$MethodName - внешнее имя функции;
$Params - массив параметров, передаваемых клиентом;
$AppData - дополнительные параметры, передаваемые при вызове функции xmlrpc_server_call_method().
2. Создаем XML-RPC сервер вызовом функцииsrv=xmlrpc_server_create();
3. Регистрируем на сервере, определенные ранее функции
xmlrpc_server_register_method($srv, "Add", "srvAdd");
Здесь:
Add - внешнее имя функции srvAdd,
srv - handler сервера.
4. Получаем "сырой" запрос от клиента
$xmlRequest = $HTTP_RAW_POST_DATA;
5. Передаем запрос в диспетчер функций, который автоматически определит какую функцию вызвать.
$response = xmlrpc_server_call_method($srv, $xmlRequest, Null);
Здесь:
$srv - handler xml-rpc сервера;
$xmlRequest - данные от клиента в xml-формате;
Третий параметр, в данном случае пустой, передает дополнительные данные для определенных ранее функций (параметр $AppData).
6. Отдаем клиенту результаты работы функции
print $response;
7. Закрываем сервер.
xmlrpc_server_destroy($srv);
Поместим файл с кодом xml-rpc сервера в защищенный каталог apache, чтобы к нему можно было коннесктится через SSL https://www.mydomain.ru/xmlrpcserver.php
источник
пятница, 14 января 2011 г.
PHP получить имя домена из URL
$url = 'http://username:password@www.hostname.tld/path?arg=value#anchor';
$parse = parse_url($url);
print_r($parse['host']); // вернет www.hostname.tld
//Короткий путь: Вернет только host
print_r(parse_url($url, PHP_URL_HOST)); // вернет www.hostname.tld
// небольшая функция-фильтр, которая очистит лишнее.
function getHost($Address) {
$parseUrl = parse_url(trim($Address));
return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode('/', $parseUrl[path], 2)));
}
link
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Потратил пол часа точно на исправление данной ошибки.
Вылечилось следующим образом:
1) sudo gedit /etc/apache2/httpd.conf
прописываем:
2) ServerName localhost
и перезагружаем сервер
sudo /etc/init.d/apache2 restart
link
четверг, 13 января 2011 г.
Current TimeStamp (UnixTime) in QT.
int cur_time = QDateTime::currentMSecsSinceEpoch();
QString ct;
ct.setNum(cur_time,10);
qDebug() << "current time" << ct;
в qt после 4.7
link
среда, 12 января 2011 г.
Магазины автозапчастей для Гетца.
1. http://www.exist.ru - интернет-магазин автозапчастей. 6 магазинов в Питере.
2. http://www.spbkoreana.ru - специализация - запчасти на корейские машины. 19 магазинов. Есть свой сервис.
3. http://www.euroauto.ru - есть разборки иномарок и новые запчасти. Очень приличный сервисный центр по ремонту.
4. http://www.detali.ru/ офис на Чкаловском. Много неоргинала.
5. http://www.carumba.ru/ - 2 адреса в Питере. большой ассортимент, в том числе аксессуаров.
6. ул. Савушкина, д.24 (812) 430-72-22 / 973-17-90
Магазин занимается "французами", но сцепление Valeo на Гетц 1,6 (комплект) дешевле. Если обращаться в магазине к Кристине, то можно смело ссылаться на Гетц клуб, скидку обязательно предоставят!
7. Богатырский 14 сек 33 первый этаж т8911-264-21-04 Отдел в крупном автомобильном торговом центре. Занимается корейцами. Возможен заказ.
link
вторник, 11 января 2011 г.
QNetworkReply определить тип принимаемого сообщения.
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkRequest request;
connect( &manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(quit()) );
request.setUrl( QUrl("http://www.my_site.ru/") );
QNetworkReply *reply = manager.get(request);
connect(reply,SIGNAL(finished()),this,SLOT(slot_finished()));
void slot_finished()
{
qDebug() << "content=" <<>header( QNetworkRequest::ContentTypeHeader);
}
QWebView Как использовать прокси.
webView->load( QUrl("http://www.asmforce.ucoz.ru") );
proxy.setHostName( "http://192.168.100.254" );
link
Символы и строки.
\ - пробел
\n - перевод каретки на новую строку (прыжок на новую строку)
\r - перевод каретки в начало строки (прыжок в начало строки)
\t - знак продольной табуляции (невидимый пробел)
link
понедельник, 10 января 2011 г.
Сравнение потребления памяти различными браузерами.
Сегодня я расскажу, что получилось из моей давней идеи скормить каждому более-менее популярному браузеру, до которого руки дотянутся, сотню-другую вкладок, и посмотреть, сколько памяти он сожрет.
Для сих целей был взят TOP-1000000 сайтов по версии Alexa, из него выбрано первые 120 и положены в файл links.txt. Затем товарищ Voker57 помог скриптом на Ruby, читавшим этот файл, запускавшим указанный браузер и после загрузки страницы грепавшим список процессов (ps aux) по соответствующему имени. Сумма значений в столбцах, соответствующих RSS, и считалась потреблением памяти соответствующего браузера. Таким образом, учитывалась многопроцессность Chromium'а и процесс operapluginwrap Оперы. Отдельно стоит отметить, что данные результаты, возможно, завышены на 10-15% по сравнению с тем, что ты, мой читатель, можешь увидеть в своем process manager'е.
Тестировались:
- Arora 0.10.2-r1
- Chromium (chromium-bin-5.0.376.0_p44230) (без аддонов)
- Firefox 3.6.3 (без аддонов)
- LeechCraft 0.3.65-830-g57e30dc (полный боекомплект)
- Midori 0.2.4
- Opera 10.10-r1 (более свежие версии неработоспособны вообще) (без всяких довесков)
- Rekonq 0.4.0
- uzbl 2010.04.03 (без скриптов, поставка по умолчанию)
Конфигурация «тестового стенда»:
- CPU: Core 2 Duo P8700 (2.53 GHz)
- RAM: 4 GB DDRII
- GPU: nVidia GTX240M (nvidia-drivers-195.36.15)
- ОС: Gentoo Unstable AMD64
- Ядро: gentoo-sources-2.6.32-r2
- Qt: 4.6.9999 от 23 апреля с kde-patches
- DE: KDE 4.4 со стилем Bespin и включенными красивостями, весьма требовательными к OpenGL.
- Webkit-gtk: 1.1.15.4
- CFLAGS="-O2 -march=core2 -pipe -floop-interchange -floop-strip-mine -floop-block -fomit-frame-pointer -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
Я также попытался протестировать Konqueror, но не смог заставить его открывать URL'ы в одном и том же окне.
Во всех браузерах использовались настройки по умолчанию.
Arora
Так получилось, что тестирование браузеров началось именно с Arora (на нем отлаживался соответствующий скрипт). Никаких особых замечаний нет, вполне вменяемо. Росло себе потребление памяти и росло, между вкладками переключаться можно было, особого замедления при большом количестве вкладок заметно не было. 400 мегабайт оперативки занято на 50-ой вкладке.
Chromium
Хромиум реактивен, засранец, хоть и -bin. Однако, также реактивно засирает оперативную память: чтобы занять гиг оперативки, ему потребовалось всего 22 вкладки. Зато, что странно (ну или забавно) на уровне 2500-2600 мегабайт потребление памяти почти перестало расти. Также, при большом количестве вкладок невозможно перемещаться между ними: на табах перестали быть видны фавиконки, а затем таббар и вовсе наехал на кнопки закрытия/сворачивания. Как следствие невидимых фавиконок, невозможно понять, загружена текущая страница, или нужно еще подождать. Но хромиум все равно реактивен, стоило нажать и зажать Сtrl+W, как все открытые вкладки довольно шустро закрылись. Причем, все работает не только шустро, но и гладко.
Firefox
С ростом количества вкладок начало все тормознее и тормознее перерисовываться окошко. Но вкладки тоже быстро закрылись. 400 мегабайт за 42 что ли вкладки. Что еще сказать? Да нечего, файрфокс все знают, хехе.
Кстати, Firefox адски течет. Даже с одной вкладкой с GMail'ом он за пару часов разрастается от милой стомегабайтной программы в трехсотметрового монстра.
LeechCraft
Личкрафтам я уделю несколько особое внимание, не зря же я их девелопер :) В частности, протестированы несколько различных конфигураций потребления памяти: дефолтовая и минимальная. 400 метров в дефолтовой тоже на 42-ой вкладке. Причем, личкрафтам было весьма пофиг на количество открытых вкладок — можно было спокойно переключаться между ними, особенно с помощью Tab++. После открытия 120 вкладок «Закрыть все кроме этой» отработало секунд за 5.
Другая конфигурация потребления памяти — с увеличенными вдвое кешами. При небольшом количестве вкладок потребление памяти выше на несколько десятков мегабайт, однако, начиная примерно с 80-ого сайта, конфигурация с увеличенным кешем потребляет даже меньше памяти.
При этом были запущены все доступные (и более-менее рабочие) на сегодняшний день плагины, от торрентов и новостной читалки до DC-клиента. Полный боевой комплект, заранее ставящий личкрафт в чуть более худшее положение. Однако, это не помешало уступить лишь Arora.
Midori
Выглядит он страшно, конечно, да и после четвертого десятка вкладок стали заметны тормоза перерисовки. На 56-ую вкладку рендеринга окна я дожидался где-то минуту. Не дождался, убил, так что Midori дисквалифицирован.
Opera
Ой, какой ужас, какой ужас. Жрет память она почти как хром, выглядит уродливо, поломан диалог сохранения файлов... Впрочем, куда-то я не туда пошел. Так вот, опера на достаточно большом количестве вкладок (70-80) стала ужасно тормозить, процесс operapluginwrap кушал 100% одного ядра, основной opera стабильно ел 60-70% другого. Переключение вкладок занимало десяток-другой секунд, а после 108 вкладок Opera вообще перестала реагировать на какие-либо действия, посему она и была дисквалифицирована. Закрытие всех вкладок кроме активной (после открытия 108) затянулась минуты на три. Однако, надо признать, при небольшом количестве вкладок она ведет себя вполне достойно и, вообще говоря, при 1-2 открытых сайтах потребляет меньше всех памяти, что легко видеть из первого графика.
Rekonq
Ничотак. Странные колебания потребления памяти в районе 400-600 метров. Еще обнаружился забавный глюк: начиная этак с 70-ой вкладки для того, чтобы процесс загрузки и рендеринга шел, нужно либо двигать мышкой над окном реконка, либо перемещать туда-сюда фокус. 400 метров за 9 вкладок. После открытия 120 вкладок при нажатии и удержании Ctrl+W они стали весьма шустро закрываться обратно, но счастье длилось недолго: упал реконк.
uzbl
Стало интересно, как будет вести себя браузер, вроде как и минималистичный, но в то же время на вебките. В общем, 400 метров он за 5 вкладок съел, вот. Ну и вообще довольно жадный. На 57 вкладке у меня кончилась свободная оперативка, я решил не баловаться со свопом и прибил его. Disqualified. Несмотря на это, uzbl все же был довольно отзывчив (пока не начал подбираться к пределу ОЗУ). Не хромиум, конечно, но по сравнению с оперой — ракета.
Выводы
А глобального вывода нет. Все зависит от стиля работы в интернете. Если ты любишь держать не больше дюжины вкладок, то не особо важно, каким именно браузером ты пользуешься: главное, чтобы было удобно/привычно/etc. Разве что, пожалуй, уж точно не стоит пытаться использовать Rekonq: он потребляет ощутимо больше памяти, чем другие, сравнимо с Chromium, а какая выгода от него — непонятно.
В принципе, то же самое верно и для пары-тройки десятков одновременно открытых сайтов, разве что, тут Chromium начинает потреблять в районе гигабайта оперативной памяти, что уже не каждый может себе позволить. Да и опера начинает демонстрировать аппетит.
Если же у тебя нередко открыто более сотни страниц, то Chromium и, уж тем более, Opera (за счет ее тормозов, хоть и ест меньше) — не вариант. Midori отпадает еще на полсотне вкладок с тормозами прорисовки, несмотря на весьма разумное потребление памяти. Как ни странно, остаются Arora и LeechCraft. Еще есть Firefox, но Gecko течет чуть сильнее (вместе со всеми огнелисовскими дополнениями и обвязками вокруг него, типа XUL), чем Webkit. Не буду отрицать, что Webkit еще есть, где пилить и доводить до ума, поэтому иногда Firefox — единственный вариант.
А uzbl ни в какие ворота не лезет во всех случаях.
воскресенье, 9 января 2011 г.
Теплозащитная прозрачная пленка.
Главное преимущество теплоотражающих пленок "Solartek ULTRA" и "Llumar AIR 75 SR HPR" в том, что при превосходной защите от солнечных лучей они прозрачны. Поэтому могут использоваться для тонирования передних стекол и даже лобового стекла.
Новейшие технологии в производстве пленок позволяют добиваться 98% отражения ультрафиолетовых лучей и 60% отражения солнечного тепла. Эффективность теплоотражающего покрытия пленок так высока, что даже при длительном движении автомобиля под палящими солнечными лучами водитель и пассажиры не испытывают неудобств.
ОПТИЧЕСКИЕ ХАРАКТЕРИСТИКИ:
- прохождение видимого света 75 %
- отражение ИК-излучения 61 %
- отражение видимого света 10 %
- отражение ультрафиолета 98 %
установка
пятница, 7 января 2011 г.
Qt вывод в консоль.
GONFIG +=console
qDebug() << "Hello world";
QString s = "aaabbcc";
QTextStream out(stdout);
out << "Hello World" << out << flush;
link