2011-01-12 29 views
14

Tôi là một người mới trong lĩnh vực này, nhưng trong tương lai gần tôi phải phát triển một ứng dụng cho một người bạn (Tôi đã làm một số công việc của ứng dụng và người bạn hạnh phúc) .Làm thế nào để bạn tổ chức công việc lập trình của mình

Tôi giả sử rằng tôi cần 3 địa điểm để lưu trữ tác phẩm của mình, nhưng tôi không chắc đây có phải là cách tiếp cận tốt nhất hay không. Tôi cần lời khuyên, ý kiến, liên kết, sách, blog của bạn về chủ đề này.

tôi dự định có:

  1. một nơi mà tôi phát triển ứng dụng
  2. một nơi mà tôi giữ một back-up của ứng dụng
  3. một nơi với các ứng dụng sẵn sàng để sử dụng

Tôi sẽ sử dụng git trong giai đoạn phát triển, nhưng sau này tôi không biết sử dụng công cụ nào, hoặc đó là phương pháp hay. Bạn có thể cho tôi lời khuyên không?

PS: tại thời điểm này tôi đang sử dụng CakePHP để xây dựng một số ứng dụng web, nhưng tôi cũng chơi với C++ theo thời gian.

+4

này thực sự có thể nhiều hơn một câu hỏi cho http://programmers.stackexchange.com/ – koenmetsu

+42

1. source control 2. source control 3. kiểm soát nguồn –

+1

@Matti Tôi sẽ upvote bình luận này 1000 lần nếu tôi có thể. – Rudi

Trả lời

9

1: một nơi mà tôi phát triển ứng dụng

Đây sẽ là bạn địa phương git checkout.

2: một nơi mà tôi giữ một back-up của ứng dụng

Bạn có nghĩa là các nguồn hoặc bất kỳ kết quả biên soạn? Đối với các nguồn bạn có thể

  1. Sử dụng dịch vụ công cộng như http://github.com hoặc http://gitorious.org làm hệ thống dự phòng. Tôi khuyên bạn nên làm điều này nếu bạn không nhớ sử dụng một dịch vụ không thuộc quyền kiểm soát của bạn.
  2. Thiết lập máy chủ git riêng (hộp linux có sshd và git được cài đặt là đủ). Bạn cần lưu ý rằng có một số cạm bẫy khi bạn thiết lập kho lưu trữ từ xa (kho lưu trữ phải trống và bạn cần đặt quyền ngay khi có nhiều người dùng Unix sẽ có thể đẩy vào kho lưu trữ)

Với cả hai cách, bạn git push cam kết của bạn vào kho lưu trữ từ xa để sao lưu công việc của bạn.

3: một nơi với các ứng dụng sẵn sàng để sử dụng

Không có tiêu chuẩn nhất định về việc lưu trữ các kết quả biên soạn. Điển hình kết quả được lưu trữ với một chương trình đánh số được xác định trên một tập tin chia sẻ/máy chủ web/bất cứ điều gì.

Tôi sẽ sử dụng git trong giai đoạn phát triển, nhưng sau này tôi không biết sử dụng công cụ nào hoặc thực tiễn tốt. Bạn có thể cho tôi lời khuyên không?

Như @Navi đã nói, công cụ xây dựng tự động là một điểm cộng lớn. Cách tốt nhất là xây dựng một lệnh, có nghĩa là bạn cần chạy một lệnh chính xác để xây dựng phần mềm hoàn chỉnh sau khi thanh toán.

Bạn cũng nên xem xét hệ thống continous integration, đây là phần mềm giám sát kho lưu trữ mã nguồn trung tâm để thay đổi và tự động xây dựng phần mềm trong môi trường phòng sạch khi phát hiện điều gì đó mới. Các hệ thống CI đặc biệt hữu ích nếu có nhiều (> 1) người làm việc trên một sản phẩm phần mềm, vì chúng có thể hiển thị các bản dựng bị hỏng rất nhanh.

8

Thực hành phổ biến là có môi trường sản xuất thử nghiệm, thử nghiệm, tích hợp, thử nghiệm. Kiểm thử tích hợp và sản xuất sẽ ít nhiều giống nhau.

