Pull to refresh
1
0
AduchiMergen @aduchi

User

Send message

Эффективное изменение размера картинок при помощи ImageMagick

Reading time12 min
Views90K
В наше время всё чаще сайты сталкиваются с необходимостью введения отзывчивого дизайна и отзывчивых картинок – а в связи с этим есть необходимость эффективного изменения размера всех картинок. Система должна работать так, чтобы каждому пользователю по запросу отправлялась картинка нужного размера – маленькие для пользователей с небольшими экранами, большие – для больших экранов.

Веб таким образом работает отлично, но для доставки картинок разных размеров разным пользователям необходимо все эти картинки сначала создать.

Множество инструментов занимается изменением размера, но слишком часто они выдают большие файлы, аннулирующие выигрыш в быстродействии, который должен приходить вместе с отзывчивыми картинками. Давайте рассмотрим, как при помощи ImageMagick, инструмента командной строки, быстренько изменять размеры картинок, сохраняя превосходное качество и получая файлы небольших объёмов.

Большие картинки == большие проблемы


Средняя веб-страница весит 2 Мб, из них 2/3 – картинки. Миллионы людей ходят в интернет через 3G, или ещё хуже. 2Мб-сайты в этих случаях работают ужасно. Даже на быстром соединении такие сайты могут израсходовать лимиты трафика. Работа веб-дизайнеров и разработчиков – упростить и улучшить жизнь пользователя.

image

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

ImageMagick


Утилита командной строки с 25-летним стажем в то же время является редактором картинок с полным набором функций. В ней огромная куча функций, и среди них – быстрое и автоматическое изменение размера картинок. Но с настройками по умолчанию файлы часто получаются излишне большими – иногда по объёму больше оригинала, хотя в них и меньше пикселей. Сейчас я объясню, в чём проблема, и покажу, какие настройки необходимы для её решения.
Читать дальше →

ИТ-инфраструктура одной государственной бюджетной образовательной организации

Reading time12 min
Views31K
Здравствуйте!
Основной целью статьи является осветить вопрос развития ИТ-инфраструктуры одной государственной бюджетной образовательной организации в условиях ограничения бюджета.

Цель публикации


1. поделиться опытом;
2. по возможности, получить отзывы и рекомендации.

Введение


Ни для кого не секрет, что движителем развития ИТ в организации могут быть:
А) отдел ИТ (или его представители).
Б) бизнес (или его представители).

В любом из двух крайних положений – это плохо! Решение находиться где-то посередине. На стыке бизнеса и представителей ИТ – тех, кто зарабатывает деньги и тех, кто создает условия для того, чтобы можно было зарабатывать деньги комфортно, безопасно, надежно, стабильно, много и т.д.

Для решения любой проблемы необходимо сделать первый шаг – признать ее существование (проблемы). Затем планомерно выполнить следующее:
А) описать ее, понять причины;
Б) поставить задачи по устранению причин и недопущению их в будущем;
В) решать поставленные задачи и отслеживать, контролировать состояние, поддерживая его в стабильном положении.
Это все лирика теория. Переходим к практике.
Читать дальше →

Сервис планирования Умного Дома

Reading time3 min
Views12K
image

Как вы думаете, что является основным сдерживающим фактором массового внедрения домашней автоматики?
Когда-то я думал, что высокая стоимость компонентов. Но прошло время, на сегодняшний день существуют варианты решений сопоставимые по цене со смартфоном, а Умные дома по-прежнему остаются диковинкой. Возможно проблема в сложности технологий? Отнюдь — управляться с Умным Домом зачастую гораздо проще, чем с телевизором или стиральной машиной.
Читать дальше →

Обзор способов и протоколов аутентификации в веб-приложениях

Reading time18 min
Views675K


Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.

Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.

  • Идентификация — это заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, итд.
  • Аутентификация — предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались (от слова “authentic” — истинный, подлинный).
  • Авторизация — проверка, что вам разрешен доступ к запрашиваемому ресурсу.


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

Аналогично эти термины применяются в компьютерных системах, где традиционно под идентификацией понимают получение вашей учетной записи (identity) по username или email; под аутентификацией — проверку, что вы знаете пароль от этой учетной записи, а под авторизацией — проверку вашей роли в системе и решение о предоставлении доступа к запрошенной странице или ресурсу.

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

Концепт: самогонный аппарат — полный автомат

Reading time16 min
Views76K
image

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

Под концептом подразумевается то, что система находится в стадии разработки, но имеет законченную структурную идею, и не претендует на то, что она работает на 100%. В действительности, когда реально начинаешь собирать устройство, где-нибудь что-нибудь точно да откажет: или драйвер не заработает, или температура неправильно рассчитана. Поэтому концепт — он и в Африке концепт.

