• Что такое Standalone приложение вконтакте?

    kpa6uu
    @kpa6uu
    Программист Талибана [Пыхерский Алибаба]
    Standalone в понимании вконтакта - то приложение, которое может получить из адресной строки браузера текст (а точнее - токен). Ибо токен с расширенными правами можно получить только с сервера вконтакта ( на него идёт редирект. Никаким js`ом его не вытащить, не имея доступа к браузеру )
    Получить с сервера вконтакта токен с помощью скрипта пхп не получится, отсюда и урезанные права)

    Можно получить точен вручную - затем вставить его в скрипт PHP и иметь равные со standalone приложениями права.
    Ответ написан
    8 комментариев
  • У JAVA есть будущее?

    SanchelliosProg
    @SanchelliosProg
    Java, Android, Software Testing
    Много тут было ответов уже. Некоторые про Java на Desktop просто смешны, конечно. Java уйдёт не скоро, основная причина - море кода, который нужно поддерживать. Если уж очень хочется в ближайшие 10-20 лет работать на саппорте - Java является лучшим выбором, я считаю. С Android немного иначе. Но Java приходится учить, потому что альтернатив мало. Были тут новости, что Google на Swift переведёт Android разработку... Посмеялся, потом погрустил - было бы неплохо, но чтобы всё то, что уже есть перевести на новый язык... Оххх...

    Будущее за вот чем. Скорость разработки + эффективность программ (тут я подразумеваю и скорость обработки данных, отсутствие вещей усложняющих разработку при увеличении объёмов приложений и информационное обеспечение разработчиков, коммьюнити, документация,другие ресурсы). Те технологии, которые будут давать это, будут лидерами, тормозить будут такие вещи только, как страх менеджеров и легаси.

    Появляются новые языки и технологии, которые соответствуют и ускорению разработки с сохранением эффективности программ, но всё на них не поставишь, потому как на работу устроиться трудно, зная только, например, Go.

    Посему, надо иметь базу, в виде JavaScript, Java, Python, Ruby, C++ или других языков и сопутствующие им технологии, которые уже во всю используются, но нельзя забывать, что когда-нибудь наступит момент, когда что-то перевернётся, и 10-20% времени, которое вы тратите на обучение себя, стоит тратить на что-то новое. Может наступить момент, когда, например, вдруг понадобятся всем Rust-программисты. Такое вполне возможно, и когда эта волна пойдёт, вы будете в теме, уже!)))

    Так что, есть ли у Java будущее? Я думаю, что это будущее будет похоже на судьбу языка Cobol. Он долго не умирал. Java тоже не скоро умрёт. Но насколько интересно будет работать с ней?
    Ответ написан
    Комментировать
  • Как правильно организовать среду разработки с git?

    samizdam
    @samizdam
    Для того чтобы использовать git, в желаемом вами контексте, я бы рекомендовал освоиться со следующими понятиями:
    - origin — центральный репозиторий, через который происходит синхронизация
    - master — по умолчанию это главная, центральная ветка
    - .gitignore — файл, в котором можно указать файлы и директории, которые не должны отслеживаться — например локальные конфиги, автоматически генерируемые артефакты, вендоры, логи и прочий runtime
    Таким образом, Вы с коллегами
    1. настраиваете локальную dev окружение
    2. игнорите конфиги и прочее
    3. разрабатываете что-то локально, коммитите
    4. пушите в origin
    5. на продакшене делаете clone, настраиваете конфиги
    6. повторяете п.п. 3-4 + pull на продакшене

    Это, пожалуй, самая простая схема — реализует то о чём Вы спрашивали.
    Ответ написан
    Комментировать
  • Как правильно организовать среду разработки с git?

    @Beltoev
    Живу в своё удовольствие
    чтобы один проект был в одном репозитории и можно было организовать там как devlop среду

    Для develop и production выделите отдельные ветки.
    При решении очередной задачи выносите её тоже отдельной веткой от dev. После того, как решите её и протестируете - сливайте с production-веткой

    так и pull'ами отправлять на продакшн прямиком на сервер

    Здесь вам уже нужно работать с web hook-ами. Подробнее тут можно почитать:
    https://www.digitalocean.com/community/tutorials/h...
    Ответ написан
    2 комментария
  • Где лучше хранить массив часто используемых данных?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вариантов масса, зависит от размера массивов, ибо раз в час - это не нагрузка для любого типа хранения, если это не овер миллион записей. Для критически быстрых операций есть мемкэш, для неспешных небольших - имхо удобнее база(мускуль вполне). Слишком мало данных чтобы сориентировать Вас в верном направлении, а так - вариантов огромное множество.
    Ответ написан
    3 комментария
  • Как правильно замерять время?

    coderisimo
    @coderisimo
    Обычно, если надо подсмотреть , что-то небольшое за 10-30 секунд, я просто делаю часть работы в которой уверен , а после появления информационного окошка, о том, что только что сделан скриншот для заказчика , спокойно открываю справочный ресурс и выясняю то что мне нужно. Высока вероятность того, что в момент просмотра новый скрин сделан не будет. Это касается ситуации, когда я знаю принцип, но подзабыл нюансы.
    Если же я реально не разбираюсь в том, что собираюсь делать - вырубаю трекер , трачу 15-20 минут на выяснение , а потом включаю. Мне это кажется справедливым.
    Ответ написан
  • Как выбрать повторы SQL-запросом?

    @mletov
    SELECT ip
    FROM
    (
         SELECT ip, date
         FROM table 
         GROUP BY ip, date
    ) AS t1
    GROUP BY ip
    HAVING COUNT(ip) = (SELECT COUNT(date)  FROM table GROUP BY date)


    Это запрос на выбор ip, которые встречаются каждый день. Или интересуют ip, которые повторяются хотя бы один раз?
    Тогда:

    SELECT ip
    FROM
    (
         SELECT ip, date
         FROM table 
         GROUP BY ip, date
    ) AS t1
    GROUP BY ip
    HAVING COUNT(ip) > 1
    Ответ написан
    4 комментария
  • Что значит оптимизировать сайт под SEO?

    27cm
    @27cm
    TODO: Написать статус
    Комментировать
  • В чем суть роутера на php?

    onqu
    @onqu
    weasy
    1. Здесь пугают всякими контроллерами, ларавелями. Давайте жить проще. Для начала дадим определение модному слову роутер. Это маршрутизатор. Что делает маршрутизатор? Правильно. Обрабатывает маршруты, являясь связующим звеном. Маршрутом для web сайта принято считать метод запроса [GET, POST, PUT и другие] и компоненты URI.

    например: https://ru.wikipedia.org/wiki/URI?foo=bar#title
    [схема: https] :// [источник: ru.wikipedia.org] [путь: /wiki/URI] [запрос: ?foo=bar] [фрагмент: #title]


    Но для определения маршрута может браться любая другая информация передаваемая серверу, определение выше это лишь наиболее употребляемые параметры.

    Сама работа, как правило проста: от клиента приходит запрос, маршрутизатор перебирает все заданные ему пути до первого совпадения. При совпадении вызывается определенная вами функция, которая возвращает ответ клиенту.

    2. Он необходим, если в приложении одна точка входа, когда любой запрос приходит на один файл.

    3. Простой пример
    // файл index.php
    
    // Маршруты
    // [маршрут => функция которая будет вызвана]
    $routes = [
        // срабатывает при вызове корня или /index.php
        '/' => 'hello',
        // срабатывает при вызове /about или /index.php/about
        '/about' => 'about',
        // динамические страницы
        '/page' => 'page'
    ];
    
    // возвращает путь запроса
    // вырезает index.php из пути
    function getRequestPath() {
        $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    
        return '/' . ltrim(str_replace('index.php', '', $path), '/');
    }
    
    // наш роутер, в который передаются маршруты и запрашиваемый путь
    // возвращает функцию если маршшрут совпал с путем
    // иначе возвращает функцию notFound
    function getMethod(array $routes, $path) {
        // перебор всех маршрутов
        foreach ($routes as $route => $method) {
            // если маршрут сопадает с путем, возвращаем функцию
            if ($path === $route) {
                return $method;
            }
        }
    
        return 'notFound';
    }
    
    // функция для корня
    function hello() {
        return 'Hello, world!';
    }
    
    // функция для страницы "/about"
    function about() {
        return 'About us.';
    }
    
    // чуть более сложный пример
    // функция отобразит страницу только если
    // в запросе приходит id и этот id равен
    // 33 или 54
    // [/page?id=33]
    function page() {
    
        $pages = [
            33 => 'Сага о хомячках',
            54 => 'Мыши в тумане'
        ];
    
        if (isset($_GET['id']) && isset($pages[$_GET['id']])) {
            return $pages[$_GET['id']];
        }
    
        return notFound();
    }
    
    // метод, который отдает заголовок и содержание для маршрутов,
    // которые не существуют
    function notFound() {
        header("HTTP/1.0 404 Not Found");
    
        return 'Нет такой страницы';
    }
    
    
    // Роутер
    // получаем путь запроса
    $path = getRequestPath();
    // получаем функцию обработчик
    $method = getMethod($routes, $path);
    // отдаем данные клиенту
    echo $method();


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

    4. Обойтись без него можно. Если каждая страница в вашем приложении будет являться отдельным файлом, который отвечает за отдачу информации.
    index.php
    about.php
    contact.php
    ...


    Это олдскульная структура, в новых проектах почти не применяется.
    Ответ написан
    13 комментариев
  • Можно ли 3d модельку, сделанную в 3dMax, поместить на сайт?

    @antonsr98
    Системный Администратор
    Как вариант можно перекинуть модель в блэндер а там в blend4web
    Ответ написан
    1 комментарий
  • Что означают эти логи и как эти действия предотвратить?

    copist
    @copist
    Empower people to give
    Это прощупывание твоего сайта на уязвимость.
    Можно попробовать удалить со страниц твоего сайта упоминание про версию CMS (
    <meta name="generator" content="WordPress 4.4.2" />
    ). Также посмотри как отключить служебные HTTP заголовки типа "X-Powered-By:PHP/5.3.28". Как скрыть специфические директории /wp-content/ и /upload/. Как скрыть специфические файлы wp-login.php и другие. В общем, не дай сторонним сайтам узнать, что у тебя за CMS.
    Есть специальные сервисы, через которые можно проверить - удалось ли скрыться (1, 2, 3)
    Количество запросов уменьшится

    По поводу
    Сервер не выдерживает нагрузки.

    Посмотри error.log - на каких страницах обычно падает по 500 или 501 ошибкам

    Установи nginx+php-fpm вместо apache+mod_php и включи php-fpm slow log, выясни что там у тебя вызывает ошибки 502 request timeout (на тостере)

    Через htaccess апача или конфиги nginx пропиши правила для ответа 404 Not Found на такой список URL

    В nginx установи кэширование ответов с кодом 404 на час или больше, чтобы до PHP даже не добиралось.
    Ответ написан
    4 комментария
  • Как прекратить выполнять скрипт на php?

    ExileeD
    @ExileeD
    PHP/Python developer
    С помощью top смотрите его pid

    и убиваете kill pid
    Ответ написан
    2 комментария
  • Есть ли уже готовый скрипт счетчика после отсчета которого можно добавить любое действие?

    Есть. Называется - цикл for.
    Ответ написан
    Комментировать
  • Откуда взялся https?

    Sanes
    @Sanes
    Это самоподписанный сертификат. Сгенерирован на вашем сервере. Само-собой в браузерах он валидацию не пройдет. Жмите разрешить.
    Ответ написан
    3 комментария
  • Как сделать секретный ключ API?

    Melkij
    @Melkij
    PostgreSQL DBA
    Сделайте ограничение по IP. С возможностью указать несколько сетей. Просто, стандартно, привычно.
    Для прозрачности - давайте подробный лог, мол по вашему ключу было столько-то таких-то запросов с такого IP-адреса. По идее градации день-IP-запрошенное действие-количество запросов будет достаточно чтобы и лог не раздувать сверх меры и давать подробную статистику пользователю. Если токенов может быть несколько - то дополнительно по токену счётчик
    Не забудьте дать пользователю кнопку "ааа, срочно инвалидируйте мой токен!"
    Ответ написан
    2 комментария
  • В каком формате сделать ответ API?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    А если ошибка какая? Лучше JSON и XML (именно ОБЕ версии - и JSON приоритетнее).
    Но можно оставить и такой вариант - как еще одна версия.
    А в идеале, еще и четвертый вариант добавить - возвращать сразу HTML, это не для приложений, а для аякса в браузере, - чтобы не нагружать клиент (браузер) лишним парсингом JSON/XML/цифры.
    А может еще и пятый, шестой, седьмой)) смотря что за сервис
    Ответ написан
    Комментировать
  • Как решить проблему в MySQL с конкатенацией строк?

    RomanAkaMagician
    @RomanAkaMagician
    CONCAT(str1,str2,...)
    Возвращает строку, являющуюся результатом конкатенации аргументов. Если хотя бы один из аргументов равен NULL, возвращается NULL. Может принимать более 2 аргументов. Числовой аргумент преобразуется в эквивалентную строковую форму:
    mysql> SELECT CONCAT('My', 'S', 'QL');
    -> 'MySQL'
    mysql> SELECT CONCAT('My', NULL, 'QL');
    -> NULL
    mysql> SELECT CONCAT(14.3);
    -> '14.3'
    Ответ написан
    Комментировать
  • Страницы фильтров в поиске - это гуд?

    myfirepukan
    @myfirepukan
    Жарим поиск
    Смотря что на этих страницах с фильтрами, какие заголовки страницы, есть ли текст, какой?
    Если там хороший текст или что-то типа карты сайта то скорее хорошо.
    Если только формы, плохие заголовки и отсутствие текста то скорее плохо.
    Ответ написан
    2 комментария
  • Какие есть варианты оптимизации/увеличении производительности Postgre?

    @lega
    Я бы залогировал время выполнения всех запросов, составил топ самых медленных и начал с верха разбирать каждый запрос.
    Все таблицы соответствуют норльманым формам, индексами покрыты (в т.ч. и составными) большая часть запросов SELECT.
    Большое кол-во join-ов снижают производительность, вложенные селекты могут убивать производительность т.к. на них нет индексов. Так же зачастую разработчики ставят неправильные индексы что дает не максимальную производительность - не достаточно просто "установить" индексы на нужные поля.
    Но это все разработчику, админу наверно остается следить что-б памяти хватало, да в cpu/io не упиралось (ну и может статьи по тюнингу почитать)
    Ответ написан
    2 комментария
  • Почему символы Ё и Й дробятся надвое?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    https://jsfiddle.net/hvh4h9j2/
    ничего не подробилось.

    Как вариант, еще так https://jsfiddle.net/0r9t1h6o/1/
    Ответ написан
    3 комментария