• Почему пустой вывод в PDO запросе?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что плейсхолдерами можно подставлять только значения, а не имена таблиц или полей.
    Ответ написан
    Комментировать
  • Сквозное преобразование массива?

    0xD34F
    @0xD34F
    преобразовать
    ['a' => [11, 12], 'b' => [21, 22]]
    в
    [['a' => 11, 'b' => 12], ['a' =>21, 'b' => 22]]

    Совершенно не очевидно, почему результат должен быть таким, как вы показали. Почему 12 из a становится значением свойства b, а 21 - наоборот? Опечатка? - наверное, в a исходного массива лежат значения свойств a результата, аналогично и с b.

    array_map(fn($i) => array_combine(array_keys($arr), array_column($arr, $i)), array_keys(array_values($arr)[0]))
    Ответ написан
    Комментировать
  • Как изменить цветовую схему в phpStorm?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Фон выделенных текстовых фрагментов един: Editor → General → Selection background
    Ответ написан
    1 комментарий
  • Какой есть буржуйский ресурс с адекватной аналитикой для выбора востребованного языка/платформы для изучения?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    как я вижу, веб-разработка, в качестве ремесла, неуклонно загибается.

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

    Работать и изучать приходится всё больше, а платят всё меньше.

    Web-разработчики интернет-банкинга, например, сильно не понимают, о чём вы.

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

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

    Грубо говоря: что сейчас стоит начать учить, чтобы через полгода был вал заказов и море бабла? ))

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

    Где сейчас бум идет, или намечается?

    Если кто-нибудь сейчас напишет точный ответ на этот вопрос, то в этой сфере мгновенно окажется огромное количество конкурентов, чудовищным образом сбивающее цены.
    Ответ написан
    Комментировать
  • Как для репозитория создать домен на github.io?

    miraage
    @miraage
    Старый прогер
    А как можно создать REPOSITORY.github.io без создания организации или нового пользователя с названием равным репозиторию?

    Никак.
    Ответ написан
    Комментировать
  • Как скачать файл через командную строку в линуксе?

    Попробуйте начать скачивать в браузере, и в инструментах разработчика, вкладка Network в FireFox если кликнуть правой кнопкой на закачке этого файла, есть пункт Copy – Copy as cURL:
    5e4446f6902f1091091106.png

    Скопированная команда включает все правильные заголовки, куки и пр.
    Не забудьте направить вывод команды в файл, иначе на экран повалится нечитабельная бинарная каша.
    Допишите к команде знак «больше» и имя файла, куда сохранять: curl -всякие опции и ссылка > file.zip

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

    Если привязаны к IP
    В таком случае придётся сделать SSH-тоннель через сервер, и использовать его как SOCKS5 прокси для браузера, чтобы зайти и авторизоваться через нужный IP.

    На маке это в терминале команда ssh -ND 5555 my_ssh_host_config_name где в файле ~/.ssh/config указан конфиг хоста:
    Host my_ssh_host_config_name
        HostName 123.12.12.123
        Port 1234
        User  username
        IdentityFile ~/.ssh/id_rsa

    В настройках FireFox - Proxy - указать SOCKS Host: 127.0.0.1, Port: 5555, SOCKS v5
    5e444987ecf34155912416.png
    Ответ написан
    7 комментариев
  • Какой класс вместо corsar использовать?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    а сейчас не могу понять как это сделать?

    Может быть потому что он всегда был Carbon?

    А еще есть просто now()

    В крайнем случае есть в php DateTime ну и всё такое.
    Ответ написан
    Комментировать
  • Как нарисовать такую звезду openGL?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Фигура состоит из 10 вершин, соединенных 10 ребрами.
    На первом шаге тебе надо равномерно распределить по единичной окружности 10 вершин. Сделать это нужно в специально отведенном массиве вершин, т.к. индексированные примитивы в этом старом режиме вывести нельзя.
    На втором этапе переключаем контекст на вывод замкнутой линии (GL_LINE_LOOP) и выводим все 10 точек из массива вершин, но со смещением на 3 точки и по модулю 10.

    Псевдокод:
    void display()
    {
       glClear( GL_COLOR_BUFFER_BIT );
       glBegin( GL_LINE_LOOP );
    
       for( size_t index = 0; index < vertices.size(); ++index )
       {
          const Vertex& vertex = vertices[ ( index * 3 ) % vertices.size() ];
          glVertex2i( vertex.x, vertex.y );
       }
    
       glEnd();
       glFlush(); 
    }
    Ответ написан
    1 комментарий
  • Принцип DIP из SOLID и Autowiring из DI-контейнеров?

    syamskoy
    @syamskoy
    Dependency injection - это когда в класс A мы передаем класс B через конструктор или сеттер, что бы он с ним работал, а не создавал его в своих нутрях.
    Dependency Inversion - это когда мы в классе A работаем не с конкретной реализацией, а с интерфейсами: указываем интерфейсы в конструкторе, в методах, в возвращаемых типах и т.д.
    Это два разных понятия, которые иногда объединяют в одно, и иногда их путают.
    Так вот, autowiring - это про Dependency injection, а D в solid - это про Dependency Inversion. Одно другому не мешает и не нарушает.
    Ответ написан
    1 комментарий
  • Сколько времени работает apple wireless keyboard A1314?

    fedorez
    @fedorez
    Хатуль мадан
    Рекомендую приобрести Apple battery charger. За относительно небольшие деньги получите зарядное устройство и шесть блестящих аккумуляторов, кои есть перемаркированные отличные Sanyo Eneloop. И забудете про батарейки.
    Ответ написан
    Комментировать
  • Можете посоветовать книгу для начинающего прогера в Unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Сам C# уже освоили? Если нет - то осваивайте его БЕЗ юнити. Литературу на тостере советуют регулярно, юзайте поиск.

    Если C# освоили - то достаточно официальных мануалов и туториалов с сайта юнити для начала.
    Ответ написан
    Комментировать
  • Банить по IP на время?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Подключаете примерно такую мидлварь
    def _get_ending(n, endings):
        n = n % 100
        if n >= 11 and n <= 19:
            return endings[2]
        else:
            n = n % 10
            if n == 1:
                return endings[0]
            elif n > 1 and n < 5:
                return endings[1]
            else:
                return endings[2]
    
    
    def _get_message(limit):
        if limit > 3660:
            limit //= 3600
            endings = [_('часа'), _('часов'), _('часов')]
        elif limit > 60:
            limit //= 60
            endings = [_('минуты'), _('минут'), _('минут')]
        else:
            endings = [_('секунды'), _('секунд'), _('секунд')]
        return _('Форма отправлялась менее {} {} назад').format(limit, _get_ending(limit, endings))
    
    
    def post_limit_middleware(get_response):
        limits = getattr(settings, 'REQUEST_LIMITS', {})
    
        def middleware(request):
            if request.method == 'POST':
                match = resolve(request.path_info)
                name = '{}:{}'.format(match.namespace, match.url_name) if match.namespace else match.url_name
                limit = limits.get(name)
                if limit is not None:
                    now = datetime.now()
                    user_id = request.user.username if request.user.is_authenticated else get_ip(request)
                    key = hashlib.md5(user_id.encode()).hexdigest()
                    cache_name = 'last-request.{0}.{1}'.format(name, key)
                    last_request = cache.get(cache_name, now - timedelta(days=1))
                    if (now - last_request) < timedelta(seconds=limit):
                        cache.set(cache_name, now)
    
                        if request.is_ajax():
                            response = JsonResponse([_get_message(limit)], safe=False)
                            response.status_code = 429
                        else:
                            response = render(request, '429.html', {'message': _get_message(limit)})
                            response.status_code = 429
                        return response
                    else:
                        cache.set(cache_name, now)
            response = get_response(request)
            return response
    
        return middleware

    Прописывается в settings.py настройку вида
    REQUEST_LIMITS = {
        'contact_form': 3600,
    }

    И живёте спокойно.
    Ответ написан
    2 комментария
  • Как ловить исключения в нескольких методах?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос странный. В какую розетку мне воткнуть чайник? В ту что ближе!

    Правильно писать блок try-catch там где надо поймать исключение.
    Если нужно ловить исключение в контроллере - ловить в контроллере.
    Если надо ловить в методе - ловить в методе.
    Если надо ловить любое исключение в программе - либо в глобальном блоке try-catch, либо в эксепшен хендлере.
    Ответ написан
    2 комментария
  • Установка блейд сервера дома, что нужно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как говорят на реддите, so many questions.
    Весь вопрос - один сплошной когнитивный диссонанс.
    - зачем для маленького проекта блейд?
    - главный вопрос - зачем вообще отдельный сервер для какой-бы то ни было разработки? чем не устраивает имеющийся в наличии ноутбучик?
    - почему именно блейд, а не юнит, если уж на то пошло?
    - что с ним делать дома?
    Единственное разумное объяснение - попытка развести лоха на деньги.
    Ответ написан
    Комментировать
  • Что быстрее mysql, mysqli или pdo?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Не стоит.
    Ответ написан
    Комментировать
  • Почему пакеты для Laravel не содержат composer.lock?

    glaphire
    @glaphire
    PHP developer
    Потому что это пакеты (стороннее переиспользуемое решение), а не конечный код.
    Здесь composer.json для того, чтобы описать зависимости и требования самого пакета.
    Ответ написан
    7 комментариев
  • Ребят выбираю курс java, где лучше?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Нигде. Курсы - это налог на тупость.
    Ответ написан
    3 комментария
  • XCode или CLion?

    doublench21
    @doublench21
    Конечно Xcode. Тут даже вопросов быть не должно. Не ставить же Clion на чёртовой джаве, который даже простой файл открыть в состоянии, лишь спустя несколько секунд.

    А вообще, что ты собрался писать на C++ под macOS? Под macOS нативно - это писать на obj-c/swift/си, ну никак не на c++. Ядро написано на СИ, а основные фреймворки - это в перемешку obj-c/swift. К тому же из них нельзя вызвать методы из C++, только Си.

    Хочешь писать под macOS, пиши на Swift, а самые критичные моменты дописывай на Си. Вот и всё.
    Ответ написан
    7 комментариев
  • Правильно ли реализовал структуру БД?

    Falseclock
    @Falseclock
    решаю нестандартные задачи
    Самая распространенная ошибка всех начинающих - это наименование полей.
    Заимейте привычку именовать основные поля, по которым будут связи в будущем, с именем таблицы.

    если таблица authors, то ключевое поле должно быть authors_id
    если таблица book, то поле обзывайте book_id

    Это сейчас у вас 3 таблицы и можно понять что куда к чему относится.

    А когда завтра вы будете джоинить по 5-6 таблиц, вы просто запутаетесь где и что с чем джоинится.
    Вот самый обычный пример с 9 джоинами. Если бы во всех таблицах были бы поля просто id, я бы голову сломал чтобы сджоинить. И это самый обычный запрос. А если сюда еще добавить интерсекты, кростабы, группировки, условия и вложенные запросы, то все колом встанет, чтобы интуитивно понять куда что с чем джоинить.

    SELECT
    				o.order_id,
    				lpad(o.order_id::text, 8, '0') AS order_number,
    				o.order_date,
    				o.order_state,
    				o.member_id,
    				o.contacts_data_id,
    				o.invoice_uuid,
    				o.invoice_number,
    				z.organization_short_name AS company,
    				z.organization_id,
    				y.organization_business_number AS bin,
    				f.contact_firstname AS firstname,
    				f.contact_lastname AS lastname,
    				d.*,
    				p.*,
    				x.supply_id,
    				i.invoice_id,
    				'2'||lpad(i.order_id::text, 6, '0') AS invoice
    			FROM
    				orders o
    			JOIN contacts_data s ON
    				o.contacts_data_id = s.contacts_data_id
    			JOIN contacts f ON
    				s.contact_id = f.contact_id
    			JOIN organizations z ON
    				s.organization_id = z.organization_id
    			LEFT JOIN organization_data y ON
    				z.organization_id = y.organization_id
    			JOIN order_data d ON
    				o.order_id = d.order_id
    			JOIN spare_parts p ON
    				p.part_id = d.part_id
    			LEFT JOIN supply_data x ON
    				x.order_data_id = d.order_data_id
    			LEFT JOIN supply xx ON
    				xx.supply_id = x.supply_id
    			LEFT JOIN invoices i ON
    				i.order_id = d.order_id


    Плюс страны вынести в отдельную таблицу, а в таблице авторов указывать ID страны.
    Завтра вы ведь захотите искать по странам. Зачем нагружать базу текстовым поиском и строить индексы по текстовым полям?
    Ответ написан
    Комментировать