Làm cách nào để phát triển trên Windows và thử nghiệm và chạy trên Linux?


12

Tôi là một trong hai nhà phát triển cho một số phần mềm nội bộ (viết bằng python) trong công ty của tôi. Phần mềm là một ứng dụng máy chủ được thiết kế để chạy trên hộp Linux chuyên dụng. Hiện tại, chúng tôi có một hộp chứa kho SVN của chúng tôi và hộp này cũng được sử dụng để thử nghiệm. Vấn đề là tôi đang phát triển nó trên máy trạm của mình bằng Eclipse trên Windows và ứng dụng này không thể chạy trên Windows.

Làm cách nào để tổ chức đúng môi trường như vậy để bạn không mất thời gian quý báu khi chuyển dự án và mã xung quanh để bạn có thể kiểm tra nó?

Hiện tại tôi đang thực hiện kiểm tra svn, thay đổi một số mã và sau đó tải nó lên máy chủ phát triển để thử nghiệm (không qua svn). Kiểm tra nó trên máy chủ, thay đổi một cái gì đó, kiểm tra lại nó, vv Sau khi tất cả những điều đó đến với cam kết. Điều này liên tục tải lên và thử nghiệm đang khiến tôi phát điên. Tôi đã cố gắng giữ dự án trên máy chủ (thanh toán đến thư mục tại nhà) nhưng điều này gây ra rất nhiều vấn đề với Eclipse.

Rõ ràng tôi không có nhiều kinh nghiệm trong việc này, vì vậy tôi đang hỏi những thực tiễn tốt nhất liên quan đến các loại vấn đề này là gì?

Câu trả lời:


14

Gắn thư mục vào hộp Linux. Bằng cách đó bạn có thể tương tác trực tiếp với mã. Hoạt động một sự quyến rũ!


Đây là câu trả lời đúng. Đặc biệt là nếu bạn có thể chạy Cygwin trên hộp windows của bạn; bạn có thể sử dụng Cygwin để hiển thị Linux X-Windows (Gnome, KDE, cho dù những đứa trẻ tuyệt vời đang sử dụng những ngày này) trở lại hộp windows của bạn. Bạn có thể lập trình trong Eclipse trực tiếp trên hộp Linux và ngay lập tức kiểm tra nó.
Kristofer Hoch

3
Chỉ cần cẩn thận về sự khác biệt trong hệ thống tập tin. Windows không hỗ trợ tên tệp phân biệt chữ hoa chữ thường (trong đó "tên tệp" và "FILENAME" là hai tệp khác nhau), một số ký tự dưới dạng tên tệp (nghĩa là "/") hoặc liên kết mềm.
bitsoflogic

Đồng ý, đây là tùy chọn hữu ích nhất và dễ thực hiện nhất. Cấu hình VM theo cách tôi muốn, nó sẽ đòi hỏi quá nhiều thời gian.
c0ldcrow

@ c0ldcrow: Khác với các sự cố hệ thống tệp, chỉ cần lưu ý rằng tùy thuộc vào những gì bạn đang làm, việc truy cập các tệp trên mạng để thực hiện công việc dev có thể bị chậm một cách nghiêm trọng. Đặc biệt, tôi đã nhận thấy rằng một số hệ thống kiểm soát phiên bản rất chậm khi được sử dụng trên ổ đĩa mạng, mặc dù trường hợp cụ thể này không phải là vấn đề đối với bạn (thực hiện tất cả các công cụ kiểm soát nguồn của bạn cục bộ).
Matthew Scharley

10

Theo tôi, giải pháp tốt nhất là sử dụng môi trường ảo hóa để thử nghiệm, nếu PC cục bộ của bạn có tài nguyên để chạy.

Đối với một số đề xuất về các sản phẩm cụ thể, bạn có thể thấy câu trả lời của tôi cho câu hỏi trên StackOverflow , nhưng nói chung, điều này có nghĩa là bạn sẽ có một máy tính Linux thứ hai chạy bên trong máy tính hiện tại của bạn. Tôi sử dụng điều này để phát triển PHP trên Windows mọi lúc và nó hoạt động thực sự tốt cho tôi. Bạn có thể chia sẻ cơ sở mã của mình với SSH / ExpanDrive hoặc nếu bạn đang sử dụng VirtualBox thì hãy kiểm tra các thư mục được chia sẻ .