Что касается алгоритма работы, то по температурам задатчиков он рабочий. Взят алгоритм из других источников и форумов. Собиралось по крупицам. Временные интервалы взяты с запасом и зависят от объема перегонного куба. Мой куб планируется литров на 20-25. Для куба объемом 5 литров (от скороварки), естественно, временные интервалы будут другими, заведомо меньшие.
Читать дальше →

Проектирование микросервиса

Reading time3 min
Views31K
В предыдущей публикации я писал о плюсах использования микросервисной архитектуры. Сейчас же хочу описать процесс создания одного полезного микросервиса. Забегая вперед, скажу, что будет еще одна «микросервисная» статья, посвященная печальному результату погони за технологией, а не за смыслом.

Задача


В тестовом заданий от компании Wheely мне предстояло реализовать аутентификацю через код в смс-сообщении. Суть процесса в следующем:
  1. Пользователь совершаете какое-либо действие.
  2. Для подтверждения этого действия генерируется код.
  3. Код отправляется в СМС-сообщении.
  4. Пользователь указывает ключ.
  5. Ключ проверяется на соответствие.

Результатом должно было стать самостоятельное приложение, которое выполняет задачи, обозначенные в пунктах 2, 3 (только имитация), 5. Пины становятся не актуальны через 2 минуты после генерации. Все остальное на мое усмотрение.

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

Свой облачный хостинг за 5 минут. Часть 1: Ansible, Docker, Docker Swarm

Reading time11 min
Views138K
Cloud hosting

Привет Хабр! Последние 1.5 года я работал над своим проектом, которому был необходим надежный облачный хостинг. До этого момента я больше 10 лет занимался веб-программированием и когда я решил построить свой хостинг у меня были относительно поверхностные знания в этой области, я и сейчас не являюсь системным администратором. Все что я буду рассказывать может выполнить обычный программист в течение 5 минут, просто запустив набор сценариев для Ansible, которые я подготовил специально для вас и выложил на GitHub.
Читать дальше →

Создание масштабируемого распределенного приложения с нуля

Reading time6 min
Views25K

Как это начиналось


Я всю жизнь занимался разработкой под Windows. Сначала на С++, затем на C#. В промежутках мелькали VB, Java Script и другая нечисть. Однако некоторое время назад всё изменилось и я впервые столкнулся с миром Linux, Java и Scala. У нас с Денисом, моим другом и соратником по многочисленным идеям, уже был свой проект – набор утилит для Windows, который пользовался широким спросом в узких кругах. В какой-то момент мы оба потеряли интерес к этому проекту и встал вопрос – что же делать дальше. Денис стал инициатором идеи нового проекта – сервис по обмену clipboard между разными устройствами. Этот проект существенно отличался от предыдущего помимо технологий ещё и целевой аудиторией. Этот сервис должен был стать полезен всем. Скопируйте данные в буфер обмена и вставьте из него на любом другом устройстве. Звучит проще некуда, пока не задумаешься над тем сколько сейчас разных устройств, а также как это все будет работать при большом количестве пользователей.
Первый прототип появился через несколько месяцев. Сервер был написан на ASP.NET и хостился на MS IIS. Было написано 2 клиента: на С++ под Windows и на Java под Android.



Тестирование показало, что прототип держит около 500 соединений. Что же делать, если их будет больше, мы ведь расчитываем на сотни тысяч пользователей ;) Как написать сервер, который может работать с большим количеством соединений, который не надо будет выключать во время апгрейда железа или софта и который будет легко масштабироваться (то есть расширяться в случае увелечения количества пользователей).
Читать дальше →

Простыми словами о Twelve-Factor App

Reading time5 min
Views74K
Известный провайдер heroku поддерживает манифест, который называется «12-факторное приложение» (Twelve-Factor App). Это набор лучших практик для разработки современных веб приложений на любой платформе. Практики описывают приложения, которые готовы:
  • к горизонтальному масштабированию;
  • к непрерывному развертыванию;
  • к современным облачным хостингам.

Можно считать, что манифест отчасти рекламный — 12-факторные приложения удобней всего разворачивать на heroku. Но поскольку, манифест становиться все популярней, то часть облачных провайдеров включают лучшие практики в свое окружение, и эти практики будут полезны как разработчикам, так и тем, кто разворачивает и администрирует приложения.

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

Лекции по биоинформатике

Reading time11 min
Views27K


Рад представить вам 27 лекций по биоинформатике (включая описания, слайды и полные видеозаписи). Лекции читались на летней школе по биоинформатике, которая проходила в июле 2014 под Санкт-Петербургом, собрала вместе 100 студентов со всей России и СНГ, а также лекторов из МГУ, МФТИ, Сколтеха, РАН, СПбАУ, СПбГПУ, СПбГУ, Yale University, Fox Chase Cancer Center, George Washington University, Pennsylvania State и других прекрасных организаций.

