Lista wszystkich usług soap

Wrzesień 14th, 2017

Listę w xml wszystkich adresów wsdl można znaleźć pod adresem:
http://magento.localhost/soap/default?wsdl_list=1

Wsdl dla konkretnej metody jest pod adresem:
http://magento.localhost/soap/default?wsdl&services=sibeliusSapProductV1

lub:

http://magento.localhost/default/soap/default?wsdl&services=sibeliusSapProductV1

Dostęp do plików wsdl może być blokowany tylko dla uwierzytelnionych requestów.
Wtedy trzeba dodać nagłówek http:
Authentication Bearer: afasfadf;ljadfsoulasj;f

afasfadf;ljadfsoulasj;f- twoj token pobrany z panelu w sekcji system / integracje.

Magento plugin

Wrzesień 8th, 2017

Jedna z prostszych do opanowania możliwości w magento. Wykorzystuje wzorzec Interceptor i pozwala nam na wykonanie naszego kodu przed i po wywołaniu dowolnej publicznej metody na obiekcie, który jest pobierany przez service managera.

Przykład konfigu, dodajemy do di.xml w naszym module:

    <type name="Magento\Webapi\Model\Soap\Server">
        <plugin name="w2b_sap_model_soap_plugin" 
                type="W2b\Sap\Model\Soap\Plugin" 
                sortOrder="10" 
                disabled="false"/>
    </type>   

Ja wpinałem się do obiektu ServeraSoap żeby przechwycić request i response i je zalogować.

Przykład pluginu:

namespace W2b\Sap\Model\Soap;

class Plugin
{
    
    public function beforeHandle()
    {
        //zrob cos przed metoda
    }
    
    public function aroundHandle($interceptor, $closure)
    {
        //zrob cos
        
        $result = $closure(); //jest jako obiekt \Closure wiec wywolaj metode, albo i nie 
        
        //znowu cos zrob
        
        return $result;
    }
    
    public function afterHandle()
    {
        //zrob cos po metodzie
    }
}

Di in action

Wrzesień 6th, 2017

Widok konstruktora crud model productu:)

Windows 10 Apache VirtualHost Chrome

Grudzień 1st, 2016

Stary sposób tworzenia virtualhostów dla apache w przypadku windowsa 10 i google chrome przestał działać. Objawiało się to tym że żaden virtualhost nie był widoczny dla chroma, wskazywał na katalog główny. Rozwiązaniem problemu była zmiana konfiguracji virtualhostów:

<VirtualHost 127.0.0.1>
DocumentRoot „D:\Praca\web\cms”
ServerName cms.localhost
</VirtualHost>

na:

<VirtualHost localhost>
DocumentRoot „D:\Praca\web\cms”
ServerName cms.localhost
</VirtualHost>

Dlaczego? A kogo to obchodzi ważne że działa.

Instalacja Apache 2.4 na Windows

Listopad 11th, 2014

Kiedyś było miło i bezpośrednio na stronach apache.org można było pobrać instalatora. Dla wersji 2.4 już nie są tacy mili. Na szczęście ratuje nas parę stron, gdzie można pobrać skompilowane wersje. Ja użyłem:

http://www.apachehaus.com

Przy pobieraniu należy pamiętać żeby pobrać wersję dla kompilatora c++ który mamy zainstalowany, albo zainstalować najświeższy kompilator.

Jak rozpakujemy archiwum, wrzucamy go do dowolnego katalogu, odpalamy httpd.exe z katalogu bin i powinno śmigać. Warto uruchomić polecenie z wiersza poleceń:

httpd install -k

doda to między innymi apache jako usługę.

Konfiguracja httpd.conf, podaję z wartościami odpowiednimi dla mojego systemu windows i katalogów.

1. Ścieżka do apache:

Define SRVROOT „D:/Praca/Apache Group/Apache2.4”

2. Ścieżka do plików, jeśli nie pasuje nam htdocs w katalogu apache

DocumentRoot „D:/Praca/web”

<Directory „D:/Praca/web”>

3. Dodajemy virtualne serwery:

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
DocumentRoot „D:\Praca\web”
ServerName localhost
</VirtualHost>

i przykładowa subdomena:

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
DocumentRoot „D:\Praca\web\w2b\cms\public”
ServerName w2b.localhost
ServerAlias *.w2b.localhost
</VirtualHost>

4. Ścieżka do pliku php.ini

PHPIniDir „D:\Praca\Apache Group\php-5.5.18”

5. Konfiguracja php

– podajemy ścieżkę do dllki, znajdującej się w katalogu php: LoadModule php5_module „D:\Praca\Apache Group\php-5.4.25\php5apache2_4.dll”
– do sekcji: <IfModule mime_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Zend_Auth rememberMe

Maj 8th, 2011

