czwartek, 20 października 2011

Piszę bibliotekę...

Nie jakąś zaawansowaną, najprostszą. Na razie niewiele się w niej konfiguruje. Jest ona wynikiem "zamówienia" jednego fotografa na stronę. Ponieważ nie znalazłam niczego, co by w 100% zaspokoiło moje (w sumie to tego fotografa) wymagania, to zaczęłam pisać coś swojego. Najpierw chciałam sama, ale z czasem doszłam do wniosku, że się nie wyrobię w terminie, więc używam jQuery.

Kilka następnych wpisów będzie swoistym dziennikiem moich zmagań. Proszę się nie śmiać :))

wtorek, 18 października 2011

odwoływanie się do elementów obiektu w JS

W JavaScripcie jest swoista dowolność jeśli chodzi o adresowanie elementów w obiekcie. W ramach przypomnienia - wszystko w JS jest obiektem - Array, Function, String... Adresować elementy możemy używając kropki i nazwy elementu:

obiekt.pole

lub tak, jak w tablicy biorąc nazwę w nawiasy kwadratowe (już bez kropki):

obiekt["pole"]

Gra i buczy. A co zrobić, gdy nazwę pola mamy w zmiennej? Wtedy zapis z kropka zwróci nam undefined, bo w zapisie z kropką podajemy nazwę bez stringów, czyli w kodzie:

var abc = "pole";
alert(obiekt.abc);

odwołujemy się do pola o nazwie "abc".

W sytuacji, gdy nazwy pól mamy w zmiennych najbezpieczniej jest korzystać z zapisu z nawiasami kwadratowymi:

var abc = "pole";
alert(obiekt[abc]);

sobota, 15 października 2011

jak async może skrócić życie developera o kilka lat

To, że nie mam jeszcze siwych włosów jest chyba tylko zasługą ich koloru dobrze wyschniętej słomy.

Piszę "prostą" galerię, oczywiście w JavaScript, a co. Dodatkowo korzystam z ogłupiacza o nazwie jQuery, choć coraz poważniej myślę o porzuceniu jQuery i napisaniu surowego JS. Oczywiście moja aplikacja korzysta z Ajaxa, bo w przeciwieństwie do znalezionych przeze mnie różnych gotowych tworów ma ona obsługiwać nieznaną ilość zdjęć, więc ładowanie ich wszystkich w HTML mija się z celem. Tak więc wymyśliłam sobie, że przy uploadzie plików na serwer dane o pliku oraz jego opisie wrzucane są do pliku txt, który trzyma zserializowany obiekt JSON z danymi wszystkich plików.

No i pobieram sobie Ajaxem wyżej wymieniony plik. Tuż przed operacją Ajaxową zdefiniowałam sobie lokalną dla pliku zmienną do której będzie wczytywany obiekt. W funkcji callbackowej dla success (przypominam, ze pracuję na jQuerowej funkcji $.ajax()) przypisuję sobie uzyskane dane i...

... i nic.

Po dobrych dwóch godzinach szukania ki diabeł, zabawy alertami, Firebugiem itp, coś mnie tknęło i jeszcze raz przeanalizowałam co ja do tej funkcji przekazuję. A jest trochę tych rzeczy. A wśród nich "async" ustawiony na... true...

No to jak ja mogę oczekiwać, że kod, który wykonuje się w funkcji ajax będzie pisał mi coś do zmiennej, która już nie jest używana, bo korzystający z niej kod wykonał się, gdy funkcja ajax wykonywał request...

Zmiana wartości parametru "async" z true na false rozwiązała problem... Oby wszystkie potknięcia dało się tak łatwo rozwiązać...

wtorek, 11 października 2011

i gdzie to gna??

Siedzę w aplikacjach internetowych od 2000 roku. Jak zaczynałam, HTML3 (pamięta ktoś to?) wciąż był w użyciu a HTML4 stawiał swoje już nie pierwsze, ale wciąż niezbyt pewne kroki. PHP3 kończyło swój żywot i właśnie 4 zaczynała hasać po serwerach. Wszystko pięknie.

