Search
Write a publication
Pull to refresh
51
0
Oleg Nechaev @lega

Developer

Send message

KnockoutJS: сказ о том, как легко принимать или отклонять изменения

Reading time6 min
Views8.2K
Довольно часто в пользовательском интерфейсе есть кнопки «Сохранить» и «Отмена». Особенно часто эти кнопки используются в формах. Несмотря на то, что в современном мире всё идёт к упрощению интерфейса, но на эти кнопки всё равно есть спрос.

Сегодня я предлагаю разобраться как с помощью KnockoutJS принимать и откатывать изменения для индивидуальных observables так и целых view models.

Знакомые с KnockoutJS сразу могут выдать две ссылки на лучший блог о сабже

У этих методов есть как плюсы, так и вполне существенные недостатки, от которых нужно избавлятся. Недостатки с функциональной точки зрения
  • Dirty flag — не позволяет сохранять изменения, а только сбросить их в начальное состояние.
  • protectedObservable — никто не видит изменений observable до тех пор, пока не произойдёт commit. Это ограничение сильно удручает при использовании dependent observables, к примеру.

Ну и к тому же, они нацелены на индивидуальные observable'ы, а хотелось бы работать с несколькими полями сразу.

Под катом детально разберём процесс создания простого механизма, который сделает работу с принятием и отменой изменений простой и прозрачной.

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

Три подхода к методологии построения сложного клиентского приложения

Reading time6 min
Views10K
Наверно, не существует единого рецепта, который бы всех устроил. Это касается любой проблемы. Для разработчиков этот тезис самоочевиден, и вовлеченность в использование и проектирование отдельных инструментов определяется, главным образом, лишь профессионализмом. Изобретение велосипедов романтично и неизбежно.

