Dziś szlifowałem jeszcze trochę Richtrisa, sprzątałem kod, dorzucałem kilka optymalizacji itd. Jedną z finalnych czynności było ustandaryzowanie nomenklatury, coby pasowało do opracowywanego Fairtrisa — buildy o nazwie PAL Extended
wymieniłem na EUR
. Skoro buildy zmieniły nazwę, to dla wersji europejskiej zmieniłem też nazwę pliku wykonywalnego, z pal ex.exe
na eur.exe
.
Mam ja na pulpicie trochę skrótów do miejsc i plików związanych z tymi projektami, w tym skróty do plików wykonywalnych. Skoro zmieniła się nazwa jednego z nich, musiałem edytować skrót i zmienić ścieżkę pliku, do którego się odnosi. Zmieniłem i… powłoka się popsuła. Zamiast ikonki pliku wykonywalnego, skrót posiadał ikonkę białej kartki (ikonka domyślna). Wnerwiała mnie, więc trzeba było coś z nią zrobić.
Pierwszy pomysł — zresetuję system, cache ikonek się przebuduje, będzie git. Zresetowałem i dupa — dalej biała kartka. Ubiłem eksplorer, uruchomiłem ponownie, żadnych zmian. Skorzystałem więc z Google, znalazłem kilka porad. Poważny serwis, jakaś ogólnoświatowa pomoc techniczna, serwis duży, wygląda, że ogarnięci ludzie go prowadzą, więc porady najpewniej są fachowe. I ta porada dotyczyła usunięcia pamięci podręcznej ikon, czyli pliku %LocalAppData%\IconCache.db
i reset kompa. Brzmi sensownie — cache się usunie, po restarcie system go zbuduje na nowo, będzie git. Zrobiłem jak sugerowali — usunąłem ten plik, zresetowałem kompa i k...a mać, zepsuło mi powłokę jeszcze bardziej:
Pamięć podręczna ikon się nie odbudowała, backupu brak. W końcu to cache, plik tymczasowy, niby nieważny, a jednak. Teraz kartka się nie wyświetla, bo już nic się nie wyświetla — wszystkie skróty szlag trafił, zostały tylko etykietki. Mało tego, ikonek teraz brakuje również w oknie eksploratora plików i niektórych na pasku zadań (Edge np.).
Co teraz zrobić?! Jak to naprawić?!
Pierwsze co, skorzystałem z narzędzi do skanowania i naprawy systemu — SFC i DISM — ale nic to nie dało. Kombinowałem, naprawiałem, resetowałem kompa kilka razy, ale nic, ikonek jak nie było, tak nie ma. Spróbowałem ręcznie przywrócić ikonki, czyli dla każdej z nich PPM, właściwości, zmień ikonę, zapisz itd. — no nie da się, bo okno właściwości skrótu nie chce się otworzyć! :D
Ostatecznie napisałem na Discordzie do znajomka od klocków, potwierdził że ma tę samą wersję i build systemu oraz że ma taki plik na dysku. Podesłał mi go, wkleiłem go do odpowiedniego katalogu. Ikonki w eksploratorze pokazały się od razu po przeklejeniu pliku, a te na pulpicie i innych miejscach po restarcie systemu.
Konkluzja
Jeśli wam się ikonka któregoś skrótu nie wyświetla poprawnie, to niech was ręka boska broni dotykać pliku IconCache.db
, a tym bardziej go usuwać — to nie jest zwykły cache. Po pewnym czasie system sobie taki wadliwy skrót sam poprawi — już kiedyś miałem taki przypadek i po ~kilku dniach samo się naprawiło. Jeśli jednak chcecie coś z systemu wywalić, to lepiej róbcie backupy i punkty przywracania, żebyście nie musieli później kombinować i tracić czasu na naprawy. A już na pewno nie wierzcie w to, co jakiś randomowy znawca zza oceanu pisze w popularnym artykule, nawet jeśli serwis wygląda na poważny i profesjonalny.
Apple ma też swoje wady, seria pro intela strasznie się grzeje - na kolanach tego nie potrzymasz, wbudowana kamera jest niskiej jakości, obsługa wirtualnych pulpitów fatalna. Sporo ludzi kupuje bo jest na to hype, wszyscy modni influencerzy i influencerki pokazują się tylko z mac'ami i iphone'ami. Ile w tym marketingu nie wiem. Na pewno mac jest dobrym sprzętem dla humanisty który dużo pisze i tworzy prezentacje, ewentualnie fotografów, filmowców i grafików. Dla programistów to jednak zbyt ograniczająca platforma.
Kolega poprosił mnie o sprawdzenie, bo się znam na komputerach (on zupełnie nie), a coś się zaczęło dziać z kompem jego syna - zawiesza się, jakieś błędy się pojawiają itp. No więc podrzucił mi maszynkę na chatę.
Otworzyłem i jedyne co byłem w stanie zrobić to zdjęcia. Następnie zamknąłem. Nie byłem na to gotowy psychicznie, może dzisiaj się zajmę deratyzacją i dezynfekcją.
Jak zapytałem kiedy ostatnio go czyścił, to kolega bardzo zdziwiony odpisał "nie wiedziałem, że takie rzeczy się robi" :D
Widziałem parę razy takie fotki w necie, ale nie sądziłem, że mi się coś takiego przytrafi na żywo.
@cerrato: tutaj też czytałem jakieś komentarze jak to producenci odrzucają gwarancję jak leci. Prawda jest taka, że serwisowi zapłacić trzeba, za przesyłkę zapłacić trzeba, to już kilka zł w tą na wentylator to grosze, a klient zadowolony. No ale to też prowadzi do innych aspektów. Sumarycznie nie wszystkie były naprawiane w pełni bezpłatnie.
Taka informacja dla osób zainteresowanych pierwszymi wynikami sekcji zwłok - wygląda na uszkodzoną grafikę. Po włączeniu są artefakty i BSOD. Wymiana na coś innego problem rozwiązała.
Nie ma to jak podłączyć urządzenie do USB, a wypiąć je razem z kawałkiem portu… wydarłem całą plastikową szufladę, blaszki pinów zostały wewnątrz gniazda. Ja to mam szczęście do chińskich kontrolerów — teraz czeka mnie rozbiórka laptopa aż do płyty głównej i przelutowanie portu… Dobrze, że ThinkPady mają USB pod dostatkiem. :D
@PerlMonk: wiem, mam, mam nawet kartę stałego klienta. Niestety żaden producent komputerów .mi znany ich nie używa. Chińczycy mogą, a u nas wieczna nie moc :) A w czym nasze porty są gorsze od tamtych?
..............a tymczasem w świecie M$:
zauważyłem dziś, że na moim dysku zalega Visual Studio 2019. Nie korzystam więc, postanowiłem odinstalować, tym bardziej, że na SSD nie lubię trzymać niepotrzebnych rzeczy. No to jazda:
Dodaj/usuń programy (czy jak to się nazywa teraz), na liście znajduje ww. aplikację i klikam odinstaluj.
Od razu dostaję komunikat, że instalator do VS jest niaktualny, wiec należy go zaktualizować i zaczyna coś mi tam ściągać z netu. Super... tylko ja chce sie pozbyć tego, a nie aktualizować. Update się zassał, VS2019 się odinstalował, myślę sobie "no to juz mam spokoj".
Mija parę godzin i klikam w menu start, a tam coś czego nigdy wcześniej nie było "Visual Studio Installer", zaglądam w dodaj/usuń programy... no jest. WTF?
Czy M$ jest naprawdę tak zdolny, by do instalacji czegokolwiek trzeba było instalować dodatkowy installer? :D Może czegoś tu nie rozumiem, to proszę o pomoc w zrozumieniu.
Trzeba wiedzieć skad się idzie. Kiedyś niebyło instalerra proces instalacji VS, zabierał cały dzień, był okropnie toporny a na koniec musiałeś go usunąć i zainstalować jeszcze raz bo np. wgrał Ci się po polsku bo tak. Installer jest spoko.
Ale mi dzisiaj JS napsu
krwi. Faktycznie to piszę w TS, ale feature jest JSowy - wynika z engine.
Jest sobie coś takiego jak Promise
. Fajne, fajne. Nieco zrypana monada, ale da się z tym żyć - (w zasadzie to trzeba).
Zrypane jest to, że do map
i flatMap
używana jest jedna metoda then
.
console.log("started");
const myObj = {a:"works", dżem: (x)=>{console.log('did not expect that');} };
const p1 = new Promise( (res, reject) =>
setTimeout(() => res(myObj), 1000)
);
p1.then ( x => console.log(x.a));
Kod powyżej powinien wyświetlić started
, a po chwili works
- nic dziwnego.
Zmieńmy tylko nazwę metody dżem
na then
i działanie programu się cokolwiek zmienia.
console.log("started");
const myObj = {a:"works", then: (x)=>{console.log('did not expect that');} };
const p1 = new Promise( (res, reject) =>
setTimeout(() => res(myObj), 1000)
);
p1.then ( x => console.log(x.a));
Teraz nie wyświetli się napis works
(wcale!!!) - natomiast automagicznie wywoła się metoda myObj.then
.
Wiedziałem, że w metodzie Promise.then
możemy przemapować rezultat na jakiś inny typ (jak map
), albo zwrócić kolejny Promise
i wtedy będzie działać klasyczne łączenie monad (jak flatMap/bind
).
Ale okazuje się, że to niecała prawda.
Otóż wcale nie trzeba zwrócić Promise
, aby łączenie przez odpowiednik flatMap
zadziałało. Wystarczy, że zwrócimy obiekt, który zupełnie przypadkiem(!!!) ma metodę o nazwie then
.
I wtedy łapie się on jako Thenable
(w TS jest to oznaczone jako PromiseLike
) i... cały mechanizm rusza sam. Jest to ewidentnie celowe (feature) , ale dla kogoś przyzwyczajonego do Nominal typing
i normalnych monad mocno nietypowe. Straciłem ze 2 godziny zanim zrozumiałem co się dzieje.
Structural typing: ty how do you do
złamany!
@jarekr000000: skrót myślowy z silniczkiem - porównaniem do gier planszowych karcianek - zbierasz karty a potem układasz z nich ciąg i tworzysz "silniczek", który jakimś kombosem nabija Tobie punkty albo daje surowce albo bije mocniej przeciwnika. Dla mnie pisanie w bashu z pipe'ami czy to co jest w artykule od Kamila wygląda na to samo. Robię podstawowe operacje, z nich składam bardziej "skomplikowane" finalnie mam silniczek / pipeline przetwarzania danych i z tego układam program.
@MuadibAtrides: jakieś tam podobieństwo do robienia pipe na IO jest (luźne). Ważnym punktem jest to, że możesz zrobić nowy skrypt, który komponuje kilka komend. W fp to by była nową wartość - skomponowana z monad. (Aczkolwiek poza samą operacją |
to wszystko w bashu jest tak daleko od fp jak się tylko da).
PerlMonk@Spine: Też nie wiem. Nie chodzi mi o to, żeby pokazać jakie Apple jest święte. Też robią sporo błędów. Po prostu rozumiem czemu ludzie wybierają maczki. @furious programming podał przykład urządzeń - ja sam mam na stałe przynajmniej dwa urządzenia podpięte do komputera - nie liczę myszy ani klawiatury. Specjalnie kupiłem huba z zasilaniem, bo DAC po ASIO + dysk potrafią wykorzystać sporo pasma.