«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/10/07 03:11:19  №1490764 1
catPNG132.png (243, 500x433)
433x500
Аноним 2019/10/07 21:02:49  №1491393 2
image.png (53, 965x405)
405x965
>>1490764
Долго делал? Чому без странички просмотра картинки/аудио/видео?
Название файла вылазит, если больше ~60 символов
Это, наверное, поможет
> white-space: nowrap;
> overflow: hidden;
> text-overflow: ellipsis;
Ответы: >>1491422
Аноним 2019/10/07 21:07:31  №1491395 3
bug1.png (105, 1274x732)
732x1274
>>1490764

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


Ответы: >>1491397 >>1491422
Аноним 2019/10/07 21:39:27  №1491406 4
bug2.png (23, 633x158)
158x633
bug3.png (35, 602x365)
365x602
>>1490764

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

Вместо "выберите файл..." логичнее писать "нажмите, чтобы выбрать файл (или открыть диалог выбора файла) или перетащите файл сюда".

При наведении на кнопку "загрузить" у нее анимируется фон и цвет текста и мне не нравится, что при этом есть момент, когда они сливаются, но это мое личное, я не люблю такой эффект. Но это не проблема в общем.

Ты пишешь "размер 107.9 KB", но в России числа пишутся через запятую, а "килобайт" как "Кб". Нелогично смешивать российский и западный стиль в одной фразе.

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

Еще один баг - кривая дата загрузки на пикрелейтеде.

В списке файлов у файла есть крестик, но нет подсказки при наведении на него и непонятно, что он делает.

Выпадающее окно "фильтры" сделано неудачно, так как оно визуально не отделено от остальной страницы и сливается с ней. Непонятно, что это попап. Тебе надо бы сделать ему тень или четкие границы, чтобы было видно, что это попап над страницей, а не ее часть. Списки тоже нарисованы неудачно:

- справа нет линий (картинка bug3.png)
- непонятно, что значит пунктирная линия и что сплошная. Лучше было не выпендриваться и выделять выбранный пункт подсветкой. Также, имхо, толстые линии неудачно смотрятся.
- кнопка Фильтры не становится выделенной, когда попап раскрыт
- если открыть фильтры, а затем кликнуть в поле поиска, они не скрываются. Если сделать поиск, то попа фильтров перекрывает надпись "ничего не найдено". Нужно скрывать фильтры при перемещении фокуса табом или клике за их пределы.

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

Показать: [ мои файлы | все файлы ] Сортировка: [ дата ^ ]

То есть думай не только о красивости, но и об удобстве. Раскрывающаяся панель экономит место (которого вообще-то достаточно), но взамен требует лишние 2 клика на раскрытие/скрытие и не позволяет увидеть, что спрятано, без клика по ней.

Не очень понятно, зачем кнопка "найти", если поиск работает без нее.

Нет ссылки на страницу одного файла, а как тут поделиться ссылкой-то? Прямой ссылкой на файл делиться?

В попапе "Удалить этот файл" кнопки слишком маленькие в сравнении с остальным сайтом, выбиваются из стиля. Цвет обводки дает слишком маленькую разницу, лучше было сделать одну кнопку залитую цветом целиком (например, "Да" залить красным, а "Нет" сделать нейтральной). Плохо, когда у тебя каждая кнопка в своем стиле, лучше иметь несколько стилей и везде их использовать, чтобы все смотрелось единообразно.

Не выполняются правила работы с аяксом: https://github.com/codedokode/pasta/blob/master/js/ajax.md

Например, я отключил вайфай и попробовал поменять фильтр. Никакой реакции, нет сообщений об ошибке связи с сервером. Как я должен догадаться, что произошла ошибка?

Протестировал ли ты поддержку картинок с анимацией (gif), с полупрозрачностью (png)? Хотя, вроде как вижу такие картинки.
Ответы: >>1491422
Аноним 2019/10/07 21:42:46  №1491407 5
>>1490764

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

Ответы: >>1491422
Аноним 2019/10/07 23:05:22  №1491422 6
>>1491393
>Долго делал?
Месяца 2.

