Search
Write a publication
Pull to refresh
0
0
Send message

Адаптивная карусель на AngularJS

Reading time9 min
Views12K
       Наверное, каждый начинающий web-разработчик должен написать кривую, с кучей костылей, но свою карусель. Данный материал поможет разобраться с некоторыми тонкостями фреймворка и покажет читателю как сделать карусель «angular way».
       Карусель — элемент web-интерфейса, который поочередно показывает пользователю заранее подготовленные слайды с информацией.

пример карусели

       Готовый проект можно посмотреть тут.
Читать дальше →

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

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

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

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

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


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

image

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

ImageMagick


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

Модули JavaScript

Reading time12 min
Views56K


Это третья публикация по материалам нашей внутренней конференции Sync.NET. Первая публикация была посвящена многопоточности в .NET, вторая — реактивным расширениям.

При разработке front-end части приложения на языке JavaScript, мы можем столкнуться с рядом традиционных проблем. Все они решаются при помощи модульных подходов. Ниже мы рассмотрим самые популярные подходы для описания модулей в JavaScript, которые существуют на сегодняшний день.
Читать дальше →

Отслеживаем состояние Push-уведомлений и новости проекта + UPD RSS

Reading time4 min
Views5.7K
За последние несколько дней в PushAll был реализован функционал отслеживания состояния уведомления и получения ленты канала, которым вы владеете.

Что это нам дает? Теперь, если у вас на сайте есть отправка уведомлений через SMS, вы можете делать так:
  1. Отправляем Push
  2. Через 30-50 секунд проверяем, пришло ли пользователю уведомление, отреагировал ли он на него
  3. Если не пришло, шлем ему SMS, звоним, шлем на почту и т.д.

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

Под катом небольшая документация по использованию и несколько других изменений.
Читать дальше →

Настройка безопасности сайтов на VPS/VDS

Reading time6 min
Views19K
Вы приобрели выделенный или виртуальный сервер, либо слепили свой в домашних условиях. И теперь пришло время задуматься о безопасности сайтов, так как брешь в одном из них может подвергнуть опасности и все остальные.

На хостинге эти проблемы решает сам хостер, а вот на собственном сервере это уже задача администратора. И даже если у Вас хостинг с предустановкой, то вероятность того, что на нем ограничены права для каждого пользователя и сайта маловероятна. Скорее всего Ваш провайдер ограничился установкой стандартных приложений vsftpd, Apache, nginx, php, mysql и тд и тп.

Будем считать, что необходимый комплект на сайте установлен и пришло время позаботиться о безопасности. Если же нет, то находим подходящую инструкцию по «настройке nginx в качестве front-end к apache» и возвращаемся к вопросу безопасности.

Безопасность будем строить из следующих принципов:

Первое это создание пользователей с оболочкой /bin/false на примере vsftpd и proftpd. Это ограничит выполнение скриптов в пределах собственной директории.

Второе разделение пользователей на сайте. Мы сможем запускать наши сайты от имени разных юзеров, и доступ к одному из них, никоим образом не подвергнет опасности другой.

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

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

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

Почему «электронные дневники» до сих пор ненадежны в образовании?

Reading time8 min
Views67K
Добрый день, хабраюзер!


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



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

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

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

Entity Framework или почему я реализую Repository

Reading time4 min
Views22K
Абстракции? Кому нужны абстракции?
EF наикрутейшая ORM от MS. habrahabr.ru/post/157267 это действительно круто. Разработать такую систему очень затратно по всем направлениям. CodeFirs вещь, знания проектирования БД, да какой там! Не нужны сами знания SQL – и это круто. Но так ли все радужно?
Julie Lerman может много рассказать msdn.microsoft.com/en-us/magazine/ff898427.aspx
image
Ничего не напоминает?
Читать дальше →

Эффективная разработка логотипа, часть 1: символы, метафоры и возможности интуиции

Reading time8 min
Views44K
Ни одному дизайнеру не удаётся всё время создавать восхитительные работы. Создание хорошего дизайна требует значительных усилий, но достигать удивительного результата порой получается совершенно не напрягаясь. Многие дизайнеры следуют интуиции во время творческого процесса, и включают общепринятые символы и метафоры в свои работы просто потому, что они «чувствуют» их уместность. Интуицией можно воспользоваться любой, а особенно полезна она в творческой деятельности. Она ведёт дизайнеров к решениям, согласующимся с общепринятыми знаниями.

