Ale ponieważ witasz na mojej stronie a nie na mediach społecznościowych, pare słów więcej: tajnym 'sosem' w którym pływa to nagranie jest sprzężenie zwrotne pomiędzy sherman filterbank a RV600 (gitarowym pogłosem w kostce) - pogłos jest z dużym predelayem, 100% wet, odzywa sie po chwili - trafia na przester, który następnie znowu wysyłany jest na pogłos. Skąd po chwili wraca. To jest to dziwne coś pomiędzy stanradowym, run-of-the-mill łupaniem.
Przydażyła mi się dziś dziwna rzecz, mam mieszane uczucia, być może jest to stan zbliżony do utraty zmysłów, do tego miejsca gdzie do pewnych 'normalnych' procesów myślowych po prostu nie ma już powrotu
Poszedłem dziś na lokalne spotkanie sympatyków VR, po czym uciekłem z niego. Ono tra dalej, 10 minut rowerem stąd, mogę tam wrócić, ale wybieram robienie w samotnośći. 1
W pewien sposób VR jest dla mnie o samotności, chciałbym żeby inni ludzie mogli doświadczyć tego świata, ale chyba wolę żeby efekt był lepszy, nawet jeśli miałoby to być pośmiertne ;)
Uciekłem z lęku pewnie głównie, przed tym że zacząłbym opowiadać, gdy tylko zacząłbym zadawać pytania, pytania zaczęłyby pojawiać się w odpowiedzi, i musiałbym - o zgrozo - wejść w interakcję z prawdziwym człowiekiem
Wejście w interakcję, fun and games, śmianie się i picia piwa z innymi ludźmi, przecież to przed tym właśnie próbuję uciec, konstruując ten świat
Ale z drugiej strony mam też dość dobrą racjonalizację. Jeżeli mogę pewne rzeczy zrobić sam, bez niczyjej pomocy, to będą one bardziej spójne bardziej wyrażały to co chcę powiedzieć,
samo gadanie o tym z innymi pasjonatami, byłoby jakimś zboczeniem z kursu pewnie, wolałbym pokazać im coś bardziej gotowego
a jeśli nigdy nie bedzie gotowe? to że wydaje się blisko może być równie dobrze iluzją, projekt może stawać się
Nie wiem czy będzie gotowe, chyba podróż jest dla mnie ciekawsza,
Przepraszam za literackie ułomności, livestream ze snu sprzed paru miesięcy:
To był jakiś rodzaj dystopii, pełnej wojska patrolującego strefy, kolczastych płotów, nomadów, do których sam się zaliczałem, było tam wiele wątków, mieszających się ze sobą. Pamiętam że próbowałem dostać się na wschód, i że marzyłem żeby ukraść śmigacz który widziałem w bogatej dzielnicy, znałem dobrze czas reakcji ekip trzymających wodne checkpointy na rzece, i wiedziałem że nie zdążyliby odłożyć menażki z herbatą żeby podejść do karabinów, system ustawiony był pod zatrzymywanie i kontrolowanie większych łodzi handlowych, którymi dalej, jakby udając że konflikt nie istnieje trwała wymiana żywności za używane baterie litowo jonowe i inne dobra obecne wzdłuż żyły. Towary były sprawdzane, a żeby przepłynąć całą trasę jako załoga barki, trzeba by dysponować ważnym międzystrefowo dowodem, w zasadzie mieli je tylko więksi przewoźnicy, i ich najemnicy.
Mój hamak był blisko rzeki, nie było w nim wiele rzeczy, mógłbym opuścić go gdyby sytuacja na to pozwalała, ale przy rzece mogłem w miarę stabilnie funkcjonować, dostarczając potrzebnych napraw, w zamian czerpiąc jedzenie z garów gotowanych przez całą dobę przy dużych ogniskach. Nie mieliśmy najemników, ale żyliśmy dobrze z checkpointem przy rzece, handel trwał ale żołnierze nie mieli nic ciekawego do powiedzenia, poza tym trwał konflikt, my nie ufaliśmy im, ani oni nie ufali nam.
W zasadzie jedyną rzeczą po którą musiałbym wrócić do plecaka ukrytego w hamaku, gdyby przyszło mi natychmiast zmieniać obóz, był czysty zestaw ubrań, z nowoczesnych, samoczyszczących się tkanin, z zewnątrz wyglądałem w nim prawie jak średni mieszkaniec miasta, którego przedmurze sąsiadowało z naszym obozem, uniemożliwiając w zasadzie ruch inny jak w górę czy w dół rzeki. Kurtka była przeróbką, miała w środku różne schowki gdzie rozmaite karty magnetyczne były izolowane magnetycznie, więc nie wykrywały ich zwykłe czytniki, nie pamiętam skąd ją miałem, czy była to trudna usługa czy jedna z trudnych etycznie decyzji o przygarnięciu sprzętu porzuconego na polu bitwy ale była moim orężem w tej bitwie.
Musiałem skądś znać Miasto, być może byłem w nim wcześniej, były różne systemy, pasaże kablowe, trakty wentylacyjne, przejścia dla obsługi, w każdym razie pamiętam widoki z dachów, refleksy przeszklonej metropolii, porastającej niczym fluorescentne koralowce zbocza i doliny falujące na wysokość kilku pięter aż po horyzont. Szczyt wulkanu ginął we mgle, przy tej pogodzie mogłem tylko na pamięć odtworzyć jego kontur, gęste szare chmury podświetlone intensywną łuną miasta pożerały szczyty drapaczy chmur, razem z ich koronami, niereuglarnymi porostami z anten, w dzień zdawało się że niektóre uginają się prawie pod ich ciężarem.
Przez któryś z kanałów wentylacyjnych udało mi się przedostać do komisariatu policji, do toalety. Korytarz pełny był gliniarzy, nie obawiałem się ich aż tak bardzo, ponieważ nie było na mnie aktualnego nakazu zatrzymania, ale wolałem uniknąć pytań co tu robię biorąc pod uwagę wcześniejsze, odpracowane wyroki, na pewno mogłoby to pokrzyżować mi plany. Nie miałem dostępu do innych części komisariatu, miał swój własny system wentylacyjny, ale w tym miejscu budynku miała miejsce jakaś przeróbka, przez którą ktoś doczepił tą jedną toaletę do zewnętrznej sieci wentylacyjnej, która pozostała niezabezpieczona. Gliniarze znali się z twarzy, ale często widziałem jak interesanci do poszczególnych pokojów czekali na korytarzu, z ich wyrazów twarzy potrafiłem prawie wyczytać czy są tam jako świadkowie czy jako podejrzani, w stronę krzeseł poczekalni ustawiona była większość kamer, a kamery w toalecie musiały być nieaktywne już dawno bo nikt nie reagował gdy smażyłem ich przetwornice laserem.
onieważ wszyscy paradowali tam z widocznymi identyfikatorami, starałem się stać zawsze tak żeby udawać że sikam do pisuaru, czasami gdy ktoś zagadywał udawałem że chwieję się i bełkoczę coś, zostawiano mnie w spokoju, wielu funkcjonariuszy nosiło podobne kurtki więc mogłem czasami uczyć się rozkładu korytarzy, starałem się jednak unikać pokazania mojej twarzy kamerom. Czasami wkradałem się tam w nocy, z detektorem podczerwieni, znałem więc obszar po którym mogłem bezpiecznie się poruszać. Czasami stałem przy lustrze, udając że obserwuję swoją twarz.
Chyba mniej więcej w tym czasie nad miastem zaczęły pojawiac się hologramy, z początku chyba nikt po prostu nie zwrócił na nie uwagi, wyglądały jak zwykłe ekrany diodowe, nie odróżniały się niczym od reklam coca-coli widocznych na starych pocztówkach z trafalgar square, zaskakiwało co prawda jak udało się powiesić je na masztach, już uginających się od anten, ale dziś istnienie ultralekkich technologii wyświetlania było w zasadzie koniecznością, a że kogoś pomimo konfliktu stać było na dalsze powiększanie łuny - cóż, odkąd emiraty zaczęły nieoficjalnie przejmować drobny handel w Mieście, różne kaskaderstwa w wykonaniu węża konsumpcji próbowano uskuteczniać na mieszkańcach Miasta, którzy utrzymywali byli dzięki niemu w błogim przeświadczeniu, że nic zlego się nie dzieje.
Potem pamiętam że wzdłuż muru pędził konwój samochodów terenowych, plus kilka opancerzonych wozów piechoty. Wojsko regularnie oczyszczało drogę wzdłuż podmurza z żebraków i handlarzy, spychając ich do nas, w dół rzeki, właśnie dlatego że od czasu do czasu kanał ten musiał byc uzywany do transportu ciężkiego opancerzenia. Spojrzałem w dół rzeki i zauwazyłem duży pośpiech barek, wszystkie jednak próbowały odpychać sie jednak swoimi napędami na zachód, w górę rzeki.
Spojrzałem jeszcze raz na drogę, konwój nie kończył się jeszcze wiele minut, nie był wyjątkowo długi ale zawierał także wozy zaopatrzeniowe a wreszcie na końcu wozy oznaczone jako karetki, była to więc formacja która nie spodziewała się rychłego powrotu do bazy, spodziewali się zginąć, coś większego musiało się więc dziać.
Postanowiłem nie ryzykować zostawania przy rzece, konwój handlowy z jakiegoś powodu zawrócił, więc możliwe że stanie się tam niedługo nieprzyjemnie, zerwałem więc swój hamak i przeniosłem się na tą noc na jeden z dachów opuszczonych magazynów, było tam już kilku mieszkańców, znałem ich z widzenia, ale nigdy nie rozmawialiśmy, tak było bezpieczniej. Bez słowa rozłożyłem śpiwór i nasłuchiwałem odgłosów miasta, ale miasto było spokojne, trwał mecz, a może transmisja koncertu, w każdym razie stopniowo, szybciej niż nadszedłby świt, miasto zaczęło stawać się dziwnie jasne, jakby wszystkie szklane powierzchnie odbijały jakieś fajerwerki.
Wystawiłem głowę nad legowisko ale miasto wyglądało prawie normalnie, przynajmniej na pierwszy rzut oka. Stopniowo jednak zauważyłem całą bateria wieżowców, dość daleko, parę kilometrów od mojej pozycji płonie.
Przetarłem oczy ze zdumienia ale obraz wijących się płomieni, eksplozji wybuchów kolejnych pięter, w hiperrealizmie, niczym z hollywoodzkiego filmu wywołuje u kolejnych ludzi atak paniki, zostaliśmy zaatakowani, ewentualnie mógł mieć meijsce atak terrorystyczny, z punktu widzenia nomada konsekwencje są w zasadzie takie same. Jeszcze większa presja wojska, jeszcze ciaśniejsze kontrole.
W mieście zaczęły rozlegać się syreny, nikt jeszcze nie krzyczał z przerażenia, nikt blisko jeszcze nie wił się od poparzeń, na pewno nie była to więc technologia termonuklearna, telefon także wydawał się dalej mieć internet, więc nie był to atak jonizujący, ale powoli całe miasto zaczynało stawać w płomieniach, i pierwsze krzyki przerażenia słychać już było z pobliskich balkonów.
Czekałem co będzie dalej bo wyglądało to bardziej na marketing stunt producenta gaśnic, albo nieśmieszny żart hakerów z bogatej dzielnicy, niż faktyczny kataklizm, wszystko wydawało się być nienaruszone.
Nagle rozbłysły chmury, najpierw było tylko światło, pare sekund bieli która błyskawicznie sfocusowała laserowe projekcje na jednolity grid, niczym wielki obraz kontrolny focusując się na optymalnej głębokości gęstych chmur. Obraz zgasł, a następnie zapłonął na sekundę ogromnym, zajmującym całe niebo obrazem kontrolnym, którego odbicia widać było we wszystkich okolicznych oknach. Atak holograficzny pomyślałem, starając się nie patrzeć w rozszarpujący świadomość na drobne kawałki miks, wyświetlany na pewno na wszystkich odbierających publiczny internet wyświetlaczach, przez godzinę czułem odruch wymiotny po fragmencie który dostrzegłem kątem oka odbity od szyby toalety. Potem wszystko zgasło, był wyjątkowo słoneczny dzień, dzięki czemu udało się rozmontować montowany na pewno przez kilka miesięcy system projektorów laserowych, dzięki którym chmury zapłonęły, ale nigdy nie udało się wprowadzić poprawek firmware łatajacych dziury w wyświetlaczach, Miasto nie odzyskało już nigdy swojego wczorajszego poziomu beztroski.
Następnego dnia w toalecie komisariatu był lekko powiększony ruch, dwóch grubasów oddawało swoje odchody, oraz co gorsza, na korytarzu mignął mi mundur polowy służb specjalnych, ale poza nerwowym trzaskaniem drzwiami w zasadzie panował spokój.
Jadłem batona udając oddającego kał w toalecie, kiedy usłyszałem nerwowe krzyki, wojsko zajęło korytarz szybko wypychając gliniarzy do ich gabinetów, nie mogli tego widzieć, zresztą nikt się nie opierał, widocznie znali tą procedurę. Podwinąłem nogi zanim wyraźnie spieszący się żołnierz zerknął tylko schylając się po toaletach szukając nóg, a nie widząc moich uznał że jest pusta i pobiegł dalej. Po chwili rozmów przez radio usłyszałem znajomy odgłos, często dochodził z windy, przypominał otwieranie śluzy pneumatycznej.
Tym razem było jednak trochę inaczej, po kolei otwierały się kolejne śluzy, a drzwi windy pozostawały otwarte. Wojskowi opuścili korytarz, a sześciu dryblasów w cywilnych ciuchach przeciągnęło przez korytarz coś czemu nie mogłem się przyjrzeć, było mniej więcej gabarytów człowieka ale musiał to być albo egzoszkielet albo coś tego typu bo sześciu kolesiom niesienie tego sprawiało dużą trudność. Miałem też wrażenie że słyszałem brzdęk metalu gdy ta rzecz przekraczała próg windy i znikała w czeluściach tajemnego przejścia, prowadzącego do ukrytej części budynku.
Do korytarza ktoś wszedł więc udałem że sikam do pisuaru, koleś poszedł najpierw do damskiego a potem speszony stanął nieopodal,
- Pierwszy dzień? Spytałem żartobliwie
-Pierwszy dzień to nie są ćwiczenia - odpowiedział wyraźnie spięty
Ktoś do nas krzyknął z korytarza
- Dawać chłopaki, zaraz zamykamy śluzę
Tak zacząłem współpracę z służbami specjalnymi.
Potem sen urywa się, prawdopodobnie w końcu zorientowali się kim jestem, zresztą jestem bezpieczniejszy wiedząc że w moim mózgu nie ma już śladów tego czym zajmowałem się przez te lata. Na szczycie czaszki mam ślady po wszczepach, całość noszę pod odczepianą plastikową osłoną, którą pozwolono mi zachować bo goła zaślepka po implancie w tym miejscu wyglądała słabo, reszty implantu nie udało mi się niestety zachować odchodząc ze służby.
Nie macie ze soba nic wspolnego. Nie stanowicie stada. Nie lubicie podobnej muzyki, podobnych sytuacji. Nie jesteście tej samej narodowości chociaż większość z was posługuje się językiem polskim. Nie zbieram informacji na wasz temat. Nie musisz klikać że akcptujesz ciasteczka. Nie sprawdzam nawet jaką przeglądarką się posłgugujesz to nie jest istotne. Ta strona może funkcjonować bez mrugnięcia okiem że niby w ten sposób wyraziłaś zgodę na jakieś przetwarzania. Nie wyraziłaś zgody a jedyne przetwarzanie jakie ma miejsce to Ty jako parser tekstu. Czytasz, rozumiesz, po co mi informacje o perfumach których używasz która skóra ci się podoba, to jest Twoja prywatna sprawa.
Przyznaję się do grzechu, po tym jak znudzilo mi się czytanie logow Apache miałem chwilę zainstalowane google analitics, ale nie akceptuję już ich polityki w związku z czym zakończyliśmy współpracę na przykaznych termsach, dostając piętnascie lat analizy logow apache za darmo.
Stanowicie mniejszość, są zarówno kobiety jak i mężczyzni, czujecie się troche inni ale nie łączy was nic a przynajmniej nie w moim imieiu. Mijacie się niczym w mało uczęszczanej kawiarni, odkąd rozpocząłem nadawanie z jedynką z przodu mijacie się. Nieczęsto, ale raz na pare godzin jest was dwie osoby, po odwiltrowaniu ruchu generowanego przez boty. Zazwyczaj czytasz tą stronę sama. Spędzasz około 40minut, contentu jest na 300h, mijasz się z jedną osobą.
Wiem, że nie wiecie o czym mówię tak do końca więc opowiem jeszcze raz.
Na prywatnej stronie www (bo pewnie wiekszosc i tak czyta to na fejsie, dziekujemy za uwage) mam ruch kolo 14 osob dziennie. Parę osób zgląda i czyta paragraf, pare osob w tym ty czyta dalej. Po co? Cdn
Ps. Tak to oznacza że odpinam google analiticsa, papa, żegnam bez żalu, i tak tam nie zaglądałem, dajcie mi czas do pokjutrza na ogarnieie technikaliow
Dawno nie zajmowałem stanowiska w bierzących sprawach politycznych, po pierwsze dlatego że mnie tu nie było, po drugie temat uważałem za
w większości dobrze opracowany serią (na szczęście nie publikowanych) felietonów w liceum
Wczoraj miały miejsce protesty kobiet w sprawie zaostrzenia prawa do otrzymania zabiegu aborcji. Nie wypowiadałbym się nawet i dziś, ale musiałem o 19 przejechać przez gdańsk i pól kilometra przy dworcu zajęło pół godziny, więc była chwila żeby przemyśleć zagadnienie.
Lubię myśleć o Ziemi, jak o bąbelku powietrza pływającym w oceanie próżni. Płyniemy na jednej łodzi. Dryfujemy z nieznaną trajektorią przez pogranicza galaktyki. Można powiedzieć że każdy z nas budzi się na tym dziwnym statku kosmicznym, komora hibernacyjna otwiera się, wychodzisz ty, zajmuje pare lat zanim ogarniesz o co chodzi, że jesteśmy na statku na misji. (jak ktoś lubi takie scifi Pandora 2017)
Z surowcami jest jeszcze całkiem dobrze, dolne pokłady statku, tam w maszynowni, ci którzy muszą codziennie osiem godzin składać nasze telefony komórkowe i szyć ciuchy, mogą mieć na ten temat inne zdanie, ale na naszych pokładach jest spokój. Mamy czystą wodę, mamy czyste powietrzy (przynajmniej tu w Trójmieście jest spoko), mamy prąd w gniadzku, internet, samochody i tanie telefony komórkowe.
Ale jajogłowi z pokładu naukowego mówią już o tym że robi się nas powoli za dużo. Kiedyś inne gatunki dzieliły z nami niektóre pokłady, teraz tylko płodzimy zmutowane potomstwo tych gatunków żeby jeść ich jaja, teraz jesteśmy tylko my, a nasza liczba wykładniczo przyrasta. Każdego dnia stoimy w korkach dłużej, jakiś nowy człowiek zyskał uprawnienia jazdy i zapycha mi drogę swoim BMW. W końcu zasoby zaczną się kończyć. Wielu ludzi pracuje nad tym aby miało to miejsce możliwie najpóźniej.
Wprowadźmy teraz dwa dodatkowe poziomy abstrakcji, shall we?
Może nie jesteśmy promem, rakietą wystrzeloną z innej planety. Może jesteśmy bardziej jak stacja międzycywilizacyjna kosmiczna. Dla istot na różnycm poziomie dajemy możliwość zalogowania się na różnych poziomach, odbywają się równolegle, na przykład scena insektów, rozwijająca zagadnienie rozproszonych sztucznych inteligencji rozgrywa tu swoje zawody różnych dyscyplin w cyklach rocznych, dzielmy się z nimi przestrzenią bo dopóki są małe (karaluchy są z nami w stanie zerwania stosunków dyplomatycznych).
Przed wejściem na stację 'logujesz się' do skawandra, którego nie będziesz mógł/mogła opóścić aż do końca wizyty. adaptacja zajmuje parę lat, potem jeszcze obowiązkowe kursy przysposobienbia, i przez kilkadziesiąt lat możesz na naszej stacji operować. Wylogowanie następuje automatycznie z chwilą opuszczenia skafandra (lub jego uszkodzenia beyond repair). Jeżeli komuś bardzo nie podoba się stacja, może honorowo wejść do śluzy powietrznej i dać się wypchnąć poza atmosferę ochronną. Tą operację nazywamy Eutanazją.
Do śluz pukają też także nowe byty, które chciałyby rozpocząć swój cykl na stacji, dowiedzieć się jak to jest żyć, jak to jest chodzić, jak to jest robić kupę, jak to jest kochać. Sława turnusu na Ziemi rozpościera się daleko poza naszą galaktykę, chętnych nie brakuje.
Zapłodnienie to jak rodzaj otwarcia śluzy. Samica zdolna do produkcji ciała dla nowego bytu i samiec zdolny do zapewnienia mu bezpieczeństwa jednoczą się, otwierając śluzę, chętni wchodzą do programu rozpoczęcia materializacji swojej powłoki.
Problem polega na tym, że średni poziom życia w tych rejonach świata jest już wysoki. Mamy lodówki, mikrofalówki, lustrzanki, najnowsze iphony, za pomocą tych przedmiotów komunikujemy się ze sobą, ja piszę do was na swoją stronę stukając w macbooka. Nawet jeśli czasami płaczę myśląc o tym co ze sobą zrobiłem, i tak jestem w uprzywilejowanej części. Nie muszę szukać orzechów żeby przeżyć.
Oferta przyszłego życia którą może dać siedemnastolatka z patologicznej rodziny, którą zapylił jakiś pijany seba jest żadna. To dziecko będzie, będzie kolejny człowiek, ciężko powiedzieć w twarz dorosłemu człowiekowi 'fajnie jakby cię nie było', ale to nie jest zasługa porodu. To jest zasługa starań bardzo wielu ludzi po drodze którzy dzielili się tym bytem swoim jedzeniem, dawali mu ciepło, uczyli go. I teraz jest. Ale to jest rezultat pracy, a w mniejszym stopniu cud. Taki sam cud jak to że po tygodniu na śmietanie wyrośnie pleśń.
Najlepiej by było nie otwierać bez przyczyny wrót, może grażyna jednak nie powinna była dawać sebie. A może seba też by się zajął czymś pożytecznym. Ale stało się, brajanek w drodze, co teras. Brajanek może anwet mieć już ciało, z mojego punktu widzenia może mieć mózg i nogi - ale nie widzaił jeszcze świata, jeszcze nie wie co by stracił, gdybyśmy pozwolili mu skończyć w sierocińcu
I tak otwieramy znowu śluzę powietrzną, przed zakończeniem pierwszej fazy operacji dekompresji po bardzo długiej podróży. Świadomość brajanka nie dostaje wilczego biletu, jest już blisko stacji, a za pięć minut rozpoczyna się kolejne dokowanie.
Poznałem dziś ciekawego człowieka. w okolicy czwartego zdania wspomniał mimochodem że jest zazanjomoiony z treścią strony.
To są chwile kiedy to wraca, dostajesz wypłatę, z autoamtu sypią się monety. twój przekaz trafił. osoba, którą chciałeś poznać, już wie, co odpowesz na pytanie o najlepszą aplikację na iphone, oczywiście impaktor.
A przy tym jakoś trochę szerzej też, o budowaniu nadzieji, gdzieś w ciemnym świecie niepowiązanych informacji, szumu twittera fejsbuka instagrama i pierdyliona nowych modnych platform o ktorych nigdy nie słyszałem (obawiam się że przegapiłem okienko na zakładanie konta w tinderze), że cała ta produkcja dokądś trafia.
Póki jeszcze ton w miare formalny, wspomnę o pewnych również bardziej formalnych zaletach. Po pierwsze, obowiązuje mnie tu prawo prasowe, jestem wydawcą o nakładzie nie wymagającuym rejstracji, ale mogę korzystać z praw domu medialnego. mogę wydurkować sobie legitymacje reportera zambari.art.plm nadać jej numer 001 i oba będzie ważnym dokumentem w polsim prawie (osobną kwestią jest że wszystkie prawa dziennikaży są uprzejmnościowe i legitymacja tak naprawdę niewiele daje poza omijanem ochrony). Co ważniejsze. Wpisu na tej stronie nie może usunąć nikt poza mną i sądem rzeczypospolitej polskiej. ani obama (sorry, merkel), ani żydksiążka, ogólnie dopóki nie zostanie wyudany prawomocny wyrok sądu Polski który każe mi coś usunąć, mogę sobie tu publikować absolutnie wszystko na co mam ochotę (o ile nie łamię tym prawa oczywiście). jestem w procesie tracenia czwartego czy piątego z kolei konta na fejsbuku, te fasady odpadają ode mnie, nie trzymają się. czasami
to mi się najbardziej zawsze podobało w publikowaniu swojej usługi publikującej tekstym, czasami zastanawiam się jak ludzie na tą stronę trafiają obecnie. Bo tempo odwiedzin, kilkanaście osób dziennie mam tu z zasadzie stałe od początku istniani strony.
Jesteście długim ogonem, to jest ruch który umyka błędowi statystycznemu w kategoriach big data. w zasadzie was tu nie ma. nie czytaćie tego.
Jeżeli ktoś z wasz zastanawia się czy nie postawić swojej strony www. to kosztuje dużo pracy. jeżeli ma ci się znudzić po dwóch miesiącach, to lepiej nie zajmuj globalnej przestrzeni nazw swoim url (jaki to jest obecnie problem)
Ale dla tych którym się będzie chciało, z perspektywy kogoś, kto napisał sobie małego pejdża w html prawie dwadzieścia lat temu i od tego czasu tylko raz na pare miesięćy dopisuje coś nowego, to była to inwestycja bardzo udana. Jest coś magicznego w tym pisaniu listu do nieznanego adresata. Jak wielu arestatów odnajdyuwałem, poprzez co w zasadzie, ani to literacko dobre ani muzycznie, ale może jest coś w percepcji czym mogę sobie siebie się podzielić. Mogę wręcz pozwolić sobie bardziej osobiście, na chwilę, listu do Ciebie. Nie jesteś kroplą w morzu, użytkownikiem o numerze w rejonaach milionów, jesteś prawie jak ten pojedynczy foton wpadająćy przez bramkę, interferujesz sam ze sobą, w pomieszczeniu nie ma nikogo innego.
tl;dr: Nie wiem jak tu trafiacie, ale myślę że się domyślam.
2017:11:2   Synthetic Aperture Radar (SAR) // Software Defined Radio (SDR) // Phased Antenna Array
Pomysł sprowadza się do tej samej idei co doświadczenie z fizyki z pojdynczymi falami przechodzącymi przez szczelinę, formuuljąc nowe czoło fali
Jeżeli możemy opóźnić sygnał dochodzący do kolejnych 'szczelin', możemy przed światem zewnętrznym utworzyć dowolne czoło fali. Technologia tego typu jest w powszechnym użyciu w nowoczesnej technice radarowej. Mogąc otwierać i zamykać szczeliny w precyzyjnych slotach czasowych możemy nakierowywać nasz radar na bardzo konkretny punkt na powierzchni ziemi. Taki radar nie ma potrzeby wykonywania ruchów - jego ogniskowaniem zajmuje się komputer, otwierający i zamykający szczeliny w bardzo precyzyjnych ods†epach czasu. Jak bardzo precyzyjnych? Światło porusza się 300 000 000 m/s, więc jeżeli twoje anteny rozstawione są co metr, musisz pilnować czasu z dokładnością do 3 nanosekund. Jeżeli chcesz miniaturyzować układ, twoja dokładność czasowa musi być jeszcze wyższa.
Tworząc tego rodzaju 'Arraye', oprócz bardzo precyzyjnego ogniskowania, emitując falę możemy wywoływać wrażenie istnienia syntetycznego źródła promieniowania, w innym punkcie, albo po prostu emitującego równoległe fale pod pewnym kątem. Można też odbierać, wtedy kierunkowość działa nam jako filtr, bardzo mocno osłabiający wszelkie promieniowanie które NIE przyszło z zadanego kierunku. Nawet mocna fala, która przyszła z innego kierunku, jest po prostu niwelowana przez konstrukcję układu odbiornika.
A teraz, pisząc wcześniejszy wpis, żeby historia się zgadzała, kolejny cykl obrazków, nieco wcześniejsze implementacje tego samego pomysłu.
I tak by pewnie w najlepsze trwała zabawa w syntezę potężnych, potężnych sygnałów radiowych, takich mogących wzbudzić drżenie szyb kilkaset kilometrów dalej, i skutecznie odbieranych być po kilku okrążeniach planety. Wiele relacji (sam za młodu kilka słyszałem) że były przypadki że komuś metalowy ząb w czaszce zaczynał odbierać słyszalne ludzkie głosy, było spowodowanych przez próby emisji za pomocą Woodpeckera sygnałów audio. Normalnie służył on jednak jako radar zwiadowczy, emitujący puls i gromadzący odbicia, nawet spoza lini horyzontu. Było to tak zwane radiowe oko moskwy. Mówimy dalej o 1978 data pierwszego odebrania sygnału, a był on zarejestrowany praktycznie na całej planecie. W polsce, leżącej stosunkowo niedaleko trasy fali 'woodpeckera', także często zdażały się sytuacje dziwnych drżeń metalowych przedmiotów. Aby emitować tego rodzaju moc w 78 potrzebna była masa energii (dalej jest). Dlatego rosjanie wybudowali bardzo niedaleko elektrownie atomową, i wykonywali sobie za pomocą tej rozgłośni rozmaite skany różnych wydarzeń, aż któregoś dnia któryś z generałów, chcąc być może czegoś dowieść, postanowił zignorować czerwony alarm wznieciony przez inżynierów projektu. Panie generale, pobieramy za dużo mocy, reaktor zaczyna się topić. I tak oto dostaliśmy jedną z większych katastrof nuklearnych w tym rejonie ziemi. osobiście znałem w momencie wybuchu reaktora już takie tytuły jak 'spiderman' byłem więc pozytywnie naładowany myślami o tym że o to nasz gatunek znowu idzie naprzód, będziemy mutować szybciej. Tą samą myślą staram się pocieszać w sprawie fukushimy
Od dawna chodziła za mną pewna wizja. Odpowiadała ona na pytanie : dlaczego antyczne cywilizacje znajdujemy zazwyczaj przysypane, pokryte czymś, pyłem, pisakiem, gruzami, lawą. Logika nakazywałaby tu dopatrywać się jakiegoś rodzaju równoważenia, tzn że np. połowę znajdujemy zakopaną, bo nie znajdujemy tej drugiej połowy, klóra została przez ząb czasu zeszlifowana na zero. Tak też może być.
Ale załóżmy na moment że jest inaczej.
Co jeśli ziemia naprawde stopniowo rośnie, jej materii przybywa, atlandyta jest zalana nową wodą, kości dinozaurów odkrywane są na głębokościach kilkudziesięciu metrów, dominuje wrażenie jakby ziemia jednak akumulowała materię.
INTRODUCING: PROMIENIOWANIE KOSMICZNE
Na wstępnie chciałbym zaznaczyć ze kwantówki nie ogarniam, i że będę upraszczał i opowiadał domysły, prosżę o korektę gdyby były rażące różnice ze stanem faktycznym.
Nie zastanawiałem się nigdy specjalnie nad tym czym jest 'promieniowanie kosmiczne', zawsze mi się wydawało że chodzi tu po prostu o promieniowanie elekromagnetyczne tła, emisje pulsarów, eksplozje supernowych i tak dalej.
Niedawno, przypadkiem, trafiłem na termin 'cosmic shower'
Mówiono nam, że spadające gwiazdy to zawsze ciężka materia, odłamki komet, spalająće się w atmoswezre. Ale część z tych błysków to promieniowanie czerniekowa, błysk światła związany z tymczasową emisją promieniowania 'radioaktywnego',
Shower3_html_m2d3be517.png2wbmp(string pngname, string wbmpname, int d_height, int d_width, int threshold)
)
Ten wpis będzie o tym, dlaczego warto zacząć używać GITa, nawet jeśli nie zamierzamy nigdzie publikować kodu.
Jeżeli napisałeś/aś kiedykolwiek kod dłuższy niż dwie strony, to na pewno był taki moment, kiedy teraz nie działa, chociaż wiesz na pewno, że wczoraj działało. Coś się zepsuło, i trzeba szukać co. Czasami prosciej niż cofać mozolnie wszystkie zmiany które się ostatnio zrobiło, jest cofnąć się do backupu, i napisać jeszcze raz to co się chciało - warunkiem skuteczności takiej operacji jest istnienie odpowiedniego backupu. Bardzo długo procedura polegała u mnie na semi-regularnym wykonywaniu paczki .ZIP z aktualnym projektem, jednak wymaga to po pierwsze systematyczności, a po drugie może mieć katastrofalne skutki - trzeba uważać żeby zrobić snapshot zapsutgo projektu na wypadek gdyby okaząło się że backup był jednak starszy niż myśleliśmy, i że właśnie nadpisaliśmy sboie ostatnie dwa dni pracy. been there one that. a ile razy okazywało się że ZIP zawieał jednak nie wczorajszą, jak myślalem wersję, a zeszłotygodniową, i kończylo sie na mozolnym, manualnym, wycofywaniu się z błędnych zmian.
A jednak, jak pewnie wielu z was, długo myślałem że ZIPY są ok, a git nie jest mi po prostu potrzebny, ze to overkill z którego muszą korzystać tylko duże zespoły, aby zarządzać zmianami wprowadzanymi w wielu miejscach jednocześnie. Miałem tu o rację o tyle, że starsze systemy Version Control (jak SVN czy SubVersion) są w przy większych projektach absolutną koniecznością, bez nich w zasadzie umierasz w bloku startowym, ale jednak wymagają one każdorazowo utworzenia gdzieś na serwerze repozytorium, i faktycznie do jakichś szkicy w processingu czy arduino czas zakładania repo SVN powoduje pewien overhead. Ale GIT reprezentuje tu nieco inną filozofię, i odkąd nieco go poznałem (zaznaczam że nieco, bo moja znajomość go jest napawdę dalej bardzo niewielka) to w zasadzie każda rzecz nad którą zamierzam pracować dłużej niż jeden wieczór dostaje u mnie repozytorium. Słyszałem głosy chwalące gita w zasadzie odkąd szturmem przejął monopol kontroli wersji w świecie open source. Bardzo długo jednak moja prywatna kontrola wersji polegała na wykonaniu co jakiś czas paczki .ZIP
Ale zacznimjmy od wyjaśnienia czym git różni się od 'klasycznych' systemów wersjonowania, i dlaczego była to taka rewolucja. W klasycznym version control istnieje centralny punkt, serwer, który zawiera repozytorium, zaczynasz pracę od check-outu aktualnej, usalonej wersji kodu, wprowadzasz swoje zmiany, a pod koniec dnia robisz ich check-in, wpisujesz je do rejestru zmian, tak aby w razie popełnienia błędu (które są jak wiemy nieuniknioną codziennością, całe to programowanie jest waleniem głową w mur własnej słabości), móc dojść do tego gdzie błąd został popełniony (i ewentualnie zwolnić winnego), oraz przywrócic ostatni stabilny stan - naprawienie błędu popełnionego dzisiaj jest znacznie prostsze niż odkrycie że powstał on gdzieś na przestrzeni ostatniego miesiąca.
Git jest inny w tym, że nie istnieje żaden centralny punkt. To znaczy tak, projekt przy którym pracuje więcej osób oczywiście musi posiadać jakieś umówione 'miejsce zbiórki', gdzie nasze wysiłki łączą się (dokonujemy merge), ale GIT jest systemem rozproszonym, w którym poza umownym wskazaniem tego głównego w ramach zespołu, możemy mówić bardziej o chmurze repozytoriów (dlatego nazywa się go systemem rozproszonym) niż o drzewie z ustaloną strukturą. W gicie bo moje loklane repozytorium (a wszystkie commity idą najpierw do mojego lokalnego repo, w zasadzie nie ma tu commitów do remote, jest lokalny commit a potem push który rozprowadza zmianę) ma w nim równe prawa co repozytorium autora.
Oczywiście GIT nie zabrania ustawienia sobie tego wszystkiego jako struktura drzewiasta, ale sieć ta może przebiegać w bardzo różnych kierunkach (można robić push do kilku źródeł, origins, do różnych branchy, w zasdzie z tej dowolności w tym 'co dalej' wynika to że gita trzeba się nieco nauczyć żeby robić coś więcej. Ale nie ma obowiązku robienia nic więcej.
Piękno gita polega bowiem na tym, że żaden, ani jeden serwer nie jest konieczny. W momencie wskazania gitowi nowego katalogu, i wykonanie komendy inicjalizacji, git zakłada tam nowe, pełnoprawne repozytorium, i rozpoczyna śledzenie zmian. I w tym momencie już zaczynają się benefity. Nie muszę być online, nie musze informować kogokolwiek co robię, żeby czepać profity z sieci bezpieczeństwa jaką daje nowoczesny system version control. Git jest fantatycznie wydajny, i jego obecność nawet tam gdzie masz doczyeninai z tysiącami plików, nie powoduje żadnego obicążenia dla twojej maszyny (analiza zmian ma miejsce tylko na etapie Stagigng). Jedynym kosztem używania go do wszystkiego jest konieczność uruchomienia na chwilę swojego ulubionego klienta w danym katalogu i wydanie komendy Init, nie musisz nigdzie zakładać żądnych kont - tylko BAM i masz repozytorium.
klientów gita jest co niemiara, dla każdego coś miłego. Oczywiście dla hardkorów zawsze będzie wersja command-line, czyli jedyny prawdziwy git, jedna metoda na wykonanie najbardziej rzeźnickich salt wymagających wizard-class skilli, ale istnieje wiele uproszczonych (i dzięki temu przystępnych) narzędzi takich jak SoucrceTree, GitHub Desktop, czy mój prywatny faworyt, Git Kraken.
Wystarczy spojzeć na interfejs krakena, żeby domyśleć się co w nim się podoba. Jest ładny. JEST CZARNY. Żeby oceniać go od strony technicznej nie mam jeszcze dość wiedzy, ale używam go od paru miesięcy i w zasdzie jedyne do czego mogę się przyczepić to że nie sygnalizuje on że trwa tzw Fetch, czyli odpytanie naszego repozytorium nadrzędnego o zmiany - czasami trwa to nawet minutę, podczas której myślimy że jesteśmy na szczycie, a kraken do piero po chwili wyświela historię nowych zmian. Ale dobrze, starczy tego wprowadzenia, czas na to co tygrysy lubią najbardziej.
DEMONSTRACJA:
Załóżmy że mam projekt, nad ktorym chce pracować w katalogu c:\MojProjekt. Tworzę ten katalog, uruchamiam krakena, i proszę o utworzenie (inicjalizację) tam nowego repo
Bam, repozytorium utworzone, właśnie utworzyłeś repozytorium kodu. Oczywiście na razie nic tam nie ma (poza ukrytym katalogiem .git gdzie pracujący w tle demon gromadzi notatki na temat tego co robisz), i nowo utworzonym plikiem README.MD, ale sytuacja szybko się zmieni gdy dodamy tam pierwszy plik. Trzymanie w katalogu głownym repozytorium pliku readme.md nie jest obowiązkowe, ale jest dobrym zwyczajem - w dobrym tonie jest umieścić tam krótki opis zawartości. pliki. MD to zwykłe pliki tekstowe, korzystające z bardzo prostej składni formatowania zwanej MarkDown, ale nie będziemy się tym zajmować. Zacznjmy od wywalenia pliku readme i dodania pliku test.txt, o dowolnej treści
Gdy przełączymy się z powrotem na krakena, zauważamy, że pojawiła się nowa linijka, zawierająca tekst '//WIP' i dwie małe ikonki. WIP oznacza Work in progress, czyli nowe zmiany w projekcie, zielona ikonka to uwtorzenie nowego pliku, a czerwona to usunięcie istniejącego.
Po kliknięciu na to pole, dosajemy krakenowską interpretacje tzw. staging area - jest to lista wszystkich zmian jakie zostały dokonane od ostateniego Commita (o tym ze sekundę). Możemy wybrać albo wszystie, albo tylko niektóre ze zmian, i zmienić ich status z Unstaged na Staged. Przejdą one do pola Staged files, jest to peron z którego odjeżdzają commity, rodzaj poczekalni gdzie możemy zgromadzić naszą 'drużynę' która zabierze się następnym commitem do wieczności. Poniżej zanjduje się pole do wpisania tzw Commit Message, czyli obowiązkowego, krótkiego opisu tego co się zmieniło. Oczywisćie gitowi opis jest wszystko jedno, i jak chcesz możesz tam wstawić tylko np. spację, ale za to że musisz wpisać COŚ dość szybko będziesz gitowi wdzięczny, dzięki temu jako człowiek masz szansę orientacji w historii projektu.
W momencie gdy wcisnę przycisk commit, zmiany zostają zespolone przez GIT do obiektu nazywanego Commitem. Commit to snapshot całego projektu, a nie tylko plików które uległy zmianie - to dosyć istotny niuans, bo git nie pozwala prosto wyciągać z commitów pojedynczych plików - aby nie dopuścić do istnienia rozsynchronizowanych stanów - przywracając później stan z danego commita, przywrócimy stan wszystkich plików, które w danym momencie były już trackowane (tzn były STAGED przyanjmniej raz). Ale idzmy dalej, dodajmy drugi plik tekstowy. Załóżmy że popełniem w nim błąd, z którego zdałem sobię sprawę po wykonaniu drugiego commita. Poprawiłem błąd, co dzieje się dalej?
W krakenie nasza historia commitów wygląda póki co tak
.
Po zaznaczeniu commita możemy podejrzeć zmiany - na czwrono są linijki usunięte, na zielono dopisane - zmiany traktuje się jako usuniecie poprzedniej i dodanie w to miejsce innej linijki.
I teraz tak - piewotnie chciałem ten tekst mniej więcej tutaj skończyć - mój projekt jest już bowiem trackowany, jeżęli będę pamiętał o commitach od czasu do czasu, to korzystam już z najważniejszego dobrodzeijstwa GITA - wszystkie pliki i katalogi znajdujące się wewnątrz repozytorium są od tej pory bezpieczne - gdy popełnie błąd, jestem w stanie znacznie prosciej niż za pomocą sterty paczek z zipami, namierzyć miejsce gdzie powstał, porównać z poprzednią wersją, czy wykonać naniesienie zmian wykonanych przedwczoraj na te wykonane przed chwilą.
No ale dobrze, co stanie się teraz gdy stwierdzę, że mój wierszyk jednak lepiej brzmiał z błędem, rozmyśliłem się. Kraken ma wielkie jak byk przyciski undo i redo, pozwalające na szybkie podróżowanie po historii projektu, ale załóżmy że wacham się dalej, być może będę chciał rozwijać obydwie wersję. klikam więc prawym klawiszem na wybranym commicie, i tworzę tam nowego brancha.
Jest to sytuacja o tyle komforowa, że obydwa stany projektu współistnieją sobie, a korzystając z listy dosępnych branchy po prawej, mogę przerzucać się pomiędzy nimi - trwa to ułamek sekundy dla lokalnych branchy blisko siebie, ale nawet jeśli zmodyfikowałem kilkaset plików, nie powinno trwać więej niż kilka sekund - i wszystkie pliki w moim katalogu roboczym będą wyglądać dokładnie tak samo jak w momencie ostatniego commita danego brancha. Postanowiłem porozwijać chwilę obie wersje mojego wiersza, w jednym dodająć linijkę o papudze, a w drugim idąć radykalnie w błędy ortograficzne i robiąc kolejne dwa. stan widoczny przez okno krakena wygląda mniej więcej tak
W typowej konwencji pion oznacza chronologię, widać tu ciekawą sytuację - jestem na branchu master, tym bez błędu, ale commit na branchu KUT został wykoany później, więc git daje mi do zrozumienia że wersja nad którą pracuje może nie być najbardziej aktualną. oczywiście w tym wypadku nie ma to znaczenia
Ok, i teraz zaczyna dopiero robić się ciekawie. Pomimo tego, że readme nie istniało już na moim dysku od pięciu commitów, plik był już dawno w koszu, ale świadomie omijałem go podczas fazy stage - akcja polegająca na usunięciu pliku nie była wpuszczana na peron. I teraz, gdy mamy już dwie rozdzielne historie projektu, postanowiłem zatwierdzić usunięcie w commicie wykonanym na branchu master (powiedzmy że poprawny wiersz nie wymaga komentarza), przerzuciłem się na branch eksperymentalny KUT, i zamiast przeprowadzać stage tej zmiany, zrobiłem jej reset. Plik został przywrócony - zmiana nie była bowiem w tym branchu jeszcze scommitowana. Dopisałem więc linijkę komentarza o idei artystycznej przyświecającej pisaniu tekstu z błędami, i scommitowałem tą zmianę w readme. Sytuacja jaką mamy teraz jest prawie magiczna - gdy dwuklikam na brancha kod, plik readme.md pojawia się w katalogu, po czym znika gdy przerzucam się na brancha master. Jest to samo w sobie pewnego rodzaju cudem -zmiany odbywają się bowiem fizycznie na moim dysku - program w którym edytuje pliki tekstowe i git nie wiedzą o swoim istnieniu absolutnie nic, ale mimo to cały projekt automagicznie przeskakuje do innego stanu. To jednak nie koniec cudów.
Załóżmy że kiedyś, w dalekiej przyszłośći, gdy obie wersje mają już po wiele stron, postanowię skleić je z powrotem w jeden projekt, czyli wykonać tak zwany merge. W sytuacjach gdy w różnych branchach pracowałem nad różnymi plikami, merge przebiega automatycznie - git weźmie nowsze wersje każdego pliku i sprawa jest załatwiona - tu jednak istnieje konflikt - w jednej wersji doszła linijka, w drugiej treść pozostałych uległa zmianie - git nie jest pewien o co dokładnie mi chodzi, ale mergowanie branchy jest w zasdzie jednym momentem że coś może pójść nie tak - git po wykryciu konfliktu wchodzi z projektem w tzw conflicted state -
Po otwarciu konfliktu możemy (a nawet musimy zanim przejdziemy dalej) przejść przez wszystkie skonfikotowane pliki i wskazać rozwiązanie które mnie interesuje. Taki widok dostajemy po wybraniu pliku readme.md - w jednym branchu plik został dawno skasowany, a w drugim został zmodyfikowany. git daje mi więc trzy opcje - może plik skasować, zostawić zmodyfikowany, albo przywrócić ostatnią wspólną (w tym wypadku bazową) wersję, a więc nie tylko cofnie modyfikacje, ale też przywróci wersję dawno skasowaną, którą zawierał wyłącznie pierwszy, automatyczny commit tego repozytorium. Postanawiam zapisac zmodyfikowana wersje
Nieco bardziej skomplikowana sytuacja jest w pliku ala. Dopóki konflikty nie zostaną rozwiązaneW tym stanie pliki gdzie wystąpił konflikt nie nadają się do użycia - zawierają bowiem linijki z obydwu wersji. Kraken (niestety tylko w wersji pro) pozwala mi przejść przez konflikty, i wybrać wersję z dwóch commitów które próbuję mergować przy każdej linijce. Być może wolę zatrzymać błąd tylko w pierwszej linijce, a w drugiej przywrócić wersję bez błędu
Jeszcze więcej możliwości daje nam użycie zewnętrznego narzędzia do mergowania, np. potężnego choć brzydkeigo jak noc KDIFF, który wyciąga z repozytorium nie tylko wersje z mergowanych commitów ale także wersję bazową, pozwalając kształtować ostateczny kształt wynikowego pliku z jeszcze większą precyzją.
Po wykonaniu merge na naszym wykresie widzimy po raz pierwszy jeden z przyjemniejszych widoków jakie ogląda programista na swoim ekranie - dwie odrębne gałęzie projektu z powrotem sklejone w jedną doskonalszą całość. Rezutlaty merge trzeba oczywiście jeszcze scommitować (tzn utworzyć nowego commita zawieającego snapshot po merge, bo nie wolno nam modyfikowac już istniejących commitów - nie ma takiej operacji - wolno zmienić commit message, ale ponieważ na istnieniu danego commita mogą już polegać kolejne operacja, zwłaszcza jeżeli zmiany zostały pushniete to zmiany commitów wstecz w historii nie są zasadniczo mozliwe (chyba że mamy już wizard level i nie boimy się zagrzebać w wariacjach commandlinowego, surowego gita))
I teraz, robię sobie ten przykład na jednym komputerze, pracując na dwóch lokalnych branchach, ale częstszym use case są różni ludzie pracujący na różnych branchach - i wtedy możliwa jest sytuacja, w której ja siedzę dalej na swoim branchu KUT, jeszcze lśniącym połyskiem dopiero co odbytego merge, ale w tym czasie ktoś zmodyfikował brancha master, i teraz zawiera on zmianę której w moim branchu nie ma (i brardzo dobrze, bo mogłaby ona coś psuć w strukturze mojego projektu). taki stan widzimy mniej więcej tak
Tym razem jednak, ponieważ zmiana dotyczyła pliku który na branchu KUT nie był modyfikowany, merge przebieg całkowicie automatycznie - brach master ma od tej pory zestaw zmian wykonanych na nim, wraz ze zmianami których doknałem podczas merge na branchu KUT, który w tej chwili jednak pozostaje do tyłu względem HEAD, tzn nie zawiera nowych zmian. Na tym etapię mogę uznać, że branch KUT nie jest mi już potrzebny, ponieważ master zawiera wsystkie zmiany których chciałem, i po prostu go usunąć (przejść na stałe na branch master)
Mogę także, jeśli chcę, zmergować zmiany z brancha master do brancha KUT (i wprowadzić dalsze zmiany, np. zmienić alę na janka), i będzie to wyglądać tak:
I tak dalej, i tak dalej, taki mniej więcej jest rytm GITa. Dlaczego commity uciekają sobie do góry i muszą się gonić? Aby to zrozumieć wystarczy odejść od mojej hipotetycznej sytuacji. W tej chwili pracowałem tylko i wyłącznie na lokalnym repozytorium, przez cały czas pisania tego tekstu nie wysłałem w sieć ani jedneo pakietu. Przy pisaniu czegoś w parę osób, z repozytorium dostępnym online, do całej zabawy dochodzą jeszcze dwie operacje - PULL i PUSH. Push, prawdopodobnie najważniejsza operacja w ramach GIT, powoduje wypchnięcie twojego ostatniego comita do repozytorium ustawionego jako twój ORIGIN - można traktowąć to jako repozytorium nadrzędne, choć nie będzie to do końca słuszna metafora, w każdym razie w momencie wykonania pusha (o ile masz do niego prawa zapisu) twoje lokalne commity stają się częśćią stanu danego brancha w zewnętrznym repozytorium (REMOTE). Zanim jednak git pozwoli ci na pusha, musi upewnić się że stan danego brancha nie uległ w międzyczasie zmianie - jeżeli tak, to musisz wykonać najpierw operację PULL, tzn pobrać z serwera comitty innych ludzi które stały się od tego czasu 'oficjalne'. Jeżeli stefan w międzyczasie zmienił psa na hipototama, i jego push znalazł się na serwerze wcześniej, to nie mogę tego po prostu zignorować (tzn mogę, robiąć Force Push, ale może mieć to negatywne konsekwencje dla innych ludzi, którzy w mieczyasie wykonali merge hipototama - ich praca zostanie wtedy utracona), unikamy więc robienia Force Push, zamiast tego najpierw wykonujemy PULLA. Pull powoduje pobranie z serwera historii commitów któe wydarzyły się odkąd ostatni raz wykonywaliśmy tą operację, i odtworzenie ich z playbacku na moim lokalnym repozytorium. Powoduje to zmianę stanów moich lokalnych plików. Jeżeli żaden z tych plików nie był modyfikowany przeze mnie, pliki te znajdą się po prostu w Unstaged, mogę je zignorować i wypchnąć moje zmiany, jeżeli jednak zmiany które są już na REMOTE są w konflikcje z tymi które zrobiłem ja, mam do wyboru albo przeprowadzić merge w ramach swojego lokalnego repozytorium, albo jeżeli nie chcę tego robić, utworzenie nowego brancha (który będzie moim lokalnym stanem, ale przestanie synchronizować się ze zmianami w innych branchach.
Jeżeli kiedykolwiek pobieraliscie cokolwiek z GitHuba, a na pewno tak, to z pewnością zauważyliscie że oprócz DOWNLOAD jest tam przycisk CLONE. To w zasadzie esencja popularności gita - mogę pobwiem sklonować repozytorium z REMOTE (w tym wypadku z githuba), dokonać lokalnych zmian, i jeżęli uważam że zmiany te poprawiają projekt, mogę zrobić ze swoim repo mniej więcej trzy podstawowe czynności - jeżeli mam uprawnienia zapisu do danego REPO, mogę je po prostu tam wysłać, za pomocą operacji PUSH. Jeżeli nie, mogę zrobić tak zwany pull request, tzn wysłać zmiany autorowi jako propozycje - jeżeli sposobają się autorowi, może on wykonać merge do swojej wersji (co dla niego jest znacznie prostsze niż przeklejanie fragmentów poprawek wysłanych mailem). Jeżeli autor nie chcę pullować moich zmian, albo jeżeli chcę ten projekt pociągnąc z zupełnie inną stronę, wystarczy że zmienie adres origin na inny, nowy, tworząc w ten sposób tak zwanego FORKA, i mam nowe, niezależne od poprzedniego repozytorium, do któego już sam przyznaje uprawnienia zapisu, rozważam pull requesty itp. Jeżeli chcę zrobić swoją wersję jakiegoś projektu - czy będzie to mikroskopijny GITST mrugający ledem zawierajacy pojedynczy commit, czy cały np dotnet/corefx który zawiera w tym momencie ponad 24k commitów, o ile licencja na to pozwala mogę takie repo sklonować, puschnąć gdzie indziej i mieć swoejgo forka jako anonimowy typek z polski, na równych prawach z wielkimi korporacjami. Jest to ekstremalnie demokratyczna idea, prawie że uskrzydaljąca.
Okej, poszedłem z tym tekstem dużo dalej niż chciałem (nie pierwszy raz), tak naprawdę chciałem poukładać sobie sam to wszystko w głowie podczas pisania, ale jeżeli dotarłeś do końca to widocznie dostrzegasz w tym dla siebie pewien pożytek. Najważniejszym takeawayem z zabawy jest to, że stan w którym robsiz COMMIT wchodzi do gitowej zamrażarki, i już zawsze możesz do niego wrócić - nie jest to pełna kopia projektu a jedynie snapchot zmian, polegający na poprzednich snapshotach (dlatego nie wolno ich modyfikować), dzięki czemu nawet dla dużych projektów GIT nie zwiększa znacząco objętości projektu, lokalne commity są bardzo tanią operacją, i w zasadzie możesz je robić po napisaniu dowolnie małego fragmentu kodu - a potem podróżować po historii projektu jak tylko jest ci wygodnie, szukajać miejsca gdzie cos przestało, albo zaczęło działać, czego sobie i wam życzę.
Unreal raczył mi wysłać BWNa, bardzo ważną wiadomość, pojawiło się okienko z notyfikacjami, ale oprócz stada błędów z buildowaniem świateł pokazało się (1) przy
Localisation services. Pomyślałem, w sumie ciekawe co tam jest.
Tak, dziękuję bardzo, wiem że nie ma w tym projekcie lokalizacji, nie pada żadne słowo nawet, jest ok, chill out, Unreal, fajnie byłoby dostawać tego typu ostrzeżenia wtedy kiedy naprawdę coś się dzieje, jak na przykład inna sytuacja z dzisiaj, kiedy nastąpił crash edytora podczas applyowania baked lightmap, zakończone stanem w którym scenę główną dało się otworzyć około trzech razy zanim wchodziła w stan corrupted, crasujący edytor, i wymagała rekonstrukcji od nowa z przeniesieniem zaimportowanych obiektów na czystą scenę, zanim i ona ulegała korupcji, i tak około siedmiu razy zanim znaleźliśmy przyczynę, pomyślałem, z pewną sympatią do programistów spoglądając na ten komunikat, i rozmyślając o tym jak różne rzeczy mogą być ważne dla różny ch ludzi przy tego rodzaju projekcie.
Wtedy zwróciło moją uwagę, aż pięć (5) BWNów w sekcji Source Control. Jako że w tym projekcie source control za bardzo nie ma, mogłem się spodziewać następującego komunikatu, ale mimo wszystko wywołał na mojej twarzy uśmiech
Użytkownicy VSCode często instalują sobie (i słusznie) różne pomagiery do kodu. Jeden z nich jednak, UnitySnippets od Ycleptic Studios ma brzydką cechę, podczas zatwierdzania jego sugestii dodaje dodatkowo napoczęty blok komentarza i niezakończoną kopię deklaracji metody (np. void funkcja /*koment*/ void funkcja() { }, co potrafi być bardzo wkurzające.
Na pomoc przychodzi jednak z odsieczą Iionize ze swoją modyfikacją tego dodatku która nie ma takiego zchowania
A swoją drogą instalacja VSCode tak, aby działał w nim Omnisharp/Intelisense na nowej instalce OSX 10.9 to jakiś koszmar - nie udało mi się to dziś.
UNREAL vs Unity - kustomizacja interfejsu
Tak,
zgadza się, unreal posiada przyzwoity system snappowania okienek, jest całkiem usable.
Okej, nie TAK używalny jak Programy wideo od Adobe (AFTER EFFECTS)
W after effects możemy poprosić o dowolną ilość okien typu Viewer, dających wgląd na dowolną kompozycję - blokujemy widok małą kłudeczką - niezablokowane zmieniają się kontekstowo.
Unity, ku mojej wielkiej uciesze, kustomizuje się jeszcze o wiele bardziej. Nie tylko można mieć tam dowolną ilosć Inspektorów (odpowiednik Effect Control z AE), ale także dowlną ilość okien Project (super, w AE brakowało mi tego okrutnie), dowolną ilość okien hierarchii (chociaż niestey nie działają zupełnie rozdzielnie). Do tego, co jest jedną z największych zalet edytora Unity - nie jesteśmy ograniczeni do rzeczy z którymi przychodzi program. Dodanie nowego okna czy nowej pozycji w głównym Menu jest równie proste jak napisanie Hello World; - po prostu przed funkcją którą chcemy z menu wywołać dodajemy dekorator. [MenuItem("MyMenu/Do Something")]
To w zasadzie temat na cały wpis, i mam nadzieję ze kiedyś taki powstanie, tu chciałem jeszcze na chwilę wrócić do Unreala
Jak widać, w unreal snapowanie okienek działa mniej więcej tak jak byśmy oczekiwali,
okienek można mieć kilka (cztery viewporty z których każdy dzieli się jeszcze na cztery
wystarczają, cztery okienka Details wystarczjaą też.
Jednakże, niektórych okien po prostu nie można mieć kolejnych. Za to winnych miejscach nie da się otworzyć pewnych rzeczy (edytor materiałów, edytor blueprintów, edytor animacji) BEZ otwierania kolejnego okna, bez względu na preferencje które sobie ustawiliśmy.
Sama sekcja z ładowaniem layoutów jest komicznie różna - unreal ma piękne ikonki przy
połowie featuresów, ale layout zapiusje po prostu jako preferencja do pliku .INI gdzieś
u siebie w Program Files. Reset spowoduje ... no właśnie, co, reset moich do domyślnych,
czy reset aktualnych do moich? Na Unreal Market można kupić plugina do zarządzania plikami
INI który umożliwia przeładowywanie innych layoutów (choć chyba z restartem edytora). Dla
porównania na screenshocie z unity widać jak ładnie zintegrowały się pozycje dodane
przez pluginy (MidiJack, ConsoleE, UI Extensions) - są nie do odróżnienia od funkcjnalności
natywnej. W unnity jeżeli masz do zrobienia jedną rzecz więcej niż 10 razy na przestrzeni
paru dni to warto rozważyć napisanie małego throwaway scriptu uruchamianego z menu, który
robić będzie za nas dokładnie tą rzecz - przy użyciu całego API edytora i gry.
Porównanie obydwu silników zaczać można od spojrzenia
detal:
vs
na pierwszy rzut oka - wyglądają prawie tak samo. Unity jest szare i biurowe, design utrzymany w klimacie wczesny makintosh, unreal wygląda jak pomodowany laptop alienware, ale filozoficznie zdają się nie odbiegać od siebie zbytnio.
Różnic jest wiele, o czym zamierzam pisać dziś jeszcze przez chwilę, ale skupmy się na dwóch drobnych różnicach, nie do końca widocznych gołym okiem, ale wartej odnotowania. Po pierwsze, Osie Y i Z są w unrealu odwrotnie niż w Unity.
Unity traktuje XY jako tablicę przez którą patrzysz na świat, a Z jako odległość od 'płaszczyzny ekranu'. Obiekty bliżej lub dalej od nas poruszają się w osi Z, w głębi. Jest to jeden z popularnych i użytcznych układów odniesienia.
w Unrealu, twoja pozycja na mapie wyznaczona jest przez X i Y, niczym samolotu na mapie lotniczej, a twoja wysokość nad podłożem opisana jest przez Z.
To w zasadzie drobiazg ale drobiazgi tego typu potrafią napsuć krwi przy importach exportach.
Winner : none, different philosophies
Project Window vs Content Browser
Project Window w unity w zasadzie mogłoby nie być. To małe okienko pełniące funkcję Findera, Explorera, o scope działania oganiczonym do katalogu Assets, wewnątrz katalogu aktualnego. W ogóle w Unity każdy katalog,
który zawiera podkatalog Assets, jest automatycznie projektem Unity. Poważnie, wystarczy założyć pusty katalog Assets, i można w Unity zrobić na jego parent dir wykonać akcję 'Open Unity Project'.
Unity 'pod maską' dodaje do każdego zaimportowanego (przy czym każdy plik w katalogu Assets uważa się za zaimportowany, stan ten unity sprawdza i koryguje przy każdym powrocie focusa do jego okienka) plik .meta .
Dopóki nie poznałem Unreal Engine 4 traktowałem pliki .meta z nieufnością. Pliki meta, jeżeli zagubione, zostaną przez UNITY odtworzone następnym razem kiedy odzyska focus okienka, natomiast jeżeli zmieniła się jakaś ze zmiennych środowiskowych, np. wersja unity, pliki .meta dostaną inny globalny indentyfikator, co często gęto owodcuje 'rozlnikowaniem' assetów w ramach edytora - słynne 'missing script'.Array
Pliki meta są jednak niczym manna z nieba, w porównaniu do dziwności serwowanej przez unrealeditor
Sekcja Transform o dziwo działa w dość zbliżony sposób w obu silnikach. Trzy wektory3 na trzy typy transformacji - translacja - w Unity3D rozumiana jako zmiana Position, a w Unreal rozumiana jako zmiana Location,
Rotation, rozumiana tak samo, przy czym unreal daje suwaki do obrotu (YAY!), a w unity trzeba klepać. Mamy wreszcie Scale, rozumianą tak samo, oraz w UnrealEditor mamy przełącznik 'Mobility', pomiędzy Static a Movable. To w zasadzie także jest tak samo jak w unity (w unity funkcję tą pełni toggle STATIC na przeciwko nazwy obiektu.
W tym samym miejscu oba silniki mają też małą kłudeczkę - która działa w nich tak samo, tzn wyłącza kontekstową zmianę zawartości okienka Inspector/Details.
Obydwa okienka pod sekcją transform wyświetlają kolejno panele ustawień dodatkowych, doczepionych do danego obiektu komponentów - tu jest z grubsza podobnie.
Przyciski Add Component w Unreal i Unity robią już jednak co innego, w unrealu mamy obok drugi Blueprint/AddScript, poniżej mamy wewnętrzną strukturę Aktora, tu mamy już różnice, o których będę piszał jeszcze nie raz (przestanę pisac jak zrozumiem)
Warto jednak przyjrzeć się bliżej tym dwóm obrazkom, są tu bowim dwie ciekawe różnice. Pierwszą jest układ odniesienia - po stworzeniu domyślnego sześcianika, aby zrobić sobie
z niego podłogę, potrzebuję wyciagnąć go w osiach X (od lewej do prawej) jak i w Z (w głąb), a oś Y (w górę i dół) zostawić lub zmniejszyć. Wpisałem skalę x10 (czyli 1000 %) w tych polach.
W Unreal dla osiągniecia tego samego efektu, potrzebuję patrzeć na sytuację z lotu ptaka, wyciągnąć sześcian na wschód-zachód (X) i na północ południe (Y) a zostawić jego wysokość (Z).
To w zasdzie detal i to powszechnie znany, w dodatko obydwa programy trzymają się konwencji kolorystycznej gdzie X to czerwony, Y to zielony a Z to niebieski, więc można 'ogarnąć się' gdzie jesteśmy
na bazie małych podpowiedzi (busola 3D) w rogu - ją programy mają bardzo podobną.
ale zauważyłem jeszcze jedną różnicę. Drugi domyślny sześcian przesunąłem do krawędzi mojej nowej podłogi, w unity punkt który sobie upatrzyłem wypadał około trzech metrów w głąb ode mnie. Unreal wymagał ode mnie
przesunięcia o 300.0 cm w poziomie. I tu różnica jest już ciekawsze. W zasdazie oba systemy są równie 'workable', i tak rzadko wpisuje się te liczby z palca, więc kogo obchodzi co napisane jest w okienku. W zasadzie racja. Problemy tego rodzaju występują jednak w każdym programie do 3D na jakimś etapie - 3DSMax jest pod tym względem chyba najgorszy.
Ale ten przykład pokazuje nam dość ciekawą różnicę - Unity często stara się nic nie narzucać. Te 3 jednostki o które przesunąłem sześcian - mogą być dla mnie metrem, mogą być pikselem (jest tak w widoku canvas), mogą być dla mnie koordynatami logicznymi na mapie, albo dzielnicami miast jeśli mam taki kaprys - mogę je traktować jako kilometry i dalej nie mieć większych problemów z silnikiem, o ile nie mam za blisko/za daleko ustawionego near/far culling w kamerze.
Unity stara się, gdzie tylko to możliwe przestrzegać pewnych uniwersalnych zasad, tzn jeżeli jest do opisu czegoś standard ISO to prawdopodobnie został użyty.
Unreal reprezentuje filozowię pt 'napiałem mój edytor tak, nie podoba się to nie używaj', i wspomniane wyżej cm są tego subtelnym, ale czytelnym przykładem. Podejrzewam, że
pierwotnie program działa po prostu w calach. Cale są OK gdy mówimy o obiektach wielkości telewizor, koło, ekran komputera, wysokość stołu, więc nie dziwie się, że Amerykańcsy projektanci są do nich przywiązani.
Bezmyślnie jednak, zamaist metra, jako jednostkę podstawową zastosowano centymetr (jako analogię do cali jak mniemam) - podejrzewam że jest to dalsza konsekwencja stosowania systemu imperialnego -
jeżeli pracujemy w układzie jednostek SI, to przejście z centy na kilo to mnożenie / dzielenie przez odpowiednią potęgę dziesiątki. przeliczanie z cali na mile nie jest już takie proste dlatego
sprawa opisania moich 300 jako centymetr wydawała się projektantom wazna.
Unreal nie uznaje też zaokrągleń w polach gdzie wyświetla floata, wiec zatrzymawszy np animację obrotu możęsz zobaczyć kąt np 127', ale po poszerzeniu okna może się okazać że kąt to 60.34420127'
Unity stara się wyświetlać liczby w 'rozsądnych' zapisach
Taką prawdziwą, jak Visual Studio. Bosko, naprawdę VSCODE który już dawno wysunął się u mnie na pierwsze miejsce edytorów kodu zostawia właśnie konkurencję jeszcze dalej w tyle.
Aby ją włączyć (domyślnie jest wyłączona), należy zmienić false na true w pliku settings.json (F1 >settings)
Jak większość ludzi zaczynających przygodę z Unity, pierwszym edytorem który stosowałem był MonoDevelop - domyślne środowisko z którym Unity przychodzi. Tak jak wielu zaczynajacych z arduino używa arduino IDE (fork Processinga) Warto jednak zainteresować się dostępnymi alteranatywami. Najbardziej popularnym (i słusznie) IDE do pisania w C# jest Microsoftowy Visual Studio (darmowy w wersji Community Edition, choć wymaga rejestracji). Jest to istny kombajn do pisania kodu, a internet jednogłośnie rozpływa się zachwytach nad jego zaawansowanymi funkcjami.
Visual Studio ma jednak dla mnie dwie wady. Pierwszą i najważniejszą jest dla mnie fakt, że jest to aplikacja Windows Only - nie ma wersji na OSX [ EDIT 20171103: pisałem to w nieświadomośći, od dobrych czterech dni w sieci była już wersja makowa Visual Studio !]. Drugą, mniejszą, jest to samo co jest jego główną zaletą - jest to poważny kombajn, i bywa, że ilość funkcji dostępnych naraz na ekranie w polu widzenia staje się nieco przytłaczająca. Niezbyt wygodne było też dla mnie przechodzenie pomiędzy plikami, oraz dość złożony system skrótów klawiszowych (niektóre komendy wymagają wciśnięcia po sobie dwóch różncyh kombinacji np ctrl+k ctrl+d.
Jak się okazuje istnieje (i zyskuje na popularności) trzecie IDE - Visual Studio Code. Jest to edytor pierwotnie napisany w Microsofcie, luźno bazujący na Visual Studio, ale oparty na zupełnie innym silniku (pod maską używa z tego co pamiętam klona silnika Atom używanego w edytorze node.js). VSCode jest natywnie wpspierane przez Unity od wersji 5.5, ale można spiąć go także z wcześniejszymi wersami za pomocą instalacji odpowiedniego plugina.
VSCode działa na maku identycznie jak na windowsie, jest darmowy i open source, podobnie jak dwa pozostałe IDE ma pełną obsługę Debuggera Unity, przynajmniej dwie funkcje których VS nie ma - przede wszystkim liczenie i wskazywanie referencji metod i pól. Funkcja ta jest dostępna w Visual Studio ale nie w darmowej werjsi Community. _podobno_ można dodać tą funkcję (znaną w VS jako CodeLens) do darmowej wersji instalując SSDT Preview, ale mi sztuczka ta się nie udała (do tego od dwóch dni dostaję na fejsbuku głównie reklamy szkoleń z SQL). Nieco Łatwiejsza dla mnie jest też nawigacja po projekcie, ale ledwo minimalnie, i kwestia to subiektywna. tym co odróżnia VSCode od VS, to minimalistyczny interfejs - poza kolumną z lewej strony zawierającą pięć ikon (pliki, wyszukiwanie, debugger, git, extensions), w zasadzie cały ekran zajmuje nam okno z kodem, opcjonalnie podzielone na dwie części. Zestaw funkcji dostępnych z menu górnego sprawia wrażenie że mamy doczynienia z notatnikiem a nie powaznym IDE (gdy VS raczej nie zachętca do otwierania górnego menu, poniżej screenshot z visualstudio (nie jestem pewien czy menu tools zmieniło się po moim eksperymencie z SSDT czy nie)
W VSCode z menu górnego wnioskować by można że program generalnie nie posiada funkcji, jest to jednak wrażenie mylące, które mija po wciśnięciu F1
ale jest to wrażenie mylące - większość funkcji programu jest bowiem dostępnych z poziomu automatycznie chowanego pola do wpisywania poleceń. Wciśnięcie F1 (lub shift+cmd+p) - i nie jest to okienko pmocy powoduje otwarcie linii komend poprzedzonej znakiem > dającym dostęp do funkcji programu - zmazanie go powoduje przejście do wydawania komend skoku do innej sekcji kodu bądz innego okna. Jak się okazuje, znacznie łatwiej jest mi wcisnąć F1 i zacząć pisać 'form' aby znaleźć funkcję 'format document' albo 'ins' żeby znaleźć insert snippet, niż pamiętać analogiczne skrót z Visual Studio
Proste i nieinwazyjne rozszerzenie edytora składające się z definicji atrybutu (dekoratora - umieszczanego przed zmiennymi publicznymi, w miejscu gdzie można definiować atrybuty takie jak [HideInInspector] albp [Range(0,1)]) który powoduje że zmienne publiczne oznaczone tym atrybutem wyświetlają się w edytorze, w trybie tylko do odczytu. Częstym zastosowaniem jest dla mnie wyprowadzenie w celach debugowych pewnych zmiennych, bądź nawet całych stringów typu statusowego do wyświetlenia w edytorze. Atrybut nie chroni zmiennych przed zmianą z poziomu kodu ale uniemożliwia zmiany z poziomu edytora, co osobiście znajduję bardzo użytecznym.
W trakcie kilku ostatnich miesięcy intensywnej pracy w środowisku Unity, udało mi się uzbierać przetestować dość znaczną ilość fragmentów kodu i pluginów. Sporo pluginów do Unity jest pisanych przez amatorów, i napisanie własnych o podobnej funkcjonalności często bywa prostsze niż usunięcie niedoskonałości ze znalezionych w sieci, niemniej jednak zdażają sie także absolutne perełki. Ponieważ niektóre z nich nie są wcale takie proste do znalezienia (Asset Store dostępny z wewnątrz środowiska jest zdominowny przez produkty płatne, i wersje demo produktów płatnych, natomiast rozrzucone po sieci bywają fragmenty kodu zupełnie niebywałe. Kiedyś (zanim zacząłem interesować się tym środowiskiem) popularnym serwisem tego typu było [nie dzialajacy link UNIY WIKI LINK], ale od jakiegoś czasu strona ta nie działa. Niektóre fragmenty kodu trafiły na postawioną w zamian Unity Community Wiki i zdecydowanie warto jest przejrzeć to repozytorium, ale wiele projektów jest obecnie rozrzuconych po GitHubie, po stronach indywidualnych developerów itp.
Moim absolutnym faworytem, olśnieniem w kategorii "Darmowe pluginy" jest ZIOS . Wiele wieczorów spędzilem kodując, i czynnikiem, który nie dawał mi spokoju, jest jedno z dwóch ograniczneń w darmowej wersji Unity. Pierwszym, mniej ważnym, ograniczeniem darmówki, jest brak możliwości usunięcia splasha Made With Unity który jest automatcznie odtwarzany przed startem aplikacji zrobionych na darmowej wersji. Drugim ograniczeniem, które paradoksalnie wkurzało mnie znacznie bardziej, jest konieczność używania domyślnego, jasnego theme.
Z niedowierzaniem czytałem kolejne wątki w których ktoś wskazywał na to, że możliwosć zmiany theme na ciemny dostępna jest wyłącznie w werjsi PRO, płatnej (i to nie aż tak mało).
Po powrocie do domu z naszego drugiego stereokowego testu użycia Unity do mappingu 3D na imprezie (czyli w warunkach generalnie ciemności), po raz kolejny zacząłem szukać rozwiązania. Trafiłem na informacje o jakimś patchowaniu binarki za pomocą hex editora (czyli w skrócie należy złamać zabezpieczenia siłowo) i byłoy to dla mnie prawie do przyjęcia, gdyby dało się znaleźć aktualne informacje na ten temat - a niestety indeksy i ciągi do wyszukiwania znajdywałem jedynie dla starszyh niż aktualna wersji.
Wreszcie trafiłem na informację o Zios Themes i z początku wyglądało to na bycie zbyt pięknym aby było pawdziwe. Gdy rozszerzenie zadziałało mi na windowsie, dla aktualnej stabilnej wersji (5.5) byłem pewny że zaraz okaże się że nie działa na maku albo że wywraca jakiś ważny moduł. Ku mojemu zaskoczeniu - działa na maku, wszytko pracuje ok, do tego można sobie dalej modyfikować kolory, czcionki itp (choć zrobienie od nowa całego theme to misja bardzo karkołomna - Unity nie dokumentuje API którego wewnętrznie używa do rysowania interfejsu - właśnie po to żeby chronić się przed istnieniem pluginów tego typu.
Zios przychdodzi z jednym nowym zestawem ikon (Simplicity) ale za to z z jeśli naliczyłem dobrze - 44 wariantami kolorystycznymi, i 30 zestawami fontów czyli dotajemy ponad 1000 możliwych kombinacji wyglądów - z których niektóre stworzone zostały ewidentnie z poczuciem humoru, ale każdy znajdzie tu coś dla siebie. Poniżej cztery przykłady.
Korzystając z tego że Zios Themes ma ikony zestawu simplicity w postaci folderów z plikami PNG, dokonałem jednej modyfikacji która ułatwia życie w moim osobistym przypadku - często zapominałem że zablokowałem dane okno inspektora, i wpowadzałem zmiany nie na tym obiekcie na którym myślałem że wprowadzam. Dzięki pokolorowaniu ikony zamkniętej kłudki na czerwono, elementy gdzie założony jest lock są znacznie bardziej widoczne.
Breaking news: pomiędzy momentem jak napisałem powyższy tekst, a momentem gdy wrzucam go na stronę, wyszło unity 5.5.1, i oczywiście powoduje ono lawinę komunikatów o błędach ze strony Zios Themes ; ) Ja póki co zostaję po prostu na 5.5, przynajmniej dopóki nie pojawi się alpha 2 nowego Video Playera, wtedy pewnie przejdę na 5.6
Jedną z moich głównych bolączek na począktu pracy z Unity był bałagan w plikach. Unity nie wymusza absolutnie niczego jeśli chodzi o strukturę plików (no dobrze, pliki edytora powinny być w katalogu Editor, ale to w zasadzie wszytko), i przy braku wdrożonego systemu organizacji, szybko kończy się to drzewem gdzie rzeczy są porozrzucane trochę gdzie popadnie, co prawda zazwyczaj teksuty w Textures a materiały w Materials, ale ilość katalogów z materiałami rosła proporcjonalnie do ilości importów plików FBX, i wersji shaderów itp. Gdy katalogów zaczęło się robić sporo, coraz więcej czasu poświęcałem na nawigację po niezbyt wygodnej przeglądarce plików Unity (okno Project) zastanawiając się czy jest jakaś możliwość, aby wizualnie poddróżniać od siebie foldery. Jak się okazuje, jest.
Enter Rainbow Folders.
Rainbow folders pobrać można za darmo https://github.com/PhannGor/unity3d-rainbow-foldersEditL: autor postanowił jednak zacząć brać za rainbowa pieniądze, dosłownie od paru dni (względem edita z 2017 maja) githobowa wersja ofjcialnie nie bdzie dalej rozwijana, teraz trzeba go kupic z asset stora - poki co jednak pewnie dziala.
moim jedynym zastrzeżeniem jest, że pomimo obietnicy -The Rainbow Folders asset doesn’t require to be in the root of you project, you can freely move it wherever you want. Then just go to Edit → Preferences → Rainbow Folders and update the folder location, nie jest do końca tak pięknie - przy każdym a przynajmniej przy niektórych sytuacjach przenoszenia projektu z maszyny na maszynę, ta preferencja potrafi się zgubić a nasza konsola jest wtedy zalewana przez komunikaty o błędach które nie chcą ustać dopóki nie poprawimy ścieżki - a logowanie do konsoli jest jedną z droższych operacji jakie można zrobić w unity.
Witam wszystkich czytających, zgubione dusze i nie-poznanych fanów sprzed lat. Nadszedł w moim zyciu, mam nadzieję ze już na stałe, pewnego rodzaju nowy okres. Zająłem się programowaniem w środowisku Unity3D, i totalnie zakochałem się w temacie. Ponieważ od kilku miesięcy pochłaniam wiedzę w zasadzie coraz szybciej, a temat jest dla mnie niezwykle ekstyctujący, postanowiłem wykorzystać moment żeby zacząć pisać tutaj o kolejnych rzeczach których się uczę, wynikach eksperymentów, czy ciekawych fragmentach kodu znalezionych w sieci.