Maybaygiare.org

Blog Network

co to jest podkładka?

shim to mała biblioteka, która przechwytuje i zmienia wywołania do innej biblioteki, głównie w celu ułatwienia kompatybilności.

utrzymanie wielu wersji biblioteki jest niezbędne do obsługi klientów. Biblioteki Shim tłumaczą stare Na Nowe wywołania biblioteki przed przekierowaniem do nowej biblioteki.

przykład 1:

instalacje Linuksa zwykle zawierają pojedynczą wersję Ruby. Programiści Rubiego muszą mieć różne wersje Rubiego w swoich wielu aktywnych projektach. Rbenv używa podkładek, aby rozwiązać ten problem.

Uruchomienie polecenia Ruby w Linuksie oznacza sprawdzenie pliku wykonywalnego w ścieżce — którą przeszukuje od lewej do prawej. Uruchomienie polecenia Ruby rails serveroznacza, że Linux Znajduje i uruchamia Rails, plik wykonywalny Ruby, w pierwszym katalogu.

normalnie uruchamiana aplikacja szyn

Rbenv dodajeshims katalogu i ładuje go skryptami Shim przed prependingiem ścieżki. Istnieje skrypt shim dla każdej aplikacji Ruby i uruchomienie aplikacji Ruby oznacza teraz uruchomienie pasującego skryptu shim. Tak więc uruchomienie rails oznacza wykonanie skryptu Rails w katalogushims, a nie aplikacji Rails w kataloguusr/local/bin. Skrypt wypracowuje wymaganą wersję Rubiego, a następnie uruchamia jego pasującą aplikację, w tym przypadku Rails, pod oczekiwaną wersją Rubiego.

przykład 2:

Microsoft używa podkładek do fałszowania wywołań aplikacji Windows. Gdy aplikacja wykonuje wywołanie systemowe, przechodzi przez „Import Address Table”.

aplikacja wywołująca do Windows z IAT

możesz zmienić tabelę i zastąpić wywołanie Windows wywołaniem shim. Shim w przykładzie jest shim’ version-lie’. Aplikacja myśli, że jest na komputerze z systemem Windows 7.

An application call redirected to shim from IAT

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.