• Как узнать источник трафика?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Вообще-то даже с HTTPS получить HTTP_REFERER вполне можно (если речь идет не о перехвате чужого траффика, а о своем собственном сайте). Другой вопрос, что Яндекс некоторое время назад стал шифровать текст запросов и делать его доступным только через Метрику (но последнее с https не связано). Но сам факт того, что пользователь пришел из Яндекса, это опредлить не помешает.
    Ответ написан
    Комментировать
  • Как исправить error CS1955: Non-invocable member 'Transform.position' cannot be used like a method?

    @SWA512
    Gamedev
    Такого метода нет position(x, y, z).
    Нужен простой перенос значения.
    other.gameObject.transform.position = new Vector3(x, y, z);
    Ответ написан
    2 комментария
  • Как лечить спину айтишникам?

    GavriKos
    @GavriKos
    Ну йопт. Вот вы айтишник. Вы же знаете что вопросы по теме надо задавать тем кто шарит в теме, а не сгружать вопросы по программированию переводчикам. Сходите к врачу! И он вам все скажет что и как лучше для ВАШЕГО организма.
    Ответ написан
    11 комментариев
  • Как поменять количество пунктов при увеличении громкости с клавиатуры?

    DamianLewis
    @DamianLewis
    Скачиваете и устанавливаете(есть Portable) такую замечательную программу как Volume2.
    Дальше:
    1. Настраиваете горячие клавиши для увеличения/уменьшения громкости, красивый экранный индикатор по желанию.
    2. В настройках ставите "Скорость изменения громкости" на 100 шагов
    Скрин
    61ace3ae7f6df545729662.png

    Теперь звук будет увеличивается только на 1 пункт при каждом увеличении/уменьшении.
    Я ставлю 25 шагов. Мне так удобно.

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

    Ну и самое главное, что Вам остается сделать, месяцами/годами удивляться как Вы раньше жили без этой замечательной программы.
    Ответ написан
    Комментировать
  • Как перейти с laravel на symfony?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Как человек, который это сделал, могу сказать, что сложностей особых нет. Документация хорошая, проблемы решал быстро.
    Собственно переход был в виде переноса проекта, сделанного на Laravel на Symfony. Многие моменты переносились через Ctrl+C -> Ctrl+V. Я, конечно, утрирую - но к сути близко, т.к. сам Laravel использует внутри себя Symfony Components.

    Проблемы были - особенно проблемы с админкой, с формами - но это было незнание компонента и решались они поэтапно, по мере изучения документации и вопросов на stackoverflow.
    Ответ написан
    4 комментария
  • Почему за основу для Arduino выбрали Atmega328P, когда STM32 и дешевле до двух раз, и лучше до двух раз?

    @Hoksmur
    Я знаю две причины:
    1) поинтересуйтесь годом выхода ARDUINO и выходом указанного STM. На тот момент продукция Atmel была сильно популярней, а значит и больше людей, кто мог заинтересоваться проектом.
    2) первая ARDUINO на Mega8 принципиальна была разработана под одностороннюю плату и DIP, точнее trought-hole компоненты. Для повторения "на коленке".
    Может были и другие соображения, но они оправдались, так как проект "взлетел".
    Вот для справки: https://www.arduino.cc/en/Main/ReleaseNotes первая версия вышла ARDUINO 0001 - 2005.08.25, в случае с STM32 - www.compel.ru/lib/ne/2011/2/3-stm32-epoha-32-bitny... Компания ST одна из первых выпустила свои микроконтроллеры Cortex-M3 (2007 г.)
    Ответ написан
    Комментировать
  • Как подключить Yandex Smart Captcha на сайт Django?

    sergey_1990
    @sergey_1990
    1
    Ответ На Ваш вопрос из реального проекта
    views.py
    def get_client_ip(request):
        """получение IP пользователя"""
        x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
        if x_forwarded_for:
            ip = x_forwarded_for.split(',')[0]
        else:
            ip = request.META.get('REMOTE_ADDR')
        return ip
    
    
    def check_captcha(token,request):
        """проверка токена капчи"""
        guest_ip = str(get_client_ip(request))
        resp = requests.get(
            "https://captcha-api.yandex.ru/validate",
            {
                "secret": settings.YACAPCHA_SERVER,
                "token": token,
                "ip": guest_ip  # Нужно передать IP пользователя.
                                   # Как правильно получить IP зависит от вашего фреймворка и прокси.
                                   # Например, в Flask это может быть request.remote_addr
            },
            timeout=1
        )
        server_output = resp.content.decode()
        if resp.status_code != 200:
            print(f"Allow access due to an error: code={resp.status_code}; message={server_output}", file=sys.stderr)
            return True
        return json.loads(server_output)["status"] == "ok"
    
    class RequestWithCapchaCreateAPI(generics.CreateAPIView):
        """общий класс для проверки каппчи"""
        def create(self, request, *args, **kwargs):
            captchaToken = request.POST['smart-token']
            if check_captcha(captchaToken,request):
                return super().create(request, *args, **kwargs)
            else:
                return  JsonResponse({'status':'false','message':'ROBOT'}, status=423)
    
        def perform_create(self, serializer):
            subdomain = get_subdomain(self.request)
            serializer.save(subdomain=subdomain)
    
    class CallRequestCreateAPI(RequestWithCapchaCreateAPI):
        """создание запроса на звонок"""
        serializer_class = CallRequestSerializer

    settings.py
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [BASE_DIR/ 'templates'], # add for index (templates),
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                    'wellway_system.context_processors.debug',
                    'wellway_system.context_processors.capcha', #Капчу в общий контекст
                ],
            },
        },
    ]
    # Для yandex capcha
    SECURE_REFERRER_POLICY = 'no-referrer-when-downgrade'
    YACAPCHA_CLIENT = '...........' #Ключ клиента
    YACAPCHA_SERVER = '...........' #Ключ сервера

    context_processors.py
    from django.conf import settings
    
    def capcha(context):
      return {'YACAPCHA_CLIENT': settings.YACAPCHA_CLIENT}


    В шаблоне в подключаем
    <script src="https://captcha-api.yandex.ru/captcha.js?render=onload&onload=onloadFunction" defer></script>

    В шаблоне в конце подключаем
    <script>
    		function onloadFunction() {
    		  if (window.smartCaptcha) {
    			const containers = document.querySelectorAll('#captcha-container');
    			containers.forEach(function (container) {
    			  const widgetId = window.smartCaptcha.render(container, {
    				sitekey: "{{ YACAPCHA_CLIENT }}",
    			  });
    			  container.dataset.widgetid = widgetId
    			})
    		  }
    		}
    	  </script>

    в форму включаем
    <div style="height: 100px" id="captcha-container" class="smart-captcha"></div>

    ну и в скриптах везде по-разному но смысл один делаем ресет кода капчи например
    function formSent(form, responseResult = ``) {
                document.dispatchEvent(new CustomEvent("formSent", {
                    detail: {
                        form
                    }
                }));
                setTimeout((() => {
                    if (flsModules.popup) {
                        const popup = form.dataset.popupMessage;
                        popup ? flsModules.popup.open(popup) : null;
                    }
                }), 0);
                formValidate.formClean(form);
                formLogging(`Форма отправлена!`);
                let widget = form.querySelector("#captcha-container");
                let widgetId = widget.dataset.widgetid;
                smartCaptchaReset(widgetId);
            }

    Вроде всё написал, удачи))
    Ответ написан
    1 комментарий
  • Стоит ли покупать macbook pro 13 2020?

    mr_qpdb
    @mr_qpdb
    ⏱ - is not eternal
    Если вы будете работать с нейронными сетями, то Вам потребуется работать со специальным IDE, который предназначен для этого. В среднем, все IDE'ешки рекомендуют иметь 8гб оперативной памяти (минимум 4гб). Таким образом получается, что при использовании IDE - считай половина> оперативной памяти будет занято самим IDE. Вам так же потребуется работать с браузерами, это так-же занимает память, особенно гугл. Выходит, что оперативная память у Вас будет забита почти на полную. Представьте, что если Вам еще потребуется открыть каки-либо приложения, или поставить линукс на виртуалбокс. То вам категорически не хватит 8гб, как бы это горько ни звучало.
    Лично я, работаю на 4гб, и из-за этого приходится обходиться без IDE, без браузеров при написании кода и куча-куча неудобств. А макбук покупают для удобств, тем более человек его не каждый раз себе может позволить. Поэтому считаю, что следует покупать от 16гб, ведь макбук для этого и создан, чтобы радовать пользователя, а не приносить ему неудобства
    Ответ написан
    1 комментарий
  • Каков план личностного развития JavaScript программиста с нуля?

    @Shetani
    www.codecademy.com/tracks/javascript
    https://www.codeschool.com/paths/javascript
    John Resig, Bear Bibeault "Secrets of the JavaScript Ninja"
    Douglas Crockford "JavaScript. The Good Parts"
    Стефанов С. "JavaScript. Шаблоны"
    Дэвид Херман "Сила javascript"
    Ответ написан
    1 комментарий