Search
Write a publication
Pull to refresh
0
0
Игорь @xrd

User

Send message

Загрузка файлов с помощью html5 File API, с преферансом и танцовщицами

Reading time7 min
Views45K

Предисловие


Загрузка файлов всегда занимала особое место в веб-разработке.
О трудности оформления стилями <input type=file/> уже сказано немало, почитать об этом можно, например, по ссылкам раз, два, три, четыре, пять, шесть.
Но и сам процесс загрузки файлов нетривиален, есть много разных способов – и ни одного идеального.

Я уже писал о внедрении на нашем проекте Файлы@Mail.Ru silverlight-загрузчика полгода назад. На тот момент у нас подерживались iframe, flash, silverlight и обычная загрузка файлов. Но прогресс не стоит на месте, и вот уже последние бета-версии всеми горячо любимых браузеров в полной мере поддерживают html5 FileAPI (справедливости ради, стоит заметить, что, как обычно, некоторые поддерживают своеобразно, но об этом — ниже).

Пока писалась статья, Chrome 9 был объявлен stable и форсировано обновился уже на 75% установок 8 версии. Так, что празднуем поддержку File API первым стабильным браузером, ура!

Мы подумали, что не использовать такую технологию было бы преступлением против юзеров пользователей.
Подумали — и внедрили html5 загрузку в дополнение к уже существующим вариантам.
В итоге наши пользователи получили множество плюшек:
— прозрачная дозагрузка после обрыва соединения (и даже рестарта браузера!);
— очередь загрузки;
— прогресс-бар (пользователи MacOS и Safari наконец могут видеть прогресс без всяких инородных плагинов), возможность удаления файлов из очереди, если передумал.
Как это устроено.

Прощай, салфетки, или как избавиться от глянца ноутбука

Reading time4 min
Views47K
Thinkpad SL400
Тебе, %username%, нравятся глянцевые ноутбуки, на которых остаются следы от любого прикосновения? — Меня они очень раздражают.

Да, конечно, глянцевый ноутбук привлекательно смотрится на витрине: такой черный, красивый, блестящий, шикарный…. Однако, все мы знаем, что случается с этой красотой не то что через месяц, а через неделю активного использования. Никаких салфеток не напасешься, чтобы ноутбук выглядел не заляпанным, а все таким же шикарным.
Так что же делать с этим глянцем, кроме как закупить чистящие средства и те самые салфетки? Как вариант – выбросить продать и купить матовый. Но что, если нравится именно эта модель по остальным параметрам?
Еще один выход – ошкурить и превратить в матовый. Есть такие навыки, чтобы получилось аккуратно и без травм для любимой техники?
Ну и конечно, можно просто не обращать внимания, что каждое касание оставляет следы на крышке ноутбука, и заняться на досуге дактилоскопией: Кто трогал мой ноутбук? Кто сидел на моем стуле? А также забыть про мелкие очаровательные царапинки, которые со временем станут очень заметными на глянцевой поверхности.
Хочу предложить еще один способ защиты глянцевого ноутбука

Python(x, y)

Reading time9 min
Views54K
imagePython(x, y) — набор библиотек и программного обеспечения для численных расчетов, анализа и визуализации данных на основе Python. IDE представлены IDLE, Eclipse и Spyder, основой GUI избран Qt. Я расскажу вкратце о модулях, относящихся к самому Python, приведу несколько примеров их работы. Во время установки можно выбрать только то, что нужно, поэтому стоит разобраться что к этому нужному отнести. Кроме того, рассказ о модулях может пригодиться и сам по себе, поскольку их можно установить и по отдельности. Порядок следования модулей повторяет порядок оригинальной страницы и список чекбоксов установки.
Читать дальше →

Web – P2P — Web

Reading time6 min
Views15K
Доброе время суток, дорогой %username%.

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

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

Если интересно — welcome под кат.
Читать дальше →

Upgrade

Reading time7 min
Views2.9K
Привет, олл!

Наверняка, многие из вас заметили, что в последнее время попытки контроля интернета все усиливаются и усиливаются, тому есть множество примеров — начиная от закрытия torrents.ru без суда и следствия(а ведь они сотрудничают с правообладателями!!) до демонстрационных отловов разных хакеров, что б другие сидели тише. Ага. Хрен вам.

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

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

