In 2001
excessive opinion about himself
- don't like to write code
- don't understand business domain (this is real scary)
- don't understand our company culture
- don't understand product that we are making (he treats it like another CRUD but we are not making CRUD app)
- all the time talk about the abstraction
- all the time talk about breaking changes in current architecture
- try to fix problems that don't exists
- making conflicts in team
Epilogue: that developer worked in our team about 2 weeks and had been moved to other team with different team leader. That team wants him to implement functionality of some basic control. Instead of that, after a week he don't show his code but came up with L4 (sick leave).
Pokazywanie postów oznaczonych etykietą nieprogramistyczne. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą nieprogramistyczne. Pokaż wszystkie posty
wtorek, 28 lutego 2017
niedziela, 1 lutego 2015
Weekend z kryptografią (PGP, CryptoCat, encrypted mail storage)
Po zmianie systemów operacyjnych na komputerze prywatnym oraz na smartfonie przyszedł czas na ochronę prywatności w przypadku wysyłania/obierania wiadomości. W ten weekend pod ostrzał poszła komunikacja za pomocą maili oraz próba zabezpieczenia komunikatora, z którego korzystam najczęściej (chat na facebooku).
Najpierw mail. O ile samemu nie posiadamy możliwości postawienia własnego serwera pocztowego, to warto zajrzeć na tą listę hostingów i wybrać coś dla siebie, wg. własnych potrzeb. Celowo nie będę doradzał konkretnego hostingu, ponieważ każdy z nas jest inny i ma nieco inne potrzeby.
Kolejnym etapem, po założeniu skrzynki mailowej, jest zgranie klienta pocztowego thunderbird oraz dogranie do niego rozszerzenia enigmail. Gdy mamy już skrzynkę pocztową, na której maile będą trzymane w sposób zaszyfrowany, klienta mailowego (maili nie czytamy w przeglądarce), oraz zgrany odpowiednie rozszerzenie do obsługi podpisywania/szyfrowania, to pozostało nam jeszcze tylko wygenerować swoją parę kluczy PGP (jak to zrobić opisane jest tutaj) i skonfigurować nasz klucz z klientem enigmail.
Ja dodatkowo, dla wygody zainstalowałem sobie jeszcze KGpg, ale spokojnie można wszystko zrobić z terminala.
Mamy takie coś i.... wuala ;) Nasze maila są zdecydowanie bardziej bezpieczne niż były wcześniej. Teraz tylko pozostaje nam przekonać jak najwięcej naszych znajomych aby również domyślnie szyfrowali swoje maile za pomocą PGP (oraz zweryfikować ich klucze publiczne z fingerprintem jakimś innym kanałem, np. przez tel.) i "jesteśmy w domu" :D Jeśli NSA, GCHQ, albo jacyś inni, domorośli hakerzy chcą czytać nasze maile, to niech się przynajmniej nieco wysilą ;)
Kolejny, popularnym kanałem rozmowy, po za mailami, jest chat. W moim przypadku, jest to chat na portalu facebook, który domyślnie nie jest szyfrowany, ale w sposób stosunkowo prosty, sami możemy mu to szyfrowanie zapewnić. Służy do tego darmowe rozszerzenie do przeglądarki o nazwie crypto.cat. Stosunkowo łatwo się to integruje z listą kontaktów na fb, więc jak obie strony używają cryptocata, to na fb wiadomość jest zaszyfrowana.
Na razie crypto.cat posiada pewną wadę, czyli brak przycisku "scroll down" po liście znajomych (można to zrobić tylko za pomocą myszy, która nie zawsze działa), ale jak opisuje to Ryan Hellyer ta niedogodność powinna zostać poprawiona w najbliższej przyszłości.
edit: przydatny link, dla użytkowników firefoxa -> link
Najpierw mail. O ile samemu nie posiadamy możliwości postawienia własnego serwera pocztowego, to warto zajrzeć na tą listę hostingów i wybrać coś dla siebie, wg. własnych potrzeb. Celowo nie będę doradzał konkretnego hostingu, ponieważ każdy z nas jest inny i ma nieco inne potrzeby.
Kolejnym etapem, po założeniu skrzynki mailowej, jest zgranie klienta pocztowego thunderbird oraz dogranie do niego rozszerzenia enigmail. Gdy mamy już skrzynkę pocztową, na której maile będą trzymane w sposób zaszyfrowany, klienta mailowego (maili nie czytamy w przeglądarce), oraz zgrany odpowiednie rozszerzenie do obsługi podpisywania/szyfrowania, to pozostało nam jeszcze tylko wygenerować swoją parę kluczy PGP (jak to zrobić opisane jest tutaj) i skonfigurować nasz klucz z klientem enigmail.
Ja dodatkowo, dla wygody zainstalowałem sobie jeszcze KGpg, ale spokojnie można wszystko zrobić z terminala.
Mamy takie coś i.... wuala ;) Nasze maila są zdecydowanie bardziej bezpieczne niż były wcześniej. Teraz tylko pozostaje nam przekonać jak najwięcej naszych znajomych aby również domyślnie szyfrowali swoje maile za pomocą PGP (oraz zweryfikować ich klucze publiczne z fingerprintem jakimś innym kanałem, np. przez tel.) i "jesteśmy w domu" :D Jeśli NSA, GCHQ, albo jacyś inni, domorośli hakerzy chcą czytać nasze maile, to niech się przynajmniej nieco wysilą ;)
Kolejny, popularnym kanałem rozmowy, po za mailami, jest chat. W moim przypadku, jest to chat na portalu facebook, który domyślnie nie jest szyfrowany, ale w sposób stosunkowo prosty, sami możemy mu to szyfrowanie zapewnić. Służy do tego darmowe rozszerzenie do przeglądarki o nazwie crypto.cat. Stosunkowo łatwo się to integruje z listą kontaktów na fb, więc jak obie strony używają cryptocata, to na fb wiadomość jest zaszyfrowana.
Na razie crypto.cat posiada pewną wadę, czyli brak przycisku "scroll down" po liście znajomych (można to zrobić tylko za pomocą myszy, która nie zawsze działa), ale jak opisuje to Ryan Hellyer ta niedogodność powinna zostać poprawiona w najbliższej przyszłości.
edit: przydatny link, dla użytkowników firefoxa -> link
Etykiety:
bezpieczeństwo,
chrome,
cryptocat,
cryptography,
facebook,
firefox,
Hacking,
kgpg,
mail,
mail server,
narzędzia,
nieprogramistyczne,
pgp,
prism,
snowden,
thunderbird,
życie
sobota, 3 stycznia 2015
Chocolatey , czyli.. taki windowsowy 'apt-get' ;-)
Chocolatey to jest manager pakietów, podobny do NuGet'a, ale operujący z poziomu systemu operacyjnego, czyli... taki windowsowy odpowiednik apt-get znanego z syst. Debian/Ubuntu.
Jego instalacja jest banalnie prosta, ponieważ wystarczy za pomocą wiersza poleceń uruchomić skryp powershela:
Teraz, posiadając zainstalowane chocolatey, możemy instalować pakiety, korzystając z jego pomocy np., aplikację o nazwie 'vlc' instalujemy wpisując w linii komand:
Jedyne na co trzeba uważać, to czy podczas instalacji Chcolatey skorzystało z odpowiedniej zmiennej PATH (patrz kod instalacji), ale gdyby z jakiegoś powodu ta zmienna się nie dopisała, to warto ją ustawić ręcznie.
Linki:
Fajny art. z pcworld.com jak korzytać z chocolatey
Oficjalna strona projektu
Link do githuba
edit:
Windows 10 będzie posiadał swój własny "menager pakietów" o nazwie "OneGet"
Jego instalacja jest banalnie prosta, ponieważ wystarczy za pomocą wiersza poleceń uruchomić skryp powershela:
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
Teraz, posiadając zainstalowane chocolatey, możemy instalować pakiety, korzystając z jego pomocy np., aplikację o nazwie 'vlc' instalujemy wpisując w linii komand:
cinst vlcProste i przyjemne? Jak najbardziej, szczególnie, że samo sobie pociągnie wszelkie "zależności", czyli... jeżeli będzie potrzebować dodatkowej biblioteki, to spróbuje ją pobrać (podobnie jak NuGet).
Jedyne na co trzeba uważać, to czy podczas instalacji Chcolatey skorzystało z odpowiedniej zmiennej PATH (patrz kod instalacji), ale gdyby z jakiegoś powodu ta zmienna się nie dopisała, to warto ją ustawić ręcznie.
Linki:
Fajny art. z pcworld.com jak korzytać z chocolatey
Oficjalna strona projektu
Link do githuba
edit:
Windows 10 będzie posiadał swój własny "menager pakietów" o nazwie "OneGet"
czwartek, 1 stycznia 2015
KeePassX – przechowuj hasła bezpiecznie (i wieloplatformowo)
W jednym z moich poprzednich wpisów, z maja 2014 zrobiłem notkę nt. programu KeePass. Kto nie zna tego programu, niech się zapozna, ponieważ zwiększa on bezpieczeństwo haseł, jakie mamy na różnych serwisach internetowych.
Dzięki temu programowi, możemy mieć unikalne i bardzo bezpieczne hasła dla każdej z witryn, do których się logujemy. KeyPass sam w sobie jest fajny, ale posiadał pewne ograniczenie -> został napisany w .NET, a co za tym idzie, natywnie działał pod Windowsem lub za pomocą biblioteki Mono na Linuksach.
Teraz przedstawiam kolejną ewolucję tego oprogramowania, czyli KeePassX, który początkowo był portem KeePass na Linuxa, a obecnie został oddzielnym programem.
Linki:
Strona projektu: http://www.keepassx.org/
Adres na githubie: https://github.com/keepassx/keepassx
Dzięki temu programowi, możemy mieć unikalne i bardzo bezpieczne hasła dla każdej z witryn, do których się logujemy. KeyPass sam w sobie jest fajny, ale posiadał pewne ograniczenie -> został napisany w .NET, a co za tym idzie, natywnie działał pod Windowsem lub za pomocą biblioteki Mono na Linuksach.
Teraz przedstawiam kolejną ewolucję tego oprogramowania, czyli KeePassX, który początkowo był portem KeePass na Linuxa, a obecnie został oddzielnym programem.
Linki:
Strona projektu: http://www.keepassx.org/
Adres na githubie: https://github.com/keepassx/keepassx
sobota, 2 sierpnia 2014
Polecane laptopy/netbooki
Całkiem niedawno miałem problem z moim laptopem. Całe szczęście, problem dotyczył jedynie modułu zasilania mojego laptopa i do przywrocenia go do stanu używalności wystaczyła wizyta w serwisie komputerowym. Nie zmienia to jednak faktu, że przez moment liczyłem się z koniecznością zakupu nowego sprzętu. I powiem, miałem z tym niemały ból głowy. Jaki laptop wybrać, skoro zgodnie z prawem Moora moc obliczeniowa komputerów podwaja się co każde 2 lata?
Co więc zrobiłem? Zapytałem się znajomego z "help desku", który w sprzęcie siedzi na co dzień. I jaką odp. dostałem? Że nawet on tego wszystkiego nie ogarnia bo zmiany idą za szybko. Za to skierował mnie na fora branżowe. Pomocny okazał się mój nowy kolega w zespole , który podesłał mi link do forum PC FORMAT, na którym to analizują aktualnie dostępne komputery i analizują na bierząco co się opłaca kupować link.
Dodatkowo, na tym forum raz w mieś. pojawia się temat z "zestawieniem miesiąca". Link do aktualnego zestawienia (lipiec 2014)
P.S. Gdyby ktoś potrzebował namiary na sprawdzony serwis komputerowy na Mokotowie, to polecam Centrum Serwisowe MAGNUS na Puławskiej 107D
Co więc zrobiłem? Zapytałem się znajomego z "help desku", który w sprzęcie siedzi na co dzień. I jaką odp. dostałem? Że nawet on tego wszystkiego nie ogarnia bo zmiany idą za szybko. Za to skierował mnie na fora branżowe. Pomocny okazał się mój nowy kolega w zespole , który podesłał mi link do forum PC FORMAT, na którym to analizują aktualnie dostępne komputery i analizują na bierząco co się opłaca kupować link.
Dodatkowo, na tym forum raz w mieś. pojawia się temat z "zestawieniem miesiąca". Link do aktualnego zestawienia (lipiec 2014)
P.S. Gdyby ktoś potrzebował namiary na sprawdzony serwis komputerowy na Mokotowie, to polecam Centrum Serwisowe MAGNUS na Puławskiej 107D
Trello
Kolejnym fajnym narzędziem, którego stosowanie warto jest rozważyć jest trello. Trello jest darmową aplikacją internetową, spełniającą rolę znanej i lubianej "tablicy z mazakami/karteczkami". "Tablica z karteczkami" to nic innego, jak stojąca w pokoju tablica z karteczkami, ewentualnie tablica z pisakami, na której wpisuje się zadania (najczęśniej są to nr. zgłoszeń z bugtrackera), osoby do których są przypisane, oraz stan danego zadania (todo, doing, done). W ten sposób, managment wchodząc do pokoju, jest w stanie ocenić "stan aktualnych prac" bez przerywania pracy programisty. Z zastosowaniem trello, nawet nie musi wchodzić do pokoju :D
O ile niektóre, rozbudowane 'bugtrackery" posiadają wbudowaną podobną funkcjonalność lub można ją dokupić (np jira), o tyle wielu z nich nadal im tego brakuje. Jedną z zalet trello jest fakt, ze w podstawowej wersji jest w pełni darmowe (syst. płatności oparty o mikropłatności za rozszerzenia).
Kolejną zaletą, która mi się osobiście spodobało, to pełna integracja z kontem google (gmail), dzięki czemu nie muszę pamiętać dodatkowego hasła. Wprawdzie przy stosowaniu keepass teoretycznie nie muszę, ale mimo wszystko dla mnie takie rozwiązanie jest dużo wygodniejsze ;)).
P.S. Trello można też używać w życiu prywatnym, np. do kontrolowania prac związanych z remontem/zakupem mieszkania lub innych czynności dających podzielić się na mniejsze, skończone taski ;-)
O ile niektóre, rozbudowane 'bugtrackery" posiadają wbudowaną podobną funkcjonalność lub można ją dokupić (np jira), o tyle wielu z nich nadal im tego brakuje. Jedną z zalet trello jest fakt, ze w podstawowej wersji jest w pełni darmowe (syst. płatności oparty o mikropłatności za rozszerzenia).
Kolejną zaletą, która mi się osobiście spodobało, to pełna integracja z kontem google (gmail), dzięki czemu nie muszę pamiętać dodatkowego hasła. Wprawdzie przy stosowaniu keepass teoretycznie nie muszę, ale mimo wszystko dla mnie takie rozwiązanie jest dużo wygodniejsze ;)).
P.S. Trello można też używać w życiu prywatnym, np. do kontrolowania prac związanych z remontem/zakupem mieszkania lub innych czynności dających podzielić się na mniejsze, skończone taski ;-)
czwartek, 31 lipca 2014
Rekruter
W czerwcu oraz na pocz. lipca miałem okazję uczestniczyć podczas rozmów kwalifikacyjnych na stanowisko młodszego programisty .NET (junior developer). Było to dla mnie spojrzenie na proces rekrutacji z tej nieco innej strony. Jako, że od mojej opinii o kandydacie również nieco zależało, więc postaram się opisać moje wrażenia z tego procesu po "tej drugiej stronie".
Najpierw umieściliśmy ogłoszenie na kilku przeznaczonych do tego stronach oraz ulotki na kilku Warszawskich uczelniach. Po jakimś czasie, gdy pojawiła się grupa na fb o wdzięcznej nazwie netDevelopersPolandJobMarket to umieściłem tam nasze ogłoszenie z "widełkami płacowymi" oraz nieco większą ilością szczegółów nt. tego stanowiska (stos. technologia, zakres obowiązków itp. itd.).
A jak wyglądała sama rozmowa?
a) krótka, 5-20 min. rozmowa, podczas której my (Ja oraz dyrektor IT) opowiadaliśmy o firmie, naszym dziale IT, tym czym ewentualnie zajmował by się kandydat. Zadawaliśmy też kilka pytań nt. CV, które podesłał nam kandydat.
b) 30 min. codding test na laptopie w mojej obecności
c) "pytania z kartki", czyli mniej lub bardziej szczegółowe "pytania otwarte" nt. C#, .NET, MS SQL itp. itd.
d) ewentualna dalsza rozmowa z szefem IT
Zadania praktyczne były 4. Dwa z SQL oraz dwa z C#. Zadania były o zróżnicowanym stopniu trudności. Wydawało mi się, ze te z C# są trudniejsze, ale tylko do momentu, gdy jeden z kandydatów przyznał się, ze jedno z zadań mieli w SGGW na egaminie ;-)
To co mnie osobiście mocno zaskoczyło to... bardzo słaba znajomość T-SQL wśród kandydatów, którzy byli przepytywani. Dwie os., które "kumały cza-czę" zrobiły oba zadania w ok. 5-6 min. (mniej więcej ok 2-3 min. na zadanie). Niestety ponad połowa kandydatów nie zrobiła zadań z SQL w ogóle.
Z pytaniami "otwartymi" zazwyczaj było całkiem nieźle. Była to też okazja do "bardziej wnikliwego" porozmawiania z kandydatami (tymi co przeszli codding test). Podczas tej rozmowy, oprócz samych odp. na pytania, celem było też zwykłe poznanie kandydata. Tego, czy się interesuje technologią i w czym czuje się mocny, ale też, czy można z nim normalnie porozmawiać i czy da się z nim wytrzymać 8h*5 dni w tyg.
Jak ktoś przeszedł wszystkie etapy w miarę ok (codding test, pytania otwarte, sposób bycia) to zostawał na rozmowę z dyrektorem IT.
Wnioski:
a) 30 min. siedzenia i patrzenia jak ktoś koduje, to jednak zdecydowanie zbyt dużo zmarnowanego mojego czasu. Dobrze było by ten proces jakoś zautomatyzować, ale pozostając przy zadaniach praktycznych. Może jakieś codility, ale któreś z tych podst. poziomów trudności (ponieważ te wyższe zazwyczaj niewiele mają wspólnego z praktyką zastaną później w realnym życiu).
b) najlepszy możliwy kandydat, jaki nam się pojawił, przyszedł na rozmowe po umieszczeniu ogłoszenia o pracę na grupie fb (ogłsozenie z zakresem obowiązków, stos. technologią oraz widełkami płacowymi).
Najpierw umieściliśmy ogłoszenie na kilku przeznaczonych do tego stronach oraz ulotki na kilku Warszawskich uczelniach. Po jakimś czasie, gdy pojawiła się grupa na fb o wdzięcznej nazwie netDevelopersPolandJobMarket to umieściłem tam nasze ogłoszenie z "widełkami płacowymi" oraz nieco większą ilością szczegółów nt. tego stanowiska (stos. technologia, zakres obowiązków itp. itd.).
A jak wyglądała sama rozmowa?
a) krótka, 5-20 min. rozmowa, podczas której my (Ja oraz dyrektor IT) opowiadaliśmy o firmie, naszym dziale IT, tym czym ewentualnie zajmował by się kandydat. Zadawaliśmy też kilka pytań nt. CV, które podesłał nam kandydat.
b) 30 min. codding test na laptopie w mojej obecności
c) "pytania z kartki", czyli mniej lub bardziej szczegółowe "pytania otwarte" nt. C#, .NET, MS SQL itp. itd.
d) ewentualna dalsza rozmowa z szefem IT
Zadania praktyczne były 4. Dwa z SQL oraz dwa z C#. Zadania były o zróżnicowanym stopniu trudności. Wydawało mi się, ze te z C# są trudniejsze, ale tylko do momentu, gdy jeden z kandydatów przyznał się, ze jedno z zadań mieli w SGGW na egaminie ;-)
To co mnie osobiście mocno zaskoczyło to... bardzo słaba znajomość T-SQL wśród kandydatów, którzy byli przepytywani. Dwie os., które "kumały cza-czę" zrobiły oba zadania w ok. 5-6 min. (mniej więcej ok 2-3 min. na zadanie). Niestety ponad połowa kandydatów nie zrobiła zadań z SQL w ogóle.
Z pytaniami "otwartymi" zazwyczaj było całkiem nieźle. Była to też okazja do "bardziej wnikliwego" porozmawiania z kandydatami (tymi co przeszli codding test). Podczas tej rozmowy, oprócz samych odp. na pytania, celem było też zwykłe poznanie kandydata. Tego, czy się interesuje technologią i w czym czuje się mocny, ale też, czy można z nim normalnie porozmawiać i czy da się z nim wytrzymać 8h*5 dni w tyg.
Jak ktoś przeszedł wszystkie etapy w miarę ok (codding test, pytania otwarte, sposób bycia) to zostawał na rozmowę z dyrektorem IT.
Wnioski:
a) 30 min. siedzenia i patrzenia jak ktoś koduje, to jednak zdecydowanie zbyt dużo zmarnowanego mojego czasu. Dobrze było by ten proces jakoś zautomatyzować, ale pozostając przy zadaniach praktycznych. Może jakieś codility, ale któreś z tych podst. poziomów trudności (ponieważ te wyższe zazwyczaj niewiele mają wspólnego z praktyką zastaną później w realnym życiu).
b) najlepszy możliwy kandydat, jaki nam się pojawił, przyszedł na rozmowe po umieszczeniu ogłoszenia o pracę na grupie fb (ogłsozenie z zakresem obowiązków, stos. technologią oraz widełkami płacowymi).
czwartek, 10 lipca 2014
Nie testuj na serwerze testowym!!!
Ten oto wpis, to nic innego jak konkluzja z ost. kilku dni w pracy. I broń boże, nie wykonuj na tych danych, żadnych aktualizacji "notowań, kursu walut" ani innych "co nocnych" jobów. Taka niestety nasuwa się konkluzja z ost. kilku dni.
A co to dokładnie oznacza?
Ano nic innego, ze Piotrek nie umie rozmawiać z ludźmi. Przejmując x syst. informatycznych po swoich poprzednikach, nie zawsze potrafił się dopytać, czy wersje testowe (aplikacji oraz bazy danych) służą do tego, aby programiści mogli na nich cokolwiek testować i broń boże puścili na tym, jakiś update. Szczególnie taki, który działa co noc na prod. i kilka dni temu się wysypał, a ja własnie zrobiłem na niego fixa. O to to nie. Aplikację powinno się przetestować lokalnie, a później, po stwierdzeniu że "u mnie działa" wgrywać od razu na produkcję :/
Jakiś czas temu, podjąłem się zadania przejęcia całej infrastruktury programistycznej w pewnej firmie po tym, gdy odszedł z niej ost. programista i przez kilka tyg. żadne ze stanowisk programistycznych nie było obsadzone. Dużo ich nie było, tj. 2, ale w zasadzie przejmowałem 12 mniej lub bardziej rozbudowanych syst,. informatycznych (największa baza 16 GB danych), a w praktyce żyjący własnym życiem mechanizm naczyń połączonych. Oczywiście, większość aplikacji miała swoich opiekunów biznesowych. O ile miałem parę spotkań z moim poprzednikiem, jednak w praktyce najczęściej koncentrowały się one wokół spraw bieżących, lub przyszłego, nowego syst. który trzeba dopiero napisać.
O ile, z ludźmi z IT rozmawiałem i... np. Adam mnie uprzedził, ze w jego syst. aplikacje "test" oraz "test2" nie są dla mnie dostępne (i stworzył mi inne środ. testowe) o tyle ludzi "biznesowych", którzy zazwyczaj obrażają się o to, ze mówię techniczne słowa, których nie rozumieją, o takie zmiany za bardzo nie podejrzewałem. I masz tu babo placek.
Wysypał się job robiący aktualizację. Znalazłem błąd, poprawiłem go i sru na test. Na teście przeszło to na prod. Fix zrobiony, sprawa rozwiązana i super. A tu niestety nie ma tak dobrze. Opiekun biznesowy, który nie umie pisać skryptów (bo po co mu to), ani tym bardziej zrobić backupu bazy... miał tam jakieś swoje dane, który nocny import mu nadgrał.
Oj Piotrek, Piotrek, I co żeś ty uczynił?
I co ważniejsze? Co też masz teraz zrobić? Porobić własne instancje testowe wszystkich działających usług, skryptów, aplikacji, baz danych? Co noc backupować bazy testowe? A może jednak rozwiązaniem jest, aby dziennie spędzać więcej czasu na tel. rozmawiając z opiekunami biznesowymi, niż na faktycznym kodowaniu tych systemów?
Normalnie murarz, tynkarz, akrobata...
A co to dokładnie oznacza?
Ano nic innego, ze Piotrek nie umie rozmawiać z ludźmi. Przejmując x syst. informatycznych po swoich poprzednikach, nie zawsze potrafił się dopytać, czy wersje testowe (aplikacji oraz bazy danych) służą do tego, aby programiści mogli na nich cokolwiek testować i broń boże puścili na tym, jakiś update. Szczególnie taki, który działa co noc na prod. i kilka dni temu się wysypał, a ja własnie zrobiłem na niego fixa. O to to nie. Aplikację powinno się przetestować lokalnie, a później, po stwierdzeniu że "u mnie działa" wgrywać od razu na produkcję :/
Jakiś czas temu, podjąłem się zadania przejęcia całej infrastruktury programistycznej w pewnej firmie po tym, gdy odszedł z niej ost. programista i przez kilka tyg. żadne ze stanowisk programistycznych nie było obsadzone. Dużo ich nie było, tj. 2, ale w zasadzie przejmowałem 12 mniej lub bardziej rozbudowanych syst,. informatycznych (największa baza 16 GB danych), a w praktyce żyjący własnym życiem mechanizm naczyń połączonych. Oczywiście, większość aplikacji miała swoich opiekunów biznesowych. O ile miałem parę spotkań z moim poprzednikiem, jednak w praktyce najczęściej koncentrowały się one wokół spraw bieżących, lub przyszłego, nowego syst. który trzeba dopiero napisać.
O ile, z ludźmi z IT rozmawiałem i... np. Adam mnie uprzedził, ze w jego syst. aplikacje "test" oraz "test2" nie są dla mnie dostępne (i stworzył mi inne środ. testowe) o tyle ludzi "biznesowych", którzy zazwyczaj obrażają się o to, ze mówię techniczne słowa, których nie rozumieją, o takie zmiany za bardzo nie podejrzewałem. I masz tu babo placek.
Wysypał się job robiący aktualizację. Znalazłem błąd, poprawiłem go i sru na test. Na teście przeszło to na prod. Fix zrobiony, sprawa rozwiązana i super. A tu niestety nie ma tak dobrze. Opiekun biznesowy, który nie umie pisać skryptów (bo po co mu to), ani tym bardziej zrobić backupu bazy... miał tam jakieś swoje dane, który nocny import mu nadgrał.
Oj Piotrek, Piotrek, I co żeś ty uczynił?
I co ważniejsze? Co też masz teraz zrobić? Porobić własne instancje testowe wszystkich działających usług, skryptów, aplikacji, baz danych? Co noc backupować bazy testowe? A może jednak rozwiązaniem jest, aby dziennie spędzać więcej czasu na tel. rozmawiając z opiekunami biznesowymi, niż na faktycznym kodowaniu tych systemów?
Normalnie murarz, tynkarz, akrobata...
sobota, 24 maja 2014
KeePass – przechowuj hasła bezpiecznie
Jednym z problemów, z jakimi spotykają się różni użytkownicy komputerów, posiadający dostęp do wielu zasobów (np. aplikacji internetowych, baz danych itp.) jest problem związany z ilością potrzebnych loginów i haseł. W teorii hasło do każdego konta powinno być inne, jednak w praktyce bardzo trudno jest pamiętać 20-50 różnych haseł do różnych kont. Na szczęście, z pomocą przychodzi nam darmowa aplikacja "KeePass", która będzie przechowywała za nas odpowiednie loginy i hasła w sposób bezpieczny (zaszyfrowany). My, jako użytkownicy, jedynie potrzebujemy znać hasło do naszego pliku z zaszyfrowanymi danymi w KeePass (który możemy przenosić między komputerami, np. za pośrednictwem pendrive), a już szczegółowe loginy i hasła do konkretnych stron, aplikacji, usług, baz danych znajdować się będą w KeePass-ie.
Linki:
czwartek, 6 marca 2014
Przekierowanie poczty MS Exchange
Tak jak już wspomniałem w moim poprzednim wpisie nt. tworzenie konta mailowego w ms-exchange jako jedno z dodatkowych zadań dostałem opiekę administracyjną nad serwerem, na którym oprócz aplikacji CRM, zainstalowany jest również serwer pocztowy Exchange.
W poprzednim poście opisałem jak utworzyć nowe konto, oraz dodać je do grupy. W tym opiszę przypadek przekierowywania (forwardowania) maili do innej skrzynki pocztowej.
Jeżeli chcemy zrobić forward dla klienta wewnątrz domeny, to dobrze jest dla niego utworzyć konto w AD, jeżeli jednak mamy do czynienia forwardem do skrzynki pocztowej po za naszym AD, wtedy należy utworzyć nowy kontakt mailowy.
Na pocz. otwieramy klienta ms exchange i przechodzimy do zakładki "Recipient Configuration", gdzie tworzymy nowy kontakt mailowy ("New mail contact"). Uwaga: wykonujemy to na zakładce 'Recipient Configuration", a nie "Mail":
New contact, next, a nast. w oknie wpisujemy odpowiednie dane:
Teraz wchodzimy we właściwości (properties) istniejącego kontaktu, dla którego chcemy dołożyć forward.
Z opcji wybieramy "Mail Row Settings", a nast. zaznaczamy "Delivery Options" i właściwości (Properties). W nowo utworzonym okienku wybieramy "Browse", a nast. utworzony przez nas przed chwilą kontakt mailowy:
Nast. zaznaczamy (lub nie) checkbox z, czy maile mają przychodzić na obie skrzynki pocztowe, czy tylko na nową skrzynkę ("Deliver message to both forwarding address and mailbox").
Ok. Apply i... już działa nam nasz forward wiadomości.
W poprzednim poście opisałem jak utworzyć nowe konto, oraz dodać je do grupy. W tym opiszę przypadek przekierowywania (forwardowania) maili do innej skrzynki pocztowej.
Jeżeli chcemy zrobić forward dla klienta wewnątrz domeny, to dobrze jest dla niego utworzyć konto w AD, jeżeli jednak mamy do czynienia forwardem do skrzynki pocztowej po za naszym AD, wtedy należy utworzyć nowy kontakt mailowy.
Na pocz. otwieramy klienta ms exchange i przechodzimy do zakładki "Recipient Configuration", gdzie tworzymy nowy kontakt mailowy ("New mail contact"). Uwaga: wykonujemy to na zakładce 'Recipient Configuration", a nie "Mail":
New contact, next, a nast. w oknie wpisujemy odpowiednie dane:
Teraz wchodzimy we właściwości (properties) istniejącego kontaktu, dla którego chcemy dołożyć forward.
Z opcji wybieramy "Mail Row Settings", a nast. zaznaczamy "Delivery Options" i właściwości (Properties). W nowo utworzonym okienku wybieramy "Browse", a nast. utworzony przez nas przed chwilą kontakt mailowy:
Nast. zaznaczamy (lub nie) checkbox z, czy maile mają przychodzić na obie skrzynki pocztowe, czy tylko na nową skrzynkę ("Deliver message to both forwarding address and mailbox").
Ok. Apply i... już działa nam nasz forward wiadomości.
wtorek, 4 marca 2014
Tworzenie konta mailowego w MS Exchange
Od pewnego czasu, jako jedno z moich zadań pobocznych dostałem "opiekę administracyjną" nad zewnętrznym serwerem, na którym oprócz aplikacji CRM jest również zainstalowany serwer mailowy. "Opieka administracyjna" obejmuje również opiekę nad serwerem "exchange", czyli serwer pocztowy.
W niniejszym wpisie, opiszę procedurę tworzenia/konfigurowania nowego użytkownika, ponieważ co jakiś czas zachodzi taka potrzeba, a podręczny manual z instrukcją obsługi zawsze lepiej mieć, niż nie mieć ;).
Zaczynamy od otworzenia aplikacji do zarządzania użytkownikami oraz komputerami 'Active Directory". W tym celu, w "kafelkach" w wyszukiwarce wpisujemy "active", a nast. wybieramy odpowiedni program:
W programie "Użytkownicy i komputery usługi Active Directory" do grupy "Users" dodajemy nowego użytkownika:
i uzupełniamy jego dane
na 'moim' serwerze był problem z 'wygasaniem' haseł, więc zaznaczam opcję, aby hasło nigdy nie wygasało:
Później już tylko okienko z podsumowaniem i zatwierdzenie stworzenia nowego usera.
Teraz otwieramy aplikację do usługi serwera pocztowego Exchange:
W ustawieniach serwera pocztowego tworzymy nową skrzynkę pocztową:
nast, wybieramy "User Mailbox",
Existing users, a nast. usera którego wcześniej utworzyliśmy:
później już tylko "next, next" i... mamy gotowe poczto kontowe.
Konto pocztowe możemy przetestować za pomocą przeglądarki internetowej wpisując do adresu przeglądarki:
Blog, na którym bardziej szczegółowo opisano jako zrobić opisane jest tutaj. Do logowania się, przez przeglądarkę używamy samego loginu konta (bez małpy).
Teraz, kiedy mamy utworzone i działające konto pocztowe powiązane z kontem w AD, może zajść potrzeba dodania usera do grupy np. "wszyscy", "działX", "departamentY". Jeżeli grupy zostały utworzone w podobny sposób, to możemy to zrobić w AD:
Wybieramy naszego użytkownika, prawy przycisk myszy na "właściwości, a nast. zakładka "Członek grupy"
Wybieramy przycisk "Dodaj...", w polu tekstowym wpisujemy nazwę naszej grupy, nast. klikamy przycisk "Sprawdź nazwy" (jeżeli grupa istnieje, to jej nazwa w polu tekstowym zostanie podkreślona)
oraz "OK".
Teraz we właściwościach wybranego użytkownika, w zakładce "Członek grupy" powinna się pojawić nazwa grupy, do której użytkownik został dodany.
P.S. Jestę adminę :-D
W niniejszym wpisie, opiszę procedurę tworzenia/konfigurowania nowego użytkownika, ponieważ co jakiś czas zachodzi taka potrzeba, a podręczny manual z instrukcją obsługi zawsze lepiej mieć, niż nie mieć ;).
Zaczynamy od otworzenia aplikacji do zarządzania użytkownikami oraz komputerami 'Active Directory". W tym celu, w "kafelkach" w wyszukiwarce wpisujemy "active", a nast. wybieramy odpowiedni program:
W programie "Użytkownicy i komputery usługi Active Directory" do grupy "Users" dodajemy nowego użytkownika:
i uzupełniamy jego dane
Teraz otwieramy aplikację do usługi serwera pocztowego Exchange:
nast, wybieramy "User Mailbox",
Existing users, a nast. usera którego wcześniej utworzyliśmy:
później już tylko "next, next" i... mamy gotowe poczto kontowe.
Konto pocztowe możemy przetestować za pomocą przeglądarki internetowej wpisując do adresu przeglądarki:
https:/webmail.myexchangeemail.com/owa/W moim konkretnym przypadku było to:
https://mail.nazwaHosta.pl/owa/auth/logon.aspx
Blog, na którym bardziej szczegółowo opisano jako zrobić opisane jest tutaj. Do logowania się, przez przeglądarkę używamy samego loginu konta (bez małpy).
Teraz, kiedy mamy utworzone i działające konto pocztowe powiązane z kontem w AD, może zajść potrzeba dodania usera do grupy np. "wszyscy", "działX", "departamentY". Jeżeli grupy zostały utworzone w podobny sposób, to możemy to zrobić w AD:
Wybieramy naszego użytkownika, prawy przycisk myszy na "właściwości, a nast. zakładka "Członek grupy"
Wybieramy przycisk "Dodaj...", w polu tekstowym wpisujemy nazwę naszej grupy, nast. klikamy przycisk "Sprawdź nazwy" (jeżeli grupa istnieje, to jej nazwa w polu tekstowym zostanie podkreślona)
oraz "OK".
Teraz we właściwościach wybranego użytkownika, w zakładce "Członek grupy" powinna się pojawić nazwa grupy, do której użytkownik został dodany.
P.S. Jestę adminę :-D
środa, 19 lutego 2014
MS SQL - Edycja wierszy w edytorze wg. zapytania SQL
W MS SQL Managment Studio istnieje opcja, aby edytować wiersze w edytorze. Standardowo, jest to opcja na edytowanie pierwszych 200 wierszy (top 200 rows), jednak edytor udostępnia możliwość, aby edytować wiele, dowolnie wybranych wierszy.
Aby tego dokonać, należy, najpierw wybrać standardową opcję "Edit Top 200 Rows", a nast. na uzyskanym zbiorze wynikowym, prawy przycisk myszy, "Pane->SQL", a nast. edytujemy zapytanie SQL tak, aby uzyskać zakres danych, który chcemy później edytować w edytorze.
Link do pytania na stackoverflow.com/
Aby tego dokonać, należy, najpierw wybrać standardową opcję "Edit Top 200 Rows", a nast. na uzyskanym zbiorze wynikowym, prawy przycisk myszy, "Pane->SQL", a nast. edytujemy zapytanie SQL tak, aby uzyskać zakres danych, który chcemy później edytować w edytorze.
Link do pytania na stackoverflow.com/
wtorek, 11 lutego 2014
Szkolenie Comarch - Programowanie .NET 4.0 - kurs zaawansowany
W dniach od 05.02.2014 do 07.02.2014 (3 dni) miałem przyjemność wziąć udział w szkoleniu, zorganizowanym przez firmę Comarch nt. ' Programowanie .NET 4.0 - kurs zaawansowany'.
Szkolenie przeprowadził Marcin Najder (techblog), ale zanim przejdę do konkretów najpierw kilka spraw "formalnych". Szkolenie odbyło się w Warszawskiej siedzibie firmy, przy ul. Leśna 2 (przecznica ul. Puławskiej 525), czyli... na Ursynowie, przy ul. Puławskiej, drugie światła od zjazdu z południowej obwodnicy Warszawy, czyli... bardzo dobra lokalizacja dla zmotoryzowanych (w okoliczny jest gdzie zaparkować).
Co do oferty szkoleniowej, to można ją przejrzeć tutaj, natomiast szczegóły szkolenia, na którym ja byłem, można obejrzeć tutaj. Pod każdym szczegółowym opisem szkolenia jest niebieski przycisk "Terminarz i Rejestracja", więc jeżeli ktoś jest zainteresowany, to wiadomo co i jak.
Jeżeli chodzi o samo szkolenie, to nie będę ukrywał, że cena 3 dniowego szkolenia, była jak na Warszawę bardzo konkurencyjna (w promocji, 1400zł + VAT).
A jak wyglądało samo szkolenie?
Należy zacząć od tego, że sam prowadzący, to bardzo sympatyczny, a przy tym doświadczony programista. Prawdziwy pasjonat w swoim fachu, fan zarówno języków funkcyjnych jak i obiektowych i to m.in. próbował nam przekazać podczas szkolenia. Ponieważ w naszej 7 os. grupie, były os. o bardzo zróżnicowanym doświadczeniu programistycznym, Marcin musiał się nieco wysilić, szczególnie że był niemal przez cały czas pod porządnym gradobiciem pytań.
Były więc os. zaraz po studiach (i kursie podstawowym), które prosiły o więcej wyjaśnień związanych z lambdami, delegatami itp., jak i doświadczony programista PHP pragnący spróbować swoich sił w .NET, jak i 2-3 bardziej doświadczonych programistów, pytających co chwila o bardziej zaawansowane tematy oraz różnego rodzaju "wątki poboczne".
Na wszystkie te tematy, prowadzący odpowiadał spokojnie i rzeczowo. W efekcie, w trakcie kursu, przerobiliśmy też fragment "kursu podstawowego", to co było w agendzie związane z zaawansowanymi aspektami programowania w .NET (linq, lambdy, refleksja, więcej lambd, T4, wzorce projektowe, programowanie współbieżne, jeszcze więcej lambd itp. ;)), ale również tematy okołoprogramistyczne, takie jak np. rozproszone kontrole wersji (github, bitbucket), "NoSQL" (MongoDb, RavenDb), JSON, frameworki javascriptowe (Angular.JS, Node.JS). Wspomniany został nawet ServiceStack (niestety aktualnie płatny) Jeżeli doliczymy do tego ćwiczenia praktyczne z wykorzystaniem nUnit oraz Resharpera, oraz rozmowy programistyczne oraz około programistyczne, czy w czasie kursu, czy też w czasie wspólnego posiłku to daje nam naprawdę intensywnie spędzone 3 dni..
Wprawdzie to nie Ja płaciłem za szkolenie(firma płaciła), ale uważam, że naprawdę warto było pójść na to szkolenie. Fajnie jest przebywać w towarzystwie inteligęnych (i nierzadko mądrzejszych) ludzi od siebie i tak "na spokojnie" się czegoś nowego dowiedzieć/nauczyć. Taki miłe urozmaicenie w stosunku do samotnego przerabiania tutoriali / dokumentacji / oglądania podcastów w domu ;)
Z tego co Marcin mówił, to obok pracy na etacie, prowadzi również szkolenia ASP.MVC, programowanie reaktywne, jak i kurs podstawowy. Inna sprawa, że kurs podstawowy, czasami prowadzi też inna zupełnie inna osoba.
To tyle. Gdyby ktoś kiedyś miał okazję udać się na takie szkolenie, to szczerze polecam. Fajnie było :)
Szkolenie przeprowadził Marcin Najder (techblog), ale zanim przejdę do konkretów najpierw kilka spraw "formalnych". Szkolenie odbyło się w Warszawskiej siedzibie firmy, przy ul. Leśna 2 (przecznica ul. Puławskiej 525), czyli... na Ursynowie, przy ul. Puławskiej, drugie światła od zjazdu z południowej obwodnicy Warszawy, czyli... bardzo dobra lokalizacja dla zmotoryzowanych (w okoliczny jest gdzie zaparkować).
Co do oferty szkoleniowej, to można ją przejrzeć tutaj, natomiast szczegóły szkolenia, na którym ja byłem, można obejrzeć tutaj. Pod każdym szczegółowym opisem szkolenia jest niebieski przycisk "Terminarz i Rejestracja", więc jeżeli ktoś jest zainteresowany, to wiadomo co i jak.
Jeżeli chodzi o samo szkolenie, to nie będę ukrywał, że cena 3 dniowego szkolenia, była jak na Warszawę bardzo konkurencyjna (w promocji, 1400zł + VAT).
A jak wyglądało samo szkolenie?
Należy zacząć od tego, że sam prowadzący, to bardzo sympatyczny, a przy tym doświadczony programista. Prawdziwy pasjonat w swoim fachu, fan zarówno języków funkcyjnych jak i obiektowych i to m.in. próbował nam przekazać podczas szkolenia. Ponieważ w naszej 7 os. grupie, były os. o bardzo zróżnicowanym doświadczeniu programistycznym, Marcin musiał się nieco wysilić, szczególnie że był niemal przez cały czas pod porządnym gradobiciem pytań.
Były więc os. zaraz po studiach (i kursie podstawowym), które prosiły o więcej wyjaśnień związanych z lambdami, delegatami itp., jak i doświadczony programista PHP pragnący spróbować swoich sił w .NET, jak i 2-3 bardziej doświadczonych programistów, pytających co chwila o bardziej zaawansowane tematy oraz różnego rodzaju "wątki poboczne".
Na wszystkie te tematy, prowadzący odpowiadał spokojnie i rzeczowo. W efekcie, w trakcie kursu, przerobiliśmy też fragment "kursu podstawowego", to co było w agendzie związane z zaawansowanymi aspektami programowania w .NET (linq, lambdy, refleksja, więcej lambd, T4, wzorce projektowe, programowanie współbieżne, jeszcze więcej lambd itp. ;)), ale również tematy okołoprogramistyczne, takie jak np. rozproszone kontrole wersji (github, bitbucket), "NoSQL" (MongoDb, RavenDb), JSON, frameworki javascriptowe (Angular.JS, Node.JS). Wspomniany został nawet ServiceStack (niestety aktualnie płatny) Jeżeli doliczymy do tego ćwiczenia praktyczne z wykorzystaniem nUnit oraz Resharpera, oraz rozmowy programistyczne oraz około programistyczne, czy w czasie kursu, czy też w czasie wspólnego posiłku to daje nam naprawdę intensywnie spędzone 3 dni..
Wprawdzie to nie Ja płaciłem za szkolenie(firma płaciła), ale uważam, że naprawdę warto było pójść na to szkolenie. Fajnie jest przebywać w towarzystwie inteligęnych (i nierzadko mądrzejszych) ludzi od siebie i tak "na spokojnie" się czegoś nowego dowiedzieć/nauczyć. Taki miłe urozmaicenie w stosunku do samotnego przerabiania tutoriali / dokumentacji / oglądania podcastów w domu ;)
Z tego co Marcin mówił, to obok pracy na etacie, prowadzi również szkolenia ASP.MVC, programowanie reaktywne, jak i kurs podstawowy. Inna sprawa, że kurs podstawowy, czasami prowadzi też inna zupełnie inna osoba.
To tyle. Gdyby ktoś kiedyś miał okazję udać się na takie szkolenie, to szczerze polecam. Fajnie było :)
wtorek, 28 stycznia 2014
Rysowanie diagramów UML z ArgoUML
Czym jest UML wie zapewne każdy. Czy, a raczej kiedy należy go stosować zależy w dużej mierze od projektu oraz zdrowego rozsądku. Są sytuacje, gdy stworzenie kilku diagramów UML może stanowić ważny element dokumentacji projektowej, a są też sytuacje, gdy tworzenie zbyt dużej ilości może się okazać zwykłą stratą czasu.
W momencie, w którym zdecydujemy, że warto wzbogacić naszą dokumentację techniczną o diagram(y) UML warto użyć do tego odpowiedniego narzędzia, szczególnie, że niektóre z nich posiadają takie opcje, jak np. autogenerowanie części kodu źródłowego.
Przy wyborze narzędzia, ważne jest to, jakiej funkcjonalności oczekujemy od narzędzia, tj. czy chcemy rysować, modelować, eksportować wyniki do metamodeli, a może jednak najważniejsze jest generowanie fragmentów kodu z diagramu? Bardzo dobry przegląd narzędzi, ze względu na rodzaje funkcjonalności znajduje się w jednym z pytań na forum stackoverflow.com.
W moim przypadku, właśnie skończyłem pracę nad rozbudowanym architektonicznie projektem, w którym mieliśmy 4 nasze serwery, z czego 3 schowane za "firewallem" oraz 6-7 usług zewnętrznych, z którymi porozumiewały się różne serwery. Diagram wdrożeniowy pokazał istniejące zależności w sposób jasny i klarowny, pozwalając zrozumieć istniejące zależności nawet nowym osobom w projekcie.
Do narysowania diagramu użyłem darmowego programu ArgoUML dostępnego na licencji Eclipse Public License - v 1.0.
ArgoUML w porównaniu ze swoim głównym konkurentem Visio:
- jest darmowy
- jest prosty, a szata graficzna lekko spartańska
- można za jego pomocą wygenerować tylko 6 typów diagramów (klas, przypadków użycia, sekwencji, maszyny stanowej, czynności, wdrożeniowy)
- nie do końca spełnia (implementuje) wszystkie standardy języka UML
- posiada możliwość generowania kodu w językach takich jak java, c++, c#, itp.
- posiada możliwość inżynierii wstecznej plików JAR
dodatkowo, wynik naszej pracy możemy eksportować do:
- XML
- pliku graficznego
Pełny opis na http://en.wikipedia.org/wiki/ArgoUML
Mnie osobiście ArgoUML przekonało funkcjonalnością, oraz darmowością. Program, mimo iż nie jest w 100% zgodny ze standardami UML, oraz posiada nieco spartańską oprawę graficzną, to jednak, Moim zdaniem jest wystarczająco dobry do zobrazowania "clou problemu" i zwyczajnie 'robi swoją robotę'.
W momencie, w którym zdecydujemy, że warto wzbogacić naszą dokumentację techniczną o diagram(y) UML warto użyć do tego odpowiedniego narzędzia, szczególnie, że niektóre z nich posiadają takie opcje, jak np. autogenerowanie części kodu źródłowego.
Przy wyborze narzędzia, ważne jest to, jakiej funkcjonalności oczekujemy od narzędzia, tj. czy chcemy rysować, modelować, eksportować wyniki do metamodeli, a może jednak najważniejsze jest generowanie fragmentów kodu z diagramu? Bardzo dobry przegląd narzędzi, ze względu na rodzaje funkcjonalności znajduje się w jednym z pytań na forum stackoverflow.com.
W moim przypadku, właśnie skończyłem pracę nad rozbudowanym architektonicznie projektem, w którym mieliśmy 4 nasze serwery, z czego 3 schowane za "firewallem" oraz 6-7 usług zewnętrznych, z którymi porozumiewały się różne serwery. Diagram wdrożeniowy pokazał istniejące zależności w sposób jasny i klarowny, pozwalając zrozumieć istniejące zależności nawet nowym osobom w projekcie.
Do narysowania diagramu użyłem darmowego programu ArgoUML dostępnego na licencji Eclipse Public License - v 1.0.
ArgoUML w porównaniu ze swoim głównym konkurentem Visio:
- jest darmowy
- jest prosty, a szata graficzna lekko spartańska
- można za jego pomocą wygenerować tylko 6 typów diagramów (klas, przypadków użycia, sekwencji, maszyny stanowej, czynności, wdrożeniowy)
- nie do końca spełnia (implementuje) wszystkie standardy języka UML
- posiada możliwość generowania kodu w językach takich jak java, c++, c#, itp.
- posiada możliwość inżynierii wstecznej plików JAR
dodatkowo, wynik naszej pracy możemy eksportować do:
- XML
- pliku graficznego
Pełny opis na http://en.wikipedia.org/wiki/ArgoUML
Mnie osobiście ArgoUML przekonało funkcjonalnością, oraz darmowością. Program, mimo iż nie jest w 100% zgodny ze standardami UML, oraz posiada nieco spartańską oprawę graficzną, to jednak, Moim zdaniem jest wystarczająco dobry do zobrazowania "clou problemu" i zwyczajnie 'robi swoją robotę'.
czwartek, 16 stycznia 2014
Data recovery from damaged HDD
Ost. czasy, całe moje dane prywatne, włączając w to zdjęcia oraz filmy, kręcone podczas różnych okazji przerzuciłem z dysku twardego na dysk zewnętrzny i... pewnego dnia przypadkowo usunąłem z tego dysku pliki startowe. Efekt? Zarówno windows, jak i ubuntu linux nie były w stanie się dobrać do tych danych :(
Ponieważ te dane były dla mnie cenne, postanowiłem spróbować je odzyskać. Po przetestowaniu kilku przeznaczonych do tego celu programów, w końcu trafiłem na cgsecurity test disk
Dzięki temu, konsolowemu programikowi, udało mi się skopiować dane z dysku zewnętrznego, na inny dysk twardy, czyli udało mi się odzyskać dane, na czym mi najbardziej zależało, a że program jest dodatkowo udostępniony za darmo na mocy Licencji GNU to polecam go dalej.
Ponieważ te dane były dla mnie cenne, postanowiłem spróbować je odzyskać. Po przetestowaniu kilku przeznaczonych do tego celu programów, w końcu trafiłem na cgsecurity test disk
Dzięki temu, konsolowemu programikowi, udało mi się skopiować dane z dysku zewnętrznego, na inny dysk twardy, czyli udało mi się odzyskać dane, na czym mi najbardziej zależało, a że program jest dodatkowo udostępniony za darmo na mocy Licencji GNU to polecam go dalej.
niedziela, 27 października 2013
JavaScript Intellisense w VS 2012
Ostatnimi czasy, miałem okazję uczestniczyć (jako widz), w dwóch wykładach prowadzonych przez Jakuba Gutowskiego o wdzięcznym tytule "Javascript dla c# developera". Pierwsza prezentacja odbyła się 12 października podczas konferencji "on-line" dotnetconf.pl (można ją obejrzeć na youtube.com). Druga odbyła się 17 października podczas 69 spotkania wg.net (Warszawska Grupa .NET). (materialy ze spotkania)
Generalnie Gutek pokazał kilka ciekawostek związanych z językiem javascript, oraz zachęcał do zapoznania się i stosowania kilku narzędzi. Zanim jednak przejdziemy do esencji tego, o czym mówił i co chciał nas nauczyć, najpierw mała przekąska, tzw. "snack", czyli repost z bloga Gutka, nt. włączenia intelisense dla języka javascript w Visual Studio 2012 link do blogu Gutka jak włączyć intelisense w VS 2012.
p.s. Gdyby kiedyś coś się stało z blogiem Gutka, to należy utworzyć w solucji katalog przeznaczony dla plików javascript i dodać tam plik plik.js, a nast. wejść do Narzędzia->Opcje->Edytor Tekstu->Javascript->IntelliSense->Odwołania-> ustawić grupę odwołań (np. Implict (Web)), a nast. wpisać ścieżkę względną do naszego pliku i go 'Dodać'. Od tego momentu, mamy działające intellisense dla naszych plików js :)
Generalnie Gutek pokazał kilka ciekawostek związanych z językiem javascript, oraz zachęcał do zapoznania się i stosowania kilku narzędzi. Zanim jednak przejdziemy do esencji tego, o czym mówił i co chciał nas nauczyć, najpierw mała przekąska, tzw. "snack", czyli repost z bloga Gutka, nt. włączenia intelisense dla języka javascript w Visual Studio 2012 link do blogu Gutka jak włączyć intelisense w VS 2012.
p.s. Gdyby kiedyś coś się stało z blogiem Gutka, to należy utworzyć w solucji katalog przeznaczony dla plików javascript i dodać tam plik plik.js, a nast. wejść do Narzędzia->Opcje->Edytor Tekstu->Javascript->IntelliSense->Odwołania-> ustawić grupę odwołań (np. Implict (Web)), a nast. wpisać ścieżkę względną do naszego pliku i go 'Dodać'. Od tego momentu, mamy działające intellisense dla naszych plików js :)
niedziela, 21 lipca 2013
Programming never changes (asp mvc)
Czyli... w końcu rozpocząłem moją przygodę z ASP MVC na poważnie. Rozpocząłem ją od wszelkiej maści tutoriali, jakie można znaleźć na oficjalnej stronie asp mvc. O ile pierwszy tutorial z asp mvc 4 (MvcMovie) poszedł gładko, to już w nast. z asp mvc 3 (MvcMusicStore) w 5 części tutka wystąpiły błędy, a dokładniej "Using the same DbCompiledModel to create contexts against different types of database servers is not supported". Ale... od czego mamy stackoverflow.com ;)
Parafrazując słynny cytat z serii Fallout: Programming never changes
Parafrazując słynny cytat z serii Fallout: Programming never changes
Subskrybuj:
Posty (Atom)