W 2009 roku pojawiły się pierwsze informacje o HTML5, ale dopiero w tym roku specyfikacja osiągnęła taki poziom, by można było zacząć coś dłubać. PHP trochę szybciej 5 wersję wypuściło, ale umówmy się, że specjalnie innego wyjścia nie było... bo w 4 to tylko cień obiektowości gdzieś majaczył na horyzoncie.

Ale teraz to chyba już za daleko zaszło. Ktoś pamięta pierwszego Firefoxa? Ja pamiętam. W tym roku instalowałam najnowszą 4 wersję. A dziś Firefox mi się narzuca z wersją 7 (no już od kilku tygodni). SIÓDMA wersja!!!

CSS3 rekomendację W3C dostał w tym roku. Zanim przeglądarki zaimplementują wszystko, (zwłaszcza IE) to pewnie kilka lat minie. A na w3.org już można wstępny moduł specyfikacji CSS4 przeczytać... Google Chrome dużo młodszy niż Firefox, a już 10 wersję ma...

No więc ja się pytam... gdzie to wszystko gna? Po kiego grzyba nam te wersje softu i technologii rosną jak szalone? Przecież nie ma możliwości nad tym wszystkim panować. Podjęłam decyzję, że 7 wersji Firefoxa nie zainstaluję. Póki co opanowałam jakoś HTML5 i właśnie utrwalam zdobytą wiedzę, właśnie staram się jakoś dogadać z CSS3... choć różnie mi to wychodzi...

Trzymajcie kciuki, bo ja tak gnać nie umiem... a jako członek społeczności IT muszę trzymać rękę na pulsie... wracam do CSS3.

poniedziałek, 10 października 2011

Ciasto

 

 

Ciasto popełnione dzis wieczorkiem. Mniam!!!
Posted by Picasa

Zdjęcie

 
Posted by Picasa

Co w trawie piszczy :)

Pozycjonowanie tekstu

Wyśrodkowanie tekstu w pionie i poziomie nie zawsze jest najłatwiejszą sprawą. Widać to zwłaszcza po różnych pomysłach, np div w znaczniku p, przezroczysty 1px gif, który jest rozciągany i wstawiany tak, żeby przesunąć tekst względem dowolnego elementu itp.

Najprostszym sposobem jest użycie dwóch właściwości css:
- text-align (wyśrodkowanie w poziomie)
- line-height (wyśrodkowanie w pionie).

Użycie jest dość proste i wyjaśnione na podlinkowanych stronach. Od siebie dodam, że text zawsze będzie się wyświetlał dokładnie w połowie wysokości linii, tak więc ustawiając wartość line-height na równą wysokości kontenera mamy pewność, że tekst będzie wyśrodkowany w pionie.

sobota, 8 października 2011

HTML5 i outline

Każdy frontendowiec zna właściwość outline z CSS.Wraz z HTML5 pojawił się nowy outline, tym razem w kontekscie samego HTML.

Co to jest outline? To inaczej spis treści strony zrobiony na podstawie znaczników tworzących nowe sekcje i opisujących ich znaczników hx (gdzie x jest cyfrą od 1 do 6). No tak, i tu wchodzimy w to, co nowego przyniósł nam HTML5. Za bardzo teraz rozwodzić się nie będę, zostawię to na inny wpis. Jednak to co jest ważne, to fakt, że znaczniki zostały pogrupowane ze względu na ich zastosowanie. Została wyróżniona grupa znaczników, które tworzą nowe sekcje w kodzie, pod względem semantycznym. Zaliczamy do nich znaczniki:
- section
- article
- nav
- aside.
Ich użycie poza semantycznym wyróżnieniem elementu (np artykułu, sekcji z newsami, nawigacji czy bloku reklam) dodaje nową sekcję w outline. Jeśli wewnątrz takiego tagu umieścimy tag hx (gdzie x jest cyfrą od 1 do 6) t w outlinie zamiast informacji o nienazwanej sekcji pojawi się tekst wpisany w tag hx.