Осторожно — много текста без картинок.
Читать дальше →

Радионаушники из FM-трансмиттера

Reading time2 min
Views58K

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

Закономерно появилось понимание, что фильмы, наверное, удобнее смотреть в наушниках. Рассматривал такие варианты:
  • удлинитель: фильмы просматриваются как минимум вдвоем, да и не спортивно это, висящие провода;
  • BlueTooth: нужно как минимум двое недешёвых наушников, да и неизвестно еще, удастся ли их подключить одновременно;
  • Wi-Fi: дома есть два ноутбука и один коммуникатор. Пробовал настроить сетевое вещание, однако рассинхронизацию звука и изображения победить так и не удалось, вариант отпал;
  • И тут я вспомнил, что есть такая замечательная вещь, как автомобильный FM-трансмиттер.

Читать дальше →

Мои принципы бизнеса

Reading time6 min
Views5.5K
Вот уже более 10 лет как я создал и руковожу компанией, которая занимается системной интеграцией. За это время я сформировал для себя определенные правила, которые помогают моему бизнесу расти и развиваться. Возможно, они буду полезны для тех, кто уже открыл или только собирается открыть свой бизнес.
Читать дальше →

Лабораторный источник постоянного напряжения из блока питания

Reading time4 min
Views436K
image

Несколько недель назад мне для некого опыта потребовался источник постоянного напряжения 7V и силой тока в 5A. Тут-же отправился на поиски нужного БП в подсобку, но такого там не нашлось. Спустя пару минут я вспомнил о том, что под руки в подсобке попадался блок питания компьютера, а ведь это идеальный вариант! Пораскинув мозгами собрал в кучу идеи и уже через 10 минут процесс начался.
Читать дальше →

Первая статистика работы облака

Reading time2 min
Views11K
Итак, месяц с момента начала работы. (Рекламу мы начали несколько позже, но первые клиенты появились как раз месяц назад), появилась возможность посмотреть на первые цифры.

Примерно 47% заказанных клиентами виртуальных машин выключены владельцами. Величина меняется от 38% вечернее время до 58% в ночное.

При анализе статистики я разделил клиентов на две группы — одни реально используют машину в работе, другие — нет (вероятнее всего, это те, кто пришёл «посмотреть»).

Среди реально использующихся самая «дорогая» машина обошлась клиенту в 1138 рублей за месяц, распределение расходов было следующим:

Ресурс количество Сумма
Машинное время 158.94 часа 158.94 руб
Оперативная память 304.01 Гб *ч 152 руб
Диск: запросов на чтение 92.016 млн. шт. 276.04 руб.
Диск: запросов на запись 12.641 млн. шт. 37.92 руб.
Диск: прочитанный объём 2167.308 Гб 216.73 руб.
Диск: записанный объём 269.513 Гб 26.95 руб.
Хранение диска 22.110 Тб * час 110.55 руб.
Сеть: получено 54.187 Гб 10.83 руб.
Сеть: отправлено 148.426 Гб 148.42 руб.


Эта машина работает с настройками Debian Squeeze (32), автоматически регулируемая память от 256 до 2048 Мб, диск 30Гб. Судя по загрузке, которую я могу видеть снаружи, вполне себе так работает, процессор показывает загрузку, прыгающую от 10 до 60%, диски шуршат, сеть активна.

Самая дешёвая машина среди «активных» съела примерно 200 рублей (апроксимируем, так как эта машина работает только три недели).

Среди простаивающих машин цифры куда меньше (при примерно таких же настройках). Самая дешёвая машина (видимо, клиент потестил, выключил и решил оставить «на всякий случай») обошлась клиенту в 15 рублей — её выключили в первый день и с тех пор считается там только хранение дисков. Самая дорогая — в 170 рублей (клиент зачем-то сделал диск на 200Гб и периодически включает/выключает. Бэкапы?).

Расшарьте свой локальный веб-сервер в Интернете с помощью localtunnel

Reading time1 min
Views17K
Иногда во время тестирования веб-приложений может понадобится доступ к ним снаружи (то есть из публичного Интернета). Например некоторые API используют коллбеки.

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