>Чому без странички просмотра картинки/аудио/видео?
Да лень уже было добавлять, задолбался я с этим файлообменником, хоть и он относительно простой.

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

>>1491406
>Вместо "выберите файл..." логичнее писать "нажмите, чтобы выбрать файл (или открыть диалог выбора файла) или перетащите файл сюда".
Мне показалось это слишком многословным, я еще короче хотел написать.

>Ты пишешь "размер 107.9 KB", но в России числа пишутся через запятую, а "килобайт" как "Кб". Нелогично смешивать российский и западный стиль в одной фразе.

https://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D0%BB%D0%BE%D0%B1%D0%B0%D0%B9%D1%82#cite_note-IEC80000-2

>Допускается применение международного обозначения единицы информации с приставками «K» «M» «G», рекомендованного Международным стандартом Международной электротехнической комиссии МЭК 60027-2 (KB, MB, GB, Kbyte, Mbyte, Gbyte).

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

Правило cursor: pointer срабатывает, прямо сейчас проверил, с какого браузера капчуешь?

>Еще один баг - кривая дата загрузки на пикрелейтеде.
Интересно, а какова природа этого бага? Пересмотрю метод, форматирующий дату и время.

>В списке файлов у файла есть крестик, но нет подсказки при наведении на него и непонятно, что он делает.
Надо будет UX подтянуть, а то что-то совсем много ошибок насобирал хоть и не фронтендер.

>Выпадающее окно "фильтры" сделано неудачно, так как оно визуально не отделено от остальной страницы и сливается с ней. Непонятно, что это попап. Тебе надо бы сделать ему тень или четкие границы, чтобы было видно, что это попап над страницей, а не ее часть. Списки тоже нарисованы неудачно:

Полностью согласен, собирал на коленке дизайн, но...

> справа нет линий (картинка bug3.png)
Это не баг, а фича. Справа линий нет вообще, а слева они есть у всех элементов списка, как выделенных, так и нет. Но то что дизайн списка говно, я и так уже понял.

>- кнопка Фильтры не становится выделенной, когда попап раскрыт
>- если открыть фильтры, а затем кликнуть в поле поиска, они не скрываются. Если сделать поиск, то попа фильтров перекрывает надпись "ничего не найдено". Нужно скрывать фильтры при перемещении фокуса табом или клике за их пределы.

Сознательно не стал это делать, хоть и просто, потому что лазанья из js, которая перевалила за 1к строк, перестала меня вдохновлять на какие-либо действия. Импорты с модулями у меня почему-то не работали, надо было брать в проект jquery.

>Не очень понятно, зачем кнопка "найти", если поиск работает без нее.
У меня телефон со старым браузером, под который перестали выпускать ПО с 2013 года, и там не работает событие input, наверняка я не один такой динозавр.

>Нет ссылки на страницу одного файла, а как тут поделиться ссылкой-то? Прямой ссылкой на файл делиться?

А вот тут действительно промах, какой файлообменник без кнопки поделиться.

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

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

Предполагалось добавить туда еще 1-2 пункта меню с регистрацией и входом, но что-то я поленился это делать. Сделаю на полноценном фреймворке уже.
Ответы: >>1491424 >>1491702
Аноним 2019/10/08 03:35:04  №1491450 7
>>1490764
Я не ПХП кодер но мне нраица. Форканул.

<spoiler>ОПыч я потом начну пыхать, обещаю</spoiler>
Ответы: >>1491451 >>1491966
Аноним 2019/10/08 06:44:32  №1491515 8
>>1490764
Можно было бы вместо нажатия кнопки "показать еще" сделать так, чтобы само подгружало новые элементы по достижению кноики, вместо нажатия кнопки, как например это сделано в ВК.
Ответы: >>1491516 >>1491966
Аноним 2019/10/08 12:41:48  №1491702 9
>>1491422
>задолбался я с этим файлообменником
У меня тоже было со студентами - переписывал раза 2 их потому, что экспа капала хорошо. Потом просто задолбало один проект пилить столько времени и фан кончился.
Ответы: >>1491966
Аноним 2019/10/08 19:11:51  №1491966 10
>>1491450
Cпасибо, чувак.

