• Где можно найти JSON базу со всеми странами и городами СНГ?

    @Nujabes37
    :DEATH
    Тут есть все, не только СНГ.
    https://www.npmjs.com/package/all-countries-and-ci...
    Ответ написан
    Комментировать
  • Laravel 6. Какие уже сейчас существуют "базовые приложения"?

    Вряд ли есть какой-то бойлерплейт, т.к. Ларавел сам по себе бойлерплейтный. Лучше создайте базовую приложуху через тамошний artisan, и дальше по возможности пользуйтесь artisan-командами для создания моделей и прочего. Ведь там, по сути, из необходимого только контроллеры (Http\Controllers), модели и сервис-провайдеры.

    Лучшими практиками не стоит заморачиваться, тем более для команды php динозавров. Это не симфони, ничего сверхъестественного не напишете все равно. Просто пилите типичное MVC и будет вам счастье, особо не говнокодьте, запросы отдавайте на откуп Eloquent, максимально используйте встроенный функционал там, где это можно (авторизация, регистрация, роли и т.п.), и уже будет неплохо.

    Возможно, пойдет October CMS, написана на Ларавель и там куча вещей сверху написано, многие из которых пришлось бы, возможно, самим писать.
    Ответ написан
    4 комментария
  • Почему PHP теряет популярность?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Потому, что PHP не предназначен для квантовых вычислений, очевидно же!
    Ответ написан
  • Почему PHP теряет популярность?

    @skrimafonolog
    Почему PHP теряет популярность?

    Вам кажется.

    Просто ИТ-проекты растут и развиваются.
    Усложняются.
    То, с чем мы имеем дело сегодня - несколько более сложные вещи, чем то, что делали средние программисты лет 10 назад.
    Это вечный процесс.

    И некоторые проекты используют другие технологии.

    Не ожидает ли php участь ruby?

    Ruby как был нишевым так и остался.
    PHP - слишком массовый.

    Вам лично бояться не стоит - ваши коллеги-конкуренты другие программисты испытывают те же проблемы что и вы. Поэтому в одночасье все на другую технологию не перейдут.

    Даже если и PHP сойдет на нет - это дело долгих десятилетий, ибо:

    1. Слишком уж много уже существующих проектов. Их тоже нужно поддерживать.
    2. Выбор языка - это еще и выбор доступных исполнителей на рынке труда. В одночасье миллионы программистов не сменят специализацию.
    Ответ написан
    Комментировать
  • Почему PHP теряет популярность?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не знаю, не знаю. Судя по количеству тупых вопросов на Тостере, стать менее популярным пыху совсем не помешало бы, да только не получается никак.
    Ответ написан
    Комментировать
  • Почему PHP теряет популярность?

    @ArgosX
    php никогда не умрет. а тенденция такая говорит о том что как раз таки php разработчиков очень много и они позанимали рынок поэтому и вакансий меньше
    Ответ написан
    Комментировать
  • Почему PHP теряет популярность?

    Объясняю:

    1) Небольшая фирма, небольшой проект, никогда не сможет конкурировать за "рабочие руки" с такими гигантами, как mail.ru/yandex/сбертех/альфа-лаборатория и прочие. А значит разрабатывать проект на Java, который еще не приносит деньги - глупейшая ошибка менеджмента. Ибо вы просто не найдете руки, либо они будут стоить очень много. По этой же причине не стоит выбирать для проектов .net (хотя там в общем ситуация в плане рук получше).

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

    Ну тут стоит понимать, что это реалии рынки СНГ и Европы. Исторически сложилось, что язык для новичков в СНГ и Европе был PHP (поэтому так много проектов на php), в США - это Ruby(Python), а, например, в Австралии - это Python.

    В итоге: небольшие капиталисты в СНГ(Европе) - выбирают php, это дает много работы на PHP, предложение толкает людей учить PHP, что уже в свою очередь толкает создателей PHP его улучшать.

    __

    Нужно понимать, что PHP де-факто дешевый язык для старта бизнеса (конечно, есть условный symfony, где программисты получают на уровне Java-разработчиков, но это уже нюансы). А бизнес всегда стартаует, и всегда на это идет большой спрос.

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

    __

    Количество вакансий уменьшается по простой причине. Готовые облачные решения типа (shopify/wix) + возможность заменить на старте сайт на социальную сеть, дают снижение спроса.
    Ответ написан
    1 комментарий
  • Почему PHP теряет популярность?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    PHP не мода, php - классика, а классика никогда не умирает. Если умрет php, то умрут все остальные языки backend разработки потому что появится что-то такое, что сможет в разы превзойти пхп в простоте, скорости и удобстве, на данный момент что джава, что питон, что руби +- одинаковые, каждый подходит для своих целей. Тот же питон выбирают из-за простоты интеграции нейронных сетей, но если говорить не о узких, а о главных параметрах (функционал, скорость и тд) все популярные бэк языки более или менее одинаковые смотрите те же сухие графики.
    А о уменьшении вакансий - глупость несусветная. трын тут приведена статистика за 2018 год и обоих графиках по вакансиям лидирует в сравнении с java/python PHP, при том на первых двух пишут как бэкэнд, так и миллион других штук. А на втором графике и вовсе пхп опережает js (единственный язык в самой популярной сфере разработки).

    А вот если речь идет о реально крупных компаниях (amazon, google...) там как раз предпочитают python из-за выше упомянутой простоты интеграции нейросетей, а java из-за стабильной поддержки сверх высоких нагрузок.

    Меньше слушайте диванных экспертов, пхп предрекают смерть с 00-х годов, что то он слишком долго дергается для мертвеца.
    Ответ написан
    1 комментарий
  • Почему PHP теряет популярность?

    @Kirill-Gorelov
    С ума с IT
    Я был в обсуждениях с некоторыми парнями на счет скорости и удобства и бла бла бла работы на php.

    Мне один парень сказал, что php скоро сдохнет. Но ему ответил второй программист:
    Он уже дохнет столько лет, что уже выпустили "предсмертную"(сарказм) 7 версию(на момент обсуждения). А сейчас уже готовят 8 версию, которая будет еще быстрее.

    И мое мнение.
    Php не умрет никогда. Потому что всегда будут две стороны халявщиков.
    1. Которая хочет быстро что-то выучить и на этом заработать.
    2. Те кто хочет быстро и дешево заказать сайт.
    И вот эти две стороны будут генерировать, назовем это, спросом на этот язык.
    Конкретно сейчас я не беру в обсуждения профессиональные сайты, которые действительно крутые и действительно достойные внимания и людей которые посвятили этому языку львиную долю своего времени.
    Ответ написан
    8 комментариев
  • Phpmailer или сторонний сервис по отправке email?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Мужчина в соседнем ответе не совсем в теме.

    Хотя, конечно, вопрос и сам по себе дурацкий.
    Phpmailer - это не почтовый сервер. Это всего лишь mail()-переросток. Доставкой писем не знаимается. И "поставить через композер" проблему доставки писем не решит - все равно нужен будет сервер.
    То есть выбор не между "phpmaier" vs transactional email service, а "мой аккаунт на гмейле" vs mailgun.

    И тут уже надо думать - какой исходящий емейл мы хотим использовать, как гмейл будет правляться с нашими объемами, как быть с попаданием в спамоловки и пр. И нормальное "стороннее АПИ" (чтобы это выражение не значило) окажется в разы предпочтительнее
    Ответ написан
    1 комментарий
  • Как правильно сделать цикл PHP?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Здесь нет цикла
    Ответ написан
  • Как узнать разрядность Windows с помощью Python?

    @bogomazov_vadim
    >>> import platform
    >>> platform.architecture()
    ('32bit', 'WindowsPE')
    Ответ написан
    2 комментария
  • Что делать дальше front-end?

    criticalsomethoughts
    @criticalsomethoughts
    UI\UX Developer, Project Manager
    Какую книгу посоветуете к прочтению по css или начать изучение js?

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

    1. Сверстать ручками, без использования бутстрапа и других библиотек(с учетом семантики, доступности, адаптивности под все экраны, прикрутить несложную анимацию - карусели, popup, разобраться в анимации с помощью css и js(что можно сделать с помощью css, а где лучше написать на js) - в чем профит - (поможет разобраться как работает css без библиотек и фреймворков, начнет развиваться логика построения хороших интерфейсов, как перестраиваются блоки, дизайнерские ошибки, свои ошибки).

    2. После первого-второго пет проекта - используете все элементы автоматизации - препроцессоры, сборщики, библиотеки которые вы точно не напишите сами, и пишите интерфейс с нуля в 2-5 раз быстрее - в чем профит - зная, что под капотом, не задавая глупых вопросов, почему иногда проще написать сетку с нуля, чем использовать сетку бутстрапа(в случае если дизайнер придумал "СУПЕР-МЕГО-САЙТ на 100000000 шекелей, не заморачивась о сетке и не думая о тех людях, которые будут верстать его шедевр), познакомитесь с gulp\grunt\pug,sass\scss\less и еще кучи прикладных инструментов.

    3. Посадить его на любую из популярных CMS(для лендинга\корпоративного - WP, Modx, Joomla, Drupal, для магазина (WP, Bitrix, OpenCart) - в чем профит - поймете что нужно клиенту на рынке(не в каждую дырку заталкивается SPA(очень много бизнеса работает на стандартных инструментах), как организована работа контент менеджеров, которые наполняют сайты, оптимизация, плюсы и минусы)

    4. Проделав все этапы - у вас есть хорошая база(отличный html и css, вы знаете что такое семантика, кроссбраузерность, адаптивность, знаете базу js, jquery и пишите простые скрипты без подключения библиотеки в 100кб, для того что бы вывести в меню "гамбургер" на мобилках.
    Дальше вы решаете - либо делаете упор на JS(и углубляетесь в React\Vue, Angular) участвуя в проектах по разработке SPA и становитесь после года тяжкой работы джуном), либо делаете упор на PHP(CMS, Laravel, Symfony и тд и тп) и так же через год тяжкой работы становитесь джуном.

    5. Через 3-4 месяца пытаетесь устроится на работу, особо не заморачиваясь на деньгах.
    Ответ написан
    Комментировать
  • Как переписать jquery на чистый js?

    Bigata
    @Bigata
    Web, PHP, JavaScript, HTML, Базы данных, Фриланс
    mraser если не напутал. то примерно так:
    document.addEventListener('DOMContentLoaded', docReady);
    function docReady()
    {
      let data = JSON.stringify({
              "modelName": "TrackingDocument",
              "calledMethod": "getStatusDocuments",
              "methodProperties":
              {
                "Documents": 
                [
                  {
                    "DocumentNumber": id,
                    "Phone": ""
                  }
                ]
              }
                              });
      data = 'data=' + data + '&apiKey=' + '';
    	let response = fetch(
    		'https://api.novaposhta.ua/v2.0/json/',
    		{
    			method: 'POST',
    			headers:
    			{
    				'Content-Type': 'application/json; charset=utf-8'
    			},
    			body: data
    		}
    						)
    		.then(function(response)
        {
          response.text().then(function(text)
          {
            data = text;
          });
        });
    }
    Ответ написан
    Комментировать
  • Я хочу стать заняться хакингом сайтов. Какие мне нужно знать языки программирования (разметки)?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    "хакер" - это программист экстра класса. Жаль, что это слово приобрело негативный оттенок.
    Что бы заниматься поиском уязвимости в web - только языков недостаточно языков программирования (html,css - это не языки программирования), нужно знать и понимать сетевые протоколы, целевые операционные системы, сервера баз данных, мониторить найденные и опубликованные уязвимости ПО, с которым планируете работать и кучу кучу всего.
    Рекомендую вашу хотелку запихнуть в очень длинный ящик и продолжить делать уроки.
    Ответ написан
    16 комментариев
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

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

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

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

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Как не начать говн*кодить?

    banderos120
    @banderos120
    Играю на балалайке
    - Оу, смотрите, я сумел сделать форму и отправить ее POST запросом и вывести ответ и это все в одном файле !
    - Таак, шаблоны на Wordpress, отлично, только что за файл functions.php. О! Анонимные функции я видел такое в JQuery ! Оказывается все так просто.
    - Воот, раскидал функции (процедуры) по конкретным файлам. Думаю так будет удобнее и понятнее.
    - ООП, ооп. Везде требуют ООП. "Классы", "наследование", "инка..." чего ?! Понял ! Классы - это же такая неплохая обертка для моих любимых функций !
    - Ого ! Блин, опять приходится плодить одинаковый функционал. Наверное наследование поможет это исправить. СТАТИЧЕСКИЕ МЕТОДЫ !!!
    - Черт, везде необходимо знание фреймворка. Попробую-ка я Symfony. *!"#$^$&@мать !!! КТо придумал эту хрень ! Месяц прошел я так ничего и не запустил !!
    - Роутинг, хм, толково. Контроллеры. Сервисы. Ага, так вот что означает single responsibility.
    - Ребята ! Я предлагаю не пихать всё в один бандл, а разделить.
    - ORM, репозитории, сервисы, сущности ...
    - ТАК ВОТ ЗАЧЕМ НУЖНЫ ИНТЕРФЕЙСЫ !
    - Чё за "бизнес логика" такая ? DDD ? Чта, простите ?
    - Б*я, б*я, б*я... Так, если эту сущность вынести в этот модуль, то тогда у нас появляется зависимость в вот этом модуле, а это не хорошо. Блин, этот метод вообще не несет смысла. Тааак, а тут стандартный Chain Responsibility . Отлично, напишу-ка тест под это дело.
    - Да пофиг, что по CQRS команда не должна возвращать результат, мне так удобно.
    ...
    - Да Сережа, делать вот как ты делаешь - это и есть говнокод.
    Ответ написан
    Комментировать
  • Как перестать говнокодить и принимать неверные архитектурные решения?

    miraage
    @miraage
    Старый прогер
    как писать поддерживаемый код?

    Если уж очень коротко, то соблюдать SOLID/GRASP. Мне понравился твит одного из авторов React Router:
    https://twitter.com/mjackson/status/1171524189850701825

    Most common mistake software developers make: putting stuff in the wrong place. Coupling responsibilities and concepts that should be kept separate.
    For me, this is 95% of software development. Just figuring out *where* things belong.


    Что гуглить, что учить?

    Фундаментальные знания, вроде вышеупомянутых SOLID/GRASP, паттерны (не только классические паттерны, но и вообще, общеизвестные решения определённых задач), базовые структуры данных. Фреймворки/библиотеки всегда будут приходить/уходить, что-то будет забываться. А фундаментальные знания всегда актуальны.

    Может литературу какую почитать посоветуете?

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

    Можно ли себя называть миддлом, если твой код говно?

    Не пытайтесь себя оценить. В каждой компании свои понятия миддла. А если кто-то 35 лет на лиспе кодил, а потом прыгнет на Angular - кто он, джун или сеньор?
    И, да, все мы в какой-то степени пишем говнокод. Если кто-то Вам доказывает, что он пишет супер чистый код - не слушайте.

    И ответ на главный вопрос.
    Как перестать говнокодить и принимать неверные архитектурные решения?

    Это невозможно. Все проекты, которые чуток сложнее CRUD-ов, рано или поздно обрастают говнокодом. Никто не пишет идеальный код. Код должен работать и решать проблемы бизнеса.
    Ответ написан
    6 комментариев
  • Как сделать превью видео как на порнхаб, youtube?

    @xonar
    А смысл?
    Есть такой движок Kernel Video Sharing, так вот когда я его использовал, то там при загрузке видео создавалось 10-20 скриншотов этого видео, а затем из них делалось превью. Так что тут как вам правильно в комменте написали, нужно сначала вам научиться делать пару скринов из видео на сервере, а потом там же на сервере скреплять их в одно целое.
    Ответ написан
    Комментировать