6

Gợi ý 1: làm việc trực tiếp với Linux, nếu bạn có thời gian để tìm hiểu nó. Tìm hiểu cách hệ điều hành khác hoạt động thực sự tuyệt vời cho trải nghiệm cá nhân của bạn và thêm vào CV của bạn rằng bạn biết cách sử dụng Linux không gây hại. Ngoài ra, Eclipse tồn tại trong Linux, vì vậy bạn không mất gì so với Windows.

Gợi ý 2: cài đặt Linux trên máy ảo cục bộ. Nó sẽ cho phép bạn kiểm tra ứng dụng mà không phải xuất bản nó đến một máy chủ ở xa.

Lưu ý: làm thế nào bạn có thể viết một ứng dụng nhắm mục tiêu Linux nếu bạn làm việc với Windows? Nó là một cơn ác mộng!


Ngay cả khi bạn có người kiểm tra, bạn phải thực hiện một số thử nghiệm hạn chế cho công việc của chính mình, ngay cả khi chỉ để đảm bảo rằng nó thực sự biên dịch / chạy tất cả. Nếu bạn đang phát triển trên một hộp Windows nhưng bạn đang phát triển một ứng dụng Linux, thì điều này trở nên khó khăn hơn một chút. Theo lưu ý về cách bạn có thể làm điều đó, thật dễ dàng để thực hiện với thiết lập đúng. Tôi sử dụng rộng rãi VM trong công việc của mình (PHP / MySQL nhắm mục tiêu máy chủ cuối Linux) và nó thực sự hoạt động rất tốt, đặc biệt nếu bạn có hơn 2 màn hình để làm việc.
Matthew Scharley

Tôi đã rất tốt với Linux (Tôi đã thiết lập thử nghiệm và máy chủ SVN). Tôi cũng làm mã hóa Windows (cần Visual studio) và nói chung tôi thích Windows hơn :) Phát triển phần mềm không phải là ngành kinh doanh cốt lõi của công ty tôi, bảo mật máy tính, đây chỉ là một số ứng dụng nội bộ mà chúng tôi cần. Tôi nghĩ rằng tôi có thể chấp nhận cài đặt Linux trong máy ảo
c0ldcrow

@Matthew Scharley: Tôi đồng ý. Xóa ghi chú thứ hai của tôi.
Arseni Mourzenko

@ c0ldcrow: vì vậy bạn không cần phải có một môi trường ảo chỉ để phát triển ứng dụng này (hoặc chỉ để kiểm tra nó, trong khi viết mã trong Windows).
Arseni Mourzenko

2

Nếu bạn đang sử dụng nhật thực, có một plugin hoàn hảo dành cho bạn: Filesync Tôi luôn sử dụng nó và tôi chắc chắn bạn sẽ thích nó.

Đây là những gì tôi thường làm khi tôi làm việc trong cùng điều kiện với bạn.

Tôi kiểm tra dự án từ SVN bằng Eclipse trong máy của tôi. Sau đó, tôi đồng bộ hóa dự án cục bộ của mình với máy chủ dev | test không bao gồm các tệp như .project và như vậy. Tôi khuyên bạn cũng nên đặt khóa SSH của mình đến máy chủ từ xa để tăng tốc kết nối.

Và Voila! Bây giờ bạn có thể làm việc cục bộ và nhật thực sẽ tự động đồng bộ hóa mọi thay đổi bạn thực hiện trên máy chủ từ xa. Khi tất cả đã được kiểm tra tốt và sẵn sàng để được giao, bạn cũng có thể cam kết sử dụng nhật thực! Không cần putty!

Hy vọng nó giúp!


0

Tôi đã quản lý để viết mã c # / mono trong Visual Studio và gỡ lỗi từ xa trên hộp Linux từ bên trong VS bằng cách sử dụng plugin gỡ lỗi từ xa GDB. Làm việc tốt đáng kinh ngạc. Tôi tưởng tượng sẽ nhanh hơn nếu cài đặt Linux của bạn ở máy ảo cục bộ (có một thiết bị Ubuntu VMWare đẹp có sẵn trên web), nhưng tôi cần một bộ thẻ GPU Tesla chưa được cài đặt trong máy tính xách tay của tôi.

Hãy tìm WinGDB. Nó không miễn phí, nhưng hoạt động rất tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.