Domknięcia to jedna z najpotężniejszych cech języka JavaScript. Kiedy poznaje się mechanizm, który za nimi stoi, z początku wydaje się to piękne, ale mało życiowe. Okazuje się jednak, że czym więcej domknięć w kodzie, tym kod czystszy i bardziej zmodularyzowany. Przyjrzyjmy się jednemu przykładowi z Raw Salad.
trzewiczek info
Przy okazji konkursu Wiki Lubi Zabytki chciałem szybko postawić prostą wyszukiwarkę zabytków znajdujących się w rejestrze Narodowego Instytutu Dziedzictwa. Pracując w webie zawsze działam w Django, a przy tego typu prostych i szybkich realizacjach wybieram SQLite jako bazę danych - jeden upload lokalnie, a później kopia pliku na serwer. Problemy pojawiły się, gdy okazało się, że łomża nie posiada żadnych zabytków.
Mój twardy dysk przepełniony jest plikami mp3 - mój telefon nie rozumie innego formatu, więc jestem do tego zmuszony. Chcąc publikować muzykę na swojej stronie internetowej wybieram format OGG. Jak w terminalu przekonwertować pliki z mp3 do ogg? Wystarczy lame, oggenc i mała rurka.
Zgrywanie, konwertowanie, kompresowanie... Prawdziwy ból głowy. Udało mi się jednak znaleźć kilka narzędzi command-linowych, które pozwalają na manipulację plikami dźwiękowymi z łatwością. Dzisiaj o ripowaniu płyt magicznym programem abcde
Sprawa jest prosta i w gruncie rzeczy oczywista. Niemniej jednak straciłem dzisiaj czterdzieści minut szukając błędu, który okazał się błachostką. Chodzi o to, że standardowa biblioteka UGenów ChucKa zorganizowana jest w typową hierarchię klas. To dobrze! Szkoda tylko, że ta hierarchia ma luki.
Dwa operatory przypisania w ChucKu robią nieco zamieszania. W przypadku większości zmiennych nie natrafimy na problemy, ponieważ wirtualna maszyna zbuntuje się przeciwko niewłaśniwemu operatorowi. Niebezpieczeństwa pojawiają się jednak, gdy przyjdzie do obiektów klasy UGen. Dla nich klasyczny chuck operator ma swoje znaczenie.
Temat setterów i getterów jest w programowaniu obiektowym powszechny. Sam ChucK pozwala na bardzo ładną ich implementację, z którą spotykamy się w ChucKu dosłownie na każdym kroku.
Niestety ChucK jest wciąż we wczesnej fazie rozwoju, przez co wiele prostych rzeczy należy robić “na skróty”. Przykładem są statyczne pola klas, które nie są typami podstawowymi. W kwestii typów ChucK wzorowany jest na Javie – wszystko, co nie jest typem podstawowym (int, float, char) jest referencją do obiektu. Stąd mamy prosty problem – statyczny napis wewnątrz klasy.
N E W S