RezistenZ!

суббота, 4 июля 2015 г.

Maven проект портлета с сервисами для Liferay


Для генерации нового maven проекта плагина для Liferay необходимо выполнить ряд шагов. В качестве примера будем делать это в интерактивном режиме, в дальнейшем можно будет уместить все в одну команду с параметрами.

суббота, 30 мая 2015 г.

Валидация по схемам в веб-сервисе Apache CXF

По умолчанию проверка по схемам (SchemaValidation) в веб-сервисе на основе каркаса Apache CXF, как оказалось, отключена. Это сделано для увеличения производительности.
Для включения этой возможности достаточно добавить аннотацию к реализации интерфейса сервиса: 

org.apache.cxf.annotations.SchemaValidation

После этого, если на сервис придет сообщение, не соответствующее схемам, генерируется исключение. 

Подробнее:

По умолчанию, например когда проверка отключена сервис пропускал сообщения с отсутствующими обязательными элементами.

пятница, 28 сентября 2012 г.

Настройка среды для web разработки на Java в Windows


  1. Установка JDK 
  2. Установка Eclipse EE 
  3. Импорт веб-проекта в Eclipse
  4. Интеграция Eclipse с Apache Tomcat

понедельник, 9 января 2012 г.

Алгоритм шифрования Эль-Гамаля (Elgamal) на C++

Собственно рабочая версия

int power(int a, int b, int n){// a^b mod n
    int tmp=a;
    int sum=tmp;
    for(int i=1;i<b;i++){
        for(int j=1;j<a;j++){
            sum+=tmp;
            if(sum>=n){
                sum-=n;
            }
        }
        tmp=sum;
    }
    return tmp;
}
 
int mul(int a, int b, int n){// a*b mod n
    int sum=0;
     
    for(int i=0;i<b;i++){
        sum+=a;
         
        if(sum>=n){
            sum-=n;
        }
    }
 
    return sum;
}

/*****************************************************
    p - простое число
    0 < g < p-1
    0 < x < p-1
    m - шифруемое сообщение m < p
*****************************************************/
void crypt(int p,int g,int x, string inFileName,string outFileName){
    ifstream inf(inFileName.c_str());
    ofstream outf(outFileName.c_str());
 
    int y=power(g,x,p);
     
    wcout<<"Открытый ключ (p,g,y)="<<"("<<p<<","<<g<<","<<y<<")"<<endl;
    wcout<<"Закрытый ключ x="<<x<<endl;
     
    wcout<<"\nШифруемый текст:"<<endl;
 
    while(inf.good()){
        int m=inf.get();
        if(m>0){
            wcout<<(char)m;
             
            int k=rand()%(p-2)+1; // 1 < k < (p-1)
            int a= power(g,k,p);
            int b= mul(power(y,k,p),m,p);
            outf<<a<<" "<<b<<" ";
        }
    }
 
    wcout<<endl;
 
    inf.close();
    outf.close();
}
 
void decrypt(int p,int x,string inFileName,string outFileName){
    ifstream inf(inFileName.c_str());
    ofstream outf(outFileName.c_str());
     
    wcout<<"\nДешифрованый текст:"<<endl;
 
    while(inf.good()){
        int a=0;
        int b=0;
        inf>>a;
        inf>>b;
         
        if(a!=0&&b!=0){
            //wcout<<a<<" "<<b<<endl;
         
            int deM=mul(b,power(a,p-1-x,p),p);// m=b*(a^x)^(-1)mod p =b*a^(p-1-x)mod p - трудно было  найти нормальную формулу, в ней вся загвоздка
            char m=static_cast<char>(deM);
            outf<<m;
            wcout<<m;
        }
    }
     
    wcout<<endl;
 
    inf.close();
    outf.close();
}

int main(){
    srand(time(NULL));
   
    crypt(593,123,8, "in.txt","out_crypt.txt");
    decrypt(593,8,"out_crypt.txt","out_decrypt.txt");

    
    return 0;
}

Описание алгоритма на википедии без волшебной формулы

воскресенье, 27 ноября 2011 г.

среда, 24 августа 2011 г.

Книга Архитектура корпоративных программных приложений(Шаблны корпоративных приложений)


Фаулер. М."Архитектура корпоративных программных приложений"("Patterns of Enterprise Application Architecture"), 2006. - 544 с.


Книга об архитектурных шаблонах проектирования для приложений, применяемых в масштабах предприятий.
Автором вводится понятие "корпоративное приложение" и чем оно отличается от других программ, какие проблемы необходимо решить при построении данного вида систем.
Рассматриваются конкретные шаблоны для решения наиболее стандартных задач встречающихся при разработке корпоративных приложений.  

суббота, 2 апреля 2011 г.

Новая книга GoF

Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес "Приемы объектно-ориентированного проектирования. Паттерны проектирования", 2010. - 366 с.

Книга "банды четырёх" -  это скорее справочник, чем книга для чтения от корки до корки. Но читать ее приходится от корки до корки, так как в описании отдельных паттернов встречаются названия новых, которые в свою очередь находятся в следующих разделах и главах. Но после полного прочтения, для закрепления материала нужно еще не раз возвращаться к описанию отдельного паттерна.
Сами паттерны предназначены для решения часто встречающихся задач, возникающих при проектировании и разработке объектно-ориентированного программного обеспечения. Правильное применение паттрена в большинстве случаев решает поставленную задачу, но не гарантирует что задача будет решена наилучшим способом. Также паттерны предназначены для упрощения внесения последующих изменений в код, в связи с новыми или изменившимися требованиями.