LINUX.ORG.RU
ФорумTalks

X Neural Switcher 0.0.1 is out!


0

0

Господа !

Просьба потестить - на разных иксах посмотреть и вообщем чего и где и как глянуть и отписать(не здесь). Новость в полном объеме здесь - http://cidnet.crew.org.ru/forum/forum.php?forum_id=26

Качаеться тут - http://xneur.cidnet.crew.org.ru/index.php?id=download

Пока это читсто тестовая ветка ознакомительная.

Что это? Это утилита наподобие Punto Switcher но думаем сделать по умней и добавить некие фитчи - но все потом - пока есть проблемки с иксами.

Былобы неплохо чтобы прога например могла учиться с какого нибудь большого текстовика, потом интелигентно переключаться.

linux_newbe
()
Ответ на: комментарий от linux_newbe

>Былобы неплохо чтобы прога например могла учиться с какого нибудь большого текстовика, потом интелигентно переключаться.

В смысле ? Не совсем понял ?

У меня там все просто достаточно, взял словари - написал программульку которая считает "очки" и скормил ей все эти словари - там все подсчиталось что надо сгенерилось и все - вроде как более-менее точно работает.

А вести словарь ИМХО не очень хорошая затея.

alphex_kaanoken ★★★
() автор топика

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

linux_newbe
()
Ответ на: комментарий от linux_newbe

>Вообще думаю может попробовать сделать что-нибудь подобное. Можно обработать текстовый файл и составить статистики по частоте встречаемости букв стоящих рядом с собой. И на этой основе пробовать угадывать язык.

Так у меня так и сделано=)

Просто думаю еще интелектуально корректиовать такие вещи как - "приветб" на "привет," и тому подобное;

Также всякие режимы ввести - вроде к примеру если забыл в редакторе каком нибудь знак необходимый поставить - раз анализ и ставит знак - для всяких скриптов и исходников полезная вещь - наряду с автоформатированием - ИМХО конечно - мне не особо то нужна - привычка выработана =)

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от linux_newbe

>Ну в смысле чтобы можно было уже скомпиленой проге подкармливать новые языки для угадывания.

АААА понял - интерестно будет - подумаю, в принципе не сложно - генератор моих "очков" сделать чтобы он куда надо писал эту статистику и потом проверял - в принципе можно;

Просто сейчас проблема с иксами больше чем с алгоритмами;

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от alphex_kaanoken

Поговорю с препами. Кстати интересная мысль сделать самому какой-нить такой модулный редакторчик или что-нить в таком стиле с инелли сенсом раскладок и автоисправлением в качестве семестрального проекта (у нас как раз сейчас идёт такой предмет - "обработка натуральных языков").

linux_newbe
()

На xorg 6.7 не работает :( Отправил альфексу багрепорт. Тем не менее, КнГ/АнМ, афтар, пишы исчо!

Кстати, с английским у вас явно проблемы ;)

K48 ★★★★
()

За GPL большой респект! Неужели ты разочаровался в BSD-like? Или соавтор настоял? Или уже откуда-то брали куски кода?

mikhail
()
Ответ на: комментарий от init

>А обязательно зависимость от libidn надо было делать?

Вот и пригодился халявный DVD с suse91 от новела :)

K48 ★★★★
()

ты программист на фортране чтоли?  Или просто не в курсе что есть

структурное программирование?



