«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2018/01/21 23:47:14  №1123914 1
кто занимается версткой на линуксе или маке, вы как тестируете сайты в IE? стоит ли доверять таким сервисам? https://www.browserling.com/internet-explorer-testing

сам бэкендом занимаюсь, верстку умею на уровне потыкать бутстрап, поэтому нихуя не шарю в тонкостях
Ответы: >>1123920 >>1135048
Аноним 2018/01/21 23:52:30  №1123920 2
>>1123914
Виртуальные машины.
Ответы: >>1123928
Аноним 2018/01/21 23:55:00  №1123925 3
15165681009400.png (11, 595x136)
136x595
15165681009411.png (27, 774x523)
523x774
Решил эту задачу вот так, но ведь это очевидно не самый оптимальный вариант. Как можно поменять части элементов массива без перевода массива в строку? Нашел только array_replace, но это вроде не то. Либо я не разобрался.
Ответы: >>1135048
Аноним 2018/01/21 23:57:52  №1123928 4
>>1123920
эх.
ну так-то вайн есть, но заебно.

перекатывался на линукс, чтобы запускать там ИЕ лол
Ответы: >>1123930 >>1123932 >>1123935
Аноним 2018/01/22 00:01:16  №1123935 5
>>1123928
А вообще зуй щнает, я не могу заниматься версткой без фотошопа. Мне все макеты так или иначе приходят в psd
Ответы: >>1124213
Аноним 2018/01/22 12:50:36  №1124213 6
>>1123935
ну там не то чтобы прямо верстка по макету, просто у друга условный автосервис, он заказал сайт "шоб читалось легко". и главное не объебаться с тем, что везде все нормально, а в
ИЕ все пополам складывается.
Ответы: >>1135048
Аноним 2018/01/22 19:25:40  №1124496 7
15166383403690.jpg (323, 2656x1762)
1762x2656
Есть простая страница, которая выводит несколько изображений на экран с текстом справа.
Получилось сделать так, чтоб выводил элементы в столбик.

Как сделать в виде таблицы (по 2-3 элемента в строку)?

В теге <style> прописал такой вот код для вывода в столбик:

#results .result .image {height: 200px;width: 300px;float: left;padding: 2px;overflow: hidden;position:relative;}
#results .result .image img {width:300px;}
#results .result .image p {position: absolute;top: 85px;margin: 5px;padding: 0px;color: white;text-rendering:optimizelegibility;text-shadow: 0 0 3px rgba(0, 0, 0, .8);}
#results .result .stats {width:260px;float:right;}

Ответы: >>1135048
Аноним 2018/01/23 00:10:21  №1124655 8
ребятки, есть вопрос один.

я тут впс поднял и на нем захуярил гит-сервер (gogs.io). не хочу, чтобы туда всякие левые чуваки регистрировались и вообще он только для меня и полутора коллег. а он там по умолчанию открыт для всех и пиздец. можно прямо из интернета зайти, зарегить сто аккаунтов и пожрать мне все ресурсы.

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

в идеале на уровне конфига нжинкса повесить какую-то авторизацию по ключу, например. есть какой-то такой вариант?
Аноним 2018/01/23 09:38:56  №1124744 9
15166895363720.png (84, 997x533)
533x997
Привет, делаю базуданых для birthday-remider, посмотрите пожалуйста пикрил, все ли ок.
Пример записей, которые должно показывать приложение:
1. "23 января 1905 г. день рождение Антона Голубцова, напомнить 22 января 2018 г."
2. "01 июля 2018 г. свадьба Антона Голубцова и Тани Яотиной, напомнить 25 июня 2018 г. (купить подарок), 30 июля 2018 г. (помыться)"

Записи можно сортировать по датам, по событиям, по участникам. Напоминаний и участников у события может быть несколько. Типы событий можно добавлять.
Ответы: >>1124745 >>1124889 >>1125113
Аноним 2018/01/23 09:47:23  №1124745 10
>>1124744
Представил как одним запросом СУБД захватывает аж 6 таблиц и немного погрустнел. И ведь целая система нормализации есть. Только непонять в чём профит, столько данных тащить. На ум приходит только тотальная и маниакальная экономия дискового пространства.
Ответы: >>1124748 >>1124762 >>1124889
Аноним 2018/01/23 15:07:30  №1124889 11
>>1124655