Powstało kilka aplikacji (m.in. na Chrome i FF) sprawdzających outline, ale ja sama korzystam z oulinera dostępnego online. Wszystkim ciekawym polecam sprawdzenia outline WP.pl. Według mnie jest bardzo dobry, wręcz idealny :).

Biorąc pod uwagę outline, pojawia się nowy standard w kodowaniu. Nie dość że strona ma się walidować, wyświetlać poprawnie pod różnymi przeglądarkami, to jeszcze musi mieć poprawny outline.

czwartek, 6 października 2011

HTML5... i co z tym począć ??

HTML5 bardzo mi przypadł do gustu. Semantyka, outline... to złapało mnie za serce. Kod wygląda czytelnie i jest przejrzysty nawet dla kogoś kto nie przyłożył ręki do jego stworzenia.

Wzięłam się za specyfikację i ogólne poznawanie nowych znaczników oraz standardów i... no właśnie i porażka. O ile w Chrome i FF jakoś te strony wyglądają, o tyle IE mnie dobił. I jak tu pisać czytelne strony i stosować się do standardów, jeśli nawet najnowsze wersje przeglądarek nie rozumieją co do nich mówię??

No nic uczę się dalej...

sobota, 1 października 2011

permanentny brak czasu...

Nauka zajmuje wściekle dużo czasu... a codziennie pojawia się tyle nowych rzeczy, których chciałabym się nauczyć...

czwartek, 29 września 2011

overflow - co to jest?

Do niedawna używałam overflow trochę na chybił trafił. Jak coś mi nie banglało to sprawdzałam, czy może overflow: hidden nie rozwiąże problemu. Takich opcji awaryjnych mam kilka i fakt, że nie do końca wiem KIEDY należy je stosować wynika tylko z mojego lenistwa a nie z tego, że jest to jakaś wiedza tajemna.

Ale wracając do overflow. Kumpel kilka dni temu uderzył do mnie ciemną nocą z zapytaniem, jak w divie zrobić pasek przewijania. Widziałam takie rzeczy na kilku stronach, ale sama się w to nie bawiłam, w sumie nigdy nie było potrzeby. Szybki przegląd mojej wiedzy i wniosek jeden - nie wiem. Ale od czego mamy google.

Odpowiedź z googla dość jendoznaczna: overflow:scroll;. I wtedy EUREKA!! overflow decyduje o zachowaniu diva względem jego treści, a zwłaszcza tej treści, która w wyżej wymienionym divie się nie mieści. Jak dam hidden, to ta treść nie będzie widoczna, jak dam scroll to pojawi się pasek przewijania umożliwiający jej przeglądanie.

Zainteresowanych odsyłam do strony dokładnie opisującej co i jak :) tutaj.

czwartek, 15 września 2011

Zdjęcia

 
Posted by Picasa

span w IE i innych przeglądarkach

No tak, używam sobie spana (bo mi diva zabronili) żeby zrobić z niego śliczny zielony prostokącik. Przezornie testuję na IE najpierw. Działa. Odpalam FF i co? i jajo... spana nie widać. No żesz ty...

Dla potomnych, w spanie warto używać właściwości display: block;, bo inne nie działają. Można również ustawić float (jeśli display: block będzie nam przeszkadzać).

ctrl + w przeglądarce to zło

Webmasterka, czyli frontend development to już osobna gałąź wiedzy specjalistycznej obejmującej przeróżne techniki prezentacji rożnych rzeczy na www.

Jako, ze ta gałąź mnie bardzo interesuje często sama podejmuje wyzwanie i borykam się z problemami różnic w przeglądarkach.

Najczęściej tnę layouty wymagające pixelowej dokładności, przez co często używam ctrl + do obejrzenia w zbliżeniu, czy wszystko układa się jak należy. Minusem tego rozwiązania jest nie zawsze dokładny powrót do oryginalnej wielkości okna, przez co wczoraj spędziłam 3 godziny starając się odkryć czemu cholerny padding i margin generują dodatkowy czarny pasek z boku diva...

