Pull to refresh
7
0
Алексей Лебедев @swanrnd

Издатель HTML5 игр

Send message

5 полезных методов jQuery API, о которых вы могли не знать

Reading time2 min
Views55K
В статье я расскажу о пяти методах jQuery, которые я нашел для себя полезными и о которых, по моим наблюдениям, мало кто знает.

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

Для пользователей IE7 интернет-магазин ввёл специальную комиссию

Reading time1 min
Views8.8K
Усилия разработчиков сайта Kogan — популярного австралийского интернет-магазина — по поддержке работы ресурса при просмотре его в Internet Explorer 7 привели к тому, что владельцы сайта приняли решение ввести специальную комиссию для покупателей, которые его до сих пор используют этот браузер.

Руслан Коган (Ruslan Kogan) — CEO компании Kogan (предприимчивому молодому человеку 28 лет, он родом из Бобруйска, утверждает, что «Открыть бизнес в Австралии — 15 минут!»), владеющей магазином — высказался вполне прямо: он утверждает, что поддержка устаревшего браузера стоит его команде разработчиков огромную сумму денег; если бы такая необходимость вдруг отпала, то во всей индустрии интернет-продаж были бы сэкономлены миллионы долларов.

На данный момент налог на уплачиваемую в магазине сумму составляет 6.8%, причём всем любопытствующим предъявляется рациональное объяснение — объем надбавки складывается из 0.1% за каждый месяц с момента выпуска IE 7. Магазин поступает честно — всем заходящим на сайт при помощи IE 7 показывается всплывающее окно, в котором пользователь предупреждается, что, воспользуйся он любым другим браузером, только поновее, то покупатель избежит ненужных для себя трат.

IE7 был выпущен Microsoft в октябре 2006 года. На данный момент, согласно статистике LiveInternet, доля этого браузера составляет около 2% от общей интернет-аудитории. В общем же, в мировом сегменте интернета, лидером, правда, с незначительным отрывом от Internet Explorer является Google Chrome: на май 2012 года доля Chrome составляет 32.43%, тогда как общая доля IE — 32.12%.
Источник

Веб-уязвимости. Невероятное — очевидно

Reading time4 min
Views34K
В ходе тестирования на проникновение, аудита безопасности и других работ, выполненных экспертами Positive Technologies в 2010 и 2011 годах, собралась статистика по защищенности более сотни корпоративных веб-приложений. Именно приложений, а не сайтов-визиток. Сайты электронного правительства, системы интернет-банкинга, порталы самообслуживания сотовых операторов — вот далеко не полный список объектов исследования.

Анализ результатов работ помог нам найти ответы на извечные вопросы ИБ:

  • сколько сайтов заражено «зловредами»?
  • какая CMS безопасней — коммерческая, OpenSource, или проще разработать самому?
  • что безопасней — Java, PHP или ASP.NET?
  • выполнить требования стандарта PCI DSS– миф или реальность?

Ответы на некоторые из этих вопросов нас, признаться, удивили. Подробности — под катом.
Читать дальше →

Построение эффективных бизнес-систем. Глава 2.2 Бизнес-процессы: Локальная оптимизация

Reading time8 min
Views9.4K
На данный момент, мы проделали колоссальную работу, выявив основные потоки компании, и расположив их в идеальном порядке. Я говорю «мы», поскольку полагаю, что вы вместе со мной строите эту схему, и она вам полностью понятна. Если это не так, то, возможно, имеет смысл вернуться в начало документа. Если и это не вносит ясности, то задавайте вопросы автору.
Но, оставим на время сложные схемы и вернёмся к простым примерам. Поточный подход к организации бизнеса позволяет применять простые технические законы к нашей компании, извлекая из этого много полезных уроков.

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

Делаем чат на ASP.NET с помощью Web Socket

Reading time4 min
Views83K

Вступление



Я думаю, что многие веб-разработчики задают себе вопрос о том, как передать пользователю какое-либо сообщение, напоминание. Раньше для этого было необходимо постоянно отправлять запросы к веб-серверу, но теперь появилась такая удобная технология, как Web Socket.

В этой статье я хочу показать, как можно написать простой чат на ASP.NET MVC 4 с помощью Web Socket.

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

Ошибки трансферта технологий №1 / «Ошибки индивидуализации»

Reading time6 min
Views1.6K
Оказывая помощь в выводе разработок и бизнесов на внешние зарубежные рынки, приходится постоянно наблюдать одни и те же ошибки, и как следствие — неудачи и потери.
Читать дальше →

Правила разработки сложных систем. История одного проекта

Reading time8 min
Views18K
Привет, Хабр. Меня зовут Александр. И я хочу поделится своей историей работы над одним крупным и сложным проектом.

В этой статье не будет кода и схем, в ней будет только история создания «от и до» самого проекта. Думаю, многим будет интересна данная статья. Итак, поехали!

Начало


Все началось летом 2011. На тот момент я был 3 года чистокровным фрилансером. То есть моя работа — это фриланс. Работал и работаю до сих пор только с западными заказчиками. Основная специализация — разработка проектов связанных с распознаванием образов, текста и т.д.