Tôi khuyên bạn nên sử dụng một số loại công cụ xây dựng. Nó không rõ ràng từ câu hỏi của bạn loại nền tảng/công nghệ bạn đang sử dụng, nhưng có lẽ là một trong những phù hợp cho bạn.

Nếu bạn đang sử dụng Maven, thì quy ước là có sự phân biệt giữa các bản phát hành ổn định và các phiên bản thử nghiệm ảnh chụp nhanh.

+1

+1 cho môi trường phát triển thực tế của bạn nhưng đừng quên kiểm soát nguồn nó. Không có số lượng sao lưu hoặc môi trường khác nhau thay thế kiểm soát nguồn. –

1

workflow Quick-và-bẩn cho nhà phát triển đơn lẻ, những người không sử dụng bất kỳ điều khiển phiên bản sw:

  • sản xuất thực tế: các bản sao chính xác của phiên bản của người dùng,
  • phát hành: sẵn sàng-to- phiên bản tàu (nên được triển khai nhưng chưa hoàn thành),
  • phiên bản công việc: mà bạn đang làm việc,
  • sao lưu: các phiên bản dự phòng phải ở trạng thái hoạt động.

Nếu bạn đang sử dụng db, sẽ có một phiên bản cơ sở dữ liệu cho từng phiên bản chương trình.

+3

bẩn chỉ là bẩn, không có lý do để bỏ qua kiểm soát nguồn –

2

Tôi đã tìm thấy một bộ mã tối thiểu là phát triển và phát hành. Một số loại điều khiển phiên bản là rất cần thiết. Tôi sử dụng HEAD để phát triển và chi nhánh phát hành. Sao lưu kho lưu trữ của bạn, hoặc ít nhất có nó trên một đĩa khác nhau từ một (s) được sử dụng để phát triển và xây dựng.

Tôi thích có ba bộ mã: phát triển, thử nghiệm và phát hành. Mỗi phải có một môi trường xây dựng tự động. Đây là những môi trường xây dựng. Để phát triển, chỉ cần một bộ duy nhất.

  • Mã phát hành được sử dụng để thay đổi mã phát hành được áp dụng trước bản phát hành tiếp theo. Mọi thay đổi được thực hiện ở đây đều được hợp nhất trở lại để phát triển. hoặc tái phát triển (trong trường hợp sửa chữa nhanh).
  • Mã thử nghiệm được phát hành để thử nghiệm. Điều này cung cấp một môi trường tương đối ổn định cho người thử nghiệm. Các bản dựng thường được gắn thẻ nhưng không được phân nhánh. Thẻ được sử dụng làm cơ sở cho nhánh phát hành.
  • Phát triển sẽ tự động xây dựng ít nhất mỗi ngày. Điều này đảm bảo mã có thể xây dựng bên ngoài môi trường phát triển.

Bạn có thể sử dụng GIT để phát triển và sản xuất, nhưng quy trình làm việc khác với bạn phải làm với CVS hoặc lật đổ. Hãy xem the ProGIT online book để hiểu luồng.

Tránh mã hóa trong môi trường cho ứng dụng. Mọi phụ thuộc môi trường nên đến từ cấu hình của môi trường. Nó là tốt đẹp để hiển thị một số dấu hiệu của xây dựng và môi trường trong giao diện.

3

Đây là phương pháp hay nhất để đạt năng suất cao, nhưng đủ nhanh cho người mới chơi.

  1. Thiết lập môi trường dev cục bộ. Sử dụng VCS như TortoiseSVN hoặc lý tưởng sử dụng một cái gì đó tích hợp đầy đủ với IDE của bạn. Tôi sử dụng Aptana với Subclipse để phát triển các ứng dụng PHP.

  2. Thiết lập tập lệnh hàng đêm để tự động sao lưu VCS của bạn từ xa.

  3. Lấy thiết lập môi trường dev từ xa (ví dụ: dev.mysite.com). Sử dụng để thử nghiệm máy chủ trực tiếp, kiểm tra ứng dụng khách, kiểm tra phản hồi giao diện người dùng, v.v.

  4. Nếu cần, hãy thiết lập máy chủ dàn dựng (stage.mysite.com). Sử dụng cho thử nghiệm tích hợp trực tiếp, kiểm tra phản hồi, vv Nếu dự án của bạn đủ nhỏ, bạn thường có thể bỏ qua giai đoạn này và chỉ sử dụng môi trường dev cho thử nghiệm tích hợp.

  5. Thiết lập một môi trường sản xuất (www.mysite.com)

