• Десять вопросов о Node.js, на которые вы не сможете ответить
    0

    Так сколько потоков?

  • Десять вопросов о Node.js, на которые вы не сможете ответить
    –2

    Ровно один плюс еще пул это не ровно один.

  • Качественное уменьшение изображений за константное время
    0

    см https://habrahabr.ru/post/340966/#comment_10492298


    Я кстати попробовал RGSS (сэмулировал как мог), результат мне не понравился:


    # coding: utf-8
    from __future__ import division
    
    import sys
    from PIL import Image
    
    im = Image.open(sys.argv[1])
    
    w = 256
    h = int(w / im.width * im.height + 0.5)
    s = im.width / w
    
    im0 = im.transform((w, h), Image.AFFINE,
                       (im.width / w, 0, -s*.35, 0, im.height / h, -s*.15),
                       Image.NEAREST)
    im1 = im.transform((w, h), Image.AFFINE,
                       (im.width / w, 0,  s*.35, 0, im.height / h,  s*.15),
                       Image.NEAREST)
    im2 = im.transform((w, h), Image.AFFINE,
                       (im.width / w, 0,  s*.15, 0, im.height / h, -s*.35),
                       Image.NEAREST)
    im3 = im.transform((w, h), Image.AFFINE,
                       (im.width / w, 0, -s*.15, 0, im.height / h,  s*.35),
                       Image.NEAREST)
    
    Image.blend(
        Image.blend(im0, im1, 0.5),
        Image.blend(im2, im3, 0.5),
        0.5
    ).save('_out.RGSS.png')





  • Качественное уменьшение изображений за константное время
    0
    Основное применение данной техники — это генерация thumbnails.

    Ну вы снова придумали. Для тумбнейлов это не очень подходит, это подходит именно для рендеринга документов (браузеры, фотошопы).

  • Качественное уменьшение изображений за константное время
    0
    Потому что исходные картинки будут в .jpg или .png.

    Я не понял откуда взялось ваше «будут». Исходные картинки могут быть в .jpg или .png. Могут быть загружены час назад, могут быть сгенерированы на лету, может быть все что угодно. И все это никак не связано с ресайзом.

  • Качественное уменьшение изображений за константное время
    0

    А почему я должен «помнить» о декодированиии изображения, если речь о ресайзе?

  • Качественное уменьшение изображений за константное время
    0
    А чем будет плох метод, когда все точки исходного изображения усредняются условно говоря за один проход?

    Тем, что это метод ресайза не за константное время относительно размера исходного изображения.

  • Качественное уменьшение изображений за константное время
    +2

    Так. Размер исходного изображения поменялся, сложность и время нет. Значит сложность относительно исходного размера — константа. Верно же? Или у меня где-то не так написано?

  • Качественное уменьшение изображений за константное время
    +2
    Для него в доке

    Это PHP-стайл: когда делается полурабочая функция, а в документации пишется как именно она сломана. Не хочу никого обидеть, но почему-то в PHP такое встречается очень часто.

  • Качественное уменьшение изображений за константное время
    +2

    У вас в одном примере есть и «конечное» и «целевое» изображение. Я не понимаю откуда куда вы ресазите )

  • Качественное уменьшение изображений за константное время
    +1

    Тут нет опечатки. Время константное относительно разрешения исходного изображения. От разрешения конечного изображения время линейное.

  • Качественное уменьшение изображений за константное время
    0

    Спасибо, добавил в статью.

  • Качественное уменьшение изображений за константное время
    0

    Я ни разу не встречал, чтобы описанный метод назывался суперсемлпнгом (даже не встречал, чтобы он в принципе был где-то реализован). Но если подумать, что делает видеокарта при суперсемплинге? Она из бесконечного кол-ва точек (отренидирить сцену мы можем в бесконечном разрешении) выбирает 4 точки для каждого конечного пикселя, так что да, в каком-то смысле это и есть суперсемплинг.


    В статье я называю суперсемплингом усреднение цвета всех точек, которые попадают под конечный пиксель в масштабе исходного изображения. Это именно то, что делает OpenCV с фильтром INTER_AREA и то, что делает видекарта при суперсемплинге — усредняет цвет нескольких имеющихся у нее точек исходного изображения.

  • Качественное уменьшение изображений за константное время
    +1
    Остались ещё разработчики графического софта, которые не знают, что при уменьшении изображений тупая интерполяция не работает?

    В статье есть не полный список ПО: OpenCV, канва в браузере. Еще я много раз видел, как браузеры используют его для обычных картинок для быстрой черновой отрисовки при изминении размеров, а уже через секунду отрисовывают на чистовую с помощью сверток. Ну а какой-нибудь ИЕ11 использует фиксированное ядро всегда.


    который можно описать гораздо короче

    Вы ошиблись в описании. Уменьшаем не в целое количество раз, а до размера в целое количество раз больше конечного.


    проблемы вызовут тонкие линии на изображении (станут прерывистыми)

    Это можно посмотреть на фотографии схемы метро, там действительно некоторые линии прерываются при 2x.

  • Качественное уменьшение изображений за константное время
    0

    Вот тут есть несколько вариантов, как выбирать точки: https://en.wikipedia.org/wiki/Supersampling#Supersampling_patterns


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

  • Качественное уменьшение изображений за константное время
    0

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


    >>> from PIL import Image
    >>> im = Image.open('pineapple.jpeg'); im.load(); im.size
    (2560, 1600)
    >>> %time im.resize((256, 170), Image.BICUBIC)
    Wall time: 33.2 ms
    
    >>> im = Image.open('space.jpeg'); im.load(); im.size
    (4928, 3280)
    >>> %time im.resize((256, 170), Image.BICUBIC)
    Wall time: 130 ms
  • Качественное уменьшение изображений за константное время
    0

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

  • Root хуже Михалкова
    +1

    Вы не любитель читать комментарии.

  • Root хуже Михалкова
    0

    Вы серьезно? )


    Случай раз: сервер бд. База на отдельном большом диске, система на маленьком. В случае чего можно прицепить к диску новую систему или к системе другой диск (в зависимости от типа чп)


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

  • Root хуже Михалкова
    0

    Вот и верь теперь людям в интернете :-\

  • Root хуже Михалкова
    +1

    Передергиванием занимаюсь, манипуляцией нет. Но это же личное дело каждого, правда?

  • Root хуже Михалкова
    +1

    Согласно российсому законодательству, еще на этапе покупки, 1% места на дисках резервируется для Российского союз правообладателей, президентом которого является некто Н. С. Михалков.

  • Root хуже Михалкова
    +1

    Ох. Похоже вы просто не поняли, при чем тут Михалков. Вот: http://www.bbc.com/russian/russia/2010/10/101026_mikhalkov_dvd_tax.shtml

  • Root хуже Михалкова
    0

    Разница с SSD в том, что в случае SSD вы платите за какой-то объем, который написан на коробке, его и получаете. Пусть там внутри хоть в 10 раз больше чипов. В случае же резервирования диска для рута, вы платите за диск определенного объема, но во многих случаях не можете им воспользоваться полностью.

  • Root хуже Михалкова
    –2

    Благодарю за совет! А что за пистон, чем хорош?

  • Root хуже Михалкова
    0

    Благодарю, дополнил статью

  • Root хуже Михалкова
    +5

    Это действительно имеет значение? 5% останутся 5% при любом размере диска.

  • Root хуже Михалкова
    0

    Российский

  • Root хуже Михалкова
    +4

    Я бы назвал раздел «Последний шанс самоутвердиться для тех, кто уже все знает» )

  • Root хуже Михалкова
    –2

    Вы говорите так навскидку, или увас есть какое-то знание о внутреннем устройстве файловых систем ext?

  • Root хуже Михалкова
    +3
    если полностью забить диск

    Если полностью забить системный диск. Пожалуйста, пишите точнее.

  • Как может вызваться никогда не вызываемая функция?
    –6
    Любой код, вызывающий UB — неправильный.

    Еще раз — почти любой код на Си содержит UB, как минимум из-за прядка вычисления аргументов. Получается «Почти любой код, написанный на Си — неправильный». Так зачем пользоваться таим языком?

  • Как может вызваться никогда не вызываемая функция?
    0

    Ну вот видите, вы даже более полезное применение нашли такому поведению. В чем же тут тогда epic fail?

  • Как может вызваться никогда не вызываемая функция?
    0
    Вызов метода по заведомо нулевому указателю — не ошибка??

    А вдруг нет, если именно такой была цель — вызвать исключение доступа?

  • Как может вызваться никогда не вызываемая функция?
    +6
    Так правильнее будет, не находите?

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


    не заменит неправильное "/2" на "*2"

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

  • Как может вызваться никогда не вызываемая функция?
    +4
    Но мы должны признавать, что с того момента, как мы допустили в коде своей программы неопределённое поведение, оно реально может быть насколько угодно неопределённым.

    Вот тут явная логическая ошибка. Никто не «допускает» в своей программе неопределённое поведение. Программисты пишут код, программист никогда не пишет «неопределенное поведение начинается здесь». В этом коде может быть, а может не быть неопределенного поведения. Код, содержащий неопределенное поведение ничем не отличается от кода, не содержащего его.


    Кто-то конечно может считать, что «настоящий программист» должен помнить наизусть всю спецификацию языка, с которым работает. Проблема в том, что эти 15 человек на планете (попадающие под определение «настоящего программиста») физически не смогут написать весь код, который необходим всему остальному человечеству.


    Конечно, игра «напиши еще одну строчку кода и не отстрели себе голову» — очень увлекательная логическая головоломка. Но я хоть убей не понимаю, как ей пользоваться для написания настоящих приложений в 2017 году.

  • Разбираемся с новым sync.Map в Go 1.9
    +1
    Можно попрогонять так раз 20 и получить совершенно фантатические результаты, от 36.3 до 265.

    Я получаю либо 0, либо 63ns. Если посмотреть time.get_clock_info('clock'), будет видно, что разрешение таймера 1e-06 секунд, то есть 1000 наносекунд. Проверяем:


    In [35]: (time.clock() - time.clock()) * 1e9
    Out[35]: -1000.000000139778

    1000ns / 15 раз = 66.6ns. Так что замерять время выполнения таких быстрых операций отдельно или даже по 15 штук нет никакого смысла — время выполнения меньше разрешения таймера.

  • Разбираемся с новым sync.Map в Go 1.9
    0

    Тоже заинтересовали цифры. Проверил:


    $ ipython
    Python 3.5.3 (default, Apr 22 2017, 00:00:00) 
    Type 'copyright', 'credits' or 'license' for more information
    IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.
    
    In [1]: m = dict(enumerate('abcdefghij'))
    
    In [2]: %timeit m[4]
    38.1 ns ± 0.247 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
    
    In [4]: m = dict((v, v) for v in 'abcdefghij')
    
    In [5]: %timeit m['c']
    35.6 ns ± 0.346 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

    Интересно, в каки условиях могло получиться 150 ns.

  • Ideal OS: перезагрузка десктопных операционных систем (часть 1)
    +1
    чем плох png

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


    Форматы с потерями (такие как JPEG), наоборот, хранят лишь приближенное изображение оригинала, изменяя его таким образом, чтобы оно занимало меньший размер. В случае фотографий размер файла может быть меньше в десять раз без заметных глазу отличий в изображении.

  • Ideal OS: перезагрузка десктопных операционных систем (часть 1)
    +19

    «Господи, почему все так плохо работает! Оформлю-ка своё нытье как статью и прикреплю фотографию экрана в PNG, так будет намного лучше»