Okazało się, że cały problem leżał w użyciu jeden raz więcej ctrl -.

środa, 10 sierpnia 2011

date() nieprawidłowy czas w WordPressie

W ramach pisania własnego pluginu musiałam się zmierzyć z problemem w środowisku WP, jak się okazało, niebanalnym.

date('Y-m-d H:i:s');

Powyższy kod powinien zwrócić datę, godzinę, minuty i sekundy zgodne z lokalnymi ustawieniami serwera na którym działa PHP. Ale nie zwraca. Zwraca czas Greenwich, czyli na tę chwilę 2 godziny wcześniej, niż powinno. Sprawdziłam locale, odpaliłam PHP z linii komand. Wszystko cacy. To czemu w WP ten czas jest niezgodny z lokalnym?? Ano, WP sobie nadpisuje ustawienia...

Jak to rozwiązać? Użyć funkcji current_time() dostarczanej przez WP. Funkcja ta z parametrem "timestamp" zwróci lokalny czas serwera, a nie GMT:

date('Y-m-d H:i:s', current_time('timestamp'));

I problem z głowy. I tylko nie rozumiem skąd poniższy tekst w dokumentacji WP:
WARNING: current_time('timestamp',1) returns (as a timestamp) the server time, not (as expected) GMT! Because this is exactly what PHP's time() returns, current_time('timestamp',1) is superfluous and unnecessary -- use time().

Dlaczego powinnam oczekiwać, że zostanie zwrócony czas GMT? Czy ja o czymś nie wiem? Wcale mi się nie podoba zmienianie działania natywnych funkcji PHP. A do poprawnego działania mojego pluginu potrzebuję aktualnego czasu serwera. I muszę sięgać prawą ręką do lewej kieszeni, żeby wyciągnąć prostą rzecz.

czwartek, 4 sierpnia 2011

PHP Fatal error: wp-includes/cache.php on line 93

PHP Fatal error: Call to a member function get() on a non-object in [...]/wp-includes/cache.php on line 93

Od godziny staram sie znalezc ki diabel? I co? I gdzies trafilam na info, ze to uzywanie funkcji wp_cache_[akcja]() (np wp_cache_get()) daje taki efekt. Grep na katalogu z moja skorka nic nie zwrocil...

Wylaczylam wszystkie pluginy. Czysto, zero bledu. zaczelam je wlaczac po kolei i bach... Aktywowanie pluginu, ktory wlasnie pisze powoduje ten blad. No to stara metoda zakomentowalam calosc i dawaj odkomentowywac po kawalku. I co?

wp_deregister_script('handlerDoSkryptu');


bylo przyczyna. Chcialam to zrobic dobrze i przedobrzylam. Niewazne ile skryptow zarejestruje, WP ewidentnie sam je czysci. Jak moj obiekt przestaje istniec (uruchamia sie __destruct()) to o globalnym obiekcie $wp_object_cache aplikacja juz nic nie wie, bo niszczy go gdzies wczesniej.

niedziela, 31 lipca 2011

Mam wenę

Twórczą oczywiście. Nawet WoW mnie specjalnie nie ciągnie. Siedzę i kombinuję. W blogu pojawi się nowy wątek. Zaczynam pisać aplikację. Do publicznego użytku. W sumie to będą dwie aplikacje. Jedna w sumie już jest... Jeszcze muszę popracować chwilę nad nią, ale ogólnie widać finish. Druga wciąż istnieje tylko w sferze planów i założeń, ale czuję do niej coraz większy pociąg.

piątek, 22 lipca 2011

Wordpres SEO by Yoast - gdzie sa moje meta tagi??

No wlasnie. Przez ostatnia godzine probowalam sie tego dowiedziec. Kilka wskazowek:
1. nalezy instalowac najnowsza wersje pluginu. I najlepiej miec most up-to-date Wordpressa.
2. nalezy UWAZNIE czytac plik readme.txt, mozna tam znalezc wiele wskazowek, ktore dla autora sa tak oczywiste, ze nie zamiescil ich w dokumentacji...

