Wydano Cydię 1.1.29 i 1.1.30

Wersje 1.1.29 i 1.1.30 Cydii zostały wydane wczoraj wieczorem dla wszystkich użytkowników iPhone'a, iPada i iPoda Touch, którzy przeprowadzili jailbreak iOS 10. Początkowo wydano wersję 1.1.29 Cydii z wieloma zmianami, a następnie podano wersję 1.1.30 do nas, aby rozwiązać problem poprzedniej aktualizacji.

W wersji 1.1.29 Cydii twórca tej aplikacji rozwiązał kilka poważnych problemów, które uniemożliwiały aktualizację źródeł poprawek, wtyczek i aplikacji. Co więcej, w aktualizacji dla Cydii rozwiązano problemy związane z instalacją wszystkich tych pakietów w iDevices z systemem iOS 10 i jailbreakiem.

Oprócz rozwiązania problemów aktualizacja aplikacji Cydia radykalnie poprawia wydajność aplikacji, dzięki czemu wszystkie pakiety zainstalujemy znacznie szybciej. Poprawa nie jest kolosalna, ale odczujesz znaczne skrócenie czasu spędzanego na aktualizowaniu źródeł i instalowaniu pakietów w terminalach.

W tej chwili można zainstalować tylko wersję 1.1.30 aplikacji Cydia, ale zawiera ona wszystkie zmiany, które mamy dostępne również w wersji 1.1.29. Aktualizacji aplikacji Cydia można również dokonać z poziomu aplikacji Cydia zainstalowanej na naszych iPhone'ach, iPadach i iPodach Touch, a poniżej możesz zobaczyć wszystkie nowości, jakie ze sobą niesie.

Cydia 1.1.29 to wersja wydajnościowa


Unikaj pobierania tłumaczeń, które powodują błąd 404

Chociaż obecnie uważam, że nie ma ani jednego repozytorium na wolności, które korzystałoby z tej funkcji (co mnie zasmuca, ale myślę: nie jest tak, że moje repozytorium obecnie to robi :/), Cydia obsługuje nazwy i opisy pakietów, aby zostać przetłumaczone na różne języki.

Jak niektórzy zauważyli, nowe 64-bitowe wersje Cydii robiły to wszystko jeszcze bardziej „poprawnie” i próbowały pobierać wiele plików tłumaczeniowych, spowalniając odświeżanie. Zgodnie z oczekiwaniami, ktoś pomyślał: „dlaczego po prostu nie usunąć tej funkcji”, co wydawało się naprawdę złym rozwiązaniem :/.

Zamiast tego naprawiłem funkcję APT, która ma filtrować pobieranie „opcjonalnych” plików w celu pracy z repozytoriami, które nie mają listy plików, które normalnie znajdowałyby się w pliku Release (zachowanie w tym przypadku jest takie nie pobiera ich: jeśli masz takie repozytorium i chcesz tłumaczeń, napraw plik Release).

Poprawne ładowanie katalogu pakietów

Czy wiesz, że w przeciwieństwie do std::vector lub NSMutableArray, gdy CFMutableArray mówi „pojemność”, nie ma na myśli „to, ile można przechowywać przed następną alokacją”, ale zamiast tego „to jest, ile można przechowywać w tym tablica: nigdy nie będzie większa”? No cóż, ja nie :(. Najwyraźniej Microsoft też nie ;P. Pracując nad kolejnym numerem, odkryłem ten i byłem nieźle zszokowany.

To może wyjaśniać niektóre dziwniejsze rzeczy, które ludzie zgłaszali ostatnio podczas korzystania z Cydii: przypadki, w których niektóre pakiety pojawiają się, a inne nie, których nikt nie jest w stanie odtworzyć i które wydają się po prostu znikać: kiedy Cydia uruchamia się bez katalogu, ustaw jego pojemność na 16 tys. pakietów, a następnie zwiększaj ją o 1024 przy każdym odświeżeniu... ale w domyślnych repozytoriach znajduje się wiele dziesiątek tysięcy pakietów, więc „rozgrzanie się” Cydii i zobaczenie wszystkich może zająć trochę czasu nich, po czym to po prostu zadziałało :/.

Z drugiej strony może nie… to jest po prostu takie dziwne zachowanie jak na tablicę… twierdzi nawet, że dołączenie na końcu tablicy o pełnej pojemności powoduje „niezdefiniowane zachowanie”. Niektórzy ludzie zgłaszają, że tablica staje się większa? Szczerze: nie testowałem tego, ponieważ znalazłem to, ustalając, że i tak muszę przejść na coś bardziej podobnego do std::vector. Myślę jednak, że jest to naprawdę interesująca ciekawostka dla tych z nas, którzy zadają sobie trud przeczytania zaawansowanych informacji o wydaniu wersji wydajnościowej Cydii ;P.

Popraw wydajność sortowania katalogu pakietów

Cydia stoi przed szalonym wyzwaniem polegającym na konieczności wykonywania lokalnie na Twoim urządzeniu tego, co scentralizowane, kontrolowane i irytujące z filozoficznego punktu widzenia (potrząsam pięścią, Apple!) rozwiązanie zrobiłoby na serwerze: zaktualizować listę wielu dziesiątek tysięcy pakietów , sortując wynik nie tylko alfabetycznie, ale w sposób uwzględniający ustawienia regionalne, jakiego oczekują użytkownicy.

Zaprojektowałem dla Cydii coś, co moim zdaniem jest całkiem epickim rozwiązaniem tego problemu, polegającym na dostosowaniu sortowania radix do pracy na ciągach znaków przy użyciu szalonych transformacji, wykonywaniu wielu przebiegów, po których następuje sortowanie przez „naprawę” przez wstawianie. Jest to rodzaj algorytmu, który naprawdę pokazuje, dlaczego wszyscy programiści powinni mieć solidne podstawy algorytmiczne, ponieważ pewnego dnia będziesz potrzebować jednego z nich. Prowadzę pogadanki na temat tego algorytmu sortowania na zajęciach z informatyki na poziomie uniwersyteckim; P.

Jednakże przez lata wymagał pewnej „kalibracji” i najwyraźniej nie sprostał wyzwaniu sortowania języka chińskiego (tradycyjnego) w „kolejności pociągnięć”; ta kolejność była funkcją bardzo pożądaną przez chińskich użytkowników i została dodana do Cydii od iOS 8, ale spowodowała, że ​​przejścia sortowania radix w moim algorytmie wymagały zbyt wielu późniejszych poprawek przy użyciu sortowania przez wstawianie. Nadal należy wprowadzić pewne ulepszenia w radix pass, ale kiedy wczoraj zgłoszono ten problem z wydajnością, miałem lepsze rozwiązanie.

Właściwie zaprojektowałem już porządek sortowania w Cydii, aby móc korzystać z „pamięci podręcznej sortowania”, ponownie wykorzystując wyniki poprzednich wykonań Cydii, aby uzyskać „wystarczająco blisko” zamiast używać sortowania radix. To, w połączeniu z pewnymi usprawnieniami algorytmicznymi w zakresie sortowania przez wstawianie, w połączeniu z przeniesieniem większej części algorytmu do C++ (głęboko żałuję, jak wiele Objective-C, a nawet CoreFoundation jest w Cydii...), drastycznie poprawiło wydajność ładowania Cydii przynajmniej dla Chińczyków.