[Powered by Google Translate] [Hội thảo] [Phát triển Web: Từ ý tưởng đến thực hiện] [Ben Kuhn] [Billy Janitsch] [Đại học Harvard] [Đây là CS50] [CS50.TV] [Billy] Xin chào, tôi Billy và đây là Ben. >> [Ben] Hi. Chúng ta sẽ nói về phát triển web ngày hôm nay. [Webdev] [Billy Janitsch và Bến Kuhn] Một chút về chúng tôi đầu tiên. Ben là loại người đàn ông phía sau. Ông làm cho mọi thứ làm việc. Và sau đó tôi đi vào và làm cho họ đẹp. Tôi chủ yếu tham gia với hơn front-end thiết kế bố trí loại công cụ, và Ben, mặt khác, biết mình đang làm gì để ông làm việc trên các công cụ back-end. Cùng nhau chúng ta đã thực hiện một vài điều. Ví dụ, năm ngoái chúng tôi đã làm việc trên Gimblium đó là một studio phát triển trò chơi trực tuyến. Đó là dự án cuối cùng của chúng tôi cho các lớp học, và kể từ đó chúng tôi đã thực hiện Harvard Lớp mà là một khuôn khổ trực tuyến cho các trình duyệt và các khóa học mua sắm tại Đại học Harvard. Chúng ta sẽ bắt đầu với ý tưởng này cho trang web của chúng tôi. Chúng ta sẽ làm cho Facebook, nhưng đối với mèo. Trước khi bạn thực sự làm cho trang web này, không làm cho trang web này bởi vì nó không tốt, nhưng chúng tôi sẽ sử dụng nó như là một khuôn khổ và đi qua quá trình làm thế nào chúng tôi có ý tưởng này và biến nó thành một trang web thực sự chúng tôi có thể sử dụng. Chúng tôi sẽ bắt đầu bằng cách phá vỡ các trang web xuống. Cũng giống như bạn đã làm trong CS50, bạn muốn suy nghĩ về các thành phần thực tế mà đi vào trang web này là gì. Về cơ bản biến nó từ một ý tưởng mà chỉ là sắp xếp của một khái niệm trừu tượng vào một thực tế, điều hữu hình mà bạn có thể làm. Chúng tôi bắt đầu bằng cách hỏi một số câu hỏi. Trang web này là gì? Tại sao chúng ta làm cho nó? Nó là những gì sẽ được sử dụng cho? Đại loại như vậy. Trong trường hợp của Facebook Cát, chúng ta về cơ bản muốn có một trang web cho phép mèo mạng xã hội với nhau. Ý tưởng được rằng họ có thể đăng bài trên các bức tường của nhau, họ có thể đưa ra nhận xét, đại loại như vậy. Và đó là nơi chúng tôi đi vào các thành phần chức năng. Bây giờ chúng tôi có loại này khuôn khổ - chúng tôi có hồ sơ người dùng, chúng tôi có ý kiến, và chúng tôi có thể đăng bài. Có lẽ một ngày nào đó chúng tôi sẽ chảy đến thích và loại điều đó. Và chúng tôi loại muốn ưu tiên các tính năng này sẽ in Chúng tôi muốn nói như thế, không sao, nó thực sự quan trọng là mọi người đều có một hồ sơ cá nhân và tất cả mọi người có thể gửi trên các bức tường của nhau. Thứ đó, ý kiến ​​sẽ được tốt đẹp. Có lẽ sau này chúng ta sẽ chảy đến thích. Vì vậy, bạn muốn có một ý tưởng về những gì cơ bản để dự án của bạn và sắp xếp của một tính năng tổng quát hơn có thể được áp dụng sau đó là những gì. Bạn muốn loại có một danh sách cụ thể, nhưng các dự án mà bạn bắt đầu với không có được những dự án mà bạn kết thúc với. Nói cách khác, mọi thứ sẽ thay đổi trong khi bạn đang phát triển trang web, và bạn muốn rời khỏi phòng cho điều đó. Tôi sẽ biến nó cho Ben ai sẽ nói một chút về cấu trúc. [Ben] Tôi sẽ nói về mặt kỹ thuật hơn của phát triển web. Chúng ta hãy đi qua một số vấn đề cơ bản đầu tiên. Khi bạn đang làm một ứng dụng web, bộ phận chính mà bạn sẽ cần phải có là bạn sẽ có một số thứ đang diễn ra ở phía khách hàng - đó là, mã mà bạn đang trình duyệt có từ các trang web và JavaScript, HTML, CSS công cụ. Đó là tất cả về phía khách hàng. Bạn sẽ có mã khác chạy về phía máy chủ mà theo dõi tất cả các dữ liệu mà mọi người gửi cho bạn, quyết định ai để cung cấp cho những gì, những thứ như thế. Đây chỉ là một số thuật ngữ để các bạn đều quen thuộc với những gì chúng ta đang nói về. Ngoài bộ phận đó rất tốt để nghĩ về ứng dụng web của bạn về một vài thành phần riêng biệt. Khi bạn đang làm phát triển web một trong những điều mà bạn luôn luôn cần phải cố gắng làm là để giảm độ phức tạp. Phức tạp hơn mã của bạn là cơ hội nhiều hơn có làm lỗi, thì càng khó thay đổi sau đó. Vì vậy, nếu bạn có thể phá vỡ ứng dụng của bạn vào một số khu chức năng riêng biệt rằng sẽ - và bạn có thể giảm các loại số lượng giao tiếp giữa các khu vực - sẽ giúp bạn rất nhiều trong thời gian dài trong việc giảm lỗi. Được cụ thể, thường là người phân chia một ứng dụng web vào - đây là những loại từ buzz bây giờ, nhưng họ vẫn còn hữu ích. Bạn có thể đã nghe người ta nói về các mô hình, quan điểm, và bộ điều khiển. Mô hình là những dữ liệu thực tế mà ứng dụng của bạn sẽ đối phó với. Ví dụ, trong Cát của bạn Facebook, các mô hình của bạn sẽ được - bạn muốn có một mô hình cho các bài viết như thế, và một mô hình cho hồ sơ người dùng, công cụ như thế. Quan điểm của bạn là cách bạn thể hiện dữ liệu cho người sử dụng của bạn. Bạn có thể có 1 điểm để nhìn vào một bài duy nhất và tất cả các ý kiến và một cái nhìn khác nhau cho bức tường của bạn có một danh sách của tất cả các bài viết được chuyển đến bạn, và một cái nhìn khác nhau cho nguồn tin của bạn - công cụ như thế. Cuối cùng, bạn có bộ điều khiển đó là cơ bản khi người ta gửi cho bạn bài viết và bạn thực hiện cập nhật cho hệ thống back-end của bạn, bạn tăng một loạt các quầy, và bất cứ điều gì. Đó là những điều khiển của bạn. Tôi sẽ nói chuyện chủ yếu là về các mô hình. Xem mặt kỹ thuật không phải là khó khăn và vấn đề là nhiều hơn với thiết kế chúng Bộ điều khiển sẽ được cụ thể cho bất cứ điều gì bạn đang thiết kế. Nhưng có một số kỹ thuật khá Nói chung, bạn có thể sử dụng để làm cho mô hình của bạn đẹp hơn và dễ dàng hơn để làm việc với mà tôi nghĩ là rất hữu ích. Này chủ yếu có được về làm thế nào để đối phó với các dữ liệu các ứng dụng web của bạn một cách tốt đẹp. Các vấn đề chính với các mô hình được rằng họ sống trên máy khách và máy chủ và bạn phải tìm ra a) làm thế nào để có được chúng - tất cả những người có liên quan - từ máy chủ cho khách hàng, và b) làm thế nào để giữ cho chúng đồng bộ. Người dùng của bạn sẽ muốn làm cho một số nâng cấp. Họ sẽ muốn làm cho bài viết mới. Họ sẽ muốn như điều và các công cụ nếu bạn có thích. Đó là những thách thức kỹ thuật chính đối phó với các mô hình. Điều đầu tiên mà bạn sẽ muốn tự hỏi mình là loại dữ liệu đi trong mô hình này và những gì loại truy vấn chúng ta sẽ muốn làm - có nghĩa là, làm thế nào chúng ta sẽ xem xét các mô hình? Cho Cát Facebook ví dụ của bạn, bài viết của bạn là sẽ có một tác giả liên kết với nó, một số bài tường văn bản, và một người nhận bài tường. Và sau đó bạn có thể muốn truy vấn trong một loạt các cách khác nhau. Bạn sẽ muốn nhìn vào nó bởi người viết bài đó, bởi người nhận mà gửi, có lẽ do ngày họ đã được đăng. Nhưng nếu bạn đang đi để làm điều đó theo ngày, sau đó bạn phải thêm các lĩnh vực khác để bài viết của bạn khi nó được thực sự được đăng. Các 2 yếu tố - những dữ liệu bạn muốn sử dụng và làm thế nào bạn muốn để xem nó - bạn nên suy nghĩ về họ đầu tiên bởi vì họ phụ thuộc lẫn nhau, và nó sẽ khó khăn hơn để thêm chúng sau này. Có một số cân nhắc khác. Khi bạn đang suy nghĩ về cách bạn đối phó với các mô hình trên máy chủ những gì bạn muốn xem xét là - về cơ bản bạn muốn làm cho máy chủ như đơn giản càng tốt. Làm công cụ trên các mặt hàng nói chung là nhanh hơn nhiều nếu bạn có thể làm điều đó hoàn toàn trên máy khách mà không làm bất kỳ loại yêu cầu mạng. Ý tưởng là để làm càng nhiều của các truy vấn như bạn có thể trên máy khách. Vấn đề duy nhất với điều đó là nếu bạn yêu cầu tất cả các dữ liệu của bạn ngay từ đầu sau đó sẽ mất một thời gian để tải. Vì vậy, ý tưởng là để tấn công một trung hạnh phúc giữa có đủ dữ liệu trên máy khách mà bạn có thể làm hầu hết công việc của bạn có nhưng không chỉ lấy tất cả mọi thứ cùng một lúc để bạn có được thời gian tải rất chậm lúc đầu. Ví dụ, đối với dữ liệu con mèo của bạn có thể bạn sẽ muốn lấy một loạt các bài viết tường gần đây. Bạn sẽ không muốn lấy tất cả trong số họ bởi vì đó có thể trở lại một vài năm. Nhưng bạn không muốn lấy chúng cùng một lúc vì đó sẽ giới thiệu rất nhiều trên mạng. Nó thường khá khó khăn - một khi bạn có một cơ sở dữ liệu đang chạy - nó thường khá khó khăn để thay đổi những dữ liệu bạn có trong nó - có nghĩa là, thêm một cột cơ sở dữ liệu mới hoặc một cái gì đó - do đó, một chiến lược tốt thực sự là chỉ để giữ rất nhiều dữ liệu của bạn trong một blob văn bản - một blob JSON - JSON là JavaScript Object Notation - Lý do đó là hữu ích là bởi vì sau đó bạn có thể thêm các thuộc tính mới cho tất cả các đốm màu JSON mà không thay đổi cơ sở dữ liệu của bạn. Nhược điểm duy nhất đó là nếu bạn có một loạt các lĩnh vực mà bạn thêm vào sau này - như ẩn trong đó JSON blob - sau đó nó khó hơn để truy vấn họ trong cơ sở dữ liệu. Ví dụ, nếu bạn sau này - nếu bạn đã có mô hình bài viết của bạn mà chúng ta đã thảo luận trước đó chỉ với các tác giả, người nhận và các văn bản - bạn cũng có thể có một blob JSON và sau đó nếu bạn sau muốn thêm một lĩnh vực ngày bạn sẽ không phải thay đổi cơ sở dữ liệu của bạn. Bạn chỉ có thể thêm ngày để tất cả các lĩnh vực văn bản. Và sau đó bạn sẽ có thể nhìn vào những trên các mặt hàng, nhưng bạn sẽ không thể truy vấn họ ở phía máy chủ bởi vì nó ẩn bên trong văn bản. Các vấn đề khác mà bạn muốn suy nghĩ về là làm thế nào khách hàng của bạn và máy chủ của bạn sẽ giao tiếp. Bạn thường muốn giữ điều này như là đơn giản càng tốt. Bạn chỉ có thể có như một get-tôi-này yêu cầu dữ liệu, một tạo-một-mới-đối tượng điều, và một yêu cầu cập nhật-một tuổi-đối tượng. Và những tất cả sẽ được các URL khác nhau trên một máy chủ bạn - trình duyệt sẽ - bạn có thể sử dụng các yêu cầu AJAX cho tất cả các và một trong hai nhận hoặc đăng dữ liệu. Một lần nữa, cho Cát Facebook ví dụ của chúng tôi, bạn có thể có URL để có được một bài viết cá nhân, và bạn muốn có một URL để tạo ra một bài tường mới và có thể là một URL để tải lên hình ảnh cá nhân của bạn, công cụ như thế. Nhưng một lần nữa, đó là để tiền lấy hầu hết dữ liệu của bạn để bạn không cần phải giữ làm cho yêu cầu mạng. Vì lý do đó, bạn có thể không muốn có mà nhận được yêu cầu cá nhân cho một bài duy nhất, và thay vào đó bạn sẽ chỉ muốn 1 nhận được yêu cầu cho toàn bộ bức tường. Và sau đó nếu bạn đang cố gắng để cân bằng bởi vì - này cũng sẽ phụ thuộc vào ứng dụng của bạn. Bởi vì nếu bạn đang mong đợi rằng người ta chỉ có 10 hoặc 20 bài viết tường rằng sẽ tốt đẹp. Nhưng nếu bạn đang mong họ sẽ có hàng ngàn sau đó yêu cầu rằng sẽ mất nhiều thời gian, và do đó bạn có thể muốn thêm một tham số được-tất cả các bài viết-từ. Cho tất cả các bạn có thể sẽ muốn đồng bộ dữ liệu của bạn trong JSON - JavaScript Object Notation. Khá nhiều mỗi ngôn ngữ đề với JSON rất tốt. JQuery có chức năng này getJSON tốt đẹp mà sẽ làm tất cả các công việc khó khăn cho bạn. Và trên PHP cũng có chức năng thông tin liên lạc JSON rất tốt đẹp. Vì vậy, có lẽ đó là định dạng tốt nhất để gửi mô hình của bạn lại. Như một ví dụ về những gì chúng tôi đã nói chuyện về cho đến nay, đây là một ví dụ cho dòng chảy ứng dụng Facebook Cát của bạn. Nó bắt đầu với yêu cầu URL của trang web cơ sở trình duyệt của bạn. Các máy chủ có thể sẽ gửi qua HTML tĩnh và một số JavaScript và CSS. Nó thường tốt nhất là không làm bất cứ vẽ trên máy chủ. Có thể bạn không muốn - những gì các máy chủ không được làm ở đó sẽ xuống danh sách các bài viết tường và tạo ra một số HTML cho mỗi một và gửi mà hơn. Nó thường là tốt nhất để làm điều đó trên các mặt hàng bởi vì nếu không mỗi khi bạn muốn vẽ lại một cái gì đó, bạn phải thực hiện một yêu cầu máy chủ. Và rất nhanh chóng cung cấp cho bạn rất nhiều chi phí. Nó thường là tốt nhất chỉ để gửi xuống tàu tĩnh HTML và sau đó JavaScript và CSS mà sẽ làm việc vẽ trên các mặt hàng. Ngay sau khi những thứ đó đến, sau đó bạn có thể có - trong JavaScript - bạn có thể làm cho các yêu cầu dữ liệu tường và các công cụ như thế, và sau đó máy chủ được về cơ bản chỉ làm các truy vấn cơ sở dữ liệu và kiểm tra quyền truy cập. Điều quan trọng duy nhất là nó không có thể gửi qua một số người dùng khác bài viết tường rằng bạn không được phép để xem. Nó về cơ bản có thể là một lớp truy cập rất mỏng để cơ sở dữ liệu, và sau đó tất cả các hiển thị dữ liệu - tất cả các quan điểm và các công cụ - những người có thể xảy ra trong trình duyệt của bạn, và sau đó khi bạn muốn thực hiện một bài hoặc một cái gì đó bạn chỉ cần gửi một yêu cầu khác. Ngoài ra còn có một số công cụ ưa thích bạn có thể làm trên đầu trang này. Về thông tin cụ thể hơn về kỹ thuật, phát triển ở đồng bằng JavaScript có thể là một chút đau đớn, do đó, có một số thư viện và công cụ mà sẽ giúp bạn rất nhiều với điều đó. Tôi nghĩ rằng tất cả các bạn đã có thể nghe nói về jQuery mà làm cho làm rendering HTML và thao tác dễ dàng hơn nhiều - có rất nhiều chức năng ưa thích cho phai trong và ngoài, và làm hình ảnh động vụt qua. Ngoài ra còn có thư viện này được gọi là Underscore.js. Nó có rất nhiều chức năng hữu ích hữu ích, công cụ mà bạn mong chờ JavaScript để có rằng nó thực sự doesnt - những thứ như xáo trộn một mảng, loại bỏ bản sao từ một danh sách, hoặc làm phẳng một danh sách liệt kê. Đây chỉ là một mẫu mã nhỏ. Gạch dưới có một tấn của các chức năng tốt đẹp mà bạn muốn bạn sẽ có tất cả các thời gian. Và sau đó có hơn 1 thư viện mà tôi muốn dành một chút thời gian trên gọi là Backbone.js vì Backbone thực sự giúp bạn đối phó với các mô hình trên các mặt hàng và rất nhiều sự nhầm lẫn rằng nó có thể gây ra. Xương sống mang đến cho bạn khái niệm này của các mô hình và bộ sưu tập trong JavaScript mà về cơ bản chính xác như các đối tượng JavaScript trong mảng JavaScript nhưng họ có sự kiện khi bạn thay đổi các thuộc tính của họ. Cũng giống như trong JavaScript, bạn có thể có một sự kiện khi một nút được nhấp chuột hay một cái gì đó các mô hình Backbone và bộ sưu tập Backbone sẽ phát sóng những thứ như khi họ thay đổi. Điều đó có nghĩa rằng bạn chỉ có thể viết một cái gì đó giống như đoạn mã này ở đây - này nói, bất cứ khi nào bạn thêm bất cứ điều gì để các bài viết mảng bạn vẽ lại toàn bộ bức tường. Và điều này có thể nói bất cứ khi nào số một của bài viết của thích thay đổi, bạn thông báo cho người dùng rằng ai đó thích bài viết của họ. Hoặc bất cứ khi nào bất kỳ tài sản của một bài thay đổi bạn vẽ lại bài. Công cụ như thế sẽ tiết kiệm tấn phức tạp bởi vì nếu không nếu bạn không có một số khuôn khổ như thế này thì mỗi lần trong mã của bạn mà bạn thay đổi bất cứ điều gì về một bài, bạn phải nhớ mình để gọi tất cả các chức năng làm và các công cụ như thế, và nếu bạn muốn thêm một cái gì đó mới xảy ra mỗi khi bạn sửa đổi một bài bạn phải đi qua mọi nơi trong của bạn mã mà bạn sửa đổi một bài và thêm rằng điều mới. Một khuôn khổ như thế này sẽ loại bỏ rất nhiều mà thông tin liên lạc giữa các lớp mà làm cho mã của bạn phức tạp và khó khăn để duy trì. Có một chút về quan điểm cũng có. Tôi sẽ để lại hầu hết các này đến Billy vì họ về mặt kỹ thuật không phải là rất khó khăn. Sử dụng jQuery cho quan điểm của bạn. Đó là thực tế như một điều cần thiết vào thời điểm này. Nó chỉ làm cho mọi thứ dễ dàng hơn nhiều. Có rất nhiều các thư viện. Nếu bạn đã phức tạp các yếu tố giao diện người dùng, nếu bạn muốn một điều tự động hoàn tất hoặc thích một trong những ưa thích nhiều bộ chọn - nếu bạn muốn bất cứ điều gì như thế, bạn nên có lẽ chỉ cần tìm kiếm xung quanh và bạn có thể tìm thấy một thư viện tốt sẽ làm những gì bạn muốn. Billy sẽ giải thích thêm về các bộ phận thực sự khó khăn quan điểm. Ngoài ra, như một mặt lưu ý, đường trục có một số chức năng để làm điểm giao tiếp độc đáo với mô hình - nhìn vào tài liệu hướng dẫn cho tất cả các thư viện, thực sự. Chỉ cần nhìn vào các tài liệu. Họ rất tốt bằng văn bản và dễ làm theo. Nói chung, bạn có thể khá nhiều chỉ Google nếu bạn có vấn đề. Có rất nhiều người sử dụng chúng. Tôi nghĩ rằng đây là một lưu ý cuối cùng. Cũng có một số điều cao cấp hơn mà bạn có thể làm nếu bạn đang tìm kiếm để làm cho ứng dụng web của bạn thêm tuyệt vời. Bạn có thể làm - các đặc điểm kỹ thuật HTML5 mới có rất nhiều thứ lạ mắt bạn có thể làm. Lưu trữ địa phương - đó là bạn có thể lưu trữ dữ liệu trong trình duyệt - thay vì phải quay trở lại và kiểm tra nội dung các máy chủ cho tất cả mọi thứ, bạn có thể giữ một số của nó trên máy khách và thậm chí cho phép người - trong một số trường hợp thậm chí có thể cho phép bạn sử dụng các trang web offline. Có điều này được gọi là WebSockets mà là một loại khác nhau của truyền thông mạng nơi thay vì chỉ bạn thực hiện một yêu cầu, bạn nhận được phản ứng và bạn đang làm, bạn tiếp tục mở một kết nối đến máy chủ và vì vậy bạn có thể làm những việc như cập nhật thời gian thực. Vì vậy, nếu bạn đang cố gắng để làm cho một ứng dụng chat, bạn có thể sử dụng WebSockets để giao tiếp qua lại do đó bạn sẽ không phải tiếp tục yêu cầu, "Oh, máy chủ, có ai gửi cho tôi một cuộc trò chuyện?" mỗi 10 giây hoặc một cái gì đó. Ngoài ra còn có một tính năng HTML5 thú vị mà bạn có thể làm cho nó trông giống như URL của trang đang thay đổi mà không bao giờ phải thực sự lại nó. Bạn có thể sử dụng lại và chuyển tiếp nút mà không làm một loạt các yêu cầu mạng. Công cụ như thế là thực sự hữu ích trong việc làm cho nó nhanh chóng nhưng cũng làm việc như một ứng dụng web nên. Ngoài ra còn có điều này được gọi là CoffeeScript. CoffeeScript là một ngôn ngữ khác nhau, trên thực tế, đó biên dịch xuống JavaScript. Bạn sẽ viết tất cả các mã trong CoffeeScript, và sau đó bạn chạy trình biên dịch này, và nó phun ra một tập tin JavaScript mà bạn có thể bao gồm trong trang web của bạn. Lý do mà CoffeeScript là tốt đẹp là bởi vì nó giúp loại bỏ rất nhiều các trường hợp lạ mà JavaScript có nơi bằng bằng, và bằng bình đẳng làm những việc khác nhau, hoặc muốn - nó có cú pháp đẹp hơn để đối phó với mảng và chức năng. Đây là một đoạn nhỏ của CoffeeScript sản xuất một danh sách của tất cả các hình vuông từ 10 ^ 2-1 ^ 2 theo thứ tự ngược. Như bạn thấy, CoffeeScript thường cho phép bạn thể hiện trong 1 dòng những gì sẽ mất 5 dòng mã JavaScript. Nó có thể làm cho mọi việc dễ dàng hơn nhiều. Đó là một chút của cú pháp mới để tìm hiểu ban đầu, nhưng nó chắc chắn sẽ làm cho bạn hiệu quả hơn trong thời gian dài. Bạn cũng có thể sử dụng các ngôn ngữ khác trên máy chủ hơn PHP - ngôn ngữ như Ruby, Python, hoặc thậm chí có một dự án gọi là Node.js mà sẽ cho phép bạn sử dụng JavaScript trên máy chủ. Cá nhân, tôi thực sự, thực sự ghét PHP. Tôi chỉ không thích làm việc với nó. Nếu bạn cũng nghĩ rằng đó là một cluge khủng khiếp của một ngôn ngữ, sau đó bạn có thể sử dụng một trong những thay thế. Nói chung, nếu bạn muốn làm một cái gì đó và bạn không thực sự biết làm thế nào bạn sẽ làm điều đó, chỉ tìm kiếm trên Internet. Có tấn và tấn tài nguyên đặc biệt trên - StackOverflow là một tuyệt vời nhất. Đó là trang web này, nơi các lập trình viên yêu cầu mỗi câu hỏi khác. Bạn có thể đã chạy vào nó nếu bạn đang gặp khó khăn về vấn đề bộ CS50. Và có tấn của các thư viện để làm khá nhiều bất cứ điều gì bạn muốn. Nếu bạn muốn làm một cái gì đó và bạn không biết làm thế nào để làm điều đó, đừng cho rằng đó là không thể. Chỉ cần nhìn xung quanh và bạn có thể tìm thấy một số nguồn tài nguyên tốt. Như một vị tướng quấn lên, các đồ ăn tay cầm chính là giữ cho mọi thứ đơn giản. Phức tạp hơn mã của bạn là ngay từ đầu và càng có nhiều bạn cố gắng và làm công cụ ưa thích, về lâu nó sẽ đi để có được một cái gì đó thực sự chức năng và khó khăn hơn nó sẽ được thay đổi sau đó. Vì vậy, làm những việc ngớ ngẩn, cách dễ dàng đầu tiên. Đi cùng với đó, không được sợ hãi của vứt đi mã cũ hoặc làm sạch nó lên rất nhiều. Nói chung, một khi bạn thực sự có một cái gì đó làm việc, nó dễ dàng hơn để suy nghĩ về hơn khi bạn vẫn còn ở giai đoạn đầu làm thế nào để tôi đặt này tất cả cùng nhau. Cách tốt nhất để làm cho thiết kế ngớ ngẩn nhất có thể hoạt động và sau đó cải thiện nó lặp đi lặp lại hơn là cố gắng để có được tất cả mọi thứ ngay lần đầu tiên. Về bộ phận client-server, cố gắng và giữ cho máy chủ của bạn rất đơn giản - chỉ là một cơ sở dữ liệu và một số xác thực và không làm bất kỳ công việc khó khăn đó. Làm tất cả các công cụ phức tạp của bạn trên các mặt hàng trong trình duyệt trong JavaScript như nhiều như bạn có thể. Nhìn xung quanh cho các thư viện mà làm cho cuộc sống của bạn tốt hơn. Luôn luôn tốt hơn để sử dụng mã người khác đã viết nếu bạn - và không viết nó cho mình. Có rất nhiều thứ trên Internet. Google là người bạn tốt nhất của bạn. Google là người bạn tốt nhất của lập trình viên. Yeah, chắc chắn không sợ phải nhìn xung quanh cho các công cụ. Được rồi. Và giao cho Billy. [Billy] Trên thực tế, trước khi tôi bắt đầu với một số công cụ thiết kế, không ai có bất kỳ câu hỏi Ben về bất cứ điều gì ông nói về? Được rồi, tốt. Một lần nữa, cho chúng tôi biết nếu bất cứ điều gì không rõ ràng hoặc nếu bạn muốn chúng tôi đi qua một cái gì đó nhiều hơn một chút. Tôi sẽ lùi lại một bước và nói về những phần cơ bản hơn của thiết kế. Bến đề cập đến mô hình được gọi là - xin lỗi, mô hình hệ thống điều khiển xem được sắp xếp của các khía cạnh kỹ thuật, vì vậy tôi sẽ xem xét quan điểm cụ thể, và tôi sẽ bắt đầu với cách bạn muốn thiết kế một cái nhìn có vẻ tốt đẹp. Đây là loại một mẫu thực sự cơ bản cho Cát của chúng tôi Facebook. Tôi nghĩ rằng có một số nguyên tắc cơ bản trong thiết kế giao diện người dùng hiện đại có giá trị lại tăng cao. Bạn có thể nhận thấy có rất nhiều không gian màu trắng trên tất cả các trang, nhiều chỗ cho mọi thứ. Không cảm thấy như bạn phải dẹp mọi thứ vào một trang. Bạn muốn để lại rất nhiều phòng mở, và nếu bạn đi đến hầu hết các trang web hiện đại bạn sẽ thấy có màu trắng ở khắp mọi nơi. Có màu trắng ở những nơi bạn sẽ không mong đợi. Bạn có bảng màu này, và đó là khôn ngoan ngay từ đầu để lựa chọn một bảng màu mà bạn sẽ làm việc với và phát triển. Bạn cũng có - nó giúp để lựa chọn một kiểu chữ, và cách mà bạn đang làm việc với các loại các nguyên tắc cơ bản cụ thể của thiết kế. Bạn có loại của bạn, bạn có màu sắc của bạn, và sau đó bạn có thể loại phù hợp với tất cả mọi thứ khác trong khi cần thiết. Vì vậy, như tôi đã nói, với màu sắc của bạn, bạn muốn sử dụng màu sắc táo bạo của màu sắc của bạn ít. Tiêu đề là tốt đẹp. Nút là tốt đẹp để có, màu sắc sặc sỡ thực sự lớn. Nhưng nói chung, nếu bạn có một trang web có màu sắc ở khắp mọi nơi, tất cả nhìn chằm chằm vào mặt bạn, nó chỉ trông lộn xộn, và nó không tốt. Bạn muốn thường sử dụng màu sắc ánh sáng. Cố gắng, một lần nữa, chọn một màu sắc khá mạch lạc. Bạn có thể có những splashes ít nhiều màu sắc - có thể trông khá đẹp, nhưng bạn muốn sử dụng chúng khá ít. Như tôi đã nói, bạn muốn được tối thiểu. Ít hơn là hầu như luôn luôn nhiều hơn. Nếu bạn có thể hiển thị một cái gì đó hoặc không hiển thị một cái gì đó, và bạn loại không chắc chắn liệu nó cần phải có theo mặc định - có lẽ bạn đang tắt tốt nhất để lại nó ra. Bạn luôn có thể thêm nó vào sau đó. Yeah, giữ cho mọi thứ đơn giản. Nhưng quan trọng nhất, bạn muốn xem xét nhiều mẫu thiết kế. Đừng nghĩ rằng khi bạn thực hiện một trang web, bạn có nó trong đầu của bạn mà bạn sẽ làm cho các trang web trong một cách nào đó, và nó sẽ trông giống hệt như thế này. Nó sẽ có tiêu đề màu xanh ở đầu trang và thanh bên màu xanh và sau đó là điều phụ tiêu đề màu vàng. Bạn muốn thực hiện nhiều mẫu. Bạn có thể - nếu bạn tốt với hình ảnh cửa hàng, bạn có thể mở mà lên và loại thiết kế một trang web như bạn muốn nó để xem xét. Nếu không, bạn chỉ có thể sử dụng bút và giấy, nhưng xước lên nhiều thiết kế. Bạn muốn cơ bản có một thiết lập nơi mà bạn có rất nhiều thiết kế khác nhau, và nếu một kết thúc làm việc, thì đó là tuyệt vời. Nếu một kết thúc không, sau đó bạn luôn luôn có một số khác chuyển sang. Nói chung, không cảm thấy như bạn nên hạn chế để bất cứ điều gì thiết kế ban đầu bạn quyết định. Thiết kế rất biến, và một phần của tầm quan trọng của mô hình hệ thống điều khiển xem là bạn có thể trao đổi trong và ngoài quan điểm khác nhau mà bạn muốn. Bạn có thể gây ảnh hưởng đến dữ liệu một cách, và sau đó quyết định, oh, trên thực tế, điều đó không làm việc tốt. Tôi nghĩ rằng đó là loại quá phức tạp hoặc có một phần ở đây mà không thực sự làm việc, vì vậy tôi chỉ cần đi để hoàn toàn từ bỏ quan điểm này và trao đổi trong một hoàn toàn mới. Chúng ta vẫn có thể sử dụng các mô hình cũ và các bộ điều khiển cũ. Chúng ta có thể làm tất cả mọi thứ trên máy chủ và khách hàng như chúng tôi sẽ trước. Nhưng làn sóng thực tế của dữ liệu được hiển thị là có được hơi khác nhau. Theo như thực sự thực hiện thiết kế mà bạn muốn, một khi bạn có một vài thiết kế phác thảo trên giấy hoặc trên hình ảnh cửa hàng hoặc bất cứ điều gì, có một số công cụ được tạo sẵn cho bạn. Đầu tiên bạn rất quen thuộc với đó là HTML, PHP, hay bất cứ điều gì ngôn ngữ mà bạn đang sử dụng chỉ để mã các trang tĩnh trên trang web của bạn. Bạn đã làm việc rất nhiều với HTML mà loại cung cấp cho bạn các thẻ mà bạn có thể đưa mọi thứ vào, và về cơ bản đó là một cách tổ chức nội dung của bạn. Ví dụ, bạn có tiêu đề lên đó, vì vậy bạn sẽ có một thẻ tiêu đề, và nó sẽ có một số văn bản bên trong của nó mà có lẽ sẽ là trong một thẻ khác. Sau đó, bạn có một bên có thể với một số liên kết khác nhau, và những người sẽ được tất cả trong các thẻ riêng biệt. Vì vậy, về cơ bản HTML tại trái tim của nó là một cách để phân chia trang như thế nào bạn cuối cùng muốn định dạng nó. Vì vậy, một lần nữa, bạn đã nhìn thấy rằng trước. Bạn đang khá thoải mái với làm việc với nó bây giờ cho rằng bạn đã thực hiện các pset cuối cùng hy vọng, để nên có vấn đề. Sau đó, bạn có CSS ​​mà về cơ bản xử lý tất cả các khía cạnh của thiết kế tĩnh. Nó sẽ xử lý tất cả các màu sắc, tất cả các vị trí của các yếu tố khác nhau, nơi họ đi đối với nhau với, lớn như thế nào họ đang có, các loại khác nhau của positionings là bạn sẽ có - nói cách khác, bạn có thể có những thứ cố định để khi bạn di chuyển xuống họ ở lại, hoặc bạn có thể có những điều liên quan đến các yếu tố khác. Tất cả các loại công cụ mà là trong CSS. Hơn nữa, bạn có thể làm đồ trang trí khác nhau, bạn có thể có màu sắc văn bản, hiệu ứng văn bản, tất cả các loại công cụ. Ben đã đưa ra một hội thảo thực sự tốt vào cuối tuần cuối cùng này, và vì vậy tôi chắc chắn sẽ kiểm tra xem ra nếu bạn có kế hoạch để được làm một số việc ưa thích với CSS. CSS3 thực sự là phiên bản mới nhất của CSS, và nó có thể làm tất cả các loại điều thực sự tốt đẹp. Nó có thể làm gradient, bạn có thể có tốt đẹp, góc tròn, bạn có thể làm tất cả các loại công cụ để làm cho trang web của bạn trông hiện đại hơn và lạ mắt. Công cụ tiếp theo là JavaScript và jQuery mà Ben nói chuyện một chút về, nhưng tôi sẽ có được một chút sâu hơn vào. JavaScript, như bạn đã làm việc với nó một chút, hoặc ít nhất là nhìn thấy nó trong bài giảng, là loại một cách tự động làm công cụ trong HTML. HTML, như bạn đã biết, là tĩnh, vì vậy khi bạn có HTML bạn không thể sửa đổi nó. Nhưng JavaScript, trong một số cách, là một cách để có thể sửa đổi HTML. Vì vậy, bạn có thể làm điều đó, và đó là tuyệt vời, nhưng JavaScript thực sự là một nỗi đau để làm việc với. Nó rất dài và tù và thậm chí những điều đơn giản đòi hỏi rất nhiều dòng mã JavaScript. Vì vậy, jQuery cơ bản là một thư viện JavaScript đơn giản hóa tất cả. Nó nói, không sao, nếu bạn muốn có một hộp vuông đến từ bên trái và dần vào trang để nó ở giữa, trong JavaScript mà có thể mất - Tôi không biết, một trăm dòng để làm, và nó sẽ là một nỗi đau, và bạn đi ra khỏi nó ghét tất cả mọi thứ về lập trình web. JQuery bạn về cơ bản có các yếu tố-dot-fade-in, hoặc một cái gì đó như thế. Chức năng như vậy, rất, rất đơn giản mà sẽ cho phép bạn làm tất cả các loại hình ảnh động mát mẻ và đó là điều mà. Một thứ khác mà những 2 có thực sự tốt cho chỉ được làm những việc năng động với các trang web. Vì vậy, thay vì chỉ có trang HTML của bạn - mà hiển thị một số dữ liệu nhưng không thực sự làm bất cứ điều gì - JavaScript và jQuery sẽ cho phép bạn có các nút mà bạn có thể click vào, và bạn có thể kéo các yếu tố và sắp xếp lại chúng và sắp xếp chúng, và có những yếu tố mới thêm vào hoặc gỡ bỏ. Bạn có thể thêm-xóa, loại điều đó. Vì vậy, jQuery làm nhiều thứ mát mẻ. Và Vipul thực sự cho một cuộc hội thảo về nó ngày hôm nay, tôi tin rằng, tại 5 giờ, vì vậy nếu bạn có thể dính vào xung quanh cho rằng lâu, mà có thể - 5 hoặc 4? Bốn. Xin lôi. Nó thực sự ngay sau đó, vì vậy tôi muốn giới thiệu bám xung quanh cho nó nếu bạn có thể. JQuery là siêu, siêu hữu ích, và bạn sẽ có thể làm rất nhiều điều thực sự tốt đẹp với nó cho khá nhiều bất kỳ dự án phát triển web. Bây giờ tôi sẽ nhận được vào loại một sự phân biệt. Tôi đã nói chuyện về cơ bản về giao diện người dùng. Giao diện người dùng chỉ việc thiết kế các trang web. Nhưng có loại một khái niệm đó là trải nghiệm người dùng. Hai rất khác nhau. Giao diện chắc chắn là một phần của kinh nghiệm. Nói cách khác, khi bạn đi đến một trang web, bạn nhìn vào giao diện. Đó là một phần của cách bạn trải nghiệm các trang web. Nhưng kinh nghiệm người dùng là nhiều hơn thế. Kinh nghiệm người dùng là về những gì ấn tượng mà người dùng nhận được từ trang web của bạn. Vì vậy, rõ ràng, giao diện là một phần trong đó. Và nó chắc chắn là một phần cần thiết, nhưng nó không đủ. Nói cách khác, nếu bạn có một giao diện đẹp, và nó khá và đầy màu sắc và tất cả điều đó, đó là tuyệt vời, nhưng nếu người dùng đi vào trang web của bạn, thấy một bố trí khá và nó bối rối bởi tất cả mọi thứ, không có ý tưởng làm thế nào để làm bất cứ điều gì, thì rõ ràng bạn đã thực hiện một thực sự trang web nghèo. Đó là loại nơi mà kinh nghiệm người sử dụng có in Tôi sẽ nói một chút về thiết kế UX - UX là viết tắt của kinh nghiệm người dùng - và loại làm thế nào bạn có thể chắc chắn rằng bạn có một trải nghiệm người dùng tốt. Điểm đầu tiên là bạn có thể thiết kế một trang web mà người dùng có thể làm bất cứ điều gì người sử dụng mà có thể muốn. Nhưng nếu người dùng không thể tìm ra cách để làm những điều - nói cách khác, nếu người dùng không có một ý tưởng tốt khi họ đi đến trang web của bạn, "Ồ, nếu tôi muốn cập nhật hồ sơ cá nhân của tôi, sau đó tôi nhấp vào nút này, hoặc nếu tôi muốn đăng bài trên bức tường của một ai đó, sau đó tôi đi đến bức tường của họ và nhấp chuột vào một hộp nhỏ. " Nếu người sử dụng không biết rằng, sau đó bạn không thực sự có hiệu quả có thực hiện chức năng một cách chính xác. Một phần của việc thực hiện một chức năng là những người sử dụng thực sự có thể sử dụng nó. Và nó có thể là bực bội - bạn có thể làm cho một trang web, và nó có thể làm tất cả các loại những điều tuyệt vời, nhưng sau đó bạn sẽ có người kiểm tra nó và nói, "Nó không thể làm điều này. Tại sao nó không thể làm điều này? "Và bạn sẽ nói lại với họ, "Vâng, nó có thể. Bạn chỉ cần có để đi vào thứ 7 trình đơn thả xuống này tối nghĩa trang đó chỉ được tìm thấy bởi một liên kết ở góc dưới bên phải "hay một cái gì đó. Rõ ràng, bạn không muốn điều đó. Bạn muốn nó được rõ ràng cho người dùng của bạn những gì họ đang phải làm, và nó phải là đơn giản và trực quan cho họ. Một điều mà bạn muốn cố gắng làm là, nếu một người nào đó sẽ đi đến trang web của bạn và 9 trong số 10 lần làm hành động A, và 1 trong số 10 lần làm hành động B, có thể bạn muốn tập trung kinh nghiệm của họ về hành động A. Nói cách khác, bạn muốn làm cho nó rất, rất rõ ràng làm thế nào để làm A. Một nên phía trước và trung tâm - hãy vào trang web, nhìn thấy nó, oh, nó phải có. Trong khi B rõ ràng là bạn muốn được rõ ràng, nhưng bạn có thể để nó nhiều hơn một chút trong nền. David cho một ví dụ tốt về điều này trong bài giảng, đó là hệ thống Boston T. Khi bạn đi đến Boston T và bạn muốn mua một vé, bạn có để có được thành 5 đơn trước khi bạn thực sự có thể mua vé cho $ 2, $ 2,50 giá trị, đó là phải mất bao nhiêu để đi tàu điện ngầm theo một hướng. Đó là một vấn đề bởi vì hầu hết những người đang đi tàu điện ngầm có lẽ chỉ muốn đi đến một nơi, mua vé của họ, có được trên ngay lập tức. Nó không có ý nghĩa rằng họ phải đi qua rất nhiều menu khác nhau để đến đó. Một trải nghiệm người dùng tốt hơn sẽ là một nút nhanh chóng trên trang đầu tiên mà chỉ nói: "mua một vé một chiều," và đó sẽ đưa vào tất cả các tiêu chuẩn giá trị mặc định, và sau đó nếu ai đó muốn mua một vé khác nhau hơn, họ vẫn còn, tất nhiên, có tùy chọn, nhưng bạn đã tối ưu hóa cho trường hợp sử dụng chung mà thực sự là quan trọng. Bạn có thể xem các ví dụ về điều này trên Facebook, phải không? Nếu bạn đi đến Facebook và bạn muốn gửi một trạng thái, nó phải ở trên cùng đó là những gì bạn thường muốn làm. Ngay sau khi bạn nhập vào trang, bạn có thể làm những điều phổ biến nhất mà bạn muốn làm. Nếu bạn muốn làm những điều hơi phức tạp hơn như, nói rằng tôi muốn đi đến bức tường của bạn tôi và gửi một hình ảnh trên đó - mà tôi sẽ muốn làm thường xuyên, nhưng không thường xuyên như đăng cập nhật trạng thái - do đó, trong trường hợp đó, tôi gõ tên của họ trong hộp ở đầu trang, click vào hồ sơ của họ, và sau đó, vẫn còn, đó là ngay ở đầu trang có một lần tôi đã nhận được để hồ sơ của họ. Một lần nữa, tôi đã tối ưu hóa ưu tiên cho các trường hợp nhất sử dụng chung. Một điều quan trọng là thường mọi người sẽ loại cố gắng làm được việc này bởi nói, được rồi, vì vậy tôi đã thực hiện các trang web và những người đang tìm nó khó hiểu, và đó là một vấn đề, phải không? Rõ ràng, tôi không muốn mọi người bị nhầm lẫn bởi nội dung của trang web của tôi. Tuy nhiên, cách giải quyết đó không phải là để có cái gì bật lên nói, hey, tôi sẽ dạy cho bạn cách sử dụng trang web này. Bước 1 - nhấp vào nút này. Bước 2 - đi đây. Chắc chắn, đó là một cách xung quanh nó - đó là một cách mà bạn có thể nói với mọi người phải làm gì, nhưng nó thực sự không phải là cách tối ưu. Nếu tôi đi đến một trang web và đột nhiên tôi ném bom với hướng dẫn này như muốn nói phải làm gì và đi đâu và tất cả điều đó, đó không phải là niềm vui đối với tôi. Nó không phải là một kinh nghiệm tốt cho tôi. Đó là loại một nỗi đau. Tôi muốn chỉ bắt đầu làm công cụ. Mọi người sẽ đóng cửa ra khỏi hộp thoại của họ, hoặc có được ra khỏi hướng dẫn, không biết phải làm gì, và sau đó phàn nàn vì bạn đã không nói với họ phải làm gì. Cách giải quyết này không phải là bằng cách cho bất kỳ loại hướng dẫn hoặc hướng dẫn - bất cứ điều gì như thế. Nhiều như bạn có thể tránh nó, bạn thực sự muốn thể hiện cho người dùng phải làm gì chỉ bởi bản chất của cách các trang web được đặt ra. Nói cách khác, nếu tôi đi đến Facebook mà không cần đăng nhập, điều đầu tiên mà tôi nhìn thấy trên trang chính - đó là một hộp đăng nhập ít. Vì vậy, duh. Tôi phải đăng nhập Đó là ngay tại đó. Trong khi đó, nếu tôi đi đến Facebook và tôi đã phải bấm vào một liên kết nhỏ ở phía dưới mà nói "đăng nhập" và phần còn lại của trang chỉ là một số loại hình ảnh hoặc một cái gì đó, Tôi sẽ không thực sự biết phải làm gì, phải không? Tôi sẽ bị nhầm lẫn. Vì vậy, nó có thể cho tôi đi xuống đó và nhấp vào nút đăng nhập, hoặc đăng nhập nút trong có thể là ngay ở đầu nơi tôi sẽ nhìn thấy nó. Bạn muốn luôn luôn được hiển thị cho người dùng những gì để làm, và cần được vốn có trong trang riêng của mình. Khi bạn đang suy nghĩ về thiết kế và chế nhạo lên những cách khác nhau thể hiện trang web của bạn, bạn thực sự muốn suy nghĩ về những gì người dùng sẽ được làm và làm thế nào bạn có thể cho họ phải làm gì. Một điều cuối cùng là thử nghiệm thực sự, thực sự quan trọng. Nó là rất tốt để có được một người nào đó - được một người bạn, có được một người nào đó bạn không biết ngay cả - người chưa bao giờ nhìn thấy các trang web trước khi sử dụng trang web. Bởi vì bạn đã làm việc trên các trang web trong nhiều giờ, bạn đã được nhìn chằm chằm vào nó, và bạn biết chính xác những gì để làm như vậy rõ ràng là bạn sẽ được kiểm tra những điều mà bạn đã làm việc trên và rằng bạn biết làm việc. Nhưng nếu ai đó xuất hiện và sử dụng các trang web đó đã không bao giờ sử dụng nó trước, đó là một kinh nghiệm độc đáo bởi vì bạn có một người không có kiến ​​thức của trang web đi sâu vào nó, vì vậy chúng sẽ có hiệu quả không có ý tưởng gì để làm hoặc những loại trường hợp sử dụng có mặt cho họ. Đó là tuyệt vời. Đó là duy nhất bởi vì chúng thực chất là một người có một khoảng trống cho một tâm trí. Họ có thể cho bạn biết nếu có điều gì là khó hiểu hoặc không rõ ràng. Họ có thể cung cấp cho bạn một ý tưởng về chính xác những gì trải nghiệm người dùng của trang web của bạn. Nó có thể rất khó để nói rằng bản thân mình, vì vậy chắc chắn tôi sẽ khuyến khích bạn như bạn đang phát triển các dự án của bạn - nếu bạn đang làm dự án dựa trên web - để có được những người sử dụng các trang web như đầu là bạn có một số loại demo chức năng. Bây giờ tôi sẽ nói một chút về cách quản lý một dự án phát triển web. Chúng tôi đã đi qua như thế nào bạn có thể làm mặt sau cấp kỹ thuật, làm thế nào bạn có thể thiết kế một trang web thực sự tốt, và đó là tuyệt vời nếu bạn đang làm việc một mình nhưng - ngay cả khi bạn đang làm việc một mình và đặc biệt là nếu bạn đang làm việc trên một đội, quản lý dự án sẽ trở thành một vấn đề lớn. Bạn đã nghe nói về loại quản lý dự án theo các hình thức khác nhau kể từ trường tiểu học khi bạn được cho biết làm việc theo nhóm. Bạn phải hợp tác, giao tiếp, tất cả điều đó. Rằng tất cả vẫn được áp dụng ở đây, nhưng có một số trường hợp duy nhất với khoa học máy tính mà bạn muốn được nhận thức, và bạn muốn chắc chắn rằng bạn xử lý tốt. Tôi sẽ nói chuyện đầu tiên một chút về đội bóng mà bạn sẽ được in Nó rất quan trọng để chọn đúng kích cỡ của một đội bóng được làm việc trên, và trong dự án cuối cùng của bạn tôi nghĩ bạn có tùy chọn để lựa chọn từ 1 đến 4 người, nếu tôi là chính xác. Bạn muốn chắc chắn rằng bạn không chỉ là lựa chọn số lượng người mà bạn muốn làm việc với vì họ là bạn của bạn. Bạn muốn chọn một đội bóng đó là một kích thước khá lớn và sẽ nhận được công việc làm. Có một off thương mại có nhiều người so với người ít hơn. Nếu bạn có nhiều người, công việc rõ ràng hơn có thể được thực hiện bởi vì bạn có rất nhiều người, rất nhiều mã, rất nhiều ý tưởng, và đó là tất cả tuyệt vời. Nhưng nó cũng đòi hỏi quản lý nhiều hơn và giao tiếp nhiều hơn nữa. Nói cách khác, nếu bạn có 4 người làm việc trên cùng một dự án và tất cả họ đang chỉnh sửa mã giống nhau, ít nhiều họ tất cả các loại cần biết những gì đang xảy ra vậy nó đòi hỏi bạn - nếu bạn thêm một số chức năng mới mà bạn loại phải nói với mọi người - tôi thêm này, Tôi thay đổi này theo cách này - đặc biệt là nếu bạn nhận được vào những thứ thực sự sâu như các mô hình và các bộ điều khiển được thực sự sẽ ảnh hưởng đến cách trang web của các công trình. Cả đội cần phải được nhận thức của nó, vì vậy bạn cần phải chắc chắn rằng bạn không chọn một đội bóng quá lớn đó là có được khó khăn để làm cho truyền thông. Bạn cũng không muốn chọn một đội ngũ đủ nhỏ mà bạn sẽ không có thể giao tiếp bởi vì nó chỉ là bạn. Một điều cần xem xét là sự cân bằng của nơi kỹ năng của người dân đang có. Thật tuyệt vời nếu bạn là tất cả các lập trình viên thực sự tốt. Nhưng nếu bạn là tất cả mọi người phía sau, sau đó trang web của bạn sẽ không nhìn rất tốt bởi vì bạn có cơ sở dữ liệu tuyệt vời này, và nó truy vấn tìm kiếm siêu nhanh - đó là rất tốt - nhưng khi bạn đi đến nó, nó giống như một trang web năm 1990 với màu đỏ và màu xanh ở khắp mọi nơi, và đó là không tốt, hoặc. Chú ý rằng Ben và tôi làm việc như một đội bóng là rất tốt đẹp bởi vì tôi là loại hơn ở cuối phía trước, cả hai chúng tôi tương tác giữa cấp, và Ben là thực sự tốt với back-end công cụ, để hoạt động thực sự tốt bởi vì chúng tôi có thể thiết kế trang web bất kỳ và về cơ bản các lỗ trong trang web đó mà cần phải được lấp đầy có thể được lấp đầy bởi một trong hai chúng tôi, hoặc có thể cả hai. Bạn muốn chắc chắn rằng không có lỗ hổng trong nhóm của bạn. Không sao nếu có một chút của chồng lên nhau. Nói cách khác, nếu bạn có 2 người được cả hai tốt với kết thúc trở lại, có thể được tốt là tốt bởi vì họ có thể giúp đỡ lẫn nhau với các vấn đề mà họ đang có. Nó có thể là một vấn đề nếu bạn chỉ có 1 người chịu trách nhiệm cho một điều gì đó và họ chạy vào một vấn đề, do đó bạn muốn có một chút của chồng lên nhau nhưng quan trọng nhất là bạn muốn chắc chắn rằng tất cả các lỗ hổng có thể được lấp đầy. Điều cuối cùng - và điều này nên được rõ ràng, nhưng nó thường không. Bạn thực sự muốn được vui vẻ. Điểm của dự án cuối cùng này trong CS50 và thường là điểm phát triển web ở chung không phải là để chỉ làm một công việc bởi vì nó cần làm. Bạn thực sự muốn được vui vẻ, và bạn muốn được làm một cái gì đó đó là động cơ thúc đẩy bạn làm việc trên đó. Nếu bất cứ điều gì bạn đang làm là một nỗi đau để ngồi xuống và làm việc trên, sau đó bạn không lựa chọn các dự án đúng. Bạn muốn chọn một cái gì đó mà bạn thấy thú vị, bạn thực sự muốn xem kết quả, bạn đang vui mừng khi bạn nhận được một ý tưởng mới về một cái gì đó bạn có thể làm - do đó, có tất cả các loại dự án đó mà tôi chắc chắn bạn có thể tìm thấy - mọi người đều có một cái gì đó thực sự sẽ âm mưu chúng nếu họ đang làm một dự án dựa trên web. Tôi sẽ nói lại nó ngay bây giờ. Nếu dự án của bạn có vẻ như là một nỗi đau và bạn không muốn làm việc trên đó, chọn dự án khác. Chọn cái gì đó thực sự truyền cảm hứng cho bạn. Ben đã đề cập khái niệm này lặp đi lặp lại một chút, và tôi muốn đi qua nó một chút. Nó thực sự quan trọng để làm việc trong giai đoạn lớn, nơi bạn có được một cái gì đó chức năng. Nó có thể là tuyệt vời nếu bạn có kế hoạch này cho một trang web đó sẽ làm A, B, và C, và cuối cùng nó sẽ đến đó. Nhưng bạn đang mắc kẹt trong giai đoạn này, nơi bạn đang làm việc trên đó và làm việc trên nó, nhưng không có gì là nhận được thực hiện. Bạn không có bất cứ điều gì để xem và một điều chức năng hữu hình. Những gì bạn thực sự muốn làm nhiều như nó có vẻ như loại một nỗi đau đôi khi để làm việc trên một cái gì đó và sau đó sắp xếp của nắp nó đi để nó ít nhất là ở mức ổn định, chạy phiên bản thậm chí nếu nó không có tất cả các tính năng bạn muốn. Và có thể có một số tính năng mà bạn thực sự muốn thêm nhưng bạn chỉ có thể bởi vì bạn muốn để có được trang web này đến một điểm chức năng. Và do đó bạn muốn loại có quá trình phát triển toàn bộ trông như thế. Bạn muốn bắt đầu một nơi nào đó chức năng - hoặc về cơ bản bắt đầu với không có gì - nhưng bạn muốn để có được một nơi nào đó rất cơ bản và chức năng. Và sau đó một lần nữa, làm cho một loại nhảy và nhận được một nơi nào đó chức năng một lần nữa. Bạn sẽ từ từ xây dựng, và nó có thể đi chậm hơn một chút hơn nó sẽ khác, nhưng về lâu dài nếu bạn liên tục bị mắc kẹt trong giai đoạn giữa mặt đất này, nơi bạn không thực sự có bất cứ điều gì làm việc, nó có thể là một sự thất vọng thực sự lớn để làm việc trên dự án của bạn bởi vì bạn luôn luôn rất gần để nhận được nó làm việc, và nó không bao giờ thực sự làm việc. Bạn muốn làm việc trong những giai đoạn lớn chức năng, và bạn cũng muốn làm một số phản ánh sau khi mỗi người. Nói cách khác, một khi bạn đang ở một điểm mà các trang web đang làm việc - nó không có tất cả mọi thứ bạn thích nhưng nó có một số điều - bạn muốn suy nghĩ, được rồi, là trang web này hoàn thành các mục tiêu mà tôi đặt ra để làm gì? Nói cách khác, nếu trang web sẽ làm X, là những gì tôi đã làm việc theo hướng X? Có phải tất cả các chức năng mà tôi muốn có? Và hơn thế nữa, là nó phục vụ mục đích chung mà tôi muốn? Nếu bạn đang tìm kiếm trang web của bạn đang bắt đầu rẽ theo một hướng khác hoặc có thể điều chỉ là loại không làm việc ra, nó có thể là thời gian để sang số một chút. Nói cách khác, nó có giá trị xem xét - nó có giá trị ném ra những ý tưởng nếu cần thiết và xem xét tôi thực sự làm việc hướng tới những gì tôi muốn. Tôi tin rằng đó là điểm tiếp theo của tôi. Đừng sợ phải từ bỏ ý tưởng. Chỉ vì bạn đã dành rất nhiều thời gian làm việc trên một tính năng và cuối cùng đã nhận nó làm việc nhưng nó thực sự là không tốt đẹp như - như nó không phải là hữu ích hoặc người sử dụng đang gặp khó khăn sử dụng nó - mà loại điều - không ngại vứt nó đi. Nó hút mà bạn đã dành rất nhiều thời gian làm việc trên nó, nhưng cuối cùng bạn không muốn có một trang web đó là loại để cùng nhau bởi những mảnh sắp xếp công việc nhưng không phải là phục vụ tốt. Ngoài ra, không ngại ôm hôn những ý tưởng mới. Nếu một người nào đó xuất hiện và nói, hey, trang web có vẻ thực sự mát mẻ nhưng nó sẽ không thậm chí là tuyệt vời nếu nó cũng đã làm điều này? Chỉ vì đó là một cái gì đó mà bạn không có ý định và một cái gì đó mà không có trong bạn thông số kỹ thuật, một cái gì đó mà bạn đã không đặt ra để làm, không ngại mang nó về và sau đó làm việc với nó. Bởi vì thường những ý tưởng mà bạn chạy với trong suốt quá trình phát triển kết thúc được các tính năng thực sự mát mẻ của trang web. Tôi đã nói điều này trước đây. Tôi sẽ nói lại một lần nữa. Xét nghiệm siêu, siêu hữu ích. Cố gắng để có được những người chưa bao giờ thấy các trang web trước khi đăng nhập vào và xem những gì đang xảy ra bởi vì họ không chỉ có thể kiểm tra tính hữu ích của các trang web và trải nghiệm người dùng, nhưng họ cũng có thể kiểm tra các chức năng trong những cách mà bạn có thể không. Nếu bạn thực hiện một số tính năng mà không một điều nào đó và bạn biết điều đó sẽ làm điều đó một cách chính xác cùng một điều mỗi lần duy nhất, đó là tuyệt vời. Nhưng nó thường có thể được khó khăn để chiếm trường hợp góc, nơi một sức mạnh người sử dụng gõ một cái gì đó mà bạn không mong muốn - một cách chính xác bởi vì bạn xác định các tính năng chính mình. Vì vậy, để có một người nào đó đi trên những người không có ý tưởng làm thế nào để sử dụng trang web và chỉ cần phá vỡ nó trong bất cứ cách thức mà họ có thể làm là thực sự hữu ích bởi vì bạn được một ý tưởng từ một quan điểm hoàn toàn khác nhau về những gì trên trang web của bạn đang làm việc và những gì cần sửa chữa. Cuối cùng, tôi sẽ nói về một số thông lệ tốt chung, và bạn đã nhìn thấy rất nhiều trong số này trong CS50, nhưng họ cũng thực sự, thực sự áp dụng trong một thiết lập dự án. Một là ý kiến. Luôn luôn nhận xét mã của bạn đặc biệt là nếu bạn đang làm việc trên một đội bóng lớn. Nó có thể được như vậy gây phiền nhiễu để chỉ có một khối khổng lồ mã mà một người nào đó được viết và có thể nó hoạt động, có thể không, nhưng bạn không có ý tưởng những gì nó làm, vì vậy bạn không có ý tưởng cho dù đó là hữu ích hay không hay nó nên được có hay không, và nếu bạn đang làm việc trên cái gì khác nó thậm chí còn có thể là bạn đang làm việc trên điều tương tự, vì vậy chỉ cần rất, rất cẩn thận để được ân cần của các đồng nghiệp của bạn và viết mã đó là tài liệu tốt. Bạn không cần phải đi xa như vậy để làm toàn bộ điều đó nếu bạn muốn tăng một truy cập có một bình luận nói rằng, tôi thêm 1 để truy cập này. Nó không phải là chi tiết, nhưng cho bất kỳ chức năng mà bạn đã bao giờ viết bạn cần phải có một số tài liệu về những gì chức năng mà chính xác không, những đầu vào của nó, và những gì nó phải trả lại. Bằng cách đó bạn có thể sử dụng các thành phần của người khác của trang web và bạn có thể làm việc hướng tới xây dựng một cái gì đó lớn. Một điều quan trọng là bạn muốn làm sạch thường xuyên-up. Mã bị lộn xộn. Không cảm thấy xấu nếu mã của bạn chỉ là hoàn toàn không thể đọc được và một mớ hỗn độn khổng lồ. Điều đó xảy ra trong phát triển web luôn. Bạn đang thêm tính năng mới, loại bỏ những cái cũ. Thứ là có được có đó không phải là. Đó là tốt, nhưng bạn muốn chắc chắn rằng để đối phó với điều đó thường xuyên. Bạn không muốn để cho nó xây dựng lên đến điểm mà bạn không thể tìm thấy bất cứ điều gì trong mã của bạn, và bạn không có ý tưởng gì bất cứ điều gì không. Đó là trường hợp với HTML. Đôi khi bạn sẽ kết thúc với các đối tượng không chứa bất cứ điều gì, và bạn sẽ muốn thoát khỏi những. Trong CSS, bạn có thể được đề cập đến yếu tố không còn ở đó nữa, do đó bạn muốn thoát khỏi mã. Trong JavaScript, bạn có thể loại bỏ một cái gì đó từ HTML. Vì vậy, bạn muốn chắc chắn rằng bạn đang luôn luôn làm sạch, làm những điều khá nhiều như bạn có thể vào một cách thường xuyên. Một điều thực sự hữu ích mà tôi không nghĩ được trình bày rất nhiều trong CS50 nhưng nó có giá trị nhận được vào là điều khiển phiên bản. Ý tưởng về điều khiển phiên bản là khi bạn về cơ bản theo dõi của tất cả các tiến bộ bạn đã thực hiện đối với trang web của bạn và nếu bất cứ lúc nào bạn nhận ra, oh, điều này đã làm việc trong khi trước đây nhưng nó không làm việc nữa, bạn có thể quay trở lại phiên bản trước và xem những gì đã thay đổi kể từ đó và đại loại như vậy. Cách chính để làm điều đó là với Git, và Git là toàn bộ loại này của hệ thống đó Tôi tin rằng Tommy MacWilliam cho một cuộc hội thảo về năm ngoái. Nếu bạn đi vào các cuộc hội thảo CS50 năm 2011, bạn có thể nhìn thấy buổi nói chuyện về điều đó. Ý tưởng của Git là cơ bản mà đều đặn bạn đang làm cho các cam kết đó là cách nói trang web là trong một phiên bản khá ổn định ngay bây giờ để Tôi đóng gói nó lên và gửi nó đi đến một máy chủ, và sau đó bạn có thể vào máy chủ và xem xét tất cả các phiên bản trước của mã của bạn và xem nó như thế nào tiến triển và tất cả những loại công cụ tốt. Vì vậy, đó là về cơ bản nó. Theo như phát triển web, chúng tôi vui mừng thanh xung quanh và trả lời bất kỳ câu hỏi như xa như trình bày của chúng tôi. Đó là nó. Cảm ơn. >> [Ben] Cảm ơn. [Vỗ tay] [Billy] Nhân viên, không ai có thắc mắc về những điều mà chúng tôi đã được bảo hiểm hoặc những điều mà chúng tôi đã không được bảo hiểm rằng họ đã hy vọng chúng tôi bao gồm? Chúng tôi muốn được hạnh phúc để trả lời những người. Bất cứ ai? [Khán giả] ưu và nhược điểm của việc sử dụng Ruby hay Python sử dụng là gì? [Ben] Câu hỏi đặt ra là, những ưu và khuyết điểm của việc sử dụng Ruby hay Python là gì thay vì như PHP. Những thuận là Ruby và Python là ngôn ngữ tốt hơn nhiều so với PHP. Ít nhất là trong quan điểm của tôi, và tôi nghĩ rằng trong rất nhiều ý kiến ​​của người khác là tốt. Chúng được thiết kế nhiều hơn để làm công cụ phức tạp, và ít hơn cho cùng chia nhau phần các trang web thực sự nhanh chóng với một chút nội dung động. Các khuyết điểm là rằng có một chút - có nhiều hơn một đường cong học tập để có được họ thiết lập. Đó là, như trong PHP, bạn chỉ có thể có một tập tin HTML và bạn viết ít hơn, dấu hỏi, và sau đó bạn viết một số mã, và sau đó bạn viết dấu hỏi, lớn hơn, và sau đó bạn đã thực hiện xong. Trong các ngôn ngữ khác như Ruby hay Python, bạn phải đi qua làm việc nhiều hơn một chút để có được những trang web đang chạy ban đầu. Ngoài ra còn có - ít nhất là nó được sử dụng phải là trường hợp - đó có tài liệu nhiều hơn có sẵn cho PHP chỉ vì có nhiều người sử dụng nó. Tôi nghĩ rằng đó không phải là nhiều của một vấn đề nữa. Có chắc chắn tài liệu rất tốt cho các công cụ như Ruby on Rails hoặc Django cho Python là tương đương. PHP là một trong đó mọi người được sử dụng trong nhiều năm, và bạn biết làm thế nào nó hoạt động. Ruby và Python là ít hơn một chút trưởng thành. [Khán giả] Nếu bạn đã phải lựa chọn giữa một trong số họ để tìm hiểu hoặc nhận, mà bạn muốn? Thành thật mà nói, tôi nghĩ rằng điều đó phụ thuộc vào mỗi người. Tôi xin lỗi. Câu hỏi đặt ra là bạn sẽ chọn ai đó để học hỏi? Tôi tìm thấy Python đẹp nhất cá nhân. Có rất nhiều người đã - tôi đã làm dự án dev web đầu tiên của tôi trong Python và Django. Có rất nhiều người thích Ruby on Rails cũng có. Có lẽ nhiều người biết Ruby on Rails. Thành thật mà nói, tôi sẽ chỉ đi với bất cứ điều gì những người xung quanh bạn biết để bạn có những người đặt câu hỏi. Câu hỏi đặt ra là - trên các máy chủ chia sẻ là nó rất khó để làm việc trên Python? Điều đó phụ thuộc vào lưu trữ của bạn. Có một số máy chủ web sẽ gửi Python thứ. WebFaction nào đó, phải không? WebFaction là một trong đó Billy và tôi đã sử dụng cho một số dự án. Họ thực sự tuyệt vời. Họ hỗ trợ hầu hết các ngôn ngữ. Nhưng đó là sự thật rằng PHP là nhiều hỗ trợ rộng rãi hơn. Vì vậy, nếu bạn đang bị mắc kẹt trên một máy chủ web mà chỉ làm PHP, đó là một lý do tốt để sử dụng PHP. [Khán giả thành viên] Tôi chỉ có vào học làm thế nào để truy vấn một số cơ sở dữ liệu, và tôi biết SQL của tôi là tất cả các nơi, nhưng tôi gần đây đã tiếp xúc với - và bạn đã chỉ ra. Bạn nhìn thấy JSON và cơ sở dữ liệu mở rộng. SQL của tôi vẫn còn ở khắp mọi nơi. Làm thế nào để bạn nhìn thấy điều đó xảy ra? Có sẽ là một xu hướng ngày càng tăng về mở rộng hơn (không nghe được)? Câu hỏi đặt ra là - Tôi nghĩ rằng có sẽ là một xu hướng cơ sở dữ liệu không SQL. Ví dụ, như MongoDB. Tôi nghĩ rằng chắc chắn là đúng. Lời khuyên của tôi đã được chủ yếu là mySQL liên quan đến đây chỉ vì mySQL là tiêu chuẩn công nghiệp. Cá nhân, tôi rất thích cơ sở dữ liệu mà không có schemos như MongoDB nơi bạn không có vấn đề, oh, tôi cần phải thêm cột khác. Khốn nạn cho tôi, như tôi phải làm bất cứ điều gì? Nó rất khó để làm điều đó trên mySQL, nhưng khi bạn có một cái gì đó như Mongo nó đẹp hơn nhiều. Những điều tốt đẹp khác về Mongo là hồ sơ của bạn thực sự là đối tượng JavaScript. Không có loại bước chuyển đổi mà bạn cần phải có những cơ sở dữ liệu hàng và biến chúng thành một đối tượng JavaScript và sau đó gửi chúng qua dây dẫn. Tôi nghĩ rằng công cụ như thế là có được rất, rất hữu ích cho phát triển web nhanh chóng trong tương lai. [Billy] Một cái gì đó tôi sẽ thêm mà chỉ là một điểm chung là không cảm thấy như bạn nên đã học được tất cả các ngôn ngữ chúng tôi đã thảo luận từ hội thảo của chúng tôi. Rõ ràng điểm này là để cung cấp cho bạn một ý tưởng về những gì trên mạng, và nếu bạn đang bị hấp dẫn bởi bất kỳ trong những điều chúng tôi đã đề cập, bạn có thể Google chúng và đọc lên trên chúng. Và như tôi đã đề cập, có một vài cuộc hội thảo mà đối phó với chính xác những điều này. Thậm chí còn có nhiều buổi hội thảo mà tôi đã không đề cập đến việc có thể nhận được vào công cụ này là tốt. Ý tưởng là nếu bạn muốn làm việc trên một cái gì đó, đây là những công cụ theo ý của bạn. Không cảm thấy choáng ngợp nếu bạn không thực sự chắc chắn những gì các công cụ thực hiện chính xác, nhưng biết rằng họ đang ra khỏi đó và bạn có thể làm cho sử dụng rộng rãi trong số họ bởi Google. [Khán giả] Những loại những thứ bạn cần phải làm để đảm bảo trang web của bạn có vẻ tốt trên các thiết bị di động? [Billy] các thiết bị di động là một chút khó khăn. Có 2 cách bạn có thể tiếp cận nó. Cách thứ nhất là bạn thực sự có một trang web di động. Nói cách khác, bạn thực hiện một số loại phát hiện ngay từ đầu khi trình duyệt đưa ra yêu cầu đến trang web của bạn mà sẽ nói: trở về điểm này - đó sẽ là xem cho máy tính để bàn hoặc máy tính xách tay các trình duyệt - và xem khác cho các thiết bị di động. Đó là một nơi mà quan điểm là thực sự tốt đẹp trong đó bạn có thể khá nhiều trao đổi các hai ra ngoài và có một giao diện làm việc thực sự độc đáo trên các thiết bị di động và có một hoàn toàn khác nhau mà công trình độc đáo trên các thiết bị trình duyệt. Vấn đề với đó là phải mất một thời gian dài bởi vì nó có nghĩa là mã hóa một giao diện hoàn toàn khác nhau. Một cách khác mà bạn có thể làm điều đó là - rất nhiều điện thoại hiện đại sẽ hiển thị các trang web và cố gắng làm cho họ như là một trình duyệt sẽ, và họ làm tốt nhất của họ. Bạn có thể loại cố gắng để ở ánh sáng vào lượng jQuery JavaScript bạn đang sử dụng mà có xu hướng được nơi mà mọi thứ có thể đi sai một chút. Đây là loại cách mà bạn nên sử dụng nếu bạn không có nhiều thời gian. Nếu bạn không có thời gian để làm việc trên một giao diện điện thoại di động, mà rõ ràng là lựa chọn tốt nhất của bạn. Tôi nghĩ rằng nói chung cho các dự án CS50, bạn sẽ muốn chọn một hay khác. Nói cách khác, bạn muốn làm một ứng dụng điện thoại di động hoặc bạn muốn tạo một trang web máy tính để bàn. Và sắp xếp của quyết định nơi bạn đi với điều đó. Nhưng nếu bạn muốn mở rộng nó ra sau đó, có thể đặt cược tốt nhất của bạn là để thực hiện một giao diện cho người kia. Tôi có một chút kinh nghiệm trong việc phát triển các trang web dựa trên WordPress. Tôi đã tổ chức một trang web cá nhân trên WordPress cho một lúc. Các loại của các khuôn khổ có thể được tốt đẹp mọi thứ chỉ là rất cơ bản. Thông thường bạn sẽ chỉ chạy vào rất nhiều vấn đề tùy biến mặc dù. Bạn sẽ muốn có một cái gì đó tìm một cách nào đó hoặc là một cách nhất định và bạn chỉ cần không có thể bởi vì nó cứng có dây vào hệ thống mà đây là cách bạn phải làm những việc mà có thể là một chút của một vấn đề. Kể từ đó tôi đã loại được nghiêng nhiều hơn để làm việc với các trang web từ mặt đất lên. Cho những thứ như cơ sở dữ liệu blog và đại loại như vậy nó thực sự không phải là khó để xây dựng một khuôn khổ. Nếu bạn đang thực sự kéo dài thời gian, bạn có thể sử dụng tất nhiên cái gì đó như WordPress hay đại loại như vậy cho một blog. Các loại điều mà các blog lưu trữ và làm không phải là thực sự khó khăn đủ mà nếu bạn đang chạy vào bất kỳ của những loại của sự vật, có lẽ bạn đang tốt nhất chỉ để thực hiện một phiên bản trong nhà. Tôi nghĩ rằng đó là về nó, do đó, nhờ một lần nữa cho tới. Chúng tôi thật sự rất thích nói chuyện với các bạn và hy vọng rằng bạn đã học được một số công cụ. [Ben] Chúng tôi vui mừng nói - chúng tôi phải đi nhưng chúng tôi vui mừng nói chuyện bên ngoài hơn nếu bạn có một câu hỏi. Nhờ một lần nữa. [Vỗ tay] [CS50.TV]