Особо вероятно изобретение велосипеда, когда рост сложности приложения происходит постепенно и в некотором смысле незаметно. Сложное приложение обычно является богатым приложением (rich), его элементы и особенности специфицированы W3C www.w3.org/TR/backplane. Известный JavaScript-евангелист Addy Osmani так дополнительно определяет сложное приложение: “По-моему, крупное JavaScript приложение есть нетривиальное приложение, требующее значительных усилий разработчика для поддержки, причем наиболее сложное оперирование обработкой и отображением данных ложится на браузер” (http://addyosmani.com/largescalejavascript/).
Читать дальше →

Спасти проект: самые важные вопросы

Reading time4 min
Views6K
Так уж получилось, что последние пару лет я много работаю с кризисными проектами. Это проекты, в которых деньги потрачены, цели не достигнуты, все сроки много раз нарушены, менеджера уволили или он сам в ужасе сбежал, а уровень мотивации команды – ниже некуда. В общем, материализовавшийся fuck up. К сожалению, большинство таких проектов нельзя просто закрыть – все они важны для заказчика.
Читать дальше →

Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?

Reading time24 min
Views33K
Доклад «Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?» — очередной в серии расшифровок с Форума Технологий Mail.Ru 2011. Подробности о том, как работает система расшифровки докладов — см. в статье «Изнанка» Форума технологий Mail.Ru: Хай-тек в event-management. Там же, а также на сайте Форума (http://techforum.mail.ru) — ссылки на расшифровки других докладов.


(Скачать видеоверсию для мобильных устройств — iOS/Android H.264 480×368, размер 170 Mb, видеобитрейт 500 кбит/с, аудио — 64 кбит/с )


(Скачать видеоверсию большего разрешения H.264 624×480, размер 610 Mb, видеобитрейт 1500 кбит/с, аудио — 128 кбит)


(Скачать слайды презентации, 520К)



Представлять данного докладчика тяжело, потому что его все знают. Каждый из вас, я уверен, пользуется продуктами, к которым Костя приложил руку. Это, в первую очередь, MySQL. Костя на протяжении многих лет занимался разработкой этой популярной базы данных, которую используют если не 100%, то 90% российских сайтов точно. Сегодня Костя работает в компании Mail.Ru Group. Костя нам сегодня расскажет о том, что мы сделали, как это работает и главное — какую производительность это позволит получить на ваших сервисах.





Добрый день. Вас сегодня очень много. Cпасибо, что пришли! Меня уже представили, поэтому я бы только хотел добавить, что я в душе и по делу все-таки инженер. Я, скорее, не руковожу, а активно участвую в разработке Tarantool, поэтому, если вам это интересно, у вас сегодня есть возможность узнать про него абсолютно всё. Так или иначе, этот доклад, помимо философствования на тему будущего СУБД, о Tarantool.

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

Умри, агент, умри!

Reading time7 min
Views5.3K
Каждый год тысячи людей впервые в жизни сталкиваются с необходимостью снять квартиру. Честно говоря, бизнес риелторских услуг по сдачи квартир внаем — то еще дерьмо, особенно в таком крупном городе как Москва. Именно по этой причине, каждый год появляется очередной юноша с «горящими глазами», который выдает очередной высер суперпроект помощи в поиске аренды.

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

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

История о том, как я перешел на свои хлеба (делюсь опытом для начинающих и прошу совета бывалых)

Reading time13 min
Views24K

Мотив написания статьи


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

Как Google тестирует ПО

Reading time9 min
Views40K
Прослушав вебинар «How Google Tests Software» я был так вдохновлен, что решил записать некоторые тезисы. Эта статья и есть мой конспект. Прежде всего, я должен внести ясность относительно ее содержания. Это не дословный перевод. Здесь описаны только те вещи, которые показались мне важными. Проще говоря, здесь описано не все, что прозвучало в вебинаре. Так же существует вероятность, что я понял что-то не до конца или даже понял неправильно. Поэтому горячо рекомендую прослушать вебинар самостоятельно.
Его ведет Джэймс Витакер, который в данный момент занимает пост технического директора по тестированию ПО в Google. Джэймс совместно с коллегами готовится выпустить одноименную книгу. В ней можно будет получить исчерпывающую информацию о том, как проводят тестирование GoogleMaps, Google+, ChromeOS, Android и т.д…
Читать дальше →

Объявлены 6 стартапов, которые получат гранты от Мильнера и Дурова

Reading time1 min
Views1.3K
Три недели назад на хабре уже писали о том, что Мильнер и Дуров будут раздавать гранты в размере 25 тысяч долларов, при этом не требуя ничего взамен.
И вот сейчас в группе проекта StartFellows были объявлены 6 стартапов, которые получат этот грант:

vnimanietv.ru — премия в области образовательных видеолекций;

budist.ru — социальный будильник;

sandsign.ru — подписи на песке;

wheely.com — сервис для заказа и отслеживания такси;

tjournal.ru — газета, построенная на автоматическом анализе русскоязычной аудитории Твиттера;

drugdrugu.ru — социальная сеть, сведение людей по принципу «Я хочу/Я могу».

Сообщается, что было прислано около 2000 писем и не все заявки ещё обработаны.
Судя по первым победителям, предпочтение отдаётся живым проектам.

Простые и умные формы для получения Яндекс.Денег

Reading time1 min
Views6.6K
Вчера благотворители и краудфандеры начали собирать Яндекс.Деньги в Facebook, а сегодня в распоряжение жителей интернета поступают и вовсе универсальные кнопки и платежные формы. Их можно разместить на своих сайтах и блогах, настроив любым удобным для вас образом.
Читать дальше →

2ГИС запускает API карт

Reading time2 min
Views13K
Вслед за API справочника 2ГИС мы рады представить бета-версию API карт. Теперь любой сайт может бесплатно использовать не только точные и актуальные данные по 1,2 млн. организаций России, но и настолько же качественные карты.

Карты 2ГИС охватывают 140 городов и свыше 4000 населённых пунктов с детализацией до заборов, киосков, внутриквартальных проездов. Над актуальностью и полнотой данных в 2ГИС работает более 700 сотрудников, карты обновляются каждый месяц (а данные уже каждый день). 

Функционально API предлагает разработчикам необходимый набор методов для работы с картой. Мы не планируем вводить какую-либо плату за использование API карт, а для начала работы не требуется получение ключа.
Читать дальше →

Исследование производительности сервера SockJS

Reading time4 min
Views14K
Доброе время суток!

Так уж сложилось, что я занимаюсь всякими разнообразными push технологиями с использованием Tornado. Чуть ранее описывал Tornadio2, серверную реализацию протокола socket.io поверх Tornado.

Теперь хочу представить похожий проект — sockjs-tornado.

Для тех кому не очень интересно, есть другая полезная информация: сравнительное нагрузочное тестирование PyPy 1.7 против CPython 2.6.6, sockjs-node и socket.io (оба на node.js 0.6.5). Все под катом :-)
Читать дальше →

StartFellows – бесплатный грант для интернет-стартапов

Reading time1 min
Views808
Пока страна точит вилы и освобождает стеклотару под коктейли Молотова, некоторые люди пытаются созидать или помогать тем, кто созидает.

Так например не далее как вчерашним вечером Павел Дуров и Юрий Мильнер анонсировали свой проект по безвозмездному финансированию софтверных стартапов.

Обещают выборочно давать ~$25.000 и не просить ничего взамен.

Ката не будет. Вот ссылка на сайт меценатов.
Вот страница «на сайте Павла».
И вот интервью, которое взял у Павла Дурова @nickolaykononov.

Вроде всё просто и круто.

TornadIO2 = Tornado + Socket.IO

Reading time5 min
Views14K

Что такое Socket.IO?


Это библиотека предназначенная для организации постоянного соединения между сервером и браузером.

Главное преимущество библиотеки: она автоматически подстраивается под возможности браузера и использует наиболее эффективный транспортный протокол из поддерживаемых.

Браузер умеет веб сокеты? Отлично, будем использовать их. Браузер умеет AJAX? Будем использовать long polling. Это древний Internet Explorer? Будем использовать html file object. Ну и так далее.

О socket.io уже писали на Хабре. «Родной» сервер Socket.IO написан на node.js.
Читать дальше →

Пять способов ускорить запросы API Facebook на практике

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

За время работы с API Facebook я накопил несколько рецептов оптимизации запросов: как увеличить скорость работы скриптов, уменьшить их количество и ресурсоёмкость.



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

Использование Deferred объектов в jQuery 1.5

Reading time6 min
Views37K
Deferred объекты появились в jQuery 1.5. Они позволяют отделить логику, которая зависит от результатов выполнения действия от самого действия. Для JavaScript Deferred объекты не новы, они уже были в MochiKit и Dojo, но с изменениями логики jQuery ajax от Julian Aubourg, внедрение Deferred объектов было неминуемо. С Deferred объектами несколько callback могут быть связаны с результатом задачи и любые из них могут быть привязаны к действию даже после начала его выполнения. Выполняемая задача может быть асинхронна, но не обязательно.

Deferred объекты теперь встроены в $.ajax() таким образом вы будете получать их автоматически. Обработчики теперь могут быть связаны с результатом следующим образом:
// $.get, ajax запрос, он асинхронный по умолчанию
var req = $.get('foo.htm')
   .success(function( response ){
      // что-нибудь делаем с ответом
   })
   .error(function(){
      // делаем что-нибудь если запрос провалился
   });
 
// это выполнится перед тем как $.get() будет выполнено
doSomethingAwesome();
 
// Делаем что-то ещё перед завершением запроса
req.success(function( response ){
   // делаем  что-то ещё с ответом
   // он будет выполнен когда запрос завершится, а если запрос завершен, то будет вызван немедленно
   // если запрос уже был выполнен
});

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

Метод определения и динамической защиты от DDoS типа SYN-flood

Reading time4 min
Views17K
Привет, Хабрасообщество.

Об актуальности DDoS атак в наше время рассказывать не стану. Достаточно взглянуть на статистику. Сталкиваюсь с атаками по роду деятельности довольно часто, возникла идея динамической защиты от DDoS типа SYN-flood на северах Linux и FreeBSD. Также предложена реализация мониторинга SYN-flood по SNMP.

Об этом всём под катом.
Читать дальше →

Кластер, который всегда с собой

Reading time5 min
Views41K
lxcЗахотелось странного.
Во-первых, взгромоздить кучу виртуальных машин прямо на свой ноутбук.
А во-вторых, раскурить одну виртуализацию внутри другой.

Речь пойдет про использование контейнеров LXC, причем внутри другой виртуальной машины.

WTF! На кой это нужно?

Разработка флеш игры «King of the rocks»

Reading time9 min
Views5.3K
Прочитав несколько статей о том как наши соотечественники делают флеш игры, да ещё и неплохо зарабатывают на этом я решил во чтобы-то ни стало сделать свою игру. И непременно заработать с её продажи как минимум 1000$. Успех в этом деле значил для меня очень многое. Я всю жизнь хотел делать игры и вот сейчас я был готов и уверен в успехе на все 100%. Это история разработки моей первой флеш игры King of the Rocks


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

Оптимизация Ubuntu (и прочих Linux-ов) под SSD

Reading time4 min
Views206K
Доброго времени суток всем читающим. В данной мини-статье мне хотелось бы собрать и рассмотреть основные моменты оптимизации работы (и, конечно, продления жизненного цикла ) твердотельных накопителей. Практически всю информацию можно легко найти в сети, но тут я попытаюсь упомянуть пару подводных камней.
Читать дальше →

Information

Rating
Does not participate
Location
Stockholm, Stockholms Län, Швеция
Registered
Activity