[MUSIC CHƠI] DAVID Malan: Được rồi, đây là CS50. Đây là phần cuối của tuần tám. Và hôm nay, chúng ta bắt đầu để điền vào một số mảnh khi nói đến xây dựng những thứ trên web. Vì vậy, nhớ lại rằng vào thứ Hai chúng tôi dành nhiều thời gian hơn trên PHP, đó là năng động này ngôn ngữ lập trình cho phép chúng ta ra, trong số khác điều, HTML và nội dung khác như rằng chúng ta sẽ muốn xem. Nhưng chúng tôi đã không thực sự nhìn như thế nào chúng ta sẽ lưu trữ bất kỳ thông tin. Thật vậy, hầu như bất kỳ của các siêu các trang web thú vị mà bạn đến thăm hôm nay có một số loại cơ sở dữ liệu trở lại vào cuối, phải không? Facebook chắc chắn lưu trữ rất nhiều dữ liệu về tất cả chúng ta và tất cả các cửa hàng Gmail các email của bạn. Và như vậy, nhiều trang web khác không chỉ nội dung tĩnh đó là thông tin. Nó thực sự năng động trong một số cách. Bạn cung cấp đầu vào, nó cập nhật các trang cho người khác. Bạn nhận được tin nhắn, bạn gửi thông điệp, và vv. Vì vậy, ngày hôm nay, chúng ta nhìn kỹ hơn nền tảng của một dự án rằng bạn sẽ nhảy vào tiếp theo tuần, CS50 Tài chính, được thực sự sẽ có bạn xây dựng một cái gì đó không có trong C, nhưng trong PHP. Một trang web trông giống một chút gì đó như thế này cho phép mua và bán cổ phiếu có thực sự đi để vẽ theo thời gian thực dữ liệu cổ phiếu từ Yahoo Finance. Và như vậy cuối cùng, bạn sẽ có ảo giác cho chính mình và cho người sử dụng rằng bạn đang thực sự mua và bán cổ phiếu và nhận được thời gian gần thực cập nhật, quản lý một danh mục đầu tư, tất cả đều là sẽ yêu cầu có, cuối cùng, một cơ sở dữ liệu của người sử dụng. Vì vậy, nói cách riêng của bạn, đặc biệt là nếu bạn không siêu quen thuộc với máy tính khoa học hoặc cơ sở dữ liệu, những gì bạn có biết một cơ sở dữ liệu được ngay bây giờ, trong điều kiện không kỹ thuật? Nó là gì? Làm thế nào bạn sẽ mô tả nó cho một người bạn cùng phòng hay một người bạn? Đung [Không nghe thấy] thông tin [không nghe] DAVID Malan: Vì vậy, một danh sách các thông tin, hoặc một store-- một danh sách các thông tin mà bạn có thể muốn lưu trữ về một cái gì đó, giống như một người sử dụng. Và những gì người dùng có liên kết với chúng? Nếu bạn là một người sử dụng trên Facebook hay Gmail, đặc điểm là những gì rằng tất cả chúng ta phải sử dụng? Giống như, những gì có thể là một số trong những cột trong bảng tính mà chúng tôi ám chỉ thời gian qua? Bởi vì một lần nữa, bạn có thể suy nghĩ của một cơ sở dữ liệu thực sự là một ưa thích Excel tập tin hoặc Google Bảng tính hoặc Apple tập Numbers. Vì vậy, những gì bạn nghĩ khi bạn nghĩ về một người sử dụng? Họ có những gì? Cái gì thế? Đung A tên. DAVID Malan: Một tên. Vì vậy, nếu tên, như, David Malan sẽ là tên của một số người dùng. Không một người sử dụng có gì khác? Đung An ID. DAVID Malan: Một ID. Vì vậy, như một số ID, như Harvard của bạn ID hay Yale ID Net của bạn hoặc tương tự. Những gì người khác có thể một người dùng có? Đung Password. DAVID Malan: Một mật khẩu, có thể một địa chỉ, có thể một số điện thoại, có thể một địa chỉ email. Vì vậy, có chùm và các lĩnh vực này thể loại vượt ra ngoài tầm kiểm soát một cách nhanh chóng ngay sau khi bạn bắt đầu nhận ra, oh, chúng ta hãy lưu này và chúng ta hãy lưu này và đó. Nhưng làm thế nào để chúng ta thực sự làm điều đó? Vì vậy, một lần nữa, các mô hình về tinh thần để có ngày hôm nay như chúng ta nhảy vào SQL thực tế, Structured Query Language, là một cơ sở dữ liệu mà trông như thế này. Nó chỉ hàng và cột. Và bạn có thể tưởng tượng Google Spreadsheets hoặc bất kỳ số lượng các chương trình khác. Nhưng quan trọng về MySQL, đó là những gì phần mềm cơ sở dữ liệu, chúng tôi đang sử dụng, sự tự do công khai available-- sử dụng Facebook nó và bất kỳ số websites-- khác cơ sở dữ liệu lưu trữ những thứ relationally. Và một cơ sở dữ liệu quan hệ chỉ có nghĩa là một nghĩa đen lưu trữ dữ liệu trong các hàng và cột. Đó là đơn giản như vậy. Vì vậy, ngay cả một cái gì đó giống như Oracle bạn có thể đã nghe nói về chung là một cơ sở dữ liệu quan hệ. Và bên dưới mui xe, nó lưu trữ dữ liệu trong các hàng và cột. Và Oracle tính phí cho bạn một rất nhiều tiền để làm điều đó, trong khi đó chi phí MySQL bạn không có gì cho nhau. Vì vậy, SQL sẽ cung cấp cho chúng tôi ít nhất bốn hoạt động. Khả năng chọn dữ liệu, như đọc dữ liệu, chèn, xóa, và cập nhật dữ liệu. Nói cách khác, những người đang có thực sự bốn hoạt động chính mà sẽ cho phép chúng ta thay đổi công cụ trong những hàng và cột. Các công cụ mà chúng ta sẽ sử dụng ngày nay đặc biệt để tìm hiểu SQL và chơi với nó một lần nữa được gọi là PHP MyAdmin. Đó là công cụ dựa trên web. Tổng số ngẫu nhiên mà nó được viết bằng PHP. Nhưng nó sẽ cung cấp cho chúng ta một đồ họa giao diện người sử dụng để chúng tôi có thể thực sự tạo ra các hàng và cột và sau đó nói chuyện với họ thông qua mã. Vì vậy, bây giờ chúng ta bắt đầu những gì tôi nghĩ là thẳng thắn loại của quá trình thú vị của xây dựng kết thúc trở lại của trang web, những phần mà người dùng không nhìn thấy, nhưng chắc chắn làm những chăm sóc về, bởi vì đó là thay của dữ liệu đi. Vì vậy, tương tự như C và một chút ít như PHP, SQL, hoặc một cơ sở dữ liệu hỗ trợ SQL, có loại ít nhất là những dữ liệu và chùm của người khác. CHAR, VARCHAR, INT, bigint, Thập phân, và DATETIME. Và có một toàn bộ loạt các tính năng khác, nhưng chúng ta hãy làm điều này bằng một ví dụ thực tế. Tôi sẽ đi vào CS50 IDE nơi, trước, tôi đã đăng nhập và tôi cũng đã đến thăm một URL cho công cụ này được gọi là PHP MyAdmin. Và trong vấn đề thiết lập bảy, chúng tôi sẽ cho bạn biết chính xác làm thế nào để có được giao diện này cũng. Ở góc trên bên tay trái, nhận thấy nó nói giảng. Và điều đó chỉ có nghĩa là trước, tôi tạo ra một cơ sở dữ liệu được gọi là bài giảng rỗng mà không có bảng tính trong nó được. Không có các hàng và cột. Bởi vì đầu tiên điều chúng tôi đang đi làm được bắt đầu để tạo ra một bảng đó là sẽ lưu trữ người dùng của chúng tôi. Vì vậy, theo nghĩa đen hơn đây về bên phải, tôi sẽ nói cho các cơ sở dữ liệu Tôi muốn có một bảng gọi là Người dùng. Vì vậy, điều này cũng giống như các tập tin mà tôi muốn để lưu trữ tất cả các dữ liệu của tôi trong. Và có bao nhiêu cột? Vâng, chúng ta hãy giữ cho nó đơn giản cho bây giờ. Tôi chỉ muốn lưu trữ như một tên người dùng và tên cho một người sử dụng. Chúng tôi sẽ bắt đầu nhỏ. Vì vậy, tôi muốn tổng hai cột. Và tôi sẽ đi trước và bấm Go. Và sau đó, đối với các cột, những gì tôi sẽ để do-- nếu internet này cooperates-- tất cả các quyền, vì vậy chúng tôi sẽ cố gắng một lần nữa. Tôi sẽ tạo ra một bảng gọi là Người sử dụng với hai cột, nhấn Go, OK. Bây giờ chúng tôi đã có nó thực sự nhanh chóng. Cảm ơn bạn, thực hiện rất tốt. Được rồi, vì vậy những gì chúng ta muốn các cột được gọi là? Vì vậy, một trong những sẽ được gọi là Tên đăng nhập. Vì vậy, tất cả tôi thấy here-- và giao diện thẳng thắn được một chút xấu xí cuối cùng, một khi bạn bắt đầu gõ vào tất cả các dữ liệu này. Nhưng mà sắp xếp của những gì tốt đẹp là nghịch lý, tôi là tạo cột, nhưng công cụ này đã ngu ngốc đặt chúng ra thành hàng vì vậy mà tôi có thể cấu hình các cột. Vì vậy, có hai khoảng trống đó dưới danh. Và một trong những lĩnh vực tôi muốn gọi Username, và các lĩnh vực khác mà tôi muốn gọi tên. Và bây giờ tôi phải chọn kiểu dữ liệu cho những điều này. Vì vậy, trong khi trong Excel và Google Spreadsheets, nếu bạn muốn có một cột, bạn có nghĩa chỉ cần gõ Tên hoặc Tên đăng nhập, nhấn Enter. Có thể bạn làm cho nó đậm chỉ cho rõ ràng, nhưng đó là nó. Bạn không chỉ định loại của các cột. Bây giờ trong Google Spreadsheets hoặc Excel, bạn có thể xác định cách dữ liệu được trả lại. Bạn có thể vào menu Format, và bạn có thể xác định có dấu hiệu đồng đô la như thế này, hiển thị này như một giá trị dấu chấm động. Vì vậy, đó là tinh thần tương tự rằng những gì chúng tôi sắp làm, nhưng điều này thực sự sẽ buộc dữ liệu là một loại nhất định. Bây giờ, mặc dù lúc nãy tôi cho biết chỉ có một vài kiểu dữ liệu, có thực sự là một toàn bộ rất nhiều, và họ ở mức độ đặc hiệu khác nhau. Và như một sang một bên, bạn thậm chí có thể làm những điều ưa thích như hình học lưu trữ bên trong một cơ sở dữ liệu. Bạn có thể lưu trữ những thứ như tọa độ GPS và thực sự tìm thấy, toán học, điểm được gần những người khác. Nhưng chúng ta sẽ giữ này siêu đơn giản và đi lên đến đây, tất cả các cái gọi là kiểu chuỗi. Vì vậy, đây là một danh sách của một bó toàn bộ các tùy chọn. CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. Và đó là loại áp đảo. Và thật không may, phần nào nghịch lý đến C, một CHAR là không thực sự là một CHAR. Nếu bạn chỉ định trong cơ sở dữ liệu rằng kiểu dữ liệu của bạn là CHAR, điều đó có nghĩa rằng, vâng, đó là một CHAR, nhưng nó là một hoặc nhiều ký tự. Và bạn phải xác định có bao nhiêu ký tự bạn muốn. Vì vậy, những gì là một điển hình chiều dài cho một tên người dùng? Có giới hạn thông thường? Đung [Không nghe thấy] DAVID Malan: 16 có thể? Một cái gì đó như thế. Bạn biết đấy, trở lại trong ngày, nó được sử dụng để được tám. Đôi khi đó là 16, đôi khi nó thậm chí còn nhiều hơn thế. Và như vậy, điều này không có nghĩa là cung cấp cho tôi một CHAR. Điều này có nghĩa là tôi phải xác định chiều dài của lĩnh vực này, và bây giờ tôi có thể nói một cái gì đó giống như 16. Và có một thương mại giảm ở đây. Vì vậy, chúng ta sẽ thấy trong một thời điểm rằng điều này có nghĩa là một, mỗi tên người dùng có được 16 ký tự. Nhưng chờ một phút, M-A-L-A-N. Nếu đó là tên người dùng của tôi và tôi chỉ sử dụng năm, những gì bạn sẽ đề xuất rằng các cơ sở dữ liệu để làm cho 11 nhân vật khác mà Tôi đã dành không gian cho? Bạn sẽ làm gì? Đung [Không nghe thấy] DAVID Malan: Vâng, chỉ cần làm cho họ tất cả null. Làm cho họ không gian. Nhưng có lẽ null, do đó, một rất nhiều số không dấu gạch chéo ngược. Vì vậy, một mặt, chúng tôi đã bây giờ làm chắc chắn rằng tên người dùng của tôi có thể không nhiều hơn 16 ký tự. Và mặt trái của việc đó là rằng nếu tôi có một cái tên rất dài hoặc muốn có một thực sự lâu dài username như một số bạn chàng trai có thể có trong trường đại học mà hay tại Yale.edu, bạn không thể có một. Và do đó, trong thực tế, nếu bạn đã bao giờ đăng ký cho một trang web và bạn nhận được mắng nói mật khẩu của bạn quá dài hoặc tên người dùng của bạn quá dài, nó đơn giản chỉ vì một lập trình viên, khi cấu hình cơ sở dữ liệu của mình, quyết định rằng lĩnh vực này sẽ không dài hơn chiều dài này. Được rồi, vì vậy những gì nếu chúng tôi tiến hành để đặt tên? Bao lâu nên một tên điển hình của con người được? Có bao nhiêu ký tự, 16? Tôi đoán chúng ta có thể tìm một người nào đó trong căn phòng này nơi của cộng đầu tiên của mình cuối cùng tên dài hơn 16 ký tự. Vì vậy, những gì là tốt hơn so với đó, 17? 18? 25? Lớn hơn? 30? Đung [Không nghe thấy] DAVID Malan: 5.000, lạy Chúa. Vì vậy, có lẽ đó là một phong nha trên ràng buộc, chúng ta cũng sẽ nói. Và ở đây chúng tôi có loại để thực hiện một cuộc gọi phán quyết. Giống như, không có câu trả lời đúng ở đây. Infinite là không hoàn toàn có thể, bởi vì chúng ta cuối cùng sẽ have-- chúng tôi sẽ chạy ra khỏi bộ nhớ. Vì vậy, chúng ta phải thực hiện một cuộc gọi phán quyết tại một số điểm. Rất phổ biến sẽ được, ví dụ, để use-- và hãy để tôi chỉ định CHAR đây như before-- 255 là nghĩa đen giới hạn trên các phần mềm cơ sở dữ liệu này nhiều năm về trước. Và như vậy, rất nhiều người chỉ nói tốt. 255 là giới hạn. Hãy chỉ sử dụng tối đa. Và điều này là khá vô lý. Giống như, nếu bạn gõ một ai đó đặt tên cho 200 ký tự cộng, rằng một chút vô lý. Nhưng, hãy nhớ rằng không phải là ASCII hệ thống chỉ dành cho các nhân vật. Và như vậy, đặc biệt là trong một rất nhiều ngôn ngữ châu Á nơi có nhân vật chúng ta không thể thể hiện trên bàn phím như Mỹ của tôi bàn phím, một số nhân vật thực sự mất 16 bit thay vì tám bit. Và như vậy, điều này thực sự không có gì là không hợp lý rằng chúng ta cần nhiều hơn không gian, nếu chúng ta muốn để phù hợp với nhân vật lớn hơn rất Mỹ những trung tâm chúng tôi đã có xu hướng để thảo luận. Vì vậy, chúng tôi cần một số ràng buộc trên. Tôi không biết những gì tốt nhất là, nhưng 255 nói chung là một trong những phổ biến. 25 cảm thấy thấp. 16, 32 cảm thấy thấp. Tôi sẽ phạm sai lầm ở một bên của một cái gì đó cao hơn. Nhưng có một thương mại giảm, như mọi khi. Là gì, có lẽ, rõ ràng thương mại giảm của 255 ký tự đặt cho tên của tất cả mọi người trong cơ sở dữ liệu của tôi? Đung [Không nghe thấy] DAVID Malan: Đó là gì? Đung [Không nghe thấy] DAVID Malan: Đó là một nhiều bộ nhớ, phải không? M-A-L-A-N. Tôi vừa lãng phí 250 nhân vật chỉ để lưu trữ tên của tôi phòng thủ, chỉ trong trường hợp một người nào đó trong lớp có một tên thực sự dài. Đó dường như là một sự đánh đổi không đáng có. Vì vậy, nó chỉ ra rằng SQL, ngôn ngữ cơ sở dữ liệu này, một cái gì đó thực sự hỗ trợ gọi là VARCHAR, hay biến CHAR. Và đây là loại tốt đẹp ở chỗ này cho phép bạn chỉ định không phải là một cố định chiều rộng, nhưng đúng hơn, có chiều rộng biến. Và đặc biệt hơn, một chiều rộng tối đa của lĩnh vực này. Vì vậy, điều này có nghĩa là một tên có thể không được vượt quá 250 ký tự, nhưng chắc chắn nó có thể ít hơn. Và cơ sở dữ liệu sẽ được thông minh. Nếu bạn đặt vào M-A-L-A-N, nó chỉ sẽ sử dụng năm, có lẽ sáu byte cho như một ký tự null dấu, và không dành thêm 249 hoặc 250 byte không cần thiết. Vì vậy, điều này có vẻ như tôi nên đã bắt đầu với câu chuyện này. Nhưng luôn luôn có một sự cân bằng. Vì vậy, một mặt, một tên người dùng Tôi đã quy định phải được mã hóa cứng ở tuổi 16, và có lẽ đó là không cuộc gọi phải, có thể nó là, nhưng tại sao không sử dụng Varchars cho tất cả mọi thứ? Nó tồn tại vì một lý do. Tại sao không sử dụng varchars cho mọi lĩnh vực có chiều dài bạn không biết trước nếu nó có vẻ là một điều tuyệt vời, đúng không? Chỉ sử dụng không gian nhiều như bạn cần lên đến giới hạn này? Đung chậm. DAVID Malan: Speller? Đung Làm cho nó chậm hơn? DAVID Malan: Oh, nó chậm hơn. Tốt, đó là hầu như luôn luôn câu trả lời, thẳng thắn. Giống như, sự cân bằng là gì? Nó hoặc tốn nhiều không gian hơn hoặc nó tốn nhiều thời gian hơn. Vì vậy, trong trường hợp này, nó có thể chậm hơn. Tại sao? Đung [Không nghe thấy] xác định [không nghe được]. DAVID Malan: Tốt. Vì vậy, bạn có thể nhớ lại từ thậm chí PSED5, chơi với cách tiếp cận của bạn vào từ điển, nếu bạn phải cấp phát bộ nhớ động hoặc giữ phát triển một bộ đệm, mà thực sự có thể được làm chậm. Nếu bạn phải gọi malloc bên dưới mui xe và có thể đó là những gì MySQL làm, để chắc chắn rằng có thể là trường hợp. Và nếu bạn nghĩ rằng cách trở lại PSet-- hoặc thậm chí tuần hai, khi chúng tôi đã làm những việc như tìm kiếm nhị phân hoặc thậm chí tìm kiếm tuyến tính, một trong những điều tốt đẹp về mọi lời trong một cơ sở dữ liệu hoặc từng chữ trong một cột được chính xác chiều dài tương tự, thậm chí nếu một bó toàn bộ những nhân vật đang trống, là bạn có thể sử dụng truy cập ngẫu nhiên trên dữ liệu của bạn, phải không? Nếu bạn biết rằng mỗi từ 16 ký tự đi, bạn có thể sử dụng con trỏ số học, do đó, để nói chuyện, và đi với chúng ta 16, 32, 48, 64, và bạn chỉ có thể nhảy ngay lập tức sử dụng số học để bất kỳ từ nào trong cơ sở dữ liệu của bạn. Trong khi đó, nếu đó là một VARCHAR, điều gì làm bạn thay vì phải làm gì? [PHONE Ringing] Nếu đó là một VARCHAR, bạn không thể sử dụng truy cập ngẫu nhiên. Những gì bạn có để tìm kiếm hay làm gì? Yeah? Đung [Không nghe thấy] DAVID Malan: Nhìn thông qua các dấu vết whole-- thông qua toàn bộ danh sách tìm kiếm những gì, có khả năng nhất? Những loại giá trị đặc biệt? Đung [Không nghe thấy] DAVID Malan: Nhìn cho Terminators rỗng mà phân chia ranh giới phân tách các từ. Vì vậy, một lần nữa, một sự cân bằng, và không có câu trả lời đúng. Nhưng đây là nơi, đặc biệt là khi người dùng của bạn có được nhiều và tải của bạn trên máy chủ của bạn, Số người sử dụng nó được cao, thực tế đây là quyết định không tầm thường. Vì vậy, chúng ta có thể để lại những vì điều này, nhưng hãy di chuyển xuống trên bên phải chỗ này. Bây giờ, có một vài cột nơi mà chúng tôi phải thực hiện một cuộc gọi phán quyết. Liệu nó có ý nghĩa để cho phép một người sử dụng của tên, tên đăng nhập của người dùng hoặc một người sử dụng của name, là null? Đó là, chỉ trống. Cảm thấy một chút vô nghĩa, vì vậy tôi không đi kiểm tra những hộp. Nhưng hóa ra trong một cơ sở dữ liệu, bạn có thể nói, ai đó có thể tùy chọn có giá trị này. Cột này không có để thực sự có mặt ở đó. Bây giờ, có thả này down menu. Và nhận thấy tôi vẫn còn trong hàng đầu tiên ở đó, vì vậy tôi đang nói về tên người dùng hiện nay. Và nó chỉ ra rằng một cơ sở dữ liệu, không giống như chỉ một bảng tính đơn giản, có tính năng mạnh mẽ được gọi là chỉ số. Và một chỉ là một cách để kể cơ sở dữ liệu trước rằng tôi là con người là thông minh hơn bạn. Tôi biết những gì loại của các truy vấn, chọn hoặc chèn hoặc xóa hoặc cập nhật, rằng mã của tôi sẽ kết thúc lên làm trên cơ sở dữ liệu này. Tôi muốn đọc rất nhiều dữ liệu. Tôi muốn chèn rất nhiều dữ liệu. Tôi muốn liên tục xóa rất nhiều dữ liệu. Nếu tôi biết rằng tôi sẽ được truy cập vào một lĩnh vực như Username rất nhiều, Tôi đánh phủ đầu có thể nói cho cơ sở dữ liệu, tôi biết nhiều hơn bạn, và tôi muốn nghị định bạn nên chỉ số lĩnh vực này. Trường hợp lập chỉ mục một trường hoặc một cột có nghĩa là các cơ sở dữ liệu trước nên vay mượn một số ý tưởng từ, như, tuần thứ tư và năm và sáu từ CS50 và thực sự xây dựng một cái gì đó giống như một tìm kiếm nhị phân cây hoặc một cái gì đó thường gọi là cây B rằng bạn sẽ tìm hiểu trong một lớp học như CS124 tại Đại học Harvard, một lớp các thuật toán, hoặc bất kỳ số nơi khác. Các cơ sở dữ liệu và thông minh những người thực hiện nó sẽ tìm ra cách để lưu trữ mà bảng thông tin trong bộ nhớ để tìm kiếm và các hoạt động khác là siêu nhanh. Bạn không cần phải làm điều đó. Bạn không cần phải thực hiện tìm kiếm tuyến tính hoặc tìm kiếm nhị phân hoặc hợp nhất phân loại hoặc lựa chọn sắp xếp, bất kỳ đó. Các cơ sở dữ liệu nào đó cho bạn nếu bạn nói nó đánh phủ đầu để chỉ số lĩnh vực này. Và bạn có thể nhìn thấy quá, có một số đặc điểm khác chúng ta có thể nói với các cơ sở dữ liệu để thực thi. Những gì nó có thể có nghĩa là nếu tôi chọn Unique từ trình đơn này, chỉ bằng trực giác? Yeah? Đung [Không nghe thấy] DAVID Malan: Yeah, Tên người dùng có phải là duy nhất. Đây có phải là một điều tốt hay điều xấu cho một cơ sở dữ liệu, cho một trang web với người sử dụng? Tên người dùng phải là duy nhất? Ừ, có lẽ. Nếu đó là những gì lĩnh vực chúng tôi sử dụng để đăng nhập, bạn không thực sự muốn mọi người có những cảm nhận tương tự hoặc tên người dùng. Vì vậy, chúng ta có thể có các cơ sở dữ liệu thực thi mà như vậy mà bây giờ trong mã PHP của tôi hoặc bất kỳ ngôn ngữ, Tôi không phải, ví dụ, kiểm tra nhất thiết không tên người dùng này tồn tại trước khi tôi để cho một người nào đó đăng ký? Các cơ sở dữ liệu sẽ không để cho hai người được đặt tên David hoặc Malans đăng ký trong trường hợp này. Và như một sang một bên, mặc dù điều này menu chỉ cho phép bạn chọn một, một chỉ số duy nhất là một trong đó là lập chỉ mục cho hiệu suất siêu nhanh, nhưng nó cũng thực thi độc đáo. Và chúng tôi sẽ trở lại với những gì hai người kia có nghĩa là chỉ trong một khoảnh khắc. Trong khi đó, nếu tôi đi đến hàng thứ hai của tôi, mà là tên của người sử dụng, tôi nên xác định rằng tên nên là duy nhất? Không, bởi vì bạn có thể chắc chắn have-- không có hai David Malans trong căn phòng này, có khả năng nhất. Nhưng nếu chúng ta chọn một tên khác nhau, chúng tôi chắc chắn có thể có va chạm. Hãy suy nghĩ lại để băm bảng và các loại tương tự. Vì vậy, chúng tôi chắc chắn không muốn để làm cho lĩnh vực tên duy nhất. Vì vậy, chúng tôi chỉ đi để lại đó là dấu gạch ngang, dấu gạch ngang, dấu gạch ngang, không có gì. Và tôi sẽ phải rời khỏi mọi thứ khác một mình. Thật vậy, hầu hết các lĩnh vực chúng ta sẽ không phải quan tâm. Và khi tôi đã sẵn sàng để cứu này, nếu internet hợp tác, Tôi bấm Save, và rất, rất, rất từ từ hiện cơ sở dữ liệu được lưu. Và bây giờ tôi trở lại này giao diện, trong đó thừa nhận, là áp đảo ở cái nhìn đầu tiên. Nhưng tất cả tôi sẽ làm là nhấp chuột vào mục Users từ ở đầu bên trái. Tôi sẽ đi lên đây, nhấp Người sử dụng, và theo mặc định, nó đã thực hiện một số SQL, nhưng thêm vào đó trong một thời điểm. Dưới đây chỉ là một bản tóm tắt về những gì tôi đã làm. Và không phải lo lắng rằng bạn nhìn thấy đề cập đến của Latin và Thụy Điển ở đây. Những người chỉ mặc định cài đặt, vì MySQL ban đầu, hoặc PHP MyAdmin, một trong hai đã xảy ra được viết bởi một số người Thụy Điển. Nhưng nó không liên quan trong trường hợp của chúng tôi ở đây. Được rồi, vậy tại sao tất cả điều này thú vị? Hóa ra, tôi có thể chèn dữ liệu vào một cơ sở dữ liệu bằng cách viết mã. Và tôi đi trước và trong tập tin của tôi ở đây, tôi sẽ đi trước và giả vờ như này là dây vào mà cơ sở dữ liệu, mà nó không phải là vào lúc này, nhưng nó sẽ là khi chúng tôi nhận được cho vấn đề thiết lập bảy. Và tôi sẽ đi trước và thực hiện một chức năng gọi là truy vấn, mà chúng tôi sẽ cung cấp cho bạn trong vấn đề đặt mã phân phối bảy, rằng mất ít nhất một đối số, mà chỉ là một chuỗi. Một chuỗi các mã SQL. Vì vậy, bạn đang về để tìm hiểu làm thế nào để viết Structured Query Language. Nếu tôi muốn chèn một hàng mới vào tôi cơ sở dữ liệu vì có người đã gửi một hình thức mã của tôi, tôi sẽ theo nghĩa đen viết INSERT INTO người sử dụng sau các lĩnh vực: username, dấu phẩy, tên, GIÁ TRỊ, và bây giờ tôi cần phải chèn một cái gì đó giống như Malan, và báo giá, unquote 'David Malan.' Và bây giờ ngay cả đối với những người không quen với SQL, tại sao tôi sử dụng dấu nháy đơn bên trong của chuỗi màu xanh lá cây này? Điều gì có thể là lý do ở đây? Chú ý Tôi đồng hòa trộn hai thứ tiếng. Query là một chức năng PHP, nhưng nó có một đối số. Và lập luận rằng phải tự bản thân nó viết bằng một ngôn ngữ được gọi SQL, Structured Query Language. Vì vậy, tất cả mọi thứ mà tôi đã chỉ nhấn mạnh ở đây là ngôn ngữ này được gọi là SQL. Vì vậy, những gì với các dấu ngoặc đơn, chỉ là một kiểm tra sự tỉnh táo nhanh chóng? Đi trước. Họ là chuỗi. Vì vậy, báo giá, unquote Malan và báo giá, unquote David Malan là chuỗi. Và chỉ cần suy nghĩ bằng trực giác bây giờ, biết những gì bạn biết về C và PHP, Tại sao tôi lại không làm được điều này, mà tôi thường sử dụng dấu ngoặc kép cho chuỗi? Tại sao tôi không muốn làm điều đó? Yeah? Đung [Không nghe thấy] DAVID Malan: Chính xác. Bởi vì tôi đã sử dụng dấu ngoặc kép trên đường bên ngoài của các đối số đến chức năng PHP, Tôi sẽ chỉ gây nhầm lẫn cho người phiên dịch. Nó sẽ không biết, những đi cùng nhau? Do những đi cùng nhau? Do những đi cùng nhau? Vì vậy, tôi luân phiên thay thế. Hoặc tôi có thể làm một cái gì đó như thế này, quote dấu gạch chéo ngược hoặc dấu gạch chéo ngược quote. Thành thật mà nói, mà chỉ bắt đầu nhận được rất đọc và xấu xí. Nhưng điều đó sẽ đạt được cùng một kết quả là tốt. Vì vậy, nếu tôi đã thực hiện điều này truy vấn bây giờ, chúng ta hãy xem những gì sẽ xảy ra. Tôi sẽ đi trước bây giờ và thay hơn thực thi mã PHP, mà là nơi mà bạn sẽ chơi trong vấn đề thiết lập bảy, Tôi sẽ thay vì đi đến PHP MyAdmin. Và tôi tự đi để đi đến tab SQL, và cho tôi phóng to trên giao diện. Và tôi sẽ để dán trong những điều tôi vừa gõ. Và mã hóa màu sắc có thay đổi một chút bây giờ, chỉ vì những định dạng chương trình việc khác một chút. Nhưng chú ý rằng tất cả tôi đã thực hiện là tôi đã nói, chèn vào Users. Tôi đã chỉ định, sau đó, trong một dấu phẩy tách parenthesized danh sách hai lĩnh vực mà tôi muốn chèn, và sau đó tôi đã theo nghĩa đen cho biết giá trị tiếp theo là dấu ngoặc khác, và sau đó hai giá trị Tôi muốn plug-in, và bây giờ cho các biện pháp tốt, Tôi sẽ đặt một dấu chấm phẩy ở cuối. Vì vậy, đây không phải là C. Đây không phải là PHP. Điều này bây giờ là SQL, và tôi đang dán nó vào web này dựa trên giao diện đó là chỉ cần đi để cho tôi, ngay sau khi tôi bấm Go, thực hiện truy vấn này trên cơ sở dữ liệu chạy bên trong CS50 IDE. Vì vậy, điều này là tốt. Thông báo nói rằng một hàng đưa vào, đi siêu nhanh, 0,0054 giây để chèn dữ liệu đó. Vì vậy, mà âm thanh khá khỏe mạnh. Nó dạng truy vấn của tôi cho tôi ở đây chỉ để xem nó trong loại mã màu sắc phiên bản. Nhưng bây giờ nếu tôi bấm Browse, nhận thấy rằng, ngay cả mặc dù có rất nhiều lộn xộn trên màn hình, bàn của tôi bây giờ có hai hàng. Vì vậy, hãy để tôi đi trước và làm khác. Thay vào đó, hãy để tôi đi đến tab SQL nữa. Và lần này tôi sẽ chèn một cái gì đó như Rob và tên của ông sẽ là Rob Bowden. Bowden. Hãy bấm Save. Rất tiếc, thay Go. Nhấn Browse một lần nữa, và Bây giờ tôi nhận thấy có hai hàng. Vì vậy, đây chỉ là một cách phức tạp hơn cách mở cửa Google Spreadsheets và chỉ cần gõ một hàng vào một cột. Nhưng những gì quan trọng là bây giờ chúng ta có cú pháp mà để viết code để cuối cùng, chúng tôi thực sự có thể làm một số và điều này. Nhớ lại rằng hỗ trợ PHP biến siêu toàn cầu. Là những gì bên trong của đồng USD ký gạch GET trong PHP? Chúng tôi đã xem xét một hoặc hai ví dụ đơn giản. Và trong PSet6, nhớ lại bạn phải chào dot PHP trong đó sử dụng biến này. Những gì diễn ra ở đó? Hoặc nó là gì? A to hơn chút. Đung [Không nghe thấy] DAVID Malan: Đó là một tuyết hạt giống của mảng, chỉ là một cách nói một mảng có cặp giá trị quan trọng. Và các phím không số. Họ là những từ hoặc chuỗi. Và đặc biệt, những gì là những cặp giá trị? Họ đến từ đâu? Lấy làm tiếc? Đung [Không nghe thấy] DAVID Malan: Không? Nơi nào những người chủ chốt các cặp giá trị đến từ đâu? Nhắc lại? Lần nữa? Tôi chỉ có một buổi điều trần một cái gì đó? [Cười] Đúng vậy, đúng không? Đung [Không nghe thấy] DAVID Malan: Yeah, họ đến từ các chuỗi truy vấn. Vì vậy, nếu bạn tua lại trong thời gian tới khi chúng tôi đã chơi với Google và chúng tôi đã đi đến Google.com slash dấu hỏi tìm kiếm q bằng mèo, nếu tôi được là để nhấn Enter và nếu Google được thực hiện trong PHP, Đoạn mã PHP Google đã viết sẽ có quyền truy cập vào ký hiệu đô la nhấn GET bên trong đó là một phím gọi là Q và một giá trị gọi là mèo mà nó sau đó có thể sử dụng được sử dụng để làm một tìm kiếm thực tế với. Vì vậy, trên thực tế, những gì tôi sẽ làm bây giờ là trở lại mã PHP của tôi rằng bạn sẽ lại thấy nhiều hơn trong PSet7. Và thay vì cắm trong các giá trị được mã hóa cứng mà không có vẻ như một rất trang web năng động, Tôi sẽ cung cấp cho bạn một lời trêu ghẹo của những mã thực tế của bạn sẽ làm gì. Bạn sẽ đặt vào hai câu hỏi đánh dấu như thế này. Tôi không biết những gì các tên người dùng là. Tôi không biết những gì Tên là có được, nhưng tôi biết tôi có thể nhận được chúng tự động. Vì vậy, nếu các mã chúng tôi đang viết bây giờ là mã chạy trên máy chủ của Google, hoặc nếu điều này là chào dot PHP, mà đi kèm với PSet6, Tôi sẽ đi vào các chức năng truy vấn giống như printf, hai đối số khác. GET, báo giá, username unquote, và GET, báo giá, tên unquote. Và bây giờ, hãy chú ý những gì cấu trúc chung là ở đây. Tôi đã có trên bên trái bên của cuộc gọi, Chức năng này được gọi là truy vấn trong PHP. Tôi vẫn còn có như là một đầu tiên tranh luận, chỉ là một chuỗi văn bản. Nhưng đó là chuỗi văn bản viết bằng một ngôn ngữ được gọi là SQL. Và thẳng thắn mà nói, nó không phải là một ngôn ngữ lớn. Chúng tôi sẽ chỉ nói về nó chính thức ngày hôm nay, thực sự. Và sau đó trong vấn đề thiết lập bảy, có tương đối vài tính năng mà chúng tôi sẽ tận dụng. Những dấu hỏi, tuy nhiên, có nghĩa là cắm một giá trị ở đây và cắm giá trị khác chỗ này. Và thông báo, tôi đã bỏ qua những gì từ khắp nơi chết tiệt quote-- it-- quanh báo giá đánh dấu thời gian này. Tôi đã bỏ qua các báo giá dấu quanh dấu hỏi, xin lỗi, khoảng thời gian này. Vì vậy, những gì là tốt đẹp về điều này câu hỏi tính năng đánh dấu mà PHP có xu hướng hỗ trợ, Ruby và Python và các ngôn ngữ khác, này chỉ có nghĩa là cắm trong một số giá trị ở đây và bạn biết những gì? Bạn tìm hiểu xem sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép. Đừng làm phiền tôi với những người Các chi tiết về mặt trí tuệ nhàm chán. Nhưng, chắc chắn rằng nó là chính xác để mã của tôi là cuối cùng vận hành và an toàn, mà sẽ có một ý nghĩa trước khi dài. Bây giờ, có bao nhiêu đối số tổng cộng, chỉ để được rõ ràng, là chức năng truy vấn lấy? Bất cứ ai muốn bỏ phiếu cho hơn hai? Số ba? Chắc chắn, tại sao? Tại sao ba? Đung [Không nghe thấy] DAVID Malan: Chính xác. Phần đầu tiên là chuỗi. Đối số thứ hai là ký hiệu đô la nhấn GET khung tên người dùng. Và số thứ ba là điều tương tự, nhưng chỉ là cái tên. Vì vậy, nói cách khác, bây giờ nếu tôi có một hình thức web mà đã phải lĩnh vực văn bản, một tên đăng nhập của người dùng, một cho tên mình, chỉ như bạn sẽ thấy trong một trang web khi bạn đăng ký một số trang web, sức mạnh này là mã trở lại vào cuối đó thực hiện việc chèn nay vào cơ sở dữ liệu. Bây giờ thì ngược lại, chúng ta hãy nhanh về phía trước. Giả sử một người dùng bây giờ là đăng nhập và bạn muốn viết code PHP để kiểm tra xem liệu người của những người chỉ cần đăng nhập thực sự là một người sử dụng, bạn có thể sử dụng cú pháp khá đơn giản. Bạn có thể nói SELECT, chúng ta hãy nói ngôi sao, mà sao có nghĩa là tất cả mọi thứ. Tôi không biết những gì tôi muốn, vì vậy chỉ cần cho tôi tất cả các cột từ bảng gọi là người dùng ở đâu, và điều này là tốt đẹp. Chọn hỗ trợ những gì được gọi là một vị, đó là như một cách để đủ điều kiện những gì bạn muốn. Nơi tên người dùng bằng quote, unquote Malan. Vì vậy, ở đây, tôi đã nhúng bên trong đối số đến một chức năng PHP, một dòng mã SQL. Và rằng mã SQL này thời gian là nghĩa đen đi để tìm kiếm các báo giá, unquote Malan. Bây giờ đó là không phải tất cả những gì có ích, do đó, tôi sẽ bỏ qua và tôi sẽ để dứt tip này từ Brady, và đi và plug-in thay vì một dấu hỏi ở đây. Vì vậy, chỉ để được rõ ràng, những gì nên số thứ hai của tôi được nếu có người chỉ cần đăng nhập và tôi muốn kiểm tra xem anh ta hay cô thực sự một người sử dụng? Đung [Không nghe thấy] DAVID Malan: Yeah. Tôi nghe đôla dấu gạch dưới GET quote, tên người dùng unquote. Và đó nên trở về với tôi bất kỳ của các hàng trong cơ sở dữ liệu của tôi rằng có một tên người dùng của Malan. Bây giờ hy vọng, tôi sẽ trở lại zero nếu Malan không bao giờ được ở đây, hoặc một nếu anh có. Tôi không nên trở lại hai hoặc ba hoặc bốn. Tại sao? Đung [Không nghe thấy] DAVID Malan: Tôi nói độc đáo, phải không? Lý do đơn giản. Bởi vì tôi biết nó đã nhận là duy nhất, chỉ cần một cách hợp lý, bạn chỉ có thể không có hay có một Malans trong bảng cơ sở dữ liệu đặc biệt này. Bây giờ là một sang một bên, chỉ cần như vậy bạn đã nhìn thấy nó, mặc dù tôi tiếp tục sử dụng GET và mặc dù PSet6 chỉ được sử dụng GET, bạn chắc chắn có thể có POST. Và nhớ lại rằng bài viết là một kỹ thuật đã gửi thông tin từ một hình thức, nhưng nó không hiển thị trong URL. Đó là nhiều hơn một chút an toàn chắc chắn cho những thứ như tên người dùng và mật khẩu, mà PSet7 sẽ, trên thực tế, liên quan đến. Vì vậy, chúng ta hãy làm điều này trong PHP MyAdmin và xem những gì sẽ xảy ra. Tôi sẽ đi đến tab MySQL. Và nhận thấy rằng các giá trị mặc định cho PHP MyAdmin, chỉ để cố gắng để thể hữu ích, là chọn sao từ người dùng mà một. Vâng, người ta luôn luôn là sự thật, vì vậy này có ngớ ngẩn hiệu quả các bạn chỉ cần chọn tất cả mọi thứ. Nhưng tôi sẽ là một chút mô phạm hơn và bằng tay loại ra sao CHỌN TỪ người sử dụng. Bây giờ về mặt kỹ thuật, bạn có thể trích dẫn tên của các bảng. Nó hiếm hoi mà bạn có, nhưng nhận thấy đây không phải là báo giá bình thường của bạn trên bàn phím Mỹ. Đây là cái gọi là backtick, mà nói chung là mặt trên bên trái góc của bàn phím của bạn. Nhưng nó hiếm hoi mà bạn sẽ thực sự cần phải bận tâm với điều đó, vì vậy tôi sẽ chỉ cần bỏ qua chúng anyway. Vì vậy, bây giờ, hãy để tôi đi trước và nhấn đi. Và bao nhiêu hàng tôi sẽ nhận được trở lại khi tôi chọn sao từ người sử dụng? Đung [Không nghe thấy] DAVID Malan: Số lượng hàng, chắc chắn. Nhưng bao nhiêu người trong này câu chuyện cụ thể ngay bây giờ? Hai, vì đã có tôi và đã có Rob. Vì vậy, nếu tôi bấm Go, tôi nhìn thấy bằng mắt mà Tôi đã nhận được trở lại, thực sự, hai hàng. Có rất nhiều lộn xộn trên màn hình, nhưng tôi chỉ thấy hai hàng. Ngược lại, nếu tôi làm điều này một lần nữa và làm CHỌN sao FROM users, nơi tên người dùng bằng quote, unquote Malan, bây giờ nếu tôi bấm Go, Tôi chỉ đi để lấy lại một hàng. Và cuối cùng, nếu tôi làm một cái gì đó như thế này, giả sử rằng tôi không quan tâm về nhận được tất cả mọi thứ, đó là loại vô nghĩa bây giờ, bởi vì chỉ có hai cột. Nó không giống như tôi đang chọn một lượng lớn dữ liệu. Giả sử tôi đi trước và làm CHỌN tên TỪ người sử dụng, nơi tên người dùng bằng Malan, những gì tốt đẹp về SQL một cách trung thực, là nó thực sự chỉ làm những gì bạn nói với nó để làm. Nó đẹp, gọn gàng, nhưng bạn có nghĩa là chỉ nói với nó những gì bạn muốn làm. Chọn tên từ người dùng mà tên người dùng bằng Malan. Và nó thực sự là rõ ràng. Vì vậy, bây giờ nếu tôi nhấn Go, bao nhiêu hàng tôi sẽ trở lại? Một, bởi vì nó chỉ là Malan, hy vọng. Hoặc không nếu anh ấy không có, nhưng một tối đa. Và có bao nhiêu cột tôi sẽ lấy lại? Có bao nhiêu cột? Lần này, tôi chỉ cần đi để có được một bởi vì tôi đã không chọn ngôi sao, mà là tất cả mọi thứ. Bây giờ tôi chỉ chọn cái tên, nên tôi chỉ nhận lại một cột và một hàng. Và có vẻ loại thích hợp vô lý, chỉ cần nhìn siêu nhỏ như thế này. Vì vậy, những gì đang thực sự xảy ra? Khi bạn thực hiện một SQL truy vấn sử dụng lựa chọn, những gì bạn đang nhận được trở về từ cơ sở dữ liệu giống như một bảng tạm thời với các hàng và cột, có thể, nhưng mà bỏ qua bất cứ điều gì đã không thực sự lựa chọn của bạn. Vì vậy, nó giống như nếu có ai đó đã có một lớn bảng tính của tất cả các sinh viên đăng ký cho một số nhóm học sinh, và bạn nói, cho tôi tất cả các sinh viên năm nhất, người đã đăng ký cho nhóm học sinh của chúng tôi, những gì đồng nghiệp của bạn trong nhóm học sinh có thể làm là họ chỉ có thể bàn tay bạn toàn bộ bảng tính. Điều đó giống như nói rằng chọn sao. Và đó là một chút khó chịu nếu bạn chỉ muốn các sinh viên năm nhất. Và như vậy, nếu bạn thay vì nói, chọn sao từ bảng cơ sở dữ liệu nơi năm bằng quote, sinh viên năm nhất unquote, nó giống như bạn bè của bạn trong các nhóm học sinh nghĩa đen làm nổi bật và sao chép chỉ có các hàng sinh viên năm nhất, dán chúng vào một Google mới Bảng tính hoặc một tập tin Excel, và đưa bạn trở lại chỉ dẫn file. Đó là tất cả những gì đang xảy ra về khái niệm ở đây. Vì vậy, cuối cùng, chúng ta có thể làm một số điều khá lạ mắt bằng cách lưu trữ những thứ như tên người dùng và mật khẩu và các loại tương tự. Nhưng, hóa ra, chúng ta nên làm một chút khác biệt so với điều này. Nó không phải là thông minh để chỉ lưu trữ tên người dùng và mật khẩu. Có người trước đó, tôi nghĩ rằng xuống đây, đề nghị một ID. Bây giờ một ID có thể giống như một Harvard hay Yale ID ID Net, nhưng nó có thể đơn giản hơn trong trường hợp cơ sở dữ liệu của chúng tôi. Và quả thực, những trường hợp thông thường là phải có một cột khác. Và tôi sẽ đi trước và sửa bàn của tôi. Và nếu bạn chơi xung quanh với giao diện này cho PSet7, bạn sẽ thấy rằng bạn có thể kiểm tra nút này ở đây và thêm một vùng ở đầu của bảng. Và bây giờ nếu tôi bấm Go, nó sẽ để cung cấp cho tôi một trong những hình thức từ trước đó. Tôi sẽ thêm một lĩnh vực được gọi là ID. Và tôi sẽ làm cho nó một số loại. Tôi có cả một bó các giá trị cho numerics. Tôi chỉ đi để lựa chọn một INT và không lo lắng về các kích thước khác nhau. Tôi không có chỉ định một chiều dài hoặc một giá trị, bởi vì nó sẽ được 32 bit không có vấn đề gì. Thuộc tính, chúng tôi đã không nhìn thấy trước. Bất kỳ quan tâm trong bất kỳ các tùy chọn trình đơn lần này? Đối với một INT? Bạn đã đề xuất gì? Không có? Làm được điều này có ý nghĩa? Yeah. Yeah, unsigned, phải không? Nói chung, nếu chúng ta để cho tất cả mọi người một số duy nhất, mà là nơi mà câu chuyện này là đi, tôi thực sự chỉ muốn một người có số lượng như bằng không và một và hai và ba và bốn. Tôi không cần phải đối phó với các số âm. Nó chỉ có vẻ như phức tạp không đáng có. Tôi muốn bốn tỷ giá trị có thể, không bốn tỷ giá trị có thể, vì vậy tôi chỉ tăng gấp đôi năng lực của INT của tôi. Là một sang một bên, nếu bạn muốn liên quan này để một cái gì đó giống như Facebook, trở lại trong phân loại trong ngày của tôi khi Facebook lần đầu tiên xuất hiện, Tôi tin rằng những gì họ sử dụng trong cơ sở dữ liệu MySQL của họ để lưu trữ một người sử dụng của nhận dạng, chỉ là một INT. Nhưng tất nhiên, có rất nhiều của những người thực trong thế giới. Có rất nhiều giả Facebook chiếm trên thế giới. Và như vậy cuối cùng, Facebook tràn kích thước của một INT, một bốn tỷ giá trị. Đó là lý do tại sao, nếu bạn nhìn xung quanh và có trang web có thể cho bạn biết những gì ID duy nhất của bạn là. Và nếu bạn không bao giờ chọn một tên người dùng trong Facebook, bạn sẽ thấy ID duy nhất của bạn. Tôi nghĩ rằng đó là hồ sơ dot PHP dấu hỏi ID bằng gì gì đó. Mà bây giờ là cái giống như một lớn INT, hoặc lâu dài nếu bạn muốn, đó là một giá trị 64-bit hoặc cái gì đó tương tự. Vì vậy, ngay cả trong thế giới thực làm những vấn đề cuối cùng là đôi khi quan trọng. Và hóa ra ở đây, nếu tôi cho tất cả người dùng của tôi một ID duy nhất, Tôi muốn được siêu rõ ràng và tối thiểu làm cho lĩnh vực này độc đáo. Nhưng hóa ra có một mảnh của danh pháp ngày nay quá đó là một khóa chính. Nếu bạn đang thiết kế một cơ sở dữ liệu bảng và bạn biết trước mà một trong các cột trong bảng đó nên và duy nhất sẽ xác định các hàng trong bảng, bạn muốn xác định nó và nói với các cơ sở dữ liệu, đây là khóa chính của tôi. Có thể có bản sao trong các lĩnh vực khác, nhưng tôi nói với các cơ sở dữ liệu này là chính tôi, lĩnh vực quan trọng nhất của tôi, đó là bảo đảm là duy nhất. Bây giờ, điều này có vẻ dư thừa. Bây giờ tôi xin đề xuất rằng chúng ta thêm, bằng cách nhấn Save ở đây, một called-- trường và tôi sẽ đi trước và bấm vào AI, chúng tôi sẽ trở lại rằng trong một thời điểm, Lưu. Tôi đề xuất bây giờ mà bảng của tôi trông như thế này. Tôi có một trường INT gọi ID, một lĩnh vực CHAR gọi Username, một lĩnh vực VARCHAR gọi là Danh, nhưng ID, nếu đó là tiểu học và do đó độc đáo, Tại sao tôi lại chỉ lãng phí thời gian giới thiệu những gì hiệu quả là một thứ độc đáo lĩnh vực được gọi là ID đó là một INT? Tên truy nhập, thu hồi, đã đã độc đáo, chúng tôi đã nói. Vì vậy, chỉ một cách hợp lý, bạn không cần bất kỳ kinh nghiệm cơ sở dữ liệu với lý thông qua điều này, tại sao có thể tôi đã giới thiệu một INT là định danh duy nhất của tôi là tốt? Có gì this-- nói một lần nữa? Đung [Không nghe thấy] DAVID Malan: Random truy cập dễ dàng hơn, tại sao? Đung [Không nghe thấy] DAVID Malan: Yeah, đó là chỉ số truy cập. Vì vậy, nếu bạn nghĩ về điều này thực sự là một bảng, giống như một mảng, bây giờ tôi có định danh duy nhất mà tôi có thể nhảy xung quanh. Và hơn thế nữa, là lớn như thế nào là một INT sẽ một lần nữa? 32 bit hay bốn byte. Làm thế nào lớn là username của tôi sẽ là? Tối đa? 16 byte. Vì vậy, nếu bạn đang thực sự quan tâm đến hiệu suất của mã của bạn, nghĩ lại PSet5, bạn sẽ thích để tìm kiếm một giá trị bốn byte hoặc một 16 giá trị byte, phải không? Nó thực sự là đơn giản như vậy. Bạn phải làm bốn lần như làm việc nhiều để tìm kiếm tên người dùng vì những là 16 byte. Vì vậy, bạn phải theo nghĩa đen so sánh tất cả 16 byte được chắc chắn có, đây là username tôi muốn. Trong khi đối với một INT, bạn có thể làm điều đó chỉ với bốn byte. Và như là một dành cho những người quan tâm đến phần cứng máy tính, nó quay ra bạn có thể phù hợp với một cái gì đó như một INT hoặc một giá trị 32-bit trong một cái gì đó được gọi là một thanh ghi trong một máy tính CPU, có nghĩa đó là siêu, siêu nhanh, thậm chí ở mức thấp nhất mức độ của phần cứng của máy tính. Vì vậy, đó chỉ là lợi thế tất cả các xung quanh. Vì vậy, điều này có nghĩa là gì? Trong thực tế, khi bạn đang thiết kế một bảng cơ sở dữ liệu, gần như tất cả thời gian bạn sẽ có không chỉ những dữ liệu mà bạn quan tâm, nhưng cũng giống như một cái gì đó một định danh duy nhất bởi vì điều này sẽ chúng ta hãy làm những việc khác. Và chúng ta hãy vướng một vấn đề ở đây. Giả sử rằng người dùng có không chỉ tên người dùng và tên, nhưng họ cũng có những thứ như các thành phố và các tiểu bang và mã zip, ít nhất đây ở Mỹ. Vì vậy, tôi sẽ đi trước và chỉ cần một cách nhanh chóng nói, cho tôi ba cột hơn ở phần cuối của bảng. Và điều này là có được thành phố, này là có được Nhà nước, và điều này là có được Zip. Bây giờ loại thành phố, những dữ liệu này nên được, có lẽ? VARCHAR? Tôi không biết những gì Tên thành phố dài nhất là. Một nơi nào đó ở Mỹ, có có lẽ một số từ ridiculously dài, vì vậy chúng ta chỉ cần đi với 255, hơi lịch sử hoặc tuỳ tiện. Nhà nước, những gì bạn muốn làm gì? Cuộc gọi phán quyết, phải không? Có gì có thể là hiệu quả nhất? Có bao nhiêu ký tự? Có lẽ chỉ cần hai, nếu chúng ta có thể có được đi với chỉ cần làm, như thế, MA cho Massachusetts và vv. Vì vậy, tôi sẽ đi một giá trị CHAR hai. Zip code là một trong những thú vị. Chúng tôi ở đây tại 02138, do đó đề nghị chúng ta nên sử dụng những gì? Đây là một INT, phải không? INT, INT, ngắn? Ngắn sẽ làm việc. Không có? CHAR hoặc năm, nhưng tôi muốn một INT. Tại sao đẩy lùi vào một INT? Thuyết phục tôi từ này. Có gì ngu ngốc về một INT, ý tưởng của tôi? Yeah. Đung Đi lên bộ nhớ hơn. DAVID Malan: Đi lên bộ nhớ hơn. Bốn byte, nhưng bạn đề xuất một mã zip như năm byte hoặc một người nào đó đã như một CHAR, mà cảm thấy như eh, đó không thực sự trường hợp. Vâng, câu chuyện vui vẻ. Nhiều năm trước, khi tôi sử dụng để sử dụng Microsoft Outlook cho email của tôi, Cuối cùng tôi muốn chuyển sang Gmail. Và như vậy, tôi xuất khẩu tất cả của tôi liên lạc từ Outlook như một tập tin CSV. Dấu phẩy tách giá trị, mà chỉ có nghĩa là tôi đã có tất cả tên bạn bè của tôi và cuối cùng tên và số điện thoại và mã zip và tất cả điều đó. Và sau đó tôi đã thực hiện các sai lầm của việc mở nó lên trong Excel, mà là một chương trình bảng tính hiểu các tập tin CSV như chúng ta đã thấy. Nhưng sau đó, tôi đã phải đánh, như, Lệnh hoặc điều khiển S tại một thời điểm. Và Excel rõ ràng vào thời điểm đó có một tính năng đó bất cứ lúc nào nó thấy một số, nó đã cố gắng để thể hữu ích. Và nếu con số đó bắt đầu với số không, nó sẽ chỉ để loại bỏ chúng. Tại sao bạn cần hàng đầu số không trên các số nguyên? Họ là vô nghĩa, về mặt toán học. Chúng không phải là vô nghĩa trong hệ thống Bưu điện Hoa Kỳ. Vì vậy, tôi đã có trong nhiều năm, cho đến ngày nay, tôi vẫn có những người bạn khi trường hợp hiếm hoi mà tôi cần một ai đó giải quyết những ngày này, Tôi vẫn sẽ thấy tôi rằng có một người bạn ở Cambridge, Massachusetts, 2138. Và nó gây phiền nhiễu nếu bạn cố gắng sắp xếp của lập trình tạo ra phong bì hoặc chỉ ghi nó xuống. Và đó là vì lý do này, Tôi đã chọn nhầm kiểu dữ liệu. Vì vậy, tôi thích ý tưởng của bạn. Hãy sử dụng một trường CHAR. Năm nhân vật, ngoại trừ có một trường hợp góc. Nếu bạn vẫn còn gửi mail, đôi khi zip mã những ngày này, họ, như thế, cộng với bốn. Vì vậy, chúng ta cần một dấu gạch ngang và sau đó chúng ta cần bốn con số nhiều hơn nữa. Vì vậy, phải trung thực, nó có thể đi nhiều cách khác nhau. Để bây giờ, tôi sẽ giữ nó đơn giản và tôi chỉ sẽ nói rằng đó là một năm giá trị CHAR và chúng tôi sẽ bỏ toàn bộ gạch ngang cộng với bốn. Nhưng đó là những loại cân bằng. Và bạn có thể nghĩ về vấn đề tương tự phát sinh với các số điện thoại hoặc các lĩnh vực khác. Và bây giờ, đây là thực sự một con đường dại mà đi xuống. Giả sử cả Rob và tôi và Hannah và Maria và [? Davon?] Và Andy và những người khác trên các nhân viên đều sống ở Cambridge, Massachusetts, 02138. Điều này thực sự cảm thấy ngu ngốc mà tôi thêm vào bảng người dùng của tôi, thành phố, tiểu bang, và zip. Tại sao? Đung [Không nghe thấy] DAVID Malan: Nói một lần nữa? Đung [Không nghe thấy] DAVID Malan: Họ luôn sẽ đi cùng nhau, đúng không? Khi nó quay ra, chúng ta thường nghĩ đây là trường hợp cho đến khi chúng tôi triệt tìm kiếm toàn bộ Mỹ, và chỉ ra rằng có một số mâu thuẫn nơi nhiều thị trấn có zip giống nhau, đó là lạ. Nhưng, nếu chúng ta định cho bây giờ mà 02138 luôn luôn là Cambridge, Massachusetts, tại sao trên thế giới bạn sẽ lưu trữ trong cơ sở dữ liệu của bạn Cambridge và MA và 02138 cho tôi và cho Hannah và cho Rob và cho [? Davon?] Và cho những người sống đây ở Cambridge, nó hoàn toàn không cần thiết. Chúng ta nên tránh xa với chỉ lưu trữ những gì? Chỉ cần các mã zip. Nhưng sau đó, nếu chúng ta lưu trữ chỉ zip code, tôi muốn, có lẽ, cho trang web của tôi để biết nơi là 02138. Vì vậy, tôi cần một bảng khác. Và đó là OK. Và trên thực tế, đây là một trong những quá trình thiết kế của bảng thiết kế mà bạn sẽ làm trong PSet7 cũng nhờ đó mà bạn muốn yếu tố ra dữ liệu chung. Cũng giống như chúng ta đã được thanh toán ra mã phổ biến và bao thanh toán ra phổ biến phong cách từ CSS, đây quá trong cơ sở dữ liệu, nếu tôi chỉ cần 02138 để duy nhất xác định quê hương của ai đó, không lưu trữ Cambridge, Mass cho mỗi người sử dụng darn trong bảng của bạn. Thay vào đó, có một bảng riêng biệt gọi là Kéo khóa mà cần phải có những gì cột? Có lẽ là một trường ID, chỉ vì, cho các nguyên tắc chúng ta đang nói về hiện tại. Có lẽ là một lĩnh vực zip cho 02138. Và sau đó có lẽ những gì cột khác? Thành phố và tiểu bang, nhưng chỉ có một hàng cho 02138, một hàng cho 02.139, một hàng cho 90210. Và đó là nghĩa đen tất cả các mã zip Tôi biết. Vì vậy, bây giờ, những gì bạn có thể làm gì? Đây là vấn đề, bởi vì bây giờ tôi đã có hai bảng. Vì vậy, người dùng của tôi chủ yếu là ở đây, nhưng thông tin nhà nước thành phố của họ là ở đây. Vì vậy, nó quay ra với SQL, có thực sự là một cách để tham gia thông tin, và bạn sẽ thấy điều này trong PSet. Nhưng hóa ra bạn có thể làm một cái gì đó như thế này. CHỌN sao FROM users, JOIN kéo khóa ON người chấm zip bằng kéo khóa chấm zip. Đó là một chút dài dòng, thừa nhận, nhưng điều này chỉ có nghĩa là chọn tất cả mọi thứ từ quá trình lấy bảng người dùng của tôi và bảng kéo khóa của tôi. Tham chúng trên một trong những lĩnh vực mà họ có trong cột. Vì vậy, theo nghĩa đen làm một cái gì đó như thế này, và cho tôi trở lại một bảng tạm thời mới đó là rộng hơn, đó là lớn hơn, có tất cả các cột từ cả hai. Và rằng, khá đơn giản, sẽ là Cú pháp để làm một cái gì đó như thế này. Vì vậy, có điều này trước, nhưng có đi được quyết định thiết kế khác bạn sẽ phải thực hiện, không chỉ với các chỉ mục nhưng cũng chạy vào những thách thức. Trong thực tế, có một thách thức trong bất kỳ thiết kế cơ sở dữ liệu nhờ đó mà đôi khi hai người có thể muốn để truy cập vào các hàng cùng một cơ sở dữ liệu bàn. Vì vậy, đây là một cái gì đó mà chúng ta sẽ gặp phải trong PSet7 là tốt. Nhưng tôi nghĩ rằng tôi muốn nhìn vào một cuộc tấn công đó là có thể trong SQL. Một số là gì vấn đề có thể phát sinh? Vì vậy, bạn sẽ gặp phải điều này trong PSet7. Và chúng tôi cho bạn hoàn toàn những gì giải pháp mã hóa cho vấn đề này là. Nhưng nếu bạn tham gia một lớp trình độ cao hơn, đặc biệt là trong các hệ thống điều hành, bạn sẽ gặp phải một vấn đề của nguyên tử, các vấn đề cố gắng làm nhiều thứ cùng một lúc không bị gián đoạn. Và tôi nghĩ rằng tôi muốn giới thiệu này Ý tưởng cho PSet7 với một ẩn dụ Tôi học được rằng bản thân mình trong Margo Hệ thống điều hành của CS164 Seltzer lớp năm trước. Giả sử rằng bạn có một trong các ký túc xá tủ lạnh trong phòng ký túc xá của bạn hoặc bằng nhà, và bạn có một thiên hướng thực sự cho sữa. Và như vậy, bạn trở về nhà từ lớp một ngày, bạn mở tủ lạnh. Oh, chết tiệt. Không có sữa trong tủ lạnh. Vì vậy, bạn đóng tủ lạnh, khóa cửa, khóa ký túc xá của bạn, đi quanh góc CVS, có được trong đường dây, và bắt đầu kiểm tra ra cho một ít sữa. Và nó sẽ mất một thời gian, bởi vì những người tự kiểm tra chết tiệt quầy mất mãi mãi để sử dụng anyway. Vì vậy, trong khi đó, người bạn cùng phòng của bạn trở về nhà. Anh ta hoặc cô ấy thực sự thích sữa là tốt. Họ đi vào phòng ký túc xá, mở tủ lạnh, oh, darn nó. Không có nhiều sữa hơn. Vì vậy, anh ta hoặc cô ấy cũng đi quanh góc. Nhưng bây giờ, kể từ khi có giống như hai hoặc ba hoặc bốn CVSes gần đó, chúng xảy ra để đi đến một trong các những cái khác nhau tại quảng trường. Và vì vậy bây giờ, một vài phút sau đó, cả hai bạn trở về nhà và ugh, vấn đề tồi tệ nhất bao giờ hết. Bây giờ bạn có quá nhiều sữa bởi vì nó sẽ đi chua. Và bạn thích sữa, nhưng bạn không thực sự thích sữa. Vì vậy, bây giờ, đây là một tốn kém sai lầm bởi vì cả hai bạn đưa ra quyết định dựa trên nhà nước của một số biến mà là trong quá trình được thay đổi bởi các bạn, người khởi xướng sẽ có được sữa. Vì vậy, những gì có lẽ là một con người giải pháp cho vấn đề đó? Đung [Không nghe thấy] DAVID Malan: Để lại một lưu ý, phải không? Luôn luôn để lại một lưu ý, nếu bạn quen thuộc với chương trình đó. Có, có hai chúng tôi. Vì vậy, luôn luôn để lại một ghi chú, hoặc nghĩa đen khóa tủ lạnh với một số loại ổ khóa hoặc một cái gì đó trên đầu như thế. Nhưng đó là thực tế sẽ vấn đề quan trọng với thiết kế cơ sở dữ liệu, đặc biệt là khi bạn có thể có nhiều trình duyệt, nhiều máy tính xách tay, nhiều người sử dụng tất cả các cố gắng để cập nhật thông tin cùng lúc. Thông tin đặc biệt nhạy cảm như thông tin tài chính, theo đó với kinh doanh chứng khoán trang web như thế bạn sẽ được xây dựng, những gì nếu bạn muốn kiểm tra xem có bao nhiêu tiền bạn có và sau đó nếu bạn có đủ, mua một số cổ phiếu? Nhưng nếu ai đó có một tài khoản chung với bạn đồng thời là cố gắng để mua một số cổ phiếu? Vì vậy, anh ta hoặc cô ấy là kiểm tra số dư tài khoản, cả hai bạn lấy lại cùng Câu trả lời, không có sữa. Hoặc cả hai bạn lấy lại các câu trả lời, bạn có 100 $ trong tài khoản. Cả hai bạn cố gắng để đưa ra quyết định để mua một cổ phiếu của một số công ty chứng khoán. Và bây giờ, những gì sẽ xảy ra? Bạn có hai cổ phiếu? Bạn không có cổ phiếu? Các vấn đề như có thể phát sinh. Vì vậy, chúng ta sẽ gặp phải đó. Các cuộc tấn công SQL injection, may mắn, là một cái gì đó chúng tôi sẽ giúp bạn với, nhưng đây là tàn nhẫn phổ biến những ngày này vẫn còn. Vì vậy, đây chỉ là một ví dụ. Tôi không có tuyên bố rằng Hệ thống Harvard PIN là dễ bị tấn công đặc biệt này. Chúng tôi đã cố gắng. Nhưng, bạn biết rằng chúng tôi có một trường như thế này. Và Yale ID Net có một tương tự nhìn màn hình trong những ngày này. Và hóa ra, rằng có lẽ Hệ thống PIN được thực hiện trong PHP. Và nếu nó were-- nó not-- họ có thể có mã số đó trông như thế này. Họ có hai biến. Hãy cho tôi tên người dùng và mật khẩu từ biến toàn cầu bài siêu mà chúng tôi nói chuyện về trước. Có lẽ Harvard có một truy vấn như SELECT sao FROM users nơi tên người dùng bằng đó và mật khẩu bằng đó. Và nhận thấy rằng tôi chỉ là cắm nó vào sử dụng nẹp ký hiệu xoăn từ khác ngày, có nghĩa là chỉ cần cắm vào một giá trị chỗ này. Tôi không sử dụng các dấu hỏi kỹ thuật. Tôi không có bất kỳ thứ hai hoặc đối số thứ ba. Tôi chỉ là nghĩa đen xây dựng các chuỗi bản thân mình. Vấn đề này, tuy nhiên, là nếu ai đó thích một scroob, đó là một tham chiếu đến một bộ phim, đăng nhập với một cái gì đó như thế này, và tôi đã gỡ bỏ các dấu chấm mà thường bao che mật khẩu, nếu anh là đặc biệt độc hại và mật khẩu của mình có lẽ là 12345, mỗi bộ phim được gọi là "Spaceballs," nhưng ông phê bình loại một báo duy nhất sau năm, sau đó theo nghĩa đen của từ hoặc trong không gian, và sau đó báo giá, một unquote bằng một trích dẫn, nhưng việc thông báo ông đã bỏ qua những gì? Anh ta bỏ qua các báo trên bên phải và anh ta bỏ qua các báo trên bên trái. Bởi vì nếu kẻ tấn công này giả scroob của là những người đã viết mã PHP này là không quá sáng, có lẽ họ chỉ có một số duy nhất trích xung quanh nội suy của một biến trong dấu ngoặc nhọn? Và như vậy có lẽ, ông có thể loại các hoàn thành tư tưởng của họ cho họ, nhưng trong một cách đó là đi để cho anh ta tấn công vào hệ thống PIN. Nói cách khác, giả sử rằng đây là mã và bây giờ chúng tôi cắm vào những gì scroob gõ. Và đó là màu đỏ, bởi vì nó là xấu. Và các văn bản cơ bản là những gì ông đã gõ trong, scroob có thể lừa máy chủ của Harvard vào việc xây dựng một truy vấn SQL chuỗi đó trông như thế này. Mật khẩu bằng 12345 hoặc một bằng với một. Kết quả có, một cách logic, là điều này sẽ đăng nhập scroob nhập nếu mật khẩu của mình là 12345 hoặc nếu một equals một, đó là tất nhiên luôn luôn đúng, có nghĩa là scroob luôn được trong. Và như vậy, con đường để sửa chữa này, như trong rất nhiều trường hợp, sẽ được để viết phòng thủ. Để sử dụng một cái gì đó giống như của chúng tôi chức năng truy vấn thực tế, trong đó bạn sẽ thấy trong PSet7, nơi chúng tôi cắm một cái gì đó giống như câu hỏi đánh dấu ở đây. Và vẻ đẹp của chức năng truy vấn mà chúng tôi cung cấp cho bạn là nó bảo vệ chống lại các cái gọi là các cuộc tấn công SQL injection, nơi ai đó đang lừa mã của bạn vào tiêm chích ma SQL của riêng mình. Bởi vì những gì các chức năng truy vấn chúng tôi cung cấp cho bạn thực sự sẽ làm gì, nếu bạn sử dụng cú pháp dấu hỏi và thứ hai và số thứ ba ở đây, là những gì đã làm nó thêm vào đầu vào mà người dùng được cung cấp? Những dấu gạch chéo ngược trích dẫn. Vì vậy, nó thoát ra bất kỳ tiềm năng nhân vật nguy hiểm. Điều này có vẻ kỳ lạ bây giờ, nhưng nó không phải là dễ bị tổn thương bởi vì nó không thay đổi logic nữa bởi vì đó là toàn bộ mật khẩu bây giờ là một giá duy nhất mà không phải, trong thực tế, mật khẩu của scroob. Vì vậy, đã có một số câu chuyện cười về điều này trong những năm qua. Vì vậy, đây là một bức ảnh chụp của một số đam mê trong một bãi đậu xe nhờ đó mà bạn có thể biết rằng một số thành phố và các quốc gia cố gắng để quét giấy phép của bạn tấm để tính tiền cho bạn hoặc bạn có vé nếu bạn đi qua mà không có, như thế nào, điều E-Z Pass. Vì vậy, người này giả định rằng có lẽ những người viết các hệ thống E-Z đèo là không quá sáng, và có lẽ họ chỉ nối với nhau một chuỗi, để anh cô có thể không độc hại không chỉ hoàn thành tư tưởng của họ, nhưng thực sự thực thi một lệnh xấu, mà chúng tôi đã không được đề cập, nhưng bạn có thể đoán. Rằng ngoài việc xóa và chèn và cập nhật và lựa chọn, đó cũng là một từ khóa được gọi là thả, mà theo nghĩa đen sẽ xóa tất cả mọi thứ trong cơ sở dữ liệu, mà là đặc biệt xấu. Chúng tôi có thể phóng to này nếu đó là một chút khó khăn để xem. Điều này, bây giờ, là một phim hoạt hình nổi tiếng đó là tuyệt vời thông minh hiện nay và dễ hiểu. [Cười] Yeah, mát mẻ. Loại geeking ra. Vì vậy, những lúc đó là những Các cuộc tấn công SQL injection. Và họ rất dễ dàng để tránh bằng cách sử dụng đúng mã số hoặc các thư viện ngay. Và bạn sẽ thấy trong PSet7, đó là lý do tại sao chúng tôi cung cấp cho bạn các chức năng truy vấn. Vì vậy, một vài teaser mà chúng tôi nghĩ rằng chúng tôi muốn cung cấp cho bạn ở đây trong chúng tôi phút cùng còn lại. Vì vậy, khi bạn nhớ từ tuần không, chúng tôi giới thiệu hai bóng đèn mà là tốt đẹp, không chỉ vì họ đang khá và có nhiều màu sắc, nhưng vì họ hỗ trợ một cái gì đó được gọi là một API, một ứng dụng Programming Interface Và trong CS50 vậy, đến nay, chúng tôi đã chủ yếu tập trung vào GET và POST, nhưng nó quay ra có động từ khác như HTTP PUT. Và trên thực tế, đây là một slide từ tuần zero theo đó, nếu bạn viết mã mà gửi a la PSet6 một yêu cầu HTTP trông như thế này với đoạn này của văn bản ở dưới cùng, được gọi là JSON, hoặc JavaScript Object Notation rằng chúng ta sẽ nói về trong tuần tới, bạn có thể bật hoặc tắt hoặc thay đổi màu sắc của đèn như những người. Vì vậy, nếu CS50 cũng có thêm vào một số của những bóng đèn ở đây ở New Haven nếu bạn muốn mượn họ cho dự án cuối cùng, cũng có một số Microsoft Ban nhạc, mà cũng giống như đồng hồ bạn đeo quanh cổ tay của bạn mà tương tự như có một API để bạn có thể viết phần mềm riêng của bạn cho họ. Chúng tôi có một tài khoản với Mã iOS của Apple như vậy rằng nếu bạn có một Xem Apple hay một chiếc iPhone hoặc iPad hoặc iPod, bạn có thể viết mã thực sự chạy trên những người. Chúng tôi có cả một bó của Arduinos, đó là máy tính nhỏ xíu nhỏ không có trường hợp, về cơ bản, mà bạn có thể kết nối qua cổng USB, thường với máy Mac hoặc máy PC của bạn, viết mã chạy trên các vật lý thiết bị đó thường có bộ cảm biến trên chúng vì vậy bạn có thể tương tác với thế giới thực. Chúng tôi có cả một bó các thiết bị Leap Motion, đó là các thiết bị USB cho máy tính Mac và Máy tính cá nhân, ở đây và một lần nữa, ở New Haven. Và nếu bạn kết nối nó với máy Mac của bạn, bạn thực sự có thể kiểm soát máy tính của bạn bằng cách viết phần mềm đó thông qua sóng hồng ngoại, con số ra nơi bàn tay con người của bạn, thậm chí không cần chạm vào bàn phím của bạn. Chúng tôi nghĩ rằng chúng tôi muốn chia sẻ một cách nhanh chóng thoáng thấy lúc này, ví dụ. [MUSIC CHƠI] Vì vậy, chúng tôi có một toàn bộ bó của những điều này, quá, gọi là dải cánh tay Myo mà bạn đặt trên cẳng tay của bạn và sau đó bạn có thể kiểm soát thực hay thế giới ảo như thế này. [MUSIC CHƠI] Hoặc, chúng tôi cũng có một số Google Tông, mà là nghĩa đen, như, một hộp các tông bạn có thể đặt trên của bạn khuôn mặt, nhưng chiếu trong điện thoại của bạn vào nó để bạn đặt ly của bạn điện thoại thực sự gần gũi với đôi mắt của bạn. Và Google Tông là đẹp, giá rẻ tại $ 10 hoặc $ 20. Và nó có ống kính nhỏ mà hơi ra sự thay đổi các hình ảnh trên màn hình cho con người của bạn mắt để cung cấp cho bạn một cảm giác về chiều sâu để bạn thực sự có một 3D môi trường ở phía trước của bạn. Chúng tôi cũng có một số Samsung Gear, mà là phiên bản đắt tiền hơn về điều này, nhưng đó tương tự như vậy có thể trượt trong một Điện thoại Android và cung cấp cho bạn những ảo ảnh of-- hoặc cung cấp cho các kinh nghiệm của thực tế ảo. Và trong hai phút cuối cùng của chúng tôi, chúng tôi nghĩ rằng chúng tôi sẽ cố gắng để làm điều này. Nếu tôi có thể trình chiếu những gì Colton có ở đây chỉ là để kích thích sự thèm ăn của bạn, hãy để tôi đi trước và ném lên trên màn hình lớn ở đây. Hãy để tôi giết đèn. Colton, bạn có muốn đi trước và đặt trên di động của bạn cho một thời điểm và đến trên để các giữa sân khấu? Và bạn có muốn project-- đây là những gì Colton thấy. Bây giờ, Wi-Fi ở đây là không quá mạnh mẽ cho thiết bị này rằng đây là siêu hấp dẫn, nhưng Colton là nghĩa đen ở vị trí tương lai huyền diệu này. Ông chỉ nhìn thấy một hình ảnh. Bạn đang nhìn thấy mắt trái và phải của mình rằng bộ não của mình được khâu lại với nhau trong một không gian ba chiều môi trường trên khuôn mặt của mình. Anh ấy chỉ được lựa chọn một trình đơn tùy chọn ở đây. Và như vậy một lần nữa, anh mặc bộ tai nghe này với một điện thoại Samsung trên đó là không dây chiếu để trên cao của chúng tôi. Bây giờ bạn đang trên sao Hỏa, tôi nghĩ? COLTON: Tôi nghĩ vậy. Tôi không chắc chắn [không nghe được]. [Cười] DAVID Malan: Hóa ra Sao Hoả có các menu. COLTON: [Không nghe thấy] một số mát mẻ nơi nếu chúng ta muốn đi đối với: DAVID Malan: Nơi nào chúng ta muốn đi đâu? COLTON: [Không nghe thấy] DAVID Malan: Và chúng ta hãy xem nơi Colton của việc chúng ta hiện nay. COLTON: [Không nghe thấy] DAVID Malan: Vì vậy, có rất nhiều những nơi khác nhau, bạn có thể mất chính mình. Có FAPIs thông qua đó bạn có thể viết các trò chơi hoặc tương tác chạy, cuối cùng, trên điện thoại. Vì vậy, bạn thực sự chỉ viết một ứng dụng điện thoại di động. Nhưng nhờ vào những phần mềm và khả năng đồ họa, Hiện tại Colton là trong này tiểu thủ nhỏ bé. Và tại các nguy cơ áp đảo mình, Colton và tôi sẽ dính vào xung quanh cho trong khi ở cuối lớp ở đây hôm nay nếu bạn muốn đến và chơi. Và chúng tôi sẽ mang lại cho họ trở lại vào tuần tới là tốt. Không chậm trễ thêm nữa đó là nó cho ngày hôm nay. Chúng tôi sẽ gặp bạn vào tuần tới. [MUSIC - ragga TWINS, "BAD MAN"]