• Как запретить заходить в мою директорию через браузер по ip вида "http://xxx.xxx.xxx.xxx:81"?

    Ну так ты же сам написал в VirtualHost *:81
    Напиши там другой хост и не будет по ip заходить.
    Ответ написан
    Комментировать
  • Можно ли реализовать чат с сайта в телеграм?

    @historydev
    Редактирую файлы с непонятными расширениями
    Можно
    Ответ написан
    Комментировать
  • Как посчитать количество непрочитанных сообщений с aggregate в моем случаи?

    Как то так: добавил $addFields stage, и count в $group

    db.collection.aggregate([
      {
        "$match": {
          "roommates": {
            "$in": [
              1
            ]
          }
        }
      },
      {
        "$sort": {
          "created_at": -1
        },
        
      },
      {
        "$addFields": {
          "to_sum": {
            "$cond": {
              "if": "$viewed",
              "then": 0,
              "else": 1,          
            }
          }
        },
      },
      {
        "$group": {
          "_id": "$roommates",
          "user": {
            "$first": "$user"
          },
          "target": {
            "$first": "$target"
          },
          "text": {
            "$first": "$text"
          },
          "created_at": {
            "$first": "$created_at"
          },
          "viewed": {
            "$first": "$viewed"
          },
          "count": {
            "$sum": "$to_sum"
          }
        }
      },
      {
        "$sort": {
          "created_at": -1
        },
        
      },
      {
        "$limit": 25
      }
    ])
    Ответ написан
    2 комментария
  • Как сделать поиск по $in и $nin для одного поля в aggregate mongodb?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    duplicate field name Key in struct literal

    Так в ошибке все написано. Вы неправильно создали структуру.

    bson.D это массив из bson.E, где у bson.E есть поля Key и Value, соответственно в Го такой код должен быть:
    matchFilter := bson.D{
    		bson.E{
    			Key: "$match",
    			Value: bson.D{
    				bson.E{
    					Key: "roommates",
    					Value: bson.D{
    						bson.E{Key: "$in", Value: []int{123}},
    						bson.E{Key: "$nin", Value: []int{3123}},
    					},
    				},
    			},
    		},
    	}


    bson.E можно опустить, поэтому в примерах непонятные {{ появляются.
    Ответ написан
    1 комментарий
  • Платежные сервисы для сайта без ИП и/или регистрация на физ. лицо?

    mihavxc
    @mihavxc
    Юмани точно работает с самозанятыми. Это для России.
    Для остального мира посмотрите mycommerce.com или payproglobal.com. Они работают с самозанятыми из России.
    Ответ написан
    Комментировать
  • Почему int при делении int на int с остатком?

    Да, это нормально.
    Ответ написан
    Комментировать
  • В чем принципиально различие postgres от mysql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Postgresql - более консервативен. Его можно брать почти для любых проектов. Есть partitioning что свидетельствует о зрелости системы и об Enterprise-ready. Единственное что может быть не очень - это некий кумулятивный эффект от частых inserts/updates который требует вакуума. И со счетчиками транзакций там есть нюанс. Но скорее всего в твоём сегменте разработки PHP/Laravel - тебе будет просто безразлично сущестование вакуума.

    MySQL это лейбл под которым на самом деле могут работать различные engines таблиц. И если анализировать какой-то performance-инцедент то нужно в первую очередь спрашивать с какой опцией таблица создавалась. MyISAM/Innodb/e.t.c. Потому что выбор этого двигателя влиял на какие-то опции скорости и транзакций. Я заменял например в создающих скриптах InnoDb на MyISAM для того чтобы просто быстрее прогрузить 1Тб CSV файл.

    В более современных версиях типа MariaDb (я уже не следил за этими новостями) есть более умные двигатели которые учитывают дефекты старых и по идее они должны быть универсальнее. Тоесть можно их брать смело.

    Что лично меня раздражает в диалекте My/SQL - так это странного вида кавычки-апострофы. Никогда не понимал зачем это.
    Ответ написан
    Комментировать
  • Жизненный цикл Go?

    @deliro
    Хорошо живёт. Если имеется ввиду HTTP, то (обычно) на каждый запрос го пуляет новую горутину, после обслуживания запроса горутина умирает. Главная горутина живёт бесконечно долго (от запуска до shutdown'а)
    Ответ написан
    Комментировать
  • Как эффективнее всего отслеживать кол-во посещений вашего ресурса?

    Sanes
    @Sanes
    1. Сначала определитесь, по каким признакам будете считать уникальность.
    2. По этим самым признакам сделайте Цифровой отпечаток устройства
    Ответ написан
    Комментировать
  • Как стилизовать title атрибут элемента?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Никак, но можно создать псевдоэлемент рядом, появляющийся при наведении и уже его стилизовать:
    img[title]:hover:after {
        content: attr(title);
        // ... стилизуй дальше, как хочешь
    }

    attr(параметр) - возвращает значение указанного в скобках атрибута.

    Источник: htmlbook.ru/css/content
    Ответ написан
    2 комментария
  • Нужно ли валидировать текст пользователя на наличие непристойных слов?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Если Вы СМИ илии соцсеть - будут. Год назад был принят закон, по которому соцсети обязаны валидировать контент.

    Ну и если сайт/cоцсеть доступны без регистрации - я бы вот подставляться не стал. Если материал с факами может увидеть несовершеннолетний, то нужно иметь в виду, что у нас много что начинается с "защиты детей" :)
    Ответ написан
    5 комментариев
  • Как использовать watch с [] внутри?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Выражение с [] оформить как вычисляемое свойство. Установить наблюдение за этим свойством.
    Ответ написан
    Комментировать
  • Нужно ли мне обязательно указывать юр инфу в футере сайта?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Первое не обязательно, если не собираетесь бороться с копированием данных с вашего сайта. Второе вообще не обязательно. А вот третье обязательно, если ваш сайт принимает, хранит и обрабатывает персональные данные. В этом случае так же понадобится соглашение о конфеденциальности и информация о юрлице.
    Ответ написан
    2 комментария
  • Можно ли использовать переменную типа string, как название функции и потом вызвать ее?

    Нет, так сделать нельзя, Го не скриптовый язык.

    Но саму функцию в переменную положить можно. И потом вызвать.

    https://go.dev/play/p/dkF1s6ENnjA
    func main() {
    	fn := some
    	fmt.Println(fn())
    	fn = other
    	fmt.Println(fn())
    }
    
    func some() int {
    	return 1
    }
    
    func other() int {
    	return 2
    }
    Ответ написан
    Комментировать
  • Как получить данные профиля после google sign in на стороне севрера?

    @AlexVWill
    Есть же целый, толковый гайд по этой функции
    https://developers.google.com/identity/gsi/web/gui...

    spoiler
    <html lang="en">
      <head>
        <meta name="google-signin-scope" content="profile email">
        <meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
        <script src="https://apis.google.com/js/platform.js" async defer></script>
      </head>
      <body>
        <div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div>
        <script>
          function onSignIn(googleUser) {
            // Useful data for your client-side scripts:
            var profile = googleUser.getBasicProfile();
            console.log("ID: " + profile.getId()); // Don't send this directly to your server!
            console.log('Full Name: ' + profile.getName());
            console.log('Given Name: ' + profile.getGivenName());
            console.log('Family Name: ' + profile.getFamilyName());
            console.log("Image URL: " + profile.getImageUrl());
            console.log("Email: " + profile.getEmail());
    
            // The ID token you need to pass to your backend:
            var id_token = googleUser.getAuthResponse().id_token;
            console.log("ID Token: " + id_token);
          }
        </script>
      </body>
    </html>


    Если вкратце, то Google Sign In возвращает токен, в виде длинной строки символов
    который можно передать на сайт верификации
    https://oauth2.googleapis.com/tokeninfo?id_token=XYZ123
    который возвратит JSON массив с данными эккаунта
    {
     // These six fields are included in all Google ID Tokens.
     "iss": "https://accounts.google.com",
     "sub": "110169484474386276334",
     "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
     "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
     "iat": "1433978353",
     "exp": "1433981953",
    
     // These seven fields are only included when the user has granted the "profile" and
     // "email" OAuth scopes to the application.
     "email": "testuser@gmail.com",
     "email_verified": "true",
     "name" : "Test User",
     "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
     "given_name": "Test",
     "family_name": "User",
     "locale": "en"
    }
    Ответ написан
    Комментировать
  • Как сделать музыку на сайте так же как в вк?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Создаю свой мессенджер, задача такова что нужно сделать список абсолютно всех мелодий которые есть в мире, так же как в вк, как это можно реализовать?
    Так, давайте прикинем что нам нужно для реализации. Программная часть собственно нас не сильно интересует, так как на фоне прочих затрат найм какого-нибудь Линуса Торвальдса на пару месяцев вообще теряется в общей сумме.

    1) Хранилище. По примерным оценкам в мире в цифровом виде около 500 000 000 оригинальных музыкальных композиций. Учитывая ремиксы и каверы - можно смело брать миллиард. Средний вес композиции среднего качества - 5 Мб. То есть порядка 5 петабайт, если хранить не в лучшем качестве. Учитывая что это должно иметь какое-то резервное хранение (у нас тут серьезный сервис все-таки), умножаем на 2 (10 петабайт). При стоимости около 2 центов за гиг в месяц, 10 000 000 Гб * $0,02 = $200 000 в месяц хранение. Ну, бюджетненько в целом.

    2) БД, которая хранит данные обо всех этих композициях. Стоимость хранения будет поменьше, но думаю к 20-50К все равно где-то выйдет.

    3) Другой вопрос - где брать эти данные, так как не все музыкальные файлы содержат полное описание композиции. На перебор 1 миллиарда записей и сортировки их по жанрам, альбомам, исполнителям, дате выпуска и т.д. уйдет некоторое время. Допустим 50% композиций будут иметь нормальное описание, остается все те же 500 миллионов композиций на обработку. Пусть на каждую понадобится 2 минуты работы, внести данные в поля (хотя их еще как-то найти надо, но допустим), тогда получим 1 миллиард минут. Это 1900 лет работы, или 16 666 667 часов. Час работы самого дешевого индуса - 3 бакса/час. 16 миллионов * 3 - давайте округлим до 45 миллионов. Даже если сократить этот пункт в 10 раз - выйдет под 4 миллиона. Рабский труд сегодня дорог как никогда...

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

    5) Прочие накладные расходы, такие как билеты на самолет до Америки с целью договориться где будет стоять ваш датацентр и прочие мелочи мы пока в бюджет не вкладываем, так как там уже инвесторы подтянутся, и смысла заморачиваться с мелочевкой нету. Так же оставляем за кадром вопросы лицензий и отчислений авторам, так как с этим возиться лень, как-нибудь решим потом.

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

    По итогу на год:
    $200 000 * 12 = $2 400 000 хранилище
    $20 000 * 12 = $240 000 бд
    $20 000 * 12 = $240 000 сервера приложения
    $4 000 000 работы
    Итого: чуть меньше 7 миллионов баксов.
    Ответ написан
    2 комментария
  • Каковы лучшие практики вывода средств на зарубежную дебетовую карту сегодня из России?

    SunnyPh
    @SunnyPh
    ASP.NET Core (MVC, Razor Pages, Blazor)
    1. Если сможете рублевые доходы в РФ превратить в крипту, а это не так то просто сделать сейчас (P2P Binance например ввела ограничения на вывод крипты со счетов Россиян на другие кошельки), то Вы на полпути к заветной цели.
    2. Ищите зарубежного посредника, который может перевести крипту в доллары например сначала на своем собственном счету.
    3. Посредник переводит доллары межбанковским переводом SWIFT на ваш счет в иностранном банке (но тут могут быть ограничения и дополнительные проверки, особенно если вы как владелец карты, являетесь гражданином РФ).
    4. Другой способ перевода средств с карты посредника на вашу карту. Если у Вас карта открыта (в Евросоюзе или в США...тут надо уточнять), то вы можете привязать ее к платежной системе Stripe.
    5. Еще один способ перевода средств с карты посредника на вашу карту, это платеж на Ваш PayPal, но для этого счет PayPal должен быть открыт и проведена его верификация.
    6. Еще один способ перевода средств, появившийся недавно из-за послаблений ЦБ РФ . Вы можете делать валютный перевод с рублевого счета в банках РФ, которые не попали под санкции, ежемесячно в пределах 10 тысяч долларов на счет физического лица - иностранца. Но будьте готовы ответить в последующем на вопросы сотрудников Росфинмониторинга о характере ваших взаимоотношений с иностранным получателем этих средств. И следующий минус этого, это возможные налоговые претензии у иностранного получателя этих средств.

    P.S. Вариант с переводом средств в крипту внутри РФ и последующий перевод валюты на вашу иностранную карту через Stripe или PayPal является непростым, но реальным с точки зрения легализации ваших доходов за пределами РФ. Только не вздумайте привязывать вашу иностранную карту к Stripe или PayPal, находясь в РФ. Возможна заморозка всех средств, а также компроментация и вечный бан этой карты в Stripe или PayPal...
    Ответ написан
    Комментировать