Все началось с того, что я, как всегда, с утра проверял почту, чистил спам, занимался рутинной работой. Обычно я не смотрю, что у меня в спаме, но тут я увидел письмо, с вполне реального адреса. Я открыл письмо, в котором одна компания искала программиста для допиливания крупного западного проекта. Причем эта компания требовала программиста именно из моего города и обязательно с опытом работы в области распознавания. Я ради любопытства ответил на это письмо. Буквально через час мне пришел ответ. А через два мы уже созвонились с менеджером проекта. Поначалу мне показалось, что ничего сложного в доработке нет, обычный набор функционала. После непродолжительного разговора с менеджером я огласил свой прайс, то есть ставку в час. И на этом мы попрощались. На следующий день мне сказали, что согласны на мой ценник и дали тестовое задание. Я его успешно выполнил в течении часа, и мы двинулись дальше. А здесь начинается самое интересное. Во-первых, меня пригласили в офис для того, чтобы подписать договор о неразглашении (Non-Disclosure Agreement). Во-вторых, и это логично, исходники проекта мне обещали отдать только после подписания договора. Если честно, меня это смутило, не знаю даже почему. И интуиция меня не подвела. Я потребовал хотя бы часть исходного кода, чтобы оценить сложность работы и попросил рассказать подробнее о проекте. Как оказалось проект на тот момент велся уже три года и я был 4 (!) исполнителем. До меня работала американская компания, потом индусы, потом компания, которая наняла меня, пыталась реализовать проект силами одной девочки-программиста, а потом это все чудо предложили разгребать мне. Меня это не просто удивило, а очень насторожило. Потом я узнал множество удивительных вещей, например о том, что заказчик 2 года не видел программу, а видел только скриншоты, а индусы кормили обещаниями этого заказчика. У меня не укладывалось в голове, как такое можно реализовать. Менеджеру индусов надо дать медаль «За находчивость».

После того как я выслушал удивительную историю, мы договорились с менеджером о том, что он мне отдаст исходный код и я оценю масштаб трагедии. Чтобы было более понятно, я расскажу более подробно о проекте. Этот проект — это инструмент для инженеров, архитекторов, электриков и других людей, которые занимаются строительством домов, небоскребов, одним словом зданий. Он служит для подсчета различных элементов на строительных планах, расчета площадей, измерения длин и составления смет. Грубо говоря есть строительный план и на нем есть розетки. Нам надо распознать и посчитать сколько этих розеток. Для распознавания использовалась библиотека написанная другим программистом. Сам проект написан на C#. Моя задача была собрать все воедино и доработать дополнительный функционал, а также привести программу к более менее стабильному состоянию. Кажется все просто и элементарно. Я тоже так подумал. Но не тут-то было.

После того как я получил исходники, я попытался скомпилировать проект. Это мне не удалось. После краткого анализа, я исправил ошибки и все же запустил проект. Но, к сожалению, он не заработал так как нужно. После нескольких часов анализа кода я пришел к выводу, что вся проблема в библиотеке распознавания. На тот момент у меня стояла 64-битная «семерка», а у менеджера 32-битная. У него все работало, у меня нет. Я попросил, что бы мне скомпилировали библиотеку под 64-битную платформу. Но разработчик библиотеки с пеной у рта доказывал, что не в разрядности дело. Я не мог ему ничего доказать, так как он дал очень немного информации о своей библиотеке и вообще берег ее как зеницу ока. Время шло и мне надо было хотя бы полностью провести процесс поиска. Я плюнул на все и поставил себе 32-х битную версию ОС. И о чудо! Все заработало. Отвлекаясь, хочу сказать о библиотеке, в будущем дело все же оказалось в ее разрядности.

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

1. Компоненты и контролы.

Проект очень сильно связан с графикой, но для ее вывода и обработки использовался обычный PictureBox. Самый маленький размер плана — 5400x3600 пикселей. Знающие люди поймут, что для PictureBox -это достаточно проблематичная тема с выводом больших картинок и их обработкой. Не стоит забывать, что помимо самих планов выводится еще много информации (площади, текст, найденные символы и т.д.). При запуске проекта с 5 маленькими планами, программа непременно падала с ошибкой «Out of memory». Что было очень большой проблемой, так как основной задумкой было то, что инструмент должен был работать по принципу «запустил и забыл».

2. Логика архитектуры исходного кода программы.
Читать дальше →

Золотые правила успешной кнопки

Reading time3 min
Views71K
Здравствуй, дорогой хабрадруг! Сегодня существуют более тысячи способов создать кнопку; чтобы понять их сущность, вам нужно лишь потратить немного времени, просмотрев работы на сайте dribbble.com. Большинство из этих примеров очень похожи друг на друга, однако время от времени попадаются и такие кнопки, на создание которых потратили чуть больше внимания, времени и сил.



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

Как правильно сортировать контент на основе оценок пользователей

Reading time5 min
Views93K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


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

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

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

Улучшаем производительность HTML5 canvas

