четверг, 30 июня 2011 г.

Как узнать размер файла в C/C++ ?


Существует куча способов узнать размер файла при помощи С/С++. Есть способы, которые зависят от операционной системы, есть те, которые зависят от файловой системы.



Например, этот вариант отлично работает в unix-like системах
// return file size in bytes
int getFileSize(FILE *input)
{
    int fileSizeBytes;
    // set file pointer to end of file
    fseek(input, 0, SEEK_END);
    // get current pointer position in bytes (== file size in bytes)
    fileSizeBytes = ftell(input);
    // return pointer to begin of file (it's very IMPORTANT)
    fseek(input, 0, SEEK_SET);
    return fileSizeBytes;
}
Но то, что прекрасно работает на unix-like системах, никогда не всегда работает в windows. Поэтому предлагаю posix вариант данной функции, который хорошо работает как в windows так и в linux:
#include <sys/stat.h>
...
int getFileSize(const char * fileName)
{
    struct stat file_stat;
    stat(fileName, &file_stat);
    return file_stat.st_size;
}

среда, 29 июня 2011 г.

Установка виртуального принтера под Linux (Ubuntu)

Однажды, заказывая билеты на поезд через интернет, я столкнулся с непреодолимой глючностью интерфейса, пытавшегося сохранить электронный билет в файл. Да, можно было бы сразу распечатать, но я, как и многие другие, предпочитаю печатать на работе. Так и тонер/краску покупать не надо, да и чаще всего с бумагой тоже проблем нет. (шучу)

Вобщем, понадобилась такая штука, как виртуальный принтер. И получить ее очень и очень просто:
sudo apt-get install cups-pdf
Проверяем, что принтер есть:
Если у вас активирован Unity, то просто жмем клавишу "super"(win) и пишем Printing
Если нет виртуального принтера, жмем "Add", далее выбираем "Generic CUPS-PDF" и forward, forward, forward...
На выходе мы получаем отличный виртуальный принтер. Все распечатанное попадает в "~/PDF".

вторник, 28 июня 2011 г.

Сброс пароля BIOS с помощью Ubuntu

Иногда так бывает, что однажды поставив пароль на BIOS, по прошествии лет мы его забываем. Одно дело, когда это стационарный ПК, где можно замкнуть контакт "clear CMOS" или на худой конец вытащить батарейку и совсем другое дело, когда это ноутбук.

Замена java машины(openJDK) в Ubuntu на Sun java

Я совершенно не против свободного программного обеспечения. Нет, я даже за. Сколько радости у меня было, когда я перешел на линукс! Нет никаких крэков, вирусов, антивирусов... Многое работает быстро, слаженно, а главное все это абсолютно бесплатно!

Но есть вещи, в которых, как мне кажется, Canoncial перегибает палку. Например, до недавнего времени вместо Adobe Flash Player стояла какая-то оупенсорсная поделка. Теперь же Flash Player от Adobe ставится прямо из репозитория.

Собственно, разговор пойдет о OpenJDK, который стоит дефолтной java-машиной в убунте, а точнее о том, как это дело исправить.

Восстановление настроек GNOME по-умолчанию в Ubuntu 11.04

Множество людей восприняло буквально в штыки навязанный в новой Убунте интерфейс Unity. Понимаю, вначале довольно не привычно, впрочем, как и все новое, но после того, как немного с ним поработаешь, понимаешь, что действительно очень и очень удобная вещь. Огорчает лишь нестабильная работа, особенно, если начинать менять какие-то параметры по-умолчанию.

В любом случае, выход есть!

Делаем logout. Заходим в консоль (CTRL+ALT+F1)
Вводим следующий код
sudo rm -rf .gnome2 .gnome2_private .gconf .gconfd
После возвращаемся (CTRL+ALT+F7) и созерцаем сброшенный по дефолту гном.

P.S. Узнал, что существует еще такой вариант, как 
sudo unity --reset
Но проверить пока не было возможности