CS50 IDE
Внимание! Если вы выполняете практические задания в «Виртуальной лаборатории CS50», смело пропускайте этот параграф, проскрольте вниз.
Пришло время для теста! Откройте в Chrome страницу https://ide50-username.cs50.io/, где username — ваше имя (на предыдущем шаге вам этот адрес должен был показаться в командной строке). Вы увидите, что перенаправлены на стартовую страницу C$50 Finance! Если вдруг перед вами возникла строка «Доступ запрещен», это значит, что вы пропустили какой-то из шагов из предыдущей лекции. Попробуйте повторить все шаги, связанные с командой chmod.

Если вы снова залогинетесь на C$50 Finance с именем (эээмм…) skroob и паролем 12345, то получите ошибку Unknown database. Почему так?
Всё просто: вы не создавали никакую базу данных! В чём вопрос, давайте создадим.
Откройте https://ide50-username.cs50.io/phpmyadmin в отдельной вкладке браузера (username — ваше имя), чтобы зайти на phpMyAdmin, веб-инструмент (который написан на PHP). Здесь вы можете использовать базы данных MySQL.
MySQL — это такая бесплатная, открытая система управления базами данных. Её используют CS50, Facebook и другие сайты.
Зайдите под тем же именем и с тем же паролем, которые вы скопировали в config.json. Вы окажетесь на главной странице phpMyAdmin.
После этого с помощью CS50 IDE откройте ранее загруженный файл pset7.sql. Вы увидите целую кучу SQL (т.е. запросов к базам данных). Выделите их все, а затем выберите Edit > Copy (или нажмите ctrl-c) и вернитесь к phpMyAdmin.
Нажмите на вкладку SQL и вставьте всё, что скопировали, в большое текстовое окно страницы (оно находится под Run SQL query/queries on server «127.0.0.1»). Просмотрите, что вы вставили, чтобы понять суть команд, которые будете выполнять, затем жмите Go.
Перед вами должен появиться зелёный баннер, в таком случае все прошло отлично. Если же произошла ошибка, и вы видите
Table 'phpmyadmin.pma_table_uiprefs' does not exist
откройте окно терминала и выполните
sudo dpkg-reconfigure -f, noninteractive phpmyadmin
sudo service apache2 restart
Затем попробуйте вставить и запустить те же SQL-запросы снова. В верхнем левом углу phpMyAdmin будут ссылки на базу данных pset7
, под которыми находится ссылка на таблицу users. Правда, последние версии phpMyAdmin
полны багов, поэтому, возможно, вам придется перезагрузить страницу. Но об этом позже.
Вернитесь к https://ide50-username.cs50.io/ и перезагрузите страницу. Затем попробуйте залогиниться с именем пользователя skroob и паролем 12345. Вы увидите некую конструкцию.
«Виртуальная лаборатория CS50»
Внимание! Если вы выполняете практические задания в CS50 IDE, смело пропускайте этот параграф.
Пришло время для теста! Откройте Chrome в лаборатории и зайдите на http://pset7/.
Вы увидите, что перенаправлены на стартовую страницу C$50 Finance! Если вдруг перед вами возникла надпись «Доступ запрещен», это значит, что вы пропустили какой-то из шагов в предыдущей лекции. Попробуйте повторить все шаги, начиная с chmod.
Если вы снова залогинетесь в C$50 Finance с именем, эээмм, skroob и паролем 12345, то получите ошибку Unknown database. Почему так? Всё просто: вы ведь не создавали никакую базу данных! В чём вопрос, давайте создадим.
Перейдите к http://pset7/phpmyadmin, используя Chrome внутри «Виртуальной лаборатории», чтобы зайти на phpMyAdmin
, веб-инструмент (который написан на PHP). Здесь вы можете пользоваться базами данных MySQL.
MySQL — это такая бесплатная, открытая система управления базами данных. Её используют CS50, Facebook и другие сайты.
Зайдите под именем John Harvard (с именем пользователя jharvard и паролем crimson). Вы окажетесь на главной странице phpMyAdmin.
В отдельной вкладке (снова из Chrome в «Лаборатории») зайдите на http://cdn.cs50.net/2015/fall/psets/7/pset7/pset7.sql?download, чтобы загрузить файл pset7.sql.
После того откройте файл в gedit (в левом нижнем углу браузера или выбрав File > Open … в gedit и перейдите к Downloads). Вы увидите целую кучу SQL-запросов, то есть, запросов к базам данных. Выделите их все, а затем выберите Edit > Copy (или нажмите ctrl-c), а затем вернитесь к phpMyAdmin.
Нажмите на вкладку SQL и вставьте всё то, что скопировали, в большое текстовое окно страницы (оно находится под Run SQL query/queries on server «localhost»). Пробегитесь глазами по запросам, чтобы понять суть команд, которые будете выполнять, затем нажмите Go. Перед вами должен появиться зеленый баннер, в таком случае все прошло отлично. Если же произошла ошибка, и вы видите
Table 'phpmyadmin.pma_table_uiprefs' does not exist
откройте окно терминала и выполните
sudo dpkg-reconfigure -f, noninteractive phpmyadmin
sudo service apache2 restart
Затем попробуйте вставить и запустить те же SQL-запросы снова. В верхнем левом углу phpMyAdmin вы увидите ссылки на базу данных pset7
, под которым находится ссылку на таблицу под названием users. Правда, последние версии phpMyAdmin полны багов, поэтому, возможно, вам придется перезагрузить страницу. Но об этом позже.
Вернитесь к http://pset7/ через Chrome «Виртуальной лаборатории» и перезагрузите страницу. Затем попробуйте залогиниться с именем пользователя skroob и паролем 12345.
Chmod (для CS50 IDE и «Виртуальной лаборатории CS50»)
Окей, теперь о том, на что следует обратить пристальное внимание.
Каждый раз, когда вы создаете новый файл или папку в ~ /vhosts/pset7 («Лаборатория), ~/workspace/pset7 (CS50 IDE) или глубже, вы захотите установить разрешение используя chmod. До этого момента мы полагались на a + r и a + x, но пришла пора для более продвинутых способов установки доступа.
Для любого PHP-файла, который вы создаете, выполните команду:
chmod 600 file
тем самым вы сделаете его доступным только вам (и веб-серверу рабочего пространства). Нам не нужно, чтобы посетители видели содержимое PHP-файлов, нам нужно, чтобы они видели результат выполнения PHP-кода веб-сервером CS50.
Для всех создаваемых (или загруженных) вами не-PHP файлов, выполните команду:
chmod 644 file
это откроет доступ через браузер (если таково было ваше намерение).
А для любой директории, которую создаете, выполните
chmod 711 directory
для того, чтобы и её содержимое стало доступным через браузер.
У вас, наверное, возник вопрос, что это за цифры, и зачем их писать?
600 значит rw- --- ---. Эта команда делает все PHP-файлы доступными для чтения и записи только для вас.
644 значит rw-r--r--. Все PHP-файлы становятся доступными для чтения всем и для записи — только вам.
711 означает rwx--x--x, то есть все директории становятся доступными для выполнения всем, для чтения и записи — вам.
Почему мы не хотим, чтобы каждый мог прочитать код вашего PHP-файла? Это сделано для безопасности веб-страницы, основанные на PHP, интерпретируются как «as you». Например, привязанными к имени John Harvard в «Лаборатории» или к вашему имени в CS50 IDE.
Давайте ещё немного разберёмся с цифрами и их обозначениями. Считайте rw-r— r— представлением трёх триплетов бит. Первый из них, чтобы было ясно, — это rw-. Представьте, что «-» представляет ноль, а r, w, и x представляют единицу. Таким образом тройка (rw-) — это просто 110 в бинарной системе или 6 в десятичной! Другие два триплета, r— и r— одинаковы и оба будут равны 100 бинарной и 4 в десятичной! Как тогда выразить rw-r—r— в цифрах? 644.
На самом деле в этом утверждении есть невинная хитрость. Сейчас самое время оправдаться: легко можно понять, что в трех битах можно закодировать только 8 возможных значений. И на самом деле эти цифры (6, 4 и 4) не десятичные, а восьмеричные. Так что смело хвастайтесь перед друзьями, что вы владеете не только бинарными, десятичными и шестнадцатеричными числами, но и восьмеричными.
Yahoo!
Если вы никогда не задумывались об инвестировании и о том, как покупать и продавать акции и что вообще это значит, изучите пособие http://www.investopedia.com/university/stocks/ (на английском). На русском есть сайт http://investassist.ru/university.
Скоро вы запустите C$50 Finance, веб-инструмент, с помощью которого можно анализировать инвестиционные портфели акций. Этот инструмент позволяет вам проверять реальные актуальные цены акций и значение инвестиционного портфеля, а также покупать и продавать (точнее, «покупать» и «продавать») акции! Yahoo мелким шрифтом поясняет: «Котировки поступают с задержкой (в несколько минут), если не указано иное».
Как-то раз я услышал об интересной «копеечной акции» с ироничным биржевым кодом FREEF! Давайте посмотрим на неё. Заходите на Yahoo! Finance http://finance.yahoo.com/ и наберите название для FreeSeas Inc., FREEF в текстовом поле, находится в верхнем левом углу и выберите Get Quotes. Вы увидите примерно такую таблицу:

