Pull to refresh

Uploadcare — файловое хранилище для сайтов и приложений

Self Promo
image
Привет! Хочу рассказать о проекте, который наверняка окажется полезным многим разработчикам. В двух словах объяснить, зачем он нужен, достаточно сложно, но я попробую. Uploadcare — сервис для приложений и сайтов, упрощающий получение файлов от пользователей, их хранение и передачу по сети.

Тот, кто хоть раз делал форму с <input type="file">, знает, что ничего сложного в этом нет, но есть неприятные моменты, возникающие по пути. Вот только некоторые из них:

— нельзя сохранить форму с файлом по ajax;
— нельзя показать форму с уже выбранным файлом;
— если вы ожидаете картинку, нужно убедиться, что загружена картинка;
— сервер должен быть готов принимать большое тело запроса;
— в некоторых фреймворках загруженный файл является источником повышенной опасности;
— удобная загрузка нескольких файлов реализуется достаточно сложно;
— индикация процесса загрузки реализуется еще сложнее;
— на диске сервера может закончиться место;
Читать дальше →
Total votes 56: ↑49 and ↓7 +42
Views 13K
Comments 44

Хостинг картинок за полчаса

Website development *Python *Django *
Tutorial
Сегодня проекты, особенно на начальном этапе, строятся из готовых блоков. Например, умный хостинг или сервис быстрой отправки сообщений в браузер пользователю. Складывая такие блоки по-разному, можно получить совершенно неожиданный результат. И чем больше разных блоков вам доступно, тем разнообразнее могут получаться проекты. Иногда появляются блоки, которыми можно заменить сразу несколько других блоков. И сами эти блоки — такие же проекты, состоящие из других блоков.

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

Пример будет написан на Питоне. Во-первых, потому что Питон я знаю лучше всего, во-вторых библиотека pyuploadcare обновляется в первую очередь. На самом деле, для Uploadcare есть библиотеки под разные языки, и все они в open source. Если в нужном вам модуле отсутствует какая-то функциональность, можно дождаться, когда она появится, или дописать самому.
Читать дальше →
Total votes 60: ↑53 and ↓7 +46
Views 38K
Comments 18

Интеграция с Cloud Storage

Selectel corporate blog CMS *Website development *
Tutorial
Cloud Storage

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

Создателям сайтов, например, часто приходится сталкиваться с такими проблемами, как нехватка дискового пространства для хранения больших объемов статичного контента, обеспечение безопасности хранения и разграничение доступа, резервное копирование и восстановление данных.
Оригинал в корпоративном блоге Селектела
Читать дальше →
Total votes 28: ↑24 and ↓4 +20
Views 8.4K
Comments 4

Советы основателей. Игорь Дебатур и Анатолий Черняков, сооснователи Whitescape

Project management *GTD *Product Management *


На «Мегамозге» снова «Советы основателя». В этот раз разговор получился необычным, так как своими советами с читателем поделились сразу два сооснователя Whitescape: Игорь Дебатур и Анатолий Черняков.

Компания Whitescape основана в 2008 году Игорем Дебатуром и Анатолием Черняковым. С 2008 года по текущий день Whitescape запустили более 130 веб-проектов и мобильных приложений. Офисы компании находятся в Санкт-Петербурге и Таллине, клиенты — по всему миру.

После Whitescape Толя и Игорь запустили два стартапа: Uploadcare (SAAS решение для веб- и мобильных разработчиков) и RIDERS (сообщество экстремалов). Оба стартапа привлекли инвестиции и активно развиваются.

Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Views 7K
Comments 0

Как я сделал самый быстрый ресайз изображений. Часть 0

High performance *Python *Image processing *

Здравствуйте, меня зовут Саша, я написал самый быстрый ресайз изображений для современных х86 процессоров. Я так утверждаю, поскольку все остальные библиотеки, которые я сумел найти и протестировать, оказались медленнее. Я занялся этой задачей, когда работал над оптимизацией ресайза картинок на лету в Uploadcare. Мы решили открыть код и в результате появился проект Pillow-SIMD. Любой желающий с легкостью может использовать его в приложении на языке Python.


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

Читать дальше →
Total votes 80: ↑79 and ↓1 +78
Views 33K
Comments 67

Как я сделал самый быстрый ресайз изображений. Часть 1, общие оптимизации

High performance *Python *Image processing *C *

В пилотной части я рассказал о задаче как можно подробнее. Рассказ получился долгим и беспредметным — в нем не было ни одной строчки кода. Но без понимания задачи очень сложно заниматься оптимизацией. Конечно, некоторые техники можно применять, имея на руках только код. Например, кешировать вычисления, сокращать ветвления. Но мне кажется, что некоторые вещи без понимания задачи просто никогда не сделать. Это и отличает человека от оптимизирующего компилятора. Поэтому ручная оптимизация все еще играет огромную роль: у компилятора есть только код, а у человека есть понимание задачи. Компилятор не может принять решение, что значение "4" достаточно случайно, а человек может.



Напомню, что речь пойдет об оптимизации операции ресайза изображения методом сверток в реально существующей библиотеке Pillow. Я буду рассказывать о тех изменениях, что я делал несколько лет назад. Но это не будет повторение слово-в-слово: оптимизации будут описаны в порядке, удобном для повествования. Для этих статей я сделал в репозитории отдельную ветку от версии 2.6.2 — именно с этого момента и будет идти повествование.

Читать дальше →
Total votes 48: ↑47 and ↓1 +46
Views 19K
Comments 65