пятница, 1 апреля 2011 г.

Atheros Communication AR8152 на Asus Eee PC 1251 под Linux

Ставил тут всю ночь на недобуку свою Asus Eee PC 1251 великую могучую ArchLinux. Все красиво подоткнул и встала проблема - подключение к сети было невозможно по причине того что сетевой в упор не было видно. Всю ночь проебся, но откопал сработавшее решение.

Сразу упомяну, что версия ядра у меня 2,26 , на других не проверял.

Итак, в выводе lspci упомянулись такие вещи как
03:00.0 Network controller: Broadcom Corporation Device 4727 (rev 01)
04:00.0 Ethernet controller: Atheros Communication AR8152 v2.0 Fast Ethernet (rev c1)
Отлично, значит это то что нужно. На другой машинке подсосал с http://linuxwireless.org/download/compat-wireless-2.6 файл compat-wireless-2.6.tar.bz2, записал его на флешку и выполнил примерно такой список команд.


mount /dev/sdb /mnt
cp /mnt/compat-wireless-2.6.tar.bz2 /root/
cd /root
tar -xjvf compat-wireless-2.6.tar.bz2
cd compat-wireless*
scripts/driver-select atl1c
make
sudo make install
 

А потом благополучно перезагрузился

вторник, 1 февраля 2011 г.

Выбор из строки числа в формате Exel

Как известно, в Экселе иногда встречается запись числа типа

1,566653e5


Где e - это у нас степень числа. Так вот в одном проекте мне нужно было выбрать из строки такое число. Решил эту задачу регуляркой. Сама регулярка конечно моет и не блещет идеалом и сам код можно улучшить, но что есть. Писал на Qt4 C++

long double convert(QString in)
{
QRegExp rx("([\\-]{0,1}[0-9]{1,}[\\.\\,]{0,1}[0-9]{0,})(|\\e)([\\-]{0,1}[0-9]{0,})");
if(rx.indexIn(in)!=-1)
{
double cel=rx.cap(1).toDouble(); // целая часть
if(rx.cap(2).size()!=0)
{
if(rx.cap(3).size()>0)
{
long double res=pow(cel,rx.cap(3).toDouble());

return res;
}
else
{
QMessageBox::critical(0,QString("Error"),QString("Set a in true format"));
return -100;
}
}
else
{

return cel;
}
}
return in.toDouble();
}