Перейти к содержимому

Фото
- - - - -

Võrgurakendused I / Programmeerimise põhikursus


  • Вы не можете создать новую тему
  • Please log in to reply
1046 ответов в этой теме

#781 Эдгарулик

Эдгарулик

    Мусечка

  • Постоялец
  • 4 871 сообщений
  • Откуда:Столица

Отправлено 03 декабря 2010 - 19:13

VR1 и Java УГ
  • 0

#782 archieb0ld

archieb0ld
  • Пользователь
  • 646 сообщений
  • Откуда:IABB

Отправлено 03 декабря 2010 - 21:38

ребята, не путайте народ. Один спрашивал про Выргу, другой отвечает про ППК. Разделите уже млять темы, заколкапало
  • 0
www.last.fm/user/archieb0ld
Когда я перестану пить...совершенно, все скажут: "Как же он хорош! Какая милашка!" © НаиВ
Когда таким, как ты сейчас, был я, таких, как я сейчас, не слушал. © Тараканы

#783 Эдгарулик

Эдгарулик

    Мусечка

  • Постоялец
  • 4 871 сообщений
  • Откуда:Столица

Отправлено 03 декабря 2010 - 21:44

покройте эту и новые 2 сделайте
  • 0

#784 null

null
  • Постоялец
  • 15 928 сообщений

Отправлено 03 декабря 2010 - 21:46

На следующей неделе 100% разделю.
  • 0

#785 Эдгарулик

Эдгарулик

    Мусечка

  • Постоялец
  • 4 871 сообщений
  • Откуда:Столица

Отправлено 03 декабря 2010 - 21:47

покройте эту и новые 2 сделайте


и просто ссылки туда-сюда оставьте
  • 0

#786 Wardann

Wardann
  • Пользователь
  • 56 сообщений

Отправлено 04 декабря 2010 - 01:23

Народ,в 4 дз выргу как организовать проверку,является ли человек в списке мои друзья? У меня только складывается такое решение:

1) Создать таблицу friends и выделить в ней 3- поля(id,user,pass,email,status);
2) Создать кнопку Добавить друзя и обработчик для неё click,в котором через аякс пышному скрипту(как в вк) передавался бы логин и заносился бы инсертом(походу херню сморозил)в таблицу с френдами;
3)Создать кнопку Отправить приглашение будущему друзю(ну чот такое),но опять-таки через аякс!(о_О!) проверять,есть ли такой аккаунт уже в таблицы френдов.
Если есть,то выдать предупреждение мол *такой друзь уже есть!*
4)Для вывода списка друзей тупо заюзать while($row = mysql_fetch_arra($r)) {}

Есть у кого какие мысли ?? Теряется логика,блин... Нарисовать это дело,чтоли.
  • 0

#787 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 04 декабря 2010 - 11:09

Wardann, Я считаю в первую очередь надо головй подумать?

P.S. Извините не сдержался.
P.P.S. Ты составь полную структуру отношений, тогда проще будет с базами
P.P.P.S По поводу реализации, это уже твоё личное дело.
  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#788 Wardann

Wardann
  • Пользователь
  • 56 сообщений

Отправлено 04 декабря 2010 - 16:37

Wardann, Я считаю в первую очередь надо головй подумать?




Да? Слушаю твою версию.Внимательно.
  • 0

#789 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 04 декабря 2010 - 16:52

Wardann, Опять же, я же просто пошутил, на что указал в пс :)
у frienship идет many to many к юзер, если конечно ничего не путаю. Так что требуется одна таблица где будет ид записи ид юзера номер один ид юзера номер два. Если запись есть в таблице, значит друзья, если нет значит не друзья. Опять же возможны варианты, типа как уместить всю БД в одну таблицу, но это уже на вкус и цвет...
  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#790 K1sa

K1sa
  • Новобранец
  • 7 сообщений

Отправлено 04 декабря 2010 - 20:55

JakeTheFIsh, интересно будет посмотреть на приложение с одной таблицей в БД, когда как минимум должно быть 2 таблицы из-за реляции между ними.

