LINUX.ORG.RU

Сообщения gandjubas

 

[Java][ниасилил] JPA + Hibernate

Короче, нужно задействовать некий стандарт взаимодействия с БД в Java (ОРМ и всё такое), посоветуйте грамотный туториал, плиз

Нужно, чтобы там, помимо всего прочего, чётко было написано какие либы подрубить к проекту в эклипсе, какой тип проекта в эклипсе должен быть (JPA или хватит обычного Java-проекта) как это всё грамотно сконфигурить, чтобы оно уже заработало, наконец. Под «заработало» имеется в виду стандартный CRUD, findByExample, query-sql в конфиге *.xml или типа того.

Пример годного туториала: http://www.itancan.com/itancan-docs/UsingHibernateWithEclipse.pdf Но нужен тот, который заточен под JPA

П.С. на данном этапе удалось задействовать только голый Hibernate (в частности, получилось генерировать маппинг, POJO и DAO с помощью JBOSS плагина к эклипсу и оно даже чудесным образом работало после этого, но хочется большего).

Спасибо.

 ,

gandjubas
()

[GNU][GPL] Законность использования

Предположим, я решил сделать некую программу, но для её создания мне понадобился проект под GPL лицензией. Однако, я, допустим, решил закрыть свой собтсвенный код. Для примера, весь функционал программы - мой закрытый код, а графическая библиотека - GPL. Я рисую окошки с помощью GPL библиотеки, и делаю из этого графического интерфейса некий сервер (или, скорее даже, клиент), который будт взаимодействовать с закрытым кодом, линкуясь динамически. Я беру и делаю этот интерфейс opensource-ным - в строгом соответствии с GPL лицензией и распространяю в открытом виде. Тем не менее, без моего закрытого кода этот интерфейс - практически бесполезен. ??? RPFIT! Есть ли здесь подвох?

 ,

gandjubas
()

[C][C++] Графическая библиотека

Ищется хорошая открытая графическая либа желательно с гуем для работы не только в Linux, Win, MacOSX, но, хотелось бы так же иметь возможность портировать это всё в iOS, андроид, симбиан, короче во всё что шевелится..

Единственный кандидат пока - это SDL, но в нём не гуя, что печально.

 ,

gandjubas
()

[Threads] Реализация неблокирующего чтения на мьютексах

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

Решение на Си, в котором (где-то) определен тип mutex и функции void lock(mutex *), void unlock(mutex *):



static mutex WR;  /* где-нибудь инициализируется заранее */
static mutex R;   /* аналогично */

static int locked = 0;
static int countR = 0;

void Read(void){
  /* читатели */
  int flag = 0;
  lock(R);
  countR++;
  if(!locked){ lock(RW); flag=1; }
  unlock(R);
   
  /* ... некое чтение ресурса ... */

  lock(R);
  countR--;
  if(flag){ locked = 0; unlock(RW); }
  unlock(R);
}



void Write(void){
  /* писатели */
  int weHaveReaders;
  do{
    lock(R);
    if(countR > 0) weHaveReaders = 1;
    else { 
       locked = 0;
       unlock(R); 
       lock(RW); 
       weHaveReaders = 0; 
    }
  }while(weHaveReaders);


  /* ... некая запись того же ресурса ... */

  lock(R);
  unlock(RW);
  locked = 0;
  unlock(R);
}

Вопросы: корректно ли решение? Как бы вы решили эту задачу?

Спасибо за внимание.

gandjubas
()

[C] m4 - с чем его едите вы?

Интересует практический совет насчёт макропроцесора m4.

Стоит ли его использовать?

Если нет, какие есть альтернативы?

Как часто вы пользуете m4 в своей работе?

Каковы удобства, читабельность и т.д.

 

gandjubas
()

[C/Java][lib-ы] Быстрое симметричное шифрование