Также есть более серьезная мера защиты - клиентские SSL сертификаты: https://habrahabr.ru/post/213741/

>>1124744

role - не лучше ли сделать ENUM или foreign key на другую таблицу?

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

Ключом в event_type наверно лучше сделать id. Он меньше места занимает.

Меня конечно беспокоит наличие похожих сущностей (users - participants, events - reminders), тут явно просится наследование или еще какое-то обобщение, но не станет ли из-за этого схема БД сложнее...

>>1124745

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

Насчет скорости выполнения запроса, джойны не проблема, если там джойнится например 1 запись и все это по индексам. Джойны - проблема, когда у тебя 2 больших таблицы и надо искать по обеим сразу и по каждой таблице поиск дает много результатов (например: найти компании с отделением в городе X, работающие в сфере Y, где связи компания-город и компания-сфера это многие-ко-многим).

Если номализованные данные работают медленно, всегда можно сделать денормализованную копию, в каком-нибудь отдельном хранилище, заточенном под поиск, вроде сфинкса или кеша. Но там свои подвохи.
Аноним 2018/01/23 16:30:45  №1124948 12
>>1124889
>role - не лучше ли сделать ENUM или foreign key на другую таблицу?

пожалуй ENUM норм, т.к. пока будет только одна роль user.

>>1124889
>А у тебя предусмотрены ли периодические ивенты, например, день рождения по идее каждый год происходит.

да, в таблице Event_types, поле is_annual, например тип "день рождения" is_annual: true. Но можно его перенести в таблицу Events. Я не стал этого делать, потому что хотел избежать при создании нового события необходимость выставлять периодичность, когда выбрал один из типов событий, который ее предполагает.
Если периодичность перенести в таблицу Events, то это поле будет или дублироваться или придется каждый раз указывать периодичность. Насколько приемлемо дублирование, нужно выбрать то, которое будет приоритетное?
Можно еще сделать два события "ежегодное событие без названия" и "разовое событие без названия", которые будут присваиваться событию, если не выбран тип но периодичность.

Только сейчас понял, что события получились общие для всех. Наверное, нужно сделать, чтобы часть типов событий была общая - предустановленные типы (др, свадьба и тд.), а часть приватными, те что юзер создаст сам, были видны только ему. Добавить еще одно поле "owner_user_id" в таблице Event_types, в которое вписывать создателя.

>>1124889
>Ключом в event_type наверно лучше сделать id. Он меньше места занимает.
А если в таблице появится поле owner_user_id, то ключом можно сделать сочетание type и owner_user_id? Или id будет удобнее?

>>1124889
>Меня конечно беспокоит наличие похожих сущностей (users - participants, events - reminders), тут явно просится наследование или еще какое-то обобщение, но не станет ли из-за этого схема БД сложнее...
Пойду полистаю аниме про базы данных, там наверняка есть про наследование.
Ответы: >>1135048
Аноним 2018/02/08 20:46:37  №1134979 13
Пользовался кто AWS? Жалко платить за платные VPN, думаю арендовать AWS и поднять там на докере OpenVPN + ещё для всяких тестов будет тачка практически личная.
Из минусов - стремаюсь на свою карточку регать аккаунт после статьи https://geektimes.ru/post/247794/ , что скажете?
Ответы: >>1135048
Аноним 2018/02/08 23:26:13  №1135048 14
>>1123914

Смотри что есть тут https://developer.microsoft.com/en-us/microsoft-edge/tools/

Либо виртуалка с виндой (майкрософт дает лицензионные), либо сайты-скриншотеры.

>>1123925

Можно просто циклом foreach пройти по массиву и по очереди каждый элемент поменять. Если не пытаться проверить все телефоны за 1 заход, то будет проще.

>>1124213

Могу дать в помощью статью про ИЕ: https://github.com/codedokode/pasta/blob/master/html/markup-for-ie.md