Народ,в 4 дз выргу как организовать проверку,является ли человек в списке мои друзья? У меня только складывается такое решение:

1) Создать таблицу friends и выделить в ней 3- поля(id,user,pass,email,status);
2) Создать кнопку Добавить друзя и обработчик для неё click,в котором через аякс пышному скрипту(как в вк) передавался бы логин и заносился бы инсертом(походу херню сморозил)в таблицу с френдами;
3)Создать кнопку Отправить приглашение будущему друзю(ну чот такое),но опять-таки через аякс!(о_О!) проверять,есть ли такой аккаунт уже в таблицы френдов.
Если есть,то выдать предупреждение мол *такой друзь уже есть!*
4)Для вывода списка друзей тупо заюзать while($row = mysql_fetch_arra($r)) {}

Есть у кого какие мысли ?? Теряется логика,блин... Нарисовать это дело,чтоли.


1) В данном случае в таблицу friends не нужно ничего писать, кроме ID двух человек, которые продтвердили дружбу между собой внутри приложения.
2) Слишком усложняешь. Просто не отображай кнопку для пользователей, ID которых есть в таблице friends. Сортировку SQL-запросом выполнить можно.
3) Опять усложняешь с AJAX. Создай еще одну таблицу в БД для хранения запросов о дружбе. Каждый раз при логине пользователя выводи ему на главной странице все существующие для него запросы с двумя кнопками - "принять" и "отклонить". "Принять" заносит запросившего в список друзей и удаляет уже ненужный запрос из таблицы. "Отклонить" сразу же удаляет запрос из таблицы БД.
Проверку нужно ставить не при отображении запроса о дружбе, а при подаче его - т.е. не выводить кнопку "Добавить в друзья" если пользователи уже и так друзья.
4) Лупом, да. Только не забудь правильный SQL-запрос построить, который бы выделял из таблицы friend только друзей конкретного пользователя, а не всех подряд.

P.S Конечно нарисуй :) Это всегда помогает при разработке. А еще ERD смоделируй, чтобы понять как будет работать твоя БД.

у frienship идет many to many к юзер, если конечно ничего не путаю.


Optional one-to-many. У 1 пользователя может быть много друзей, но может и вообще не быть.
Размещенное изображение

Сообщение изменено: K1sa (04 декабря 2010 - 21:06 )

  • 0

#791 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 04 декабря 2010 - 22:13

K1sa,
а ну да, че-то поздапарился :)Один ко многим

P.S. Ну теоретически, только теоретически можно создать БД вообще с одной ячейкой, но это извращение %).
Если все же интересует. То подумай об ХМЛ.

Верхний нод - юзер, у юзера атрибуты типа новости, друзья, и все такое. И скрипт загружает из базы эту ячейку обрабатывает и через какой-нить rowmapper преобразует все в нормальный вид, но это все...мсье знает толк в извращениях..
P.P.S. трололо :)))
  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#792 Mr. Positive

Mr. Positive
  • Постоялец
  • 850 сообщений

Отправлено 04 декабря 2010 - 22:18

JakeTheFIsh,
угу и для полного счастья еще придумать сверхгениальный алгоритм сериализации/десериализации объектов со сжатием данных для работы с одной этой ячейкой в базе данных :)

Сообщение изменено: Mr. Positive (04 декабря 2010 - 22:20 )

  • 0
Former IAPB 8X.
Bachelor of Eternity

#793 K1sa

K1sa
  • Новобранец
  • 7 сообщений

Отправлено 04 декабря 2010 - 22:30

Можете извращаться сколько хотите, я рассуждаю исходя из требований к поставленной задаче. И задача даже близко не рассматривает использование XML или какие-то хитрые скрипты для сжатия данных и так далее. Это типичное задание для айтишников 1-ого курса. Ее решение сводится к использованию правильно смоделированных таблиц и постороению правильных SQL-запросов.
Вот лучше бы поделились идеями насчет хранения списка друзей. У меня тут 3 способа назрело, но хочется еще мнения услышать. Кто какие таблицы использует и как запрашивает хотя бы отображение этого списка из БД.
  • 0

#794 Mr. Positive