>>1491515
Да, можно.

>>1491702
Надо сразу пилить нормально, смотри, как другие пишут и повторяй, спрашивай себя, почему именно так написано, а не иначе, выясняй, правильно ли вообще написано. Например, в Yii можно писать такую ебанину, которую потом не то что тестами не покроешь, а сам запутаешься в нескольких файлах. В ларавеле и особенно симфони ты уже не можешь писать абы как, нужно знать шаблончики.
Ответы: >>1491995 >>1492014 >>1492788
Аноним 2019/10/08 19:41:58  №1491995 11
>>1491966
>Надо сразу пилить нормально
Ну да - надо сразу пилить нормально и сразу 30ккк\наносек зашибать. По другому-то не работает.
Ответы: >>1492147
Аноним 2019/10/08 20:06:12  №1492014 12
>>1491966
Пробовал уже работу искать? Фреймворки учишь?
Ответы: >>1492147
Аноним 2019/10/09 04:02:16  №1492147 13
>>1491995
Никто не говорит про 300к\наносек, забудь про деньги вообще, если к кодированию душа лежит, то и бабки потом грести лопатой будешь. Главное - не суетиться, а идти по четко намеченному плану.

>>1492014
Пока не искал, резюме вот только начал составлять. Забыл поставить галочку в резюме, чтобы оно не было доступно для эйчаров, спустя минут 20 после опубликования написали из какой-то украинской компании, мол, не хотите к нам на удаленку на Yii магазины поддерживать, но я что-то промямлил в ответ, типа еще недостаточно хорош. Хотя на самом деле я просто не хочу с этим фреймворком связываться, мне не нравится то, что он слишком простой, и примерно представляю людей, которые на нем пишут, да и вроде как он поддерживаться перестал. Сейчас хотят третью версию выпустить, которая сломает обратную совместимость с предыдущими версиями, но все равно не хочу.

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

Ответы: >>1492148 >>1492169
Аноним 2019/10/09 04:03:58  №1492148 14
>>1492147
>если на работу не устроюсь
hotfix
Аноним 2019/10/09 05:54:56  №1492169 15
>>1492147
>>Главное - не суетиться, а идти по четко намеченному плану.
Верное замечание.
>>забудь про деньги вообще, если к кодированию душа лежит, то и бабки потом грести лопатой будешь.

Умение зарабатывать деньги - это вообще иная плоскость. Больше не от тех-навыков зависит, а от личности конкретного человека.
Просто в глазах двачера - прогинг это типа работа мечты, добрый и богатый дядя возьмет тебя на работу, будет давать задания и много платить. От двачера требуется ноль инициативы, онли умение программировать.
Реальность конечно немного не та.
Ответы: >>1492182
Аноним 2019/10/09 06:26:25  №1492182 16
>>1492169
>Умение зарабатывать деньги - это вообще иная плоскость.
Согласен. Тут жилка нужна предпринимательская, тогда ты в любой сфере деньги сделаешь, даже без сферы, просто из воздуха.
В вебаче щас обсуждают сайты, которые создают, раскручивают их и пишут туда негативные отзывы о всяких компаниях, а потом удаляют за бабки или переносят в проверенные. Вот куда мир катится. Надеюсь, скоро гугл будет банить такие сайты.

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

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

Я тоже раньше думал, что после первого проекта, что могу претендовать на студию. Знаю много.
После второго думал, что все студии мои, могу претендовать контору. Знаю много и умею еще больше.
Сейчас пишу третий проект и понимаю, что все это было вершиной айсберга. Серьезный веб на самом деле настолько глубокий, что можно делать целый курс, чтобы поверхностно охватить технологии, с которыми тебе нужно будет научиться работать, и объяснить вообще, как они друг с другом взаимодействуют.
Ответы: >>1492189
Аноним 2019/10/09 06:45:48  №1492189 17
>>1492182
>>Согласен. Тут жилка нужна предпринимательская
У меня подруга, просто на нескольких точках что торгуют очками брала очки по дешевке в Краснодаре, и толкала уже на побережье с наценкой раз в 10 как типа настоящие делала деньги такие, какие не каждый сеньер на галере сделает. Сейчас у нее куча денег, несколько квартир и т.д.
И это без сотен часов за монитором.

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


