Advertise with Googlier.com tag:blogger.com,1999:blog-7531463720728239813Wed, 23 Sep 2026 17:40:38 +0000plAPEXAPEX 4.0DBESzkoleniaORACLEAPEX 4.2APEX 4.1CertyfikacjaArtykułyORACLE XEAPEX ListenerpodstawyAPEX 5.0SQLDeveloperprzykładyenthemesOracle 11g XEopispatchAPEX 5.1wstępniakAPEX HostingKScope17PL/SQLtłumaczenieAPEX-DESIGNERS.COMForumRaport InteraktywnyjQueryAPEX 5.2oracle cloudshcemat uwierzytelnianiastylesyntax highlighterATSTJavaScriptORDSschemat autoryzacjiAPEX PluginBusiness IntelligenceCloudHostingKScopeKScope18RSSRSSFeedsTomcatmobile browserpracaużytkownicyAJAXAPEX 18.1Active DirectoryAmazon AlexaCollectionData LoadingEditAreaGlassfishInstalacjaInteractive GridIoTLinuxMySQLODTUGORACLE XE 18COracle 12cRegion display selectordrukowanieoracleradrestSQLrozszerzeniaAPEX.dbe.pl - Blog o Oracle Application Express (APEX)Blog firmy DBEhttp://apex.dbe.pl/noreply@blogger.com (Piotr Jasiński (APEXUTIL.com / DBE))Blogger241125tag:blogger.com,1999:blog-7531463720728239813.post-6804350226409568890Tue, 02 Nov 2021 14:49:00 +00002021-11-02T15:49:29.804+01:00LinuxORACLE XEInstalacja Oracle XE 21c na linuxie (Oracle Linux 8 i RHEL 8) !<div>Około 2 miesiące temu Oracle udostępnił instalki Oracle XE 21c. W pierwszej kolejności były to wersje na linuxa, miesiąc później ukazała się wersja na Windows.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8TEXSeWLNrSIFgQnP6eR5CT4DeqrsX3h5er_ZQmxjIaFjQdA6Nir52hj5ugfB7pq10pFXGgMQgDWKE1ttTX1pHRT25_gfimGFjoUzlxTxLP0gJW0iAUEXB_ZcFHgG-7hXRfQN-V1Li0wl/s331/oracle21cxe.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="238" data-original-width="331" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8TEXSeWLNrSIFgQnP6eR5CT4DeqrsX3h5er_ZQmxjIaFjQdA6Nir52hj5ugfB7pq10pFXGgMQgDWKE1ttTX1pHRT25_gfimGFjoUzlxTxLP0gJW0iAUEXB_ZcFHgG-7hXRfQN-V1Li0wl/s320/oracle21cxe.png" width="320" /></a></div><br /><div>Instalacja na Oracle Linux 8 jest banalnie prosta. Wystarczy jako root użyć komendy yum, która pobierze i zainstaluje w pierwszej kolejności niezbędne powiązania a następnie sam silnik.</div><div><br /></div><div># przelogowujemy się na root-a</div><div><span style="font-family: courier;"><b>sudo su -&nbsp;</b></span></div><div># przechodzimy do katalogu tmp</div><div><span style="font-family: courier;"><b>cd /tmp</b></span></div><div># UWAGA tylko uruchamiać na dystrybucji Red Hat</div><div><b><span style="font-family: courier;">wget https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm</span></b></div><div># pobieramy oficjalną dystrybucję silnika 21c XE</div><div><b><span style="font-family: courier;">wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm</span></b></div><div># uruchamiamy proces instalacji wraz z powiązaniami</div><div><span style="font-family: courier;"><b>yum -y localinstall oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm</b></span></div><div><br /></div><div>Uruchamiamy tworzenie bazy</div><div><b><span style="font-family: courier;">/etc/init.d/oracle-xe-21c configure</span></b></div><div># podczas instalacji będziesz tylko musiał określić&nbsp; hasło dla głównych użytkowników bazy:</div><div><br /></div><div>.....</div><div>Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:</div><div>Confirm the password:</div><div>.....</div><div><br /></div><div>Jeszcze warto ustawić aby&nbsp; oracle wstawał po restarcie:</div><div><br /></div><div><b><span style="font-family: courier;">systemctl start oracle-xe-21c</span></b></div><div><b><span style="font-family: courier;">systemctl enable oracle-xe-21c</span></b></div><div><br /></div><div>Żeby móc podłączyć sie do bazy zdalnie, należy przekonfigurować firewalla lub ewentualnie go całkowicie wyłączyć.</div><div><b><span style="font-family: courier;">systemctl stop firewalld</span></b></div><div><b><span style="font-family: courier;">systemctl disable firewalld</span></b></div><div><br /><br />Niniejsza wersja bazy ma identyczne ograniczenia jak poprzednia tj:<br /><ul style="text-align: left;"><li>max 2 wątki procesora</li><li>2 GB RAM</li><li>12GB danych użytkownika&nbsp;</li></ul><div><br /></div><div><br /></div><div>W następnym poście napiszę jak podpiąć i używać obrazu dockerowego Oracle XE 21C.</div></div><div><br /></div><div><br /></div><div><br /></div>http://apex.dbe.pl/2021/11/instalacja-oracle-xe-21c-na-linuxie.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-7178897033385587448Mon, 10 Dec 2018 08:48:00 +00002018-12-11T07:38:56.083+01:00Podłączanie plików jQuery UI w APEX 18.2<div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi3jGIa_Ow4JZnHzSeC3oHJtTjkLIXELiWi1SthlLVuZUcD86t-eoOttLryPahF-xVT93m5NH1nvJJSWv2dAQy1GcP7HG7TI46lNChOLdK7sdzBfCiic08yYhHAnzn2cSBxhFKGeuf9qJB/s1600/Apex18.2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="440" data-original-width="880" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi3jGIa_Ow4JZnHzSeC3oHJtTjkLIXELiWi1SthlLVuZUcD86t-eoOttLryPahF-xVT93m5NH1nvJJSWv2dAQy1GcP7HG7TI46lNChOLdK7sdzBfCiic08yYhHAnzn2cSBxhFKGeuf9qJB/s320/Apex18.2.png" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6BHkOms9tpE-pWzAqM3hs7GJbrq-73Od45kbhC3BwjWu2HOwubYHf32olbUeZDRVFZeNF3U4eHKdl13G64SAGJzJ-cC5w2BNqZ_I8Vf6fgj9Y1SYKuxAdQgfBd18GaMVTFnZGsY9Q8cA/s200/jqueryui.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="195" data-original-width="200" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6BHkOms9tpE-pWzAqM3hs7GJbrq-73Od45kbhC3BwjWu2HOwubYHf32olbUeZDRVFZeNF3U4eHKdl13G64SAGJzJ-cC5w2BNqZ_I8Vf6fgj9Y1SYKuxAdQgfBd18GaMVTFnZGsY9Q8cA/s200/jqueryui.png" width="200" /></a></div> W maju tego roku został opublikowany artykuł na blogu dotyczący podłączania plików jQuery UI w wersji APEX'a 5.0.<br /> (<a href="http://apex.dbe.pl/2018/05/podaczanie-plikow-jquery-ui-w-apex-50.html">Link do artykułu w wersji APEX 5.0+</a>)<br /> <br /> Wraz z upgradem do najnowszej wersji APEX'a 18.2 zmienił się link służący do podłączania plików jQuery UI.<br /> <br /> Jeśli w konsoli pojawi się błąd przedstawiony na screenie niżej, to jest on związany z brakiem takowej biblioteki. Jedną z przyczyn może być błędnie podłączony link do biblioteki.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcxeD3AZrEdnOm6MTbCDXsMoLZgnNPpwNwU-ENw07ODSqqFUNFI9Z0B7OOgi59uotWeCNV0LRZn601iawVlMRmV0P4S2DbyJ2hgTIY1vrCp0xamJEHbAZeWoNTRoOQLxxkU11nDFAbqaZe/s1600/Przechwytywanie.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="17" data-original-width="408" height="13" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcxeD3AZrEdnOm6MTbCDXsMoLZgnNPpwNwU-ENw07ODSqqFUNFI9Z0B7OOgi59uotWeCNV0LRZn601iawVlMRmV0P4S2DbyJ2hgTIY1vrCp0xamJEHbAZeWoNTRoOQLxxkU11nDFAbqaZe/s320/Przechwytywanie.PNG" width="320" /></a></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> Przykład podłączenia np. slider'a na stronie:<br /> <br /> #JQUERYUI_DIRECTORY#ui/widgets/#MIN_DIRECTORY#slider.js<br /> <br /> Jeśli natomiast chcemy podłączyć plik w wersji MIN, wystarczy dodać #MIN# do powyższego linku:<br /> <br /> #JQUERYUI_DIRECTORY#ui/widgets/#MIN_DIRECTORY#slider#MIN#.js<br /> <br /> Powyższy link wygeneruje poniższy kod na stronie:<br /> <br /> &lt;script src="/i/libraries/jquery-ui/1.12.0/ui/widgets/slider.js?v=18.2.0.00.12"&gt;&lt;/script&gt;<br /> <br /> <br />http://apex.dbe.pl/2018/12/podaczanie-plikow-jquery-ui-w-apex-182.htmlnoreply@blogger.com (Łukasz Szymański)1tag:blogger.com,1999:blog-7531463720728239813.post-1365791882872894626Tue, 23 Oct 2018 10:13:00 +00002018-10-23T14:31:42.486+02:00InstalacjaORACLE XEORACLE XE 18CInstalacja Oracle XE 18c na LinuxieNa tą chwilę Oracle udostępnił instalki tylko i wyłącznie na linuxa. Nie jest to nic odosobnionego. Taka sytuacja powtarza się przy każdym wypuście wersji XE. Użytkownicy Windowsa będą musieli poczekać jeszcze kilka miesięcy.<br /> Podczas instalacji użyłem CentOS-a w wersji 7.5 <br /> <br /> <br /> <br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTPf_-yEHFNxqAaTqGpc32HC4h31vvHi5VoCU8rA0ztZeGUD7ErKMpopj2lhTmuBlIpWI9LC6CSzB25s5g5ZWb94iKaHXKXsxtbkUPHHVdT0dBUiFc3jYJjF2_ZolRsB8Py7N7rdfXOmpJ/s1600/xe18c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="319" data-original-width="341" height="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTPf_-yEHFNxqAaTqGpc32HC4h31vvHi5VoCU8rA0ztZeGUD7ErKMpopj2lhTmuBlIpWI9LC6CSzB25s5g5ZWb94iKaHXKXsxtbkUPHHVdT0dBUiFc3jYJjF2_ZolRsB8Py7N7rdfXOmpJ/s320/xe18c.png" width="320" /></a></div> <br /> <br /> <br /> <b>Wymagania:</b><br /> Minimum 1GB RAM zalecane 2GB<br /> Minimum 10GB miejsca na dysku<br /> Pamięć SWAP minimum 2GB lub dwykrotność pamięci RAM (należy wybrać mniejszą wartość)<br /> Parametry kernela. Lista <a href="https://docs.oracle.com/en/database/oracle/oracle-database/18/xeinl/server-component-kernel-parameter-requirements.html">tutaj</a>. Zbytnio się nimi nie musimy przejmować ustawią się same podczas instalacji.<br /> Systemy operacyjne -&gt; <a href="https://docs.oracle.com/en/database/oracle/oracle-database/18/ladbi/operating-system-checklist-for-oracle-database-installation-on-linux.html#GUID-E5C0A90E-7750-45D9-A8BC-C7319ED934F0">tutaj </a>lista<br /> <br /> <b>Kroki instalacji</b><br /> <br /> 1. Instalację Oracle XE 18C wykonujemy z pozycji uzytkownika, który posiada możliwość uruchamiania programów jako sudo<br /> <br /> 2. Tworzymy folder install.<br /> <pre style="background-color: #bbbbbb;">mkdr /install #wejscie do stworzonego flderu cd /install </pre> <br /> 3. Ze strony <a href="https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html">https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html</a> pobieramy wersję instalacyjną Oracle Database 18c Express Edition for Linux x64<br /> <br /> 4. Pobieranie bazy prekonfiguracyjnej.<br /> <pre style="background-color: #bbbbbb;">curl -o oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm </pre> 5. Instalacja pobranej bazy.<br /> Chodzi o to, że przed instalacją system musi sprawdzić zależności i stan niezbędnych bibliotek w razie potrzeby je doinstalować. Dodatkowo paczka ta tworzy niezbędnych użytkowników i wymagane grupy.<br /> <pre style="background-color: #bbbbbb;">yum -y localinstall oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm </pre> 6. Właściwa instalacja.<br /> <pre style="background-color: #bbbbbb;">yum -y localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm </pre> 7. Usuwanie pobranej wcześniej instalki<br /> <pre style="background-color: #bbbbbb;">rm oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm rm oracle-database-xe-18c-1.0-1.x86_64.rpm </pre> 8. Tworzenie i konfiguracja bazy<br /> Jeżeli uruchomimy domyślną instalację to instalator zbuduje CDB o nazwie XE z dodatkową jedną PDB o nazwie XEPDB1 z listenerem nasłuchującym na porcie 1521 oraz Enterprise Managerem Express na porcie 5500<br /> Jeżeli coś chcielibyśmy zmienić to w tym pliku /etc/sysconfig/oracle—xe–18c.conf można niektóre elementy dostosować.<br /> Proponuję zastosować domyślną instalację. W tym celu uruchamiamy następującą komendę:<br /> <pre style="background-color: #bbbbbb;">/etc/init.d/oracle-xe-18c configure </pre> W odpowiedzi dostajemy pytanie o hasło dla użytkowników SYS, SYSTEM i PDBADMIN. Tak więc wprowadzamy TAJNE_HASLO a następnie je potwierdzamy.<br /> Po kilku minutach proces tworzenia i konfiguracji bazy się kończy<br /> <br /> 9. Podłączenie do bazy.<br /> Aby tego dokonać użytkownik linuxowy z którego będzie próba podłączenia musi posiadać niezbędne zmienne środowiskowe. Aby je przypisać należy w terminalu wprowadzić następujące komendy: <br /> <pre style="background-color: #bbbbbb;">export ORACLE_SID=XE export ORAENV_ASK=NO . /opt/oracle/product/18c/dbhomeXE/bin/oraenv ORACLE_HOME = [] ? /opt/oracle/product/18c/dbhomeXE </pre> Docelowo proponuję aby dodać do .bash_profile odpowiednie wpisy aby po restarcie komputera wszystko było ustawione. <br /> <pre style="background-color: #bbbbbb;">export ORACLE_SID=XE export ORAENV_ASK=NO export ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE . /opt/oracle/product/18c/dbhomeXE/bin/oraenv PATH=$PATH:$ORACLE_HOME/bin </pre> 10. Ustawienie autostartu Oracle po restarcie systemu.<br /> Jeżeli chcemy aby nasza baza wstawała wraz systemem należy włączyć odpowiedni serwis. W tym celu uruchamiamy następującą komendę: <br /> <pre style="background-color: #bbbbbb;">systemctl daemon-reload systemctl enable oracle-xe-18c </pre> 11. Próba podłączenia się do bazy przez SQLPLUS-a: <br /> <pre style="background-color: #bbbbbb;">sqlplus sys/TAJNE_HASLO as sysdba </pre> Jeżeli widzisz znak zchęty sql&gt; to znaczy że wszystko zostało poprawnie zrobione : )http://apex.dbe.pl/2018/10/instalacja-oracle-xe-18c-na-linuxie.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))2tag:blogger.com,1999:blog-7531463720728239813.post-6400418765933945359Wed, 05 Sep 2018 06:00:00 +00002018-09-05T11:41:44.865+02:00Active DirectoryAPEXORACLEPL/SQLUwierzytelnianie użytkownika poprzez MS Active Directory Jedną z zalet korzystania z zewnętrznych dostawców tożsamości jest to, że użytkownik nie musi tworzyć i zapamiętywać hasła do kolejnej aplikacji. W tym artykule opisuję jak w szybki sposób utworzyć uwierzytelnianie z pomocą kontrolera domeny <b>MS Active Directory</b>.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSOF2X4vxeriTLeU6gM4NfUHhKh0U4q_RePdij-wCX_TU-e6ns4qXbV8x-hDN6En5iedbYDdTr-Rs0V-LIRpO-NVYRMk2G7FxQ8X1uOGSKcKMmRVeRnGU0Uc5Ylzh-F9YbuhN7MHVOouE/s1600/apex_ad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSOF2X4vxeriTLeU6gM4NfUHhKh0U4q_RePdij-wCX_TU-e6ns4qXbV8x-hDN6En5iedbYDdTr-Rs0V-LIRpO-NVYRMk2G7FxQ8X1uOGSKcKMmRVeRnGU0Uc5Ylzh-F9YbuhN7MHVOouE/s320/apex_ad.png" width="320" height="170" data-original-width="582" data-original-height="310" /></a></div><br /> W naszej funkcji skorzystamy z paczki <i>dbms_ldap</i>, dostępnej w bazie Oracle. Poniżej opis najistotniejszych fragmentów kodu funkcji.<br /> <br /> Aby móc naszą funkcję wykorzystać w Custom Authentication powinna ona przyjmować dwa parametry typu varchar2 <i>p_username</i> i <i>p_password</i> oraz zwracać typ boolean<br /> <pre style="background-color: #bbbbbb;">function my_ldap_auth( p_username in varchar2, p_password in varchar2 ) return boolean </pre>Zakładamy, że pełna nazwa naszej domeny to <i>my.domain.com</i>, krótka nazwa to <i>my</i>, kontroler domeny stoi pod adresem <i>192.168.0.1</i>, a konta użytkowników znajdują się w OU <i>Users</i><br /> <pre style="background-color: #bbbbbb;">&nbsp;&nbsp;&nbsp; ldap_host&nbsp;&nbsp;&nbsp;&nbsp; varchar2(256) := '192.168.0.1'; -- address of domain controller &nbsp;&nbsp;&nbsp; ldap_port&nbsp;&nbsp;&nbsp;&nbsp; varchar2(256) := '389'; -- default port of domain controller &nbsp;&nbsp;&nbsp; ldap_base&nbsp;&nbsp;&nbsp;&nbsp; varchar2(256) := 'OU=Users,DC=my,DC=domain,DC=com'; -- OU with Users &nbsp;&nbsp;&nbsp; l_dn_prefix&nbsp;&nbsp; varchar2(100) := 'my\'; -- short domain name &nbsp;&nbsp;&nbsp; l_dn_suffix&nbsp;&nbsp; varchar2(100) := '@my.domain.com'; -- long domain name </pre>Sprawdzamy, czy użytkownik podał hasło i odrzucamy uwierzytelnianie w przeciwnym wypadku<br /> <pre style="background-color: #bbbbbb;">&nbsp;&nbsp;&nbsp; if p_password is null or p_password = '' then return false; end if; </pre>Otwieramy połączenie do naszego kontrolera domeny<br /> <pre style="background-color: #bbbbbb;">&nbsp;&nbsp;&nbsp; dbms_ldap.use_exception := true; &nbsp;&nbsp; &nbsp;l_session := dbms_ldap.init( hostname =&gt;ldap_host, portnum&nbsp; =&gt; ldap_port ); </pre><b>Uwaga!</b> Użytkownik uwierzytelniając się w Active Directory może użyć trzech różnych z naszego punktu widzenia loginów: <i>UserPrincipalName</i>, <i>UserPrincipalName@FullDomainName</i> oraz <i>ShortDomainName\SamAccountName</i>, czyli np. <i>pawel</i>, <i>pawel@my.domain.com</i> oraz <i>my\pawp</i>. Taką wartość będzie również posiadał item <i>APP_USER</i>. Musimy zatem pamiętać, aby po uwierzytelnieniu znaleźć unikalny identyfikator użytkownika w aplikacji.<br /> <br /> Ze względów organizacyjnych w naszym systemie dopuściliśmy logowanie przy pomocy <i>SamAccountName</i>, czyli <i>pawp</i> zamiast <i>my\pawp</i> (dodatkowo wszystkie <i>SamAccountName</i> były inne niż <i>UserPrincipalName</i> i były 4 znakowe).<br /> <br /> Funkcja <i>dbms_ldap.simple_bind_s</i> zwraca wartość 0, gdy znajdzie użytkownika o podanym <i>Distinguished Name</i> i poprawnym haśle. Natomiast zwraca również 0 w przypadku, gdy nie podamy hasła w ogóle! Dlatego w jednym z poprzednich kroków sprawdzaliśmy, czy hasło nie jest puste.<br /> <br /> Kod obejmujący powyższe przypadki wygląda następująco<br /> <pre style="background-color: #bbbbbb;">&nbsp;&nbsp;&nbsp; if length(p_username)=4 &nbsp;&nbsp;&nbsp; then &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; retval := dbms_ldap.SIMPLE_BIND_S( ld&nbsp;&nbsp;&nbsp;&nbsp; =&gt; l_session &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , dn&nbsp;&nbsp;&nbsp;&nbsp; =&gt; l_dn_prefix||p_username &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , passwd =&gt; p_password ); &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if instr(p_username,'@') = 0 then &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; retval := dbms_ldap.SIMPLE_BIND_S( ld&nbsp;&nbsp;&nbsp;&nbsp; =&gt; l_session &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , dn&nbsp;&nbsp;&nbsp;&nbsp; =&gt; p_username|| l_dn_suffix &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , passwd =&gt; p_password ); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; retval := dbms_ldap.SIMPLE_BIND_S( ld&nbsp;&nbsp;&nbsp;&nbsp; =&gt; l_session &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , dn&nbsp;&nbsp;&nbsp;&nbsp; =&gt; p_username &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , passwd =&gt; p_password ); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; end if; &nbsp;&nbsp;&nbsp; end if; </pre>Gdy uwierzytelnienie się powiodło, będziemy zwracać wartość true<br /> <pre style="background-color: #bbbbbb;">&nbsp;&nbsp;&nbsp; l_authed := case when retval = 0 then true else false end; </pre>Odłączamy się od kontrolera domeny<br /> <pre style="background-color: #bbbbbb;">&nbsp;&nbsp;&nbsp; retval := dbms_ldap.unbind_s( ld =&gt; l_session ); </pre>Ostatecznie cała funkcja wygląda w następujący sposób: <a href="#" onclick="document.getElementById('apex3_code1').style.display='block';">Kliknij tutaj, aby rozwinąć:</a><br /> <br /> <div id="apex3_code1" style="display: none;"><pre style="background-color: #bbbbbb;">function mf_ldap_auth( p_username in varchar2, p_password in varchar2 ) return boolean is retval PLS_INTEGER; l_session dbms_ldap.session; ldap_host varchar2(256) := '10.10.0.1'; ldap_port varchar2(256) := '389'; -- default port ldap_base varchar2(256) := 'OU=RESORT,DC=domain,DC=ldap'; l_dn_prefix varchar2(100) := 'mf\'; -- domain, '\ l_dn_suffix varchar2(100) := '@domain.ldap'; l_not_authenticated varchar2(100) := 'Incorrect username and/or password'; l_authed boolean; BEGIN if p_password is null or p_password = '' then return false; end if; dbms_ldap.use_exception := true; l_session := dbms_ldap.init( hostname =>ldap_host, portnum => ldap_port ); if length(p_username)=4 then retval := dbms_ldap.SIMPLE_BIND_S( ld => l_session , dn => l_dn_prefix||p_username , passwd => p_password ); else if instr(p_username,'@') = 0 then retval := dbms_ldap.SIMPLE_BIND_S( ld => l_session , dn => p_username|| l_dn_suffix , passwd => p_password ); else retval := dbms_ldap.SIMPLE_BIND_S( ld => l_session , dn => p_username , passwd => p_password ); end if; end if; l_authed := case when retval = 0 then true else false end; retval := dbms_ldap.unbind_s( ld => l_session ); return l_authed; EXCEPTION when others then retval := dbms_ldap.unbind_s( ld => l_session ); apex_util.set_custom_auth_status ( p_status => l_not_authenticated ); return false; END; </pre></div>Zostaje jeszcze utworzyć Custom Authentication, gdzie jako funkcję uwierzytelniającą należy podać naszą funkcję my_ldap_auth.<br /> <br /> Nie zapominajmy jeszcze o utworzeniu stosownych ACL, aby nasza baza Oracle mogła połączyć się z kontrolerem domeny: <a href="#" onclick="document.getElementById('apex3_code2').style.display='block';">Kliknij tutaj, aby rozwinąć:</a><br /> <div id="apex3_code2" style="display: none;"><pre style="background-color: #bbbbbb;">begin dbms_network_acl_admin.create_acl ( acl => 'ad_my.xml', description => 'Access to my.domain.com domain controller', principal => 'APEX_USER', -- DB Schema (grantee) is_grant => true, privilege => 'connect', start_date => null, end_date => null ); dbms_network_acl_admin.assign_acl( acl => 'ad_my.xml', host => '192.168.0.1', lower_port => 389, upper_port => 389 ); DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( acl => 'ad_my.xml', principal => 'APEX_USER', -- DB Schema (grantee) is_grant => true, privilege => 'resolve', start_date => null, end_date => null ); end; </pre></div><br /> <br /> <br /> http://apex.dbe.pl/2018/09/uwierzytelnianie-uzytkownika-poprzez-ad.htmlnoreply@blogger.com (Paweł Prusinowski)3tag:blogger.com,1999:blog-7531463720728239813.post-1047558733334070056Tue, 10 Jul 2018 12:31:00 +00002018-07-10T14:31:52.860+02:00APEX 18.1MySQLrestSQLORACLE APEX z MySQLPodczas przeprowadzanych szkoleń dość często zdarzały nam się pytania od uczestników szkoleń: W jaki sposób podłączyć się do innych baz ? Mając to na uwadze oraz chwilę wolnego postanowiłem temat nieco rozpracować. Szukając najlepszego rozwiązania znalazłem klienta REST-owego dla MySQL-a oraz Postgres-a o nazwie <a href="http://restsql.org/doc/Overview.html">restSQL </a>: ). Po kilu dłuższych chwilach integracja zadziałała. Udało mi się wyświetlić dane z MySQL-a w raporcie interaktywnym a następnie przygotować formularz do edycji danych.<br /> <br /> <div style="text-align: center;"> Poniżej załączam wideo jak rozwiązanie działa.</div> <br /> <div class="separator" style="clear: both; text-align: center;"> <iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/Esyen1NXsbg/0.jpg" frameborder="0" height="460" src="https://www.youtube.com/embed/Esyen1NXsbg?feature=player_embedded" width="800"></iframe></div> <br /> <br /> <br /> <br /> <div style="text-align: center;"> Jeżeli jesteście zainteresowani szczegółami jak to zostało zrobione odsyłam do naszego angielsko-języcznego <b><a href="https://apexutil.blogspot.com/2018/07/oracle-apex-with-mysql.html" target="_blank">BLOGA</a></b></div> <div style="text-align: center;"> <br /></div> http://apex.dbe.pl/2018/07/oracle-apex-z-mysql.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-8859097660427299343Mon, 18 Jun 2018 06:47:00 +00002018-06-18T08:47:38.374+02:00Oracle 11g XEORACLE XEoracleradORACLE XE 18c coraz bliżej !W poprzednim tygodniu odbywała się jedna z największych imprez APEX-owych na świecie. KScope18. W tym roku miejscem spotkania był Orlando. Jak zawsze na takich imprezach oprócz wiedzy technicznej i oficjalnych wiadomości ze świata Oracle można uzyskać informację mniej oficjalne. Chyba najważniejszą taką informacją był przeciek o następnej wersji darmowej bazy Oracle XE.<br /> <br /> Pierwsza kwestia to nazwa. Całkiem prawdopodobne że baza będzie miała nazwę - #OracleRAD<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJb8gdaMWvH1_7gDZfOS3p6uORHZZhB2WXIyM4PDZcKY-1Bdg3sDahZZSwfyRCAhu6ACUK4SwOApZMt_yIywKT2NDYHDktc5J0za4JR6WPXazKVhMHhh7XNC97YzuWmGJHUA5iVqPd0gNc/s1600/15292359803001836227038.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="280" data-original-width="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJb8gdaMWvH1_7gDZfOS3p6uORHZZhB2WXIyM4PDZcKY-1Bdg3sDahZZSwfyRCAhu6ACUK4SwOApZMt_yIywKT2NDYHDktc5J0za4JR6WPXazKVhMHhh7XNC97YzuWmGJHUA5iVqPd0gNc/s1600/15292359803001836227038.png" /></a></div> <br /> <br /> Druga kwestia to funkcjonalność, tutaj zapowiedzi są zachwycające. Co się zmieni w stosunku do 11g XE:<br /> <br /> Ograniczenia:<br /> - Obsługa do 2 GB RAM<br /> - Pojemność 12 GB<br /> <br /> Funkjonalność:<br /> - Multitenant (3 PDB)<br /> - Advanced compression<br /> - Advanced Index Compression<br /> - Prefix Compression<br /> - Bit-mapp index<br /> - Transportable tablepsaces<br /> - Summary management<br /> - Shared queues<br /> - In-memory column store<br /> - In-memory aggregation and attribute clustering<br /> - Oracle Partitioning<br /> - Advanced Analytics<br /> - Column level encryption and Tablespace encryption<br /> - Database Vault, Virtual Private Database, Redaction, Real application security, Fine-grained auditing, Advanced security<br /> - Java in the Database and all related features<br /> - Flashback Table and Database<br /> - Online index rebuild, index-organized table organization<br /> - Table redefinition<br /> - Client side Query Cache<br /> - Query Results Cache<br /> - PL/SQL function Result Cache<br /> - Oracle Spatial<br /> - Graph and semantic technology<br /> <br /> <br /> Podsumowując XE 18c (#oraclerad) bardziej będzie bratem wersji Enterprise a nie jak do tej pory wersji Standard...<br /> <br /> <br /> Tak więc czekamy z nieeeeeeeeeeeecierpliwością !http://apex.dbe.pl/2018/06/oracle-xe-18c-coraz-blizej.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))1tag:blogger.com,1999:blog-7531463720728239813.post-5478910973156712516Thu, 17 May 2018 11:04:00 +00002018-05-17T13:04:33.703+02:00Podłączanie plików jQuery UI w APEX 5.0+<div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="margin-left: 1em; margin-right: 1em; text-align: center;"> <br /></div> <div class="separator" style="margin-left: 1em; margin-right: 1em; text-align: center;"> <img border="0" data-original-height="300" data-original-width="800" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4tg9R0q8kCcdLLtl2TeMQ799sLBU9MVy6-8Zpv8kvgwAbxoRukr1RTKyTF49f_PB0lRJOCHQRr6vz75o7F7YZ1Ue9_bQwYFxIXMUH5gzk2eUMIMQj5E2KyVx6WwhVOWeP1m-cD7KZTs8/s320/apex-logo.png" width="320" /><img border="0" data-original-height="592" data-original-width="608" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6BHkOms9tpE-pWzAqM3hs7GJbrq-73Od45kbhC3BwjWu2HOwubYHf32olbUeZDRVFZeNF3U4eHKdl13G64SAGJzJ-cC5w2BNqZ_I8Vf6fgj9Y1SYKuxAdQgfBd18GaMVTFnZGsY9Q8cA/s200/jqueryui.png" width="118" /></div> <br /> Najprostszym podłączeniem plików jQuery UI w APEX jest wykorzystanie substitution string:<br /> <br /> #JQUERYUI_DIRECTORY#<br /> <br /> Link ten będzie działał zawsze, nawet po zmianie wersji jQuery UI (nr wersji jest zawarty w substitution string)<br /> <br /> Dla przykładu podłacznie akordeona na stronie:<br /> <br /> <br /> #JQUERYUI_DIRECTORY#ui/jquery.ui.accordion.js<br /> <br /> Powyższy link można dopełnić substitutions strings dla wersji MIN pliku i dodać informację o versji APEX (przydatne podczas zmiany wersji APEX - spowoduje ponowne załadowanie pliku przez przegladarkę):<br /> <br /> #JQUERYUI_DIRECTORY#ui/#MIN_DIRECTORY#jquery.ui.accordion#MIN#.js?v=#APEX_VERSION#<br /> <div> <br /></div> <div> <br /></div> <div> Powyższe da rezultat w postaci takiego kodu na stronie:&nbsp;</div> <br /> &lt;script type="text/javascript" src="/i/libraries/jquery-ui/1.10.4/ui/jquery.ui.accordion.js?v=5.1.0.00.45"&gt;&lt;/script&gt;<br /> <br /> <br /> <br /> <br />http://apex.dbe.pl/2018/05/podaczanie-plikow-jquery-ui-w-apex-50.htmlnoreply@blogger.com (Piotr Jasiński (APEXUTIL.com / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-7483778722353265970Thu, 10 May 2018 06:00:00 +00002018-05-10T12:41:13.828+02:00APEXJavaScriptPL/SQLWynik zapytania SQL jako array w JavaScriptDzisiaj powstała potrzeba przeniesienia prostego, słownikowego wyniku zapytania SQL i odwołania się do niego poprzez JavaScript. Rezultat poszukiwań okazał się nad wyraz prosty - region typu PL/SQL.<br /> (English version of this post available <a href="https://apexutil.blogspot.com/2018/05/sql-query-result-as-javascript-array.html" target="_blank">here</a>). <br /> <br /> Tutaj wideo z przykładowym użyciem funkcjonalności. Zmiana wartości na Select List powoduje wyświetlenie Checkbox przy wierszach, na których można daną akcję wykonać:<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dwFwJErT8JHDYcCDrqBAcT2kYbmLK3E5l8wJ737HU4NAihZ1j1Mcg8y4f_HLC_dPUZSishr19dWlJVcIx1H7A' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div> <br /> <br /> Kod regionu PL/SQL tworzący array:<br /> <pre style="background-color: #bbbbbb;">htp.p('&lt;script&gt;'); htp.p('var actions = [];'); for x in (select ID, STATUS_FROM from ACTIONS ) loop htp.p('actions[' || x.id || '] = "' || x.status_from || '";'); end loop; htp.p('&lt;/script&gt;'); </pre> <br /> Kod JavaScript podpięty pod akcję dynamiczną wykorzystujący powyższy array:<br /> <pre style="background-color: #bbbbbb;">$("input[name='f02']").each(function(){ if (this.getAttribute("status") == actions[$v("P18_ACTION")]) { this.style.display = "block"; } else { this.style.display = "none"; } }); </pre> <br />http://apex.dbe.pl/2018/05/wynik-zapytania-sql-jako-array-w.htmlnoreply@blogger.com (Paweł Prusinowski)0tag:blogger.com,1999:blog-7531463720728239813.post-1342514897151379445Wed, 28 Mar 2018 13:30:00 +00002018-03-28T15:30:25.926+02:00Amazon AlexaAPEXORDSORACLE - Amazon Alexa integration (Part 2)<div style="text-align: center;"> <a href="https://apexutil.blogspot.com/2018/03/oracle-apex-amazon-alexa-integration_28.html" target="_blank"><span style="font-size: large;">English ver. go there</span></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> <iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/zwAxv1TqDq4/0.jpg" src="https://www.youtube.com/embed/zwAxv1TqDq4?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div> <br /> <br /> Prze chwilą opublikowałem drugą (ostatnią) część wpisu na temat integracji Oracle z asystentem głosowym ALEX-ą. Wpis dostępny jest na naszym angielsko języcznym blogu&nbsp;https://apexutil.blogspot.com/2018/03/oracle-apex-amazon-alexa-integration_28.html.<br /> <br /> Przy okazji zachęcam do śledzenia nas na Twitterze. Chcemy bardziej aktywnie wykorzystywać właśnie Twittera tak więc zacznij nasz obserwować już dziś :) <span style="font-family: Arial, Helvetica, sans-serif;"><b>@<a href="https://twitter.com/ApexUtil" target="_blank">ApexUtil </a>@<a class="DashboardProfileCard-screennameLink u-linkComplex u-linkClean js-nav" href="https://twitter.com/ApexUtil_andrew" rel="noopener" style="background: rgb(255, 255, 255); color: #abb8c2; outline: 0px; padding-right: 5px; text-decoration-line: none !important;"><span class="username u-dir" dir="ltr" style="color: #657786; direction: ltr !important; unicode-bidi: embed;"><span class="u-linkComplex-target" style="text-decoration-line: underline !important;">ApexUtil_andrew</span></span></a></b></span><br /> <br /> <br />http://apex.dbe.pl/2018/03/oracle-amazon-alexa-integration-part-2.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-2036323646189423447Fri, 23 Mar 2018 15:56:00 +00002018-03-23T16:56:37.274+01:00APEXUTIL Blog: Oracle APEX – Amazon ALEXA integration WITHOUT Amazon Lambda ! (PART 1)<br /><br /> <h1 class="title entry-title" itemprop="name" style="background-color: white; color: #333333; display: table-cell; font-family: &quot;Helvetica Neue Light&quot;, HelveticaNeue-Light, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-weight: normal; margin: 0px; padding: 0px 40px 0px 0px; position: relative; text-align: center; vertical-align: middle; width: 710px;"> <a href="http://apexutil.blogspot.com/2018/03/oracle-apex-amazon-alexa-integration.html" target="_blank"><span style="font-size: x-large;"><span style="outline-color: initial; outline-width: initial; transition: color 0.3s;">G</span>o to english post blog</span></a></h1> <br /> <br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilP-aAU1F2bdSoKk5d8SRyc9F1U1TM5cnRmgD6JhPuJ1LNgiHayFlzQ2kfh2mogjTU5RcftoYAfI-3JbAGkgGL1xHOXl_cUjKdUV_HR0qhfvmfhSRBqAzzae-zTKLwpzvnFdWo-t5giVaJ/s1600/schema.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="733" data-original-width="847" height="552" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilP-aAU1F2bdSoKk5d8SRyc9F1U1TM5cnRmgD6JhPuJ1LNgiHayFlzQ2kfh2mogjTU5RcftoYAfI-3JbAGkgGL1xHOXl_cUjKdUV_HR0qhfvmfhSRBqAzzae-zTKLwpzvnFdWo-t5giVaJ/s640/schema.JPG" width="640" /></a></div> <br /> <br /> <div style="text-align: center;"> <br /></div> <div style="text-align: center;"> <span style="text-align: start;">Tak jak wspomniałem pod koniec zeszłego roku, chcemy bardziej się otworzyć na świat. Między innymi publikując angielsko-języcznego bloga. Dziś własnie zainicjowałem pierwszy wpis:</span></div> <div style="text-align: center;"> <br /></div> <div style="text-align: center;"> Jest to pierwszy etap w niedługim czasie odpalimy nowy brand nakierowany na zagranice.</div> <br /> <br />http://apex.dbe.pl/2018/03/apexutil-blog-oracle-apex-amazon-alexa.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-5174463818193617981Wed, 07 Mar 2018 08:16:00 +00002018-03-07T09:16:02.316+01:00APEX 5.1APEX PluginrozszerzeniaNowe rozszerzenie Chrome do APEX-aWczoraj Insum udostępnił nowe rozszerzenie do Chrome. Jest to już drugie rozszerzenie na rynku usprawniające pracę z APEX Builderem.<br /> Teraz mój Chrome wygląda tak&nbsp; : )<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiZ3fyflv9jTgdt6l87mgWUX6DDGaNawCeQIz1VMDsstAWvm5FsZkFjdonJgXLDEalf2lGoYUFlL_6xOrXPB9Ei73bjkLyABcd-3mN46lWH45jKwYpx2eEDhYHDk0KasRaHcUA_Qc4Akrs/s1600/Przechwytywanie.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="136" data-original-width="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiZ3fyflv9jTgdt6l87mgWUX6DDGaNawCeQIz1VMDsstAWvm5FsZkFjdonJgXLDEalf2lGoYUFlL_6xOrXPB9Ei73bjkLyABcd-3mN46lWH45jKwYpx2eEDhYHDk0KasRaHcUA_Qc4Akrs/s1600/Przechwytywanie.JPG" /></a></div> <br /> <br /> <br /> <br /> Dla wszystkich, którzy nie wiedzą o co chodzi. Rozszerzenia przeglądarkowe dodają funkcję, które nie są dostępne w technologii webowej, bądź producent (Oracle) zapomniał je zaimplementować. Np. skróty klawiszowe, kolorowanie składni, uzupełnianie składni... itp.<br /> <br /> Szczerze, nie wyobrażam sobie teraz pracy bez nich...<br /> <br /> <div style="text-align: center;"> O nowym dodatku można poczytać <a href="https://www.insum.ca/get-ahead-insum-apex-pro/?platform=hootsuite" target="_blank">tutaj</a>.</div> <br /> Przy okazji tego wpisu zapowiem, iz od kilku tygodni pracujemy na nowym Pluginem do APEX-a. Plugin będzie wspierał pracę a plikami :)http://apex.dbe.pl/2018/03/nowe-rozszerzenie-chrome-do-apex-a.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-2108579007656902859Fri, 23 Feb 2018 11:01:00 +00002018-06-29T11:25:26.417+02:00APEX Dialog - Wyłącz zamykanie okna przy pomocy Przycisku Escape<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcujdE9-rQNziXXkQtCk-SzO-_L46gy46HCJ0fLQpfRXuX2BgQN-UqyllhF_obXssQpAq_n9X72X22GGkzh1ZAnB4qBSYx7At-6beiUVC6d1OGjlDABYdZIdQ3OnTvFL-4oQisJZ8c_I0/s1600/escape0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="545" data-original-width="798" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcujdE9-rQNziXXkQtCk-SzO-_L46gy46HCJ0fLQpfRXuX2BgQN-UqyllhF_obXssQpAq_n9X72X22GGkzh1ZAnB4qBSYx7At-6beiUVC6d1OGjlDABYdZIdQ3OnTvFL-4oQisJZ8c_I0/s320/escape0.png" width="320" /></a></div> <br /> <br /> Od jakiegoś czasu borykamy się z zamykaniem okienek dialogowych z pominięciem logiki programu - zamiast klikania na przycisk Cancel na dole strony użytkownicy robią to przy pomocy X w oknie dialogowym. Problem z X można rozwiązać przy pomocy kawałka CSS na stronie, z której otieramy okienko (np. .js-noclose .ui-dialog-titlebar-close {display: none } ).&nbsp; Zamknięcie dialogu przy pomocy przycisku Escape wydaje się gorsze.<br /> Nie taki diabeł straszny. Wystarczy we właściwościach strony w sekcji Dialog w polu Attributes dodać następujący kod: "closeOnEscape: false" jak na poniższym obrazku:<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJaDjGR185GhdT5TKsQjlOQHqEZsMt9U-kzlSvo2J1jfmOkfCR4lM5SLsldj8qeEg3uydQIAp2Kqnu_YNg0MhacqtjW3voOEnQUO1VWYPOSTR6M0F5LRanWCh8KCAoOYOeFjPB4OqLcDk/s1600/escape.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="510" data-original-width="633" height="257" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJaDjGR185GhdT5TKsQjlOQHqEZsMt9U-kzlSvo2J1jfmOkfCR4lM5SLsldj8qeEg3uydQIAp2Kqnu_YNg0MhacqtjW3voOEnQUO1VWYPOSTR6M0F5LRanWCh8KCAoOYOeFjPB4OqLcDk/s320/escape.png" width="320" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> </div> <br /> <br /> <br /> <br /> <br /> <br />http://apex.dbe.pl/2018/02/apex-dialog-wyacz-zamykanie-okna-przy.htmlnoreply@blogger.com (Piotr Jasiński (APEXUTIL.com / DBE))1tag:blogger.com,1999:blog-7531463720728239813.post-668008532971849148Thu, 28 Dec 2017 11:50:00 +00002017-12-28T12:50:30.925+01:00APEX 5.2plAPEX 5.2 EA już dostępny !<div class="separator" style="clear: both; text-align: center;"> </div> Wszyscy się relaksujemy w okresie międzyświątecznym a Oracle ciężko pracuje... : ) Właśnie udostępnili APEX-a 5.2 Early Adopter. Wersja EA jest nie do ściągnięcia, można jedynie ją testować na stronie https://apexea.oracle.com/.<br /> <br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <img border="0" data-original-height="338" data-original-width="1145" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4vuwtcgnHx8cKbopjGI79A5jOya62EU2Pd15bxmoOat7B5BZAFQjn7ES_VWtiy05_0i3COvW0Tfj9KhRAn9W9iS34a2ppx46ECRLiuy1BMgW8UnwLU1F_ZBfG_S0ssqx9V01FBKEGRCl9/s640/Przechwytywanie.JPG" width="640" /><span id="goog_2028858275"></span><a href="https://www.blogger.com/"></a><span id="goog_2028858276"></span><span id="goog_2028858260"></span><a href="https://www.blogger.com/"></a><span id="goog_2028858261"></span></div> <br /> <br /> Co do nowych funkcji to duży nacisk poszedł w rozbudowanie funkcjonalności opartych o WebSerwisy. Teraz w wielu miejscach jako źródło danych będzie można oprócz SQL-a podawać WebSerwisy... Mocno został rozbudowany region typu Tree (do tej pory był nieco traktowany po macoszemu). Oczywiście wprowadzono nieco zmian w page designerze, w wizardach... no i odświeżono dokumentację oraz poszczególne biblioteki..<br /> O wszystkim można przeczytać tutaj:&nbsp;<a href="https://apex.oracle.com/pls/apex/f?p=520052:FEATURES:::NO:::" target="_blank">https://apex.oracle.com/pls/apex/f?p=520052:FEATURES:::NO:::</a><br /> <br /> Tak więc jak ktoś nie idzie na imprezę sylwestrową to jest co robić&nbsp; :)http://apex.dbe.pl/2017/12/apex-52-ea-juz-dostepny.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-6510064832284813706Wed, 27 Dec 2017 21:55:00 +00002017-12-27T22:55:17.951+01:00APEX 5.1SzkoleniaSzkolenie w RzeszowieTegoroczne szkolenia podsumowuję bardzo dobrze, mieliśmy okazję odwiedzić nowe miejsca, poznać nowych developerów ORACLE APEX.... wszystko wybornie.<br /> Natomiast jeżeli chodzi o Rzeszów to muszę to stanowczo podkreślić... tam jest naprawdę bardzo DOBRZE !<br />Jeszcze raz pozdrawiam ekipę z Rzeszowa !<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzrufOy8pfal8dboj6XUIkdmbuqZ2ipPV8XuFhY0OxnrtWlgneL1qGAKfQrdQtGBsehprsWXs5A8Nj02VtX0AgtbE1Yq0Y_oIRcWtukLCZ8WLLmKmFDdmxbXZNQhEpRi4qgWK42xFK5i6U/s1600/DSC_0538.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1201" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzrufOy8pfal8dboj6XUIkdmbuqZ2ipPV8XuFhY0OxnrtWlgneL1qGAKfQrdQtGBsehprsWXs5A8Nj02VtX0AgtbE1Yq0Y_oIRcWtukLCZ8WLLmKmFDdmxbXZNQhEpRi4qgWK42xFK5i6U/s400/DSC_0538.JPG" width="400" /></a><br />Te szerokie plecy to Stach ; )</div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: justify;"> Nowy rok, to nowe wyzwania, nowe projekty i pomysły... Szkolenia muszą, poczekać na drugą połowę roku... po prostu taka jest specyfika i sezonowość.. w każdym bądź razie jeszcze raz wszystkim dziękujemy za miłe przyjęcia i profesjonalny stosunek.</div> <div class="separator" style="clear: both; text-align: justify;"> <br /></div> <div class="separator" style="clear: both; text-align: justify;"> <br /></div> <div class="separator" style="clear: both; text-align: justify;"> <br /></div> http://apex.dbe.pl/2017/12/szkolenie-w-rzeszowie.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0Rzeszów, Polska50.0411867 21.99911959999997249.877899199999995 21.676396099999973 50.2044742 22.32184309999997tag:blogger.com,1999:blog-7531463720728239813.post-7416346904346230945Thu, 07 Dec 2017 08:41:00 +00002017-12-07T09:41:38.899+01:00APEX 5.1SzkoleniaSzkolenie - relacjaGrudzień jest najgorętszym okresem jeżeli chodzi o szkolenia. W tym roku szykuje się rekord... blisko 3 tygodnie ciągle w terenie Od wczoraj Szczecin.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRMzTvmgnwURYpExhry3Ut06XlptVJDWuajE7FCVyHX3HJhlg5ZwdnIpGLOOvNaViiNfX9v5tJBKV71blUkAXBKL1A_u5i3mEl_AW_azgMX0BphK2MSc8FzkpARTBSNNUQlyTLH3qts9ud/s1600/DSC_0529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1201" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRMzTvmgnwURYpExhry3Ut06XlptVJDWuajE7FCVyHX3HJhlg5ZwdnIpGLOOvNaViiNfX9v5tJBKV71blUkAXBKL1A_u5i3mEl_AW_azgMX0BphK2MSc8FzkpARTBSNNUQlyTLH3qts9ud/s400/DSC_0529.JPG" width="400" /></a></div> <br /> Przyszły tydzień Rzeszów...http://apex.dbe.pl/2017/12/szkolenie-relacja.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0Szczecin, Polska53.4285438 14.55281160000004153.1258018 13.90736460000004 53.7312858 15.198258600000042tag:blogger.com,1999:blog-7531463720728239813.post-1450523392027360556Tue, 31 Oct 2017 07:00:00 +00002017-10-31T08:00:19.678+01:00Wyróżnianie wierszy i kolumn w raporcie<div dir="ltr" id="docs-internal-guid-cf057fdd-586e-24ac-5984-7d406ca7538b" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Funkcjonalność Highlight w Interactive Report pozwala zmienić kolor tekstu i tła wiersza lub komórki, w zależności czy wiersz spełnia określone przez nas wymagania. Jednak co w przypadku, gdy mamy zwykły raport, a sama zmiana kolorów nam nie wystarcza?</span></div> <div style="text-align: justify;"> <br /></div> <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">W poniższym filmie pokazujemy, jak w kilku prostych krokach dodać podświetlanie odpowiedniego wiersza w klasycznym raporcie.</span></div> <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/7KxpErVViG4/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/7KxpErVViG4?feature=player_embedded" width="320"></iframe></div> <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <br /></div> <div style="text-align: justify;"> <br /></div> <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Bezpośredni link do filmu znajduje się <a href="https://youtu.be/7KxpErVViG4" target="_blank">tutaj</a>.</span></div> http://apex.dbe.pl/2017/10/wyroznianie-wierszy-i-kolumn-w-raporcie.htmlnoreply@blogger.com (Paweł Prusinowski)1tag:blogger.com,1999:blog-7531463720728239813.post-2646472223856531184Fri, 27 Oct 2017 06:00:00 +00002017-10-27T08:00:01.639+02:00Nowa wersja JasperReportsIntegration 2.4.0 dla APEX-aPrzedwczoraj otrzymałem od Dietmara Austa maila z informacją, iż udostępnił nową wersję moduły raportującego opartego na silniku Jasper Report 6.4.1. Jest to nasz najbardziej ulubiony moduł raportujący.<br /> <br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu0KAhNGRp1VN5tSj_hcBWGAvwWJdI6AHw89X2Lyvapp-xF2XEZeSs8gqoq7HYyqy1gJyn8xr42M2XrOfYIQiXdvR0HQ0Oy2H7X6Yeityi9AOZ4IWEeoS5vr2mXBMTES3pn-jHxanCXglo/s1600/Jasper-report-1024x367.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="367" data-original-width="1024" height="142" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu0KAhNGRp1VN5tSj_hcBWGAvwWJdI6AHw89X2Lyvapp-xF2XEZeSs8gqoq7HYyqy1gJyn8xr42M2XrOfYIQiXdvR0HQ0Oy2H7X6Yeityi9AOZ4IWEeoS5vr2mXBMTES3pn-jHxanCXglo/s400/Jasper-report-1024x367.png" width="400" /></a></div> <br /> Jego zalety to API w PL/SQL, świetny builder, brak ograniczeń co do oczekiwanych efektów - można naprawdę zrobić wszystko.<br /> Oczywiście są i wady... tzn ja widzę jedną poważną wadę: generowanie raportu w innej sesji oracle, a co za tym idzie brak dostępu do danych sesyjnych APEX-a. Trzeba to obchodzić na różne sposoby co nie jest zawsze łatwe.<br /> <br /> Dietmar przy okazji poinformował iż uruchamia swój Blog pod nową domeną&nbsp;&nbsp;<a href="http://dietmaraust.com/" target="_blank">http://dietmaraust.com/</a>. Tam też można pobrać najnowszą wersję&nbsp;JasperReportsIntegration 2.4.0http://apex.dbe.pl/2017/10/nowa-wersja-jasperreportsintegration.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-4199552116933797744Wed, 25 Oct 2017 06:00:00 +00002017-10-25T08:00:30.491+02:00ORACLE XE 18c czy to możliwe ?Ostatnimi dniami w świecie Oracle można było usłyszeć bardzo "elektryzujący" news. A mianowicie informacje na temat nowej wersji ORACLE XE ! Od razu chciałbym zaznaczyć, że jest to zbieranina informacji z wielu źródeł mniej lub bardziej wiarygodnych... Osobiście oceniam ten "szum"na około 60% wiarygodności...<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhehvT4u2l3GV6YAaiMI4KWzwjBdkvs4RIAtcdiauP-paemK_GGCN3lfV0YsAIPv5_fu7eB_HmE7BmXqKrr5OaHLfdejIHzKSRx6Wvot8dssSPRkXGxXXV0r5u7Cbr3mO8i73p9ytk0PvxA/s1600/Przechwytywanie.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="100" data-original-width="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhehvT4u2l3GV6YAaiMI4KWzwjBdkvs4RIAtcdiauP-paemK_GGCN3lfV0YsAIPv5_fu7eB_HmE7BmXqKrr5OaHLfdejIHzKSRx6Wvot8dssSPRkXGxXXV0r5u7Cbr3mO8i73p9ytk0PvxA/s1600/Przechwytywanie.JPG" /></a></div> <br /> <br /> Kilka słów o pochodzeniu tych informacji:<br /> Jeden ze znanych blogerów Oracle-owych&nbsp;Morten Braten, zebrał wszystkie newsy jakie do tej pory można było usłyszeć/znaleźć w sieci na temat Oracle XE i poprosił o komentarz Geralda Venzl-a z Oracle. O dziwo Gerald to dość dokładnie skomentował :).<br /> <br /> Tak więc poniżej podaję co zostało potwierdzone:<br /> <ul> <li>Następna wersja Oracle XE będzie miała nazwę 18c (zgodnie z nową nomenklaturą wersji Oracle).</li> <li>Powinna być wydana między marcem a sierpniem 2018</li> <li>Następne wersję powinny wychodzić co roku czyli następna po 2018 będzie miała nazwę 19c itp.</li> <li>Równolegle zostaną wydane wersje na Windowsa i Linuxa</li> <li>Będą nowe limity: 2GB pamięci RAM, 2CPU, 12GB danych (będzie dostępna opcja kompresji, która realnie pozwoli utrzymać nawet 40GB), możliwość uruchomienia 4 pluggable database</li> <li>Nowe XE będzie zawierała sporo opcji z wersji EE !</li> <li>Dalej będzie można jej używać na potrzeby developerskie jak i produkcyjne</li> <li>Nie będzie dostępnego supportu ani patchy</li> </ul> <div> A co ja o tym wszystkim myślę. A no wygląda to zbyt różowo, żeby było prawdziwe : ) Jeżeli to wszystko przejdzie i nie będzie w tym, żadnych "kruczków" to będę wniebowzięty... no i pewnie cały dział ORACLE Polska będzie musiał szukać nowej roboty...;)...&nbsp;</div> <div> <br /></div> <div style="text-align: center;"> <a href="https://ora-00001.blogspot.com/2017/10/oracle-xe-12c-becomes-oracle-xe-18c.html" target="_blank">TUTAJ </a>można przeczytać oryginalną informację.</div> <div> <br /></div> <div> <br /></div> <div> <br /></div> <br /> <br />http://apex.dbe.pl/2017/10/oracle-xe-18c-czy-to-mozliwe.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-221832993533736606Fri, 20 Oct 2017 06:00:00 +00002017-10-20T12:06:34.168+02:00APEX 5.1SzkoleniaJuż za miesiąc - Szkolenie ORACLE APEX 5.1.3 !Został jeszcze miesiąc do szkolenia... tak więc wszystkim niezdecydowanym kilka faktów:<br /> <br /> Dlaczego nasze szkolenia są lepsze od konkurencji a szczególnie od firm, które szkolenia APEX-owe traktują jako jedne z setki innych proponowanych.<br /> Nasi trenerzy to aktywni APEX-owi developerzy, dla których prowadzenie szkolenia to pewnego rodzaju frajda. Podczas szkoleń posługują się realnymi przykładami, wchodzą w dyskusję z uczestnikami. Nie stronią od odpowiedzi na trudne pytania. <b>MY NIE MÓWIMY O APEX-ie <a href="http://apex.dbe.pl/2017/06/i-cant-get-no.html" target="_blank">MY GO UŻYWAMY !</a></b><br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgV3x-nWJ6-dh2a-9-9ufd6z4TLLXaLPRA9Hijx5oJzO40UjI5ncJrTbRB_9oVnBP8azDPxtHMTtPPdefBpS9qGM2FfXvbIP2x9Vp2gjLK90i6JHlFLL2qvWcD7T6ZPa9h4j4O3HAIn3-l/s1600/Przechwytywanie.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="238" data-original-width="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgV3x-nWJ6-dh2a-9-9ufd6z4TLLXaLPRA9Hijx5oJzO40UjI5ncJrTbRB_9oVnBP8azDPxtHMTtPPdefBpS9qGM2FfXvbIP2x9Vp2gjLK90i6JHlFLL2qvWcD7T6ZPa9h4j4O3HAIn3-l/s1600/Przechwytywanie.JPG" /></a></div> <br /> <br /> Na pewno jednym z ważniejszych elementów podczas wyboru firmy szkoleniowej jest posiadane portfolio. Tak to u nas wygląda:<br /> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> </div> <ul> <li>Ministerstwo Finansów RP</li> <li>Izba skarbowa Warszawa</li> <li>PKO BP</li> <li>Komenda Główna Policji</li> <li>T-mobil</li> <li>Uniwersytet w Poznaniu</li> <li>Pratt &amp; Whitney</li> <li>SGL Group</li> <li>BOSCH</li> <li>Izba Skarbowa Poznań</li> <li>Geo Polis</li> <li>PGNiG</li> <li>Państwowy Instytut Geologiczny</li> <li>Wojewódzki Inspektorat Weterynaryjny</li> <li>Popay</li> <li>Enea</li> <li>PSE</li> <li>Vattenfall</li> <li>SHH</li> <li>BZWBK</li> <li>PKO Bank Polski</li> <li>Izba Skarbowa Szczecin</li> <li>Millenium Leasing</li> <li>Winuel S.A.</li> <li>VB Leasing</li> <li>HDI asekuracja</li> <li>Impel S.A.</li> <li>Wspólny Rynek</li> <li>AMiR</li> <li>RONAL Polska</li> </ul> <o:p></o:p><br /> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> <div class="MsoNormal" style="line-height: normal; margin-bottom: 6.0pt; margin-left: 17.85pt; margin-right: 0cm; margin-top: 6.0pt;"> <o:p></o:p></div> Oczywiście jest to tylko część firm/instytucji, które szkoliliśmy... wszystkie powyższe firmy przeszły u nas kilkudniowe szkolenia. Spora ich część kilkukrotnie u nas zamawiała szkolenie. Są też "rodzynki" dla których realizowaliśmy kilkutygodniowe szkolenie... chyba nawet ciężko taki przypadek nazwać szkoleniem. Pokusiłbym się raczej o stwierdzenie że to był semestr z APEX-a.<br /> <br /> Nasza główna strona jest w całości zrealizowana w APEX-ie <a href="http://www.dbe.pl/">www.dbe.pl</a> , nasze aplikacje apex-owe wykorzystywane są przez największe korporacje międzynarodowe, stworzyliśmy i moderujemy jedyne Polskie Forum APEX-owe <a href="http://forumapex.dbe.pl/">forumapex.dbe.pl</a>. Dostarczamy jako jedyni w Polsce hosting APEX-owy <a href="http://www.apexhosting.pl/">www.apexhosting.pl</a>. O reszcie dowiecie się na szkoleniu.<br /> <br /> <b style="text-align: center;"><span style="font-size: large;">Szczegóły i formularz zgłoszeniowy dostępne są&nbsp;<a href="http://forumapex.dbe.pl/apex/f?p=DBE:SZKOLENIA_APEX:0">TUTAJ</a>.</span></b><br /> <br />http://apex.dbe.pl/2017/10/juz-za-miesiac-szkolenie-oracle-apex-513.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-811448880702983933Tue, 10 Oct 2017 06:20:00 +00002017-10-10T08:26:30.329+02:00Operacje na wielu pozycjach raportu w APEX 5.1<br /> <br /> <span id="docs-internal-guid-61c2e43b-ebd0-0ddc-caa3-313b266886ab" style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Zapewne wielokrotnie byliście w sytuacji, gdy użytkownik widząc raport, chciał wykonać pewne operacje na wielu wierszach w tym raporcie, typu usuwanie czy zatwierdzanie. Przeważnie z pomocą szedł tutaj Tabular Form, jednak ze względu na jego </span><span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">CRUDowy</span><span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> charakter nie pozwalał na wszystko co sobie zaplanowaliście.</span><br /> <br /> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Postanowiliśmy rozwinąć zagadnienie opisane w poście <a href="http://apex.dbe.pl/2014/12/checkbox-na-raporcie-i-paginacja.html">Checkbox na raporcie i paginacja</a>. Nagraliśmy film, który krok po kroku pokazuje jak utworzyć taką funkcjonalność na różnym stopniu zaawansowania.</span><br /> <div class="separator" style="clear: both; text-align: center;"><br /> </div><div style="text-align: center;"><iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/T-LXRMWQbPk/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/T-LXRMWQbPk?feature=player_embedded" width="320"></iframe></div><br /> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"><br /> </span> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Bezpośredni link do filmu znajduje się <a href="https://youtu.be/T-LXRMWQbPk">TUTAJ</a>.</span><br /> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"><br /> </span> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Poniżej znajdziesz kod wykorzystany w powyższym filmie. <a href="#" onclick="document.getElementById('apex1_code').style.display='block';">Kliknij tutaj, aby rozwinąć:</a><br /> </span> <br /> <div id="apex1_code" style="display: none;"><b>Kod raportu:</b><br /> <pre style="background-color: #bbbbbb;">select dat.DAT_ID, dat.DAT_SYMBOL, APEX_ITEM.CHECKBOX2( p_idx =&gt; 2, p_value =&gt; dat.DAT_ID, p_checked_values =&gt; c.n001 ) checkbox from DEL_ACTION_TEMPLATES dat left join apex_collections c on dat.DAT_ID = c.n001 and c.collection_name = 'P5_CHECKBOX_02' </pre><br /> <br /> <b>Akcja dynamiczna Add: </b><br /> <pre style="background-color: #bbbbbb;">apex.server.process("UpdateCheckboxCollection", { x01: this.triggeringElement.value, x02: this.triggeringElement.checked }); </pre><br /> <b>Akcja dynamiczna Add all: </b><br /> <pre style="background-color: #bbbbbb;">var id = []; var checked = []; $("input[name='f02']").each(function(){ if (this.checked != $("#checkall")[0].checked) { id.push(this.value); checked.push($("#checkall")[0].checked); this.checked = $("#checkall")[0].checked; } }); apex.server.process("UpdateAllCheckboxCollection",{ f01: id, f02: checked }); </pre><br /> <b>Process Show submited: </b><br /> <pre style="background-color: #bbbbbb;">select listagg(n001,':') within group (order by n001) into :P5_SUBMITED from apex_collections where collection_name = 'P5_CHECKBOX_02'; for x in (select n001 from apex_collections where collection_name = 'P5_CHECKBOX_02') loop dat_pkg.operation( p_dat_id =&gt; x.n001 ); end loop; apex_collection.delete_collection ( p_collection_name =&gt; 'P5_CHECKBOX_02'); </pre><br /> <b>Proces UpdateCheckboxCollection: </b><br /> <pre style="background-color: #bbbbbb;">declare l_seq number; begin if apex_collection.collection_exists( p_collection_name =&gt; 'P5_CHECKBOX_02') = FALSE then apex_collection.create_collection (p_collection_name =&gt; 'P5_CHECKBOX_02'); end if; if :APP_AJAX_X02 = 'true' then apex_collection.add_member( p_collection_name =&gt; 'P5_CHECKBOX_02', p_n001 =&gt; :APP_AJAX_X01); else select seq_id into l_seq from apex_collections where collection_name = 'P5_CHECKBOX_02' and n001 = :APP_AJAX_X01; apex_collection.delete_member( p_collection_name =&gt; 'P5_CHECKBOX_02', p_seq =&gt; l_seq); end if; htp.p('{"ret":"OK"}'); exception when OTHERS then htp.p('{"ret":"Error"}'); end; </pre><br /> <b>Proces UpdateAllCheckboxCollection: </b> <br /> <pre style="background-color: #bbbbbb;">declare l_seq number; begin if apex_collection.collection_exists( p_collection_name =&gt; 'P5_CHECKBOX_02') = FALSE then apex_collection.create_collection (p_collection_name =&gt; 'P5_CHECKBOX_02'); end if; for x in 1..apex_application.g_f01.count loop if apex_application.g_f02(x) = 'true' then apex_collection.add_member( p_collection_name =&gt; 'P5_CHECKBOX_02', p_n001 =&gt; apex_application.g_f01(x)); else select seq_id into l_seq from apex_collections where collection_name = 'P5_CHECKBOX_02' and n001 = apex_application.g_f01(x); apex_collection.delete_member( p_collection_name =&gt; 'P5_CHECKBOX_02', p_seq =&gt; l_seq); end if; end loop; htp.p('{"ret":"OK"}'); exception when OTHERS then htp.p('{"ret":"Error"}'); end; </pre></div><span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"></span> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> </span> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Jeśli masz swoje sposoby na operacje na wielu wierszach jednocześnie podziel się tym w komentarzu pod artykułem.</span>http://apex.dbe.pl/2017/10/operacje-na-wielu-pozycjach-raportu-w.htmlnoreply@blogger.com (Paweł Prusinowski)0tag:blogger.com,1999:blog-7531463720728239813.post-6090869179995227268Fri, 06 Oct 2017 14:50:00 +00002017-10-06T16:50:20.746+02:00SQLDeveloperSQL Developer 17.3Kilka dni temu ukazał się nowy SQL Developer 17.3. Nie wnosi zbyt wielu nowości. Wersja ta głównie zawiera istotne poprawki. Chyba najważniejsza z mojego punktu widzenia to poprawiony Code Outline.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf0zCnbktdp-Fm0GcG0qgLAg3FsAcgOyqgQCpB7xZqKqqBUoRQ_Fnk67Nho4c8G-_Ul7PvG1aojiDvkDkEQne4IrPMA13JrhbJfroLMkT82nKcPdQvviqllwA17mzHUhyUP9AqC1s4-qnI/s1600/Przechwytywanie.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="387" data-original-width="579" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf0zCnbktdp-Fm0GcG0qgLAg3FsAcgOyqgQCpB7xZqKqqBUoRQ_Fnk67Nho4c8G-_Ul7PvG1aojiDvkDkEQne4IrPMA13JrhbJfroLMkT82nKcPdQvviqllwA17mzHUhyUP9AqC1s4-qnI/s400/Przechwytywanie.JPG" width="400" /></a></div> <br /> Jeszcze kilka słów na temat nowej formy numerowania wersji w narzędziach Oracle. Od połowy roku Oracle wprowadził zasadę że większość narzędzi będzie wydawał kwartalnie. A co za tym idzie wersja 17.3.X oznacza tyle, że jest to 3 wersja w roku 2017. Tak więc następnej możemy się spodziewać na sam koniec grudnia. Jak dla mnie to zmiana na plus.http://apex.dbe.pl/2017/10/sql-developer-173.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0tag:blogger.com,1999:blog-7531463720728239813.post-7406171184803319405Tue, 03 Oct 2017 13:06:00 +00002017-10-03T15:06:38.269+02:00APEX 5.1SzkoleniaSZKOLENIE Oracle APEX 5.1.3 !<div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <span style="font-size: large;">Termin szkolenia 22-24/11/2017</span></div> <div class="separator" style="clear: both; text-align: center;"> <span style="font-size: large;">Miejsce szkolenia - Wrocław</span></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> Jak zawsze pod koniec roku organizujemy szkolenie z ORACLE APEX. Mimo że szkolenia z APEX-a są dla nas zajęciem pobocznym&nbsp;to wszyscy z niecierpliwością na nie czekamy. Dla nas jest to pewnego rodzaju odskocznia od pracy typowo developerskiej okazja do wymiany wiedzy oraz poznania ciekawych osób : )</div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaEf-6oOjdht-P2OL5FThbgdOXIufDeboWurm7f48KVSXwr0OKbWhlqyHxmqq_UnxE01oTKtMmqEYd3fJG-MkHzVstm8fblqK7MqWF12Dc2rPCPXNEZfjLoBUTlSrsvn5-DfZdK8COPae5/s1600/training-image.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="551" data-original-width="768" height="286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaEf-6oOjdht-P2OL5FThbgdOXIufDeboWurm7f48KVSXwr0OKbWhlqyHxmqq_UnxE01oTKtMmqEYd3fJG-MkHzVstm8fblqK7MqWF12Dc2rPCPXNEZfjLoBUTlSrsvn5-DfZdK8COPae5/s400/training-image.jpg" width="400" /></a></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <br /> <div style="clear: both; text-align: center;"> <b><span style="font-size: large;">Szczegóły i formularz zgłoszeniowy dostępne są&nbsp;<a href="http://forumapex.dbe.pl/apex/f?p=DBE:SZKOLENIA_APEX:0">TUTAJ</a>.</span></b></div> <div class="separator" style="clear: both; text-align: center;"> <br /></div> <div> <br /></div> http://apex.dbe.pl/2017/10/szkolenie-oracle-apex-513.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0Wrocław, Polska51.1078852 17.03853760000004150.948439199999996 16.715814100000042 51.2673312 17.361261100000039tag:blogger.com,1999:blog-7531463720728239813.post-5127930785859787779Fri, 14 Jul 2017 06:00:00 +00002017-07-14T08:00:23.733+02:00APEXplDBE plany na przyszłość<br /> Wszystko co dobre szybko się kończy. Tak więc wracamy na ziemie a dokładnie do Wrocławia. Zawsze po podróży w głowie mam milion pomysłów i planów.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheaB2Cvp0QVIfXZc04PdVJI-4Kllly7R0qxvoP2bdjbDMUEkrArCWrUSx0Y2XVPRQpKP2tgTUwVo-tIRfKYVKzFFwlCzv8QRT23IkfHz8THx6MTO00GsaM1HoQCYQzPJbeAwdIX1qEpuRj/s1600/8a2b5a70c7bb2f167f0450c58b83f55e.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="428" data-original-width="570" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheaB2Cvp0QVIfXZc04PdVJI-4Kllly7R0qxvoP2bdjbDMUEkrArCWrUSx0Y2XVPRQpKP2tgTUwVo-tIRfKYVKzFFwlCzv8QRT23IkfHz8THx6MTO00GsaM1HoQCYQzPJbeAwdIX1qEpuRj/s320/8a2b5a70c7bb2f167f0450c58b83f55e.jpg" width="320" /></a></div> <br /> <br /> Dla części z nich prawdopodobieństwo realizacji jest bardzo wysokie dla części mniej : ). Tak więc co w najbliższym czasie planujemy zrobić:<br /> <br /> <ul> <li>w przeciągu 2-4 miesięcy zmieniamy biuro. Chodzi o powiększenie powierzchni oraz podwyższenie standardu</li> <li>ponowne zwiększenie zatrudnienia</li> <li>po wakacjach przygotowanie cyklu szkoleń otwartych z zakresu APEX 5.1</li> <li>bardziej aktywny udział na blogu</li> <li>udział w konferencji Oracle-owej w Krakowie</li> <li>stworzenie drugiego brandu firmy nastawionego wyłącznie na zagranicę oczywiście ściśle związanego z APEX-em !</li> </ul> http://apex.dbe.pl/2017/07/dbe-plany-na-przyszosc.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))1Wrocław, Polska51.1078852 17.03853760000004150.948439199999996 16.715814100000042 51.2673312 17.361261100000039tag:blogger.com,1999:blog-7531463720728239813.post-2603014356909788676Tue, 11 Jul 2017 09:00:00 +00002017-07-11T11:00:14.619+02:00KScopeAfter KScope 2Antelope Canyon, Monument Valley - cool !<br /> <br /> Podobnie jak wczoraj, śniadanie w tej samej restauracji. Szybkie zakupy i jedziemy w kierunku Antelope Canyon a w drodze powrotnej Monument Valley. Pewnie część z was nie wiele mówią te nazwy, natomiast kilka zdjęć stamtąd znacie... : ) np. Jeden z kilku ekranów powitalnych w Windows 8.<br /> Dodam jeszcze że zdjęcie wykonane tam jest jednym z najdrożej sprzedanych zdjęc w historii.<br /> Ponieważ jest to miejsce bardzo oblegane, bilety zarezerwowaliśmy kilka miesięcy wcześniej. Bilety są na konkretną godzinę, a że jesteśmy około 2 godziny za wcześniej jedziemy jeszcze na Horseshoe Bend... sami spójrzcie : )<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcrrs4M2LhyphenhyphenKSvFi4REEbmaI3yr7t-etDmTXoAOtxoUQgzz2Xzw0E8qD2hNQxZWRl7JOSbT8owMm0Sh8Bj47mW_gRPuidLaKKR2h4f4M7mKYEMPguk6tIFtS5ASqRe8NBjIN0EXVxSr8qj/s1600/Przechwytywanie1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="785" data-original-width="1194" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcrrs4M2LhyphenhyphenKSvFi4REEbmaI3yr7t-etDmTXoAOtxoUQgzz2Xzw0E8qD2hNQxZWRl7JOSbT8owMm0Sh8Bj47mW_gRPuidLaKKR2h4f4M7mKYEMPguk6tIFtS5ASqRe8NBjIN0EXVxSr8qj/s400/Przechwytywanie1.JPG" width="400" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy-aFAw70OeHKfst5a31o0ItCEDoHPtRcZWF3mpSsIzNL90p_Gnoa7NZNtH30IaDyUDDJ7B8KZyEmT14IXA0SfvHSPZRgUanbk_FQOgPB8Lk4nza7YizzOm_MoSsFW3CJQuBIjfQgapmgy/s1600/Przechwytywanie.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="775" data-original-width="1184" height="261" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy-aFAw70OeHKfst5a31o0ItCEDoHPtRcZWF3mpSsIzNL90p_Gnoa7NZNtH30IaDyUDDJ7B8KZyEmT14IXA0SfvHSPZRgUanbk_FQOgPB8Lk4nza7YizzOm_MoSsFW3CJQuBIjfQgapmgy/s400/Przechwytywanie.JPG" width="400" /></a></div> <br /> <br /> Przychodzi nasza godzina więc wracamy do punktu zbiórki. Przewodnik każe nam wsiadać na pakę truck-a z kilkoma innymi turystami. Ruszamy. Po chwili jazdy zjeżdżamy na pustynną drogę... i się zaczyna : ) kłęby kurzu i co chwile nas podbija do góry.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI3T92hvB9yx1XlM_zEYHdbXKe8_1SVmpal9Xr2ofZqQqk112ltIBLpwHZWdp2TkAzTETd778cj2_CdTp_ykzUd2H8Y8glF5-xeL67wjUL9DfOh8JGgMp51tv-JS5G5rbw_Uuc1mBGiEvw/s1600/Przechwytywanie2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="782" data-original-width="1197" height="261" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI3T92hvB9yx1XlM_zEYHdbXKe8_1SVmpal9Xr2ofZqQqk112ltIBLpwHZWdp2TkAzTETd778cj2_CdTp_ykzUd2H8Y8glF5-xeL67wjUL9DfOh8JGgMp51tv-JS5G5rbw_Uuc1mBGiEvw/s400/Przechwytywanie2.JPG" width="400" /></a></div> <br /> <br /> Dla nas super ale kilka starszych japonek wydaje dziwne odgłosy... Pierwsze chwile w canyon-ie potwierdzają jakość miejsca. Nawet panie z kraju kwitnącej wiśni zapominają o drodze.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHqUr8I9KRieWQWSrzGGbUceeiZoPql-GhWd8xKP2-CAI7NE6Oak7Stmvm6PSSBJ_1YQk6US_evTQghvsMklW0qX4_j4U_8mxycaxLx7Spl7kZLaPyenTgShNJIKDwXP30L8RP7xjTT0t4/s1600/Przechwytywanie3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="794" data-original-width="1197" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHqUr8I9KRieWQWSrzGGbUceeiZoPql-GhWd8xKP2-CAI7NE6Oak7Stmvm6PSSBJ_1YQk6US_evTQghvsMklW0qX4_j4U_8mxycaxLx7Spl7kZLaPyenTgShNJIKDwXP30L8RP7xjTT0t4/s400/Przechwytywanie3.JPG" width="400" /></a></div> <br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEMYrCzt43o2q3aQXgihlOhWCyxmEdO24N1ICTzLR6t0n8xdrbyTMFva2hHczPfs2VH6B_OTCGoRbazJBfPrYni6YXkbXcdqxb420DQNFZhrfdubewhQaJ8l23YVWZSbJ4c95d9UJ7Qmw7/s1600/Przechwytywanie4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="781" data-original-width="1193" height="261" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEMYrCzt43o2q3aQXgihlOhWCyxmEdO24N1ICTzLR6t0n8xdrbyTMFva2hHczPfs2VH6B_OTCGoRbazJBfPrYni6YXkbXcdqxb420DQNFZhrfdubewhQaJ8l23YVWZSbJ4c95d9UJ7Qmw7/s400/Przechwytywanie4.JPG" width="400" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAgbPFX0_tbpmcK6DOD2sL0cCJaG50bYvp6_QCJVwNP5tRSTpbtXsbnxePI-4A7mN02QHLkpyTzXsH_fhCvCxWCko_1JrQa39-xP7I5HIFXeL1PundfLWs5qVjrIwgwBEsSeXcKEI1oaDe/s1600/Przechwytywanie5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="795" data-original-width="1197" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAgbPFX0_tbpmcK6DOD2sL0cCJaG50bYvp6_QCJVwNP5tRSTpbtXsbnxePI-4A7mN02QHLkpyTzXsH_fhCvCxWCko_1JrQa39-xP7I5HIFXeL1PundfLWs5qVjrIwgwBEsSeXcKEI1oaDe/s400/Przechwytywanie5.JPG" width="400" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwM3QFSNQ53ovwEpdIKHqzgv8fYr_oa7xXKrSvGs-oZU3k9ZPmiUaCLqbVOflLwEmWjPt87RIqmfaY0SBzLwcTWv_oOmOFuTdajZAaJYNYuAk47HVqAEoRbCWPQIUzvB4kKsWIl78YDIuq/s1600/Przechwytywanie6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="794" data-original-width="1195" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwM3QFSNQ53ovwEpdIKHqzgv8fYr_oa7xXKrSvGs-oZU3k9ZPmiUaCLqbVOflLwEmWjPt87RIqmfaY0SBzLwcTWv_oOmOFuTdajZAaJYNYuAk47HVqAEoRbCWPQIUzvB4kKsWIl78YDIuq/s400/Przechwytywanie6.JPG" width="400" /></a></div> <br /> <br /> Droga powrotna była jeszcze większym hardcorem. Indianka, która kierowała truckiem wyraźnie chciała zrobić jeszcze jeden kurs... - połowa japonek zgubiła swoje kapelusiki.<br /> <br /> Chwila oddechu i ruszamy do Monument Valley. Droga niesamowita totalne pustkowia droga widoczna po horyzont.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg39yque9n6KUfIbfo8bMNjEo4-jcGjywI9uWnGw6BpaKej-qbqcUJTQKMKW1ARIibTL-jS-BGmDZ-BU-_QzXZMM4v1g7yDlJEvlNvqUoE4LDR0h2AG9lecTcmEc2dHtWIoqNipf2Af2XO4/s1600/Przechwytywanie6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="767" data-original-width="1200" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg39yque9n6KUfIbfo8bMNjEo4-jcGjywI9uWnGw6BpaKej-qbqcUJTQKMKW1ARIibTL-jS-BGmDZ-BU-_QzXZMM4v1g7yDlJEvlNvqUoE4LDR0h2AG9lecTcmEc2dHtWIoqNipf2Af2XO4/s400/Przechwytywanie6.JPG" width="400" /></a></div> <br /> <br /> Chcemy zdążyć przed zachodem słońca więc nigdzie się nie zatrzymujemy. Udaje nam się dojechać 40 minut przed zachodem... widok zapiera dech w piersiach : )<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgwy3_ryEaAuJVOyRWRnBn_pVPNHNgCow0sAo0oqM8Nx7PVQIR2CXikWWmDT4OQ8AqeCbzD5KbQD2Eq8Cs8Bw0oHyfkrkBHa4IKRhj8t9AlxGFSx7GR6Q0SRVLK88MZMIGOQWS3vqHykmX/s1600/Przechwytywanie5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="788" data-original-width="1198" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgwy3_ryEaAuJVOyRWRnBn_pVPNHNgCow0sAo0oqM8Nx7PVQIR2CXikWWmDT4OQ8AqeCbzD5KbQD2Eq8Cs8Bw0oHyfkrkBHa4IKRhj8t9AlxGFSx7GR6Q0SRVLK88MZMIGOQWS3vqHykmX/s400/Przechwytywanie5.JPG" width="400" /></a></div> <br /> <div> <br /></div> http://apex.dbe.pl/2017/07/after-kscope-2.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0Kanion Antylopy, Arizona 86040, Stany Zjednoczone36.8619103 -111.3743302000000336.8111068 -111.45501120000003 36.9127138 -111.29364920000003tag:blogger.com,1999:blog-7531463720728239813.post-3796901548553086858Sun, 09 Jul 2017 14:58:00 +00002017-07-09T16:58:40.280+02:00KScope17KScope18After KScope 1<br /> Grand Canyon<br /> <br /> Rano śniadanie w mega klimatycznej przydrożnej restauracyjce. Mimo, że nie jest zbyt czysto widać "plastik fantastik" i amerykański kicz to jednak to miejsce ma coś.. Czas tu zatrzymał się w latach 60. Obsługa nie jest zbyt żwawa... natomiast gości jest sporo i sam posiłek bardzo dobry.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPJQeYVthzqSpVjwKY60fh9QNLVLwEpD_2EYaADbS8VkkIf8dh51AEVp8IinmDul06f2FGFIKyUCYm0viM2AaL84wH4ylFi1e5hVk6Q92G36YJZQHj-dpU7bu79il4VBDPAo6_q6zeQuUR/s1600/DSC_0276.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1201" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPJQeYVthzqSpVjwKY60fh9QNLVLwEpD_2EYaADbS8VkkIf8dh51AEVp8IinmDul06f2FGFIKyUCYm0viM2AaL84wH4ylFi1e5hVk6Q92G36YJZQHj-dpU7bu79il4VBDPAo6_q6zeQuUR/s400/DSC_0276.JPG" width="400" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiszHEmBO8WwE7xsyGAPOCRYjkcva3sVKJ9lobBwXywIQc02elPOd-xQ2WnjcEVx_w2Alisu-iAPOx0iBFjxcxLzvakg4QW3L0HIiHJpfZ8WvveOdKbJyf2fA3SzYsP2KoK_2C4jtW2Jlvx/s1600/DSC_0290.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1201" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiszHEmBO8WwE7xsyGAPOCRYjkcva3sVKJ9lobBwXywIQc02elPOd-xQ2WnjcEVx_w2Alisu-iAPOx0iBFjxcxLzvakg4QW3L0HIiHJpfZ8WvveOdKbJyf2fA3SzYsP2KoK_2C4jtW2Jlvx/s400/DSC_0290.JPG" width="400" /></a></div> <br /> <br /> Wsiadamy do auta i w drogę nad Grand Canyon.<br /> Przed wjazdem do parku kupujemy bilet. Wybieramy roczny na wszystkie narodowe parki w USA. Z kalkulacji wynika że to jest najlepsze rozwiązanie szczególnie że w planach jest kilka parków do odwiedzenia.<br /> Sam Grand Canyon... majestatyczny, nie da się tego przełożyć na słowa czy nawet zdjęcia, to trzeba po prostu zobaczyć. Mimo, że temperatura sięga prawie 40 st. C. wybieramy aktywne przejście wzdłuż 15 km. południowej krawędzi canyon-u. Bierzemy po 2 litry wody na głowę i staramy się ciągle nawadniać.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj4H4DeOsAdZHCTuctv2aL2IkJFd8R1wNqenxrIgQ57R4d-lqjUQs7GfBI-pPbj-3ah4k3zAJJBq52KIk88JHAJ8rZwsUnU3UC8IhQAw6iwCAv91Rl4byq_liujAplU2_DdAiRVX42tss9/s1600/DSC_0280.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1201" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj4H4DeOsAdZHCTuctv2aL2IkJFd8R1wNqenxrIgQ57R4d-lqjUQs7GfBI-pPbj-3ah4k3zAJJBq52KIk88JHAJ8rZwsUnU3UC8IhQAw6iwCAv91Rl4byq_liujAplU2_DdAiRVX42tss9/s400/DSC_0280.JPG" width="400" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfuYUzp34-uIyzbRMmTs6KiWziSP7X2zm06s8FrQys8PamISFX5kzjB3ewvqX9cF0qHsGgi05Qw17NFMFV6NXVU7Eq1DtDvpsfHRySYANm7iP_13dacvHWXlMnS0SS7mhYbMVMpgAedVIe/s1600/DSC_0284.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="1600" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfuYUzp34-uIyzbRMmTs6KiWziSP7X2zm06s8FrQys8PamISFX5kzjB3ewvqX9cF0qHsGgi05Qw17NFMFV6NXVU7Eq1DtDvpsfHRySYANm7iP_13dacvHWXlMnS0SS7mhYbMVMpgAedVIe/s640/DSC_0284.JPG" width="640" /></a></div> <br /> <br /> <br /> Po około 5 godzinach jesteśmy z powrotem przy aucie. Następnie jedziemy na drugą część canyon-u tzw. Desert View tam doczekujemy zachodu słońca i heja z powrotem do Flagstaff.<br /> <br /> Następny dzień robimy bardziej swobodny... jedziemy na Meteor Crater w Arizonie. Czyli wielką dziurę zrobioną przez spory meteoryt. Obiekt jest położony na totalnym pustkowiu i prowadzony tylko przez Indian. Jak pewnie część z was wie USA w ramach rekompensaty za krzywdy wyrządzone pierwotnym mieszkańcom Ameryki pozwala na wiele wyjątków. Np monopol na pracę czy zakładanie kasyn prowadzonych tylko przez Indian.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2zW21haZTItwCIVKaKUpbw8LQ1vslOWbdchv9mZYuY5RVkVierFqxesVOg4PmpcoFm-JngPJxCUpgawcBs70ZIqE-Ek0g2Jql5zY0vXAfhnhDRLz_Pr63h4zENpHS_r_AdiGzvxhR-lZp/s1600/DSC_0287.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="1600" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2zW21haZTItwCIVKaKUpbw8LQ1vslOWbdchv9mZYuY5RVkVierFqxesVOg4PmpcoFm-JngPJxCUpgawcBs70ZIqE-Ek0g2Jql5zY0vXAfhnhDRLz_Pr63h4zENpHS_r_AdiGzvxhR-lZp/s640/DSC_0287.JPG" width="640" /></a></div> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvQCTZsxVcQY9Lg55B3paQEN8I_dp1P3amoETbB_xJvAEbBkkzTaCSVJsNtVLRiQuPn0WBYcXYvZHO5woO5fU-TY-5XZlv8tRSSz2lQ82lvrt2lxpbSOXZoNBZulbVcs9u0urisYQ_5PY6/s1600/DSC_0289.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="1600" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvQCTZsxVcQY9Lg55B3paQEN8I_dp1P3amoETbB_xJvAEbBkkzTaCSVJsNtVLRiQuPn0WBYcXYvZHO5woO5fU-TY-5XZlv8tRSSz2lQ82lvrt2lxpbSOXZoNBZulbVcs9u0urisYQ_5PY6/s640/DSC_0289.JPG" width="640" /></a></div> <br /> <br /> Po zwiedzaniu wracamy do Flagstaff i załatwiamy przyziemne rzeczy typu pranie zakupy itp. Wieczorem idziemy na kolację i piwo to pobliskiej restauracji.<br /> <br /> Tu chciałbym wspomnieć o jednej niesamowitej rzeczy, która mnie w USA zachwyca. Ogólnie ujęta obsługa klienta a raczej podejście do człowieka. Nie ważne czy to jest lotnisko, wypożyczalnia samochodów, stacja benzynowa a tym bardziej restauracja. Obsługa tutaj to SZTUKA ! Jeżeli załatwiasz jakąś rzecz to zawsze osoba po drugiej stronie zapyta: jak się czujesz ? co tu robisz ? skąd jesteś ? Jeżeli nie jesteś zdecydowany na jakiś posiłek czy piwo, no problem zaraz masz wszystkie próbki do spróbowania. To naprawdę jest rzecz godna naśladowania...<br /> <div> <br /></div> http://apex.dbe.pl/2017/07/after-kscope-1.htmlnoreply@blogger.com (Andrzej Nowakowski (APEXUTIL.COM / DBE))0Flagstaff, Arizona, Stany Zjednoczone35.1982836 -111.6513019999999935.094458100000004 -111.81266349999999 35.3021091 -111.48994049999999