Но не всегда найдется такая машина, и влом покупать VPS или что-то в этом роде. В таком случае localtunnel — как раз то что надо.

localtunnel — инструмент специально предназначеный для того чтоб временно расшарить локальный веб-сервер в Интернете. Он работает как клиент к публичному сервису обратного туннелирования с открытыми исходниками.

Использовать его очень просто:

localtunnel 8080

Эта команда сделает локальный сервис на порту 8080 доступным на порту 80 на домене который выведет утилита.

Конечно перед использованием все-таки надо устанавить и настроить программу.
Установка для всех пользователей:

sudo gem install localtunnel

После этого при первом запуске нужно указать свой публичный ключ для аутентификации:

localtunnel -k ~/.ssh/id_rsa.pub 8080

Если у вас нет готовых ключей для SSH, их можно сгенерировать такой командой:

ssh-keygen -t rsa

Больше информации (на английском) и исходники – на Гитхабе.

UPD: Вышенаписанное справедливо для Unix-систем. В Windows наверное может работать через Cygwin.

This is my way to China (part 3)

Reading time5 min
Views1.7K
После долгого перерыва — продолжаю свой рассказ. Начало — здесь и здесь. Конечно же, решение лежало на поверхности — придумать свою торговую марку, упаковку, а изготовление продукции — разместить по методу OEM (original equipment manufacturer) на специализированных фабриках и потом продвигать ее в России. Но это в теории все выглядит легко, а на практике нам пришлось попотеть изрядно.
Читать дальше →

Сенсорный выключатель — в каждый светильник

Reading time3 min
Views87K

Случилось так, что мы с женой купили светильники, чтоб поставить на тумбочках возле кровати. И всем были хороши светильники, кроме одного — выключатель у них был только на шнуре, и чтоб выключить или включить его — приходилось бы лезть за тумбочку в поисках этого выключателя. Поэтому решил я светильники модернизировать, но не тут то было — жена запретила мне их сверлить, мол испортишь внешний вид, они денег стоят! Ну я ее конечно понимаю, после моих экспериментов по переделке люстры… но тут история не об этом.
Тогда решил я, что надо ставить в светильники сенсорные выключатели — для них дырок сверлить не надо, да и просто — идея включать свет прикосновением очень понравилась.
Читать дальше →

Генерирование изображений-заглушек

Reading time3 min
Views59K
Сегодня мне кинули ссылку на прикольный сервис для быстрого генерирования изображений-заглушек. Может пригодиться для html-верстки. На мой взгляд, это удобно тем, кто и так использует заглушки — экономит время при вёрстке, т.к. сами заглушки уже готовы. Можно цвета/размеры подбирать, меняя только числа/буквы в коде, не отвлекаясь на сам файл картинки — и сразу видеть эффект. И сами размеры видеть написанными, если нужно, чтоб к коду не возвращаться для проверки. Или вместо размеров можно текст добавить, чтоб всегда знать, для чего эта заглушка (типа «Бан(н)ер» или там «Лого», или «Фотография»).

На сервисе не нужна регистрация — и вообще на сайт можно не заходить, чтобы его использовать. Пишете сразу у себя в коде, например:
<img src="http://placehold.it/350x50" />
и получаете:


Update. Благодаря усилиям k0rv1n, найден вариант этого сервиса, только лучше :)
Во-первых, там поддерживается кириллица. Во-вторых, там даны ссылки на исходники для разных языков.
Автор dummyimage.com — тот же Russell Heimlich, что и у placehold.it. У placehold.it есть ещё один автор, но будем считать, что он делал дизайн (дизайн там правда круче, но видимо как раз из-за понтового шрифта Unicode и не выходил).

Примеры (см. под хабракатом) я поменял с placehold.it на dummyimage.com, раз уж он функциональнее…
Ещё насколько примеров под катом

Связываем домен и динамический IP

Reading time2 min
Views171K
Что мы имеем:
1. компьютер с осью и установленными mysql, apache, php (тут ничего писать не буду, благо мануалов хватает)
2. интернет с присваиваемым динамическим IP, роутер.

