Jak programować w systemie Windows i testować i uruchamiać w systemie Linux?

12

Jestem jednym z dwóch programistów oprogramowania wewnętrznego (napisanego w języku Python) w mojej firmie. Oprogramowanie to aplikacja serwerowa zaprojektowana do działania na dedykowanym urządzeniu Linux. Obecnie mamy jedno pudełko przechowujące nasze repozytorium SVN, które służy również do testowania. Problem polega na tym, że rozwijam go na mojej stacji roboczej za pomocą Eclipse w systemie Windows i ta aplikacja nie może działać w systemie Windows.

Jak właściwie zorganizować takie środowisko, aby nie stracić cennego czasu na przesłanie projektu i kodu, aby móc go przetestować?

Obecnie robię svn checkout, zmieniam trochę kodu, a następnie przesyłam go na serwer programistyczny w celu przetestowania (nie przez svn). Przetestuj na serwerze, zmień coś, przetestuj ponownie itp. Po tym wszystkim następuje zatwierdzenie. Ciągłe przesyłanie i testowanie doprowadza mnie do szału. Próbowałem zachować projekt na serwerze (pobieranie do katalogu domowego), ale powoduje to wiele problemów z Eclipse.

Oczywiście nie mam w tym dużego doświadczenia, więc pytam, jakie są najlepsze praktyki dotyczące tego rodzaju problemów?

c0ldcrow
źródło

Odpowiedzi:

14

Zamontuj folder w polu Linux. W ten sposób możesz bezpośrednio wchodzić w interakcje z kodem. Działa urok!

l0b0
źródło
To jest właściwa odpowiedź. Zwłaszcza jeśli możesz uruchomić Cygwin na swoim oknie Windows; możesz użyć Cygwina, aby wyświetlić Linux X-Windows (Gnome, KDE, Cokolwiek fajne dzieci używają w tych dniach) z powrotem do okna. Możesz programować w Eclipse bezpośrednio na Linux-ie i natychmiast go przetestować.
Kristofer Hoch
3
Uważaj tylko na różnice w systemach plików. System Windows nie obsługuje rozróżniania wielkości liter w nazwach plików (gdzie „nazwa pliku” i „FILENAME” to dwa różne pliki), niektóre znaki jako nazwa pliku (tj. „/”) Lub miękkie linki.
bitsoflogic
Zgadzam się, jest to najbardziej przydatna i najłatwiejsza opcja do wdrożenia. Konfigurowanie maszyny wirtualnej tak, jak chcę, wymagałoby zbyt wiele czasu.
c0ldcrow
@ c0ldcrow: Poza problemami z systemem plików, pamiętaj tylko, że w zależności od tego, co robisz, dostęp do plików w sieci w celu wykonywania pracy deweloperskiej może być zbyt powolny. W szczególności zauważyłem, że niektóre systemy kontroli wersji są bardzo powolne, gdy są używane na dysku sieciowym, chociaż ten szczególny przypadek nie powinien być dla ciebie problemem (wykonuj wszystkie czynności związane z kontrolą źródła lokalnie).
Matthew Scharley
10

Moim zdaniem najlepszym rozwiązaniem byłoby użycie zwirtualizowanego środowiska do testowania, jeśli komputer lokalny ma zasoby, aby go uruchomić.

W przypadku niektórych rekomendacji dotyczących konkretnych produktów możesz zobaczyć moją odpowiedź na pytanie na StackOverflow , ale ogólnie oznacza to, że będziesz mieć drugi komputer z systemem Linux działający w bieżącym. Cały czas używam tego do programowania PHP w Windowsie i działa naprawdę dobrze dla mnie. Możesz udostępnić swoją bazę kodów SSH / ExpanDrive lub jeśli korzystasz z VirtualBox, sprawdź foldery współdzielone .

Matthew Scharley
źródło
7