Ответы: >>1492192
Аноним 2019/10/09 06:49:37  №1492192 18
>>1492189
Это ж надо место брать, лицензию, фуру под товар, разгрузка, выдержать конкуренцию и гнёт хачей
Ответы: >>1492216
Аноним 2019/10/09 08:00:58  №1492216 19
>>1492192
Ну, она от среднего двачера так же далека как Альфа Центавра от Солнца. Человек другого мира, потомственная илитка.
Аноним 2019/10/09 22:07:08  №1492788 20
15034308314580.jpg (50, 471x604)
604x471
>>1491966
Есть пара вопросов по твоему файлообменнику:
- зачем ты начал пилить недоларавель на базе слима? Зачем нужна эта куча классов сервис-провайдеров с одним единственным методом? У слима есть своя парадигма определения зависимостей. Опять же в ларавель зависимости разрешаются с помощью рефлексий и там есть смысл регистрировать классы целиком, а у тебя ничего такого нет.
Один роутер велосипедит поверх слимовского, второй кучу ненужного кода написал, по сути усложнив проект на ровном месте, что хреново. Что за жажда писать код, не взирая на здравый смысл, пачаны?
- про индекс тебе уже сказали - можно прибрать код в классы-контроллеры, а не вываливать всё в индекс.пхп. Это удобно и создаёт порядок в коде - просто попробуй.
- что за копипаста там с if ($cookieUserId === null) ? Может стоит прибрать это в какой-нибудь AuthController и вызывать одной строкой, а не копипастить целые блоки в контроллерах? Заодно можно было бы убрать туда вообще всю работу с куками, а не делать этого в контроллерах.
- вот эта хрень пиздос как стрёмно выглядит:
>unset($app->getContainer()['errorHandler']);
>unset($app->getContainer()['phpErrorHandler']);
по другому совсем нельзя было сделать?
Ответы: >>1492837 >>1492837 >>1492837
Аноним 2019/10/10 02:31:13  №1492837 21
>>1492196
Да легко, гугли, там буквально несколько строчек кода.

>>1492788
>>1492788
>- зачем ты начал пилить недоларавель на базе слима? Зачем нужна эта куча классов сервис-провайдеров с одним единственным методом? У слима есть своя парадигма определения зависимостей. Опять же в ларавель зависимости разрешаются с помощью рефлексий и там есть смысл регистрировать классы целиком, а у тебя ничего такого нет.

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

>>1492788
>- про индекс тебе уже сказали - можно прибрать код в классы-контроллеры, а не вываливать всё в индекс.пхп. Это удобно и создаёт порядок в коде - просто попробуй.

Хорошо, окей. Но вот я тут вопрос задал один, мне не ответили.
Есть PSR-7 совместимая либа для управления куками. Но объекты этой либы нельзя создавать, там все на статических методах. Каким образом мне доставать либу из контейнера и передавать аргументом? Какой тип в сигнатуре писать, если я, чтобы вызвать статику, должен передать имя класса? String? Тогда туда что угодно можно будет передать. Или может быть забить на все правила и напрямую в контроллере вызывать CookieClass::setCookie()?

> что за копипаста там с if ($cookieUserId === null) ? Может стоит прибрать это в какой-нибудь AuthController и вызывать одной строкой, а не копипастить целые блоки в контроллерах? Заодно можно было бы убрать туда вообще всю работу с куками, а не делать этого в контроллерах.

Я об этом не думал, сделаю, спасибо за наводку. Все еще никак не привыкну по каждому пустяку новый класс создавать.

>- вот эта хрень пиздос как стрёмно выглядит:
>unset($app->getContainer()['errorHandler']);
>unset($app->getContainer()['phpErrorHandler']);
по другому совсем нельзя было сделать?

Удивишься, но я этот кусок кода из документации Слима скопипастил. Может и можно в четвертой версии как-то иначе написать, я делал проект на третьем Слиме.

