Pokazywanie postów oznaczonych etykietą programowanie. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą programowanie. Pokaż wszystkie posty

28 lipca 2007

Ulubione: Blogi o WWW

Tym postem otwieram pewną serię, w której będę przedstawiał moje ulubione serwisy - warte polecenia i częstego odwiedzania. Dzisiaj pokrótce przybliżę Wam strony, które traktują o wszelakich aspektach serwisów WWW - od webmasteringu i usability, przez newsy o nowych łebdwazerowych projektach, aż po prywatne blogi z poradami i ciekawostkami.

Polskie

AntyWeb [http://antyweb.pl/]
Blog Grzegorza Marczaka, traktujący głównie o portalach społecznościowych - polskich i zagranicznych, a także o ciekawostkach na rynku nowych technologii. Posty są zgrabnie pisane, czasem z własnymi przemyśleniami. Jest to ciekawe źródło informacji przede wszystkim o polskich zasobach web 2.0. Blog jest często aktualizowany, co jest sporym plusem.

Blog Piotra Koniecznego [http://blog.konieczny.be/]
Ciekawe notki, pisane mniej regularnie, lecz zawsze na wysokim poziomie. Od hackingu i bezpieczeństwa, przez przeglądarki (głównie Opera), serwisy internetowe, aż po równie ciekawe osobiste spostrzeżenia.

Poradnik webmastera [http://poradnikwebmastera.blox.pl/html]
Blog Pawła Wimmera - chyba nie sposób się nie zetknąć z tym nazwiskiem :-). Nazwa bloga może nie do końca odzwierciedla tematykę, chociaż także sporo jest tu postów o szeroko pojętym webmasteringu, serwisach internetowych i nowych technologiach, pisanych w miarę regularnie. Autor pisze także czasem notki bardziej osobiste i polityczne - przy obecnej sytuacji wcale się temu nie dziwię ;-)

Perfection or Vanity? [http://perfectionorvanity.com/]
Piotr Petrus (Riddle) też jest z pewnością znany internautom interesującym się webmasteringiem. Tym razem posty są bardziej techniczne, opisujące rozwiązania często pojawiających się problemów przy tworzeniu stron. Doskonałe (lub czasem mniej doskonałe) rozwiązania w JavaScripcie, (x)htmlu i innych technologiach. Szkoda tylko, że tak rzadko ostatnio pisze.

TheTarPit [http://dezinformacja.org/tarpit/]
Tym razem specjalista od Semantic Web i inżynierii oprogramowania. Autor - Michał Świątkiewicz - podobnie jak Riddle przedstawia różne techniczne rozwiązania webmasterskie, chociaż głównie w temacie SW. Rzadko pisane, lecz zawsze ciekawe.

Web 2.0 [http://web20.pl/]
Jak sama nazwa wskazuje - blog o web 2.0, prowadzony przez Sebastiana Kwietnia. Głównie o polskim web 2.0 i trendach w internecie. Także nieregularny, lecz często jest ciekawym uzupełnieniem innych blogów w tej tematyce.

Webusability.pl [http://www.webusability.pl/]
Profesjonalny (jak dla mnie) blog o użyteczności. Prowadzi go Tomek Karwatka, z którym kiedyś przez pewien czas współpracowałem przy magazynie NoName.

WebAudit [http://webaudit.pl/blog/]
Robert Drózd także pisze o użyteczności serwisów internetowych. Ciekawe, profesjonalne podejście do usability, marketingu internetowego i nowych technologii. Fajne uzupełnienie dla webusability.pl.

Zagraniczne

Mashable [http://mashable.com/] oraz TechCrunch [http://www.techcrunch.com/]
Dwa podobne do siebie serwisy z dużą ilością newsów dotyczących nowych serwisów internetowych. Mashable jednak głównie skupia się na wszelkiego rodzaju społecznościach, a TechCrunch także ogólnie na nowych technologiach. Często jednak mają w tym samym czasie te same newsy. Podstawa dla maniaków NT.

Lifehacker [http://lifehacker.com/]
Trochę innego typu serwis, gdyż nie skupia się tylko na internecie. Przeczytać w nim można wszelakie porady dla użytkowników komputerów. Opisuje serwisy społecznościowe i niespołecznościowe, nowe programy komputerowe, porady odnośnie systemów operacyjnych, ale także życiowe (np. jak zrobić łapkę na muchy ;-)). Kilka(naście) postów dziennie.

To są najciekawsze serwisy, które przeglądam regularnie (czyt. zapychają mi regularnie czytnik RSSów ;-)). Znacie jakieś inne godne polecenia blogi? A może macie własne przemyślenia co do tych opisywanych przeze mnie? Piszcie śmiało w komentarzach. Zapraszam!

16 lipca 2007

Moje pomysły na udoskonalenie narzędzi CASE

Większość programistów pracuje wykorzysując te narzędzia, inni ich nie używają z różnych przyczyn, ale wiedzą o co chodzi. Tym, którzy nie wiedzą podaję krótką i strawną definicję, żeby wiedzieli o czym jest ten artykuł i ewentualnie przestali go czytać :-)

Narzędzia CASE (czyli Computer Aided Software Engineering lub Computer Aided System Engineering) to systemy komputerowe, przeznaczone do wspomagania rutynowych czynności procesu tworzenia oprogramowania. Dzięki nim projekty tworzy się dokładniej, a praca nad diagramami, sprawdzanie ich poprawności oraz śledzenie wykonanych testów jest prostsze i szybsze.

Prolog
Wiele CASE'ów, szczególnie tych darmowych, ma słabą funkcjonalność. Inne – zazwyczaj te komercyjne – zbyt dużą jak na przeciętnego programistę. Niektóre systemy ograniczają się do tworzenia diagramów UML, modelowania baz danych, czy też prostego generowania szablonu kodu i schematycznych dokumentacji. Reverse engineering jest rzadkością, chociaż np. StarUML sobie z tym radzi. W innych „systemach” widzimy przerost formy nad treścią, chociażby taki Visio, który z założenia miał być dla nas czymś w rodzaju CASE (chociaż de facto nim nie jest). Czy można stworzyć idealne rozwiązanie dla wszystkich? Teoretycznie nie, ale czemu nie spróbować?

Prawdziwa modułowość
Sporą popularnością wśród młodych informatyków cieszą się programy, które można dostosowywać do swoich potrzeb. Dla informatycznych laików jest to spory minus, gdyż często liczba opcji takiego programu przekracza możliwości opanowania przez takiego śmiertelnika. Jednak dla zapaleńca, który chce dopieścić program do granic, jest to rozwiązanie idealne. Bardzo dobrym przykładem takiego podejścia jest komunikator internetowy Miranda. Samo jądro Mirandy w głównej mierze służy do obsługi plug-inów oraz zapewnia podstawowe metody do obsługi komunikatora, z których korzystają developerzy piszący wtyczki. Dzięki temu użytkownik ma do wyboru kilkaset wtyczek, które wzbogacają komunikator o konkretne funkcje. Z takiego rozwiązania korzysta się coraz częściej, lecz zazwyczaj w ograniczonym stopniu. Wtyczki do zwykłych programów poprawiają jego funkcjonalność w niewielkim stopniu. W tym przypadku każda funkcja jest oddzielnym plug-inem. Oddzielnie mamy okienko rozmowy, oddzielnie listę kontaktów, oddzielnie historię. Każda z tych wtyczek ma zazwyczaj sporo opcji do samodzielnego ustawienia i dostosowania. Na podobnej zasadzie działa odtwarzacz muzyczny Foobar. I chociaż wtyczki do niego są nieco bardziej ograniczone, to możliwość własnej konfiguracji jest ogromna.

Dlaczego by nie zastosować podobnego rozwiązania w przypadku systemów CASE? Przecież nie każdy programista musi korzystać ze wszelkich modułów standardowego CASE'a. Poza tym podczas tworzenia pewnego projektu, różne osoby mają różne zadania do wykonania. Po co im więc ten sam zestaw funkcji w CASE'ie? Można taki system rozbić na duże, niezależne moduły, które obsługują jedną poważną funkcjonalność, a do każdego z tych modułów moglibyśmy dodawać pomniejsze udogodnienia. Przykładowo – jeden z najważniejszych (w tym wypadku) modułów to Moduł Importu/Eksportu. Jest szczególnie ważny, gdyż dzięki niemu możliwa jest wymiana danych między różnymi programami, a nawet między osobami pracującymi na naszym idealnym CASE'ie, tylko różnie skonfigurowanym. Do tego modułu możemy dodawać obsługę kolejnych formatów przesyłania danych, a także różną obsługę wymiany danych (np. za pomocą ustalonego protokołu sieciowego). Inny przykład – tworzenie diagramów w różnych standardach. Jeśli osoba A potrzebuje do pracy tylko pewnego niewielkiego zestawu diagramów – po co mu cała reszta? Skoro jest od wielu lat tendencja do jak najwęższej specjalizacji, to wielkie kombajny „do wszystkiego” są zbędne. W dodatku zajmują niebagatelną ilość zasobów systemu.

Cechy i funkcje idealne
Dla mnie, jako studenta informatyki, ważną cechą dotyczącą jakiegokolwiek programu jest jego darmowość i otwartość. Otwartość jest szczególnie ważna przy założeniu, że każdy bardziej zaawansowany programista mógłby do takiego CASE'a napisać swój własny moduł czy plug-in.

Z otwartością wiąże się także wieloplatformowość takiego programu. Chciałbym mieć możliwość pracy na nim zarówno pod Windowsem, jak i Linuksem (a może nawet MacOS'em?).

Intuicyjność obsługi jest również ważna. Poprawia z pewnością ergonomię, a zatem także szybkość pracy. Wszelkie menu, klawiszologia i inne paski narzędziowe powinny być w 100% konfigurowalne przez użytkownika.

Wielostandardowość. Jest to ważne, gdyż różni ludzie mają różne przyzwyczajenia i własne oznaczenia w diagramach. Każdy użytkownik naszego CASE'a powinien mieć możliwość dostosowania standardów do siebie, a jednocześnie powinien mieć możliwość konwersji tych diagramów do postaci wygodnej dla współpracowników. Taka konwersja powinna przebiegać automatycznie podczas wymiany danych z innymi pracownikami przy danym projekcie.

Dla nowych użytkowników CASE'a przydałby się rozbudowany i „inteligentny” help. Z jednej strony coś na kształt podręcznika użytkownika (jeśli ktoś lubi tego typu publikacje), a z drugiej strony – podpowiedzi w czasie rzeczywistym. Oczywiście w pełni konfigurowalne i zaimplementowane jako osobny plug-in do danego modułu. Zaawansowany użytkownik może go więc wyłączyć i nie obciążać niepotrzebnie zasobów systemu.

Generator kodu i środowisko programistyczne. Wiele środowisk programistycznych (np. Eclipse) ma możliwość rozbudowy o elementy obsługi UMLa czy też innych składników standardowego CASE'a. Można więc zrobić odwrotnie. Jednym z modułów naszego CASE'a byłoby właśnie środowisko programistyczne (IDE) dla konkretnego języka programowania. Wtedy generator kodu byłby dopasowany idealnie do tego środowiska, a co za tym idzie – uniknęlibyśmy dziwnej nadmiarowości kodu i problemów związanych z brakiem konkretnych nagłówków czy innych wymaganych deklaracji w programie.

Epilog
Są różni programiści, z różnymi pomysłami i przyzwyczajeniami. Obecne narzędzia CASE w pewnym stopniu narzucają nam własny sposób obsługi. Bardzo często wpływa to negatywnie na nastawienie pracownika, a co za tym idzie – na jakość i szybkość jego pracy. Tworząc CASE'a zgodnego z powyższymi pomysłami, mamy możliwość przynajmniej częściowego wyeliminowania tego problemu.