«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/09/10 21:58:13  №1471516 1
Подскажите пожалуйста на счет базы данных для файлообменника. Мне нужна 1 таблица, в которой будет храниться id,file_path, file_name, file_size, file_extension, created_at ? Или имя, разрешение, размер - лишняя информация, которую можно обрабатывать при необходимости каждый раз? Или этой информации вообще мало, и нужно добавить что то еще? И ведь правильно, что выходит только 1 модель и контролер? На первый взгляд задача кажется легкой, или ее смысл научить работать с файлами?
Ответы: >>1471969 >>1472199 >>1472614
Аноним 2019/09/11 17:07:00  №1471969 2
>>1471516
Собственно вопрос в том, что выгодней. Хранить такие данные или вычислять их при необходимости каждый раз?
Ответы: >>1472199 >>1472614
Аноним 2019/09/12 08:46:08  №1472199 3
>>1471969
>>1471516
Вроде как оп советует вычислить их один раз с помощью сторонней библиотеки/средствами скрипта и хранить в базе в виде jcon объекта. То-есть, как я понимаю, будет одно лишнее поле с текстом объекта. Кроме того, оп еще пишет делать комментарии к скачиваемым файлам, то-есть это еще одна таблица, у которой будет текст камента, айди камента, потом парент айди - для двевовидных каментов, и айди-файла - чтобы знать кому этот камент принадлежит. Хотя это может быть факультативным заданием со звездочкой
Ответы: >>1472614
Аноним 2019/09/13 01:58:17  №1472614 4
>>1472217

> И какого черта у меня ноль градусов находится в районе 6 часов, а не как у ОПа в районе 3 часов

А ты наверно синус с косинусом местами перепутал. При 0 градусов синус равен нулю, а косинус - единице. Если у тебя синус на оси X, то при нуле градусов у тебя будет либо 12 часов, либо 6 в зависимости от знака (+/-) перед косинусом. В компьютерной графике традиционно 0 градусов лежит на 3 часах и угол отсчитывается против часовой стрелки.

> $curDegree = round($degree);

Начальный угол, наверно, должен равняться $fromAngle.

В остальном, решение верное.

>>1471516
>>1471969

В такой ситуации стоит выписать возможные варианты, их плюсы и минусы, и выбрать оптимальный в данной ситуации. Например, рассмотрим хранение размера в БД:

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

Насчет имени файла - я думаю, надо хранить:

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

> И ведь правильно, что выходит только 1 модель и контролер?

Наверно, да. У тебя же по сути один раздел на сайте с 3 действиями: закачка файла, просмотр информации о файле, скачивание файла. И одна сущность: файл.

Если будут комментарии, то для них будет своя модель.

>>1472199

В виде JSON я советую хранить метаданные (для картинки - размер, для аудиофайла - длительность, число каналов, параметры кодеков), у которых нет какой-то определенной схемы, и которые из-за этого не получится или невыгодно хранить в отдельных колонках.
Ответы: >>1473073
Аноним 2019/09/13 22:03:10  №1473073 5
>>1472614
>В такой ситуации стоит выписать возможные варианты, их плюсы и минусы, и выбрать оптимальный в данной ситуации. Например, рассмотрим хранение размера в БД:

Спасибо что ответил, опчик.

Аноны, кому не впадлу. Я вывел видео/аудио тегом <video>. Но, как я понял, данный способ сейчас не используют. Может у кого есть в закладках хороший гайд по этой теме?
Ответы: >>1473081 >>1473257 >>1473544
Аноним 2019/09/13 22:18:15  №1473081 6
>>1473073
>Но, как я понял, данный способ сейчас не используют.
с чего ты это взял анончик ?
Ответы: >>1473090
Аноним 2019/09/13 23:25:49  №1473090 7
>>1473081
Вчера когда искал инфу - выдавало iframe и еще что то. Нашел только что в бутстрапе есть класс 'video-fluid', которого на деле не было (долго тупил, в итоге понял что он просто не прописан. прописал сам). В общем сложилось такое впечатление по вчерашнему опыту гугла.
Мне стыдно даже как то просить скинуть ссылку на что-то, ведь я и сам могу уделить время и поискать. Только встал сегодня - убунту не запускается моя,час назад переустановил полностью, сижу среду настраиваю. Вот и спросил, может у кого под рукой хороший гайд по этой теме.
Но судя по тому что ты спросил - мои догадки ошибочны.Только сейчас вспомнил, что читал вчера, мол эти плееры встроенные в браузеры можно джава скриптом как то менять/настраивать.
Ответы: >>1473257 >>1473544
Аноним 2019/09/14 10:59:36  №1473257 8
>>1473073
>Я вывел видео/аудио тегом <video>. Но, как я понял, данный способ сейчас не используют.

А разве сейчас можно подключать мультимедиа как-то иначе?

>>1473090
>выдавало iframe и еще что то
iframe в котором тот же audio/video тег
806 - 824 Аноним 2019/09/15 00:54:32  №1473544 9
>>1473090

> Нашел только что в бутстрапе есть класс video-fluid

А этот класс есть в документации? https://getbootstrap.com/docs/4.3/getting-started/introduction/ Если нет, то ты скорее всего что-то напутал.

>>1473073

У тебя неверная информация, HTML5 audio/video сейчас как раз используют. Но там есть одна проблема: аудио и видио бывает разных форматов (есть разные форматы файлов-контейнеров, аудио/видеокодеков, разные профили этих кодеков) и разные браузеры поддерживают разные форматы. Более того, поддержка формата в одном и том же браузере может быть разной в разных ОС.

Вот информация: https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats

Если ты хочешь, чтобы видео/аудио работало в максимальном числе браузеров, то надо выбрать несколько наиболее поддерживаемых форматов и конвертировать медиафайл в них (например, с помощью ffmpeg).

> убунту не запускается

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