Что мы хотим:
1. Что бы люди вбивая в адресную строку браузера доменное имя второго уровня (купленное нами или полученное на каком либо сервисе), попадали на наш сайт (в независимости от того на каком IP он сейчас находиться).
2. Хотим это бесплатно.

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

Читать дальше →

Пишем себе немного OpenID-авторизации

Reading time10 min
Views9.8K
image

Взгляд в будущее


    В последнее время всякие социальные сети и вообще сервисы-лидеры интернета по посещаемости и количеству аккаунтов завели очень неплохую, на мой взгляд, привычку — предоставление уникальных OpenID-идентификаторов для пользователей, дабы с их использованием можно было зайти на сторонний сайт. Кроме того, параллельно развивается очень похожая, но все-таки не совсем производная технология OAuth, которая появилась на свет благодаря стараниям создателей небезызвестного Twitter и, цитируя википедию, «позволяет предоставить третьей стороне доступ к защищенным ресурсам пользователя, без необходимости передавать ей (третьей стороне) логин и пароль».
    Лично меня такая тенденция очень радует и, более того, я почти уверен, что за подобной технологией будущее. В частности, в будущем обязательно появятся новые мэшапы для агрегирования информации с кучи сайтов (в частности, хочется вспомнить очень хороший, но несправедливо забытый сервис Yahoo Pipes, который так и не смог покорить сердца и умы просто потому, что его время тогда еще не пришло. Возможно, все еще впереди), а именно такой «форм-фактор» требует логина на кучу сервисов сразу.
Читать дальше →

5 галочек: чеклист юзабилити

Reading time6 min
Views30K
Мы выделили 5 основных пунктов, по которым можно определить юзабилити сайта. Список спорный и в основном касается продающих сайтов. И да, эти пять пунктов — среднее арифметическое опыта, полученного при обработке заявок на конкурс «Юзабельный вебпроект». Думаете, мы раздали слонов и забыли?


оригинал картинки

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

Ошибки, само собой, повторялись. Голова пухла, а мы продолжали писать одинаковые комменты. Результатом марафона стал ниже приведенный чеклист.

Сразу оговоримся, что мы не оцениваем юзабилити в вакууме, нам важно, чтобы сайт работал, т.е. «продавал». Товары, услуги, идеи — не важно. Речь может идти о бесплатном веб-сервисе, для которого транзакцией станет регистрация посетителя.
Читать дальше →

Из России с торрентом: онлайн просмотр торрентов и не только

Reading time1 min
Views1.7K
Добрый день!
Представляю сообществу храбра детище нашей команды разработчиков.
Встречайте MediaGet! media-get.ru
image
Его ранняя сыренькая версия уже была упомянута на хабре.
Сейчас уже программа претерпела множество доработок и в нее были добавлены новые фичи.
Наша задача была сделать торрент-клиент ориентированный как на опытных пользователей торрентов, так и на людей вообще не знакомых с p2p.
Читать дальше →

Как собрать Кубик Рубика 5х5х5 (часть 2)

Reading time4 min
Views13K
Итак, мы постепенно выходим на финишную прямую сборки Кубика Рубика 5х5х5! Осталось дособирать рёбра куба и центральные квадраты. Кроме того, есть программа-эмулятор кубика, так что даже если куба нет, можно попробовать собрать его на ПК.
Ссылка на первую часть





ну и как же собрать кубик?

Как собрать Кубик Рубика 5х5х5 (часть 1)

Reading time8 min
Views42K
В далеком 2008 году в мои руки попал кубик рубика нестандартных размеров. Как собирать такое чудо, я тогда и понятия не имел. Поначалу мы с друзьями собирали его частично, не имея понятий об алгоритме сборки, но потом захотелось всё-таки научиться собирать его полностью. Через гугл я нашёл некоторое подобие алгоритма сборки, но он к сожалению был неполный и грешил неточностями. Некоторое время анализировав нагугленное и алгоритм классической сборки кубика 3х3х3 я осознал полный алгоритм сборки куба не только 5х5х5, но и 4х4х4 (хотя у меня под рукой не было такого куба, я написал программу для моделирования такого кубика в 3D и проверил алгоритм). Всем, кто хотел бы научиться собирать такой кубик — добро пожаловать под кат.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity