Задать вопрос
  • С чего начать изучение SQL?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Не хотелось бы зря потратить время на изучение не того, что нужно.


    Вот это меня постоянно удивляет у новичков - боятся изучить что-то не нужное, еще даже не начав что-то учить.

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

    Boomburum
    @Boomburum Куратор тега Хабр
    Местный
    К сожалению, у нас из статистики — только количество использования кнопки доната, суммы переводов мы не фиксируем (да и это личное дело авторов). Если вкратце, то кнопку жмут, но не очень охотно, не все и не всегда — в этом плане по стабильности и размеру донаты вряд ли догонят ППА, очень много зависит от статьи и других факторов. Хотя бывают и такие случаи (но они, скорее, исключения)):

    8gvgatl43vnyx59e2yjvc1anwgq.png
    Ответ написан
    Комментировать
  • Как правильно прервать поток в Си?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Общее правило при работе с потоками, не специфичное для С или pthreads: состояние резделяемое между потоками должно быть или атомарным или должно быть защищено примитивом синхронизации.
    Код функции thread_process никак не гарантирует, что компилятор не выкинет проверку !quit, потому что quit не меняется в этой функции и в функциях вызываемых из неё.

    Учитывая, что атомарность и потоки вошли в стандарт С11 имеет смысл смотреть туда.
    Если С11 недоступен, смотреть в pthread_mutex_*, pthread_cond_*, ...

    Может стоит вынести флаг в параметры потока

    По-хорошему -- да, стоит. Это, однако, ортогонально к синхронизации доступа.

    while(!quit) {
            if(difftime(time(NULL), last_cycle) > 30) {
                last_cycle = time(NULL);
                // Тут мои грязные дела
            }
        }

    Вместо busy wait лучше использовать sleep или что-нибудь типа pthread_mutex_timedlock/pthread_cond_timedwait.

    Я бы оформил код этого примера так:
    #include <sys/time.h>
    #include <pthread.h>
    #include <stdbool.h>
    #include <string.h>
    #include <stdio.h>
    
    struct thread1 {
        pthread_mutex_t lock;
        pthread_cond_t cond;
        bool quit;
    };
    
    static void* thread_process(void *p) {
        struct thread1 *arg = p;
    
        for (;;) {
            bool quit;
    
            pthread_mutex_lock(&arg->lock);
            if (!arg->quit) {
                struct timeval now;
                struct timespec ts;
    
                gettimeofday(&now, NULL);
                ts.tv_sec = now.tv_sec + 30;
                ts.tv_nsec = now.tv_usec * 1000;
                pthread_cond_timedwait(&arg->cond, &arg->lock, &ts);
            }
            quit = arg->quit;
            pthread_mutex_unlock(&arg->lock);
            if (quit)
                return NULL;
    
            // Тут мои грязные дела
        }
        return NULL;
    }
    
    int main() {
        pthread_t th;
        struct thread1 arg = {
            .lock = PTHREAD_MUTEX_INITIALIZER,
            .cond = PTHREAD_COND_INITIALIZER,
            .quit = false,
        };
        pthread_create(&th, NULL, thread_process, &arg);
    
        char cmd[16];
        while(true) {
            scanf("%s", cmd);
            if(!strcmp(cmd, "quit")) {
                pthread_mutex_lock(&arg.lock);
                arg.quit = true;
                pthread_cond_broadcast(&arg.cond);
                pthread_mutex_unlock(&arg.lock);
                break;
            }
            // остальные команды
        }
    
        pthread_join(th, NULL);
        return 0;
    }
    Ответ написан
    1 комментарий
  • QuerySet который возвращает объект с максимальным значением поля?

    deepblack
    @deepblack Куратор тега Django
    https://docs.djangoproject.com/en/dev/topics/db/ag...
    >>> from django.db.models import Avg, Max, Min
    >>> Book.objects.aggregate(Avg('price'), Max('price'), Min('price'))
    {'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}
    Ответ написан
    Комментировать
  • Не могу понять код, сможете помочь?

    tsarevfs
    @tsarevfs
    C++ developer
    do_twice принимает функцию и два аргумента и применяет ее к 2 результатам самой себя от этих аргументов. В коде это даже проще.
    func(func(x, y), func(x, y))
    Поскольку вызываем мы ее с параметрами do_twice(add, a, b), на выходе получим:
    add(add(5, 10), add(5, 10)) == add(15, 15) == 30
    Ну и в конце мы печатаем этот результат функцией print
    Ответ написан
    Комментировать
  • Как в Python сделать вызов функции ежедневно в определенное время?

    DevMan
    @DevMan
    cron или любой другой планировщик заданий, доступный в вашей системе.
    Ответ написан
    Комментировать
  • Как работать с базой данных в Android?

    iLLuzor
    @iLLuzor
    Java, Kotlin, Android Developer
    С удалённой базой данных нужно работать через API. А то, что вы делаете, это какая-то дичь.
    Ответ написан
    2 комментария
  • Что делать, если установщик Kali Linux не видит том?

    deepblack
    @deepblack
    Поставить OpenBSD - огонь а не система.
    Kali нервно курит в сторонке.
    Если разберёшься, будешь кулхацкером ))
    Ответ написан
    1 комментарий
  • Сколько в среднем получает джун/миддл в веб-разработке в регионах (не Мск)?

    rockon404
    @rockon404
    Frontend Developer
    Вариант 1:
    1. Открываем любой сайт с вакансиями конкретного города.
    2. Смотрим актуальные зарплаты на интересующие позиции.

    Вариант 2:
    1. Открываем https://moikrug.ru/salaries
    2. Нажимаем Узнать другую зарплату
    Ответ написан
    8 комментариев
  • Как импортировать модуль из переменной?

    sim3x
    @sim3x
    Вам не нужно такого хотеть
    Лучше приложение ругнется, что нет пакетов, а юзер руками создаст окружение и поставит зависимости
    Вам нужно лиш создать requirements.txt / Pipfile и указать в мануале, что требуется установка руками зависимостей

    Или создать пакет и прописать тоже самое для "авто" установки зависимостей из тех же файлов в setup.py
    Ответ написан
    Комментировать
  • Скажите пж, как расшифровать md5 пароль на php?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Никак.
    MD5 - это не шифрование, а хэширование
    Ответ написан
  • Как организовать хранение аудиофайлов для серверного проекта?

    @raiboon
    Просто хранить на жёстких дисках - неудобно и не сильно надёжно.
    Для кого разрабатывали ceph, minio, Gridfs, riakcs, etc?

    В целом, если есть возможность, то лучше s3 или аналоги от конкурентов.
    Но если хотите иметь полный контроль над инфраструктурой, то просто выберете подходящее решение.
    Ответ написан
    1 комментарий
  • Как подсчитать число уникальных строк больше 1 млн. при вводе?

    longclaps
    @longclaps
    Задача не имеет решения в заявленых ограничениях. Если чьи-то решения прокатывают - значит редакция мухлюет с тестовыми данными. Вот демка на этот счет. Можешь допилить её, выбросив лишнее и заменив randrange на hash(input()), и попробовать пропихнуть как решение.
    from numpy import zeros, uint32
    from random import randrange
    from sys import getsizeof
    
    
    N = 10 ** 6
    hashes = zeros(N, uint32)
    print(f'hashes занимает  {getsizeof(hashes)} байт')
    control = set()  # здесь считаем по-честному
    for i in range(N):
        # вместо строк я использую большие случайные числа
        r = randrange(0x4000000000000000)
        control.add(r)
        # сохраняем последние 4 байта r - больше не лезет
        hashes[i] = r & 0xffffffff
    hashes.sort()
    a, cnt = hashes[0], 1
    for b in hashes:
        if a != b:
            a = b
            cnt += 1
    print(f'control - целых {getsizeof(control)} байт (для строк длиной до 1к было бы больше)')
    print(f'{cnt:8} разных хэшей\n{len(control):8} разных чисел')

    Слишком короткий хэш (32 бита) на 10^6 строк порождает слишком много коллизий (смотри парадокс дней рождения). Нельзя впихнуть невпихуемое.

    UPDATE
    Roman Kitaev предложил использовать фильтр Блума, вот решение на этой идее. Оно несёт в себе недостатки фильтра Блума: работает медленно и ошибается; так же возможно, что мои упрощения убили фильтр, но авось прокатит.
    bitmap, cnt = bytearray(0x400000), 0
    for _ in range(int(input())):
        h, f = hash(input()), 0
        for _ in range(16):
            m = b'\x01\x02\x04\x08\x10\x20\x40\x80'[h & 7]
            h = ((h >> 4) ^ i) | ((h & 15) << 60)
            if not bitmap[h & 0x3fffff] & m:
                bitmap[h & 0x3fffff] |= m
                f = 1
        cnt += f
    print(cnt)
    Ответ написан
    6 комментариев
  • Как подсчитать число уникальных строк больше 1 млн. при вводе?

    @deliro
    N = int(input())
    s = set()
    for i in range(N):
        s.add(input())
    print(len(s))


    UPD
    Более оптимальный по памяти — сами строки не хранятся, хранятся только их хэши:

    N = int(input())
    s = set()
    for i in range(N):
        s.add(hash(input()))
    print(len(s))
    Ответ написан
    8 комментариев
  • Почему кто-то может отметить ответ решением?

    Moskus
    @Moskus
    В вопросе содержатся ошибки.
    Во-первых, нет никаких "лучших ответов". Есть просто "решения". (Ну ещё голосование "нравится".)
    Во-вторых, отметка решением не делается "от имени автора". Признание ответа решением независимо от автора. Признать решением может автор, куратор тега или другие пользователи, если достаточное их число проголосуют за этот ответ.

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

    И нет, это никакое не "нарушение прав автора" (вы эти права сами только что придумали?), как вы пишете в комментариях. Каких прав? Права не отмечать ответ решением? Его никто не нарушает - автора никто не заставляет отмечать, отмечают другие. Или права запретить другим отмечать ответ решением? Ну так это вообще абсурд. То, что автор не может воспользоваться решением или что он недоформулировал вопрос так, что его реальная проблема не соответствует проблеме в вопросе, не делает решение неправильным.
    Ответ написан
    9 комментариев
  • Куда развиваться ручному тестировщику?

    Можно и лучше всего развиваться в сторону автоматизированного тестирования, это перспективная и более высокооплачиваемая область.
    Ответ написан
    Комментировать
  • Что делать если увольняют с работы(IT компания. Скорее всего по статье за несоответствие занимаемой должности)?

    Очень не хочется портить трудовую 2-мя месяцами работы.
    Трудовую вашу увидят только после того, как примут решение взять на работу. Соответственно, вы можете вообще в резюме не указывать, что где-то в это время работали. Это первое. Второе - если вы всё же будете бодаться и указывать эту компанию в резюме, то как только потенциальные работодатели позвонят на прошлое место работы и услышат про суд, ваша кандидатура из рассмотрения, скорее всего, выпадет.

    Словом, уходите по собственному и при поиске работы объясняйте такой короткий срок. В целом, это нормально - на то испытательный срок и существует, чтобы не только компания к вам присмотрелась, но и вы к компании. Единичная подобная история нормального кадровика не смутит.
    Ответ написан
    4 комментария
  • Как быть с этой ошибкой "has been blocked by CORS policy"?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    100500 раз уже тут и не только тут обсуждалось. Браузеры не позволяют через js обращаться с одного домена на другой без разрешения со стороны запрашиваемого домена (cors policy). Запрашивай через curl из php, раз его в тегах указал
    Ответ написан
    3 комментария
  • Где учиться iOS разработке?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Смотри, как делал бы это я.
    0. Приобрести маки/айфоны/айпады
    1. придумать проект
    2. Начать его делать
    Курсы - нахрен
    Ответ написан
    Комментировать