среда, 29 апреля 2009 г.

Новые кеды.. опять )

Решил проверить, довели ли KDE4 до ума.
Посмотрел версии пакетов в федорином репо - 4.2.2
Думаю - раз 4.2 уже в основной ветке - надо пробовать. Поставил. Перескакиваю из гнома в кеды - всё нормально. Ничего не глючит, никаких графических артефактов. Сегодня весь день работал в сабже - никаких нареканий. И вдруг я вспомнил - одной из главных причин отказа от KDE4 была медленная работа wine. Затаив дыхание запускаю Fallout 2 - не тормозит )))
Вот теперь я могу сказать: KDE4 готов к использованию! )

Что предлагает гугл

вторник, 28 апреля 2009 г.

Кстати, о скачках...

Качать можно не только пластинки )
боян, но всё же: http://hammerhead.pdj.ru/blog/18379.html

Was Man Einst Uns Gab Zerstoerten Wir

Скачал тут одну клёвую пластинку, слушаю и радуюсь ))




Присоединятесь )):


понедельник, 27 апреля 2009 г.

Реализация возможности повторного прогона.

Иногда требуется сделать в софтине возможность повторного прогона. Вот как это делаю я:

do {

// .... код ....

cout << "Ввести 1 для повтора или 2 для выхода и нажать Enter: ";
do {
a = cin.get();
if ((a == '1') || (a == '2'))
break;
else
cout << "Неверный ввод, повторите: " << endl;
// очистка буфера
cin.clear();
cin.ignore(numeric_limits::max(),'\n');
} while (true);
// очистка буфера, обусловлена тем, что нужно избежать
// попадания '\n', вызванного нажатием на Enter, в cin
cin.clear();
cin.ignore(numeric_limits::max(),'\n');
} while (a == '1');
Возможно, не самый изящный способ, но зато довольно простой.

воскресенье, 26 апреля 2009 г.

radarix.com закрыт ))

Сабж
Мораль - не надо молчать, а надо писать заявы )

пятница, 24 апреля 2009 г.

Рабочая переписка

(11:27:20) AccessD: Костян, у тебя есть кто-нибудь, кому делать нех?
(11:33:40) Kiril: да я!!!
(11:33:47) Kiril: :-D
(11:34:02) AccessD: не хочешь в МРТ прогуляться? ))
(11:34:14) Kiril: нет!!! я занят!!!

среда, 22 апреля 2009 г.

Если при загрузке не поднимается сеть.

Себе на заметку: не забудь проверить /etc/sysconfig/network-scripts/ifcfg-,
опция "ONBOOT".

пятница, 17 апреля 2009 г.

pptp client

Наконец-то я кинул pptp впнку в виндовую сеть )
Итак, что я сделал:
Снял pap,chap, оставил mschap и mschap2.
Поставил шифрование mppe.
Сжатие отключил.

понедельник, 13 апреля 2009 г.

Клёвый линукс-девайс )

Собственно,вот он. Стоит 50 тыс. у.е.
Интересно, появится ли он в ближайшее время у Севы? ))

суббота, 11 апреля 2009 г.

Нерекурсивная быстрая сортировка на C++

Всё, наконец-то алгоритм работает как надо )
Ввиду того, что в инете нет сорса нормальной нерекурсивной функции бысторой сортировки на C++ (зато есть куча нерабочих или слишком хитровытраханных), выкладываю свой, вдруг кому-нибудь да пригодится.

void Quick(int arr[], int n)
{
int base, left, right, i, j;
base = left = right = i = j = 0;
Stack stack;

stack.Push(n - 1);
stack.Push(0);
do { // while (stack.GetSP() != NULL)
left = stack.Pop();
right = stack.Pop();
if (((right - left) == 1) && (arr[left] > arr[right]))
swap(arr[left], arr[right]);
else {

base = arr[(left + right) / 2];
i = left;
j = right;
// цикл продолжается, пока индексы i и j не сойдутся
do { // while (i > j)
// пока i-ый элемент не превысит опорный
while ((base > arr[i]))
++i;
// пока j-ый элемент не окажется меньше опорного
while (arr[j] > base)
--j;
if (i <= j)
swap(arr[i++], arr[j--]);
} while (i <= j);
}
if (left < j) {
stack.Push(j);
stack.Push(left);
}
if (i < right) {
stack.Push(right);
stack.Push(i);
}
} while (stack.GetSP() != NULL);
}