A rozwiazaniem naszego problemu jest:

<?php wp_head(); ?>

Po mieszczeniu tego w headzie (przed zamknieciem sekcji head w htmlu) wszystko zaczyna dzialac :)

czwartek, 21 lipca 2011

Impreza firmowa

No była. W zeszły piątek. Nie zaszalałam na niej, bo akurat nie bardzo mogłam, ale było wesoło.

O 20 w piątek Asystentka Szefa zebrała nas do kupy i zaprowadziła do knajpy. Miejsce z duszą w starym stylu. Po środku parkiet, na podeście pod ścianą miejsce dla orkiestry i sprzęt dla DJ. Stoły i stoliki poukrywane w nawach i pomiędzy kolumnami. Pełen przekrój wiekowy, całe rodziny przy stolikach.

Zasiedliśmy, przyszedł kelner i porozdawał karty. Wybór jedzenia przyzwoity, choć nie powalający na kolana. Zamówiliśmy (dużym powodzeniem cieszyła się pizza :P).

Towarzystwo się najadło, nabrało humoru, muzyka zaczęła grać coraz żwawiej. Nasza Asystentka wymyśliła grę, w wyniku której każdy pogadał z każdym. Było to o tyle fajne, że wielu z nas dopiero dołączyło do zespolu i niewiele wiedzieliśmy o sobie nawzajem. W miedzy czasie Szef zamówił kolejkę Jaegermeistra dla wszystkich. Zanim nasza gra dobiegła końca towarzystwo zdążyło napić się drugiej i trzeciej kolejki.

Miałam okazję pogadać z Szefem. W sumie to był monolog, ale warto było posłuchać. Poza rozmową o tym, że mnie przyjęli nie miałam okazji jeszcze z nim pogadać.

Ogólnie ludzi w firmie mam fajnych, lubię ich. Mam swoją pracę, którą też lubię. I tak ma być.

poniedziałek, 18 lipca 2011

Dodawanie podstrony do menu w back-end

Załóżmy, że stworzyliśmy własną skórkę i własny typ postów - "MojBlog". W panelu administracyjnym widzimy sekcję MojBlog. Ale chcielibyśmy mieć więcej możliwości niż tylko oglądanie dodanych postów i dodawanie nowych lub edycja istniejących. Marzy nam się panel konfiguracyjny do naszych widoków (ja akurat używam widoków :) korzystając z połączenia Wordpressa z pewnym popularnym frameworkiem PHP). W sumie nieważne, co będziemy konfigurować, ważne, jak podpiąć nową stronę.

Wszystko sprowadza się do zarejestrowania nowej podsekcji w menu naszego typu artykułów. Można to zrobić wprost w pliku functions.php lub w osobnym, który dodamy do functions.php za pomocą polecenia include.

Najpierw definiujemy funkcję, która doda nam nową podstronę do menu:

function addViewOptionsPage() {
  add_submenu_page( 'edit.php?post_type=mojblog', __('View Options'), __('View Options'), 'edit_themes', 'theme_view_options', theme_view_options);
}


Następnie dodajemy tę funkcję do akcji wykonywanych w ramach panelu administratora:

add_action ('admin_menu', 'addViewOptionsPage');


Ta linijka powoduje, że zobaczymy upragniony link w podmenu naszego typu artykułu. Jednak otwierana strona jest pusta (lub PHP rzuca wyjątek). Musimy jeszcze zdefiniowac funkcję theme_view_options()

function theme_view_options() {
  echo "<div">test"</div">";
}


W tej chwili pojawia nam się strona z napisem test :)

Wordpress - instalacja widgetu i uruchomienie go w sidebarze

1. Znalezc interesujacy nas widget
2. sciagnac, rozpakowac i wkopiowac rozpakowany folder do wp-content/plugins
3. w pliku sidebar.php naszej skorki (theme) tworzymy blok podobny do:

<?php if ( is_active_sidebar( 'secondary-widget-area' ) ) : ?>
  <div id="secondary" class="widget-area" role="complementary">
    <ul class="xoxo">
      <?php dynamic_sidebar( 'secondary-widget-area' ); ?>
    </ul>
  </div>