>>1124496

есть варианты

- inline-block
- float: left
- display: table-cell/table-row/table
- flexbox

>>1124948

Про наследование написано немного тут

- http://design-pattern.ru/patterns/single-table-inheritance.html
- http://design-pattern.ru/patterns/class-table-inheritance.html
- http://design-pattern.ru/patterns/concrete-table-inheritance.html

>>Ключом в event_type наверно лучше сделать id. Он меньше места занимает.
> А если в таблице появится поле owner_user_id, то ключом можно сделать сочетание type и owner_user_id? Или id будет удобнее?
Можно использовать любой вариант.

> Если периодичность перенести в таблицу Events, то это поле будет или дублироваться или придется каждый раз указывать периодичность. Насколько приемлемо дублирование, нужно выбрать то, которое будет приоритетное?

Наверно, тогда лучше назвать поле в Event_type is_annual_by_default, и использовать его только для начального значения в галочке. Дублирования не будет.

>>1134979

AWS недешевый. Подозреваю, что если и есть бесплатный тариф, он с какими-то подвохами. Не вариант завести виртуальную карточку от того же qiwi или яндекс-денег? Они правда могут ее не принять, DO например не принимает.

Для дешевых VPS есть poiskvps.ru, но там в основном сервисы с русскими или СНГ-шными корнями.

Также, открою секрет за 1 евро в мес. можно у арубы арендовать.
Ответы: >>1136214
Аноним 2018/02/10 21:51:41  №1136214 15
>>1135048
>Также, открою секрет за 1 евро в мес. можно у арубы арендовать.
Благодарю, так и сделал. Единственное что мне не понравилось у арубы - это плохой дизайн. Я ожидал выбор датацентра в процессе создания, а оказалось (потом), что выбор был вкладками в личном кабинете. Поднял OpenVPN - всё отлично, пинг правда 200 (Италия по умолчанию, хотел Германию).

Такой вопрос, ОП у тебя нет статей по настройке рабочего окружения через системы виртуализации?
Ответы: >>1136224 >>1136225
Аноним 2018/02/10 21:59:22  №1136224 16
>>1136214

Наверно нет. Это вопрос про vagrant/docker? Там нужно просто знание линукса и bash.
Ответы: >>1136317
Аноним 2018/02/10 22:00:06  №1136225 17
>>1136214

То есть прочесть любой учебник по линуксу, команды, оболочка, файлы, права, сервисы и тд.
Ответы: >>1136317
Аноним 2018/02/10 23:54:19  №1136317 18
>>1136224
>>1136225
Меня не сами юникс-системы интересуют, скорее процесс развертывания проектов на докере и для чего он.
Я работаю на win10, на vbox у меня ubuntu17.04, в /var/www я примаунтил проекты. Удобно,
так как IDE работает с локальными файлами, а сам проект поднят на апаче убунту.
Встречал в интернете упоминания о том, что на докере/вагранте разворачивают себе рабочее окружение и мне стало интересно насколько это будет удобнее (и будет ли)
Ответы: >>1137299 >>1137309
Аноним 2018/02/12 08:25:09  №1137299 19
>>1136317

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

Вагрант пытается решить проблему настройки окружения для проекта. Современные горекодеры это слово я сам придумал пишут такой код, что он ломается даже от смены минорной версии библиотеки (не говоря о смене дистрибутива или, упаси, замене ОС на винду), потому они придумывают способы как-то зафиксировать конфигурацию системы, в которой проект точно работает, и запускать приложение именно в этой системе. Разработчики языков вроде Го тоже любят периодически ломать совместимость, что добавляет мотивации.

Вдобавок, если у тебя несколько проектов, то они могут требовать разные версии программ, а в линуксе (в отличие от виндоуз) поставить параллельно разные версии программ сложно - попробуй поставь без компилятора несколько версий PHP или mysql. (линуксоиды делают пакетный менеджер nix/guix, который должен решить эти и другие проблемы и вообще хорош, но им никто не пользуется).