просто просмотр кода дает:



  1) Зачем memsetить word в 0?



  2) В функции locale_to_utf8(), зачем нужна переменная

     locale_string?



  3) В функцциях isUpperNonAlphaCyr, isLowerNonAlphaCyr зачем нужна

     переменная res?



  4) В функции isAB()



     Кусок:



        case 'b':

          return 0;

          break;

        case 'c':

          return 0;

          break;

        case 'd':

          return 0;



     Эквивалентен:



        case 'b':

        case 'c':

        case 'd':

          return 0;

          /* NOT REACHED */

          break;



     И вообще, тебе не кажется что будет понятнее написав



        /*

         * Proto: ISVOVEL(char BYTE)

         * Type: Predicate

         * Depend: ctype.h

         *

         * Return:

         *   1 - BYTE is lowered vovel

         *   0 - BYTE is lowered contsant

         *  -1 - neither

         */

        int

        isvovel(char byte)

        {

                if ((isalpha(byte) && islower(byte)) == 0)

                        return -1;

        

                if (byte == 'a' || byte == 'e'

                    || byte == 'i' || byte == 'o'

                    || byte == 'u' || byte == 'y')

                        return 1;

        

                return 0;

        }



  5) Тебе не кажется что функция isCyrWord слишком большая, может ее

     следует разбить на 20-25 фунций?



  6) Зачем в функции AllToLower извращаться на тему i = -1;?



     Hе понятнее ли будет:



       char *AllToLower(const char *word)

       {

         char *ret=NULL;

         int lw=strlen(word);

         if(lw>0)

           {

             ret = malloc(lw+1);

             do

               ret[lw]=tolower(word[lw]);

             while (lw-- > 0);

           }

       

         return ret;

       }



  7) Что за дурная привычка писать:



      memset(str, 0, strsize);

      memcpy(str, str1, strlen(str1));



  8) В комменте лицензии неплохо бы указать (c)



  9) По мне достаточно неудачный выбор имени для types.h, conv.h и

     error.h - слишком распространенные имена, могут возникнуть клашы

     с несистемными хидерами



 10) Есть такой ньюанс что принятие сторонних X Eventов

     рассматриваеться как несекурное поведение, поэтому в большинстве

     X прог игнорируют синтетические X евенты



Вобщем на самом деле я запридерался, все очень вполне неплохо, но

действительно если бы немножечко подструктурировать то найти

сторонников будет намного проще ..



спасибо за труды, продолжай в том же духе, будем с нетерпением ждать

релиза



PS: кстати что за проблемы с иксами?

lg ★★
()
Ответ на: комментарий от lg

ты программист на фортране чтоли?  Или просто не в курсе что есть
структурное программирование?

просто просмотр кода дает:

  1) Зачем memsetить word в 0?

  2) В функции locale_to_utf8(), зачем нужна переменная
     locale_string?

  3) В функцциях isUpperNonAlphaCyr, isLowerNonAlphaCyr зачем нужна
     переменная res?

  4) В функции isAB()

     Кусок:

        case 'b':
          return 0;
          break;
        case 'c':
          return 0;
          break;
        case 'd':
          return 0;

     Эквивалентен:

        case 'b':
        case 'c':
        case 'd':
          return 0;
          /* NOT REACHED */
          break;

     И вообще, тебе не кажется что будет понятнее написав

        /*
         * Proto: ISVOVEL(char BYTE)
         * Type: Predicate
         * Depend: ctype.h
         *
         * Return:
         *   1 - BYTE is lowered vovel
         *   0 - BYTE is lowered contsant
         *  -1 - neither
         */
        int
        isvovel(char byte)
        {
                if ((isalpha(byte) && islower(byte)) == 0)
                        return -1;
        
                if (byte == 'a' || byte == 'e'
                    || byte == 'i' || byte == 'o'
                    || byte == 'u' || byte == 'y')
                        return 1;
        
                return 0;
        }

  5) Тебе не кажется что функция isCyrWord слишком большая, может ее
     следует разбить на 20-25 фунций?

  6) Зачем в функции AllToLower извращаться на тему i = -1;?

     Hе понятнее ли будет:

       char *AllToLower(const char *word)
       {
         char *ret=NULL;
         int lw=strlen(word);
         if(lw>0)
           {
             ret = malloc(lw+1);
             do
               ret[lw]=tolower(word[lw]);
             while (lw-- > 0);
           }
       
         return ret;
       }

  7) Что за дурная привычка писать:

      memset(str, 0, strsize);
      memcpy(str, str1, strlen(str1));

  8) В комменте лицензии неплохо бы указать (c)

  9) По мне достаточно неудачный выбор имени для types.h, conv.h и
     error.h - слишком распространенные имена, могут возникнуть клашы
     с несистемными хидерами

 10) Есть такой ньюанс что принятие сторонних X Eventов
     рассматриваеться как несекурное поведение, поэтому в большинстве
     X прог игнорируют синтетические X евенты

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