Mr. Positive
  • Постоялец
  • 850 сообщений

Отправлено 04 декабря 2010 - 22:38

Высказывание

Это типичное задание для айтишников 1-ого курса.

исключает надобность

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


P.S.

Ее решение сводится к использованию правильно смоделированных таблиц и постороению правильных SQL-запросов.

Спасибо, Кэп!
  • 0
Former IAPB 8X.
Bachelor of Eternity

#795 K1sa

K1sa
  • Новобранец
  • 7 сообщений

Отправлено 04 декабря 2010 - 22:43

Исключает надобность общения и выслушивания чужого мнения?) Помощь мне не нужна.
  • 0

#796 Wardann

Wardann
  • Пользователь
  • 56 сообщений

Отправлено 04 декабря 2010 - 22:45

Спасибо за помощь.Наверное,уже завтра буду разбираться.Слишком много времени ушло на решение простых вопросов...
  • 0

#797 Mr. Positive

Mr. Positive
  • Постоялец
  • 850 сообщений

Отправлено 04 декабря 2010 - 22:51

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

в). да и помощь тебе не нужна, а общение и советы как раз к помощи можно прировнять

В общем не понятно чего ты хочешь :)
  • 0
Former IAPB 8X.
Bachelor of Eternity

#798 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 04 декабря 2010 - 22:52

Mr. Positive, ооо...а блекджек и шлюхи будут? %)

K1sa, Я рассуждаю из простого желания потрещать о чем-то отвлеченном :)))

Я как-то другу сказал, что читал спор между оракл и постгре. Смысл том что одна база круче другой из-за того что одна может выдержать ну допустим 10 миллионов транзакций, а другая только 9млн. На что он процитировал персонажа из СССР: ядерный потенциал США сможет уничтожить Землю 30 раз, а яд. пот. СССР только 26. Какой эпик...
Суть этого всего в том, что "идеального" способа нет, оптимальность покажет только процесс использования...чего в принципе у этих проектиков не будет ;)

Ну если вы настаиваете так, то : хранение списка друзей вообще это массив. Сама таблица скорей всего будет иметь 3 ячейки ид ид1 ид2. Причем при sql запросе проверяется оба варианта то бишь проверяется ид1 ид2 и наоборот ид2 ид1. Вроде того. Можно конечно придумать что-то поинтересней, но зачем :)
  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#799 K1sa

K1sa
  • Новобранец
  • 7 сообщений

Отправлено 04 декабря 2010 - 23:04

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

в). да и помощь тебе не нужна, а общение и советы как раз к помощи можно прировнять


Для 1ого курса айтишников, я ж не айтишник. Даже если задание простое, это не значит что его нельзя обсудить и подумать над альтернативными способами его решения.
Насчет помощи.. может я другим хочу помочь, поэтому и пишу?;)

Ну если вы настаиваете так, то : хранение списка друзей вообще это массив. Сама таблица скорей всего будет иметь 3 ячейки ид ид1 ид2. Причем при sql запросе проверяется оба варианта то бишь проверяется ид1 ид2 и наоборот ид2 ид1. Вроде того. Можно конечно придумать что-то поинтересней, но зачем :)


Объясни мне, зачем хранить лишние данные в БД? Зачем нужно 3 ячейки? Если ты говоришь что SQL-запрос будет проверять отношение ID_1 к ID_2 и наоборот, значит ты имеешь ввиду такую таблицу:
| ID | ID_1 | ID_2 |
 ------------------
| 1  | uid1 | uid2 |
| 2  | uid2 | uid1 |

Я правильно понимаю? Т.е. для хранения одной связи между пользователями ты будешь использовать по 3 ячейки в двух строчках таблицы. Это конечно круто, будет быстро работать и легко сортировать списки, но дубликация данных как то портит всю картину. Да и непонятно тогда для чего тебе нужна ячейка с ID

Сообщение изменено: K1sa (04 декабря 2010 - 23:05 )

  • 0

#800 Wardann

Wardann
  • Пользователь
  • 56 сообщений

Отправлено 04 декабря 2010 - 23:09