Đừng quá kỹ sư công việc của bạn ... thời gian của bạn là quý giá. Bây giờ, tôi sẽ nói bắt đầu với điều này, có được một số kinh nghiệm theo vành đai của bạn và sau đó bạn sẽ biết làm thế nào để tinh chỉnh công việc của bạn.

+0

lời khuyên của bạn về cách sử dụng tên miền phụ là thực sự mát mẻ, nhưng tôi không hiểu điều về thiết lập kịch bản hàng đêm. Bạn có thể cung cấp cho tôi một số liên kết để đọc về điều đó không? – dole

+1

@dole - Tôi sử dụng psftp.exe (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) trong tập lệnh AutoIT3 (http://www.autoitscript.com/autoit3/ index.shtml) ... Đây là một ví dụ nhỏ ... chỉ có 2 dòng bạn cần trong kịch bản AutoIT3: Dim $ cmd = "tên người dùng psftp.exe @hostname -bc -pw password -P 22 -b ftp_script_filename " RunWait (@ComSpec &"/c "& $ cmd) Tham số ftp_script_filename chỉ là chuỗi lệnh ftp mà bạn muốn chạy, nghĩa là đăng nhập, thay đổi thư mục, gửi tệp, v.v. – JoshuaDavid

+0

xin lỗi về sự lộn xộn trên bình luận trước ... ngắt dòng trước khi "RunWait" – JoshuaDavid

1

Lưu mã của bạn trên http://www.github.com. Nếu bạn cần mã riêng tư, bạn có thể tạo một kho lưu trữ riêng, được lưu trữ với một khoản phí không đáng kể, sẽ đáp ứng 2 yêu cầu đầu tiên của bạn.

Nếu bạn muốn lưu trữ mã và lưu trữ trang web, có một công ty dịch vụ đám mây có tên là PHP Fog (http://www.phpfog.com/) sẽ lưu trữ mã và sẵn sàng sử dụng (yêu cầu 3).

1
  1. Điều khiển phiên bản ngoài (github, bitbucket)
  2. Ví dụ: rsync để thư mục Dropbox
  3. thứ sản xuất nên được tạo lập trình từ một số phiên bản công cụ kiểm soát trong bước 1
+0

Sử dụng dropbox thực sự là một lời khuyên tốt. TY – dole

5

lời khuyên tốt Hầu hết đã được đưa ra:

  • Sử dụng nguồn kiểm soát điều khiển/sửa đổi. Và sao lưu. Thực sự, thực sự làm điều này.
  • có các trường hợp riêng biệt để phát triển, thử nghiệm, tích hợp/dàn dựng và sản xuất. Nếu bạn thiếu phần cứng, ảo hóa - có một số giải pháp thương mại tốt, nhưng ngay cả Virtualbox (miễn phí) thường sẽ thực hiện công việc.

Bên cạnh đó, tôi cũng khuyên bạn nên

  • Tạo bản sao lưu của trường ổn định tại cột mốc. Khi hoạt động, hãy giữ một bản sao.
  • Sử dụng Bộ theo dõi sự cố như JIRA, Bugzilla hoặc tương tự. Ít nhất, có một tập tin văn bản với một danh sách ToDo và một grep tốt.
  • Đánh dấu vị trí trong mã của bạn như @TODO và @FIXME nếu có; hầu hết các IDE tôi biết sẽ tự động tìm thấy chúng và trình bày cho bạn một danh sách những cái đó. Điều này có thể hoặc không thể tích hợp với trình theo dõi.

Tôi thấy điều quan trọng là phải theo dõi những gì còn lại để làm và tầm quan trọng của nó, phân biệt giữa lỗi, cải tiến, nhiệm vụ cần thiết và các mặt hàng thú vị và v.v. Thật dễ dàng để có được Lost In Development và quên đi những thứ - lập trình đòi hỏi bạn phải lặn sâu vào các hoạt động bên trong của mã, và để giữ cho cấu trúc tổng thể trong tâm trí. Bạn sẽ cần một cái gì đó để giữ cho tâm trí của bạn thoát khỏi tất cả những thứ đó "và tôi cũng sẽ phải làm điều này" mọi thứ. Các giấy tờ màu vàng dính không hoạt động tốt, cũng không làm các tấm lót bằng văn bản, vì với hơn 50 mục, giấy sẽ khó theo dõi.

Có phần mềm cho điều đó. Sử dụng nó.

+0

phần mềm nào được sử dụng trong ngành để theo dõi các lỗi, cải tiến, nhiệm vụ, mục riêng biệt. Bây giờ tôi đang sử dụng bọ ngựa để truy tìm các lỗi, nhưng còn "những thứ" khác phải được quản lý thì sao? – dole

+0

Trình theo dõi vấn đề tôi đã tìm thấy trong sử dụng hiệu quả có khả năng quản lý tất cả các mục được đề cập. Thông thường, bạn chỉ định một loại công việc (giống như bất kỳ loại nào ở trên), và có thể sắp xếp và lọc tùy thuộc vào loại, trạng thái, tầm quan trọng, thời gian đã mở, v.v.Kiểm tra một số sản phẩm như những sản phẩm tôi đã đề cập và liên kết đến. - Ngoài ra còn có nhiều công cụ chuyên biệt hơn cho quản lý dự án, theo dõi theo một cách khác và phù hợp với * lập kế hoạch *, lên lịch và ước tính chi phí, nhưng đó là cách thoát khỏi câu hỏi ban đầu ở đây. Và nhiều người theo dõi đã làm một phần của điều này rồi. – foo

+0

Để đặt nó theo những từ đơn giản hơn: hãy sử dụng cùng một công cụ. Bạn có thể gửi các mục "todo" giống như "lỗi", chúng sẽ nhận được một nhãn khác để sắp xếp chúng theo nhưng bạn có thể sử dụng cùng phần mềm và giao diện. – foo

1

Rất nhiều người đã nói về vấn đề/trình theo dõi tính năng cho công việc của bạn. Nếu chỉ có bạn đang làm việc, tôi khuyên bạn nên xem FreeMind.

Ánh xạ tâm là một cách tuyệt vời để theo dõi các tác vụ và những thứ bạn cần làm cho dự án của bạn. Viết ra bất kỳ ý nghĩ nào mà bạn muốn giữ lại, nhưng bạn không có thời gian để làm ngay bây giờ.

Edit: tôi đã thêm một ví dụ cho một nhiệm vụ cho việc mở rộng dự án mã nguồn mở của tôi:

Mind Map example

+0

ty cho mẹo của bạn. Hôm qua tôi đã nghe lần đầu tiên về bản đồ tư duy và tôi nghĩ đó là một khái niệm tuyệt vời, nhưng tôi muốn xem một số ví dụ về cách nó được sử dụng trong phần mềm dev. Tôi đã chơi một câu đố, nhưng tôi sẽ muốn xem người chuyên nghiệp đang sử dụng nó như thế nào và học hỏi từ họ. Bất kỳ liên kết, blog, cuốn sách về điều đó? – dole

+0

Cảm ơn bạn đã đề cập đến Mindmaps. Từ kinh nghiệm của tôi, mindmaps là tuyệt vời cho các giai đoạn lập kế hoạch ban đầu, khi bạn cố gắng nắm bắt dự án, thu thập dữ liệu và đặc biệt có được * người * để chia sẻ một cái nhìn chung. Ngoài ra, nếu dự án thay đổi, mindmaps có thể thuận tiện để điều chỉnh và lấy nét lại. Nhưng tôi thấy mindmaps * không * hữu ích, tuy nhiên, khi theo dõi các vấn đề và lỗi. Tôi nghĩ rằng công cụ này phù hợp với một mục đích khác nhau. – foo

+0

Tôi đã thêm một ví dụ về bản đồ tư duy về cách tôi sử dụng bản đồ tư duy. Tôi đặt cược có những người khác mà làm công cụ tương tự và có thể sử dụng nó trong cách tốt hơn so với tôi. Có một cái nhìn xung quanh trang web và xem những gì bạn có thể tìm thấy. – Knubo

Các vấn đề liên quan