• Какая база луче подойдет на рабочий портал?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Возьмите MongoDB. Не будет проблем с масштабируемостью и производительностью.
    Концепция сайта с вакансиями/позициями прекрасно ложится в NoSQL-хранилище.
    Ответ написан
    Комментировать
  • Как в огромнейших проектах искать ошибку?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Для начала следует поставить xdebug, xhprof и PHPStorm. Это необходимый набор инструментов для облегчения навигации. В PHPStorm очень удобный отладчик. Можно видеть стэк вызовов и т.д. xhprof позволяет в целом посмотреть на картину выполнения всего проекта. Работать с массивами правда сложно, особенно когда "черезчур умные" люди начинают изобретать самопальные сортировки и функции с паршивыми именами.

    Вам нужно найти, с помощью чего строится запрос к Solr, для этого ищите по ключевому слову Solr. Далее выясните, какой запрос уходит в Solr и что возвращается из него. Если результаты поиска по Solr в порядке, переходите к тому, как происходит отрисовка данных. Если выдача из Solr ошибочна, ищите как формируется индекс.
    Ответ написан
    Комментировать
  • Как узнать дату рождения или возраст через API FB?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Переменная, а точнее поле, называется birthday. Для доступа к нему требуются дополнительные привилегии - user_birthday.
    Если вам не нужны точные данные, то можете использовать age_range вместо birthday. Оно будет работать без запроса дополнительных привилегий.
    Ответ написан
    Комментировать
  • Как связаны Golang и Node.js при разработке серверной части?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Дело в том, что сейчас многие компании переписывают критичные по производительности части на Go и, в основном старые системы написаны на Node.js.
    Плюс выполнить прототипирование новых продуктов проще на Node, а потом можно перейти и на Go.
    Ответ написан
    8 комментариев
  • Почему Facebook шарит картинку с 2го - 3го раза?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Задержка происходит из-за того, что роботу Facebook нужно скачать страницу вашего сайта, распарсить ее, найти картинку, скачать картинку себе и потом отдать ее клиенту. Если ваш сайт работает медленно, то это занимает значительное время.

    Вы можете предварительно загонять ваши страницы в кэш Facebook, но в разумном объеме
    https://developers.facebook.com/docs/sharing/openg...
    Например так:
    curl -X POST \
         -F "id={object-url OR object-id}" \
         -F "scrape=true" \
         -F "access_token={your access token}" \
         "https://graph.facebook.com"

    Также это очень полезно в случаях обновления картинки. Актуальная вещь в каталогах товаров и интернет-магазинах.

    Вы можете повесить на клик Ajax вызов, который будет выполнять запрос на сервер, фиксировать, что скрейпинг сделан (чтобы второй раз не стучаться к Facebook), затем в callback уже вызывать Share().
    Ответ написан
    Комментировать
  • Кто писал свою CMS?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Была когда-то попытка написать свою CMS. Молодой был, зеленый. Дало много опыта и понимания, что и как работает.
    1. Написание происходило без особо влияния чужих систем и идеи брались из головы.
    2. Файлы выкладывались на сервер, далее прописывался коннект к базе и потом запускался скрипт, который создавал структуры данных.
    3. Использовался TinyMCE.
    4. Не было особой специализации, но были написаны модули каталога, новостей, видеообработки.
    5. Да, было ядро и отдельные модули. Но все было жестко связано, не было динамического связывания. Сейчас бы сделал все иначе.
    6. В качестве шаблонизатора использовался Smarty.
    Репы пока нет, из работающих сайтов можете посмотреть на progimp.ru - там было достаточно большое коммьюнити в свое время.
    Ответ написан
    Комментировать
  • Умный дом управление бытовой техники через интернет?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Поднять веб-сервер и высунуть его в интернет. Копайте в сторону https://www.openhab.org/
    Ответ написан
    Комментировать
  • Как ускорить вставку, если много индексов?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Чтобы решить эту проблему, нужно выбросить MySQL и использовать колоночные СУБД, которые разработаны специально для таких задач.
    Смотрите в сторону Vertica, Cassandra, HBase.
    Ответ написан
    9 комментариев
  • Дешевые хостинги - в чем подвох?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Самый главный подвох таких хостингов в том, что ресурсы разделяемые. Большая часть сайтов никогда не использует место полностью. Кроме того, у таких ресурсов просто очень ограниченные ресурсы. Например они позволяют малозначительный трафик, например до 1000 человек в сутки. Дальше идет спад производительности.
    Надо покупать больше и больше. Плюс есть экономия на бэкапах, поддержке и т.д. Опять же не стоит ждать хорошего времени отклика и тем более аптайма.

    Например у них есть 1000 клиентов, каждый из который может позволить себе по 1 терабайту места за 44 рубля в месяц. Возьмем и посчитаем сколько стоит самый обычный жесткий диск. Где-то 2000 рублей. Получаем несколько лет для простой окупаемости. Нужно несколько лет, чтобы такой окупить хостинг. Никто этого ждать не будет. Поэтому делается ставка на 2 вещи - активно предлагается годовая подписка, используется относительная неэффективность использования ресурсов.
    Обычно ресурсами пользуются новички, у которых стоит Жумла или ВордПресс, на который они ставят какую-нибудь спертую тему и заливают в базу необходимый минимум информации. Таких одинаковых установок тысячи. На серверной стороне ставится специальная файловая система, которая умеет работать с дубликатами файлов. Поэтому вместо миллионов одинаковых файлов, хранится несколько сотен. Таким подходом экономится куча места. Получается каждый новый клиент хранит в десятки раз меньше информации. Получается, что многочисленность приносит доход. Обычно сайты новичком никем не посещаются, разве что роботами. Да и то там 3 страницы, с весьма отвратительным качеством. Поэтому после первого прохода роботы не очень охотно возвращаются.

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

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Тут вариантов 2:
    1. Генерить нормальный PDF руками.
    2. Использовать вот такое вот https://github.com/marcbachmann/node-html-pdf
    Ответ написан
    Комментировать
  • Авторизация через Facebook?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    1. Для регистрации нужно указывать свои настоящие данные.
    2. После регистрации следует указать свой телефон и пройти через процедуру верификации аккаунта.
    3. Ваш аккаунт не должен выглядеть подозрительным или пустым. Т.е. у вас должны быть там ваши друзья, родственники и т.д. Вы должны пользоваться соц. сетью, чтобы AI хоть как-то вас воспринимал как человека.
    4. Проверьте свой компьютер на наличие разного рода дряни.
    5. Для тестирования приложения используйте тестовых пользователей. Возможно, Фейсбук вас просто банит за спам.
    Ответ написан
    Комментировать
  • Как разделять версии API REST?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Зевая...
    Сейчас вас тут научат микросервисам. Ага.


    Ваша проблема в том, что приложение изначально ненадежно. Первое, что в таком случае нужно сделать, это запускать несколько копий приложения, если такое позволяет архитектура.
    Поскольку у вас будет несколько запущенных копий приложения, вам потребуется балансировщик, чтобы управлять трафиком. Самый простой и дешевый - это nginx.
    Например тупо запустить 2 копии приложения на одной машине, но на разных портах, например 8001 и 8002. А при настройке nginx указать два апстрима, первый с портом 8001, а второй 8002. И настроить отвал по таймауту (fail_timeout). Таймаут зависит от того, насколько быстро работает ваше приложение. У меня он 1 секунда, у вас может быть другое значение.

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

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

    ЗЫ для любителей микросервисов: микросервисы не делают вашу архитектуру более устойчивой. Они делают ее более гибкой за счет замены одной реализации микросервиса другой. Например, у вас есть датацентр А, в котором вы храните файлы, которые сохраняются через микросервис. Внезапно там кишильбе-мишельбе-молния ударила, сервира уронила, файлы потеряло. Мат-перемат. Запиливается на коленке микросервис для датацентра Б, приложение перенастраивается. Полетели. Потом раскапывается из хлама бэкап, пишется скрипт, заливается в новый датацентр. Микросервисы хороши пока они микро. Микро понятие своеобразное, для меня оно означает - могу запилить за день в одиночку. Примеры: хранилка файлов, постановка задач в очередь, укорачивалка ссылок, счетчик переходов и т.п.

    Опиум для народа
    Ответ написан
    Комментировать
  • Как обновить запись в mongodb учитывая уникальный параметр?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Вам нужно делать update с $addToSet.

    db.getCollection('t1').update(
    {
        _id: ObjectId("599aa4467745ffb9644da8eb"),
        "series.id": "58e52c4e89673a7a83438f1c",
    },
        
    { $addToSet: {
            'series.$.letters': {
                "id" : "1bki584500r0trtyie7700002",
                        "sented_at" : [ 
                            "2017-08-23 16:46"
                        ]
            } 
        }
    }
    )


    И вместо 'sented_at' использовать 'sent_at'.
    Прошедшая форма глагола send это sent.
    Ответ написан
    Комментировать
  • Как оптимизировать svg-файл, в котором находится 5 000 точек, для встраивания на страницу?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    1. Растеризовать SVG в обычную картинку. Вынести все данные в отдельный объект с картой. Слушать mouseover обычным VanillaJS.

    2. Оптимизировать SVG.
    Из этого
    <circle class="tc-map-seat tc-map-seat_cat0" cx="201038" cy="16629" r="695" tc-seat-no="3"></circle>

    Вот в это
    <circle class="c0" cx="201038" cy="16629" r="695" n="3"></circle>

    Забыть нахрен про jQuery, зумить через CSS, двигать через VanillaJS requestAnimationFrame.
    С сервера загружать с gzip.

    3. Посмотрите, как это сделано на ticketmaster.com. Там карта разбита на зоны. Можно сделать точно также, но по клику по зоне показывать карту зоны. Т.е. сделать 2 уровня зума. Просто и функционально, плюс можно подсвечивать занятые места.
    Ответ написан
    1 комментарий
  • Как получить список друзей Твиттер?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    https://dev.twitter.com/rest/reference/get/friends/list

    Добавьте параметр count = 200, затем используйте курсор. Обратите внимание на лимиты вызовов.
    Ответ написан
    Комментировать
  • Facebook pixel нарушает валидацию страницы - как устранить?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Noscript должен находиться внутри тела документа.

    <html itemscope itemtype="http://schema.org/WebPage" lang="ru-RU">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="profile" href="#">
    <link rel="pingback" href="#">
    <title></title>
    <link rel="author" href="#" />
    <link rel="canonical" href="#" />
    
                <!-- Facebook Pixel Code -->
                <script>
                !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
                n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
                n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
                t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
                document,'script','https://connect.facebook.net/en_US/fbevents.js');
                                    fbq('init', '501918696809596');
    
                fbq('track', 'PageView');
                </script>
                
                <!-- убрали отсюда noscript -->
                <!-- End Facebook Pixel Code -->            
    
    <!-- остальные заголовочные теги -->
    </head>
    <body>
    
    ...
    <!-- noscript должен находиться внутри тела документа --> 
    <noscript><img height="1" width="1" style="display:none"
                src="#"
                /></noscript>
    Ответ написан
    1 комментарий
  • Как передавать моментальные статьи на facebook через api?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Скорее всего их публикуется слишком много и робот не успевает их проверить.
    Либо статьи плохого качества. Не могли бы вы привести примеры того, что есть и чего нет?
    Ответ написан
    Комментировать
  • Как открыть окно в окне в браузере?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    В таких случаях лучше использовать виджет страницы или JavaScript SDK c полной авторизацией пользователя.
    Ответ написан
    Комментировать