Спасибо вообще за ответ, люблю критику по делу.
Ответы: >>1493062 >>1498472
Аноним 2019/10/10 10:14:15  №1493062 22
>>1492837
>Где об этом вообще почитать? Как это называется?
В документации написано как зависимости определяются. Там просто коллбэк в контейнер назначается - как раз именно тот, который ты в методом init назвал. Не нужно для этого целый класс пилить, а потом отдельно вызывать это всё - слим сам умеет зависимости из этого контейнера в контроллер маршрута пробрасывать при этом используя паттерн ленивой загрузки.

>там все на статических методах. Каким образом мне доставать либу из контейнера и передавать аргументом?
Значит надо делать враппер(класс-обёртку) над этой библиотекой и уже изнутри него вызывать статические методы. И вот обёртку уже можно, как обычно, передавать в зависимости.
Просто надо помнить, что статические классы это фактически просто набор функций.
Ответы: >>1493088
Аноним 2019/10/10 10:55:21  №1493088 23
>>1493062
>В документации написано как зависимости определяются. Там просто коллбэк в контейнер назначается - как раз именно тот, который ты в методом init назвал. Не нужно для этого целый класс пилить, а потом отдельно вызывать это всё - слим сам умеет зависимости из этого контейнера в контроллер маршрута пробрасывать при этом используя паттерн ленивой загрузки.

Понял, ну хоть научусь коммиты откатывать.
А куда потом девать инициализацию эту, в индекс.пхп?

>Значит надо делать враппер(класс-обёртку) над этой библиотекой и уже изнутри него вызывать статические методы. И вот обёртку уже можно, как обычно, передавать в зависимости.
Просто надо помнить, что статические классы это фактически просто набор функций.

Понял, спасибо, я и не додумался даже.
Ответы: >>1493093
Аноним 2019/10/10 11:00:09  №1493093 24
>>1493088
>куда потом девать инициализацию эту
Я обычно выношу инициализацию в отдельный файл bootstrap.php или startup.php
Получается довольно удобно - если надо ещё сервисов добавить\поменять, то все они конфигурируются и запускаются в одном файле.
Ответы: >>1493094
Аноним 2019/10/10 11:02:34  №1493094 25
>>1493093
А куда сам файл кидаешь? Рядом с индексом или куда-нибудь в корень?
Ответы: >>1493097
Аноним 2019/10/10 11:11:26  №1493097 26
>>1493094
У меня всегда есть папка для публичных данных - которые отдаются на клиент (public), папка композера, и папка src, которая содержит код самого приложения. И вот в папке с приложением у меня и лежат контроллеры, модели, исключения, интерфейсы, и прелоадер этот startup.php который и файл конфигурации проекта с настройками. Прямо в корне и лежит, рядом с конфигом.
Опционально ещё в корне папка со всяким говном для разработки - описание проекта и наброски всякие, папка cli для доступа через консолько, кэш там ещё если надо.
Ответы: >>1493099
Аноним 2019/10/10 11:13:10  №1493099 27
>>1493097
>Прямо в корне и лежит, рядом с конфигом
В смысле корне папки приложения, а не самого сайта.
Аноним 2019/10/17 07:20:12  №1498472 28
>>1497154

Потому, что withRedirect создает и возвращает новый объект (почитай рекомендацию PSR-7 https://www.php-fig.org/psr/psr-7/ ), а write() пишет данные в существующий объект. И если ты ничего не возвращаешь явно, то видимо Slim берет то, что лежит в $this->response (хотя лучше бы он выдавал ошибку в таком случае).

>>1497095

Поправлю, что $app->get() регистрирует контроллер как обработчик для GET-запроса на определенный URL, и ничего не вызывает.

>>1497042

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

>>1492837

> Есть PSR-7 совместимая либа для управления куками. Но объекты этой либы нельзя создавать, там все на статических методах. Каким образом мне доставать либу из контейнера и передавать аргументом?

Можно просто вызывать ее статически. Контейнер нужен для создания объектов-сервисов, если у библиотеки нельзя создать объекты, то не надо ее класть в контейнер, можно вызывать напрямую её статические методы.

> Или может быть забить на все правила и напрямую в контроллере вызывать CookieClass::setCookie()?

Логично так и сделать.