Обновить
84
Пётр@Error1024

Разработчик

0,1
Рейтинг
49
Подписчики
Отправить сообщение
Почему в примерах узнаваемых всеми логотипов нету логотипов созданных Логомашиной?
Окей, подарите мне пожалуйста один экземпляр этой «грязи».
Все, кроме Guitar Boy — порча железа. Мне особенно жалко C64.
Имхо, это просто тупо и даже вредительство, уничтожение ретро железа.
Про то что было в США не говорю, я о том как в России значение термина менялось.
Изначально гиками именовали людей, увлечённых высокими технологиями (обычно компьютерами и гаджетами). В 2000-е годы распространилось другое значение слова: человек, увлечённый популярной культурой, член фэндома. Есть также точка зрения, что гики образуют единое сообщество поклонников фантастики и технологий.

https://ru.wikipedia.org/wiki/Гик_(человек)
<простите, воспринимать с юмором>
Косплей — это одна из вещей, которая из крутого термина «гик», про компьютерщика/электронщика, сделала термин «гик» — синонимом ряженого, смотрящего Adventure Time, читающего комиксы, и кричащего везде о «гик культуре», не имеющего к it никакого отношения.
</простите, воспринимать с юмором>
Так можно делать только с С99 или при наличии у компилятора соответствующего расширения. В C89 так нельзя.
А еще в «функциях»-макросах не создать локальных переменных(про C), что приведет функцию в вид фарша.
Данная либа должна компилироваться везде, где только есть более-менее работающий C, поэтому доверить inline компилятору я не могу.
По причине того что inline лишь «рекомендует» компилятору заинлайнить функцию, кроме того это код на C89.
Кроме того, от разделения конкретно этой функции на «действия» станет только непонятнее ее работа.
Полностью согласен с автором, я начинал с BASIC, а если бы надо было ставить всякие Node js/gcc/git/..., колдовать с командной строкой, вводя магические символы, мучиться от неверных переменных окружения, и производить запуск/компиляцию с помощью кучки MAKE/bat/sh файлов, то я бы мог просто сдаться, так и не написав совой первый «Hello World!».