Со стеком, я думаю, всё понятно. В конце концов, если человек не понимает, как реализовать Push и Pop, то он ещё не дорос до Хоара и эта писанина для него тёмный лес.

Быстрая сортировка. Нерекурсивная.

Уже третий день мучаюсь с сабжем.
Вроде наконец написал рабочий алгоритм (для C++), когда на одном из тестов сортировка улетела в вечный цикл - оказалось, что при определённом расположении элементов в стек закидываются, а затем снимаются, одни и те же индексы...

воскресенье, 5 апреля 2009 г.

Спать!

фтопку бинарные деревья, завтра класс добью..

Ввод строки неизвестного размера

Юзер что-то вводит. Надо это грамотно считать, выделив под строку необходимое кол-во памяти.
Делаем так:
string* str;
str = new string;
std::getline(cin, *str);

Преобразование строки в число в C++

С проверкой разобрались, а как правильнее поступить, когда есть строка и её надо конвертировать в число? Конечно, можно по-старинке при помощи atoi(), но это.. некрасиво, что ли..
Гораздо интереснее рассмотреть строку как поток и загнать в переменную, как в предыдущем посту ))

Итак, есть строка str, в ней что-то лежит:


string* str;
............
// что-то происходит со строкой..
............
istringstream myStream(*str);
if (myStream >> t)
cout << "Ok" << endl;
else
cout << "Not ok" << endl;


istringstream описан в sstream. Намёк ясен?
нэймспэйс - std

Проверка "число-не число" на C++

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



int t;
if (cin >> t)
cout << "Ok" << endl;
else
cout << "Not ok" << endl;



Просто и элегантно.
Работает так:
Введено число, умещающееся в свой тип: Ok.
Введена конструкция из цифр (хотя бы одна лидирующая) и свякой фигни, напр. 111aaa - в переменную считается число до первой "не цифры", в данном случае 111, остальное останется в буфере.
Введено что-то иное - Not ok.

четверг, 2 апреля 2009 г.

Ожидание нажатия на Enter в C++

При переписывании старых паскалевских лаб на C++ столкнулся с проблемой:
в некоторых случаях нужно что-то показать юзеру и подождать, пока он не нажмёт Enter.
В паскале это решалось функцией ReadLn(), а в Си обычно в этих случаях юзают getchar() (в C++ cin.get()).
Но. Если до этого момента осуществлялся ввод, то, если он не был полностью считан, оставшиеся в буфере символы будут схаваны getchar'ом и, соответственно, пользователя ждать никто не станет. Выходов несколько - либо считать несколько раз (что некрасиво), либо вычистить буфер и считать один раз.
Нашёл реализацию второго способа (ссылка) и доработал его слегка. Вот что получилось:

#include <iostream>
#include <limits>
using namespace std;

void MyPause()
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n'); // Очистка буфера
cout << "Нажмите Enter для продолжения..." << endl;
cin.ignore(numeric_limits<streamsize>::max(),'\n');
}

Новая фича Огнелиса

Теперь можно ставить фон для самого окна, выглядит достаточно забавно )



Ссылка на расширение и темы

среда, 1 апреля 2009 г.

1 апреля

Вот именно под таким знаком я провёл Первое апреля:




Не, я конечно понимаю, что помещение хорошо изолировано, а Кибернож ещё не запущен, но всё равно как-то жутковато..
ЗЫ
Софт для Киберножа написан под линь ) Управляется девайс с компа под RHEL 5.1 )