Я знаю общую картину, но не могу поставить ее на место - PullRequest
5 голосов
/ 08 июня 2010

Я заинтересован в веб-разработке, и под этим я подразумеваю более крупные проекты, такие как Facebook или Twitter. Я знаю основы Java, CSS, PHP и MySQL. Я знаю, что там намного больше. Я читал об этом. Но я не знаю, какова цель и как ее реализовать.

Такие вещи, как: Scribe, Thrift, Casandra, Unix / Linux, сценарии оболочки / Perl / Python, PostgreSQL, MongoDB, нереляционные хранилища данных NoSQL, JVM, nginx

Я хочу знать, зачем им это нужно, как они это используют и какова цель.

Что мне нужно, так это книга, подобная техническому фону Facebook для чайников или около того. Существуют ли книги или сайты, которые объясняют это с нуля?

Спасибо!

EDIT:

Спасибо за ваши ответы! Вы были очень полезны. Я полагал, что опытные программисты знают почти все о технологиях, которые используются сегодня. Но пока я читаю, вы можете знать только так много, и мне нужно выяснить, какую технологию использовать. Я беру поощрение, чтобы начать строить маленький. И оттуда возьму php и улучшу свои навыки.

Еще раз спасибо!

Ответы [ 6 ]

5 голосов
/ 08 июня 2010

http://highscalability.com/

Это один из лучших сайтов там. Есть несколько тематических исследований, описывающих, что и почему используют многие веб-сайты, и указатели на дальнейшие ссылки. Я бы также посмотрел доклады на конференции по масштабируемости Google 2007

http://www.google.com/search?q=Google+Scalability&hl=en&client=firefox-a&hs=YUg&rls=org.mozilla:en-US:official&prmd=v&source=univ&tbs=vid:1&tbo=u&ei=fl4OTPUkorIwueCQxQw&sa=X&oi=video_result_group&ct=title&resnum=4&ved=0CDIQqwQwAw

2 голосов
/ 08 июня 2010

Лучше всего начать с создания небольших простых веб-сайтов, и, когда вы сталкиваетесь с проблемами, которые вам нужно решить, вы исследуете инструменты, необходимые для решения этих проблем.

Если вы атакуете все области одновременно, это будет ошеломляющим, и вы никуда не доберетесь.

Для общего обзора того, что делает каждая из технологий, Википедия дает хороший обзор большинства технологий.

Если вас интересует содержание базы данных, которое, как вам кажется, хорошее место, чтобы начать с изучения нормализации.

2 голосов
/ 08 июня 2010

Это все о выборе правильного инструмента для работы в моих глазах. Там так много технологий, что невозможно научиться всему этому. Просто выберите подмножество, которое будет работать для вас.

1 голос
/ 08 июня 2010

Проблема, с которой вы сталкиваетесь, заключается в том, что вы смотрите на более мелкие, специализированные продукты, а не на более крупные и более зрелые технологии. Википедия действительно даст вам приличный обзор большинства средних и крупных проектов.

Cassandra, Hadoop, Mongo и NoSQL прекрасны ... но это специальные инструменты. SQL - это решение общего назначения, которое работает на 99% сайтов в сети.

Unix / Linux не специализированный инструмент; Возможно, вы захотите зайти на сайт Ubuntu и установить Linux, и просто использовать его изо дня в день, как вы используете Windows. Когда вам нужно придумать что-то новое, например, настроить веб-сервер, сделайте это на Linux * и на Windows, и вы в конечном итоге выучите linux чертовски хорошо.

Что касается написания сценариев, О'Рейли делает великолепную серию книг по Bash, Perl и Python.

JVM - это виртуальная машина Java, которая является основой для работы с Java-кодом. На веб-сайте Sun есть множество учебных пособий по изучению Java.

Может быть, намного, намного проще выбрать проект (или три), который вы хотели бы изучить, и изучить некоторые из них, выполнив. Я бы, вероятно, предложил изучить некоторый SQL, прежде чем изучать новые альтернативы; это позволяет изучать остальную часть системы, поскольку SQL довольно прост. После того, как вы разберетесь со всем остальным, попробуйте поменять местами решение NoSQL.

