devalone, сотни их, бывают и получше вашего.
Но если навешиваешь несколько одинаковых условий в куче мест, то логично вынести это в какую-нибудь функцию.
John Smith, на Макоси не сразу появился полноэкранный режим, а увеличение окна было давно, но оно увеличивает по высоте, а вширь тяни ручками и не даёт прилипания к границам. Ну и нафига?
2) уточнение: MySQL при попытке создать PRIMARY KEY тихо превратит DEFAULT NULL в NOT NULL DEFAULT <пустое значение типа>.
При вставке NULL значений результат зависит от счётчика (auto_increment) - если он есть, то NULL заменится на следующее значение счётчика, иначе выдаст ошибку.
При "UPDATE ... SET id = null" NULL тихо заменится на пустое значение типа.
5) дополню, что недопустимые символы заменятся на вопросительные знаки ("blaбла" -> "bla???"). И будьте осторожнее при выборе длинны поля - лишние символы будут отброшены.
FanatPHP, с какой стати вы решили, что нужно ограничиваться PDO::quote, если это список актуальных пунктов из той статьи? Вам бы логику подучить не помешало.
FanatPHP, вы бы сами его прочитали без пропусков в 3 экрана.
1) Использование PDO вместе с эмуляцией подстановок - уязвимо. Когда эмуляцию объявили устаревшей?
2) PDO без явного указания кодировки - уязвимо.
3) Мускульное mysql_escape_string уязвимо до версии 5.7.6. Да, сейчас уже есть 8-й мускуль, но многие ли ушли с «проверенных временем» 5.5 и 5.6?
0) Программирование без знания языков тоже возможно.
Как пример - приложение «Команды» для iOS от Apple.
Вы даёте очень вредный совет. 1) Для базы, как верно ответили Lander и Saboteur, нужна логика и алгоритмы, программист без них - обезьяна с гранатой.
2) Учиться лучше начинать на строгих языках, карающих за откровенный бред, языках: Си процедурное программирование), Компонетный Паскаль (хорош для перехода к ООП), Smalltalk, Хаскель, Лисп.
3) Js, PHP и C++ ужасны в качестве первого языка. Авторы первого - наркоманы и не лечатся (в каком ещё языке возможно a + 1 = 11, при этом a - 1 = 0, а код проверки, является ли значение числом был написан только с четырнадцатой попытки?). В PHP подобного бреда тоже хватает, хоть его и исправляют. Си++ же - это как Звезда смерти, с ним справятся только опытные джедаи.
4) Для изучения упомянутого вами ООП Js не подходит, т.к. сколь-нибудь полноценного ООП там нет, только костыль над прототипным наследованием.
Dmitry Bay, недавно в России засветился 6-й по счёту диапазон LTE который не поддерживает никто. Свежие телефоны поддерживают от 3 до 5 диапазонов, чаще всего - 4. Например, Mi A2 знает 5 из 6, а Redmi 3 - только 3.
pacman123, простите, переклинило с лишней единицей. Даже для вёрстки в rem для корня лучше указать размер в пикселях, чтобы вёрстка не поехала если в каком-то браузере (осознанно или из-за ошибки) базовый шрифт сделают отличным от 16 пикселей (раньше размеры по-умолчанию были и 13px, и 15px, в зависимости от браузера и его версии, насколько помню).
sim3x, чтобы было понятнее: https://pastebin.com/5bRT4CRB (postgres_ext всего лишь запускает sql "CREATE EXTENSION <имя>", а нужна именно сборка, т.к. бинарники из репозитория в 4 раза медленнее).
Я не вижу ни единой причины, почему ансибл сделает эту портянку лучше и, тем более, он не спасёт от её ручного написания. Всё, что он даст - более аккуратное форматирование.
Но в недостатках ансибла:
(1) нужно будет писать и запускать ещё один сценарий ансибл, чтобы создать нужные виртуалки, прописать им права доступа друг к другу, настроить проброс портов и папок в основную систему... Очевидно, что документированный docker-compose.yml выигрывает у магического ансибл-велосипеда.
(2) Проблемы при обновлении: в докере вы просто скачиваете новый образ и заменяете им старый. С ансиблом пиши отдельный сценарий + обновляйся либо в имеющейся виртуалке (вероятен длительный простой, пока всё не обновится), либо создавай новую (ждать пока всё поставится, поменять порты старой и новой виртуалок, погасить старую виртуалку, простой минимальный).
Возможно, я настолько привык к докеру, что пытаюсь собрать его из ансибла и потому получается фигня.
sim3x, а что, в ансибл есть документация по установке из исходников для всего на свете? Или в ансибл есть вменяемая документация по настройке iptables, чтобы зарезать доступ к базе для всех, кроме приложения?
Сравните установку постгреса (из пакетов или исходников, на выбор) на альпайне и установку расширения postGIS из исходников на ансибле и на баше. Компиляция postGIS, насколько я себе это вижу, выльется в чёрную магию запуска башевых команд из ансибла. //Вроде заявлен модуль make для этого, но он в статусу "preview" и большой вопрос, сможет ли он откатить изменения если завернуть его в блок.
sim3x, не будем, кубернетес не используем.
Вы собственно, с чего взяли, что сборка образа по докерфайлу - магия? Что такого магического в цепочке команд которые либо все завершатся успехом, либо образа не будет?
sim3x, эм... он требует изучения нескольких дополнительных инструментов и обёрток над ними, что уже снижает прозрачность и документируемость, а без полного отказа от использования шелла он сам превратится в магию (первый раз отработал, а на второй упал).
У нас не тысяча человек и пока за глаза хватает докера + docker-compose (даже без swarm) и я не вижу тут места для ансибла. Кроме как ради добавления сложности.
sim3x, потому что сейчас мне это представляется, как длинные простыни из «создай виртуалку / виртуалки» (на KVM?), залезь внутрь, установи что надо, пробрось куски файловой системы в свою машину, открой порты, накидай скрипты запуска для systemd и аналогов (внутри же разные среды, не факт что везде одна система будет). И тут моя очередь повторить ваш вопрос про «чтоб не оверинжиниринг ради инжиниринга». Чем ансибл и необходимость настраивать совсем вручную виртуалки лучше докера, где вся мешанина ограничивается установкой через apt get, apk или wget + make install?
sim3x, в нашей внутренней вики раньше был весьма объёмный раздел «развёртывание сайта x» и каждый раз в нём что-то ломалось (в новых версиях ОС пакеты переименовывались, начинали глючить или конфликтовать, репозитарии дохли, некоторые костыли теряли актуальность).
С введением докера всё свелось к git clone и запуску 3 - 10 команд из текстовика в корне проекта (накатить копию базы, установить зависимости кода, где-то - сформировать xml для сфинкса без которых он не сможет стартовать). Плюс ушла проблема параллельного существования разных версий бд / языков.
Да, это можно решить и через классические виртуалки, но по докерфайлу сразу видно что понаставил внутрь создатель контейнера и не курил ли он майский чай.
Манучехр Жалолов, если можете установить youtube-dl (без окончания php) - ставьте и качайте им, соорудить над ним обёртку дело нехитрое. Но зависимостей у него много - сейчас ютуб отдельно отдаёт видео, отдельно звук и это добро ещё нужно соединить воедино.
Евгений Вольф, на серваке на помять почти пофиг (реже вебпаков с гульпами там только миграции БД запускаются), а вот на рабочих машинках всё намного грустнее. И вот тут десяток запущенных в докере проектов выливаются в весьма нескучную цифру.
Просто как-то глупо получается, что сборщик js и css тратит по минуте на элементарные вещи и жрёт в 5 - 10 раз памяти больше, чем основной код (последнего на порядок - два раз больше) и база данных вместе взятые. Извините, но я очень не люблю жирнософт в любых его видах, включая жрущую от гига до двух среду разработки.
> полноценного и самодостаточного стека для задач подобного рода
Так на других языках меньше занимаются дешёвой вёрсткой, им не так часто нужно обновлять страничку.
Плюс очень интересно, зачем вы «переизобретаете» оператор «космический корабль».