Архив рубрики: Linux

Как правильно установить NetBeans на Ubuntu 12.04

Я конечно не претендую, что описанный ниже метод асболютно правильный, но он простой и обеспечивает мне стабильную работу приложения уже достаточно долгое время…

Если устанавливать NetBeans сразу после установки системы, а я именно так всегда и делаю, то для начала понадобится установить JDK. Я много встречал негативных комментариев и «камней» в сторону дефолтного JDK, что решил воспользоваться альтернативным, а точнее Oracle JDK.

Порядок установки Oracle JDK следующий:

1. Удаляем OpenJDK:

sudo apt-get purge openjdk*

2. Открываем терминал и запускаем следующую последовательность комманд:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

 

3. После успешной установки проверяем версию JDK

java -version
  

Теперь идем на сайт NetBeans и качаем последнюю версию IDE:
http://netbeans.org/downloads/index.html

Находим сохраненный файл (я обычно сохраняю его на Рабочий стол), открываем свойсва файла, находим вкладку Permissions и ставим галочку в поле Allow executing file as programm. Закрываем окно, запускаем файл и устанавливаем NetBeans.

Если после первого запуска IDE вы заметили что главное меню сливается с заголовком окна, то необходимо еще выполнить следующее: ищем файлик /usr/share/themes/Ambiance/gtk-2.0/gtkrc, открываем его для редактирования от имени админа

 sudo gedit /usr/share/themes/Ambiance/gtk-2.0/gtkrc

… находим строку 338 с текстом

 style «menu» {

 и меняем ее на

 style «menu» = «dark» {

 Сохраняем и перезапускаем NetBeans (если он был запущен)…

Автор: Sergiy Kamolov
Дата публикации: 2012-08-20T13:42:00.002+03:00

Работа с git через прокси

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

Но этот способ так и не заработал для меня, зато сработала команда для конфигурации git:

git config —global http.proxy http://login:’pa$$word’@proxyhttp:8080

одинарные кавычки обязательны. Теперь хоть git работает!

Автор: Dmitriy Falko
Дата публикации: 2012-08-20T13:21:00.002+04:00

Elgg: mod-rewrite для NGINX

Сегодня развернул Elgg на веб-сервере NGINX, и первая проблема с которой столкнулся — это небходимость замены mod-rewrite директив, которые содержатся в файле .htaccess, на соответсвующие правила для NGINX (rewrite-rules).
Читать →

Собираем OpenWRT для D-link dir-320 (A2)

В руки попал «d-link dir -320» и сразу его судьба была предрешена. В ближайшем магазине по этому случаю была куплена флешка на 16 Гб, на которой мы будем хранить систему и что-нибудь ещё. Описывать перепрошивку dir-320 со стандартной на OpenWRT буду на ходу. Cобирать будем на ubuntu 12.04 , поэтому ядро должно быть 3.2.0. Читать →

Таймеры высокого разрешения Linux C/C++

В операционной системе Linux помимо обычных задержек(sleep) и таймеров, реализованы таймеры высокого разрешения. Таймер и задержки высокого разрешения позволяет измерять временные промежутки с точностью до наносекунд, а так же позволяют приложения «засыпать» на непродолжительное время(в зависимости от конфигурации системы) соизмеримое с несколькими микросекундами.


//===============================================================
// Name : HiTimer.c
// Author : D.Falko
// Version : 1.0
// Description : High Resolution timer test
//===============================================================
 
 
#include
#include
#include
#include
#include
#include
 
 
int main(int argc, char *argv[])
{
if(0 == geteuid()) // приложение должно быть запущенно с правами суперпользователя
{
struct sched_param sp;
memset(&sp, 0, sizeof(sp));
sp.__sched_priority = sched_get_priority_max(SCHED_FIFO);
sched_setscheduler(0, SCHED_FIFO, &sp);
mlockall(MCL_CURRENT | MCL_FUTURE);
}
else
{
printf("Not running with superuser rigthsn");
exit(1);
}
if(argc < 3)
{
printf("Using: HiTimer iterations delayn");
exit(1);
}
 
int iter = atoi(argv[1]);
int delay = atoi(argv[2]);
 
int i=0;
struct timespec tS, startT, stopT;
 
clock_getres(CLOCK_MONOTONIC, &tS); // узнаем разрешение таймера
printf("Timer res: %ld sec, %ld nsecn", tS.tv_sec, tS.tv_nsec);
 
 
struct timespec time;
clock_gettime(CLOCK_MONOTONIC, &startT); // засекаем время начала теста
 
while(i<iter)
{ // повторяем iter раз задержку delay
i++;
clock_gett ime(CLOCK_MONOTONIC, &time); получаем актуальное время
time.tv_nsec+=delay; // добавляем требуемую задержку
clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME,
&time, NULL); // засыпаем
}
clock_gettime(CLOCK_MONOTONIC, &stopT);
long int nsec=stopT.tv_sec*1000000000 + stopT.tv_nsec
-startT.tv_sec*1000000000 + startT.tv_nsec;

  // iter*delay должно примерно равняться nsec, узнаем погрешность задержек
printf("Number of iterations: %d timer value: %d nsecn",
iter, delay);
printf("Time elapsed: %ld nsecn", nsec);
 
 
return 0;
}
А теперь подробней о использованных компонентах.

Используемая структура времени определена в <sys/time.h> и выглядят следующим образом:

struct timespec {
long tv_sec; /* секунды */
long tv_nsec; /* наносекунды */
};
 
Далее мы узнаем и выводим на экран точность(разрешение) системных часов, при помощи функции:

int clock_getres(clockid_t clk_id, struct timespec *res);
в структуру struct timespec *res записывается разрешения, указанных в clockid_t clk_id часов.

clockid_t clk_id может быть:

▪CLOCK_REALTIME: часы реального времени, доступные всем процессам в системе. Часы измеряются в секундах и наносекундах с начала эпохи (то есть 00:00:00 1 января 1970 по Гринвичу). Точность 1/HZ секунд. 

▪CLOCK_MONOTONIC: время непрерывной работы ОС, доступное всем процессам. В Линукс оно измеряются  в секундах и наносекундах после загрузки ОС. Точность 1/HZ с. Время в этих часах не может быть изменено каким-либо процессом, по этому рек