Boris A Dolgov

Boris A Dolgov
Рейтинг
215
Регистрация
04.07.2007

Не кормим, не кормим :)

Zaqwr:
Boris A Dolgov, а /lib64 на 32 битной системы вообще бывает?

Не бывает, так что это - ещё один признак. Но Вы предложили проверить файл из /lib, который заведомо 32битный, если папки lib и lib64 разделены.

Zawqr, multilib:

borisko@vaio:~$ file /lib/ld-*

/lib/ld-2.12.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

/lib/ld-linux.so.2: symbolic link to `ld-2.12.1.so'

borisko@vaio:~$ file /lib64/ld-*

/lib64/ld-2.11.1.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

/lib64/ld-2.12.1.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

/lib64/ld-linux-x86-64.so.2: symbolic link to `ld-2.12.1.so'

Кроме заголовка полезно читать ещё само сообщение.

Но, по крайней мере, это лучше, чем стандартное "пишите надо смотреть".

borisko@vaio:~$ cat /etc/issue

Welcome to \s \r (\l)

Упс :(

Да, 64. Но в некоторых случаях (вроде бы, на некоторых VPS на XEN) этого недостаточно - нужно ещё написать file /bin/ls и убедиться, что не только ядро, но и окружение 64битные.

uname -m

10 символов

zexis:
Комментариев в коде много не бывает. Делать комментарии по русски некто не запрещает.

Не согласен - комментарии должны отражать идею кода и некоторые неочевидные моменты текущей реализации, а не писать, что код делает - ведь он должен быть написан так, чтобы было понятно, что он делает без комментариев :)

Да, это минус. Большие функции сложнее отлаживать. И в них больше вероятность ошибок. Покажите мне ваш код, я посмотрю на размер ваших функций.

Чаще всего руководствуются правилом "не больше 50 строк или не больше 4-5 табов перед очередным оператором. Более-менее серьезный код, увы, сейчас показать не могу.

из какого-то плагина к billmanager

Price findPrice(int priceId)

{
for (vector<Price>::iterator p = cnf.prices.begin(); p != cnf.prices.end(); ++p)
{
if (p->id == priceId) return *p;
}
throw logic_error("No price found");
}
string getLogin(int id)
{
auto_ptr<ResultSet> res(msql->executeQuery("SELECT username FROM vhost WHERE pid=" + boost::lexical_cast<string>(id)));
if (res->rowsCount() != 1) throw logic_error("Not one username");
res->next();
return res->getString("username");

}
void processOrder(int id, bool activate)
{
initSql();
int realOrder = findRealOrder(id);
Server server = findServer(realOrder);
Price price = activate ? findPrice(findOrdPrice(id)) : findPrice(-1);
int realUid = findUid(realOrder), myUid = findUid(id);
if (realUid != myUid) throw logic_error("Client doesn't have this item.");
string login = getLogin(realOrder);

ChangeRequest r(server, price, login);
r.process();
}

Код ужасен :)

Увы, сейчас нет достаточно времени прочитать целиком и выдать конкретные замечания, но в общем:

  • Излишние комментарии, комментарии по-русски
  • Отсутствие табуляции и пробелов, или их излишнее наличие, но indent спас чтение дальше :)
  • Чисто сишный код в cpp-файле (разве что используются передачи по ссылке)
  • Функции по несколько экранов, принимающие десяток параметров
  • На стэке выделяются большие куски данных
  • Странные функции, которые объявлены как возвращающие что-то, но ничего не возвращающие
  • Всё в одном огромном файле
  • ОЧЕНЬ странные места вроде inArray_str

Вообще, 3+ за старание.

Осталось выучить boost и stl и написать то же самое в 30 строк.

Exhang:
Например Вам?

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

Всего: 2623