спасибо за труды, продолжай в том же духе, будем с нетерпением ждать
релиза

PS: кстати что за проблемы с иксами?

lg ★★
()
Ответ на: комментарий от lg

там одна ф-ция сгенерена другой программулькой которая словари глядела.

С иксами проблемы в том что не берет класс точнее имя, то есть в неокторых приложениях берет в некоторых нет.

Потом опять же с отправкой отслыкой проблемы есть.

По поводу придирок

>1) Зачем memsetить word в 0?

это наверняка не мое - где это ?

>3) В функцциях isUpperNonAlphaCyr, isLowerNonAlphaCyr зачем нужна переменная res?

Будет фиксед - писалось все быстро потому как мало времени;

>4) В функции isAB()

Генерилось автоматом

>5) Тебе не кажется что функция isCyrWord слишком большая, может ее следует разбить на 20-25 фунций?

Генерилось автоматом - будет потом фиксед на предмет динамеческого подцепления языков.

>7) Что за дурная привычка писать:

Не не мое =)

>8) В комменте лицензии неплохо бы указать (c)

Будет фиксед

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

Да все будет - это чисто ознакомительная версия, дальше будет все причесано - поэтому Я новость и не делал и здесь разместил. Потом опять же там фиксить многое надо - вообщем дело в том что этому проекту уделяеться очень мало времени по сему пока вот так сумбурно;

Вот будет релиз - вот тогда и посмотрим;

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от mikhail

>За GPL большой респект! Неужели ты разочаровался в BSD-like? Или соавтор настоял? Или уже откуда-то брали куски кода?

Во первых это была идея соавтора, а во вторых в данном контексте мне по фигу будь это GPL или BSD-like.

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от K48

>На xorg 6.7 не работает :(

говорю для того и тестовая чтобы выяснить все чего и как.

>афтар, пишы исчо!

пишем пишем - не так много свободного времени пока что

>Кстати, с английским у вас явно проблемы ;)

С грамматикой есть да немного - если хочешь то отправь пофиксенный вариант новости;

ЗЫ Багрепорты настоятельно прошу оставлять на CIDNET а то иначе оно затеряеться в куче писем и потом не найти будет. Там линк есть - да и удобней - раз и пофиксил потом;

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от init

>А обязательно зависимость от libidn надо было делать?

Конечно =) Потом все поменяеться в лучшую сторону. =)

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от alphex_kaanoken

клево, кстати когда код генериться автоматом лучше в коменте где то это указать, чтобы глупых вопросов было поменьше :)

lg ★★
()
Ответ на: комментарий от lg

>клево, кстати когда код генериться автоматом лучше в коменте где то это указать, чтобы глупых вопросов было поменьше :)

Писал писал Я в комментах это как сейчас помню! писал! =)))) Напишу еще раз чего там.

alphex_kaanoken ★★★
() автор топика
Ответ на: комментарий от alphex_kaanoken

> С иксами проблемы в том что не берет класс точнее имя, то есть в неокторых приложениях берет в некоторых нет.

просто некоторые его проставлют а некоторые нет.

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

  1) WM_CLASS - если есть то эта пара (name/instance) полностью
     определяет аппликуху и ее инстанцию, за редким случаем когда надо
     смотреть в WM_WINDOW_ROLE

  2) В случае отсутсвия WM_CLASS береться WM_NAME иногда(очень редко) в 
     связке с WM_WINDOW_ROLE

  3) Если отсутсвует WM_NAME то эту аппликуху обычно удаляют из системы :)

lg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.