В принципе, ничего плохого в этом нет. Мы ведь используем менеджер пакетов composer для указания зависимостей. Логично, что серверный софт вроде mysql или nginx это тоже зависимости приложения и их стоит описывать. Но почему для этого нужна целая виртуальная машина?

В моем понимании, хватило бы просто строчки в ридми apt-get install php mysql nginx. Не знаю, почему другие так не могут. Для моих проектов обычно этого хватает.

Мне все это не нравится, так как оно скорее всего тормозное, особенно на виндоуз. Требует много места на диске. Но может у тебя этих проблем не будет, а места предостаточно, кто знает.

Вагрант - позволяет настраивать виртуальную машину (virtual box) с помощью конфига на Руби. Обычно используется для описания среды для разработчика. При этом в конфиг можно включить установку в ВМ нужных программ. Про плюсы надо наверно читать документацию. Ну например, плюс то, что новый разработчик не должен мучаться с поиском и установкой программ, а просто выполняет одну команду и получает работающее окружение.

Как я понимаю, идея в том, что разработчик кладет в проект конфиг с описанием ВМ, а ты скачиваешь проект, запускаешь вагрант, он гудит пару часов и ты (если все хорошо и использованные пакеты не удалили из репозитория ОС) получаешь настроенную ОС в виртуалке, в которой проект 100% (а может и не 100) работает. Из минусов, как я понимаю, то, что там например может быть не тот дистрибутив, который тебе нравится, там может быть vi вместо нормального редактора, то есть все настроено не под тебя (как разработчик захотел, так и настроил). Плюс, виртуалка может работать медленно, занимать много места на диске. Ну например, вместо маленького дебиана кто-нибудь засунет туда многогигабайтный центос или десктопную убунту. Также, у тебя может быть например 3 Гб памяти, а кто-нибудь пропишет для виртуалки 2 Гб и она съест всю память.

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

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

Выглядит это так же, в репозиторий кладется конфиг, разработчик запускает докер и через какое-то время получает либо контейнер(ы) с запущенным в нем приложением, либо виртуалку.

Из плюсов - там есть хранилище готовых образов (Docker Hub).

Минусы те же, что и у вагранта. Образ могут настроить не так, как тебе нравится (и скорее всего так и будет). Плюс, не знаю, как сейчас, а раньше демон докера работал из-под рута.

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

Докеру есть альтернатива - lxc. Это свободный инструмент для запуска линукс-контейнеров. Плюсы в том, что его пишут не хипстеры на Го, а серьезные дядьки из Интел и они не навязывают какие-то паттерны использования, минусы в том, что когда я его последний раз пробовал, там многие вещи не работали вообще. Ну и фич меньше чем у докера.

Ансибл - позволяет на основе конфига (они называются плейбуки) настраивать по SSH сервер или группу серверов, можно использовать для деплоя (когда серверов много), для настройки серверов. Ну например, админ может сделать плейбук "поставить nginx, php, postgres" и в одну команду сконфигурировать чистый сервер или несколько серверов вместо того, чтобы заходить на каждый и что-то там править руками.

Хотя мне он не нравится тем, что ему нужен inventory файл и нельзя просто IP сервера в командной строке указать. Плюс, не работает под виндой нормально и под cygwin. Я хотел сделать на его основе playbook, который разворачивает VPN на произвольной чистой машине, но из-за inventory это не удобно и я вернулся к bash скриптам, у которых конечно корявый синтаксис, но нет такой проблемы.

> Встречал в интернете упоминания о том, что на докере/вагранте разворачивают себе рабочее окружение и мне стало интересно насколько это будет удобнее (и будет ли)

Ну проверь.

Ответы: >>1137558
Аноним 2018/02/12 08:45:40  №1137309 20
>>1136317

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

Особенно если у тебя какое-то масштабируемое приложение и тебе надо автоматически добавлять новые сервера.

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

Ну и статью вот сегодня увидел про контейнеры: https://queue.acm.org/detail.cfm?id=3185224

Аноним 2018/02/12 15:12:06  №1137558 21
>>1137299
Большое спасибо, именно то, что мне хотелось прочитать!