Народ,какими плагинами/расширениями/виджетами (или что там ещё есть) можно просмотреть размеры в пикселях/процентах объектов на экране? (В Опера) А то на глаз прикидывать в блокноте сколько там осталось пикселей оттуда-то досюда-то имхо не катит.Сначала подумал,чтобы брать в процентах от ширины/высоты экрана,но ведь у разных браузеров разные отступы(Ещё и в разных версиях разные отступы - зашибись).Следовательно,такой вариант не катит.
  • 0

#801 K1sa

K1sa
  • Новобранец
  • 7 сообщений

Отправлено 04 декабря 2010 - 23:11

Народ,какими плагинами/расширениями/виджетами (или что там ещё есть) можно просмотреть размеры в пикселях/процентах объектов на экране? (В Опера) А то на глаз прикидывать в блокноте сколько там осталось пикселей оттуда-то досюда-то имхо не катит.Сначала подумал,чтобы брать в процентах от ширины/высоты экрана,но ведь у разных браузеров разные отступы(Ещё и в разных версиях разные отступы - зашибись).Следовательно,такой вариант не катит.


Планировать размеры заранее, когда рисуешь макет в редакторе, например. Иначе на глаз.
  • 0

#802 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 04 декабря 2010 - 23:23

K1sa,
| ID | ID_1 | ID_2 |
------------------
| 1 | uid1 | uid2 |
| 2 | uid2 | uid1 |
Я имел ввиду как раз что бы проверялось в ID_1 ID_2 оба варианта как то есть uid1 и uid2 так и наоборот
  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#803 K1sa

K1sa
  • Новобранец
  • 7 сообщений

Отправлено 04 декабря 2010 - 23:24

Я понял, только для этой проверки не нужна третья ячейка то :)
  • 0

#804 unnamed6132

unnamed6132
  • Пользователь
  • 108 сообщений

Отправлено 05 декабря 2010 - 01:37

зачем хранить лишние данные в БД? Зачем нужно 3 ячейки?
Да и непонятно тогда для чего тебе нужна ячейка с ID

Есть договорённость, что у каждого объекта должен быть свой уникальный ID. В данном случае он позволит различать наши объекты "friendship" из базы. Если не будет ID, то придётся при каждом обращении к определённым "дружбам" (удаление, обновление статуса, ...) в таблице делать запрос наподобие

%ПЕРВАЯ ЧАСТЬ ЗАПРОСА% WHERE user1="%USERID1%" AND user2="%USERID2%" OR user2="%USERID1%" AND user1="%USERID2%"

Много буков. ИМХО, приличнее будет выглядеть

%ПЕРВАЯ ЧАСТЬ ЗАПРОСА% WHERE id="%ID%"


Сначала подумал,чтобы брать в процентах от ширины/высоты экрана,но ведь у разных браузеров разные отступы

Какие отступы? От краёв документа? Их можно задать - например, сделать нулевыми. Кстати, заданный в пикселях размер будет коряво выглядеть, если будешь менять размеры броузера или делать zoom.

В таблице с друзьями, кстати, было бы неплохо сделать "статус" - т.е. принята ли дружба. А по 2 строки на дружбу двух людей плодить не надо - можно обойтись и одной, в MySql есть необходимые для этого команды.

Сообщение изменено: Tasmanian Fox (05 декабря 2010 - 01:37 )

  • 0

#805 K1sa

K1sa
  • Новобранец
  • 7 сообщений

Отправлено 05 декабря 2010 - 02:57

Есть договорённость, что у каждого объекта должен быть свой уникальный ID. В данном случае он позволит различать наши объекты "friendship" из базы. Если не будет ID, то придётся при каждом обращении к определённым "дружбам" (удаление, обновление статуса, ...) в таблице делать запрос наподобие

Много буков.


Если ты сделаешь ID уникальным, ты только затруднишь себе задачу при сортировке и отображении списка друзей, т.к. у тебя будет 2 разных ID на одну связь. Тебе придется 2 раза обращаться к базе, чтобы получить результат с дружбой пользователей. К тому же в таблице, у которой реляция one-to-many между двумя другими таблицами уникальных ключей не делают. Если mysql на InnoDB движке, то forein key по отношению к уникальным ключам двух других таблиц (или вообще к одной таблице с пользователями в нашем случае).