1 голос
/ 08 июня 2010

Scribe, Thrift, Casandra, Unix / Linux, сценарии оболочки / Perl / Python, PostgreSQL, MongoDB, нереляционные хранилища данных NoSQL, JVM, nginx

Те, кого я бы искал в Википедии, чтобы получить быстрый обзор. Facebook написан на PHP / MySQL. Есть несколько книг на тему создания сайтов социальных сетей, и некоторые книги получили достойные отзывы на Amazon.com, однако я сам не читал ни одной из них.

На вашем месте я бы начал с PHP / MySQL, сел бы и написал простую социальную сеть. Разбейте проект на компоненты и задачи и Google для каждой проблемы, с которой вы столкнулись, например, сессий, структуры базы данных, безопасности, структуры друзей и обработки запросов POST и GET.

Вы многому научитесь и получите большую картину. Как только вы увидите общую картину, вы можете еще раз взглянуть на различные доступные технологии, а затем решить, какой компонент вы могли бы разработать лучше с помощью других инструментов. Лично я не думаю, что изучение слишком большого количества доступной технологии хорошо для того, кто еще находится на начальных этапах. Начните делать, учитесь на этом, и тогда ваши вопросы станут намного более конкретными, и многое станет более понятным.

0 голосов
/ 08 июня 2010

Есть много фреймворков, которые делают много разных вещей. Вы назвали много разных вещей из разных областей. Лучший способ думать об этих вещах - группировать их по категориям. Вот пример:

Предположим, у вас есть ноутбук и вы хотите разместить веб-сайт. Как минимум вам понадобится следующее:

1) Программное обеспечение веб-сервера. Два популярных варианта - это IIS от Microsoft и веб-сервер Apache.

Это действительно все, что тебе нужно. Вы можете настроить папку www_root и загрузить в нее файлы. При условии, что все настроено правильно, теперь вы можете загружать HTML-страницы в эту папку и получать к ним доступ через свой IP-адрес. Каждая страница, которую вы просматриваете в своем веб-браузере, имеет формат HTML. CSS - это язык таблиц стилей, который определяет формат вашего HTML. Вы также можете начать писать Javascript, так как большинство современных браузеров поддерживают язык сценариев на стороне клиента.

Скорее всего, вам также понадобится следующее:

2) База данных программного обеспечения. Два популярных варианта Microsoft SQL Server и MySQL 3) Серверные скрипты. PHP очень популярен, как и ASP. Вам понадобится среда выполнения, развернутая на вашем сервере. Python, Ruby, Perl и т. Д. Все подпадают под эту категорию. 4) Каркас (ы) веб-приложений. Это предоставит вам библиотеки на выбранном вами языке, чтобы помочь в разработке веб-приложений и веб-сайтов. CakePHP, Ruby on Rails и Google Web Toolkit являются примерами каркасов веб-приложений.

Кроме того, вы можете использовать:

5) Дополнительные библиотеки. Например, JQuery быстро становится популярной библиотекой для Javascript, которая выполняет множество общих для вас задач. Вместо написания кода со сложными эффектами и тому подобного, просто используйте предварительно написанный код в библиотеке JQuery. 6) Технология обмена данными. Если вы передаете много информации туда и обратно, вы, вероятно, захотите инкапсулировать эти данные в логическом формате. В идеале этот формат описывает данные и позволяет вашим приложениям легко читать / обрабатывать их в соответствии со стандартом. Здесь вступают в игру XML и JSON.

Я не могу рекомендовать вам хорошую книгу для изучения этого материала, но я чувствую, что коллективных ответов на ваш вопрос здесь должно быть более чем достаточно, чтобы вы начали.

В конечном счете, вам нужно определить, какие технологии вам нужны, а затем выбрать подходящую для работы. Не создавайте приложение с использованием Ruby on Rails только потому, что это то, чем пользовался Twitter, а выбирайте его, потому что оно дает вам некоторые преимущества перед другими вариантами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...