Про встроенные средства программирования — эх… раньше, ты включал компьютер, и он буквально приглашал тебя творить, мигая курсором во встроенном бейсике, или давая возможность его запустить всего одной командой. А сейчас — компьютер, это устройство потребления контента, даже пейнт выпилили из винды, т.к. большинство даже нарисовать рожицу в пейнте не хотят, лучше в котиков/сериалы/игры позалипать.
Безусловно, есть и бОльшие функции нежели эта, данная функция пример функции имеющей большой «когнитивный» размер — очень много надо неочевидных связей держать в голове, написать ее было сложно, читать спустя время — не менее сложно. При том что имел дело с функциями под 700 строк, но достаточно линейными, чтобы не вызывать сложностей в написании/чтении.
Я бы рад не писать таких огромных функций, с кучей сущностей, однако далеко не всегда вызов функции «бесплатен».
код
// BEGIN $RawMaskBlit(WriteByte1, WriteByte2, WriteByte3, WriteByte4)$. Do not change this line!
void ZXRawMaskBlitCopy(ZXBitmapRef bitmap, int x, int y,
                   ZXBitmapRef src, int srcX, int srcY, int srcWidth, int srcHeight, ZXData maskData)
{
    /* dest and src */
    ZXData pScan, pSrcScan, pMaskScan, pScanEnd;
    ZXData p, pSrc, pMask;
    unsigned char b, m;
    int scan, srcScan;
    /* offsets, flags, etc */
    int offset, srcOffset, endPixels;
    int fullBytes, endLine;
    int compRealOffset, realOffset;
    int isRegular;
    
    /* calculate the sizes of scan lines */
    scan = BitmapScanSize(bitmap);
    srcScan = BitmapScanSize(src);
    
    /* get pointers to a byte corresponding to a pixel */
    pScan = BitmapPixelPtr(bitmap, x, y);
    pSrcScan = BitmapPixelPtr(src, srcX, srcY);
    pMaskScan = PixelPtrData(maskData, srcScan, srcX, srcY);
    /* calculating end vertical line */
    endLine = y + srcHeight;
    
    /* bitmap offset */
    offset = x % 8;
    /* src offset */
    srcOffset = srcX % 8;
    
    /* get information about how much pixels should be shifted, */
    /* important: when (offset < srcOffset) one byte is completely absorbed when outputting the left byte */
    if(offset >= srcOffset)
        realOffset = offset - srcOffset;
    else
        realOffset = 8 - (srcOffset - offset);
    compRealOffset = 8 - realOffset;
    
    /* count of full-size bytes */
    fullBytes = CalcFullBytes(x, srcWidth);
    /* offset end pixel */
    endPixels = (x + srcWidth) % 8;
    /* regular draw or not */
    /* a) snap to right colum */
    /* b) snap to left colum */
    isRegular = (offset + srcWidth >= 8) || (offset == 0);
    
    /* main loop y */
    for(; y < endLine; y++) {
        p = pScan;
        pSrc = pSrcScan;
        pMask = pMaskScan;
        
        /* take care of left byte */
        /* xxxxxxxx XXXXXXXX xxxxxxxx */
        /* ^ we here */
        if(offset != 0) {
            if (offset >= srcOffset) {
                b = *pSrc >> realOffset;
                m = *pMask >> realOffset;
                
                /* need next byte if we haven't real offset */
                if(realOffset == 0) {
                    pSrc++;
                    pMask++;
                }
            }
            else {
                b = (*pSrc << compRealOffset) |
                (*(pSrc + 1) >> realOffset);
                m = (*pMask << compRealOffset) |
                (*(pMask + 1) >> realOffset);
                /* we completely used a byte, take a new */
                pSrc++;
                pMask++;
            }
            
            /* combine dest and src */
            if(isRegular) {
                b = (*p & rByte[offset]) | (b & lByte[offset]);/* $WriteByte1$ */
                *p = (*p & ~m) | (b & m);
            }
            else {
                b = (*p & ~(rByte[srcWidth] >> offset)) | (b & (rByte[srcWidth] >> offset));/* $WriteByte2$ */
                *p = (*p & ~m) | (b & m);
            }
            
            p++;
        }
        
        /* main loop x */
        /* xxxxxxxx XXXXXXXX xxxxxxxx */
        /*          ^ we here */
        pScanEnd = p + fullBytes;
        if(realOffset != 0) {
            for(; p < pScanEnd; p++) {
                b = (*pSrc << compRealOffset) |
                (*(pSrc + 1) >> realOffset);
                m = (*pMask << compRealOffset) |
                (*(pMask + 1) >> realOffset);
                
                /* combine dest and src */
                b = b; /* $WriteByte3$ */
                *p = (*p & (~m)) | (b & m);
                
                pSrc++;
                pMask++;
            }
        }
        else {
            for(; p < pScanEnd; p++) {
                b = *pSrc;
                m = *pMask;
                
                /* combine dest and src */
                b = b; /* $WriteByte3$ */
                *p = (*p & (~m)) | (b & m);
                
                pSrc++;
                pMask++;
            }
        }
        
        /* take care of right byte */
        /* xxxxxxxx XXXXXXXX xxxxxxxx */
        /*                   ^ we here */
        if(isRegular && endPixels) {
            if(realOffset != 0) {
                b = *pSrc << compRealOffset;
                m = *pMask << compRealOffset;
                /* .. end pixel is double byte src */
                if(endPixels > realOffset) {
                    b |= *(pSrc + 1) >> realOffset;
                    m |= *(pMask + 1) >> realOffset;
                }
            }
            else {
                b = *pSrc;
                m = *pMask;
            }
            
            /* combine dest and src */
            b = (*p & lByte[endPixels]) | (b & rByte[endPixels]);  /* $WriteByte4$ */
            *p = (*p & (~m)) | (b & m);
        }
        pScan += scan;
        pSrcScan += srcScan;
        pMaskScan += srcScan;
    }
}
// END $RawMaskBlit$. Do not change this line!

ТРИЗ еще при Сталине начали разрабатывать в СССР!

Вот это аргумент, а ещё при Сталине запретили генетику, и объявили о том что Ленин жив.
Я так понимаю на проводе поколение ЕГЭ? Ник как бэ подтверждает это.

Именно, а ещё я благодарен ЕГЭ что смог поступить в ВУЗ, находящийся в другом городе, что без ЕГЭ было бы невозможно.
Я смотрю появилась очередная разрекламированная фигня — «ТРИЗ». Для понимания которой конечно же надо пройти платные курсы.
А вот и первые отголоски ардруинозации повсеместной, промышленный девайс представляет из себя — набор шилдов.
Какой же убогий весь этот новый модный дизайн.
Вот выложу я кусочек фильма с моим лицом, а потом ваши же SONY-ковские копирасты, на мой канал на ютубе наедут.
Здесь должна быть шутка про то, что «все азиаты на одно лицо». Но ее здесь нет.

Информация

В рейтинге
4 766-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность

Специализация

Разработчик приложений, Траблшутер
От 4 000 $