Trochę się namęczyłem przy tym(1,5h) dlatego że nie wgłębiałem się nigdy w zasadę działania Zend_Session i dlatego że skopiowałem bezmyślnie kod z jakiegoś przykładu, który prawie działał.

Zend_Session to bardzo fajna klasa, nie dość że łatwo się używa to dodatkowo wprowadza metody które rozszerzają możliwości standardowej sesji php. Do rzeczy jak zrobić zapamiętaj mnie wykorzystując Zend_Auth.

Żeby tego dokonać trzeba wiedzieć że Zend wprowadza dodatkowy mechanizm który pozwala na ustawienie czasu życia konkretnego Zend_Session_Namespace poprzez metodę setExpirationSeconds($seconds, $variables = null). Można też po podaniu nazw zmiennych w danym namespace ustawić wygaśnięcie tylko dla nich. Czyli pierwszy krok to ustawienie czasu życia sesji dla klasy Zend_Auth czyli np.

$session = new Zend_Session_Namespace(‚Zend_Auth’);
$seconds  = 60 * 60 * 24 * 7; // 7 dni
$session->setExpirationSeconds($seconds);

Ale to jeszcze nie wszystko, bo sesja w php trwa jedynie tyle ile określa parametr session.cookie_lifetime, który jest ustawiony w php.ini i najczęściej przyjmuje wartość 0 co oznacza że ciasteczko, które przechowuje identyfikator sesji straci ważność po zamknięciu okna przeglądarki.  Parametr ten możemy zmienić we wspomniamym wyżej php.ini, .htaccess, lub używając metody ini_set lub funkcji php session_set_cookie_params albo korzystając z metody klasy Zend_Session::rememberMe – która jako parametr pobiera liczbę sekund.
Należy pamiętać żeby zrobić to przed zaczęciem korzystania z sesji. Ja np. ustawiłem to w application.ini: phpSettings.session.cookie_lifetime = 604800.

Błąd który popełniłem na początku i który zmusił mnie do przejrzenia źródeł Zend_Session i Zend_Session_Namespace było  skopiowanie kodu z jakiegoś przykładu w którym parametr sessions.cookie_liftime był ustawiany po wykonaniu logowania. Co było w tym złego? To że używając w innych miejscach sesji parametr sessions.cookie_liftime był standardowo ustawiany na 0 co powodowało usunięcie pliku cookie po zamknięciu okna przeglądarki. Nie od razu to skojarzyłem bo nie na każdej podstronie używałem dodatkowo sesji.

Cięcie mailingu

Listopad 2nd, 2010

Trochę męcząca sprawa. Raczej unikam tematu, ale czasami trzeba zrobić, więc nie ma rady. Poniżej kilka spostrzeżeń, które mogą się przydać:

  • im prostsze tym lepsze,
  • przeważnie w większości klientów poczty divy oraz atrybut float były dobrze obsługiwane jak również cała reszta. Problemów dostarczyła jedynie rodzina microsoft outlook,
  • dobrze jest unikać obrazów tła, można wbić do body, ale pozostałe obrazy lepiej osadzać poprzez tag <img>,
  • style, najlepiej umieszczać bezpośrednio w każdym tagu poprzez atrybut style(męczące i szybko syf w kodzie się robi, ale cóż…),
  • szkielet wiadomości, kolumny, elementy blokowe najlepiej robić w oparciu o tabelki, outlooki nie obsługują atrybutu width dla elementów div jedynie dla table, więc jak użyjemy divów będziemy mieli wszystko na 100%. Podobnie jest z padding(margin już ok).
  • Specyfikacja co można użyć w outlook 2007

Okrągłe ramki w css

Listopad 23rd, 2009

Jak zrobić okrągłe ramki? Rzecz wydaje się prosta i taka jest. Sposobów w sieci znalazłem wiele.

  • ramki css 3.0 – nie w każdej przeglądarce zadziała,
  • ramki tworzone za pomocą java script bez dodatkowych obrazów(ciekawe, ale skomplikowanych się nie dało zrobić),
  • ramki tworzone za pomocą java script i obrazów(to wydało mi się ciekawe).

Znalazłem gotowe, działające rozwiązanie, które za pomocą kodu java script obwijało w ramkę żądany element html. Ramka była podzielonym na składowe obrazem. Nie trzeba było dodawać dodatkowego kodu html żeby ją otrzymać bo to było dodawane przez js. Rozwiązanie wydało mi się ciekawe. Ale po tym jak obejrzałem kod java script, nie za bardzo mi się spodobał – był za długi i niechlujnie zrobiony, pewnie by coś przestało działać. Postanowiłem zrobić sam.

