JASON Hirschhorn: Chào tất cả mọi người, với tuần 10. Đây là một tuần thú vị vì ngày mai là 1 đố, mà chúng tôi sẽ nhận được để trong một giây. Hôm nay trong phần, chúng ta sẽ đi trên một số tài nguyên cho các bài kiểm tra, và sau đó tôi sẽ trả lời bất kỳ và tất cả câu hỏi các bạn có. Và cuối cùng chúng ta sẽ kết thúc với một số vấn đề thực tế. Chúng ta có thể dành toàn bộ phần trả lời câu hỏi. Chúng ta có thể dành toàn bộ phần đi qua các vấn đề thực tế. Chúng tôi sẽ chỉ mở rộng để lấp đầy không gian và thời gian chúng ta có. Vì vậy, tôi đưa danh sách này lên mỗi tuần, nhưng đó là đặc biệt quan trọng trong tuần này. Để nghiên cứu, nếu bạn có không bắt đầu đã có, oh boy. Nhưng hy vọng bạn đã bắt đầu rồi. Và bạn đang đi qua các vật liệu và các nguồn lực được liệt kê ở đây. Tôi rất muốn giới thiệu một số trong số này. Đặc biệt, bài giảng là vô cùng quan trọng và hữu ích. Các study.cs50.net cung cấp một mồi lớn trên rất nhiều các chủ đề chúng tôi được bảo hiểm. Nó cũng có một số lớn thực hành các vấn đề. Và sau đó, Google là rất tốt, quá. Tôi không biết những gì bạn muốn sử dụng nó cho. Nhưng sử dụng Google, là tốt. Tiếp cận với tôi nếu bạn có bất kỳ câu hỏi, ý kiến, hoặc quan tâm. Xem qua các phiên xét slide từ đêm qua. Hoặc, nếu bạn có một thời gian, xem video. Họ cung cấp rất nhiều hữu ích các tài liệu và thông tin. Và cố gắng che nếu không phải tất cả, rất nhiều các chủ đề chúng tôi đã được bảo hiểm và bạn có thể thấy trên các bài kiểm tra. Phát biểu của các bài kiểm tra, mà sẽ có vào ngày mai. Nó dài 75 phút. Nhiều người trong số bạn đang dùng nó ở 1 giờ, và một số bạn dùng nó lúc 5:30. Cho thời gian bạn đang dùng nó và vị trí bạn đang dùng nó, hãy chắc chắn bạn hãy kiểm tra các tài liệu trên trang chủ CS50.net. Hãy nhớ rằng bạn có thể nhận được một trong 8 1/2 11 tờ để đi với bạn. Thông thường, mọi người không sử dụng này tấm ở tất cả trong các bài kiểm tra. Nhưng thực sự, nó là một cực kỳ công cụ học tập hữu ích. Vì vậy, đặt lại với nhau tấm đó là những gì Tôi đã dành lẽ ba hoặc bốn giờ làm khi tôi đang học cho CS50, và đó là dễ dàng hữu ích nhất cách tôi có thể nghiên cứu cho các bài kiểm tra. Vì vậy, ngay cả khi bạn có một số khác của nhân dân nghiên cứu hướng dẫn để xem xét và sử dụng như tài liệu tham khảo, tôi khuyên làm hướng dẫn nghiên cứu của riêng bạn, đặt những thứ cùng nhau. Mà thực sự giúp bạn tìm hiểu tất cả các tài liệu. Cuối cùng nhưng không kém trong phần này, sau khi các bài kiểm tra vào ngày mai có một nhiều bài giảng - thứ hai tới. Có một phần, chứ không phải tới Thứ ba trước khi Lễ Tạ Ơn, nhưng Thứ Ba sau đó. Chúng tôi sẽ gặp nhau trong một trận chung kết tạm biệt bên và cũng làm một số mát mẻ điều để các bạn vui mừng về tiếp tục nghiên cứu trong khoa học máy tính. Có một dự án nhiều hơn, thêm một công bằng, thêm một hackathon. Chúng tôi đang ở gần cuối CS50, đó là thú vị - nhưng cũng có thể, nếu bạn đang như tôi, một chút buồn. Trước khi tiếp tục, không ai có bất kỳ câu hỏi về những gì chúng tôi đã được bảo hiểm cho đến nay? OK, cũng hãy đi qua một số câu hỏi mà bạn có cho các bài kiểm tra và các chủ đề chúng ta có thể trang trải. Vì vậy, đây là một danh sách mà tôi đặt lại với nhau. Nó không có nghĩa là đầy đủ, nhưng hy vọng sẽ chạy bộ nhớ của bạn nếu bạn có một số câu hỏi về bất kỳ của các chủ đề, hoặc nếu bạn có câu hỏi về vấn đề thực hành từ các câu đố trong những năm qua. Tôi đã có một vài câu hỏi mà là gửi qua email cho tôi, nhưng tôi muốn tổ chức off trên những trong một giây. Không ai có bất kỳ câu hỏi, vấn đề họ không hiểu, câu trả lời họ không hiểu để chúng ta bắt đầu? Avi. ĐỐI TƯỢNG: Bạn có thể chỉ cần đi qua DOM và Ajax thực sự nhanh chóng? Như, những gì chúng ta cần phải biết hoặc phải hiểu về họ? JASON Hirschhorn: Tôi sẽ trả lời nói chung câu hỏi này, những gì tôi cần biết về cho chủ đề x? Bởi vì tôi có một cảm giác của nhiều bạn sẽ hỏi tôi rằng, hoặc là tò mò về điều đó. Vì vậy, trong phạm vi mà chủ đề là được đề cập trong bài giảng, hoặc phần, hoặc trên study.cs50.net, một vấn đề thiết lập, bạn nên quen thuộc với nó. Vì vậy, bạn không cần phải biết tất cả các loại của thẻ đó là có sẵn trong HTML hoặc tất cả các loại thuộc tính hoặc tài sản bạn có thể cho một cái gì đó trong CSS. Nhưng nếu bạn nhìn thấy nó trong một ví dụ bài giảng, nếu bạn thấy nó trong một vấn đề thiết lập, bạn có thể nên quen thuộc với nó, đặc biệt là những điều bạn thấy trong bài giảng. Vì vậy, chúng tôi đã thảo luận về tài liệu đối tượng mô hình một chút trong phần, nhiều hơn như vậy trong bài giảng. Bạn nên quen thuộc với nhiều của nó. Và bạn nên làm quen với Ajax với cùng mức độ. Chúng tôi chưa bao giờ thấy cực kỳ tiên tiến hoặc ví dụ phức tạp của Ajax, vì vậy bạn sẽ không được yêu cầu làm một cái gì đó cực kỳ phức tạp. Nhưng bạn có thể được yêu cầu, làm thế nào tôi thực hiện cuộc gọi Ajax sử dụng jQuery? Đó là cái gì bạn đã nhìn thấy một số lần trước, cả trong xem xét phiên và trong bài giảng, và nó chỉ đường hai-ish mã. Vì vậy, đó là một cái gì đó bạn nên làm quen với. Nhưng một lần nữa, cho tất cả các chủ đề này, nếu bạn đã nhìn thấy nó trước đây, nó là trò chơi công bằng. Và chúng tôi có thể yêu cầu bạn - rõ ràng, chúng tôi sẽ hỏi bạn những điều bạn đã không nhìn thấy trước. Mã hóa một cái gì đó bạn có không thấy trước đây. Mà không phải là để nói rằng bạn có không thấy các công cụ để giải quyết rằng vấn đề trước. Bạn đã thấy những công cụ này. Ví dụ, trên quiz 1, nếu bạn cần phải mã strlen. Chúng tôi đã không được mã hóa trước khi strlen. Nhưng bạn biết làm thế nào để sử dụng một vòng lặp, bạn biết làm thế nào để sử dụng nếu điều kiện. Bạn biết làm thế nào để viết các biến trong C. Nó sẽ được điều tương tự ở đây. Bạn sẽ không được yêu cầu làm bất cứ điều gì bạn không nhìn thấy trước, nhưng bạn có thể được yêu cầu, như, đặt một cái gì đó với nhau một cách mới lạ, hoặc giải quyết một loại khác nhau của vấn đề. Xin lỗi, đó không phải là cụ thể của bạn câu hỏi, nhưng tôi không thể trả lời về mỗi chủ đề duy nhất những gì bạn làm hoặc không cần biết. Nhưng cũng có thể, xin lỗi, điều cuối cùng về điều đó. Chúng tôi đã dành nhiều thời gian hơn đáng kể trên danh sách liên kết hơn, chúng tôi có trên Ajax. Bạn không sử dụng Ajax trong một bộ vấn đề. Một trong những tính năng nổi đó vấn đề thiết lập đó là danh sách liên kết. Và chúng tôi đã dành rất nhiều thời gian trong bài giảng và phần sử dụng nó. Vì vậy, tỷ lệ cược là danh sách liên kết sẽ xuất hiện nhiều hơn thường xuyên trên các bài kiểm tra hơn sẽ Ajax. Hoặc những câu hỏi phải làm gì với liên kết danh sách sẽ có giá trị nhiều điểm hơn. Vì vậy, bạn chắc chắn có thể tập trung và hẹp vào việc gì mà có nhiều khả năng đi lên bởi vì chúng tôi có dành nhiều thời gian cho chúng. OK bất kỳ câu hỏi nào khác không? Yeah. ĐỐI TƯỢNG: Chúng ta có thể đi qua việc sử dụng các chức năng ẩn danh trong JavaScript? Tôi là một chút nhầm lẫn là về điều đó. JASON Hirschhorn: Vì vậy, trong JavaScript - Tôi đang cố gắng để suy nghĩ làm thế nào tôi có thể viết này - vì vậy hãy thực sự mở ra mã này. Vì vậy, đây là mã mà chúng tôi đã làm tuần trước. Và bạn đã nhìn thấy điều này trước khi nếu bạn ở đây trong phần tuần trước. Hoặc bạn đã nhìn thấy một cái gì đó tương tự như trước đây. Nhưng bạn có thể nhìn vào dòng đầu tiên này. Đây là cách bạn bắt đầu - mọi người đang nhìn thấy điều này trước đây. Nếu bạn muốn đặt một số mã JavaScript, bạn đặt nó bên này, giả sử bạn đang sử dụng JQuery. Đây là câu nói, không làm bất cứ điều gì cho đến khi tải các tài liệu. Và sau đó, Curt, bạn sẽ thấy ngay tại đây chúng tôi đang làm một cái gì đó như thế này - chức năng mở dấu ngoặc, đóng cửa dấu ngoặc. Vì vậy, chúng tôi không cho điều này hoạt động một tên. Chúng tôi sẽ không để xác định chức năng này được cho là chạy và sau đó gọi nó là một loạt các lần. Chúng tôi chỉ nói rằng tài liệu này đã có một chức năng. Một vài điều cần làm. Và chúng tôi không muốn dành thời gian cho nó một tên hoặc lưu nó cho vĩnh viễn. Chúng tôi chỉ muốn chạy một số điều. Vì vậy, một chức năng sắp xếp vô danh của phục vụ mục đích đó. Khi bạn không sử dụng một cái gì đó hơn và hơn nữa, do đó bạn không cần để cung cấp cho nó một cái tên - bạn chỉ muốn sử dụng nó một lần - bạn sẽ chỉ nói chức năng, cho Ví dụ, trong trường hợp này, và bạn chỉ xác định một cái gì đó bạn có thể cho một cái tên. Như thế, chúng ta có thể kéo ra chức năng này và cung cấp cho nó một cái tên và sau đó gọi mà hoạt động ở đây. Nhưng chúng tôi không cần phải bởi vì chúng tôi không muốn lãng phí thời gian cho nó một cái tên hay lãng phí một cái gì đó trong không gian tên của chúng tôi. Và bạn sẽ thấy rằng rất nhiều. Ví dụ, chúng ta thấy rằng rất nhiều trong này mã, nhưng bạn đã nhìn thấy điều này trước khi bạn bấm vào một cái gì đó - chạy loại mã. Chúng ta có thể xác định các mã mà chúng tôi muốn để chạy khi chúng ta nhấp chuột, trong trường hợp này, ID này, như một chức năng riêng biệt và sau đó chạy chức năng đó. Nhưng trong trường hợp này, chúng tôi chỉ bỏ qua rằng bước và di chuyển nó vào đây và chỉ để xác định tất cả mọi thứ mà chúng ta muốn xảy ra và không cho nó một cái tên. Mà vẫn có thể không có đã trả lời câu hỏi của bạn. ĐỐI TƯỢNG: Không, nó không. Ý tôi là, tôi đoán tôi chỉ không thực sự được lý do tại sao nó sẽ là một hoạt động ở tất cả, mặc dù. Bởi vì nó không thực sự được gọi. Nó không thực sự có một cái tên. JASON Hirschhorn: Đó là một chức năng trong cảm giác rằng đó là một loạt các bước, như bạn sẽ đặt vào một chức năng. Và sau đó là lý do tại sao chúng ta gọi nó chức năng ẩn danh. Chúng tôi sẽ không để cho nó một cái tên. Chúng tôi sẽ không cố gắng để lãng phí đặt tên cho nó, nhưng chúng tôi có thể. Chức năng ẩn danh, bạn luôn luôn có thể cung cấp cho một cái tên. Vì vậy, ví dụ, mã này ngay tại đây, chúng ta có thể đặt mã này trong một chức năng và sau đó gọi chức năng này ở đây. Thay vào đó, chúng ta nói, chúng tôi sẽ không bận tâm với điều đó. Chúng tôi chỉ sẽ viết tất cả ở đây. Nó giống như đôi khi bạn đang viết một vòng bốn trong C - các bạn đã thấy điều này trước đây - có thể bạn lặp lại thông qua một forloop vào tôi bằng 0. Tôi là ít hơn strlen. Hoặc bạn đang trải qua một số mảng, bạn có thể tiết kiệm mảng chỉ số i trong một số biến. Và bạn sử dụng biến đó. Vì vậy, bạn không cần phải viết lại mảng khung tôi hơn và hơn và hơn. Và đó là loại giống như một biến giả. Nó không phục vụ nhiều mục đích khác hơn để làm cho mã của bạn một chút sạch hơn và dễ đọc hơn. Chức năng tương tự ở đây. Chỉ làm cho nó một chút dễ dàng hơn, nhưng chức năng không có sự khác biệt. Điều đó trả lời câu hỏi của bạn? ĐỐI TƯỢNG: Có. JASON Hirschhorn: OK .. Mario? ĐỐI TƯỢNG: Hôm qua họ thường đặt chức năng ngoặc sự kiện. Điều đó có nghĩa là cái gì? Hoặc là nó cho những thứ như rằng họ sẽ làm document.ready chức năng sự kiện. JASON Hirschhorn: Chúng tôi đã nhìn thấy điều này, và một lần nữa, đây là những điều nhỏ hơn có lẽ tôi không muốn chi tiêu quá nhiều thời gian trên. Bởi vì đôi khi tôi không muốn mọi người bị lốm đốm đó chúng không nghe nói về những điều mà nhiều. Nhưng chúng tôi nói chuyện một chút về xử lý sự kiện. Vì vậy, một cái gì đó xảy ra, và sau đó chức năng này được thực thi. Và sau đó chúng tôi cũng muốn biết một số chi tiết về những gì đã xảy ra trong sự kiện này. Vì vậy, suy nghĩ lại về vấn đề thiết lập 4. Đó có thể là cách dễ nhất để hiểu rằng trong thoát ra khỏi. Có một số mã - như một sự kiện sẽ xảy ra, nhưng sự kiện có thể có nhiều nghĩa. Nếu có thể có nghĩa là con chuột được nhấp, nó có thể có nghĩa là bạn nhấn một phím mũi tên, và cộng vân vân, vân vân. Nhưng đó là tất cả được lưu trong chung này điều được gọi là sự kiện. Và sau đó chúng ta có thể nói, là sự kiện này điều này? Hoặc đây là sự kiện điều này? Hoặc, những loại đã xảy ra với sự kiện đó? Vì vậy, đó là lý do tại sao bạn tạo biến có để lưu thông tin thêm về chính xác những gì đã xảy ra mà bạn sẽ muốn sử dụng trong các chức năng. Nhưng một lần nữa, đó là lẽ một trong những những điều ít quan trọng được siêu quen thuộc. OK, những câu hỏi khác có người có, hoặc ngại khối họ đã gặp phải trong khi xem xét? Chúng tôi sẽ trở lại vào danh sách đó. Những gì về các câu đố trong thực tế, nếu người đã có những người đã? Là những gì một số vấn đề vấp các bạn lên? Tôi biết một thực tế là năm ngoái bài kiểm tra là thực sự khó khăn. ĐỐI TƯỢNG: Bạn có thể giải thích những gì một cuộc tấn công SQL injection là? JASON Hirschhorn: OK, tuyệt vời. Vì vậy, chúng ta đã nói về điều này một chút. Có một bài thuyết trình về an ninh. Và một lần nữa, như tôi đã đề cập trước đó, đây là một sang một bên. Nhưng bạn sẽ bị thất vọng trên các bài kiểm tra khi bạn đọc một số hai điểm nhỏ câu hỏi, và bạn giống như, khi đã bao giờ tôi biết rằng? Tất cả những điều đó trong những bài giảng mà bạn không nghĩ rằng bạn cần biết, hoặc bạn có thể che đậy bởi vì họ không có để làm với các vấn đề tập hợp, những người sẽ có khả năng đưa ra một lần nữa trên các bài kiểm tra. Vì vậy, mát mẻ, những điều thú vị mà bạn chỉ cần nghĩ David đã nói cho bạn thưởng thức, ông đã nói với bạn để bạn có thể thưởng thức và để làm cho bạn chỉ là siêu vui mừng về việc học tất cả mọi thứ có học về khoa học máy tính. Những điều này cũng đi lên trên câu đố. Vì vậy, ngay cả những điều nhỏ mà không liên quan trực tiếp đến vấn đề của bạn thiết lập, như các bạn đã quen thuộc với từ Bài kiểm tra 0, có lẽ sẽ đi lên. Và đây là một ví dụ điển hình một cái gì đó. Vì vậy, một cuộc tấn công SQL injection là khi bạn nhận được một số thông tin từ người sử dụng và bạn muốn chèn nó vào một bảng sử dụng chèn câu lệnh SQL, nhưng bạn không vệ sinh đầu vào trước thời hạn. Vì vậy, rõ ràng là chúng tôi đã nhìn thấy Câu lệnh SQL. Tôi sẽ chỉ mở ra - chúng ta hãy đi - chúng tôi sẽ đi đến việc xem xét - Tôi nghĩ rằng, những người được bảo hiểm không? Tôi nghĩ rằng Samala đã làm. Vì vậy chúng tôi có thể nhận được - ĐỐI TƯỢNG: Nơi mà bạn đã tìm thấy điều này? JASON Hirschhorn: Vì vậy, nếu bạn đi đến CS50.net, câu đố, và sau đó bạn có thể di chuyển trên và nhận được slide so với phiên xem xét. Nhưng bạn có thể thấy đây là một ví dụ điển hình của một cuộc tấn công SQL injection. Chúng tôi có một số thông tin từ người sử dụng và họ cung cấp cho chúng tôi một chuỗi, và sau đó chúng tôi muốn chèn chuỗi vào một cơ sở dữ liệu. Nói chung là chúng ta sẽ làm vệ sinh mà đầu vào, có nghĩa là có một số nhân vật rất nguy hiểm. Ví dụ, trong chuỗi SQL, các báo giá - dấu nháy đơn hoặc dấu ngoặc kép - có nghĩa là một cái gì đó. Họ có nghĩa là kết thúc chuỗi này ở đây. Và do đó, nếu người sử dụng cung cấp cho bạn một đơn hoặc một giá gấp đôi, họ có thể cố gắng để đi lên truy vấn SQL của bạn và chèn một số nội dung xấu vào nó. Và nếu họ làm điều đó, họ có thể đạt được kiểm soát của cơ sở dữ liệu của bạn hoặc làm một số những điều mà bạn không muốn họ làm. Vì vậy, đó là lý do tại sao bất cứ khi nào chúng tôi thực hiện SQL truy vấn, chúng tôi làm vệ sinh đầu vào trước khi đưa nó vào cơ sở dữ liệu, mà nghĩa là chúng ta thoát khỏi những ký tự. Chúng ta sẽ nói về điều đó trong một giây. Nhưng câu chuyện dài ngắn, một SQL injection tấn công là nếu bạn không làm điều đó - nếu bạn không chăm sóc đầu vào họ đã cho bạn trước khi đưa bạn cơ sở dữ liệu, họ có thể, như bạn thấy xuống ở đây, chạy một truy vấn, trên thực tế - họ đặt trong mã của họ xuống đây và dòng chọn này xuống đây sẽ lựa chọn tất cả mọi thứ từ bảng bất kể những gì các mật khẩu được đưa ra. Bởi vì bạn có hay 1 bằng 1. Vì vậy, nó là cơ bản, câu chuyện dài ngắn, một cách để tiếp nhận các cơ sở dữ liệu. Câu hỏi đặt ra, sau đó, cho các bạn, là nơi trong p bộ 7 anh làm vệ sinh tất cả các đầu vào cho các truy vấn SQL của bạn? Nơi đã bước điều đó xảy ra? Nơi nào bạn ngăn chặn SQL injection các cuộc tấn công xảy ra trong p thiết lập 7? Yeah. ĐỐI TƯỢNG: Crypt? JASON Hirschhorn: Vì vậy, nó không được crypt. Chúng tôi đã không làm cho bạn làm điều này cho điều này vấn đề cụ thể được thiết lập, nhưng nó xảy ra trong các chức năng truy vấn. Chúng tôi thực sự đã viết nó cho bạn, và chúng tôi đã chăm sóc của vệ sinh đầu vào cho bạn. Nhưng trong những năm qua, học sinh đã có gõ đầu vào của chính mình. Trong p bộ 7, rất nhiều bạn - hãy để tôi mở một tập tin khác. Vì vậy, bạn sẽ nhận thấy ở đây rất nhiều người, trong vấn đề thiết lập 7, đã không gọi chức năng này trên dây. Chức năng này, htmlspecialchars, một lần nữa - chuỗi này có thể có một số điều trong HTML có nghĩa là cái gì khác. Như một cú đúp, một hình vuông, hoặc một góc khung có nghĩa là một cái gì đó trong HTML. Và do đó, nếu bạn in ra mà đến màn hình hoặc nếu bạn chỉ đi mà và in mà ra HTML của bạn, sức mạnh đó làm điều gì đó bạn không mong đợi. Vì vậy, htmlspecialchars đi qua tất cả những nhân vật có đặc biệt họp và thoát họ. Vì vậy, nó được in ra như các văn bản bạn muốn xem, chứ không phải là điều chỉnh các HTML của bạn. Chúng tôi gọi là chức năng mà trong tiêu đề. Và rất nhiều người quên gọi đó là chức năng trong code bạn đã viết. Vì vậy, ví dụ, nếu một tên chứng khoán đã có một khung góc trong đó và bạn quên để gọi chức năng này, góc độ đó khung có thể ném ra gì HTML của bạn như thế nào. Nhưng gọi chức năng này sẽ thoát mà để nó thực sự in ra như là một khung góc và không ném tắt mã HTML của bạn. Cùng một lý do chúng tôi đã nhìn thấy, đôi khi, chéo trước dấu ngoặc kép trong một dòng printf bởi vì chúng tôi không muốn dấu ngoặc kép xuống chuỗi. Chúng tôi muốn in chúng ra màn hình. Vì vậy, tất cả điều này là ý tưởng tương tự. Điều đó trả lời câu hỏi của bạn? ĐỐI TƯỢNG: Loại. JASON Hirschhorn: Bạn có có theo dõi? ĐỐI TƯỢNG: Tôi đoán SQL injection tấn công đã làm với điều đó không? Tôi không hiểu làm thế nào hai là có liên quan. Tại sao bạn sẽ làm specialchars? JASON Hirschhorn: OK, do đó SQL cuộc tấn công tiêm là khi bạn tiêm một số dây độc vào ai đó chương trình, và họ chỉ cần mang nó và chạy các truy vấn SQL với một chuỗi bạn cho họ. Như bạn thấy ở đây, mà có thể là có vấn đề. Vì vậy, cách bạn ngăn ngừa chống lại đó là bạn có chuỗi của họ mà họ cung cấp cho bạn - vì vậy chuỗi này ngay tại đây - và bạn vệ sinh nó. Bạn thoát khỏi tất cả những điều mà là khả năng có vấn đề. Vì vậy, bạn không giải thích chúng như một cái gì đó đó có nghĩa là một cái gì đó. Và một ví dụ về điều đó với HTML là chức năng này. Vì vậy, đó là ý tưởng tương tự ở đây. Và tôi đã chỉ cho các bạn khác ví dụ khi bạn đã thấy ý tưởng này trước đây. Thoát người dùng nhập vào trước khi in nó ra một màn hình hoặc đặt nó bên trong một câu lệnh SQL. ĐỐI TƯỢNG: Vì vậy, trong trường hợp này, người sử dụng là rối tung với các lập trình viên. JASON Hirschhorn: Có. Với tất cả các cuộc tấn công an ninh, đó là luôn luôn thường người sử dụng, hoặc ai đó, đang cố gắng để gây rối với bạn, các lập trình viên. Và đây là những cách bạn có thể ngăn chặn chống lại họ. ĐỐI TƯỢNG: Vì vậy, tôi có một câu hỏi về hàm băm. Quiz 1 từ năm 2011, có hai câu hỏi về băm một chiều. Và tôi đã chỉ tự hỏi điều đó có nghĩa. JASON Hirschhorn: OK, mà bài kiểm tra? 2011? ĐỐI TƯỢNG: Vâng. ĐỐI TƯỢNG: Câu hỏi 1? ĐỐI TƯỢNG: [nghe được]. Điều đó giống như băm mật khẩu. Đó không phải đưa mọi thứ - JASON Hirschhorn: trang gì là nó? ĐỐI TƯỢNG: Tôi nghĩ đó là 9 hoặc 10, hoặc cả hai. JASON Hirschhorn: Được rồi, đi trước, Curt. Bạn có thể trả lời trong khi chúng ta nhìn. ĐỐI TƯỢNG: Tôi nghĩ rằng nó nói về băm mật khẩu. Như, khi người nào đó nhập mật khẩu, bạn biến nó thành một điều được mã hóa. Đó là hash mật khẩu, đó là khác nhau từ một hàm băm đặt cái gì đó vào một bảng băm. JASON Hirschhorn: Hãy xem. Hãy để tôi kéo lên những gì họ cho là câu trả lời. Và sau đó chúng ta sẽ đi qua nó. Vì vậy, Curt đã đưa ra một ví dụ tuyệt vời của một một chiều băm. Khi chúng ta đã thấy trước đây, chúng tôi mất mật khẩu và biến - nhớ, trong bộ p 7, ai đó có thể có một mật khẩu đó chỉ là mật khẩu, nhưng sau đó nó được mã hóa vào một số điều thực sự lâu dài. Một chiều băm có nghĩa là nó là rất dễ dàng để đi từ một cách để người kia, nhưng nó rất khó để đi từ cách khác trở lại. Và do đó, bạn biết đấy, khi bạn đã kiểm tra mật khẩu của người dân trong vấn đề thiết lập 7, bạn sẽ có được của họ - như vậy, ví dụ, nói rằng họ muốn thay đổi mật khẩu của họ, bạn yêu cầu họ cho mật khẩu cũ của họ. Bạn mất mật khẩu cũ của họ. Bạn mã hóa nó. Và sau đó so sánh hai mã hóa chứ không phải là bản gốc unencrypting một, bởi vì nó thực sự khó để đi theo cách đó. Yeah. ĐỐI TƯỢNG: Làm thế nào sâu làm của chúng tôi sự hiểu biết về Telnet có được? JASON Hirschhorn: Nếu nó đã được đề cập một thời gian ngắn trong bài giảng, chỉ cần một ngắn sự hiểu biết. Một lần nữa, trở lại câu trả lời cho câu hỏi của Avi - những điều hơn xuất hiện, nhiều khả năng nó là bạn có được siêu quen thuộc với họ. Nếu họ đã chỉ ra trong bài giảng, đó chỉ là một nơi. Nhưng nếu họ đưa ra trong bài giảng, phần, và một vấn đề thiết lập, sau đó bạn có thể có được siêu quen thuộc với họ. Vì vậy, tôi có một câu hỏi từ trước đó về - đang là mùa thu năm 2010 - Bài kiểm tra 1, chúng ta hãy kéo lên - câu hỏi này trên ngăn xếp và hàng đợi, mà chúng tôi đã dành một chút công bằng của thời gian nói về trong bài giảng, thậm chí mặc dù chúng tôi đã không thực sự bao giờ đánh nó trong phần. Vì vậy, câu hỏi này được cung cấp cho bạn một loạt các lệnh và yêu cầu bạn những gì được in trong trường hợp này. Vì vậy, đây là một câu hỏi hoàn toàn hợp lý mà có thể được yêu cầu của bạn guys, và sau đó các bạn nên có thể trả lời nó. Vì vậy, tại sao bạn không nhìn vào nó trong 30 giây, và sau đó nếu ai muốn đề xuất câu trả lời cho tôi, và sau đó chúng ta sẽ đi qua nó. Được rồi, ai có câu trả lời 27 câu hỏi? Yeah. ĐỐI TƯỢNG: Có 1, 2, 3, 3? JASON Hirschhorn: Đúng vậy. 27 là 1, 2, 3, 3. Vì vậy, chúng ta hãy xem làm thế nào chúng ta có đó. Đầu tiên, chúng ta đang nói đến, nếu s là một hàng đợi, những gì được in? Vì vậy, một q là lần đầu tiên, ra trước. Chúng tôi đã nhìn thấy rằng trước. Chúng tôi nhìn thấy hình ảnh của người dân chờ đợi ở Apple Lưu trữ để mua một số sản phẩm. Những người đầu tiên trong là những người đầu tiên ra ngoài. Những điều đầu tiên trong hàng đợi là những điều đầu tiên ra. Vì vậy, nếu chúng ta đẩy một cái gì đó vào một hàng đợi, bạn nhấn 1, sau đó chúng tôi bật 1. Pop chỉ có nghĩa là đưa ra. Trong trường hợp này, chỉ cần mang một cái gì đó. Chúng tôi đưa ra các đầu tiên điều, đó là một 1. Vì vậy, chúng tôi sẽ đặt mọi thứ chúng tôi in xuống ở đây. Điều này không còn trong hàng đợi của chúng tôi. Sau đó, chúng tôi đẩy trên 2 và 3, và chúng tôi bật tắt điều đầu tiên. Một lần nữa, bởi vì đó là một hàng đợi. Vì vậy chúng tôi có được một 2, sau đó chúng tôi đặt trên một 3 và gọi pop một lần nữa. 3 chúng tôi là đầu tiên. Và sau đó chúng tôi đã có một bó toàn bộ những thứ khác và gọi pop. Nhưng một lần nữa, vì đây là một hàng đợi, đầu tiên trong, ra đầu tiên. Chúng tôi đưa ra các điều đầu tiên đã bao giờ đặt in Kết quả là 3 của chúng tôi. Và, trong trường hợp này, chúng tôi không lo lắng về tất cả những thứ khác. Vì vậy, đó là nếu điều này là một hàng đợi. Thắc mắc về một hàng đợi? Một của ngăn xếp khác nhau. Các từ viết tắt, chúng tôi có là gì để hiểu một chồng? ĐỐI TƯỢNG: Bài, ra trước. JASON Hirschhorn: LIFO, tôi nghĩ. Cuối cùng, ra trước. Vì vậy, chúng ta đã thấy một ví dụ về một chồng khay trong một phòng ăn. Bất cứ điều gì khay là trên đầu trang được chọn. Và sau đó nếu khay mới đến trong, họ nhận được đặt lên hàng đầu. Và sau đó bất cứ điều gì trên đầu được chọn. Vì vậy, những khay trên có thể dưới ở lại đó một thời gian. Trong trường hợp đó, một lần nữa, chúng tôi sẽ rút ra điều này. Chúng tôi đẩy vào một, vì vậy một là lần đầu tiên trong dòng. Và chúng tôi bật một cái gì đó đi. Và chỉ có một điều trong đó, vì vậy chúng tôi di chuyển 1 ở đây. Sau đó, chúng tôi đưa vào 2 và 3 và chúng tôi bật một cái gì đó đi. Nhưng một lần nữa, vì đây là một hàng đợi - hoặc đây là một chồng, chứ không phải - chúng ta bất cứ điều gì là mới nhất trong. Bất cứ điều gì là mới nhất trong đi ra đầu tiên. Và 3 là mới nhất trong. Vì vậy, chúng tôi đặt 3 ở dưới đó, sau đó chúng tôi đặt trên 3 khác và chúng tôi bật một cái gì đó một lần nữa. Cuối cùng, chúng tôi đặt trên 4, 5, 6 và 7, và ở đây chúng tôi bật. Và bởi vì nó là một chồng, chúng ta bất cứ điều gì đã được đưa vào trước và viết mà xuống đây. Vì vậy, chúng tôi kết thúc với 1, 3, 3, 7. Không ai có thắc mắc về ngăn xếp và hàng đợi, hoặc ví dụ này? OK. Hãy trở lại vào danh sách các chủ đề. Không có cách nào, theo cách này. Những câu hỏi khác để mọi người có? ĐỐI TƯỢNG: Tôi không biết làm thế nào quan trọng này, nhưng tôi đã nhầm lẫn bởi sự khác biệt giữa các loại các ngôn ngữ như đánh dấu, biên soạn, giải thích. JASON Hirschhorn: Đó là một câu hỏi hay. Tôi nghĩ rằng đó là một điều quan trọng, vì vậy hãy đi qua nó một cách nhanh chóng. Các ngôn ngữ lớn, chúng tôi đã nhìn thấy cho đến nay là C, PHP, và JavaScript, trong điều kiện của ngôn ngữ lập trình. HTML, như bạn đã đề cập, không phải là một ngôn ngữ lập trình. Đó là một ngôn ngữ đánh dấu. Và sau đó chúng ta có CSS, cũng là không phải là một ngôn ngữ lập trình. Chúng tôi cũng đã nhìn thấy SQL, mà không phải là một ngôn ngữ lập trình một trong hai. Vì vậy, SQL cho phép bạn viết truy vấn cho một cơ sở dữ liệu. HTML là một ngôn ngữ đánh dấu. Nó định nghĩa thế nào những điều được cấu trúc. Và CSS cho phép bạn tạo kiểu điều. Đó có thể là mức độ cho những gì bạn cần biết về ba. Nhưng nó là thú vị hơn với con số ra sự khác biệt giữa C, PHP, và JavaScript. Vì vậy, một trong những khác biệt lớn nhất, như bạn đã đề cập, là làm thế nào chúng biên soạn, hoặc bất cứ điều gì tương đương là. Do đó, C được biên dịch. Chúng tôi sẽ luôn luôn chạy một trình biên dịch. Và sau đó, nơi là lỗi của bạn khi bạn chạy trình biên dịch C? Nơi nào nó cho bạn thấy lỗi trong mã của bạn? Làm thế nào để bạn biết có một lỗi trong mã của bạn trong C? ĐỐI TƯỢNG: Nó cho thấy bạn trong thiết bị đầu cuối. JASON Hirschhorn: Nó cho thấy bạn trong thiết bị đầu cuối như bạn đang biên soạn. Và nếu có sai sót, nó sẽ không thực sự biên dịch nó. Vì vậy, bạn biết rằng có những lỗi ngay đi, trước thời hạn, trước khi bạn thậm chí chạy mã của bạn. Tất nhiên, bạn có thể chạy mã của bạn và nhận được một lỗi phân khúc, nhưng đó là có lẽ vì bạn đã làm một số điều lý ngớ ngẩn. Nhưng mã của bạn với kỹ thuật tất cả chính xác và có thể chạy. Vì vậy, mã C được biên dịch trước thời hạn. Những gì về mã PHP? Nơi một số lỗi trong mã PHP của bạn? Làm thế nào bạn biết bạn đã có lỗi trong mã PHP của bạn? ĐỐI TƯỢNG: Chạy thời gian? JASON Hirschhorn: Vâng, khi bạn sẽ chạy nó, bạn sẽ chạy Mã PHP ở phía sau. Và sau đó bạn sẽ hiển thị một màn hình. Bạn có thể thấy một số thứ trên đầu trang, nhưng sau đó bạn sẽ thấy, như, một số cam, bảng xấu xí. Và nó sẽ cung cấp cho bạn một số dòng và nói, blah, blah, blah, công cụ này không làm việc. Vì vậy, PHP được giải thích từng dòng và thực hiện trên máy chủ. Và sau đó kết quả là gửi qua cho bạn. Tuyệt vời. Thực hiện trong dòng máy chủ dòng và sau đó gửi qua cho bạn. Và nếu có một lỗi, nó sẽ gửi bạn lỗi, nhưng bạn có thể có nhận được một số thứ trước thời hạn. Vì vậy, một số của nó có thể làm việc, nhưng sau này, một số công cụ có thể không có không làm việc. Những gì về JavaScript? Nơi mà bạn đã nhìn thấy các lỗi JavaScript? Trong p thiết lập 8, khi bạn có một lỗi, làm thế nào bạn có biết? Nơi mà nó sẽ hiển thị? ĐỐI TƯỢNG: Trong giao diện điều khiển, ở phía dưới. JASON Hirschhorn: Trong giao diện điều khiển, ở phía dưới. Nó cũng sẽ cung cấp cho bạn số dòng, và nó sẽ hiện ở phía dưới. Và JavaScript không thực hiện trên máy chủ. JavaScript đã được gửi đến máy tính của bạn, và sau đó khi nó là thời gian để chạy JavaScript, JavaScript là chạy từng dòng trên khách hàng, về phía bạn. Không phải là máy chủ, các mặt hàng. Và tương tự, đó là chạy từng dòng. Và sau đó khi bạn sẽ nhận được một lỗi, nó sẽ hiển thị ở phía dưới. Tương tự như PHP, một số nó có thể thực hiện, và sau đó bạn có thể nhận được một lỗi sau này. Ngoài ra, một chút không giống như PHP, nếu bạn có một lỗi JavaScript - nói rằng bạn đã không làm đúng các mã cho một hộp cảnh báo - bạn có thể tiếp tục chạy chương trình của bạn. Hộp cảnh báo sẽ không làm việc, nhưng chương trình của bạn sẽ là tốt. Chỉ có thể chức năng đó sẽ thất bại. Do đó, có một số lớn nhất sự khác biệt về cách thức các ngôn ngữ, hoặc làm thế nào các mã lập trình bạn viết thực sự đánh giá. Ngoài ra còn có sự khác biệt khác trong về - sự khác biệt lớn nhất chúng ta đã thấy trong các biến số trong các ngôn ngữ khác nhau. Vì vậy, bất cứ ai có thể cho tôi một sự khác biệt giữa các biến trong ba ngôn ngữ? Vâng. ĐỐI TƯỢNG: Trong C, chúng gõ đúng. Trong hai người kia, họ lỏng lẻo. JASON Hirschhorn: Và có nghĩa là gì? ĐỐI TƯỢNG: Đó là trong C, bạn phải khai báo loại biến khi bạn khai báo các biến, như interbool hoặc char. JASON Hirschhorn: Tuyệt vời. Trong C, chúng tôi luôn luôn phải đặt một loại của một biến. Và chúng ta có thể không thực sự pha trộn các loại. Bạn không thể làm một số nguyên cộng với một chuỗi. Nhưng như chúng ta đã thấy trong những khác ngôn ngữ, bạn thực sự có thể kết hợp các loại, và bạn không bao giờ thực sự có để cung cấp cho một cái gì đó một loại, bao giờ hết. Vì vậy, làm thế nào để chúng ta biết điều này là biến trong PHP và JavaScript? ĐỐI TƯỢNG: Trong PHP, họ bắt đầu với một ký hiệu đô la. Trong JavaScript, khi bạn khai báo họ, bạn phải có một quán bar. JASON Hirschhorn: Đúng vậy. Vì vậy, trong PHP, họ bắt đầu với một ký hiệu đô la. Trong JavaScript, họ phải có bar, mặc dù đôi khi họ không thực sự phải có quán bar. Nhưng đó là chính xác. Vì vậy, đó là một sự khác biệt lớn giữa các biến. Tôi nghĩ đó là có thể, ngoài khơi đỉnh đầu của tôi, hai lớn nhất sự khác nhau giữa các ba ngôn ngữ. Nhưng, yeah. ĐỐI TƯỢNG: Và phạm vi của các biến C được giới hạn trong dấu ngoặc nhọn, nơi những người khác, nó chỉ là thích, nó chết nếu nó trong một chỉ có chức năng, nhưng nếu không, nó là - JASON Hirschhorn: Đúng vậy. Vì vậy, phạm vi là hơi khác nhau trong C. bạn hãy nhớ rằng, dấu ngoặc nhọn xác định phạm vi của các biến. Vì vậy, nếu nó được định nghĩa bên trong một nếu điều kiện, đó là trong một vòng lặp, biến chỉ tồn tại ở đó. Trong JavaScript, nếu một biến được định nghĩa bên trong một nếu điều kiện - bên trong một vòng lặp - nó sẽ tồn tại cho chức năng đó, nhưng nó sẽ không tồn tại ngoài chức năng đó. Vì vậy, phạm vi là một ít linh hoạt hơn trong JavaScript và PHP. Mà trả lời câu hỏi? OK, bất kỳ câu hỏi nào khác không? Chúng ta có thể làm thêm bốn phút các câu hỏi, sau đó chúng tôi sẽ nhảy vào viết mã. ĐỐI TƯỢNG: Chúng ta có thể đi vào Ajax và nói về chuyện đó là gì? JASON Hirschhorn: Nói chuyện với Avi sau. Ông hỏi câu hỏi đó trước đó. ĐỐI TƯỢNG: xấu của tôi. JASON Hirschhorn: Không có lo lắng. ĐỐI TƯỢNG: Những gì chính xác là JSON? JASON Hirschhorn: JSON là gì? Câu hỏi của bạn là gì? ĐỐI TƯỢNG: Chỉ cần thực sự nhanh chóng, sự khác biệt giữa in ấn và tiếng vang trong PHP. JASON Hirschhorn: Tại sao bạn không google sự khác biệt giữa in ấn và tiếng vang? Sự khác biệt nhỏ. Không phải là lớn của một thỏa thuận. Nhưng bạn chắc chắn nên google nó, và rằng sẽ cung cấp cho bạn một câu trả lời tốt. JSON, có lẽ lớn hơn của một thỏa thuận. Là viết tắt của JavaScript Object Notation. Và khi chúng ta đã thấy JSON được sử dụng? Khi bạn nhìn thấy - tại sao bạn thậm chí không biết từ JSON? Khi bạn nhìn thấy nó? ĐỐI TƯỢNG: Khi chúng tôi nhận được cổ phiếu trích dẫn cho tài chính. JASON Hirschhorn: Vì vậy, bạn thấy khi bạn đã nhận được cổ phiếu trích dẫn cho tài chính. Và tại sao bạn nhìn thấy nó? ĐỐI TƯỢNG: Khi chúng tôi lấy tất cả các thông tin mà đến trong định dạng đó. JASON Hirschhorn: Vì vậy, bạn sẽ nhận được - yeah. Đi trước. ĐỐI TƯỢNG: [nghe được] thông tin của một đối tượng? JASON Hirschhorn: Cả hai của những đặt lại với nhau là câu trả lời chúng tôi đang tìm kiếm. Bạn muốn thông tin từ trang web này khác. Và bạn sẽ hy vọng rằng khi bạn nhận được thông tin rằng, nó sẽ là giới thiệu cho bạn trong một số loại định dạng tiêu chuẩn. Tất cả mọi người có lẽ là quen thuộc với các giá trị bằng dấu phẩy. Bạn có thể xuất một bảng tính Excel hoặc bất kỳ loại bảng tính như là một danh sách các giá trị bằng dấu phẩy. Và dấu phẩy phân chia tất cả các lĩnh vực khác nhau. JavaScript Object Notation - JSON - là một loại tiêu chuẩn bố trí của sự vật. Và đó là cách chúng tôi thường lấy thông tin từ các truy vấn Ajax của chúng tôi. Vì vậy, trong trường hợp này, chúng tôi đã nhận nó từ trang Yahoo. Họ trở về những điều chúng tôi trong một đối tượng JSON. Và sau đó chúng ta biết, bởi vì nó một tiêu chuẩn, những gì nó sẽ như thế nào. Vì vậy chúng tôi có thể lặp qua mảng đó là quay trở lại với chúng tôi, các mảng các đối tượng được trả về cho chúng tôi. Chúng tôi có lẽ cần phải biết các phím, nhưng họ thường cung cấp cho bạn tài liệu hướng dẫn trong trang web khi bạn đang tải một số JSON ký hiệu cho họ. Tương tự như vậy, bạn có thể JSON mã hóa một đối tượng. Do đó, có một chức năng JSON nhấn mạnh mã hóa. Và do đó bạn có thể mất một đối tượng bạn đã tạo ra, JSON mã hóa nó, và vượt qua nó vào một cái gì đó khác, nếu bạn muốn. JSON và giải mã cũng tồn tại cho một mục đích tương tự, hoặc cho mục đích ngược lại. ĐỐI TƯỢNG: Chúng ta cần phải biết mã hóa cho bảng băm và cố gắng? Hay chúng ta chỉ cần hiểu làm thế nào họ đang sử dụng, khái niệm? JASON Hirschhorn: Vì vậy, nâng cao tay của bạn nếu bạn đã làm một bảng băm cho p thiết lập 4 với một danh sách liên kết. Hoặc thiết lập p 5. Vì vậy, đó là một phần lớn mọi người. P thiết lập 5, 6, những người hiểu biết. Một thời gian dài trước đây. Vì vậy, đại đa số các bạn đã làm băm bảng với danh sách liên kết. Và bởi vì đó có thể là nhiều hơn phương pháp phổ biến, và bởi vì chúng tôi đã dành rất nhiều thời gian làm các danh sách liên kết và băm bảng, bạn có lẽ nên được khá quen thuộc với cách mã một bảng băm và một danh sách liên kết. Và nếu bạn nghĩ về vấn đề đó thiết lập, nó đã không thực sự khó như bạn mong đợi. Và đã có ít hơn rất nhiều mã hơn bạn mong đợi. Tôi sẽ nói rằng bạn nên biết làm thế nào để mã một bảng băm hoặc một danh sách liên kết. Không phải là bạn sẽ được yêu cầu đó, nhất thiết, nhưng bạn nên chắc chắn biết điều đó. Ngoài ra, nếu bạn xem xét thông qua các câu đố qua, đã có rất nhiều câu hỏi về cách viết các chức năng trên danh sách liên kết hoặc danh sách liên kết kép. Điều đó có vẻ đi lên mỗi năm. Đúng chèn vào một danh sách liên kết, ngay xóa từ một danh sách liên kết, phải chèn cho một danh sách liên kết kép, vân vân. Do đó, tôi cảm thấy khá thoải mái nói rằng bạn nên biết rằng. Cho thử, tôi sẽ nói bạn nên chắc chắn biết làm thế nào nó hoạt động, và có thể đưa ra một số giả cho như thế nào mã nó và thiết lập nó. Nhưng nó sẽ không phải là điều tồi tệ nhất trong thế giới nếu bạn không biết làm thế nào để mã nó trong C. Nó sẽ là tuyệt vời nếu bạn biết làm thế nào để mã nó trong C, nhưng tôi nghĩ rằng có thể giả cho một thử sẽ là hầu hết các bạn sẽ cần để biết một thử. ĐỐI TƯỢNG: tín dụng bổ sung? JASON Hirschhorn: Và cùng với, nếu chúng ta đi vào cây tìm kiếm nhị phân, bạn có thể cần - và bạn đã thấy trong quá khứ, chúng tôi đã thực hiện rất nhiều - bạn biết làm thế nào cây tìm kiếm nhị phân làm việc. Có thể bạn sẽ có thể thiết lập một trong mã giả. Nhưng vì phần lớn mọi người không làm điều đó trên vấn đề thiết lập, tôi muốn nói đây có thể là ít hơn quan trọng là bạn biết làm thế nào để mã và thiết lập một cây như thế. Bất kỳ câu hỏi nào khác không? Ngoài ra, chúng tôi có thể yêu cầu họ trong suốt như chúng tôi đi qua một số vấn đề. OK, chúng ta sẽ di chuyển trên. Bỏ qua trượt cho bây giờ. Nói về cây, đó là lần đầu tiên câu hỏi tôi có cho các bạn. Bởi vì đây là một vấn đề. Tôi có thể nói nó rất có thể bạn sẽ được một vấn đề như thế này trên bài kiểm tra của bạn yêu cầu bạn mã một số loại chèn, xóa, tìm kiếm, cho một loại cấu trúc dữ liệu, chúng tôi đã nhìn thấy. Mà đi lên mỗi năm và chúng tôi đã dành một rất nhiều thời gian nửa cuối năm này học kỳ đi qua các loại dữ liệu. Vì vậy, ngay bây giờ, tôi đã xác định một nút trong một cây tìm kiếm nhị phân. Và những gì tôi muốn bạn làm là cho một cây tìm kiếm nhị phân bắt đầu lúc này sao gốc nút, hoàn thành thực hiện các chức năng dưới đây, mà sẽ xảy ra là một chức năng tìm. Và làm điều đó có và không có recursions. Vì vậy, tôi muốn bạn để viết hai chức năng. Một làm điều này với đệ quy, một làm điều này mà không cần đệ quy. Và không giả định rằng gốc sẽ không null. Vì vậy, chúng tôi đang tìm kiếm các số nguyên i trong cây bắt đầu từ gốc, và chúng ta cần để viết này đệ quy và lặp đi lặp lại. Yeah. ĐỐI TƯỢNG: Vì vậy, bạn muốn chúng tôi để trở về đúng nếu chúng ta tìm thấy nó, và sai nếu chúng ta không tìm thấy nó. JASON Hirschhorn: Làm thế nào bạn có biết? Làm thế nào bạn có biết rằng? ĐỐI TƯỢNG: Tôi đã yêu cầu đầu tiên, nhưng tôi đã giả định, bởi vì nó nói bool tại đầu của hàm. JASON Hirschhorn: Đúng vậy. Nó nói bool, vì vậy tôi thậm chí không cần phải nói cho bạn biết những gì tôi mong đợi bạn trở lại bởi vì nó nói đúng đó. Nhưng đó là đúng. Trở lại, đúng hay sai. Vì vậy, trước khi bạn bắt đầu, tôi muốn giới thiệu, nếu bạn không quen với cây tìm kiếm nhị phân, nhanh chóng vẽ một hình ảnh của nó để có được của bạn sự hiểu biết, phải. Điều đó cũng sẽ giúp bạn khi viết mã và kiểm tra nó của bạn. Một lần nữa, bạn cũng không có nhiều thời gian trên các bài kiểm tra để làm tất cả những điều mà chúng tôi yêu cầu bạn phải làm. Vì vậy, viết mã giả là rất hữu ích. Và chúng tôi thường cung cấp về - nếu giả là hoàn hảo chính xác, đó là nói chung là 50% trên một câu hỏi. Vì vậy, nó không phải là một quy tắc cứng và nhanh chóng, nhưng nếu bạn chỉ cần viết mã giả và nó đúng, nó thường 50%. Vì vậy, tôi luôn luôn khuyên - nếu bạn đang ép cho thời gian, hoặc thậm chí nếu bạn chỉ cần cố gắng tìm ra nó - bắt đầu với giả. Và cuối cùng, nếu bạn có thể viết này tất cả trong C, đó sẽ là tuyệt vời. Vì vậy, chúng ta hãy ba phút để làm việc trên chương trình này. Và sau đó chúng ta sẽ viết giả cho nó chỉ một lần, và sau đó chúng ta sẽ mã nó đệ quy và sau đó lặp đi lặp lại. Nếu bạn có bất kỳ câu hỏi, cảm thấy miễn phí giơ tay lên. Hạnh phúc để đi bộ xung quanh và trả lời trước khi chúng tôi bắt đầu như là một nhóm. Hãy để chúng tôi tiếp tục, và chúng ta sẽ giả phiên bản đệ quy này, và sau đó chúng tôi sẽ mã nó. Vì vậy, một hàm đệ quy cần hai điều. Điều này có thể là một câu hỏi mà bạn có thể được yêu cầu. Cần hai điều. Ai có thể giơ tay lên và nói với tôi những gì hai điều một đệ quy chức năng cần? Theo định nghĩa nó có hai điều. Hai điều này là gì? Tay mới. Có, Alden. ĐỐI TƯỢNG: Vì vậy, tôi không chắc chắn chính xác nếu thuật ngữ này, nhưng - JASON Hirschhorn: Tôi rất vui bạn đang nâng cao tay của bạn. ĐỐI TƯỢNG: Nó cần một trường hợp cơ sở, và nó cần một bước đệ quy. JASON Hirschhorn: hoàn hảo. Nó cần một trường hợp cơ sở và một bước đệ quy. Vì vậy, trường hợp cơ sở của chúng tôi ở đây là gì? ĐỐI TƯỢNG: F gốc bằng bằng null. Xin lỗi, chỉ trong giả, nếu đó là vô giá trị. Nếu gốc là null. JASON Hirschhorn: Nếu gốc là null. Đó là tuyệt vời. Đó là trường hợp cơ sở của chúng tôi. Đó là những gì chúng ta sẽ để kiểm tra tất cả các thời gian. Và trường hợp cơ sở là Điều đầu tiên bạn làm. Nếu bạn nhấn trường hợp cơ sở, bạn đang thực hiện. Bây giờ chúng ta cần phải gọi đệ quy của chúng tôi, và tôi muốn sẵn sàng cược rằng chúng ta cần một vài đệ quy gọi đây. Bởi vì đó là một cây, và chúng tôi có thể đi theo nhiều cách. Vì vậy, nếu gốc là vô giá trị, chúng tôi đang tốt. Bạn đề nghị những gì? Và bây giờ tôi sẽ bắt đầu gọi điện thoại ra trên các bạn, bởi vì tôi biết các bạn đều biết điều này. Nhưng Annie, những gì nên dòng tiếp theo là gì? Nếu chúng ta tìm thấy nó? Chúng ta phải làm gì? ĐỐI TƯỢNG: Nếu chúng tôi tìm thấy nó? JASON Hirschhorn: Hoặc nên là - cung cấp cho tôi những giả cho đường, nơi chúng tôi tìm thấy nó. ĐỐI TƯỢNG: Nếu tôi bằng gốc tôi? JASON Hirschhorn: Và sau đó chúng ta làm gì? ĐỐI TƯỢNG: Quay trở lại thực sự. JASON Hirschhorn: Great. Vì vậy, nếu tôi là tôi - oh, chúng đều được gọi là tôi. Mà được khó hiểu. Nhưng nếu tôi là tôi trở thành sự thật. Đó có thể là tiếp theo Điều chúng ta nên làm. Có ý nghĩa. OK, bây giờ chúng tôi đã không thực hiện đệ quy của chúng tôi gọi nào, tuy nhiên, vì một đệ quy cuộc gọi sẽ gọi chức năng này một lần nữa. Vì vậy, những gì nên tiếp theo dòng giả được? Anna. ĐỐI TƯỢNG: Các bên trái. JASON Hirschhorn: Phải cụ thể, mặc dù. Đây là một cây tìm kiếm nhị phân, vì vậy những gì không kiểm tra phía bên trái đòi hỏi? ĐỐI TƯỢNG: Vì vậy, nút - Tôi xin lỗi, root. Và sau đó mũi tên trái. Nút, nút, xin lỗi. Tôi không đọc nó đúng cách. Nó được gọi là nút, phải không? JASON Hirschhorn: Được gọi là gốc trong đó chức năng, nhưng một trong hai cách. Phía bên trái - yeah? ĐỐI TƯỢNG: Nếu nó không bằng i, sau đó chúng tôi sẽ gọi chức năng một lần nữa? JASON Hirschhorn: Đúng vậy. Nếu nó không bằng tôi, chúng ta sẽ để gọi chức năng một lần nữa. Nhưng những gì bên trong những cây chúng ta sẽ để gọi chức năng một lần nữa? ĐỐI TƯỢNG: Ở phía bên trái. JASON Hirschhorn: Chúng tôi không phải luôn luôn sẽ gọi nó là bên trái, nếu nó không bằng nó. ĐỐI TƯỢNG: Ồ, xin lỗi. Kêu gọi các bên phải. JASON Hirschhorn: Chúng tôi muốn biết đặc biệt, mặc dù - nhớ, trong một cây tìm kiếm nhị phân, tất cả mọi thứ để phía bên tay trái là nhỏ hơn. Tất cả mọi thứ bên phải phía bên tay lớn. Vì vậy, nó chỉ là không - yeah, đi trước. ĐỐI TƯỢNG: Nếu nó ít hơn tôi, sau đó - nếu nó ở bên trái - JASON Hirschhorn: Vì vậy, nếu ri là ít hơn - do đó, nếu số lượng của chúng tôi ít hơn tôi, những gì bên chúng ta muốn đi đến? ĐỐI TƯỢNG: Chúng tôi muốn đi về phía bên phải. JASON Hirschhorn: Chúng tôi muốn đi - hãy để tôi vẽ một cái cây nhanh chóng. Nếu đây là 5, đây sẽ là 3. Vì vậy, nếu ri là ít hơn năm, những gì bên nào chúng ta muốn đến? ĐỐI TƯỢNG: Xin lỗi, những gì? JASON Hirschhorn: số của chúng tôi là ít hơn số lượng chúng tôi xem ngay bây giờ. ĐỐI TƯỢNG: Oh, sau đó chúng tôi muốn đi về phía bên trái. Yeah. Xin lôi. JASON Hirschhorn: Chính xác. Không phải lo lắng. Trong cây tìm kiếm nhị phân, tất cả mọi thứ thấp hơn là bên trái, lớn hơn là bên phải. Vì vậy, nếu số lượng của chúng tôi là ít hơn i chúng tôi đang kiểm tra - bởi vì bạn nhìn thấy trong nút, nó có một i - sau đó bạn muốn đi bên trái. Và đây là một điều dễ dàng. Đó là những gì các dòng khác của giả chúng ta cần phải viết? Carlos? ĐỐI TƯỢNG: Cùng một điều, bạn chỉ cần chuyển đổi nó vào một dấu hiệu lớn hơn và đi về bên phải. JASON Hirschhorn: Có thể bạn nói thêm một lần nữa? ĐỐI TƯỢNG: Nếu số lượng của chúng tôi lớn hơn tôi, đi về bên phải. JASON Hirschhorn: Tuyệt vời công việc trên giả. Hãy để chúng tôi làm điều này trong mã thực. Và một lần nữa, điều này sẽ giả có thể giúp bạn có được, bởi vì nó chính xác, 50% câu hỏi này. Nhưng giả này cũng dịch một một, về cơ bản, thành mã. Vì vậy, chúng ta hãy làm điều này trong C. Ai có thể cho tôi dòng đầu tiên của mã? Trên thực tế, lần đầu tiên, trước khi tôi làm rằng, hãy để tôi kéo hơn - ĐỐI TƯỢNG: Tôi có một câu hỏi. Tại sao anh lại thụt vào đường tôi đã cho bạn? JASON Hirschhorn: Bởi vì Tôi không thể viết. Tôi không biết. Bạn nói đúng. Dòng nên được ở đó. OK, đây là chức năng của chúng tôi. Và cho tôi kéo qua, cũng được, định nghĩa của chúng ta về một nút. Điều gì xảy ra nếu chúng ta không viết typedef? Không ai biết? ĐỐI TƯỢNG: Nó sẽ không biên dịch. JASON Hirschhorn: Nó sẽ biên dịch, yeah. ĐỐI TƯỢNG: Nó sẽ chỉ cần khai báo một Ví dụ thay vì làm cho nó một mới loại bạn có thể khai báo nhiều các trường hợp? JASON Hirschhorn: Vì vậy, nó sẽ không biết - nó sẽ không chỉ cần khai báo một loại. Bạn vẫn có thể làm cho rất nhiều các nút. ĐỐI TƯỢNG: Nhưng không, chúng ta phải viết cấu trúc nút mỗi lần? JASON Hirschhorn: Đúng vậy. Bạn sẽ phải viết struct node mọi thời gian, thay vì chỉ nút. Nhưng với typedef, bạn có thể chỉ viết nút mỗi lần duy nhất. OK, người đã không được - yeah, Avica. ĐỐI TƯỢNG: Nếu gốc bằng bình đẳng null, trả về false. JASON Hirschhorn: Great, và đó là trường hợp cơ sở của chúng tôi. Dòng tiếp theo của mã. Một người nào đó đã không đưa ra tôi một dòng mã nào? Yeah. ĐỐI TƯỢNG: Root mũi tên tôi bằng bằng tôi. Sau đó trở thành sự thật. JASON Hirschhorn: Great. Dòng tiếp theo? Yeah. Một người nào khác? Và sau đó bạn có thể đi tiếp theo. ĐỐI TƯỢNG: Khác nếu gốc mũi tên i nhỏ hơn tôi trở lại chức năng được gọi là root find - JASON Hirschhorn: Xin lỗi. ĐỐI TƯỢNG: Quay lại tìm gốc chỉ để lại dấu phẩy tôi. JASON Hirschhorn: Vì vậy, nếu ri lớn hơn điều trong cây, chúng tôi muốn đi bên trái? ĐỐI TƯỢNG: Không, tôi đã có chuyển. JASON Hirschhorn: Cái nào? ĐỐI TƯỢNG: Không, yeah. Tôi có một ít hơn so với đăng ở đó. JASON Hirschhorn: Đúng thế, nếu ri là ít hơn những gì trong thư mục gốc - gốc hiện tại của chúng tôi - sau đó chúng tôi muốn đi bên trái. Và dòng cuối cùng là những gì, bạn? ĐỐI TƯỢNG: Về cơ bản cùng một điều, ngoại trừ chuyển đổi lớn hơn hoặc bằng ít hơn và trái sang phải. JASON Hirschhorn: Tuyệt vời. Không ai có bất kỳ câu hỏi về điều này? Vì vậy, một số những thứ khác mà có thể đã được chính xác là có thể là-ltiff. Đoán, về mặt kỹ thuật, không có những thực sự cũng cần phải-ltiff. Ngoài ra, có chỉ có thể là một trường hợp ở đây. Vì vậy, đó có thể là trường hợp cuối cùng của bạn. Bạn thậm chí không cần điều đó-ltiff. Nhưng có lẽ tốt để viết nó, để được rõ ràng. Yeah. ĐỐI TƯỢNG: Vì vậy, bạn không nghĩ rằng các bài kiểm tra - nếu chúng ta thực hiện sai sót, ví dụ, trong cú pháp - lỗi cú pháp ít - làm thế nào mà có được thực hiện trong các bài kiểm tra? JASON Hirschhorn: Nói chung trên các bài kiểm tra, lỗi cú pháp nhỏ hay nhỏ lỗi phong cách không bị mất bạn điểm. Vì vậy, nếu bạn quên một dấu chấm phẩy ở đây, nó sẽ là OK. Nếu bạn quên đóng ngoặc này, đó sẽ là OK. Lỗi cú pháp rất lớn làm thay đổi ý nghĩa chức năng của mã của bạn đáng kể, bạn có thể nhận được đưa ra điểm. Hoặc thường, chỉ cần phân loại bạn hay không của bạn chức năng mã, thậm chí - không thiết kế của nó rất nhiều, và không phải phong cách của nó. Bây giờ chúng ta lặp đi lặp lại một mã phiên bản của find. Vì vậy, nó sẽ là khá giống nhau, nhưng có chắc chắn sẽ một số khác biệt quan trọng. Tuy nhiên, giả của chúng tôi có lẽ có thể đi - chúng tôi vẫn có thể mất một dòng của giả và tìm ra những gì dòng là trong trường hợp này. Vì vậy, trong một phiên bản lặp đi lặp lại, những gì Bạn nghĩ, Julia, nên là dòng đầu tiên? ĐỐI TƯỢNG: Một lần nữa, trong boolean lặp đi lặp lại, bạn cần phải thiết lập một vòng lặp, phải không? JASON Hirschhorn: OK. ĐỐI TƯỢNG: Vì vậy, như, k, cho x bằng 0, x là ít hơn tôi. Hoặc không, x là thấp hơn kích thước của cây. JASON Hirschhorn: Các cây. Vì vậy, chúng tôi không thực sự biết kích thước của cây, và chúng tôi không thực sự biết bao nhiêu lần chúng ta có thể đi, vì vậy những gì là một loại khác nhau của vòng lặp đó có thể là tốt hơn trong trường hợp này? ĐỐI TƯỢNG: Nếu khác? JASON Hirschhorn: Nếu khác không thể là một vòng lặp. Vì vậy, một loại vòng lặp chúng ta có thể chỉ là những gì đi cho đến khi một số trường hợp được đáp ứng? Chỉ có các loại khác của vòng lặp là những gì trong C bên cạnh một vòng lặp? ĐỐI TƯỢNG: Trong khi. JASON Hirschhorn: Trong khi, chính xác. Trong một vòng lặp trong khi, không cần phải biết làm thế nào - một vòng lặp trong khi và cho vòng lặp có thể làm chính xác điều tương tự, nhưng những điều tốt đẹp về một vòng lặp trong khi là chúng ta không cần biết làm thế nào lớn cây của chúng tôi là. Vì vậy, chúng ta sẽ đi đến những gì? ĐỐI TƯỢNG: Cho đến khi nó bằng kích thước của - JASON Hirschhorn: Vâng, nó rất tương tự như trường hợp đệ quy của chúng tôi. Vì vậy, - ĐỐI TƯỢNG: Trong khi gốc tôi không làm tôi bình đẳng. JASON Hirschhorn: Đó là thực sự gần gũi. Trong khi gốc i - chúng ta hãy thử nó. Tôi không nghĩ rằng [không nghe được] nơi mà tôi có gốc không bằng tôi. Chúng ta có thể cần phải thay đổi nó trong một chút chút, nhưng mà âm thanh như nó đẹp tốt, cho bây giờ. Vì vậy, chúng tôi sẽ làm điều đó. Ngoài ra, hãy nhớ rằng, chúng ta không thể giả định mỗi câu hỏi. Bạn không giả định rằng gốc sẽ không null. Vậy điều gì làm bạn nghĩ rằng rất Điều đầu tiên chúng ta nên làm là? ĐỐI TƯỢNG: Chỉ cần làm tương tự điều như trước. Nếu thư mục gốc bằng bình đẳng null, trả về false. JASON Hirschhorn: Great. Vì vậy, nó có thể là vô giá trị. Vì vậy, chúng tôi muốn được thoát khỏi của nó ngay lập tức. Và sau đó chúng ta sẽ kiểm tra xem gốc tôi không tôi không bằng nhau. Vì vậy, nói rằng chúng ta đang tìm kiếm trong cây này 3, rễ tôi không bằng tôi, bây giờ chúng ta đang ở trong vòng lặp trong khi của chúng tôi. Những gì chúng ta muốn làm gì? Và một lần nữa, nó sẽ được khá tương tự như phiên bản đệ quy của chúng tôi. Yeah. ĐỐI TƯỢNG: Vì vậy, bạn muốn để lặp, hoặc tiếp tục đi xuống cây miễn là gốc không phải là bằng null. JASON Hirschhorn: Miễn là gốc không phải là bằng vô giá trị? ĐỐI TƯỢNG: Các dấu gạch ngang gốc tôi không bằng null. Chỉ gốc, yeah. Như một lâu như là gốc là không bằng null. JASON Hirschhorn: Vì vậy, bạn muốn thay đổi này vào thư mục gốc không vô không bằng nhau? ĐỐI TƯỢNG: Vâng. ĐỐI TƯỢNG: Chúng tôi có thể kết hợp này, phải không? Chúng tôi không cần nếu ban đầu. JASON Hirschhorn: OK, vì vậy nếu chúng ta đừng - nếu chúng ta kết hợp chúng, vì vậy chúng tôi đang đi làm trong khi gốc không vô không bằng nhau, và nếu thư mục gốc sẽ xảy ra là null ở bắt đầu, chúng ta làm gì ở đây? ĐỐI TƯỢNG: Trở về sai. JASON Hirschhorn: Great. Vì vậy, cả hai cách có thể sẽ làm việc. Đây là một cách khác nhau, và kết hợp nó. Nhưng một lần nữa, nếu bạn đã làm một trong hai cách, chúng tôi sẽ không cất cánh thiết kế chỉ trên các bài kiểm tra. Nhưng điều này có vẻ tốt. Vì vậy, trong khi gốc không bằng null, những gì là lần đầu tiên Điều chúng tôi muốn kiểm tra? Người khác? Null, điều đầu tiên là gì? ĐỐI TƯỢNG: Nếu ri là ít hơn - oh, tôi đoán, nếu chúng ta đã tìm thấy nó trong thư mục gốc. Vì vậy, nếu gốc mũi tên tôi bằng i - JASON Hirschhorn: Xin lỗi? ĐỐI TƯỢNG: Nếu gốc mũi tên i bằng bằng i - JASON Hirschhorn: Chúng ta phải làm gì? ĐỐI TƯỢNG: Quay trở lại thực sự. JASON Hirschhorn: Great. Và những gì tiếp theo? Jeff, dòng tiếp theo của mã là gì? ĐỐI TƯỢNG: Nếu tôi là ít hơn gốc mũi tên i, sau đó gốc rễ bằng mũi tên trái. JASON Hirschhorn: Root bình đẳng gốc mũi tên trái. Vì vậy, đó có thể là lớn nhất khác biệt ở đây trong lặp đi lặp lại này phiên bản như trái ngược với các phiên bản đệ quy. Phiên bản đệ quy, chúng tôi gọi hàm một lần nữa. Chúng tôi sẽ cập nhật gốc khi chúng ta gọi là các chức năng mới. Ở đây chúng tôi không gọi một chức năng mới. Chúng tôi chỉ đơn giản là chỉ cần cập nhật gốc trong chức năng này. Đó là tuyệt vời. Và dòng cuối cùng của mã là gì? Yeah, Mario? ĐỐI TƯỢNG: bình đẳng gốc khac gốc mũi tên bên phải. JASON Hirschhorn: Xin lỗi? ĐỐI TƯỢNG: Root bình đẳng gốc mũi tên bên phải. JASON Hirschhorn: Ông có thể cũng viết một cái gì đó như thế này? ĐỐI TƯỢNG: Tôi không có ý tưởng. JASON Hirschhorn: Bạn có thể không. Bạn không thể làm bình đẳng cộng. OK, vì vậy điều này có vẻ tốt. Tại sao chúng ta không làm điều đó để làm sạch nó lên. Điều này sẽ rất tốt, và điều này sẽ làm việc. Và chúng tôi sẽ thoát ra khỏi. Nếu trái gốc là null hoặc gốc ngay là vô giá trị, chúng tôi sẽ đưa ra ở đây. Gốc sẽ bằng null. Chúng tôi muốn thoát ra khỏi vòng lặp của chúng tôi, và chúng tôi trả về false. Vì vậy, khi chúng ta thoát ra khỏi vòng lặp, chúng tôi trả về false. Và một lần nữa, một vòng lặp trong khi đã được hoàn hảo ở đây bởi vì chúng tôi không biết làm thế nào lớn cây của chúng tôi là. Chúng tôi đã cố gắng để viết cho vòng lặp, nhưng chúng tôi nhận ra bạn đã có để tìm ra cách lớn đó là trước thời hạn. Yeah. ĐỐI TƯỢNG: Nếu đây không phải là một nhị phân cây tìm kiếm, nó sẽ được thực toán học-y để viết nó lặp đi lặp lại, phải không? Như, nếu đó là một cây, nhưng không nhất thiết - vì vậy nó không hoàn toàn nhỏ bên trái, và tất cả lớn hơn bên phải. Nó sẽ thực sự khó khăn để lặp lại nó, phải không? Chúng tôi phải tiết kiệm những gì đã được trước đó trên trong cây và quay trở lại, và các công cụ như thế. JASON Hirschhorn: Nếu nó không phải là một nhị phân cây tìm kiếm, nếu nó chỉ là một cây và những thứ không sắp xếp như thế này - và chúng tôi nhận ra trước khi Anna đã giúp chúng tôi rằng làm cho nó sắp xếp giúp chúng tôi rất nhiều - chúng ta cần phải, có, luôn luôn tiết kiệm nơi chúng tôi trước đây. Nhưng có thể có rất nhiều nơi chúng tôi đã previouslys. Có thể có rất nhiều các nút cha mẹ. Có lẽ là cách tốt nhất để làm điều đó sẽ được tiếp tục đẩy mạnh việc lên một số loại chồng hoặc hàng đợi. Bạn sẽ không bao giờ cần phải mã này bởi vì đó là một vấn đề khó khăn. Nhưng bạn đẩy một số điều vào một chồng hoặc xếp hàng và sau đó bật chúng ra, và sau đó đánh giá chúng. Và sau đó có một số điều khác mà bạn đang thực sự đặt các nút, và sau đó tạo ra điều đó, và sau đó tìm kiếm thông qua đó. Đó có thể là cách tốt nhất để làm điều đó. OK, bất kỳ câu hỏi nào về vấn đề này? ĐỐI TƯỢNG: Đây là một lưu ý liên quan. Chúng tôi sẽ phải so sánh thời gian chạy cho bảng băm, nhị phân cây tìm kiếm, vân vân? JASON Hirschhorn: Có lẽ. Vì vậy, hãy làm điều đó thực sự nhanh chóng. Thời gian chạy cho bảng băm - những người khác là gì? Cây nhị phân? ĐỐI TƯỢNG: danh sách liên kết. JASON Hirschhorn: OK, chúng ta hãy làm chèn. O lớn chèn là gì trên một bảng băm? Các giả định là gì bạn đang làm? ĐỐI TƯỢNG: Bạn đang chèn vào bắt đầu của danh sách liên kết. JASON Hirschhorn: Có lẽ là đầu tiên giả định là không có va chạm. Nếu không có va chạm, sau đó thời gian chèn là một. Nếu có va chạm, và bạn làm xâu chuỗi riêng biệt và chèn vào đầu danh sách liên kết, sau đó chèn cũng là hằng số. Nếu bạn đang làm một bảng băm nhưng bạn có một phương pháp khác nhau đối phó với va chạm, những gì một phương pháp khác nhau? Có gì là một phương pháp khác nhau đối phó với va chạm trong một bảng băm? ĐỐI TƯỢNG: lập trình tuyến tính. JASON Hirschhorn: lập trình tuyến tính. Vì vậy, chúng ta sẽ tiếp tục tìm kiếm cho vị trí mở tiếp theo. Đó không phải là thời điểm chèn liên tục. Bạn có thể phải đi qua toàn bộ bảng, do đó có thể là O lớn của n. Yeah. ĐỐI TƯỢNG: Nếu không chỉ chaining? JASON Hirschhorn: Chúng tôi đã làm chain riêng biệt. Đó là người đầu tiên. Đó là những gì các danh sách liên kết. Tên ưa thích là xâu chuỗi riêng biệt. Nó có thể là bất kỳ loại cấu trúc danh sách chúng tôi xảy ra để làm trong danh sách liên kết. Vì vậy, một lần nữa, chèn vào một bảng băm có thể là thời gian liên tục. Những gì về chèn trên một hàng đợi máy xếp? ĐỐI TƯỢNG: Không phải là không đổi? JASON Hirschhorn: Đó là thời gian liên tục. Bạn chỉ cần đẩy nó vào. OK. Chèn, những gì là những người khác? Trên một thử? O lớn chèn vào một thử là gì? ĐỐI TƯỢNG: Chiều dài là không đổi. Chiều dài dài nhất - chiều dài của từ bạn đang chèn. JASON Hirschhorn: Xin lỗi? Chờ đợi, vì vậy tôi đã nghe thấy những gì? Bạn nói - Anh nói gì? Câu trả lời của bạn, Marcus là gì? ĐỐI TƯỢNG: Chiều dài của từ bạn đang chèn trong nhân vật, giả định đó là một nhân vật thử. JASON Hirschhorn: OK, vì vậy chiều dài của từ. Chúng tôi sẽ làm cho một giả định rằng đó là một chuỗi ký tự. Bạn nói một cái gì đó khác nhau, mặc dù. Bạn nói chiều dài từ lâu nhất. ĐỐI TƯỢNG: Đó chỉ là liên tục, phải không? JASON Hirschhorn: Tại sao nó là không đổi? ĐỐI TƯỢNG: Giống như, nếu bạn sử dụng O lớn ký hiệu, sau đó nó không thay đổi based về số lượng những điều mà đã có trong thử. JASON Hirschhorn: Vì vậy, chúng tôi sẽ nói đó là thời gian liên tục. Nó là chèn liên tục, và đó là bởi vì ý tưởng này - chúng ta có một từ đó là 45, hoặc một từ đó là 60, mà có một số không đổi. Và nó sẽ chỉ được chèn trong thời gian liên tục. Trong thực tế, mặc dù nó sẽ không phải là, rõ ràng, xảy ra trong một phần nghìn giây, ví dụ. Nhưng chúng ta sẽ nói O lớn là liên tục cho một thử. Và đó là một trong của nó lợi thế lớn nhất. Những gì về chèn vào một danh sách liên kết? Chỉ cần một danh sách liên kết được sắp xếp chung chung? Yeah. ĐỐI TƯỢNG: Tôi có một câu hỏi. Trên các kiểm tra, họ sẽ bao giờ tự hỏi chúng ta thời điểm chèn đó là bốn bước, hay cái gì? Hoặc là nó chỉ - khi bạn nói thời điểm chèn là một, mà chỉ có nghĩa là thời gian liên tục? JASON Hirschhorn: Vâng, họ sẽ luôn luôn hỏi, là nó O lớn của n? Big O của log n? N bình phương liên tục. Đó là thực sự chỉ cái bạn cần biết. Những gì về chèn vào sắp xếp danh sách liên kết? ĐỐI TƯỢNG: Tôi có một câu hỏi - một câu hỏi - JASON Hirschhorn: câu trả lời là gì cho câu hỏi đó, mặc dù? ĐỐI TƯỢNG: Chờ đợi, bạn đã yêu cầu những gì? JASON Hirschhorn: O lớn là gì chèn vào một danh sách liên kết được sắp xếp? ĐỐI TƯỢNG: Một? Không chờ đợi, chờ đợi Không, n. JASON Hirschhorn: N. Bên cạnh danh sách liên kết. Và câu hỏi của bạn là gì? ĐỐI TƯỢNG: Vì vậy, bạn sẽ viết o k hay o 1 cho - JASON Hirschhorn: Oh. Tôi sẽ viết o 1, có lẽ. Có một cấu trúc dữ liệu khác đó sẽ là tốt. Cây, cây tìm kiếm nhị phân. Có gì chèn vào một cây tìm kiếm nhị phân? ĐỐI TƯỢNG: Đăng nhập. JASON Hirschhorn: Vì vậy, những gì là tồi tệ nhất trường hợp trong một cây tìm kiếm nhị phân? Vì vậy, nếu chúng tôi xảy ra bắt đầu từ 5, và mỗi số lớn hơn 5, sau đó chúng tôi đã có 5, 7, 9, 11, vân vân. Trong trường hợp này, nó về cơ bản chỉ là một liên kết danh sách, và chúng ta cần để chèn tất cả cách ở cuối. Vì vậy, nó là O lớn của n. Đó có thể là trường hợp tồi tệ nhất của chúng tôi trên một cây tìm kiếm nhị phân. Rõ ràng, bạn sẽ không bao giờ xây dựng một cây tìm kiếm nhị phân với 5 trong trung, biết 5 sẽ có số lượng thấp nhất. Nhưng nó có thể là, nếu bạn bắt đầu từ đầu. Thắc mắc về điều này trước khi tôi chuyển sang một câu hỏi khác? Đó là một câu hỏi hay. Tôi biết O lớn của - ĐỐI TƯỢNG: Điều gì về tìm kiếm cho bốn? JASON Hirschhorn: Chắc chắn chúng tôi đã tìm kiếm và phân loại. Chúng tôi đã làm tất cả những thuật toán, phải. Chờ đợi, là cho Câu hỏi 1? Được bao phủ - đã bạn đã có câu hỏi về Câu hỏi 1? O thời gian chạy lớn của tìm kiếm nhị phân, sắp xếp chèn, bong bóng sắp xếp? ĐỐI TƯỢNG: Vâng. JASON Hirschhorn: Nếu bạn đã có điều đó câu hỏi về Câu hỏi 0, tỷ lệ cược là bạn sẽ không nhận được câu hỏi chính xác trên quiz 1. Có thể vẫn còn tốt để biết những người. Bạn hy vọng sẽ biết gh đã. Nhưng runtimes logarit khác có lẽ là tốt để biết. Những điều đó không được bao phủ trên quiz 0. Giống như tất cả các nhà khai thác trên các loại dữ liệu trừu tượng. OK, chúng ta hãy chuyển. Điều này nên được khá nhanh chóng. Và điều này là một ngôn ngữ mới, chúng tôi có không thực sự được mã hóa trước khi. Đây là một câu hỏi chào bán mã trong PHP. Vì vậy, xem xét các mảng PHP dưới đây. Viết PHP và / hoặc HTML mã như vậy mà nó kết quả đầu ra một bảng hai cột với TF tên và nhà ở. Bạn chưa bao giờ làm điều này trước, vấn đề cụ thể. Nhưng điều này nên rất quen thuộc với những gì bạn đã làm trong vấn đề thiết lập 7. Vì vậy, tôi sẽ sẵn sàng đặt cược bạn sẽ được yêu cầu mã gì đó trong PHP rất giống với những gì bạn đã làm trong vấn đề thiết lập 7. Thứ nhất, mảng mà không phải là cụ thể. Loại mảng cái gì đây? ĐỐI TƯỢNG: Associative. JASON Hirschhorn: Đó là một mảng kết hợp. Và sự khác biệt giữa một là những gì mảng kết hợp và một đối tượng? ĐỐI TƯỢNG: Một mảng đối tượng có chỉ số các số nguyên, và một mảng kết hợp là một chỉ số của một chuỗi, hoặc một cái gì đó như thế. JASON Hirschhorn: Vì vậy, một loạt các đối tượng sẽ có chỉ số của số nguyên, nhưng một đối tượng có các lĩnh vực. Nó có những cái tên các lĩnh vực như tên, nhà, sinh viên. Bạn có một ý tưởng? ĐỐI TƯỢNG: Vâng, kết hợp mảng trong PHP, phải không? Và đối tượng là trong JavaScript? JASON Hirschhorn: Thành thật mà nói, không có khác biệt thực sự giữa hai người. Cả hai đều có dây như các phím, và có thể có bất cứ điều gì về cơ bản như giá trị. Ngôn ngữ khác nhau gọi một Điều mảng kết hợp, một điều một đối tượng. Vì vậy, một cách trung thực, không có thực sự khác biệt, nhưng có chắc chắn một số sự khác biệt cú pháp giữa hai người. Yeah. ĐỐI TƯỢNG: Vậy là đối tượng cũng được mã hóa dưới mui xe như một bảng băm, sau đó? JASON Hirschhorn: Điều gì làm bạn có nghĩa là, mã hóa dưới mui xe? ĐỐI TƯỢNG: Chúng tôi đã nói rằng kết mảng là một kỹ thuật băm bảng. Vì vậy, đối tượng cũng kỹ thuật một bảng băm? JASON Hirschhorn: Tôi sẽ không để trả lời câu hỏi đó. Tôi sẽ lấy lại cho bạn về điều đó. Nhưng tôi sẽ không nghĩ của một trong hai của những người như thế. Tuy nhiên, trong bất kỳ cách nào, mảng kết hợp và đối tượng, nói chung, người sử dụng những các điều khoản thay thế cho nhau. Trong trường hợp này, phần mát mẻ là bạn có thể sử dụng các phím. Chuỗi như là chìa khóa, chứ không phải là chỉ số đơn giản. Vì vậy, tôi đã nói về này cho một lúc. Hy vọng rằng, một số người có nhận được bắt đầu vào ngày này. Chúng ta sẽ viết một số PHP và HTML mã, như vậy mà chúng ta có được một hai cột bảng với tên TF và nhà ở. OK, tôi cũng muốn có một tiêu đề hàng trên bảng này. Vì vậy, tôi sẽ đi thẳng vào điều này. Chúng ta sẽ tập tin, mới, và chúng ta sẽ - OK. Làm thế nào để bắt đầu một bảng? Thẻ là những gì, Michael, để bắt đầu một bảng? ĐỐI TƯỢNG: Bảng. JASON Hirschhorn: Bảng. Và nếu tôi mở một thẻ, những gì khác tôi cần? ĐỐI TƯỢNG: Một cái đầu? Hoặc, tôi đoán, lớp. JASON Hirschhorn: Vì vậy, xin lỗi. Cho rằng chúng ta đã viết doctab, HTML, tất cả những thứ. Nhưng nếu tôi mở thẻ bảng này, những gì khác tôi cần phải viết? cho xác nhận HTML? ĐỐI TƯỢNG: Đóng nó. JASON Hirschhorn: Đóng thẻ. Làm thế nào để viết một thẻ gần bàn? ĐỐI TƯỢNG: Dot giảm bảng. JASON Hirschhorn: Slash bảng, tuyệt vời. Có thể làm cho tinh thần để viết cả của những người với nhau vì bạn đã có để làm điều đó. OK, nếu tôi muốn có một dòng tiêu đề, làm thế nào Tôi viết dòng tiêu đề với tiêu đề? ĐỐI TƯỢNG: Có ít hơn 10 giờ gần - TR, yeah. JASON Hirschhorn: TR? ĐỐI TƯỢNG: Sau đó, cùng một điều, các dấu gạch chéo, yeah. JASON Hirschhorn: OK, và cho tôi hai cột. ĐỐI TƯỢNG: T D? JASON Hirschhorn: OK. Tôi muốn hai cột. Điều này cho tôi hai cột? Bao nhiêu cột này? Một. Vì vậy, hãy sao chép và dán này. Vì vậy, trên thực tế, trên các bài kiểm tra, tất cả các mã này mà chúng tôi đã viết cho đến nay là thực sự cho bạn. Nhưng bạn nên có lẽ vẫn còn biết làm thế nào để viết nó. Yeah. ĐỐI TƯỢNG: Ngôi nhà của bạn là giữa hai người. JASON Hirschhorn: Boom. Nó phải đi ngay, phải không? Tốt cuộc gọi. Vì vậy, một lần nữa, tất cả các mã này thực sự là trao cho bạn trên các bài kiểm tra thực tế. Nhưng nó là thú vị để viết nó, và bạn nên biết làm thế nào để viết nó. Vì vậy, đây là nơi bạn cần để bắt đầu mã của bạn. Những gì chúng ta cần phải viết ngay tại đây? Xin lỗi, tôi cần phải thay đổi tên của tập tin này. Vì vậy, chúng tôi đã lưu nó trong một tập tin HTML., không trong một tập tin PHP.. Những điều này sẽ là vô nghĩa trong một tập tin PHP.. Vì vậy, chúng tôi đang ở trong một tập tin HTML.. Điều đầu tiên là gì Tôi cần phải viết? Tôi muốn đặt một số PHP mã trong một HTML. ĐỐI TƯỢNG: PHP, như cà rốt khác và dấu hỏi PHP, phải không? JASON Hirschhorn: Great. Và làm thế nào để tôi kết thúc không? ĐỐI TƯỢNG: Với một dấu hỏi. JASON Hirschhorn: Đó là tuyệt vời. Đó là điều đầu tiên tôi cần nếu tôi muốn đặt một số mã PHP ở đây. ĐỐI TƯỢNG: Tôi nghĩ một PHP. tập tin có thể mất HTML. JASON Hirschhorn: Vâng. Một tập tin PHP. Có thể mất một HTML và được hiển thị. Đó là xấu của tôi. Tôi chỉ cố gắng bắt chước những gì nó đã được trên các bài kiểm tra. OK, xin lỗi để gây nhầm lẫn bạn. Có, practice.HTML. Bây giờ chúng ta sẽ đặt một số mã PHP in Dòng đầu tiên của là những gì Mã PHP tôi nên viết? Tôi sẽ phải đi qua mảng này và làm cho nó vào một bảng. Yeah. ĐỐI TƯỢNG: Bạn có thể sử dụng một cho H vòng lặp hoặc một vòng lặp. JASON Hirschhorn: OK, những gì Bạn muốn sử dụng không? ĐỐI TƯỢNG: Tôi sẽ sử dụng một vòng lặp for. Cho, và sau đó bạn làm ký hiệu đô la i bằng dấu chấm phẩy 0 đô la ký tôi ít hơn 2. Và sau đó dấu chấm phẩy i đô la ký tôi cộng với cộng. JASON Hirschhorn: Làm thế nào bạn biết sử dụng một 2? ĐỐI TƯỢNG: Bởi vì có hai mảng kết hợp trong lớn hơn mảng kết hợp. JASON Hirschhorn: Vì vậy, điều lớn của không phải là một mảng liên kết. Điều lớn chỉ là một mảng bình thường. Nhưng bạn nói đúng, có hai mảng kết hợp trong mảng lớn hơn của chúng tôi. Đó là lý do tại sao bạn sử dụng hai. Tôi cảm thấy khó chịu giả định rằng họ 2, do đó một cách để viết những gì này mà không có giả định rằng họ 2? ĐỐI TƯỢNG: [nghe được]? JASON Hirschhorn: OK, làm thế nào để bạn viết đó? ĐỐI TƯỢNG: ký hiệu đô la Foreach TFS hoặc như đô la dấu hiệu tf. JASON Hirschhorn: OK, vì vậy cho mỗi TFS như TFS, tôi muốn, bây giờ một lần nữa, có bàn của tôi. Vì vậy, những người có thể cho tôi dòng tiếp theo của mã? ĐỐI TƯỢNG: In, và sau đó trong trích dẫn, tr khung cuối khung, trích dẫn kết thúc. Ngoặc kết thúc, dấu chấm phẩy. JASON Hirschhorn: OK, và những gì mà sẽ làm gì? ĐỐI TƯỢNG: Nó sẽ nói, hàng mới. Nó sẽ đặt tag cho một hàng mới. JASON Hirschhorn: Đúng, PHP này, như chúng tôi đã nói trước đó - điều này PHP sẽ được đánh giá, và sau đó nó sẽ in ra tập tin này một bảng kéo, và sau đó là HTML sẽ được đánh giá. Chúng ta chỉ cần sao chép này HTML chúng tôi đã ở đây. Yeah. ĐỐI TƯỢNG: [nghe được]? JASON Hirschhorn: Xin lỗi? Nó ở ngay đây. Rơi năm 2012. Không nhìn vào các câu trả lời, chúng ta hãy cùng nhau giải quyết nó. Vì vậy, chúng tôi in dòng của bảng. Vì vậy, có lẽ bạn đang trong swing của sự vật. Dòng tiếp theo của những gì mã chúng tôi cần phải viết? Assam, cho tôi những dòng tiếp theo của mã. ĐỐI TƯỢNG: Bạn cần tên của tf. Tf mở dấu ngoặc dấu ngoặc kép tên ngoặc đóng. JASON Hirschhorn: Hãy cho tôi tên của họ. ĐỐI TƯỢNG: Bạn cần in đó. [Interposing TIẾNG NÓI] JASON Hirschhorn: OK, làm thế nào để in nó? [Interposing TIẾNG NÓI] JASON Hirschhorn: Tôi đang mất tích một cái gì đó ngay bây giờ. Tôi đang thiếu gì? ĐỐI TƯỢNG: Bạn cần một dấu đô la. JASON Hirschhorn: Điều gì khác tôi bị mất? Tất cả chúng tôi đã in cho đến nay là tr. ĐỐI TƯỢNG: Đóng tr sau khi nó. JASON Hirschhorn: Vì vậy, chúng ta cần để đóng cửa sau khi tr. Ai nhìn thấy những gì chúng ta đang thiếu trên dòng 16? Yeah, Anna. ĐỐI TƯỢNG: Bạn cần phải mở một td và dấu ngoặc nhọn. JASON Hirschhorn: Và nơi Chúng ta đặt dấu ngoặc nhọn? ĐỐI TƯỢNG: Xung quanh tên tf. JASON Hirschhorn: Như thế này? ĐỐI TƯỢNG: Vâng. Và sau đó đóng td. JASON Hirschhorn: Giống như điều đó không? ĐỐI TƯỢNG: Bạn có cần ngoặc kép đánh dấu bên cạnh các dấu ngoặc nhọn? JASON Hirschhorn: Ngay ở đây? Không, bạn không. Vì vậy, đó là chính xác. Yeah. ĐỐI TƯỢNG: Vì vậy, sự khác biệt giữa các và encatenating với dấu chấm là, nếu bạn sử dụng dấu chấm, bạn phải có dấu ngoặc kép, sau đó một dấu chấm, sau đó các dấu chấm - JASON Hirschhorn: Đúng. Vì vậy, bạn đang nói có một cuối cùng cách viết này như thế. Những gì các nhà điều hành nối trong JavaScript? ĐỐI TƯỢNG: Một dấu cộng. Bạn quên đặt các xoăn cú đúp trở lại. JASON Hirschhorn: Great. Và có một dòng hơn mã mất tích. Ai có thể cho tôi những dòng cuối cùng mã chúng ta đang thiếu? ĐỐI TƯỢNG: Chỉ cần một điều chính xác, chỉ với nhà thay vì tên. Lớn JASON Hirschhorn: Great. Và cú pháp của bạn là chính xác cho nhận được những điều trong một mảng liên kết. Vì vậy, trong các bài kiểm tra thực tế, bạn có thực sự từ bỏ cho đến khi ở đây. Vì vậy, mã này đã được trao cho bạn. Tất cả các bạn đã phải viết là những bốn dòng và nhớ đóng thẻ bảng. Các bạn thực sự đã làm tất cả và nhiều hơn nữa. Yeah. ĐỐI TƯỢNG: Vì vậy, nó sẽ là chức năng như vậy nếu bạn chỉ có tất cả trong một cuộc gọi in lớn, phải không? Và sau đó chỉ cần nối nó trên, vân vân? JASON Hirschhorn: Giống như điều đó không? ĐỐI TƯỢNG: Vâng. Nó sẽ không chỉ nhìn tốt nếu bạn nhìn vào nó khi bạn đang kiểm tra các yếu tố trên trang web của bạn, phải không? JASON Hirschhorn: Tôi đồng ý. Nếu tôi nạp trang web này, tôi sẽ là có thể nhìn thấy mã PHP này, bao giờ? ĐỐI TƯỢNG: số JASON Hirschhorn: số Và thực sự, tôi sẽ không. ĐỐI TƯỢNG: Đây không phải là HTML, phải không? Vì vậy, bạn có thể có thể - JASON Hirschhorn: Vì vậy, PHP này sẽ được đánh giá phía máy chủ. PHP luôn được đánh giá ở phía máy chủ, vì vậy bạn không bao giờ có thể nhìn thấy mã PHP. ĐỐI TƯỢNG: Nhưng bạn có thể xem kết quả của các bản in. JASON Hirschhorn: Đúng vậy. Và nó có thể không trung thực đặt tất cả trên đường dây. Nó có thể định dạng nó độc đáo cho bạn, hoặc nó có thể đặt nó trên một dòng. Không rõ ràng. Nhưng có, điểm tốt. ĐỐI TƯỢNG: Làm thế nào đến đó của Không tô màu văn bản cho bất kỳ các lệnh PHP? Bởi vì tôi nhớ nhìn thấy đó. JASON Hirschhorn: Bởi vì đó là một HTML. Nộp lên đây ở đầu trang. Có bạn đi. ĐỐI TƯỢNG: Nếu chúng tôi đã làm phương pháp ban đầu với cho các vòng, phải, nếu chúng ta muốn truy cập vào một TFS, chúng tôi sẽ làm khung TFS 0 khung, sau đó [Nghe được]? JASON Hirschhorn: Bạn sẽ - do đó, bạn đang nói cho cho vòng lặp, bạn sẽ làm gì trong khung đô la dấu hiệu TFS 1 hoặc tôi, phải. Hoặc ký hiệu đô la tôi đóng khung và sau đó khung vuông dấu ngoặc kép, yeah. OK, tuyệt vời. Chúng ta có thêm một một cách nhanh chóng. Bảy phút, vì vậy tôi muốn đi qua này. Đây là một ví dụ khác. Chúng tôi là một ngôn ngữ hoàn toàn khác bây giờ. Chúng tôi có một số mã HTML. Đó là loại nhỏ trên màn hình, nhưng Tôi muốn bạn để xem xét thông qua nó thực sự nhanh chóng, và có thể ai đó cho tôi biết, nếu tôi được là để tải trang web này, những gì tôi nhìn thấy? Mô tả tất cả mọi thứ về trang web này. Noah? Tôi sẽ xem những gì? ĐỐI TƯỢNG: Mã ở cuối phía trước của Google với một cảm giác về văn bản và một nút gửi. JASON Hirschhorn: Và những gì nút sẽ nói gì? ĐỐI TƯỢNG: Submit. Oh, tìm kiếm. Tôi xin lỗi. JASON Hirschhorn: Nó sẽ nói tìm kiếm. Hãy nhớ rằng, tên. Những gì chúng ta sử dụng tên gì? Thuộc tính tên này, những gì được sử dụng cho? [Interposing TIẾNG NÓI] ĐỐI TƯỢNG: Đó là tên của nó khi nó nhấp? JASON Hirschhorn: Đó có thể là. Nhưng những gì chúng ta thường thấy - tại sao chúng ta cho tên hàng đợi này? Tại sao chúng ta thấy không? Yeah. ĐỐI TƯỢNG: Không có trở thành chỉ số của biến siêu toàn cầu? JASON Hirschhorn: Vâng, nói chung khi mẫu này sẽ trình, và sau đó, nơi điều này sẽ trình? Trang gì? Noah, những gì trang này sẽ trình? ĐỐI TƯỢNG: Tôi không chắc chắn. JASON Hirschhorn: ở đâu chúng ta có thể có thể tìm thấy nó? Nơi nào bạn tìm thấy những gì trang nó trình để? Những gì dòng mã? ĐỐI TƯỢNG: hành động mẫu. JASON Hirschhorn: Chính xác. Hành động. Vì vậy, nó chịu sự trang tìm kiếm. Tìm kiếm dấu gạch chéo ngược. Vì vậy, đó là chính xác. Phương pháp gì? ĐỐI TƯỢNG: Nhận. JASON Hirschhorn: Nhận. Chính xác. Vì vậy, chúng ta đọc này. Điều này sẽ là một hình thức. Bạn đúng. Hai điều về hình thức, tiêu đề của trang và hàng đầu sẽ là Google. Vì vậy, đây là hai câu hỏi mà bạn nên có thể trả lời về trang này. Nếu HTML này sống tại trang web này và người sử dụng đầu vào lỗi vào văn bản này lĩnh vực ngay tại đây, những gì URL sẽ người sử dụng tìm thấy mình trên nộp mẫu đơn? Vì vậy, chúng tôi có điều này ngay tại đây. Tôi sẽ quay trở lại trang này, mặc dù. Tôi sẽ viết lên một phần đầu tiên này. Tất cả mọi người có thể thấy ở đây? OK, Mario, bạn nghĩ rằng bạn biết? Trang gì? ĐỐI TƯỢNG: Dấu gạch chéo ngược tìm kiếm. JASON Hirschhorn: Tôi sẽ để di chuyển xuống đây. OK, dấu gạch chéo ngược câu hỏi tìm kiếm đánh dấu q bằng lỗi. Bất kỳ ai có một đề nghị khác nhau? Yeah. Vì vậy, làm thế nào để chúng ta có được điều này? Vâng, chúng tôi đã nhìn thấy điều này trước đây. Và bạn đến với điều này trước đó. Bạn đã đúng, Noah, rằng hành động cho chúng ta những gì trang chúng ta sẽ. Chúng tôi cũng biết phương pháp. Chúng tôi đang làm có được. Và sự khác biệt giữa nhận và bài được mà có được hiển thị trong URL và bài không. Vì vậy, nếu tôi đã viết bài ngay trong phương pháp, những gì sẽ là khác nhau? ĐỐI TƯỢNG: Nó sẽ chỉ được tìm kiếm dấu gạch chéo. JASON Hirschhorn: Nó sẽ chỉ được cắt giảm tìm kiếm. Không có gì hơn đây sẽ xảy ra. Nhưng vì đó là một nhận được, URL được hiển thị như sau. Đầu tiên chúng ta thấy một dấu hỏi và chúng tôi nhìn thấy tên và giá trị. Nói rằng đã có một trường văn bản khác và Tôi đưa cho nó một cái tên của r và tôi nhập vào một giá trị, sâu bướm. Điều này sẽ bây giờ như thế nào? Tôi có một lĩnh vực nhiều văn bản hơn, tôi đưa ra một tên của r và giá trị của con sâu bướm. ĐỐI TƯỢNG: Sau khi thanh bạn muốn có sâu bướm ký hiệu. JASON Hirschhorn: Đó là không ký hiệu. ĐỐI TƯỢNG: Hoặc chỉ cần bất cứ điều gì và biểu tượng. JASON Hirschhorn: Vâng, không có. Bạn nói đúng, tôi đã sai. Điều đó giống như một gam. ĐỐI TƯỢNG: Caterpillar. r bằng bánh xích, xin lỗi. JASON Hirschhorn: Có không r trong đó không? ĐỐI TƯỢNG: Không, không. JASON Hirschhorn: Chúng ta sẽ nói về điều đó sau giờ học. Đó chính quyền. Vì vậy, và là chính xác. Và sau đó bạn có thể có nhiều trong số này, và họ tất cả sẽ được nối cùng với đó và. Vì vậy, đó là chính xác. Có thêm một câu hỏi. Phác họa DOM của HTML này, bắt đầu với tài liệu. Chúng ta có thể làm điều đó trong hai phút. Chúng tôi sẽ làm điều đó ở đây. Tôi sẽ quay trở lại trang web này. OK, chúng ta bắt đầu với tài liệu. Cái gì tiếp theo? Vì vậy, khi bạn đang đọc thông qua - ĐỐI TƯỢNG: HTML. JASON Hirschhorn: HTML là tới. Chúng ta sẽ đi từ khóa bằng thẻ. Có gì sau khi HTML? ĐỐI TƯỢNG: Trưởng. JASON Hirschhorn: Trưởng. Có gì sau khi người đứng đầu? ĐỐI TƯỢNG: Tiêu đề. JASON Hirschhorn: Tiêu đề. Và danh hiệu có giá trị của Google, nhưng tôi sẽ không để viết rằng trong lúc này. OK, nơi mà cơ thể đi đâu? ĐỐI TƯỢNG: Cũng sắp tắt của HTML. JASON Hirschhorn: Chính xác. Cơ thể nói ra đây. Không hiểu tại sao tất cả mọi người đó là trường hợp? Có thể bạn sẽ có thể tìm ra điều này, quá, ngay cả khi tôi không có thụt đầu dòng tốt đẹp. Thụt đầu dòng thứ cho nó đi, nhưng bạn có thể thấy rằng các thẻ đầu có bị đóng cửa, có nghĩa là chúng ta có thể không có thể đi xuống đây. Chúng ta cần phải quay trở lại bất cứ điều gì là ngay trước khi người đứng đầu thẻ, hoặc dưới đó. Chúng tôi thậm chí với thẻ đầu. Và dưới cơ thể đi hình thức. Theo hình thức, có hai yếu tố đầu vào. OK. Đó là tất cả tôi có. Bài kiểm tra 1 là ngày mai. Tôi rất vui mừng cho các bạn. Nó sẽ là một vụ nổ. Nếu bạn có - ĐỐI TƯỢNG: [vỗ tay] JASON Hirschhorn: Oh dừng lại, dừng lại. Nhưng không, tôi đùa. Nếu bạn có bất kỳ câu hỏi, phải sau khi phần, tôi sẽ được ở bên ngoài. Nếu bạn có bất kỳ câu hỏi tối nay, cảm thấy tự do để gọi, email, Gchat, nhà cung cấp chim bồ câu tôi. May mắn vào ngày mai. Có một kì nghỉ lễ Tạ ơn tuyệt vời, nếu tôi không nhìn thấy bạn trước đó. Và tôi sẽ nhìn thấy bạn sau Lễ Tạ Ơn hôm thứ Ba cho thức của chúng tôi phần bên bao giờ hết. ĐỐI TƯỢNG: [nghe được]. JASON Hirschhorn: Great. OK, tôi sẽ gặp các bạn tiếp theo tuần, hoặc trong hai tuần. Và may mắn vào ngày mai.