FreeBSD. Удалить порт с зависимостями

Иногда бывает необходимо удалить установленный порт со всеми зависимостями. Можно конечно колдовать с pkg_… но это долго и утомительно. На днях обнаружил интересную утилиту: pkg_rmleaves.

Ставим так

$ cd /usr/ports/ports-mgmt/pkg_rmleaves/
$ make install clean
$ rehash
$ pkg_rmleaves -d

Для информации читаем маны. Надеюсь будет полезно.

15 000 день unix эпохи

Сегодня, 26 января, в полночь по GMT, наступил 15000 день от начала летоисчисления Unix машин. Юниксоиды всех стран встречаются, празднуют, проводят массовые гуляния и гадают. Встречи локальных групп можно найти на специальном сайте, посвящённом этому знаменательному дню.

День можно посмотреть командой:

$ echo `date +%s`/86400|bc

Админские стихи

Произведение не мое, но уж очень понравилось…

У сисадмина серв от Intel,
Ядро i7 стоит на нём.
И днём и ночью ты, убитый,
Е@#шься с ним, как с букварём.

Как «линь» поставил — песнь заводишь;
Под Windows матом говоришь.
Там чудеса, там BSoD выводит,
Там в Микрософте Билл сидит…

Там от неведомых экзешек
Следы невиданных зверей.
Там выдаёт «Не отвечает»,
Когда нажмёшь ты на «ОК».

Там SSH не обитает —
Хреново без него порой…
А грёбаный telnet слетает,
Когда брутфорсят твой пароль.

Там chroot’а нет — как хостинг ставить?
Как обойтись без IIS?!
А вот никак! Format спасает…
Apache без «никса» есть не жилец.

Там злостный вирь над hosts’ом чахнет,
Там гейтский дух, там Дверью пахнет.

Замена подстроки в std:wstring

Продолжаю публиковать серию сниппетов. На этот раз задача – заменить подстроку в строке wstring другой. Делается это так:

std::wstring strSource = L"this string is XXXX and YYYY";
size_t posn;
std::wstring replaceFrom = L"XXXX";
std::wstring replaceTo = L"SOMETHING";

posn = strSource.find( replaceFrom );
strSource.replace( posn, replaceFrom.length( ), replaceTo );

если надо заменить все вхождения, то последние две строки надо заменить на

while ( std::wstring::npos != ( posn = strSource.find( replaceFrom ) ) )
{
  strSource.replace( posn, replaceFrom.length( ), replaceTo );
}

Надеюсь будет полезно.

Чтение текстового файла целиком в переменную

Бывает полезная функция, однако в интернете редко можно найти сниппет, поэтому предлагаю его здесь. Надеюсь будет полезен.

int length = 0;
char* buffer = null;

std::ifstream is;
is.open( "config.xml", std::ios::binary );

is.seekg( 0, std::ios::end );
length = is.tellg( );
is.seekg( 0, std::ios::beg );

buffer = new char[ length + 1 ];
buffer[ length ] = '\0';

is.read( buffer, length );
is.close( );