• Как сегодня писать сайты?

    Epsiloncool
    @Epsiloncool
    Программер, веб-девелопер, гейм-девелопер
    Нормальный вопрос, вспомните себя в молодости: какие были наполеоновские планы по захвату мира? У каждого такие были (а у некоторых даже ещё есть). Но я не буду писать что-то на тему "автор школьник, гыыы", а возьму и отвечу. Потому что я в теме с 2001 года и, кажется, понимаю о чём вопрос.

    Подавляющему количеству бизнесов сегодня не нужен сайт. Инста и фейсбук отлично продают физические товары и услуги. Более половины предпринимателей, тех, которым я лет 5-6 назад делал сайт, сейчас успешно продаются в VK, инсте или FB и ничего не хотят слышать про "свой собственный сайт".

    Большинство из оставшихся не нуждаются в сложных многостраничных сайтах. На самом деле, есть статистика, что простые одностраничные сайты продают в 2-5-10 раз лучше, чем многостраничники. Пользователю просто некуда уходить - там есть самая главная информация о продукте и кнопка "заказать". Он прочитал и заказал. Если пользователь начинает бродить по сайту, он устаёт, его мозг "забивается" и он решает отложить покупку "на потом". Этих предпринимателей успешно закрывают Викс, ЛПгенератор, Тильда и прочие многочисленные "кон стру кторы сайтов". Сделать "сайт" на этих платформах сможет даже школьник (и они делают). Это работа точно не для профессиональной студии разработки сайтов.

    Что делать, если людям нужно продавать больше, чем один товар? Ещё одна требовательная категория - это потенциальные владельцы интернет-магазинов. Раньше был мощный пласт разработки - это как раз таки разработка интернет-магазина. И этот пласт, как вы, наверное, догадались, почти закрыт сервисами.

    И вот сюда, в принципе, вы можете пойти. Ещё не все потребности закрыты. Можно делать модули для OpenCart, допиливать магазы на Woocommerce, есть такой удобный SaaS-сервис Shopify, который тоже имеет API и поддерживает сторонние модули - есть где порезвиться.
    Но опять-таки это не разработка с нуля.

    Многие студии концентрируются на разработке уникального дизайна сайта. Тема интересная и в своё время была довольно прибыльной. Но сегодня в интернетах куча готовых шаблонов, из которых 98% бизнесов выбирают себе дизайн и немножко поднастроив, получают уникальный сайт. Вы можете попробовать зайти сюда, но придётся довольно долго искать хорошего клиента.

    А вот куда можно реально пойти - это разработка больших программных продуктов. Таких заказов мало, куда меньше, чем владельцев микро-бизнесов. Это разработка SaaS, главным образом. Разработка маркетплейсов, сервисов и всё такое прочее, что ещё долго не будет закрыто конструкторами. И вы можете использовать для этого симфони, даже WP и CodeIgniter. Если есть мощь и знание - можете попробовать использовать Nodejs или даже Go.
    Опять-таки скажу ещё раз, что в этой теме не очень много заказов, но все они стоящие. И часто приходится делать не на том, на чём вы привыкли, а на том, что требует сам сервис. Обычно это включает в себя много разных технологий - морда на React, Vue, Angular, основной бэкенд на Nodejs или Go (никаких CMS!), как правило, сразу заказывают и мобильное приложение - так что будьте готовы делать. На первых порах можете проехать на PhoneGap, но часто это решение не годится, заказчики пошли умные, умеют гуглить.

    В общем, вперёд. И самое главное, что я хотел бы сказать - если вы будете рассчитывать на много простых заказов, то не преуспеете, с большой вероятностью. Потому что простые заказы умеет делать каждый школьник, а у него больше свободного времени и не надо платить зарплату подрядчикам, так что он вас победит.
    Нужно идти туда, где школьники не справляются в одиночку - там, где нужно много современных технологий одновременно. Вот где золотая жила для IT компаний.

    Удачи!
    Ответ написан
  • Как сегодня писать сайты?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    TL;DR : на вп вы можете пилить сайты сами, иногда пользуясь услугами фрилансеров, это выйдет эффективнее и дешевле.

    Можно ли обойтись без CMS в сегодняшних реалиях, и если да, то как выглядит разработка сайта?
    Сильно зависит. Есть ооочень много подходов, от "дядя Коля, че ты без сайта ходишь как дурак, давай я тебе на джумле быстро сайт за 50 баксов сделаю, гыы...", до уровня серьезных студий, где пишут серьезные проекты на современных фреймворках и с хорошей продуманной архитектурой, и ценник начинается от десятков тысяч убитых енотов, но за эти деньги вам сделают все: тз, дизайн, фирменный стиль, документацию на проект, технические требования, подбор серверной архитектуры етц... Как вы сами сказали - рынок обширен и, добавлю, весьма неоднороден.

    Если я пишу сайт к примеру на WP, то как обстоят дела с вёрсткой, что могут программировать фронтэндщики, а что бэкэндщики? Просто много где пишут, что на WP, можно самостоятельно создать сайт, не зная особо программирования, где могут фигурировать программисты?
    Типовой сайт без особого дизайна и функционала действительно можно поднять в одно рыло буквально за день. Если заморочиться с дизайном - можно либо взять/купить готовые темы, коих сегодня мульён и 2 сверху, или дизайнеру заказать за ценник примерно х2 от готового дизайна, ну, зависит еще от требований конечно. Программист нужен в случаях когда нужно реально что-то такое, что редко встретишь или какая-то специфическая задача под нужды заказчика, все типовые "хотелки" обычно решаются готовыми плагинами. Естественно что все эти прелести имеют серьезный изъян в виде хреновой производительности и кошмарного кода, лезть в который не хочется даже в костюме полной химзащиты.

    Могу ли я к примеру написать сайт грубо говоря в блокноте, а потом перенести его на WP?
    Странный вопрос... скорее всего нет, так как ваш код не будет вписываться в движок вп. И обычно делают наоборот - берут вп и вносят изменения и дополнения на основе его функций.
    Ответ написан
  • Если переехать с виртуального хостинга на vps, сайт станет быстрее?

    xenozauros
    @xenozauros
    Админю, пишу на питоне, вот это вот все...
    Нужно сесть и заняться профилированием.
    Сама по себе смена хостинга вряд-ли поможет.
    Без понимания где bottleneck - это все бессмысленные телодвижения
    Ответ написан
  • Как клонировать настроенную убунту?

    Хочу предложить вариант создания образа диска через Clonezilla с последующим тиражированием с флешки или по сети.
    Можно потом поверх проходиться уже системой управления конфигурацией для тонкой настройки.
    Ответ написан
  • Почему PHP теряет популярность?

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

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

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

    @Kostik_1993
    Fullstack Web Developer | PHP | Laravel | Vue.js
    Жить хорошо и кушать вкусно, но это не у всех))

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

    В настоящее время и синтаксис подтянулся на уровень, и строгая типизация появилась и много много всего. Учите основы и паттерны, а язык вам ничего плохого не даст.
    Ответ написан
  • Что должен знать от DevOps средний веб-программист при устройстве на работу?

    inf
    @inf
    DevOps Engineer
    Если в докер свою приложуху можешь упаковать, то вообще супер.
    Если свяжешь в docker-compose с остальными службами, то гений чистой красоты))
    Ответ написан
  • Как работать с websocket в php без библиотек?

    @xfg
    Прочитать соответствующий RFC https://tools.ietf.org/html/rfc6455 чтобы понять, как происходит рукопожатие и какие байты в переданном сообщении за что отвечают. После этого будет понятно как написать реализацию. Я досконально уже не помню, но фактически от клиента приходит обычный http запрос с определенными заголовками, сервер разбирает этот запрос и если всё ок, то сохраняет открытое соединение в массив, если нет, то отправляет соответствующий ответ и закрывает соединение. Дальше по открытому соединению начинает сыпаться поток байтов от клиента их нужно разбирать, чтобы понять длину сообщения, сами данные переданные в фрейме, закончился фрейм или еще нет и тому подобное. Обратно также кодировать данные в поток байтов и отправлять по открытому соединению. Каждый байт в переданном фрейме несет определенный смысл. Обо всем этом подробно написано в RFC, но на английском. Вообще это хорошо примерно понимать как работает, но глупо писать такую низкоуровневую реализацию, когда есть готовые. Такие вещи развивают и поддерживают годами. Вы же не пишите HTTP серверы, а берете готовые вроде nginx и тому подобное.

    В каком месте можно полученные данные подготовить к записи в бд.

    Как сделать, что бы на стороне клиента, один websocket отвечал за сообщения, другой за статьи. (Или за эти два действия отвечает один websocket, тогда как мне на сервере это различать).

    Вебсокет это низкоуровневая штука, для передачи потока байтов от клиента на сервер, в отличии например от HTTP, где есть заголовки и тело сообщения. Поверх вебсокета нужно делать еще один протокол или самописный или выбрать один из готовых. Это проще говоря, то как выглядят ваши фреймы (сообщения), которые вы отправляете с клиента на сервер и назад. Например клиент может отправлять такой фрейм:
    ["id", "controller/action", {param1: value1, param2: value2}]

    в ответ получать
    ["id", "OK"]
    если запрос был обработан успешно или
    ["id", "ERR", {error: "action not found"}]
    если произошла ошибка. По переданному id в массиве, можно понимать, к какому запросу относится ответ.
    Для уведомлений (событий) сервер может отправлять клиентам что-то такое
    ["user_added", {user: {...}}]
    и т.д. Этот протокол необходимо придумать самому или выбрать из готовых (популярных пока нет) и написать его реализацию (клиентскую и серверную часть) или опять же взять уже готовую.

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

    Но это уже всё должно быть, просто возьми real-time фреймворк. Там за тебя написали и websocket сервер и протокол поверх него и экшены уже есть. Всё низкоуровневое уже готово. Бери и пиши приложение. В nodejs самый популярный это например https://github.com/socketio/socket.io, а в php я не знаю, но уверен, что тоже есть что-то популярное.

    Своё написать не получится, без опыта и без попыток сделать приложение на чем-то готовом. Нужно как минимум прочитать RFC и посмотреть реализации других разработчиков. Для этого нужно быть кем-то больше, чем "программистом сайтов".
    Ответ написан
  • MySQL+PHP и компилируемый язык?

    @stratosmi
    Лучше всего годится тот язык под эту задачу, что лично вы (или нанятый вами человек) лучше всего знаете.

    Для данной задачи важно не на каком языке.
    Важно - как именно сделать, а не на чем.

    В том числе и для:
    Просто нужно быстро и отказоустойчиво доставать все данные из БД.

    PHP годится.

    "Отказоустойчиво доставать данные из БД" - это вообще реализуется кластером из нескольких серверов СУБД.
    Язык тут не при чем.
    ;)

    Работать будут пока человек 20, но активно. Хотелось бы предусмотреть рост функционала и нагрузку с годами на ПО.


    Только ваше умение работы с СУБД.
    Можно хоть на ассемблере сделать - но лучше от этого работать не будет.
    Ибо нагрузка - это СУБД и корректный способ работы с ней (грамотные запросы, правильные индексы). А это от языка программирования вашего приложения не зависит. Это только SQL. А он будет всегда, независимо от того, на чем у вас приложение C++ или PHP или Haskell
    Ответ написан
  • Как выглядит современный процесс верстки?

    @Flying
    • Верстаю в PHPStorm (просто потому что ещё и работаю с backend кодом на PHP).
    • Для написания HTML использую Twig (т.к. нравится синтаксис и можно потом без переделки использовать шаблоны на backend'е). Использование шаблонизатора для вёрстки сильно помогает если надо сверстать более 1-2 страниц
    • Для написания стилей использую SCSS + свою библиотечку + несколько PostCSS плагинов.
    • Макеты - в Photoshop, InVision или Zeplin, смотря в чём отдают.
    • Для обычных картинок - Photoshop + оптимизаторы (optipng, pngout, guetzli, xat).
    • Для SVG иконок - Inkscape + руки + svgo, а затем организовываю всё это через icomoon.io, оттуда можно получить либо иконочный шрифт либо запакованный набор SVG элементов.
    • Для сборки проекта использую Gulp с набором различных плагинов, список могу дать отдельно если интересно.
    • Саму структуру проекта обычно просто копирую руками из проекта в проект. Можно конечно сделать какой-нибудь плагин для yeoman или что-то подобное, но меня не ломает скопировать пяток файлов, да и задачи бывают разные - просто вёрстка или вёрстка сразу в контексте сайта.
    Ответ написан
  • Где у меня ошибка при работе с yii2-sphinx?

    butteff
    @butteff Автор вопроса
    Раз в тысячу лет заправляю свитер в носки
    Перезагрузил search.d и завелось. Видимо, пока правил конфиг, что-то внес, но не перезагрузил.
    Ответ написан
  • Расскажите подробно про php://input, как пользоваться?

    php://input возвращает все необработанные данные после HTTP-заголовков запроса, независимо от типа контента.

    Данные, могут быть:
    • application/x-www-form-urlencoded ( application/x-www-form-urlencoded тип application/x-www-form-urlencoded для простых форм- application/x-www-form-urlencoded ) или
    • multipart/form-data-encoded (в основном multipart/form-data-encoded для загрузки файлов)

    Это связано с тем, что это единственные типы контента, которые должны поддерживаться браузерами. Поэтому сервер и PHP традиционно не ожидают получения какого-либо другого типа контента (что не означает, что они не могли бы).

    Если вы просто отправляете POST-ом обычную HTML-форму, запрос выглядит примерно так:
    POST /page.php HTTP/1.1
    key1=value1&key2=value2&key3=value3

    Но если вы много работаете с Ajax, может понадобиться обмен более сложными данными с типами (строка, int, bool) и структурами (массивы, объекты), поэтому в большинстве случаев JSON является лучшим выбором. Но запрос с JSON-полезной нагрузкой выглядел бы примерно так:
    POST /page.php HTTP/1.1
    {"key1":"value1","key2":"value2","key3":"value3"}

    Теперь содержимое будет application/json (или, по крайней мере, ни один из вышеперечисленных), так что $_POST -wrapper из PHP не знает, как с этим справиться (пока).

    Данные всё еще там, вы просто не можете получить к нему доступ через $_POST. Поэтому вам нужно получить его с "сыром" виде помощью file_get_contents('php://input') (если он не закодирован в формате multipart/form-data).

    Это также способ доступа к XML-данным или любому другому нестандартному типу контента.
    Ответ написан
  • Как отправить soap запрос?

    garinov
    @garinov Автор вопроса
    Фрилансер
    Сам спросил - сам ответил

    <?php
    
    echo '<form action="new6.php" method="post">
      <input type="text" name="IPAddress" value=""><br><br>
      <input type="submit" value="Submit">
    </form>';
    
    try 
    {
    $soap_client = new SoapClient("http://www.webservicex.net/geoipservice.asmx?WSDL");
    	$vec = array("IPAddress"=>$_POST[IPAddress]);
    	//print_r($vec);
    	echo '<br><br>';
    	
    	$quote = $soap_client->GetGeoIP($vec);
    	//print_r($quote);
    	echo '<br><br>';
    
    	//print_r($quote->GetGeoIPResult->CountryName);
    	
    	$country = $quote->GetGeoIPResult->CountryName;
    	echo "Ваш IP " . $quote->GetGeoIPResult->IP . " соответствует стране: " . $country;
    	
    }
    
    catch (SoapFault $exception)
    {
    echo $exception->getMessage();
    }
    Ответ написан
  • Объясните простыми словами для чего эти фреймворки Vue.js, React.js, KnockoutJS, riot.js,?

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

    Основные преимущества:
    1. Возможность создания сложного сайта без перезагрузки страницы. Пример - соцсети. Причем можно сделать и чпу-ссылки и хлебные крошки, все как полагается.
    2. Скорость работы с DOM в разы выше, чем с jq. Плюс в них оптимизирована работа с оперативной памятью. По идее можно не думать об утечках.
    3. Использование компонентов.
    К примеру, создал компонент "Кнопка" (<app-btn></app-btn>), в отдельном файле прописал его свойства, html-структуру, css и javascript-поведение. И теперь можно его использовать, просто прописав этот тег. Причем в него сразу же можно передавать свойства, к примеру текст кнопки <app-btn text="Заказать"></app-btn>.

    На счет поисковиков - можно поставить серверный рендеринг на компоненты, которые важны для индексации (например Vue.js + vue-server.js). И на выходе получишь крутое, быстрое, индексируемое приложение.
    Посмотри, например сайт тинькофф. Там используются все эти новомодные вещи. Сайт реально быстрый. А на него заходит около 10 млн человек в месяц
    Ответ написан
  • Как реализовать в своей теме wp, так называемые, Edit Shortcuts в кастомайзере?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, wpcute.ru
    С помощью Partials.
    function foo_theme_customize_register( WP_Customize_Manager $wp_customize ) {
        $wp_customize->selective_refresh->add_partial( 'blogdescription', array(
            'selector' => '.site-description',
            'container_inclusive' => false,
            'render_callback' => function() {
                bloginfo( 'description' );
            },
        ) );
    }
    add_action( 'customize_register', 'foo_theme_customize_register' );


    Пример реализации.
    ===
    В functions.php добавить параметры customizer
    add_action('customize_register', 'dco_customize_register');
    
    function dco_customize_register($wp_customize) {
        //FOOTER
        $wp_customize->add_section('footer', array(
            'title' => 'Подвал',
            'priority' => 1,
        ));
    
        //footer text
        $setting_name = 'footer_text';
        $wp_customize->add_setting($setting_name, array(
            'default' => '',
            'sanitize_callback' => 'sanitize_textarea_field',
            'transport' => 'postMessage'
        ));
    
        $wp_customize->add_control($setting_name, array(
            'section' => 'footer',
            'type' => 'textarea',
            'label' => 'Текст в подвале',
        ));
    
        $wp_customize->selective_refresh->add_partial($setting_name, array(
            'selector' => '.footer-desc',
            'render_callback' => function() use ($setting_name) {
                return nl2br(get_theme_mod($setting_name));
            }
        ));
    }


    И в шаблоне footer.php в нужном месте вывести
    <div class="footer-desc"><?php echo nl2br(get_theme_mod('footer_text')); ?></div>
    Ответ написан
  • Какой необходимый уровень знаний для junior React.js Разработчика?

    Junior-React разработчик?
    По-моему, как-то странно звучит.
    К изучению стэка технологий, среди которых Реакт нужно подходить уже будучи не совсем джуном: важно понимать базовые основы функциональной парадигмы, отличие её от ООП, понимание архитектуры flux и потоков данных, уверенный уровень JS (ES6), как асинхронность работает, всякие ajax-api (axious, fetch), конечный автомат (что такое и зачем нужен). Про хтмл\вёрстку, само собой, конечно же.
    Я когда без хорошего навыка JS полез в Реакт, то не понял, что вокруг происходит.
    Ответ написан
  • Переход из 1С в web-разработчики (PHP ) в 35 лет. С чего начать и реально ли?

    @GrimJack
    Скажем так, минимальная база это уверенное знание html5+css3+js (в том числе умение работать с jquery, ajax и распространенными библиотеками (слайдеры там всякие))+php (умение прогать под wp не ограничиваясь шаблонами)
    Но у меня любовь к вэбу отпала через 2года углубленной работы в вэбе (спасибо русскому фрилансу)
    Потом уже определитесь, хотите в большие проекты на фреймворках (laravel, yii2 и другие) или вам больше нравится творить чудеса на готовых cms

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

    Ах да, ИМХО
    Ответ написан