atarionline.pl LinguaXE - Google translator dla małego Atari - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthoramarok
    • CommentTime4 Nov 2022 zmieniony
     
    Chciałbym podzielić się z Wami pierwszymi rezultatami mojego nowego projektu jakim jest LinguaXE.



    Jest to program, który wykorzystuje silnik Googla do tłumaczenia tekstów oraz FujiNet do komunikacji sieciowej. Jest to dla mnie zupełnie nieznany temat, co czyni go bardzo interesującym. Ponieważ nie posiadam fizycznego urządzenia muszę posiłkować się emulatorem.

    Na ten moment nie ma się specjalnie czym szczycić, bo program jest jeszcze dość ubogi, ale koncepcyjnie już się sprawdził.

    Na ten moment jest możliwość wprowadzenia tekstu w języku angielskim oraz przetłumaczenia go na wybrany język przez użytkownika.

    Jestem w trakcie opracowywania metody wprowadzania międzynarodowych znaków z klawiatury Atari, co da mi w przyszłości możliwość wybierania także języka źródłowego do tłumaczenia.

    Programu jeszcze nie udostępniam, bo jest niedopracowany i nie mam w nim nawet zaimplementowanej obsługi błędów np. braku połączenia internetowego, braku FujiNeta itp. Sam edytor jest też bardzo prymitywny.

    Ale już teraz chciałem rozpocząć dyskusję na temat projektu. Wszelkie Wasze komentarze, pytania czy sugestie będą dla mnie bardzo cenne.

    W kwestiach technicznych - program jest napisany w MadPascalu i wykorzystałem biblioteki bocianu do obsługi FujiNeta.
    • 2: CommentAuthortebe
    • CommentTime5 Nov 2022
     
    wow, ambitny projekt

    wcześniejszy projekt Unicode też widać jest wykorzystywany

    ->link<-
    • 3:
       
      CommentAuthorKaz
    • CommentTime5 Nov 2022
     
    Ambitnie Krzysiek, gratulacje za pomysł! :)

    Na Retrospekcjach widziałem z kolei carta z Google Maps do C64.
    • 4:
       
      CommentAuthorpirx
    • CommentTime5 Nov 2022
     
    barzo pikne! widze, ze masz mozliwosc tlumaczyc tez na klingon :) a przynajmniej czcioneczki sa do wyciagniecia.
    • 5: CommentAuthorCaesar
    • CommentTime5 Nov 2022
     
    @amarok: Fantastyczne! Pogratulować zacięcia i ochoty.
    @Kaz: To był cart z Google Maps czy karta sieciowa jak FujiNet i soft odpowiedni? Bo to by było coś co robi amarok - wykorzystanie silnika Google do zrobienia roboty i prezentacja na Atari. Zadałem pytanie Grzegorzowi, na którego komputerze to sprawdzaliśmy.
    • 6:
       
      CommentAuthoramarok
    • CommentTime5 Nov 2022
     
    @tebe, tak poprzedni projekt był tylko wprawką do tłumacza. Najpierw chciałem zorientować się jak będzie się prezentować tekst ze znakami 8x16 pikseli. Znaki są dość duże, ale dzięki temu nie ma problemów ze znakami diakrytycznymi. W niektórych językach znaki są rozmiaru 16x16 pikseli. Szczegóły można zobaczyć tutaj: ->link<-

    @pirx, czcionka jest jak najbardziej do wykorzystania. Zakres unicode to od U+F8D0 do U+F8FF. W tej czcionce znaki są 16x16 pikseli. Co do tłumaczenia... to pozostaje nam oczywiście uniwersalny translator ze Star Treka ;)
    • 7:
       
      CommentAuthorpirx
    • CommentTime5 Nov 2022
     
    o co za ciule w gugiełe - schowali klingon w translatorze, pamiętam jak był!!!
    • 8:
       
      CommentAuthoramarok
    • CommentTime20 Nov 2022
     
    Pracuję dalej nad programem do tłumaczeń i natknąłem się na pewien problem. Może ktoś z Was miał okazję spotkać się z podobnym i miałby pomysł jak go rozwiązać.

    Ale może zacznę od wyjaśnienia jak generalnie wygląda proces tłumaczenia. Przypomnę tylko, że program jest napisany w MadPascalu.

    Na początku żądanie tłumaczenia jest kodowane do formatu uri, tego z procentami.

    Następnie żądanie wysyłane jest przez funkcję TCP_Connect(tcp_uri) z modułu fn_tcp.pas. Funkcja ta wywołuje pod spodem FN_Open(tcp_uri) z modułu fn_sio.pas.

    Na końcu odbierany jest wynik żądania używając funkcji FN_ReadBuffer z modułu fn_sio.pas.

    Jak tylko zacząłem wprowadzać do programu znaki międzynarodowe, to szybko okazało się, że długość żądania szybko rośnie. Przykładowo pojedynczy znak w cyrylicy np. Б to 6 znaków po zakodowaniu %D0%91.

    Odkryłem, że FN_Open obcina wysyłane żądanie do 256 bajtów, co w przypadku znaków unicode o wyższych wartościach mocno ogranicza możliwości wysyłania dłuższych tekstów.

    W pierwszej kolejności postanowiłem zmodyfikować funkcję FN_Open, żeby zwiększyć liczbę do rozmiaru rzeczywistego np. większego niż 256. Niestety wysyłanie takiej operacji kończy się błędem 138 czyli timeout.

    W drugiej kolejności stwierdziłem, że może wykorzystać TCP_SendBuffer, która używa FN_WriteBuffer. W tym przypadku otrzymuję błąd 144 czyli błąd zapisu. Podejrzewam, że może dlatego, że przed TCP_SendBuffer powinienem użyć TCP_Connect lub czegoś podobnego do otwarcia połączenia. Jednak wydaje mi się, że w przypadu takich żądań nie powinienem rozbijać operacji na Connect i SendBuffer, bo jak miałbym podzielić żądanie pomiędzy Connect a SendBuffer.

    Jestem pewny, że istnieje jakieś logiczne i eleganckie rozwiązanie. Z góry dziękuję Wam za wszelką pomoc.
    • 9:
       
      CommentAuthorjhusak
    • CommentTime20 Nov 2022 zmieniony
     
    Wydaje mi się, że trzeba się skonsultować z twócrami sofru do fujineta. Ew. zajrzeć w źródła i może tam coś będzie.
    • 10:
       
      CommentAuthorKaz
    • CommentTime20 Nov 2022
     

    Ceasar:

    @Kaz: To był cart z Google Maps czy karta sieciowa jak FujiNet i soft odpowiedni?


    To drugie.
    • 11:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Fajny projekt. Aż zachciało mi się Fujinet, ale na razie niedostępny.
    • 12: CommentAuthorDope
    • CommentTime24 Nov 2022
     
    Jaki niedostępny? Toż przecież na zaxonowym Allegro leży.
    • 13:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Sprawdzałem u oryginalnych autorów.
    Nie wiedziałem, że ktoś to w Polsce robi też,
    masz na myśli tego Allegrowicza:
    ->link<-
    ?
    • 14: CommentAuthorPeri Noid
    • CommentTime24 Nov 2022 zmieniony
     
    Tak. Chyba że ci czas realizacji nie pasuje.
    • 15:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Rzeczywiście, teraz widzę: 33 dni.
    Pewnie zaczyna robić sprzęcik kiedy wchodzi zlecenie.
    No, jeden egzemplarz mógłby mieć w zapasie, a wykonywać następny też w momencie zlecenia, aby wyrównać zapas.
    • 16: CommentAuthorPeri Noid
    • CommentTime24 Nov 2022
     
    To jest "zabezpieczenie przed natrętnymi klientami", którzy na drugi dzień po zakupie wystawiają negatywa, ze jeszcze nie jest wysłane.
    • 17:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Tak, już rozmawiam na Allegro z kolegą Zaxonem, jak mniemam.
    • 18:
       
      CommentAuthoramarok
    • CommentTime24 Nov 2022
     
    @George, cieszę się, że zainteresowałeś się moim projektem.

    Mam chwilowo zastój w dalszym rozwoju programu, bo jak pisałem wcześniej muszę rozwiązać problem z dłuższymi żądaniami do serwera.

    > Wydaje mi się, że trzeba się skonsultować z twócrami sofru do fujineta
    @jhusak, dzięki za radę, tak zrobiłem. Thomas Cherryhomes potwierdził mi że operacja Open ma stały rozmiar danych równy 256 bajtów, co jest dla mnie niewystarczające. Dlatego jedynym sensownym rozwiązaniem jest podzielić żądanie na raty.

    Thomas zasugerował mi, żebym zamiast używać metody GET, co robię obecnie, spróbował POST. Dzięki temu nie będę ograniczony rozmiarem.

    Sprawdziłem sobie na szybko w Pythonie, że serwer Google'a przyjmuje żądania metodą POST i zwraca prawidłowy wynik, zatem jest to do zrobienia.

    Przejrzałem dokumentację do FujiNeta i znalazłem wskazówkę jak to mogłoby wyglądać: ->link<-
    Teraz muszę w jakiś sposób spróbować to odtworzyć w MadPascalu z użyciem bibliotek bocianu lub jej adaptacji. Mam za sobą kilka podejść, ale jak na razie bezowocnych. Walczę dalej...
    • 19:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    @amarok - spoko, moje FujiNet dopiero się smaży, ale jest duża szansa, że w święta siądę i będę uczył się tego używać oraz szukał softu, który z tym działa :)
    Także trzymam kciuki!

    Niestety okazało się, że nie mogę FujiNet wsadzić do SIO bezpośrednio, bo mam port SCART nad nim, który używam.
    Wchodzi w grę Splitter, ale śmiesznie, bo wtedy FujiNet blokuje wszystkie inne porty, albo podłączenie go odwrotnie kablem, ale wtedy nie da się już nic innego podłączyć.

    Może jeszcze jakieś inne rozwiązania są?
    • 20:
       
      CommentAuthorjhusak
    • CommentTime24 Nov 2022
     
    Jeszcze Fujinet w wersli light by Zenon, podłączany kabelkiem jak modem.
    • 21:
       
      CommentAuthorjhusak
    • CommentTime24 Nov 2022 zmieniony
     
    Z reguły to jest krócej niż 33 dni, ja od Zaxona dostawałem gadżety w ciągu tygodnia - dwóch.
    • 22:
       
      CommentAuthorGeorge
    • CommentTime24 Nov 2022
     
    Tak, ma być szybciej.
    Szukam kabelka przedłużki SIO.