4. w functions.php dodajemy (lub tylko modyfikujemy) funkcje inicjujaca widgety w danym bloku:

function myTheme_widgets_init() {
  register_sidebar( array(
    'name' => __( 'Secondary Widget Area', 'glg' ),
    'id' => 'secondary-widget-area',
    'description' => __( 'The secondary widget area', 'myTheme' ),
    'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
    'after_widget' => '</li>',
    'before_title' => '<h3 class="widget-title">',
    'after_title' => '</h3>',
  ) );
}


po czym ja dodajemy do wykonywanch akcji, rowniez w pliku functions.php:

add_action( 'widgets_init', 'myTheme_widgets_init' );


5. teraz pozostaje skonfigurowanie widgetu w panelu administracyjnym w Zakladce Appearance -> Widgets.

Oczywiscie kod HTML i CSS mozna sobie wpisac jaki sie chce.

środa, 13 lipca 2011

nie mam czasu na pisanie...

Dziewczyny nad morzem, a ja dzielę czas w miarę po równo pomiędzy pracę (8h + lunch), WoW (4-6h), czytanie książek (ze 2h się uzbierają) i spanie (coś koło 6-7h). W międzyczasie jeszcze zdarza mi się coś zjeść.

Ponieważ staczam boje z WordPressem (coraz bardziej wyrównane) postanowiłam dodać nową kategorię do bloga, o WordPressie oczywiście.

Ale póki co idę spać. Raidu dziś nie było, za to dostałam kilka fajnych itemków dla mojego shamana.

wtorek, 5 lipca 2011

Kwiatek z wczorajszego dnia

Wczoraj, w ramach wdrażania ludzi w nowe obowiązki Szefu tłumaczył jednemu z nowych z czym się Gita je... Biorąc pod uwagę fakt, z czego mnie egzaminowali... to chyba mieli różne wymagania w stosunku do mnie i do innych...

poniedziałek, 4 lipca 2011

pierwszy dzień w nowej pracy

Jako, że oprócz mnie do pracy przyszło jeszcze kilka nowych osób miałam okazję poobserwować sobie jak to wygląda. Zajmujemy jeden z 3 olbrzymich openspace'ów w bardzo dobrej lokalizacji w Berlinie. Każdy ma do dyspozycji stolik, komputer (czasami laptop) i monitor. Łącze średniej jakości, ale biorąc pod uwagę średni czas załatwiania czegokolwiek w Berlinie to i tak dobrze, że mamy jakiekolwiek łącze.

W kuchni olbrzymia lodówka (na razie siedzą tu 3 firmy-siostry), kuchenka mikrofalowa, expres do kawy z mnóstwem wynalazków, 2 misy z owocami regularnie napełniane. Każda z osób pracujących na piętrze ma swój dzień, gdy dyżuruje w kuchni. Dyżur polega na wkładaniu naczyń do zmywarki, a później ich wyjmowaniu i czasami przetarciu szafek.

W pracy byłam o 9:30. Dostałam czyjś komputer, bo mój mieli dowieźć. Przez pierwsze 3 i pół godziny czytałam dokumentację do Gita a później trochę poczytałam o Wordpressie. O 13 poszłam z ludźmi na lunch, ale zamiast jeść napiłam się China Town (Shweppes Ginger Ale ze świeżym sokiem z pomarańczy i imbiru). Gdy wróciliśmy o 14 dostałam komputer. Ładne, porządne pudło z 4 GB ramu i jakimś fajnym (podobno) prockiem. Podpięłam kabelki, włączyłam i... o zgrozo, zaczął instalować się Windows 7. Dobrze, że Professional, bo chyba zawału bym dostała.