Reading time10 min
Views40K
В последнее время мне везет натыкаться на интересные статьи для перевода. На этот раз – статья на HTML5Rocks о производительности HTML5 canvas. Автор пишет о некоей стене, в которую упираются разработчики при создании приложений. Какое-то время назад в нее уперся и я при портировании старой-доброй игры на canvas.

К сожалению, графики в оригинале вставлены через iframe. Я мог бы сделать снимки и разместить их изображения, но сам автор позиционирует графики актуальными и такими, которые будут обновляться, потому я просто разместил на них ссылки. Приятного чтения!


image
  1. Вступление
  2. Тестирование производительности
  3. Предварительно отрисовывайте в виртуальный canvas
  4. Группируйте вызовы
  5. Избегайте ненужных изменений состояния
  6. Отрисовывайте только разницу, а не весь холст
  7. Используйте многослойных canvas для сложных сцен
  8. Избегайте shadowBlur
  9. Различные способы очистить экран
  10. Избегайте нецелых координат
  11. Оптимизируйте анимации с помощью 'requestAnimationFrame'
  12. Большинство мобильных реализаций canvas – медленные
  13. Заключение
  14. Ссылки



Вступление


HTML5 canvas, который начинался, как эксперимент компании Apple, – наиболее широко распространенный стандарт для 2D режима непосредственной графики в интернет. Многие разработчики использую его в широком круге мультимедиа проектов, визуализаций и игр. Как бы то ни было, с ростом сложности приложений, разработчики нечаянно натыкаются на стену производительности.
Читать дальше →

Еще одно Canvas руководство [3]: Рисование изображений и текста, сохранение изображения и состояния

Reading time3 min
Views5.5K

Введение


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

Еще одно Canvas руководство [2]: Стилизация, градиенты, тени

Reading time4 min
Views12K

Введение


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

Еще одно Canvas руководство [1]: Canvas элемент, прямоугольники, пути

Reading time5 min
Views19K

Зачем еще одно руководство?


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

Анимация и Canvas

Reading time9 min
Views51K
Добрались руки мои до Canvas. Посматривал я на него давненько, очень уж он мне в качестве инструмента для графиков приглянулся. Да и неделя Canvas на Хабре поддержала интерес.

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

Искусство позиционирования

Reading time3 min
Views3.1K

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


— А ты чем занимаешься то?
— Да мы с ребятами стартап запускаем, такой классный!
— О, круто! А что за стартап?
— Ну слушай, сейчас объясню. Вобщем, это каталог с музыкой, в котором ее можно оценивать, ставить лайки и делиться ею с друзьями. А главное, все это бесплатно!
— А ну понятно. Ладно, я пошел, до встречи.
Читать дальше →

Искусство переговоров — это просто бизнес, ничего личного

Reading time11 min
Views57K
Неожиданным результатом публикации предыдущей статьи стало то, что многие из моих знакомых, коллег и друзей прочитали указанную в ней книгу. За этим последовали интересные дискуссии в скайпе. Я понял, что люди часто рассматривают один и тот же вопрос под разными углами и делают выводы отличные от моих, но не менее ценные. Данный пост написан не только с целью поделиться знаниями и опытом освоения искусства переговоров, но и с надеждой на то, что с помощью читателей мне откроются идеи, которых самому узреть не удалось.

Итак, сегодня я хочу поговорить о книге профессора Гэвина Кеннеди «Договориться можно обо всём» и о том, как навык ведения переговоров помогает в профессиональной деятельности и повседневных активностях. Саму книгу я прочитал довольно давно, но только сейчас накопилось достаточное количество ярких примеров того, что указанные в ней практические советы эффективны и действуют почти безотказно.

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

Примитивное сравнение производительности search и indexOf в Javascript

Reading time2 min
Views7.1K
Я постоянно встречаю рекомендацию использовать, когда это разумно, обычный поиск вместо регулярных выражений, поскольку последние сильно медленнее. Но никогда не видел насколько медленнее и когда они становятся эффективнее. Но зуд покоя не дает и я решил сравнить их и посмотреть какие циферки можно увидеть в реальности…
Читать дальше →

Установка Asp.Net на Linux (nginx+mono+xsp)

Reading time7 min
Views40K
В этой статье я покажу, как настроить простую связку nginx + Asp.Net. Под простой надо понимать, что какие-то специфические особенности проектов, разграничение прав пользователей, высокие нагрузки и т.п. нужно настраивать отдельно (особенно это касается Asp.Net). Статья написана по просьбе хабраюзера mace.

В свое время озадачившись проблемой хостинга маленьких Asp.Net-проектов я осознал одну простую вещь: покупать лицензию на Windows Server, а потом и арендовывать достаточно мощный выделенный/виртуальный сервер для каких-то домашних поделок/экспериментов — крайне неразумно. Решение как-то сразу всплыло в моей лысой голове: есть же Mono! Непродолжительный поиск по mono-project.com вывел на FAQ об Asp.Net. Фактически, документация показала мне три возможных варианта:
Читать дальше →

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Registered
Activity

Specialization

Product Analyst
Lead