Школу традиционно проводила команда Института биоинформатики, а поддерживали ее СПбАУ РАН, СПбГУ, JetBrains, РВК, BIOCAD, EMC, Фонд «Династия» и РФФИ, благодаря чему удалось сделать мероприятие абсолютно бесплатным для всех участников.
Смотреть лекции, узнавать новое

Сайт с нуля на полном стеке БЭМ-технологий. Методология Яндекса

Reading time29 min
Views108K
На прошлой неделе BBC рассказала, что для новой версии главной страницы использовала методологию БЭМ, созданную в Яндексе. По такому случаю мы решили поднять материалы мастер-класса «Разрабатываем сайт с нуля на полном стеке БЭМ-технологий» и рассказать вам, как начать использовать полный стек БЭМ-технологий в своих проектах.

БЭМ упрощает разработку сайтов, которые нужно быстро создавать и долго поддерживать. Эту технологию используют во фронтенде почти всех сервисов Яндекса, и она уже успела обрасти множеством библиотек и инструментов, которыми мы хотим с вами поделиться.



В статье мы расскажем, в чём преимущество вёрстки независимыми блоками и что такое уровни переопределения, познакомимся с готовыми библиотеками блоков и инструментами для автоматизации сборки. Покажем, как разные инструменты — например, autoprefixer, css-препроцессор Stylus или модульная система YModules — упрощают жизнь разработчика и создают по-настоящему удобную платформу, если встроить их в процесс разработки по БЭМ.

На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JavaScript. Отдельно остановимся на декларативных шаблонах BEMHTML и BEMTREE, которые позволяют преобразовывать данные в БЭМ-дерево, описанное в формате BEMJSON и, затем в HTML. Рассмотрим в деталях, как написать серверную часть приложения по БЭМ-методологии.
Читать дальше →

Shopozz.com — бесплатный mail forwarding в США (Дубль два)

Reading time4 min
Views5.6K
Данный текст уже публиковался в блоге Shopozz.com на Хабре. Считаем вполне разумным опубликовать его и на Geektimes, чтобы у наших новых читателей не возникало вопросов о специфике деятельности компании, тарифах и тому подобных. Итак,




Вместо предисловия


Mail forwarding — почтовое перенаправление товаров из любых интернет-магазинов/аукционов из страны-отправителя (в данном случае — США) до адреса получателя. Процесс актуален для самостоятельных покупок за рубежом.

Услугами сервисов-mail forwarder'ов пользуются как минимум по двум причинам:

  1. не все интернет-магазины/продавцы с eBay и прочих аукционов/торговых площадок отправляют товары в страну покупателя;
  2. за определенную комиссию клиенты могут собрать на складе таких сервисов несколько товаров из разных интернет-магазинов, объединить их в одну посылку, отправить на свой адрес и сэкономить, тем самым, значительную сумму на доставке товаров.

Вводная часть


Shopozz.com — это абсолютно бесплатный сервис услуг мейл-форвардинга (mail forwarding, MF, виртуальный адрес для самостоятельных покупок) товаров из любых интернет-магазинов и с аукционов США.
Читать дальше →

Как просто написать распределенный веб-сервис на Python + AMQP

Reading time7 min
Views29K
Привет, Хабр. Я уже довольно давно пишу на Python. Недавно пришлось разбираться с RabbitMQ. Мне понравилось. Потому что он без всяких проблем (понятно, что с некоторыми тонкостями) собирается в кластер. Тут я подумал: а неплохо бы его использовать в качестве очереди сообщений в кусочке API проекта, над которым я работаю. Сам API написан на tornado, основная мысль была в исключении блокирующего кода из API. Все синхронные операции выполнялись в пуле тредов.

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

Спустя некоторое время из этого вырос модуль, который берет на себя всю рутину связанную с AMQP и передачей сообщений туда и назад, а также сжимает их gzipом, если данных слишком много. Так родился crew. Собственно, используя его, мы с вами напишем простой API, который будет состоять из сервера на tornado и простых и незамысловатых «worker» процессов. Забегая вперед скажу, что весь код доступен на github, а то, о чем я буду рассказывать дальше, собрано в папке example.
Читать дальше →

Хороших книг пост

Reading time2 min
Views71K


А давайте давайте соберём здесь хорошие книги, которые просто стоило собрать.
Суть в том, что просто давно стоило сложить хорошие книги в одном посте, чтобы было что прочитать в дороге — или просто для души.
Читать дальше →

Список сервисов 3d-печати

Reading time2 min
Views108K
image

Добрый день всем!