Uderzyłam do Szefa z prośbą o jakieś CD, czy DVD, to ściągnę instalkę do Ubuntu, wypalę i postawię system. I się zaczęło. W całym openspace'ie NIKT nie miał płytki na zbyciu. Dostałam laptopa Szefa i dalej wgłębiałam się w literaturę fachową a mój Szef latał i załatwiał płytkę i instalkę do Ubuntu. Koniec końców trafił do kafejki internetowej. Ściągnął instalkę na USB, przestawił mi bootowanie na USB w biosie i... wystartował Windows. Tak poćwiczyliśmy jeszcze ze 4 razy, aż Szef się wpienił i poszedł do kafejki wypalić płytkę. Przyszedł z płytką. Zmieniliśmy bootowanie na napęd CD/DVD, włożyłam płytkę do napędu i... Windows.

Postanowiłam odpalić płytkę z Windowsa. Załadowałam system, włożyłam płytkę ponownie i... nic. Eksploruję zawartość płytki i co widzę? plik .iso... Mój Szef zamiast wypalić obraz płytki wypalił plik .iso...

Po zastanowieniu doszedł do wniosku, ze nie ma więcej płytek... Więc właśnie wypaliłam sobie instalkę Ubuntu na płytce i spakowałam, żeby nie zapomnieć do pracy.

Wyszłam o 18 choć miałam siedzieć do 18:30... ale co miałam, nudzić się? Szef zabrał laptopa, bo mu potrzebny. A ja na Windzie nawet netu nie miałam...

środa, 29 czerwca 2011

modyfikowanie aplikacji popełnionej przez kogoś innego

Wcześniej czy później każdy z nas musi zmienić lub poprawić coś co napisał lub zrobił ktoś inny. Jeśli nasz poprzednik jest specjalistą w swojej dziedzinie wprowadzanie zmian lub poprawek jest samą przyjemnością. Gorzej jeśli trzeba wziąć się za pracę amatora lub, co gorsza, osoby o niskich kwalifikacjach i wysokiej samoocenie co w połączeniu z totalnym brakiem autokrytycyzmu tworzy to, z czym mam obecnie do czynienia.

Aplikacyjka ma w sumie prostą funkcjonalność. Marketing wpisuje adres url strony, oczekiwany page rank, href, który powinien znaleźć się na stronie i kilka innych. Ja miałam za zadanie dodać możliwość dodawania kategorii (żeby wyniki dało się grupować według kategorii) oraz odczytywanie rel z szukanego linka.

Aplikacja składa się z prawie 300-linijkowego pliku index.php, który robi za model, viewer i controller w jednym... Dodatkowo jest zrobiony plik tylko dla crontaba. O ile index.php korzysta z klasy do nawiązywania połączenia z db i zadawania do niej pytań, o tyle plik dla crona... tworzy połączenie samodzielnie. W pliku index.php (w cronowym też) roi się od napisanych z palca i potraktowanych sprintf() zapytań. To do czego służy w takim bądź razie pg_prepare() ??

Mam tam osobny katalog "templates" pełen plików php... poza jednym... Jest to template głównej strony zrobiony w PHPTAL... Po kiego grzyba dołączać całą bibliotekę, żeby zrobić w niej JEDEN plik? Nie wiem. Mój szef też nie wiedział. Twórcę tej aplikacji określił jako sprytny ale bez doświadczenia...

W ramach wprowadzania poprawek uzupełniłam klasę do kontaktów z bazą danych o metodę prywatną zwracającą identyfikator połączenia z bazą danych i podaję ten identyfikator za każdym razem, gdy zadawane jest pytanie bazy danych, żeby nie korzystać z ostatnio nawiązanego połączenia (które niekoniecznie musi być moje). Dodatkowo dodałam metodę sprawdzającą czy dane zapytanie było już przygotowane. No i w przeciwieństwie do całej aplikacji zamiast wyciągać ze źródła różne elementy htmla za pomocą wyrażeń regularnych korzystam z klasy DOMDocument()...

Aplikacja działa, jak trzeba, ale bałam się dotykać do niektórych części, bo mimo dużego wysiłku nie udało mi się zrozumieć jak i dlaczego działa...

Co więcej ilość zagnieżdżonych ifów wskazuje, ze twórca miał problem z rekurencją...

Ogólnie taką aplikację polecam jako antywzorzec :)

poniedziałek, 27 czerwca 2011

zmieniam pracę

W obecnej firmie jestem na tak zwanej praktyce. Dlaczego? Bo mieszkam tu dopiero 5 miesięcy, wciąż nie znam języka (na szczęście wszyscy lepiej lub gorzej mówią w uniwersalnym, czyli po angielsku), bo nie mam doświadczenia w pracy na tym rynku. A przede wszystkim, bo chciałam pracować, ale na pół etatu, żeby mieć czas na naukę języka i dzieci.

Jednak w tzw. międzyczasie zmieniła się trochę nasza sytuacja i chcę mieć normalną pracę na cały etat przyzwoicie płatną. Najmłodsza ma załatwione przedszkole obok domu - teraz też chodzi do przedszkola, ale do polskiego i jest czynne zbyt krótko jak na nasze potrzeby, no i jest trochę dalej. Jakieś 10 minut spacerkiem dalej Starsza ma szkołę. Tak więc wracając ze szkoły mogłaby odbierać Najmłodszą i mogą razem wracać (spacerkiem, albo jeden przystanek autobusem).

W każdym bądź razie zaczęłam się rozglądać. Wysłałam CV na ofertę firmy XYZ, którą znalazł mój ślubny i... w następnym tygodniu umówili się na rozmowę. Do końca czerwca mam tydzień wypowiedzenia, później miesiąc. Uprzedziłam moich rozmówców i... cisza. W zeszłym tygodniu w czwartek - telefon. Chcą podjąć ze mną współpracę na zaproponowanych przeze mnie warunkach. Uśmiałam się w duchu. Czekali praktycznie do ostatniej chwili. W piątek przed pracą odbyłam z nimi jeszcze jedną rozmowę. Po czym poszłam do pracy i powiadomiłam mojego przełożonego, że rezygnuję.

No i się zaczęło. Oni nie chcą, dobrze im się ze mną pracuje i w ogóle. I mam przedstawić swoją wizję pracy. No to przedstawiłam, podałam kwotę o 3k euro w skali roku wyższą, niż to co miałam dostać z XYZ i wysłałam mojemu szefowi w piątek wieczorem.

Dziś XYZ przysłało mi umowę na maila. A szef mojej firmy stwierdził, że po dwóch miesiącach współpracy i to na pół etatu on nie może zdecydować się na zatrudnienie mnie na cały etat, bo jeszcze nie może ocenić moich możliwości. A poza tym zaproponowałam taką kwotę na jaką ich nie stać. Grzecznie powiedziałam, że rozumiem, dlatego złożyłam wypowiedzenie a nie zapytanie, czy mogą mnie zatrudnić na stałe. Dowiedziałam się, że chcieliby żebym skończyłą praktykę. Jednak grzecznie, ale stanowczo odmówiłam i pracuję tylko do czwartku. W piątek mam wolne. A 4 lipca (btw. piękna data w USA) zaczynam w XYZ.

A Starsza zdaje w tym tygodniu egzaminy. Dwa już zaliczone, na 4.

piątek, 24 czerwca 2011

Kobieta w IT?

Masakra. Najczęściej jestem jedynym żeńskim elementem w całym zespole. Dobrze, że nie w firmie, bo miałabym problemy z identyfikacją płci.

Czym się zajmuje kobieta w IT? Zależy. Ja akurat siedzę w programowaniu aplikacji WWW. Była dziewczyna znajomego jest adminem. Kilka znajomych zajmuje się grafiką komputerową. Co prawda to już nie stricte IT, ale według mnie bez grafików to by IT daleko nie zaszło :)

Prywatnie jestem mamą i żoną. Najbardziej nie cierpię prac domowych ze sprzątaniem i prasowaniem na czele. Gotowanie jakoś idzie. Najbardziej lubię siedzieć przy komputerze zarówno w celach zawodowych jak prywatnych. Lubię też spędzać czas z dzieciakami.

A i mieszkam poza Polską. W stolicy jednego z krajów za naszą zachodnią granicą.