И не нужно боятся строить большие запросы, это наоборот плюс. Что то типо
SELECT a.ID, b.имя, b.фамилия FROM друзья a, пользователи b WHERE ID_дружбы IN (SELECT ID_дружбы FROM друзья  WHERE ID = 'ID_залогинено_юзера') AND a.ID != 'ID_залогинено_юзера' AND a.ID = b.ID

Советую почитать: http://www.kirupa.co..._db_design7.htm

Сообщение изменено: K1sa (05 декабря 2010 - 03:00 )

  • 0

#806 Ketty:)

Ketty:)
  • Пользователь
  • 223 сообщений
  • Откуда:Tallinn

Отправлено 05 декабря 2010 - 14:56

а такой вопрос про uudiste feed. это имеется ввиду простое добавление "новостей" или например надо сделать отображение новостей типа " вася пупкин стал другом пети пупкина"?
  • 0

#807 Mr. Positive

Mr. Positive
  • Постоялец
  • 850 сообщений

Отправлено 05 декабря 2010 - 16:57

Ketty:),
там ничего про это не сказано, значит и так и так будет верно.
  • 0
Former IAPB 8X.
Bachelor of Eternity

#808 JakeTheFIsh

JakeTheFIsh
  • Пользователь
  • 629 сообщений

Отправлено 05 декабря 2010 - 17:05

K1sa, Tasmanian Fox, Моё кунгфу круче вашего :P
  • 0
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

#809 unnamed6132

unnamed6132
  • Пользователь
  • 108 сообщений

Отправлено 05 декабря 2010 - 18:37

И не нужно боятся строить большие запросы, это наоборот плюс.
Тебе придется 2 раза обращаться к базе, чтобы получить результат с дружбой пользователей.

По поводу первой мысли - поддерживаю полностью, большие запросы, не требующие осуществления каких-либо дополнительных запросов, рулят. Насчёт второй идеи - можно выкрутиться через UNION, объединяющий 2 запроса в один, при условии, что названия столбцов совпадают.
Для примера. Цель: выцепить ИД, имена и фамилии твоих друзей - как тех, кто тебя добавил, так и тех, кого добавил ты:
SELECT user.id, user.name, user.surname FROM user RIGHT JOIN
friendship ON user.id = friendship.subject WHERE friendship.accept = '1'
AND friendship.object = '$user->id'
UNION
SELECT user.id, user.name, user.surname FROM user RIGHT JOIN
friendship ON user.id = friendship.object WHERE friendship.accept = '1'
AND friendship.subject = '$user->id'

Куски запросов можно также сортировать. Вот например отсортированные по дате в порядке убывания последние 20 новостей друзей:
SELECT news.id, news.content, user.name, user.surname, user.id as uid, news.date AS date FROM news RIGHT JOIN user ON news.author = user.id
LEFT JOIN friendship ON friendship.object = user.id WHERE friendship.subject = $uid
AND friendship.accept = '1' AND news.content != 'NULL'
UNION
SELECT news.id, news.content, user.name, user.surname, user.id as uid, news.date AS date FROM news RIGHT JOIN user ON news.author = user.id
LEFT JOIN friendship ON friendship.subject = user.id WHERE friendship.object = $uid
AND friendship.accept = '1'  AND news.content != 'NULL'
ORDER BY date DESC LIMIT 20

Моё кунгфу круче вашего

Особенно про список друзей в одной ячейке понравилось. Я бы даже сказал не кунгфу, а фехтование на сковородках :D
  • 0

#810 Mr. Positive

Mr. Positive
  • Постоялец
  • 850 сообщений

Отправлено 11 декабря 2010 - 20:07

Только сейчас обратил внимание, у господина Таммета про HTML, CSS, JS ничего не сказано в последнем задание. Никто его не спрашивал, нужен ли там вообще дизайн или нет?
  • 0
Former IAPB 8X.
Bachelor of Eternity