Я сделал немного веб-программирования (использующий PHP и MySQL), но ничто слишком большое по своим масштабам. Я думал о том, как кто-то создал бы тип социальной сети сайта, и я имею, столкнулся с некоторыми проблемами.
Что-либо преподававшее в классе или записанный в книгах просто, кажется, не переводит хорошо в реальный производственный код. Они просто походят на очень простые примеры.
Спасибо!
Относительно хранения паролей: используйте одностороннее хеширование с солью для безопасности. Вот статья о том, почему .
Хранить соленый хэш. Лично я бы отошел от md5 и вместо этого использовал что-то вроде sha. sha1 + соль продержится некоторое время =]
Если вы храните изображения как капли в db, то в будущем вам, вероятно, будет проще их записать (вдоль w/the db, забирая их и т.д.). Но на самом деле, они будут чертовски быстры и в файловой системе, но я бы предпочел, чтобы они были в базе данных, так как у меня много кода, который взаимодействует с w/the db, и мне удобно работать в этой области. Это зависит от тебя.
Я не уверен, что wordpress поможет вам построить сайт социальной сети... но он все равно хорош для чтения чужого кода. Я бы взглянул на несколько книг об архитектуре Амазона, чтобы заставить твой разум мыслить масштабно. Также, взгляните на некоторые книги по шаблонам дизайна.
Я бы также взглянул на что-нибудь вроде Zend Framework или CakePHP. CakePHP, вероятно, заставит вас работать довольно быстро, но я предпочитаю Zend, так как он очень мощный и не заставляет вас кодировать определенный стиль. CakePHP похож на рельсы для PHP.
Вы также захотите получить достойный уровень безопасности, как на стороне сервера, так и на стороне клиента, наблюдая за такими вещами, как перехват сеанса, sql инъекция, xss, попытки грубой силы, удаленные включения, загруженные файловые эксплойты и т.д.
Социальные сайты предлагают множество векторов атак для взломщиков.
Resources:
http://www.amazon.com/Pro-PHP-Security-Chris-Snyder/dp/1590595084/ref=sr_1_1?
And your local PHP mailing list / meetup.
У меня есть веб-сайт, который позволяет пользователям загружать изображения. Изображения упорядочены по ячейкам (то есть по 1000 изображений в ячейке) просто для того, чтобы она была организована (и у вас может быть только определенное количество файлов в папке, прежде чем вы столкнетесь с проблемами). Местоположение изображений хранится в базе данных, а также другая информация (например, идентификатор изображения, расширение файла, расположение корзины и т. Д.). Другая таблица в базе данных связывает идентификаторы изображений с пользователем. Кроме того, имя файла изображения после загрузки выглядит примерно так:
{bin} / {userId} _ {pictureId} _ {token} _ {option}. {FileExt}
Не уверен насчет веб-приложений, но вам определенно стоит использовать некоторые встроенные классы PHP, такие как уровень абстракции базы данных PDO.
Для хранения пароля я предлагаю использовать MD5 с солью. MD5 невозможно расшифровать, но можно взломать с помощью радужных таблиц. Например: Вот сайт для поиска MD5, который я закодировал
Я бы лично загрузил их прямо на сервер, однако, вы должны убедиться, что только действительные файлы образов могут быть загружены. Не хочу, чтобы кто-то загружал корневую оболочку.
Вопрос 3: Я бы посоветовал изучить один из современных фреймворков в стиле Rails (мой любимый - Symfony), а не такое приложение, как Wordpress или Gallery. Они оба превосходны, но они эволюционировали из простых хаков, и не обязательно так, как я бы начал что-либо, если бы начинал с нуля.
Также, отвечая на вопрос 2, я ненавижу двоичные капли в базах данных. Файловые системы отлично подходят для этого.
И вопрос 1: односторонний хэш, как говорили другие. Функция Mysql password (), вероятно, в порядке.
Большинство разработчиков Java предпочтут видеть getters и setters.
Никто не может разрабатывать код в вашей упаковке, но другие потребляют его. Открывая явно открытый интерфейс, вы можете гарантировать, что внешние потребители используют ваш интерфейс так, как вы ожидаете.
Если вы публично раскрыли внутреннюю реализацию класса:
Поддержание гетеров и установщиков может занять немного больше времени, но предлагает гораздо больше безопасности плюс:
Вы должны решить, стоит ли преимущества за дополнительное время.
-121--4116883-Я успешно использовал PortAudio.
Я взял несколько отрывков из моей игрушечной программы, чтобы сделать очень простой «эхо» пример, ниже:
(запустить с наушниками. это цикл обратной связи от микрофона к динамикам и может стать очень громким после нескольких раундов обратной связи)
import Control.Monad (forever)
import Data.Int (Int16)
import Foreign.Ptr (nullPtr)
import Sound.PortAudio
initPortAudio :: Int -> IO (PaStream Int16)
initPortAudio blockSize = do
Right NoError <- initialize
Just micDevIdx <- getDefaultInputDevice
Just spkDevIdx <- getDefaultOutputDevice
Right paStream <-
openStream
(Just (StreamParameters micDevIdx 1 PaInt16 0.1 nullPtr))
(Just (StreamParameters spkDevIdx 1 PaInt16 0.1 nullPtr))
44100 blockSize
:: IO (Either String (PaStream Int16))
Right NoError <- startStream paStream
let zeroBlock = replicate blockSize [0]
Right NoError <- writeStream paStream zeroBlock blockSize
return paStream
main :: IO ()
main = do
paStream <- initPortAudio blockSize
forever $ do
Right numSampsAvail <- getStreamReadAvailable paStream
Right curSamps <- readStream paStream 1 numSampsAvail
Right NoError <- writeStream paStream curSamps numSampsAvail
return ()
where
blockSize = 0x800
Работает здесь в Leopard с GHC 6.10.4.
Моя собственная игрушечная программа фактически использует только вход звука и выводит нули на выход звука (не делая этого PortAudio жалуется).
-121--3723732-Для хранения образов я всегда хранил их на жестком диске, но используя очень жесткий сценарий проверки образов, чтобы убедиться, что образы не содержат вредоносного кода. Я также используется для применения перезаписи URL, чтобы пользователи не могли найти реальный путь к изображениям.
Разве у вас нет странного ощущения, что вы храните изображения в базах данных? База данных mysql может расти очень быстро, и вам всегда нужен PHP скрипт для отображения изображений, что означает, что это делает ваш сервер медленнее.
Что касается места хранения паролей, используйте соление, как ответили другие.
Наконец, для документации, я очень люблю видеть, как Wordpress структурирован. Я часами смотрел исходный код и читал документы. Это просто ужасно хороший пример того, как организовать любой сайт.
Возможно, что-то сохраняется на .resx формы вместо .designer? Я не могу вообразить , почему это сделало бы это, но да...
Если все остальные ошибки не удается, попробуйте удалить ListView из формы. Затем создайте новую нежелательную форму в вашем проекте, воссоздав ListView на нежелательной форме, проверьте нежелательную форму, чтобы убедиться, что вы не получили странное поведение вуду, а затем скопируйте ListView из нежелательной формы обратно в вашу реальную форму?
Ужасно запутанный, я знаю...
-121--2850114-Aspell.Net выглядит хорошо, но, похоже, больше не поддерживается. Я не смог заставить его работать на своей машине.
После поиска в SourceForge я обнаружил NHunspell , который является портом .Net средства проверки периода от OpenOffice.org. Он предоставляет методы проверки орфографии, поиска синонимов и расстановки переносов. Он активно поддерживается в это время, и поставляется с простым для понимания образцом кода.
По собственным словам проекта:
-121--1533147-Проверка периода, Гипенация и Тезаурус: NHunspell
NHunspell - это свободный период с открытым исходным кодом для .NET Framework. C # и Доступен образец кода Visual Basic для проверки периода, расстановки переносов и поиск синонимов через тезаурус.
NHunspell основан на Hunspell и вызывает проверку периода Open Office, переносы и тезаурус в Microsoft ® .NET Framework. NHunspell является библиотекой и оболочками .NET (C #, VB) собственные библиотеки Hunspell, дефис и MyThes.
Интегрированные библиотеки используются в OpenOffice и работа с словари опубликованы на OpenOffice.org. Лицензия
NHunspell лицензирована по: GPL/LGPL/MPL. Свободное использование в коммерческих целях допускаются приложения в соответствии с лицензии LGPL и MPL. Ваш коммерческое приложение может связать против DLL NHunspell.
Ответы на все эти вопросы были получены ранее.
Как бы Вы безопасно и безопасно хранили пароли в MySQL? Какие типы шифрования можно использовать?
См. https://stackoverflow.com/search?q=password+hash+database+php
Если пользователям было разрешено загружать картины, лучше ли хранить их в базе данных или загружать непосредственно на сервер?
См. https://stackoverflow.com/search? q = store + images + database + php
Какие веб-приложения с открытым исходным кодом (такие как WordPress) вы бы рекомендовали мне читать и изучать (желательно что-то простое, но хорошо написанное)?
Смотрите https://stackoverflow.com/search? q = social + network + php
Также следует учитывать, что запуск и управление сайтом социальной сети - это не просто кодирование. Вы действительно хотите создать его с нуля? Подумайте, будете ли вы в равной степени довольны чем-то вроде Нинга, где каждый может создать свое собственное сообщество без программирования?