• Где можно пройти хорошее обучение онлайн. Желательно JavaScript + PHP + MySql сразу или поэтапно. Заранее спасибо?

    Eridani
    @Eridani
    Мимо проходил
    Codeacademy.com, интерактивная обучалка, он базу вам и даст.
    Ответ написан
    Комментировать
  • Почему некоторые современные CMS не связывают свои таблицы в БД?

    @dinegnet
    Потому что они связывают на прикладном уровне движка.
    Давным давно уже не модно использовать все мыслимые возможности конкретной СУБД.
    Хотя бы по той причине, что сие заставляет слишком уж привязываться к конкретной СУБД.

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

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

    Потому вам и проще. Решать примитивные вопросы всегда проще.
    По сути вы не проблемы конечного заказчика тем самым решаете - а свои.

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

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

    Еще одна причина - полноценная реляционная модель со интересующими вас связями плохо ложится на многие прикладные задачи, решаемые на CMS.
    Бессвязанные таблицы позволяют делать решение гибче, приближая реляционные СУБД к СУБД No-SQL

    Перенос логики из БД в движок позволяет многие задачи решать лучше. Например, такую важную вещь как кэширование. Да и много других.
    Ответ написан
    8 комментариев
  • Способы реализации p2p обмена сообщениями. Каким образом blockchain может быть использован в создании мессенджера?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Совсем отказаться от серверов или чего то что будет говорить где какой клиент крайне сложно. Мы живем в мире где куча НАТов и серых ip адресов с динамикой.
    По факту Вам надо решить следующие проблемы:
    1) Реализовать "пробивалку" NATов. Способов много и нужно учитывать максимальное их количество. Это и UPnP, и возможность пробития порта через соседа который это может сделать и соединение с другим клиентом и уже через него выходить в общую сеть обмена.
    2) Нужен некий механизм доверия между клиентами т.к. никакого центрального сервера авторизации не будет. Тут способов тоже много и чаще всего применяется шифрование по некоторому ключу который генерируется у каждого клиента к каждому клиенту, после чего хранится локально. Даже если некий клиент прикинется другим клиентом с его ключем то ничего не выйдет. Сообщения дойдут но прочитать их он уже не сможет без индивидуальных ключей к каждому клиенту которые злоумышленник узнать уже не сможет никак.
    3) Понадобится некая реализация системы для сообщения IP адреса и порта клиентов друг другу. Тут уже варианты абсолютно разные со своими плюсами и минусами. Самый простой это некоторый сервер который только знает ip:port:идентификатор_клиента, с ним все и работают(естественно ничего более этот сервер не делает и сообщения и данные ходят между клиентами напрямую).
    Другой вариант это все тот же сервер который дает и знает ip:port:идентификатор_клиента но отличительно то что он динамический и создается у лучшего клиента(лучший выбирается по неким критериям типа хороший инет, выделенный ip, отсутсвие ната и т.д.). Т.е. сервер все также остался но переехал к самим клиентам и мало того их стало много. Этот способ и есть DHT и из него вырастает следующая проблема.
    4) Т.к. теперь у тебя полностью децентрализованная сеть на основе DHT или своего велосипеда который тоже повторяет DHT выросла проблема в том что клиенты могут оказаться в разных сетях с этими DHT и вообще не знать друг о друге. Тут понадобится реализация некоего механизма что бы DHT сервера искали и знали друг о друге. Как это будет реализованно тоже огромный геморойный вопрос, можно сделать еще один слой в виде DHT над DHT, можно сделать некоторые центральные сервера, можно пойти путем жесткого бродкаста между DHT узлами и т.д.

    Полноценно настоящая децентрализованная сеть возможно только в мире где у каждой железки в сети свой уникальный статичный IP и полностью отсутсвуют фаирволы а сама сеть построена без шлюзов и без деления на подсети. Но как понятно такого никогда не было и не будет но возможно внутри маленькой локальной сети.
    Чуть не забыл, такой p2p чат уже существует в виде Tox. Отдельно существуют подобные чаты в виде плагинов в битторрент клиенте Vuze-.
    Ответ написан
    3 комментария
  • Как сделать 301-редирект без htaccess?

    BuriK666
    @BuriK666
    Компьютерный псих
    <meta http-equiv="refresh"
       content="0; url=http://example.org/new-page.html">
    HTML redirect. HTML meta refresh redirection code.
    HTML meta refresh redirect is a client side redirect and is not 301 permanent redirect.
    The HTML meta refresh with 0 seconds time interval, is considered by Google as a hint for 301 redirect for pagerank transfer.
    If you want to do real 301 permanent redirect, you can do it with PHP redirect after enabling PHP code in HTML files.

    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: http://example.org/new-page.html");


    www.rapidtables.com/web/dev/html-redirect.htm
    Ответ написан
    Комментировать
  • Почему не выполняется запрос к MySQL?

    Melkij
    @Melkij
    PostgreSQL DBA
    fatal error, с чего бы тут чему-то выполняться?
    Или чего-то недоговариваете.
    Ответ написан
    5 комментариев
  • В каком случае запрос быстрее?

    shaks
    @shaks
    в мускуле можно глянуть с помощью профайлера. Он доступен помоему с 5й версии или типа того

    set profiling=1;
    SELECT * FROM `table` ORDER BY (`column1` - `column2`);
    SELECT *, (`column1` - `column2`) AS `column3` FROM `table` ORDER BY `column3`;
    show profiles;

    На выходе получишь табличку со скоростью выполнения каждого из запросов
    Ответ написан
    Комментировать
  • Как сделать такой переход на другую страницу?

    @igumenov
    Гуглить Morphing modal overlay
    https://codyhouse.co/demo/morphing-modal-window/in...
    Ответ написан
    Комментировать
  • JavaScript, как не запутаться в фреймворках?

    ptrvch
    @ptrvch
    вебдев-энтузиаст. Django, AngularJS
    Оба приложения - и веб-версия Telegram, и Zenpen -- лежат в опенсорсе, можно просмотреть исходный код для каждого из них. Что примечательно, Zenpen как раз-таки написан без фреймворков и библиотек, а веб-Telegram -- на первом AngularJS.

    Самые популярные SPA-фреймворки уже пееречислили - это Angular 1/2, ReactJS, Vue.
    От себя порекомендую изучить VueJS. Перешел на него с AngularJS 1, очень этому рад.
    Ответ написан
    Комментировать
  • JavaScript, как не запутаться в фреймворках?

    @Snewer
    Называется SIngle Page Application (SPA)
    Хоть я этим и не занимаюсь, но рекомендую Vuejs https://ru.vuejs.org/v2/guide/
    Ответ написан
    Комментировать
  • Как создать класс, который будет принимать объекты другого класса?

    Stasgar
    @Stasgar
    Обученная макака
    <?php
    
    class Dish
    {
        protected $ingridients;
    
        public function addIngridient($ingridient)
        {
            if($ingridient instanceof Ingridient)
                $this->ingridients[] = $ingridient;
            else
                die('error');
        }
    
        public function showIngridients()
        {
            foreach ($this->ingridients as $ingridient)
            {
                echo 'Ingridient: '.$ingridient->name.'<br>';
            }
        }
    }
    
    class Ingridient
    {
        public $name;
        public $price;
    
        public function __construct($name, $price)
        {
            $this->name = $name;
        }
        //Код класса ингридиента
    }
    
    $soup = new Dish();
    
    $soup->addIngridient( new Ingridient('water', '1$') );
    $soup->addIngridient( new Ingridient('beef', '5$') );
    $soup->addIngridient( new Ingridient('salt', '0.1$') );
    $soup->showIngridients(); //нет ошибки
    
    $soup->addIngridient('test'); //есть ошибка
    $soup->showIngridients();
    Ответ написан
    2 комментария
  • Имею ли я право препятствовать работе сайтов, использующих созданную мною CMS незаконно?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Часть первая, добрая

    1. Идете к юристу и оформляете правильную лицензию, в которой вы предоставляете право на использование вашего продукта. Жестко запретите модификацию кода CMS всеми, кроме вас. Оставьте за собой право модификации кода удаленно, в любое время без предварительных уведомлений. Оставьте за собой право отзыва или изменения лицензий без уведомлений и объяснений. Запретите перепродажу. В лицензии добавьте оговорку насчет статьи 273, что действия по модификации кода сайта являются санкционированными и неотъемлемой частью продукта.
    2. Реализуете и обкатываете механизм автоматического лицензирования через интернет. Вешаете лицензионное соглашение на официальный сайт продукта.
    3. Рассылаете всем нелицензионным пользователям "письмо счастья", в котором доходчиво объясняете, что их копия не лицензирована и т.д. Рекомендую вам разрешить использование своей CMS для некоммерческих организаций и домашних страничек без рекламы при наличии ссылки на сайт продукта. Предложите бесплатное обновление для некоммерческих пользователей.

    Часть вторая, злая

    1. После введения новой лицензии, но до уведомления всех письмами счастья, удаленно зашиваете код, который будет выводить html-комментарий о том, что данная копия не имеет лицензии т.д. и т.п. Там же должна быть ссылка на ваш сайт, где можно лицензировать продукт. Данный шаг не будет препятствовать работе с сайтом.
    2. Рассылаете письма счастья.
    3. Ждете, пока пройдет срок, в течение которого компании должны лицензировать свои версии.
    4. Вместе с юристом выбираете компанию, на которую вы подадите в суд за нелицензионное использование своей CMS и у которой точно выиграете дело. Судитесь. Выигрываете. Далее на сайте проекта вешаете официальную информацию о судебном разбирательстве и решении в пользу истца. Делаете огласку истории, публикуете ее на всяких Спарках/Хабрах/Цукербергах и прочих ресурсах.
    5. Через месяцок рассылаете новые письма счастья с уведомлением о том, что бывает с теми, кто отказался. Ссылку на результаты разбирательства приводите.
    Плюс, можете вывесить список сайтов у себя, где нелегально используется ваша CMS.

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

    Часть третья, плохая

    Для всяких нехороших людей, ничего из себя не представляющих и пишущих маты вам в ответ, включайте 404-ю для поисковых роботов. Они очень громко будут вас ругать на форумах. Не обращайте внимания.
    Ответ написан
    Комментировать
  • Принцип взаимоотношений front & backend?

    sim3x
    @sim3x
    Чаще всего так
    5 тел пилят бек, 5 фронт
    Просирают сроки напроч

    Приходит один синьйор и за два дня переписывает все с 0

    Для поисковиков нужна статичная хтмлка - ее кто-то должен рендерить
    Реакт и ко такое умеют, ангуляр также.
    Тк все там нода, то таким занимаются фронтендщики.
    Бекенду остается делать апи для всего етого хозяйства

    Если изначально рулили бекендеры, то реакты и ангуляры будут занимать нишу jQ

    В каждом (длинном) проекте все происходит по-своему

    каждая несчастливая семья несчастлива по-своему
    Ответ написан
    5 комментариев
  • Упаковать сайт в ПК приложение - возможно ли?

    Rastishka
    @Rastishka
    Моя CRM так работает на NW.js
    Сделал когда надоело ловить баги в разных браузерах.
    Всплывание по хоткею наверное тоже можно сделать на JS в index.html

    Делаешь 2 файла:
    index.html
    <!doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <style>
    
            </style>
            <script>
                // Load native UI library
                var ngui = require('nw.gui');
    
                // Get the current window
                var nwin = ngui.Window.get();
    
                onload = function() {
                    nwin.show();
                    nwin.maximize();
                    require('nw.gui').Window.get().showDevTools(); // закомментировать если не нужна панель отладки
    
                    document.location = 'http://ТВОЙ_УРЛ_В ВЕБЕ';
                };
    
    
            </script>
        </head>
        <body></body>
    </html>


    package.json
    {
      "main": "index.html",
      "name": "МОЯ_СУПЕР_ЦЭРЭМЭ",
      "description": "ОПИСАНИЕ",
      "version": "0.1.0",
      "single-instance": true,
      "keywords": [
        "crm"
      ],
      "window": {
        "title": "МОЯ_СУПЕР_ЦЭРЭМЭ",
        "toolbar": false,
        "frame": true,
        "width": 1280,
        "height": 1024,
        "position": "center",
        "min_width": 1024,
        "min_height": 768
      },
      "webkit": {
        "plugin": true,
        "page-cache": true
      },
      "author": "АФФТАР",
      "maintainers": [
        {
          "name": "АФФТАР",
          "email": "МЭЙЛ",
          "web": "http://САЙТ"
        }
      ]
    }
    Ответ написан
    2 комментария
  • Быстро зарелизить идею (ака чик-чик и в продакшн)?

    @gimntut
    Всё уже придумано до нас.
    Посмотрите как работают heroku и netlify.com
    git push для публикации. При публикации автоматически подтягиваются все зависимости.

    Для нулевой итерации я использую следующую связку сервисов:
    бэкенд: scorocode.ru - всё приходится делать вручную, к тому же не самый качественный сервис, но зато есть нужный для меня функционал и русская тех.поддержка
    фронтенд: netlify.com - тут всё автоматизировано от и до.
    ui-фреймворк: webix - позволяет за пару минут накидать интерфейс любой сложности и к тому же имеет просто обалденную русскоязычную техподдержку.
    Логика на фронтенде, авторизация на бэкенде, язык - javascript.

    Это если не нужно работать с ОС. Но если вдруг понадобится ужимать картинки, распознавать текст, или читать из Excel, то однозначно выбор в пользу heroku.
    Ответ написан
    Комментировать
  • Как в GIT найти начиная с какой ревизии в тексте файла появился (или исчез) заданный кусок текста?

    @aol-nnov
    придется попыхтеть с переводом моего ответа, но он заслуживает зеленой галки, это 146%.
    If you know the contents of the line, this is an ideal use case for:

    git log -S <search_string> -- path/to/file
    which shows you commits which introduce or remove an instance of that string.
    Ответ написан
    7 комментариев
  • Насколько этично ходить на собеседования, если нет цели найти работу?

    @kgbplus
    Как работодатель говорю - мало того, что этично, но и полезно для тех, кто вас собеседует. Как вы прощупываете рынок, так и работодатель отмечает, кто откликнулся на его вакансию, даже если не нанимает этого кандидата. Например, так выясняется требуемый уровень зарплаты (когда откликов слишков много, значит зарплата завышена или если средний уровень кандидатов ниже требуемого, возможно зарплата занижена). Такие пустые собеседования помогают правильно составлять объявления, учиться отбирать кандидатов до собеседования и всякое такое.
    Ответ написан
    Комментировать
  • Насколько этично ходить на собеседования, если нет цели найти работу?

    riky
    @riky
    Laravel
    ходите почаще и побольше.
    если таких как вы будет много, то рынок в ответ должен эволюционировать. т.к. работодатели должны будут оптимизировать этот процесс:
    = тратить меньше времени
    = если отказов много - то возможно поднимать зп

    это похоже на вопрос "стоит ли ходить на свидания со многими девушками чтобы получше узнать их, если я пока не хочу жениться? или же я должен ходить на свидания только если готов?". зы подразумеваются свидания без интима (только знакомство), потому что с интимом это уже другой вопрос "этично ли пройти собеседование, устроится на работу, войти в доверие и за первые дни слить весь их код и исчезнуть...?".
    Ответ написан
    Комментировать
  • Мелкие задачи по сайтам на фрилансе, как делать правки у клиента?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Бекап файла, который правишь (например, file.php.ORIG )и применение изменений внутри того, где правишь только для своего IP-адреса (чтобы отладить).
    Затем, как всё готово - убираем условие (делаем для всех) и удаляем .ORIG-файлы.
    Бекапы файлов - само собой делаем!

    Как быть, если вдруг косячнули, или хост делает магическую непонятную хрень? (сталкивался как-то когда помогал товарищам. Правишь файл, заливаешь, все права на файл идентичны, а хост перестает его обрабатывать, сайт падает) Что делать в таких случаях?
    Проверяете на пустом файле-болванке - это надо делать всегда перед началом любых работ!
    Ответ написан
    2 комментария