Sugestia 1: pracuj bezpośrednio w systemie Linux, jeśli masz czas na naukę. Uczenie się, jak działa inny system operacyjny, jest naprawdę świetne dla twojego osobistego doświadczenia, a dodawanie do CV, że wiesz, jak korzystać z Linuksa, nie boli. Ponadto Eclipse istnieje w systemie Linux, więc nie tracisz niczego w porównaniu z Windows.

Sugestia 2: zainstaluj Linux na maszynie wirtualnej lokalnie. Umożliwi to przetestowanie aplikacji bez konieczności każdorazowego publikowania jej na odległym serwerze.

Uwaga: w jaki sposób możesz napisać aplikację skierowaną do systemu Linux, jeśli pracujesz w systemie Windows? To koszmar!

Arseni Mourzenko
źródło
Nawet jeśli masz testerów, musisz wykonać pewne ograniczone testy na swojej pracy, nawet jeśli tylko po to, aby upewnić się, że faktycznie się kompiluje / uruchamia. Jeśli rozwijasz się w systemie Windows, ale tworzysz aplikację dla systemu Linux, staje się to nieco trudniejsze. Uwaga: jak to zrobić, jest łatwa do zrobienia z prawidłową konfiguracją. Używam maszyn wirtualnych intensywnie we własnej pracy (PHP / MySQL ukierunkowany na serwer końcowy Linuksa) i to naprawdę działa naprawdę dobrze, szczególnie jeśli masz więcej niż 2 monitory do pracy.
Matthew Scharley,
Jestem już bardzo dobry w Linuksie (skonfigurowałem test i serwer SVN). Zajmuję się także programowaniem w systemie Windows (potrzebuję Visual Studio) i ogólnie bardziej lubię system Windows bardziej :) Tworzenie oprogramowania nie jest podstawową działalnością mojej firmy, bezpieczeństwo komputera to tylko niektóre wewnętrzne aplikacje, których potrzebujemy. Myślę, że mogę zaakceptować instalację Linuksa na maszynie wirtualnej
c0ldcrow
@Matthew Scharley: Zgadzam się. Usunąłem moją drugą notatkę.
Arseni Mourzenko
@ c0ldcrow: więc nie powinno być problemu z posiadaniem wirtualnego środowiska tylko do rozwijania tej aplikacji (lub tylko do jej testowania podczas pisania kodu w systemie Windows).
Arseni Mourzenko
2

Jeśli używasz Eclipse, masz dla Ciebie idealną wtyczkę: Filesync Używam jej cały czas i jestem pewien, że spodoba ci się.

Oto, co zwykle robię, ponieważ pracuję w takich samych warunkach jak ty.

Sprawdzam projekt z SVN za pomocą Eclipse na moim komputerze. Następnie synchronizuję mój projekt lokalny ze zdalnym serwerem deweloperskim | z wyłączeniem plików takich jak .project i tym podobne. Polecam także umieścić klucz SSH na zdalnym serwerze, aby przyspieszyć połączenie.

I voila! Teraz możesz pracować lokalnie, a eclipse automatycznie zsynchronizuje wszelkie zmiany, które wprowadzisz na zdalnym serwerze. Kiedy wszystko jest już dobrze przetestowane i gotowe do dostarczenia, możesz zatwierdzić za pomocą eclipse! Nie potrzeba szpachli!

Mam nadzieję, że to pomoże!

Alfwed
źródło
0

Udało mi się napisać kod c # / mono w Visual Studio i zdalnie debugować na komputerze z systemem Linux z poziomu VS przy użyciu wtyczki zdalnego debuggera GDB. Działał niesamowicie dobrze. Wyobrażam sobie, że byłoby szybciej, gdyby instalacja Linuksa odbywała się na lokalnej maszynie wirtualnej (w Internecie jest dostępne fajne urządzenie VMWare Ubuntu), ale potrzebowałem zestawu kart graficznych Tesla, które nie zostały zainstalowane w moim laptopie.

Poszukaj WinGDB. Nie jest darmowy, ale działa niesamowicie dobrze.

3Dave
źródło