Jacek Filut

Projektant/Programista, Primesoft Polska Sp. z o.o.

Wypowiedzi

  • Jacek Filut
    Wpis na grupie Absurdy w temacie Informatyka - Programownie
    8.03.2015, 00:21

    Język programowania Borland C++


    WINAPI WinMainApplication(HINSTANCE, HINSTANCE, LPSTR, int)
    {
    try
    {
    Application->Initialize();
    Application->Title = "Application";
    Application->CreateForm(__classid(TParentt), &Parentt);
    ...
    ...
    Application->Run();
    }
    catch (Exception &ex)
    {
    Application->ShowException(&ex);
    }
    catch (...)
    {
    try
    {
    throw Exception("");
    }
    catch (Exception &ex)
    {
    Application->ShowException(&ex);
    }
    }
    return 0;
    }


    Patrząc na powyższy kod, widać że CATCH (...) jest zbędny i nie wiadomo w dla jakiego przypadku ma funkcjonować.
    Jeżeli autor chciał obsłużyć inne przypadki powinien zastosować poniższą konstrukcje:


    try
    {
    ...
    }
    catch (EDatabaseError &ede)
    {
    ...
    }
    catch (Exception &ex)
    {
    ...
    }

  • Jacek Filut
    Wpis na grupie Absurdy w temacie Informatyka - Programownie
    8.03.2015, 00:10

    Chciałbym poruszyć tematykę absurdów związanych z informatyką, programowaniem.
    Nie chodzi o wytykanie palcem ludzi, ale przestrogę aby nie powielać błędów; tylko wskazanie poprawnego kierunku działania.

  • Jacek Filut
    Wpis na grupie Programiści .NET w temacie WebServices - Server Unavailable - odpowiedz „text/html;...
    7.03.2015, 23:50

    Na swojej drodze spotkałem następujący komunikat błędu:


    Klient znalazł typ zawartości odpowiedzi „text/html; charset=utf-8”, ale oczekiwano typu „text/xml”. Żądanie nie powiodło się.
    --
    <?xml version="1.0" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <title>
    Server Unavailable
    </title>
    </head>
    <body>
    <h1>
    <span style="font-family:Verdana;color: #ff3300">
    Server Application Unavailable
    </span>
    </h1>
    <p>
    <span style="font-family:Verdana;">
    The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.
    </span>
    </p>
    <p>
    <b>Administrator Note: </b>
    An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.
    </p>
    </body>
    </html>

    gdzie struktura komunikacji wyglądała: własna usługa systemowa wywołująca różne metody własnego Web Services. Wszystko było oparte na framework 3.5, Win 7 i wywoływane metody pomiędzy aplikacjami była w trybie wielowątkowym (różne metody wywoływane wielokrotnie).

    Patrząc na komunikat "Server Unavailable" to usługa, Web Services nie wystartował lub jedna z tych aplikacji nie ma dostępu do drugiej (problem sieciowy).
    Ciekawostką jest to iż niektóre metody Web Services odpytywane przez usługę działały prawidłowo, więc problem z siecią można było by wykluczyć.

    Po sprawdzeniu aplikacji => ruch sieciowy pomiędzy aplikacjami jest prawidłowy oraz aplikacje są uruchomione, więc zapytałem wujka googla.
    Znalazłem różne propozycje rozwiązania; poniżej kilka z nich:
     § Aktualizacja framework i jakieś update Windowsa
      □ http://forums.holdemmanager.com/general-support/196581-cant-register.html
    § Żadne dodatkowych parametrów w konfiguracji Web Service:
    In the web.config add the following lines for system.web
    <httpRuntime requestValidationMode="2.0" />
    and
    <pages validateRequest="false" />

     § Inne
      □ http://tiku.io/questions/5446872/client-found-response-content-type-of-text-html-charset-iso-8859-1-but-expec

    Natomiast rozwiązanie jest trywialne: Błąd programistyczny - nieobsłużony wyjątek po stronie Web Services. W takim przypadku serwis zwraca html, zamiast nagłówka xml.
    Piszemy najprostszego klienta np.: ApplicationConsole z której wywołujesz metodę, która powoduje ten problem i DEBUG Web Services. W moim przypadku powodem była rekurencja nieskończona dla jednej z wywoływanych metod.

    Zapraszam do dyskusji, komentowania.Ten post został edytowany przez Autora dnia 07.03.15 o godzinie 23:58

  • Jacek Filut
    Wpis na grupie Programiści .NET w temacie Darmowe warsztaty on-line
    7.03.2015, 06:56

    Jeżeli chodzi o darmowe warsztaty i pogłębianie swojej wiedzy, umiejętnośći w dziedzinie .NET lub tez technologi Microsoft'u to gorąco polecam Microsoft Virtual Academy : http://www.microsoftvirtualacademy.com/

  • Jacek Filut
    Wpis na grupie Microsoft w temacie Centra Egzaminacyjne.
    5.01.2015, 10:12

    Czy ktoś może polecić ścieżkę kursów wraz z egzaminami pod MSSQLa?

    Jakie opinie znacie na temat poniższego szkolnictwa:
    - NobleProg (Poznań)
    - Altkom Akademia (Poznań)
    * w tym przypadku słyszałem że podchodzą bardzo przedmiotowo do uczestników; innymi słowy: zakres przerobiony, nie wracamy, zdasz nie zdasz twoja sprawa.

  • Jacek Filut
    Wpis na grupie Programiści .NET w temacie [C#/VS2010] Połączenie ORACLE poprzez WebService na win7...
    8.02.2013, 00:10

    Tematyka problemu jest połączenie się z aplikacji WebServices (VS2010/C#) do serwera bazodanowego ORACLE.

    Napotkane błędu:
    - ORA-06413: Connection not open.
    - Nastąpiła próba odczytu lub zapisu pamięci chronionej. Często wskazuje to, że inna pamięć jest uszkodzona.
    - System.Exception: OCIEnvCreate failed with return code -1

    Po ciężkich bojach uzyskałem następujące rozwiązanie:
    1) Instalacja klienta ORACLE 10g - Oracle Database 10g Express Edition Release 10.2.0.1.0
    - domyślna ścieżka instalacji to "C:\XEClient"
    2) Aktualizacja zmiennych środowiskowych:
    - Menu start/Mój komputer/Właściwości/Nazwa komputera, domena i ustawienia grupy roboczej - "Zmień ustawienia". Wymagane uprawnienia administratora
    - Właściwości systemu/Zaawansowane/Zmienne środowiskowe/Zmienne systemowe
    - Weryfikacji zmiennej PATH, gdzie powinna rozpoczynać się "C:\XEClient\bin\;C:\Oracle\11.2.0\client_1...."
    - Dodanie nowej zmiennej systemowej o nazwie: ORACLE_HOME i wartości: "C:\XEClient\bin\"
    - w moim przypadku WYMAGANY BYŁ RESTART KOMPUTERA
    3) Nadanie uprawnień na katalogu XEClient:
    - Prawym klawiszy myszy na katalogu/właściwości
    - Właściwości: XEClient/Zabezpieczenia/Edytuj nazwy grup lub użytkowników
    - Dla wszystkich użytkowników wykonanie odznaczenia i zaznaczenia opicji (taki refresh) "Odczytu i wykonanie" (Wymagane uprawnienia administratora).
    - Właściwości: XEClient/Zabezpieczenia/Zaawansowane/Zmień uprawnienia (Wymagane uprawnienia administratora). Dla wszystkich zaznacz opcję "Zastąp wszystkie uprawnienia obiektów podrzędnych uprawnieniami dziedziczonymi z tego obiektu"
    - w moim przypadku WYMAGANY BYŁ RESTART KOMPUTERA
    4) Utworzenie kopii ścieżki katalogów oraz z ich zawartością:
    - z "C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0"
    - do "C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0"
    Zabieg ma na celu usunięcie z ścieżki wartości: (x86)
    5) Następnie uruchomienie lokalnego serwera:
    Pierwsza:
    - z powyższej nowo utworzonej lokalizacji uruchomienia: WebDev.WebServer20.EXE/WebDev.WebServer40.EXE.
    - Menu start/Uruchom/CMD
    - CD "C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0" - ENTER
    - WebDev.WebServer40.EXE /port:1234 /path:"ŚCIEŻKA DO PROJEKTU WS, KTÓRY BĘDZIE URUCHAMIANY (gdzie znajduje się plik *.asmx)"
    Druga opcja:
    - utworzenie pliku: LocalHostWSASP.NET.bat
    - edycja pliku i wprowadzenia następujących lini:
    * cd "C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0"
    * start WebDev.WebServer40.EXE /port:1234 /path:"ŚCIEŻKA DO PROJEKTU WS, KTÓRY BĘDZIE URUCHAMIANY (gdzie znajduje się plik *.asmx)"
    - zapisz i uruchom
    6) Po wykonaniu powyższego punktu 5, należy zmienić ustawiania projektu
    - Uruchomienie projektu WebService.sln
    - Solution Explorer/Solution "WebService"/Properties/Configuration - dla projektu WebService ustawić Platformę x86.
    - Następnie Solution Explorer/"WebService"/Properties/Web
    - Use Custom Web Server/Server URL: - wprowadzić adres serwera, który został uruchomiony w powyższym 5 punkcie

    Dla każdorazowego uruchamiania, testowania oprogramowaniaych operacji na połączeniu z bazą ORACLE na systemie win7 (64bit) wymagane jest uruchmienie serwera i ustawienie konfiguracji VS.

    Rozwiązanie opracowano na podstawie:
    Text nr 1: Change launch path of Visual Studio 2010 Web Server


    How I can tell Visual Studio 2010 to launch built in web server from a different location. Is there a registry settings somewhere that I can modify or some how change the Debug -> Start Debugging menu item command?

    From C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer20.exe
    To C:\Program Files\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer20.exe

    ---------

    If you've facing the problem in connection with Oracle integration with ASP.NET in Windows 7 64 bits, then relax... XD
    That's the solution (I'm using Visual Studio 2010 32 bits):
    First of all, follow the steps here:
    System.Data.OracleClient requires Oracle client software version 8.1.7

    Then apply these steps:
    Copy the directory of your webserver (typically in "C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0") to "C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0";

    Open cmd, navigate to directory pasted in step 1 and start the web server (in my case "WebDev.WebServer40") pointing to the directory of your project (be careful, because this path cannot contain parenthesis, that causes the Oracle Bug 'ORA-06413: connection not open' as can be see described here);

    If you want to debug your application, change the default URL to the URL of your started server in Visual Studio. In Solution Explorer go to your project > right click > properties > web > in "Servers" section select "Use Custom Web Server" and place the URL that your server are running on. After this, start debug and be happy =D

    źródło: http://stackoverflow.com/questions/9519070/change-laun...

    Text nr 2: System.Data.OracleClient requires Oracle client software version 8.1.7

    I have a web site that I developed on Vista using Vb.net9. It makes a connection to Oracle. for the connection I use System.Data.OracleClient. It works fine on my machine, and our test server, but it does not work on the production server. We installed the Oracle Client 11 on the server. The error is System.Data.OracleClient requires Oracle client software version 8.1.7

    We've tried, making a console app that opens the connection, connection runs fine, opens, displays a message and all is well there.
    Then we make a simple web form, put it in the directory of the program, just a button, opens the connection, try..catch, grabs error, same error.
    The console app was running under an Administrator, web site running under iwam. Is it possible that iwam has a different path?

    ------
    I've run into this error dozens of times:

    Cause
    Security permissions were not properly set when the Oracle client was installed on Windows with NTFS. The result of this is that content of the ORACLE_HOME directory is not visible to Authenticated Users on the machine; this causes an error while the System.Data.OracleClient is communicating with the Oracle Connectivity software from ASP.NET using Authenticated User privileges.

    Solution
    To fix the problem you have to give the Authenticated Users group privilege to the Oracle Home directory.

    Log on to Windows as a user with Administrator privileges.
    Start Window Explorer and navigate to the ORACLE_HOME folder.
    Choose properties on the ORACLE_HOME folder.
    Click the “Security” tab of the “Properties” window.
    Click on “Authenticated Users” item in the “Name” list.
    Un-check the “Read and Execute” box in the “Permissions” list under the “Allow” column.
    Re-check the “Read and Execute” box under the “Allow” column.
    Click the “Advanced” button and in the “Permission Entries” verify that “Authenticated Users” are listed with permission = “Read & Execute”, and Apply To = “This folder, subfolders and files”. If not, edit that line and make sure that “Apply To” drop-down box is set to “This folder, subfolders and files”. This should already be set properly but it is important that you verify it.
    Click the “Ok” button until you close out all of the security properties windows. The cursor may present the hour glass for a few seconds as it applies the permissions you just changed to all subfolders and files.
    Reboot, to assure that the changes have taken effect.

    Try your application again.

    źródło: http://stackoverflow.com/questions/447983/system-data-...

    Spotkaliście się z takim przypadkiem, może macie optymalniejsze rozwiązanie?

    Pozdrawiam,
    Jacek.Jacek Filut edytował(a) ten post dnia 08.02.13 o godzinie 00:10

  • Jacek Filut
    Wpis na grupie Programiści .NET w temacie Przedstawmy się sobie
    28.10.2012, 11:07

    Witam,

    Nazywam się Jacek Filut i zajmuję stanowisko projektant, programista (C# i nie tylko) nowych rozwiązań biznesowych (aktualnie: backoffice systemów bankowych).

    Pozdrawiam wszystkich.

  • Jacek Filut
    Wpis na grupie Programiści .NET w temacie [C#] Alternatywa dla GOTO
    17.09.2012, 22:28

    Faktycznie, zapomniałem o tym wariancie.

  • Jacek Filut
    Wpis na grupie Programiści .NET w temacie [C#] Alternatywa dla GOTO
    17.09.2012, 11:39

    Witam wszystkich,

    Czy ktoś posiada inne alternatywne rozwiązanie dla zastąpienia instrukcji GOTO i oczywiście bardziej optymalną.

    Opis przypadku
    - posiadamy cztery zagnieżdżone w sobie pętle FOR
    - na podstawie dwóch parametrów wejściowych przerywamy wykonywanie pętli np.: trzeciej i czwartej.
    - po wskazanym/wybranym zatrzymaniu pętli mamy wykonać kilka dodatkowych akcji

    Przykłady:

    1) Wywołanie metod:


    namespace Application
    {
    class Program
    {
    public Program()
    {
    WykonaniePetliGOTO(10, 5, 5);
    WykonaniePetliBREAK(10, 5, 5);
    WykonaniePetliZAKONCZ(10, 5, 5);
    }
    ...
    }
    }

    2) Rozwiązanie pierwsze przy pomocy GOTO


    namespace Application
    {
    class Program
    {
    ...

    /// <summary>
    /// Wykonanie powyższego opisanego przykładu przy użyciu GOTO
    /// </summary>
    public void WykonaniePetliGOTO(int wykujDo, int trzeciStop, int czwartyStop)
    {
    bool bDodaAkcje = false;
    for (int pierwszyFor = 0; pierwszyFor < wykujDo; pierwszyFor++) //Pierwsza pętla
    {
    for (int drugiFor = 0; drugiFor < wykujDo; drugiFor++) //Druga pętla {
    for (int trzeciFor = 0; trzeciFor < wykujDo; trzeciFor++) //Trzecia pętla
    {
    for (int czwartyFor = 0; czwartyFor < wykujDo; czwartyFor++) //Czwarta pętla
    {
    if ((trzeciFor == trzeciStop) && (czwartyFor == czwartyStop))
    {
    bDodaAkcje = true;
    goto Wyjscie;
    }
    }
    }
    }
    }

    Wyjscie:
    {
    if (bDodaAkcje)
    {
    ;
    ///TODO: Kilka operacji dla wybranego przerwania akcji
    }
    }
    }
    ...
    }
    }

    3) Rozwiązanie drugie - flagi i instrukcji BREAK


    namespace Application
    {
    class Program
    {
    ...
    /// <summary>
    /// Wykonanie powyższego opisanego przykładu przy użyciu BREAK
    /// </summary>
    public void WykonaniePetliBREAK(int wykujDo, int trzeciStop, int czwartyStop)
    {
    bool czyPrzerwac = false;
    bool bDodaAkcje = false;
    for (int pierwszyFor = 0; pierwszyFor < wykujDo; pierwszyFor++) //Pierwsza pętla
    {
    for (int drugiFor = 0; drugiFor < wykujDo; drugiFor++) //Druga pętla {
    for (int trzeciFor = 0; trzeciFor < wykujDo; trzeciFor++) //Trzecia pętla
    {
    for (int czwartyFor = 0; czwartyFor < wykujDo; czwartyFor++) //Czwarta pętla
    {
    if ((trzeciFor == trzeciStop) && (czwartyFor == czwartyStop))
    {
    czyPrzerwac = true;
    bDodaAkcje = true;
    break;
    }
    }
    if (czyPrzerwac)
    {
    break;
    }
    }
    if (czyPrzerwac)
    {
    break;
    }
    }
    if (czyPrzerwac)
    {
    break;
    }
    }

    if (bDodaAkcje)
    {
    ;
    ///TODO: Kilka operacji dla wybranego przerwania akcji
    }
    }
    ...
    }
    }

    4) Rozwiązanie trzecie - jawne kończeniu wykonywania pętli


    namespace Application
    {
    class Program
    {
    ...
    /// <summary>
    /// Wykonanie powyższego opisanego przykładu przy jawny kończeniu wykonywania pętli
    /// </summary>
    public void WykonaniePetliZAKONCZ(int wykujDo, int trzeciStop, int czwartyStop)
    {
    bool bDodaAkcje = false;
    for (int pierwszyFor = 0; pierwszyFor < wykujDo; pierwszyFor++) //Pierwsza pętla
    {
    for (int drugiFor = 0; drugiFor < wykujDo; drugiFor++) //Druga pętla {
    for (int trzeciFor = 0; trzeciFor < wykujDo; trzeciFor++) //Trzecia pętla
    {
    for (int czwartyFor = 0; czwartyFor < wykujDo; czwartyFor++) //Czwarta pętla
    {
    if ((trzeciFor == trzeciStop) && (czwartyFor == czwartyStop))
    {
    bDodaAkcje = true;
    pierwszyFor = wykujDo;
    drugiFor = wykujDo;
    trzeciFor = wykujDo;
    czwartyFor = wykujDo;
    }
    }
    }
    }
    }
    if (bDodaAkcje)
    {
    ;
    ///TODO: Kilka operacji dla wybranego przerwania akcji
    }
    }
    ...
    }
    }


    Zapraszam do komentowania, sugestii i propozycji własnych rozwiązań.

    Pozdrawiam,
    Jacek.Jacek Filut edytował(a) ten post dnia 17.09.12 o godzinie 11:42

  • Jacek Filut
    Wpis na grupie snooker w temacie Masters 2010
    15.01.2010, 11:22

    A jednak :) O'Sullivan wygrał:
    Ronnie O'Sullivan 6-3 Peter Ebdon
    92(92)-34, 76(53)-19, 95(74)-0, 97(55,32)-22, 37-70(34), 62(54)-73(38), 97(53,44)-12, 1-65(37), 106(106)-32.

    Ale teraz będzie partyjka: R. O'Sullivan - Mark Williams. Uważam ten pojedynek że może to być najlepszy w całym turnieju ;)

    Pozdrawiam
    Jacek

  • Jacek Filut
    Wpis na grupie snooker w temacie Masters 2010
    14.01.2010, 18:10

    Witam, Ja stawiam na mojego faworyta, którym jest R. O'Sullivan. Ostatnio się za bardzo nie popisywał swoimi umiejętnościami, ale mam nadzieję i pokaże break'a z prawdziwego zdarzenia.

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do