На хабре относительно часто можно увидеть статьи посвященные 3d принтерам, сравнению их цен и возможностям заказа у нас.
А как дело обстоит с готовыми 3д моделями?
Что если я пока не хочу покупать принтер, а «пощупать» напечатанную модель было бы интересно. И желательно выбрать из каталога готовых моделей, а не рисовать самому.
Много ли ресурсов, где их можно скачать, купить или распечатать из каталога?
Отвечая на эти вопросы я и решил сделать небольшой список ресурсов с возможностью выбора готовых моделей и заказа печати.

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

Очень быстрый и эффективный способ расслабления глаз

Reading time4 min
Views416K

Предисловие


imageНе знаю, все ли программисты всесторонне любознательные люди, но я всегда пытаюсь получить фундаментальные знания во всех областях, которые могут быть практически полезны. В то время, когда мне в голову пришла эта идея я изучал анатомию и физиологию по журналам «Тело человека. Снаружи и внутри», ну а по работе я занимался стерео-варио фотографиями (для тех кто не знает — были такие советские календарики с ребристой поверхностью, где картинка либо казалась объемной, либо менялась). Так вот, в один из вечеров мне пришла в голову замечательная идея, которую я на протяжении уже 4х лет использую для поддержания своего зрения.
Обещаю, что эффект почувствуете сразу!
Читать дальше →

Государь: алгоритм

Reading time3 min
Views4.2K
«Государь» Макиавелли — одно из моих самых любимых произведений. Являясь руководством непосредственно правителю, я считаю, эту книгу обязан прочесть каждый начальник/директор. И хотя она уже устарела, думаю было бы весьма полезно держать ее советы у себя в голове.

Но бывает тяжеловато. Не только из-за объема информации, но еще и потому, что в зависимости от ситуации Макиавелли дает разные советы.

«Было бы неплохо структурировать», — подумал я.

Результатом мысли стал алгоритм принятия решения, представленный в картинке ниже и созданный исключительно по «Государю». Остальные советы, которые не определены ни под одну ситуацию и которые должны выполняться в любом случае, поданы ниже списком. Уверен, каждый сам сможет экстраполировать рекомендации правителю на должность руководителя.

Под катом картинка 1920x1573 px

Layout страницы за 5 секунд

Reading time1 min
Views1.7K
www.layzilla.com

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

Можно создавать основу страницы проекта любой сложности.

В будущем сделаем поддержку HTML5.

Мануал для любителей почитать.

Веб-интерфейсы: развитие или наоборот?

Reading time9 min
Views19K
Уже давно крутятся мысли по поводу пользовательских интерфейсах и о их деградации развитии конечно же, ими то я и хочу сегодня поделиться. Многие помнят старые интерфейсы с псевдографикой в текстовом режиме со скупым функционалом и ограниченным юзабилити. Потом им на смену пришли оконные интерфейсы в графическом режиме и теперь уже веб-интерфейсы. Но повысилась ли скорость работы потребителей прикладных программ, пользователей и операторов ввода? Повысилась ли скорость разработки экранов и отчетов? Многие скажут Вам твердое «нет» — средняя производительность программистов и пользователей снижалась с каждым новым шагом технологий вперед. И для этого есть ряд объективных причин. Кроме них мы сегодня остановимся и на том, как же все-таки поднять сею производительность.
Читать дальше →

Ez-12 Parabolic Reflector Template / Усилитель WiFi сигнала для домашней точки доступа

Reading time1 min
Views2.5K
1. Скачиваете шаблон
2. (можно пропустить, см. примечание) Открываете в редакторе и изменяете размер, сохраняя квадрат квадратным
3. Печатаете на тонком картона (бумага для печати визиток или бумажная папка для документов)
4. Делаете прорези
5. На одну сторону прямоугольной детали (рефлектора) приклеиваете фольгу
6. Собираете, вставляя шесть лепестков в шесть прорезей.

Примечание: Если распечатать оригинального размера — получите усиление сигнала в 9 дБ (8 раз), если увеличите вдвое — 12 Дб (16 раз). Если на роутере две антенны — сделайте по усилителю на каждую.

Примечания переводчика:

7. Наденьте усилитель на антенну роутера :-)

Я сделал из коробки из-под конфет — не мучайтесь поисками бумажных папок из-под документов. Только гофрированный картон не берите, неудобно. ОНО РАБОТАЕТ! Раньше телефон уже на выходе из комнаты терял сеть, теперь в любом углу ютьюб без заиканий играет. Замеров не делал, не обессудьте. Но усилий нужен минимум на изготовление — думаю проще сделать самому и попробовать, чем таблицу с цифрами читать.

P.S. Вот видео:

Information

Rating
Does not participate
Location
Барнаул, Алтайский край, Россия
Date of birth
Registered
Activity