[SVN] Synchronizacja [do wielu] repozytoriów.

Jeden z moich kolegów “po fachu” miał ostatnio problem ze swoim repozytorium SVN i zwrócił się do mnie z prośbą o pomoc w znalezieniu rozwiązania. Sprawa wyglądała następująco: na wewnętrznym dysku komputera zlokalizowana była kopia robocza [Working Copy], na której pracował i repozytorium kodu, do którego zamierzał commitować zmiany. Na dysku zewnętrznym “wymarzył sobie” za to backup tego repozytorium. Problem polegał na tym, że trzeba było w jakiś sposób ten backup zrobić oraz usprawnić jego wykonywanie na tyle, żeby kolega nie musiał “męczyć się” bardziej niż do tej pory. Sprawa była teoretycznie prosta, jednak rozwiązanie polegające na zwykłym kopiowaniu danych pomiędzy dyskami nie wchodziło w grę, ponieważ rozmiar repozytorium był rzędu gigabajtów [bardzo dużo danych binarnych]. Trzeba było zatem wymyślić lepszy, bardziej inteligentny sposób na rozprawienie się z używanym przez nas systemem kontroli wersji.

[C++] "std::string" vs. "const std::string&", czyli o przekazywaniu zmiennych słów kilka.

Samodzielna nauka jest w wielu przypadkach bardzo ciekawym doświadczeniem, z co najmniej dwóch powodów:

  • satysfakcja z udanej eksploracji nieznanych dotąd zasobów wiedzy.
  • możliwość samodzielnego wyboru tempa i zakresu informacji opracowywanych podczas jednej "lekcji".
Ma jednak jedną podstawową wadę - nikt poza uczniem nie weryfikuje poprawności przetwarzanych danych, a także ich zrozumienia. Dlatego czasem, pomimo tego, że nierzadko w wielu sprawach potencjalny uczeń ma rację, to i tak trzeba go "wyprostować", wskazać inny, bardziej poprawny, sposób myślenia. Do czego zmierzam? Jak zwykle, chcąc podzielić się z innymi nieco wiedzą, do jednego z moich doświadczeń z przeszłości.
[Firefox] Wieloliniowy pasek zakładek.

Po raz kolejny problem z Firefoxem skłonił mnie do napisania artykułu na blogu - tym razem był to pasek zakładek, którego pojemność, pomimo udostępnienia mu pełnej szerokości mojego dwudziestodwucalowego monitora [1680 pikseli] stała się w pewnym momencie zbyt mała i zbyt dużo elementów pojawiało się w pasku przewijania z prawej strony. Na początku pomyślałem o wbudowanym rozwiązaniu, spróbowałem więc “po prostu” dodać brakujący element z menu kontekstowego - [PPM] na belce głównego menu [Plik, Edycja, etc.], pozycja “Dostosuj…”. Dodałem nowy pasek, jednak nazwanie go paskiem zakładek byłoby sporym nadużyciem, jako, że umożliwiał dodanie dowolnego elementu z listy w oknie “Dostosuj pasek narzędzi”, ale samych odnośników już, niestety nie. Jak zwykle więc, wiedziony nieustanną potrzebą ułatwiania [tja… ;]] sobie życia, otworzyłem nową kartę w przeglądarce i… zagooglałem.

[DreamWeaver] Kolorowanie kodu w plikach o niestandardowych rozszerzeniach.

Pomagałem ostatnio koledze w przepisaniu i uproszczeniu pewnego skryptu w języku PHP. Pomijam jakość samego kodu, która, mówiąc kolokwialnie, nie była zbyt wysoka. Wszystkie pliki które były w trakcie jego działania wstawiane przez różne wywołania funkcji:

js/^(include|require)(_once){0,1}\(\);$/

[include(), require(), include_once() i require_once(), taki mały żarcik ;]] miały rozszerzenie “.inc”, w związku z czym DreamWeaver, którego używaliśmy do edycji kodu, wyświetlał nam jedynie czarny tekst, który był mało czytelny. Jako, że zawsze staram się robić wszystko porządnie, od razu poszukałem rozwiązania problemu, ponieważ praca z nieczytelnym kodem to jedynie strata czasu, a jak wiadomo, czas to pieniądz, nawet, jeśli się pracuje za darmo. ;]

Contact
Hi, if there is anything I can do to help you, [please send me an email](tomasz@kowalczyk.cc?Subject=I want to hire you!).
Kontakt
Jeśli chcesz się ze mną skontaktować, preferuję drogę mailową, mój email to: tomasz [dot] piotr [dot] kowalczyk [at] gmail [dot] com. Oczywiste fragmenty tego adresu należy zastąpić odpowiednimi znakami. Wszelkie inne formy komunikacji [komunikatory, telefony] podam w trakcie korespondencji. Możesz też zostawić komentarz przy artykule, wtedy postaram się odpowiedzieć na podany przez Ciebie adres email.
[WordPress] Szablon LightWord i polskie znaki.

Dzisiaj rano stwierdziłem, że warto poszukać nowego szablonu dla bloga. Ten, który miałem poprzednio nie był zły [Infocreek Aspire, gdyby ktoś szukał], ale jego stylistyka była zbyt mało “techniczna”. Muszę przyznać, że poszukiwania nie były łatwe - Google nie miało zbyt wiele do zaoferowania na zapytania w stylu “wordpress amazing templates”, “wordpress technical templates”, czy też “wordpress templates for programmers”. Minus był jeden i to duży - każde zapytanie odnoszące się chociaż trochę do strony “technicznej” wordpressa od razu kierowało na strony zawierające poradniki “jak zrobić własny szablon”. Z pomocą przyszła wbudowana w silnik wordpressa wyszukiwarka szablonów, dostępna w menu pod pozycją “Appearance > Add New Themes”.

[PHP, (My)SQL] Systemy uprawnień na stronach internetowych, część 0x00: Wstęp.

Każdy, kto zajmuje się programowaniem stron internetowych w zakresie szerszym niż tworzenie szablonów w HTMLu na pewno zetknął się z problemem zarządzania tym, co mogą i czego nie mogą użytkownicy danego systemu. Oczywiście nie mam nic do grafików i im podobnych, bardzo szanuję ich pracę jako człowiek dotkliwie pozbawiony zdolności plastycznych ;], jednak w tym artykule zamierzam skupić się na zgoła innym temacie, jakim jest problem nadawania i obsługi uprawnień w aplikacjach internetowych. Jest to dosyć ważne zagadnienie, ponieważ od niego bezpośrednio zależy bezpieczeństwo naszego skryptu. Idealną sytuacją byłaby taka, w której nasi użytkownicy wiedzieliby, jaki jest zakres ich uprawnień i nawet pomimo udostępnienia niektórych funkcji, w swojej uczciwości nie mieli by nigdy zamiaru utrudnienia życia mającym i bez tego dużo pracy programistom. Jeśli użytkownicy Twojego systemu spełniają te założenia, śmiało możesz zakończyć czytanie na tym zdaniu. ;] Wszystkich, którzy jednak nie mają takiego szczęścia, zapraszam do lektury niniejszego artykułu, w którym opiszę systemy zarządzania uprawnieniami o jakich słyszałem / czytałem, bądź z których sam korzystał[em].

[C++] Wydajność arytmetyki wskaźników.

W tym artykule chciałbym przedyskutować sposoby stosowania i wydajność arytmetyki wskaźników przy poruszaniu się po tablicach. Na wstępie muszę zaznaczyć, że dosyć trudno było mi wybrać tytuł, bo nie wiedziałem jak nazwać ten problem. ;] Ale do rzeczy. Programując jeden z moich projektów zacząłem zastanawiać się nad tym, w jaki sposób można najbardziej optymalnie wykonać operacje na każdym z elementów, tak, aby był jak najmniejszy narzut na dostęp do każdego z nich. Nie mogłem znaleźć w internecie żadnych informacji, w których byłoby napisane jednoznacznie, jaką konstrukcję należy wybrać, zostałem więc zmuszony do samodzielnego przetestowania wszystkich, jakie znałem. ;]

[PHP] Nieudokumentowane parametry skryptów PHP - Easter Eggs.

Programiści mają to do siebie, że uwielbiają się bawić. Żaden z nas nie jest do końca takim no-life’em, który potrafi tylko cały dzień patrzeć na tysiące linii kodu, szukając błędu bądź też programując nowe funkcje. Czasem trzeba się też “rozerwać”. ;] Jako, że propozycja oderwania się od ekranu jest zwykle przyjmowana z ciężkim westchnięciem, w cenie jest umiejętność “zabawienia się” pozostając cały czas w “swoim świecie”. Można to robić na różne sposoby, jednym nich, którego przykład opisuję w niniejszym artykule, jest umieszczanie w kodzie nieudokumentowanych funkcji, które mogą być aktywowane wyłącznie przez osoby które o nich wiedzą, bądź dogłębnie przestudiowały źródła projektu.