Интересуют либы, которыми вы пользуетесь для шифрования/дешифрования потока данных. Присматриваюсь к cryptlib ( http://en.wikipedia.org/wiki/Cryptlib ), что скажете?

Вообще хотелось бы также узнать о промышленных стандартах и о стандартах шифрования рекомендуемых на территории РФ в э практической применимости оных и наличия готовых бесплатных либ для этого.

Спасибо.

UPD:

нашёл ещё одну либу: libgcrypt

советуют: libssl

Вопрос по-прежнему открыт.

gandjubas
()

[C] switch vs function pointer benchmark


s3r_rea@ararat:~/c/test1> gcc t.c -O3
s3r_rea@ararat:~/c/test1> ./a.out
LOX is testing...
G_i: 10029202
Time: 2974 ms.

FP array is testing...
 G_i: 20027413
Time: 3026 ms.

s3r_rea@ararat:~/c/test1> cat t.c
#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
#include <time.h>

static int G_i=0;

typedef void (*cmd)();

void cmd1(){ G_i += 1; }
void cmd2(){ G_i -= 1; }
void cmd3(){ G_i += 2; }
void cmd4(){ G_i -= 2; }
void cmd5(){ G_i += 3; }
void cmd6(){ G_i -= 3; }
void cmd7(){ G_i += 4; }
void cmd8(){ G_i -= 4; }
void cmd9(){ G_i += 1; }

void cmd11(){ G_i += 1; }
void cmd12(){ G_i -= 1; }
void cmd13(){ G_i += 2; }
void cmd14(){ G_i -= 2; }
void cmd15(){ G_i += 3; }
void cmd16(){ G_i -= 3; }
void cmd17(){ G_i += 4; }
void cmd18(){ G_i -= 4; }
void cmd19(){ G_i += 1; }


static cmd  aCmd[] = {
&cmd1, &cmd2, &cmd3, &cmd4, &cmd5, &cmd6, &cmd7, &cmd8, &cmd9,
&cmd11, &cmd12, &cmd13, &cmd14, &cmd15, &cmd16, &cmd17, &cmd18, &cmd19
 };

void LOX(int i){
        switch(i){
    case 0: cmd1(); break;
    case 1: cmd2(); break;
    case 2: cmd3(); break;
    case 3: cmd4(); break;
    case 4: cmd5(); break;
    case 5: cmd6(); break;
    case 6: cmd7(); break;
    case 7: cmd8(); break;
    case 8: cmd9(); break;

    case 9: cmd11(); break;
    case 10: cmd12(); break;
    case 11: cmd13(); break;
    case 12: cmd14(); break;
    case 13: cmd15(); break;
    case 14: cmd16(); break;
    case 15: cmd17(); break;
    case 16: cmd18(); break;
    case 17: cmd19(); break;
    default: break;
        }
}

long long getMS(const struct timeval *start, const struct timeval *end){
  long long seconds, useconds;

  seconds  = end->tv_sec  - start->tv_sec;
  useconds = end->tv_usec - start->tv_usec;

  return ((seconds) * 1000 + useconds/1000.0) + 0.5;
}


int main(){
  struct timeval start, end;
  long long mtime;
  srand (time (NULL));
  int i, j, Max = 10000000;

  printf("LOX is testing...\n");
  gettimeofday(&start, NULL);
  for(i=0; i < Max; i++)
    for(j = 0; j < 9; j++)
       LOX(rand () % 18);
  gettimeofday(&end, NULL);
  printf("G_i: %d \n", G_i);
  printf("Time: %lld ms. \n\n",  getMS(&start, &end));


  printf("FP array is testing...\n ");
  gettimeofday(&start, NULL);
  for(i=0; i < Max; i++)
    for(j = 0; j < 9; j++)
      (*(aCmd + (rand () % 18)))();
  gettimeofday(&end, NULL);
  printf("G_i: %d \n", G_i);
  printf("Time: %lld ms. \n\n",  getMS(&start, &end));

  return 0;
}
s3r_rea@ararat:~/c/test1> ls
a.out  t.c
s3r_rea@ararat:~/c/test1>
 

Забавно, не правда ли?

 

gandjubas
()

[erlang] WTF!?

$touch mth.erl
$vi mth.erl
<INSRT>
-module(mth).
-export([perms/1]).

perms([]) -> [[]];
perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].

<ESC>:wq
$erl
Erlang (BEAM) emulator version 5.6.5 [source] [64-bit] [smp:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.6.5  (abort with ^G)
1> c(mth).
{ok,mth}
2> mth:perms("Pyth"). 
["Pyth","Pyht","Ptyh","Pthy","Phyt","Phty","yPth","yPht",
 "ytPh","ythP","yhPt","yhtP","tPyh","tPhy","tyPh","tyhP",
 "thPy","thyP","hPyt","hPty","hyPt","hytP","htPy","htyP"]
3> mth:perms("Pytha").
["Pytha","Pytah","Pyhta","Pyhat","Pyath","Pyaht","Ptyha",
 "Ptyah","Pthya","Pthay","Ptayh","Ptahy","Phyta","Phyat",
 "Phtya","Phtay","Phayt","Phaty","Payth","Payht","Patyh",
 "Pathy","Pahyt","Pahty","yPtha","yPtah","yPhta","yPhat",
 [...]|...]
4>

[...]|...] <------------ ????

 

gandjubas
()

[java][ssh2] Давайте обсудим библиотеку для соединения по SSH2

Смотрю в сторону JSch - Java Secure Channel, а какая либа вам по душе?

 

gandjubas
()

Программируем критическую область (теория)

Короче, прочитал у Танненбаума (Э. Танненбаум, Современные Операционные Системы, 2-е изд., Питер, 2002) на стр. 132 про Алгоритм Петерсона, расчитанный на 2 процесса. И вдруг мне стало интересно как это будет выглядеть для N > 2 процессов. Решил наваять свой велосипед. Получилось вот такое:

#define N 100
#define FALSE 0
#define TRUE  1

int other = 0;
int nobody = 0;
int in = 0;
int turn = 0;
int choose_me = 0;
int interested[N];
...
enter_region(int process){
 in++;
 turn = process;
 if(FALSE == interested[other]){
  nobody++;
  while(turn == process){
   if(1 == nobody && FALSE == interested[other]){
    choose_me = process;
    interested[process] = TRUE;
    other = choose_me;
   }
  }
  if(FALSE == interested[process]) {
   nobody--;
   interested[process] = TRUE;
  }
  while(other != process) 
   choose_me = process;
 }
}


leave_region(int process){
 interested[process] = FALSE;
 in--;
 if(in > 0){
  turn = process;
  while(process == choose_me);
  other = choose_me;
 }
 nobody--;
}


Мне кажется, что этот код гарантирует ожидаемое поведение (если пренебречь производительностью), а как думаете вы? Как бы вы это реализовали? Как бы доказывали гарантию?

gandjubas
()

RSS подписка на новые темы