На дизайн бывает три реакции: да, нет и ОГО! К «ого» и нужно стремиться.

— Милтон Глейзер


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

Интуитивный процесс дизайна


Интуиция – это бессознательное восприятие

— Карл Юнг


Всегда есть люди, отметающие то, что нельзя измерить. Но многие мыслители отдавали должное интуиции. Альберт Эйнштейн, Ричард Бакминстер Фуллер, Карл Юнг, Рэй Бредбери, Стив Джобс и даже Алан Тьюринг, знаменитый логик и криптоаналист, понимали, что математические доказательства основываются на «интуиции и гениальности». Великие мыслители и футуристы отводят интуиции ключевую роль в процессе решения задач. Для дизайнеров интуиция – это не нечто чужеродное, это больше похоже на дыхание. В интуиции, как в воде, плавают многие творцы, в то время, как их интеллект диктует формулу для исполнения и оформления конечного продукта.
Читать дальше →

Использование Log4php в Magento-приложениях

Reading time7 min
Views4.8K
Magento без сомнения является выдающейся системой для построения e-commerce приложений. Принципы, заложенные в ее архитектуру, позволили не только занять первое место рейтинга в своем классе web-приложений и удерживать его многие годы, но, что более важно, сформировать вокруг себя эко-систему разработчиков, создающих для основного функционала расширения, удовлетворяющие самым экзотическим требованиям пользователей. Но вот чего мне сильно очень сильно не хватало в Magento при первом «подходе к снаряду», так это системы логирования уровня Log4php. Поэтому первое расширение, которое было сделано для Magento — это «обертка» для Log4php. Под катом описание того, как мы используем эту «обертку» в наших Magento-проектах.
Читать дальше →

XMPP отстой

Reading time5 min
Views61K
У нас было социальное приложение без чата, 2 недели на его разработку и абсолютно никаких знаний о существующих протоколах для реализации IM. Не то что бы это был необходимый набор для того чтобы выстрелить себе в ногу, но в процессе работы это произошло. Несколько раз.

— Паша, нам нужно сделать чат.
— Да всё просто, у меня тут знакомые использовали XMPP для чата в своём приложении.

Какие у нас были требования? Да ничего особенного, простой обмен сообщениями между пользователями, без групповых разговоров. Платформы: веб (с поддержкой работы через вебсокеты), Android, iOS. Создание пользователей должно автоматически производится только нашим серверным приложением. Конечно неплохо было бы иметь отметки о том прочитано сообщение или нет(предполагается, что приложение может быть использовано с разных девайсов), и иметь возможность просмотреть лог чата. В общем стандартный функционал для мгновенного обмена сообщениями в 2015 году. Бонусные баллы начисляются если сервер умеет горизонтально масштабироваться.
Читать дальше →

Пишем на JS в функционально-декларативном стиле

Reading time9 min
Views22K


Введение


Я люблю функциональные языки за их простоту, ясность и предсказуемость. Пишу в основном на Elixir / Erlang / OTP, пробовал другие языки, но Erlang с его акторами пока мне гораздо ближе чем например Lisp или Haskell. Как известно Erlang == web, а у чего-либо написанного для веба порой бывает клиентский веб-интерфейс: html, css, js — содержимое. Увы js это стандарт современного веба, для него есть библиотеки почти под любую задачу почти на все случаи жизни, да и это более-менее единственное доступное средство что-то выполнить в браузере на стороне клиента. Поэтому нам всё-таки нужен js. Сперва мне подумалось «Лямбды и функции высшего порядка есть, значит писать на js будет просто. Выучу синтаксис и буду писать так же как пишу в Erlang/Lisp/Haskell». Как же я ошибался.
Читать дальше →

Немного о юнит-тестировании и внешних API в PHP

Reading time6 min
Views15K
Юнит-тестирование — одна из неотъемлемых частей процесса разработки, и оно становится сложнее и противоречивее, если основная задача Вашего кода — отправлять запросы ко внешним API и обрабатывать ответы. Немало копий сломано о тему, каким должно быть тестирование кода, завязанного на внешних источниках, и где проходит грань между тестированием собственного кода и чужих API.

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


Упростить себе жизнь

Прототипы это объекты (и почему это важно)

