Ile to nie zarabiają programiści? No ja się tego tyle nasłuchałem, że aż żałuję iż takim nie jestem. Ale dość o mnie. Wielu owe opowieści inspirują one do zaszczepienia umiejętności kodowania u swoich dzieci. I tu jest ważne pytanie: jak uczyć programowania najmłodszych? Dziś pochylimy się nad odpowiedzią jakiej udzieliła nam firma Ubisoft. Czytaj dalej „Rabbids Coding!”
Category Programowanie
JavaScript: Undefined vs. null
Znajomy zapytał mnie dzisiaj czy to dobry kod:
W pierwszym odruchu utwierdziłem go (pytał by się upewnić), że nie, że lepiej byłoby użyć słowa kluczowego
null
. Argumentowałem nawet, żeundefined
można sobie swobodnie nadpisać. Wyczytałem to zdaje się na Stackoverflow.Jednak kiedy, spróbowałem sprawdzić moje własne słowa, znalazłem tą oto małą notkę:
JavaScript 1.8.5 note
Starting in JavaScript 1.8.5 (Firefox 4), undefined is non-writable, as per the ECMAScript 5 specification.
W skrócie: nie można (przynajmniej w nowszych przeglądarkach) nadpisać
undefined
. Operator===
też działa prawidłowo z użyciemundefined
. Nie ma więc nie bezpieczeństwa? Czyżbym wpuścił kolegę niechcący w maliny?Ale dalej mi się to wszystko nie podobało. Należy pamiętać, że:
undefined
nie jest stałą- nie jest też słowem kluczowym języka JavaScript (sprawdźcie sami)
- nie jest nawet słowem zastrzeżonym pod przyszłe użycie
- otrzymamy wyjątek jeśli napiszemy coś takiego:
if (zmienna_niezadeklarowana_wcześniej === undefined)
(trzeba więc użyć operatoratypeof
)
Czym więc jest undefined
? Jest zmienną globalną (choć tylko do odczytu od jakiegoś czasu). Lokalnie (wewnątrz funkcji) możemy ją sobie swobodnie nadpisać. Więc, jeśli nawet nie widać niczego złego przy wywołaniu kodu:
To wystarczy wstawić go do wewnątrz funkcji:
)();
Podsumowanie
Morał jest więc prosty: jeśli cenicie sobie jakość swojego dzieła, nie chcecie, aby się z was koledzy śmiali: używajcie null
do inicjacji zmiennych, nie polegajcie na tych małym potworku jakim jest undefined
. Jego używamy tylko do analizy np. zmiennych globalnych. Ja widzę też jeszcze powód dla którego lepiej jest użyć null
: jeśli chcemy przywrócić pierwotną wartość zmiennej, bardziej naturalne jest przypisanie do niej właśnie null
.
Taka jest moja opinia. Bardzo chętnie zapoznam się z jakąś dobrą argumentacją (jeśli jest takowa) przeciw.
Linki
Kiedy jeszcze będzie taki długi weekend?
Znalazłem w odmętach mojego komputera mały skrypcik. Napisałem go, dla znajomej, która była ciekawa, kiedy jeszcze powtórzy się z długim majowym weekendem. Prosta rzecz, ale nie chciałbym, żeby mi umknęła. A, że nie bardzo kumam gita, więc wkleję tutaj. Czytaj dalej „Kiedy jeszcze będzie taki długi weekend?”
Bash – wybredne kopiowanie
Domyślnym katalogiem na pobieranie plików w moich przeglądarkach, jest pulpit. Stamtąd rozdzielam pliki wedle własnego widzi mi się, jednak pewną klasę plików, życzę sobie mieć zawsze w pewnym specyficznym katalogu. Do tej pory, przenosiłem je tam ręcznie, ale uświadomiłem sobie, że przecież nie jest trudno proces ten zautomatyzować. Po pięciu minutach powstała ta oto linijka:
" = "" ] && cp "$1" ""
Ten skrypt oczywiście wykorzystuje do otwierania pliku z poziomu przeglądarki. Najwięcej problemu było ze sprawdzeniem poprawności zadanego parametru ($1
). Należało jednak upewnić się, czy parametr jest plikiem (to z pomocą: -f
) i czy ma zadane rozszerzenie. Zamieszczam, aby mi się nie zgubiło. Na co warto zwrócić uwagę:
${1##*.}
– to wyrażenie zwraca rozszerzenie pliku (tutaj dla zmiennej$1
). Dla nazwy np. „nazwa.z.kropkami.txt”, zwróci „txt”. Po sieci można znaleźć wersje z jednym płotkiem (#
), ale wtedy wynikiem są wszystkie znaki po pierwszej kropce (szczegóły w załączonych linkach)[ (...) -a (...) ]
– I (ang. AND) w składni programutest
, używanego przy warunkach w Bashu
Z pomocą: bash String Manipulations i Linux tip: Bash test and comparison functions.
O JPanel w stałym rozmiarze na JFrame
Jakiś czas temu poszukiwałem sposobu, aby zmodyfikowany przeze mnie JPanel
zachowywał swój rozmiar niezależnie od wielkości okienka (obiekt JFrame
), na którym bezpośrednio leżał. Kosztowało mnie to nieco nerwów. Nie wystarczyły metody setSize
, setPreferredSize
, setMaximumSize
, setMinimumSize
, użyte jak w poniższym przykładzie: Czytaj dalej „O JPanel w stałym rozmiarze na JFrame”
Jak niektórzy piszą tutoriale
Coś mnie tknęło, aby zgłębić nieco ASP .NET. Technologię tą, spłodził Microsoft, który wiąże z nią duże nadzieje. Naukę rozpocząłem od wyszukania jakiegoś tutorialu, który nauczyłby mnie stawiać pierwsze kroki w wymienionej. Trafiłem tak na drugi link w wynikach wyszukiwarki – stronę: http://www.dotnetspider.com. Czytaj dalej „Jak niektórzy piszą tutoriale”
Parsowanie spisu imienin #2
Swego czasu ‚popełniłem’ jeden mały skrypt na użytek własny, który miał mi przerobić listę imienin ściągniętą z Wikipedii (strona: Imieniny) na zbiór zapytań SQL, które potrzebne mi były do jednego projektu. Patrząc z perspektywy czasu napisałem mały koszmarek. Czytaj dalej „Parsowanie spisu imienin #2”
PostgreSQL: Lista tablic w bazie
Ku pamięci: zapytanie, które zwraca wszystkie tablice z bazy danych (PostgreSQL) w danym schemacie ma następującą postać:
SELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg\_%' AND tablename NOT LIKE 'sql\_%' AND schemaname = 'nazwa_schematu'
Na podstawie: http://notfaq.wordpress.com/2006/07/29/sql-postgresql-get-tables-and-columns/
Jak zainstalować obsługę MPI na Ubuntu?
Mam tu na myśli na jednym nie połączonej z innymi maszynami komputerze, który ma tylko jeden rdzeń. Podejrzewam jednak, że zadziała dla posiadaczy kilku. Czytaj dalej „Jak zainstalować obsługę MPI na Ubuntu?”
Czy liczba jest liczbą? (PHP)
Nie dawno chciałem się dowiedzieć, jak najlepiej jest sprawdzać, czy tekst jest liczbą w Javie. Szybko trafiłem na ten oto wpis, którego autor sprawdził dostępne metody pod względem szybkości wykonywania. Wyszło, że najlepiej jest chałupniczo – przejrzeć znaki w stringu po kolei. Czytaj dalej „Czy liczba jest liczbą? (PHP)”