Założenie: zrobić jak najprościej.
1. Pierwszy etap to przygotowanie w Photo Shopie  ramki, narożników, cienia itd. Obrazy można pociąć tak że każdy narożnik i krawędź będzie oddzielnie(najprościej) lub łączyć je w celu ograniczenia liczby obrazów i żądań do serwera.
2. Ramkę do dowolnego elementu dodajemy, otaczając go w dodatkowe kontenery, które są wyposażone w tło(background) zawierające odpowiednią krawędź bądź narożnik. To w sumie wystarczy bo już mamy gotową ramkę. Ale jeśli ramek jest kilka, to robi nam się śmietnik w kodzie i jest kupa niepotrzebnych kontenerów(4 dla narożników i 4 dla krawędzi). Można by to było uporządkować.
3. Z pomocą w porządkowaniu przychodzi nam jQuery, a dokładnie metoda: wrap().

Kod do tworzenia ramek:

[code lang="javascript"]
$(document).ready(function(){
	$('.roundMe').each(function(){
		$(this).wrap(
		'
' ); }); }); [/code]

Powyższy kod do każdego elementu posiadającego klasę roundMe doda ramkę. Poszczególne divy i obrazki w nich zawarte można grupować upraszczając to rozwiązanie.

Fatal error: Call to undefined method Zend_View_Helper_Placeholder_Container::ksort()

Listopad 7th, 2009

Fatal error: Call to undefined method Zend_View_Helper_Placeholder_Container::ksort() in /var/www/html3/library/zend/1.9.5/Zend/View/Helper/HeadMeta.php on line 333

Takie coś się pojawia przy wersji php 5.1.6. Najprostsze rozwiązanie to zrobić upgrade php do nowszej wersji i po bólu. Ale niestety nie wszędzie można to zrobić. Nie na każdy serwer mamy dostęp. Pozostaje wtedy tylko rozwiązanie prowizoryczne, autorem poniższego jest ktoś z forum zenda, na którym to znalazłem.

Aby się pozbyć powyższego błędu należy dodać do: Zend/View/Helper/Placeholder/Container/Abstract.php następującą metodę:
public function ksort()
{
$items = $this->getArrayCopy();
return ksort($items);
}
I znowu działa.

jak zaprojektować dobrą stronę internetową

Maj 17th, 2009

Jak zaprojektować dobrą stronę internetową? Najprostszą odpowiedzią jest – zlecić zrobienie strony profesjonalistom. Dlaczego? Niestety strony nie robi jeden człowiek. Do tego potrzebne jest co najmniej dwóch ludzi, a często i to za mało i tak na prawdę to potrzeba kilku osób. Minimum to grafik i koder Html i css.
No ale zakładamy że stronę robimy sami.

Jak zaprojektować dobrą stronę internetową?

  1. Zawartość merytoryczna.
    To jest najważniejsze. Treści to podstawa, wartościowe treści. Nieważne czy strona będzie dobrze wyglądać, czy kod będzie się sypać, dobre treści zawsze znajdą odbiorcę. Taka jest też idea pozycjonowania. Wartościowy content jest linkowany przez użytkowników w blogach, na forach, na własnych stronach itd.
  2. Grafika.
    Zasada im więcej tym lepiej raczej się nie sprawdza. Mając niewielkie umiejętności w tym zakresie, staramy się zrobić coś prostego, nie przesadzać z kolorami. Zrobienie ze strony choinki to nic dobrego. Do zaprojektowania wyglądu strony posłużyć się można programem Adobe Photoshop. 30 dniowy trial jest dostępny na stronie Adobe. Photoshop jest stosunkowo intuicyjny i po poznaniu podstawowych narzędzi oraz styli można zrobić całkiem ładny projekt.
    Zanim przystąpimy do prac trzeba wybrać kolorystykę strony. Dla tych, którzy nie mają wyczucia kolorów z pomocą przychodzi kuler, bardzo fajna aplikacja, firmy Adobe, która pozwala na wybranie schematu kolorów na podstawie fraz i wyszukiwarki. Nowe schematy są dodawane przez innych użytkowników. Proszę się nie przejmować, że kolorów w schemacie jest tylko 5. To wystarczająca ilość. Jak zabierzemy się do pracy i zaczniemy już układać wszystko okaże się że taki schemat jest wystarczający.
    Wielkość projektu. Teoretycznie nie ma ograniczeń. Ale trzeba pamiętać o tym że użytkownicy internetu mają różne monitory i dobrze by było zapewnić większości przyjemne oglądanie strony. Według ranking.pl w Polsce wciąż króluje rozdzielczość 1024x768px. Rozdzielczością w pionie nie musimy się przejmować, robimy strony dowolnie długie. Natomiast przesuwanie suwakiem w poziomie jest niewygodne, więc projekt graficzny musi się zmieścić w szerokości 1024px. Należy też pamiętać że suwak przeglądarki zajmuje 24px, więc do użytku zostaje nam 1000px – jest to więc maksymalny obszar jaki mamy do wykorzystania.
    Layout. Kiedyś bardzo modnym układem strony był: Nagłówek, trzy kolumny i stopka. Unikajmy takiego układu. Po pierwsze przysporzy nam on więcej problemów przy kodowaniu, a chcemy osiągnąć dobry efekt jak najprościej. Po drugie taki układ jest mniej czytelny od dwukolumnowego. Zazwyczaj wystarczają dwie kolumny. Kto chce zobaczyć jak sobie radzą duże portale wystarczy rzucić okiem np. na: onet.pl. Tak więc wybieramy układ: Nagłówek, dwie kolumny i stopka. Jak wykonać w prosty i poprawny sposób dwie kolumny w html i css możecie przeczytać tutaj: Dwie kolumny w css bez używania tabel. Ładne proporcje kolumn, to 1 do 3. Ale tu możemy szerokość dostosować do naszych potrzeb. Podobnie jest z wysokością nagłówka. Węższy gdy mamy ważny content do pokazania jak najszybciej, szerszy jeśli chcemy wrzucić np. ładne i duże zdjęcie.
    Typografia.
    Jest bardzo ważna. Dobrze dobrane czcionki zwiększą czytelność i również zwiększą urodę naszej strony. Najlepiej było by użyć czcionek komercyjnych, ale te kosztują sporo.
    Wielkość tekstu, który użytkownik będzie czytał to zazwyczaj 11px. Do nagłówków i wyróżnienia możemy użyć większych czcionek. Ale nie przesadzajmy. Starajmy się też unikać krzykliwych kolorów, dużych liter oraz dużej wielkości czcionki. Nie róbmy tego:

    ALA MA KOTA

  3. Html i Css.
    Cięcie strony nie jest rzeczą trudną. Sam szkielet możemy wybrać korzystając z takich narzędzi jak Dreamweaver z pakietu Adobe. Mamy do wyboru kilka layoutów, z których na pewno coś wybierzemy dla siebie. Możemy też skorzystać z tego: Dwie kolumny w css bez używania tabel.
    Porządek. Porządek w kodzie jest niezmiernie ważny. Według mnie jest na drugim miejscu po prostocie. Mając burdel w kodzie narażamy się na błędy i na długie godziny straty żeby je potem odszukać. Jak go osiągnąć.

    • Po pierwsze oddzielmy style Css od Html. Style możemy zapisywać w oddzielnym pliku i dołączyć je do dokumentu html za pomocą tagu: <link /> w sekcji <head></head> dokumentu.
    • Nazwy klas i id powinny odzwiercielać rzeczywiste przeznaczenie elementów, którym zostały nadane.
    • Stosujmy jednakową konwencję w nazewnictwie w całym projekcie np. ala_ma_kota lub alaMaKota.
    • W html stosujmy wcięcia w kodzie. To co siędzi w kontenerze dostaje wcięcie 1 znaku Tab i tak dalej w głąb. Oznaczajmy sobie koniec elementów blokowych np. <!–koniec kontenerGlowny –></div>
    • Używajmy i dobrze poznajmy podstawowe elementy html: div, span, table, ul, p, h, a, egzotyczne sobie odpuśćmy, bo są rzadko stosowane i raczej się nie przydadzą.

    Prostota. Jeśli zrobiliśmy coś co ma wiele linijek kodu, to najprawdopodobniej zrobiliśmy to źle. Radzę porzucić wtedy tok myślenia, który doprowadził nas do tak długiego kodu i podejść do problemu z innej strony. W taki sposób unikniemy sporej ilości błędów, które na pierwszy rzut oka są ukryte a wyjdą później. No i oczywiście do prostego kodu łatwiej wrócić po roku czasu.
    Style które warto znać i rozumieć. Często używane i bardzo ważne dla układu strony, oraz dla poprawnego wyświetlania są style odpowiedzialne za pozycję elementu i są to:

    • position oraz top, left, right, clear, z-index
    • display
    • margin
    • padding

    Za ich pomocą ułożymy każdy element strony dokładnie tam gdzie chcemy.
    Do umieszczania obrazów używamy kontenerów np. div oraz stylu: background.
    Na koniec. Pamiętajmy o tym że użytkownicy korzystają z różnych przeglądarek, warto jest więc przetostować naszą stronę w tych najpopularniejszych. Przydatną statystykę znajdziemy na stronie rankging.pl. W dzień pisania tego artykułu warto testować stronę pod IE6, IE7, Firefox 3.0, Firefox 2.0, Opera.
    Warto pisać bezbłędny kod. Mimo że przeglądarka wyświetli treść z błędami, to i tak może być błąd. Żeby tego uniknąć dokument możemy sprawdzić używając validatora Html i Css na stronach W3C(oprócz specyfikacji, jest tam też sporo samouczków, bardzo fajnie napisanych).