Вы можете сохранить данные с Yahoo Finance для дальнейшей работы. Для этого вам нужно ввести в браузере строку:
chartapi.finance.yahoo.com/instrument/1.0[TICKER]/chartdata;type=quote;range=[DAYS]d/csv
где
[TICKER] — биржевой код;
[DAYS]: Запрашиваемый объем данных в днях.
Для нашей FREEF строка будет следующей:
https://chartapi.finance.yahoo.com/instrument/1.0/FREEF/chartdata;type=quote;range=1d/csv
В браузере вы увидите примерно такие сводки:
uri:/instrument/1.0/FREEF/chartdata;type=quote;range=1d/csv
ticker:freef
Company-Name:FREESEAS INC COM USD0.001(POST
Exchange-Name:PNK
unit:MIN
timezone:EDT
currency:USD
gmtoffset:-14400
previous_close:0.0099
Timestamp:1492435800,1492459200
labels:1492437600,1492441200,1492444800,1492448400,1492452000,1492455600,1492459200
values:Timestamp,close,high,low,open,volume
close:0.0078,0.0122
high:0.0080,0.0122
low:0.0078,0.0122
open:0.0080,0.0122
volume:1000,400000
1492436166,0.0100,0.0100,0.0100,0.0100,1600
1492436331,0.0093,0.0093,0.0093,0.0093,2000
1492436830,0.0100,0.0100,0.0100,0.0100,40400
1492437264,0.0100,0.0100,0.0100,0.0100,106600
1492437474,0.0100,0.0100,0.0100,0.0100,61200
1492437508,0.0100,0.0100,0.0099,0.0099,274500
1492437586,0.0120,0.0120,0.0120,0.0120,1000
1492437862,0.0100,0.0100,0.0100,0.0100,70000
1492437945,0.0100,0.0100,0.0100,0.0100,5200
1492437988,0.0122,0.0122,0.0122,0.0122,30000
1492438032,0.0122,0.0122,0.0122,0.0122,50000
1492441289,0.0120,0.0120,0.0120,0.0120,20000
1492441449,0.0101,0.0101,0.0101,0.0101,38000
1492441574,0.0100,0.0100,0.0100,0.0100,65800
1492441802,0.0101,0.0101,0.0101,0.0101,62000
1492443124,0.0120,0.0120,0.0120,0.0120,1500
1492443551,0.0093,0.0101,0.0093,0.0101,400000
1492444679,0.0090,0.0096,0.0090,0.0096,89700
1492444691,0.0095,0.0095,0.0091,0.0091,209300
1492445343,0.0078,0.0080,0.0078,0.0080,10000
1492447584,0.0100,0.0100,0.0100,0.0100,1900
1492458869,0.0100,0.0100,0.0100,0.0100,10000
Скопируйте эти данные из браузера, вставьте в файл приложения, работающего с текстовыми файлами, и сохраните его с расширением csv. Данные ваши.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