Reading time4 min
Views22K
JavaScript – один из главных языков нашего стека в Хекслете. Мы используем ReactJS и NodeJS в интерактивных частях платформы, и сделали вводный курс (более продвинутые – на подходе). Любовь к JS помогла опубликовать этот перевод хорошего эссе «Prototypes are Objects (and why that matters)».

Этот пост рассчитан на тех, кто знаком с объектами в JavaScript и знает, как прототип определяет поведение объекта, что такое функция-конструктор и как свойство .property конструктора относится к объекту, который он конструирует. Общее понимание синтаксиса ECMAScript 2015 тоже не помешает.

Мы всегда могли создать класс в JavaScript таким образом:
Читать дальше →

Почему программировать так тяжело?

Reading time7 min
Views132K
Привет, Хабр!

В феврале мы публиковали перевод крутой статьи "Почему научиться программировать так чертовски тяжело?", которую теперь показываем новичкам. Да, научиться программировать – это целая история, длинная, с кучей разных этапов, с эмоциональными взлетами и падениями. Мы все через это проходили (или еще проходим – так держать!).

К сожалению, нет такого момента, когда можно встать и заявить, что «я закончил обучение и теперь я программист!». Учиться придется всю жизнь, и всю жизнь вы будете встречать неведомые проблемы, сталкиваться с совершенно непонятными ситуациями и спрашивать «какого хрена?!» даже будучи профессиональным программистом с многолетним стажем.

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




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

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

Google Cloud Messaging: «Сова, открывай! Пуш пришел!»

Reading time6 min
Views64K
Всем известный сервис Google Cloud Messaging (GCM) нужен для того, чтобы ваше приложение всегда показывало актуальные данные пользователю. Схема работы сервиса включает в себя три компоненты.



Непосредственно сервер GCM, ваш пуш-сервер и устройство с установленным приложением. Алгоритм работы простой: устройство регистрируется в GCM, получает registrationId – некий токен, который используется в дальнейшем, – сохраняет его у себя локально и передает серверу. Далее пуш-сервер использует этот registrationId для отправки сообщений вашему приложению на устройстве.

В этом материале будут рассмотрены проблемы на двух участках, который обозначены на схеме: пуш-сервер – GCM и GCM – устройство.
Читать дальше →

Основы многопоточности в .NET Framework

Reading time15 min
Views128K


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

Мое знакомство с ASP.NET MVC в Visual Studio 2015 на примере построения прототипа МИС

Reading time30 min
Views52K
В этом году в качестве курсовой работы мне нужно было написать несложную медицинскую информационную систему (МИС) для небольшой частной клиники по лечению эпилепсии.

База данных пациентов в клинике уже была, написана она была еще в далеком 1998 году в Microsoft Access того времени (причем даже с красивым пользовательским интерфейсом), но вот работала она только в одном месте — на компьютере заведующего, да еще и поддерживать ее стало совершенно невозможно. Значит, давно назрела необходимость внедрять что-то новое!

Сказано — сделано. Работать надо было быстро (все-таки сдавать курсовую пора) и при этом хотелось сделать работу максимально интересной для себя. Я давно хотел разобраться с ASP.NET MVC, был немного знаком с C# и общими принципами MVC, поэтому скачал последнюю Visual Studio 2015 RC и принялся за работу.

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

Создание браузерной игрульки в соц сети от и до

Reading time26 min
Views87K
Всем привет! Хочу рассказать свою историю создания браузерной онлайн игры для соц. сетей. В статье постараюсь рассмотреть всё от начала до конца, от идеи до 10 перезапуска. Статья вышла не маленькая, но подробная. Возможно, некоторые фичи, примененные в игре покажутся кому-то очевидными. Итак, кому интересно узнать о том ужасе, через который я прошел, прошу под кат! (интересно может быть самым начинающим игроделам и холиварщикам)
Читать дальше →

Работа веб-проекта в условиях нестабильного подключения

Reading time5 min
Views26K
Здравствуйте, меня зовут Александр Зеленин, я веб разработчик. Сегодня хочу рассказать, как могут работать сайты в условиях нестабильного подключения как и обещал. Проще говоря, что делать если отключили интернет, а деньги зарабатывать надо.

Рассмотрим 3 примера: интернет-магазин, кинотеатр и онлайн-плеер. Для магазина и кинотеатра так же идет разделение на 2 части — что делать на стороне пользователя и на стороне оператора/продавца.
Так что делать при потере коннекта?

Information

Rating
Does not participate
Date of birth
Registered
Activity