Pull to refresh
29
0
Дмитрий Нестерюк @nest_d

User

Send message

Как быстро установить и начать эксперементировать с Cassandra

Reading time4 min
Views14K
image

Cassandra — распределенная база данных, в основу которой положены идеи Dynamo и Google Big Table

Обзор основных особенноестей:
  • Проверена в работе (используется в Facebook, Twitter, Digg и в др.)
  • Отказоустойчива (каждая запись дублируется на нескольких узлах в кластере)
  • Децентрализована (все узлы в кластере эквивалентны)
  • Гибкая модель данных
  • Пропускная способность чтения и записи увеличиваются линейно с добавлением новых узлов
  • Безразмерна (нет ограничений на объем, поиск всегда O(1))

Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments8

Предварительная загрузка изображений

Reading time5 min
Views13K
Те, кто использует HTML5 Canvas знают, что картинку нельзя использовать через URL к ней. Картинку нужно сначала загрузить либо через тэг img, либо через объект Image, либо через data: url.
Чтобы не думать о загрузке каждой картинки, делают загрузку всех необходимых картинок перед отрисовкой самой сцены. В этом топике я приведу в пример свой загрузчик изображений, который использует Mootools с его механизмов для работы с классами.
Читать дальше →
Total votes 29: ↑23 and ↓6+17
Comments7

Разрабатываем быстрее и качественнее при помощи прототипов

Reading time10 min
Views6.7K
Старая поговорка «Лучше один раз увидеть, чем сто раз услышать» очень точно описывает, что разработчикам может дать создание прототипа интерфейса: визуальное представление, значительно более наглядно описывающие вопросы дизайна проекта и разработки функционала. В итеративном подходе к дизайну пользовательского интерфейса используется быстрое проектирование в процессе создания набросков системы (будь то веб-сайт или приложение) и утверждение их у обширной группы представителей заказчика, заинтересованных сторон, разработчиков и дизайнеров. Если придерживаться этого подхода — можно получить обратную связь раньше (чаще всего прямо в процессе обсуждения), что значительно улучшает качество дизайна конечного продукта и уменьшает потребности во внесении изменений в процессе разработки.
Читать дальше →
Total votes 73: ↑70 and ↓3+67
Comments22

Немного шаблонизирования

Reading time2 min
Views1.6K
Не так давно из лекции Дугласа Крокфорда я узнал об очень интересной технике «шаблонизирования» в JavaScript. Основная цель техники заключается в том, что мы получаем с сервера JSON и потом как-то формируем из этого HTML. Во многих ситуациях этот процесс оставляет желать лучшего потому, что формирование HTML происходит или с помощью конкатенации строк или ряда операций createElement, appendChild и т.п. Возможно многие уже знают об этом решении, но для тех кто не знал надеюсь будет полезно.
Читать дальше →
Total votes 89: ↑76 and ↓13+63
Comments54

Резюме для Google

Reading time2 min
Views25K
Нина Цепляева, Рекрутер на инженерные позиции, Google Россия

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

#1 Не пишите мало. Не пишите много.
Идеальное резюме — это 1-2 страницы текста, из которых сразу понятно, что знает и умеет делать человек.
Старайтесь максимально конкретно обрисовать ваш опыт работы за последние 5-7 лет. Используйте только факты.
Не пишите сочинение: оно “отяжелит” резюме и нам сложно будет отделить важное от очень важного.
Не пишите о том, в чем не очень хорошо разбираетесь. На собеседовании наши инженеры могут начать задавать вам вопросы по предметам, с которыми вы не очень хорошо знакомы, и это негативно скажется на оценке вас как кандидата.

#2 Пишите доступным языком.
Постарайтесь избегать использования аббревиатур, используйте их только в общепризнанных случаях. К примеру, если вы работаете над проектом, который закодирован в вашей компании набором букв, расшифруйте его для того человека, который будет читать резюме.

#3 Образование и опыт.
Начнем со структуры: располагайте события от нового к старому. Текущее место работы на странице должно находиться над предыдущим.
Попытайтесь перечислить только самые значимые проекты, самые важные и интересные, которыми хотелось бы гордиться. Опишите цель проекта, используемые технологии, вашу роль в нем, его длительность и результат.
Перечисляя компании, где вы работали, расскажите нам, пожалуйста, чем эти компании занимаются, по возможности укажите ссылки на корпоративные сайты.
Укажите, где вы получили образование, на каком факультете учились в ВУЗе, какой у вас средний балл в дипломе.
Если у вас имеются публикации, расскажите нам о них.

#4 Достижения.
Если вы участвовали в олимпиадах или каких-либо научных соревнованиях, напишите нам о них: что за мероприятие, какое место вы заняли.
Если вы придумали что-то новое (какую-нибудь программу, алгоритм, изобрели велосипед, самопропалывающиеся грядки, самоналивающийся кофе и т.п.), обязательно расскажите нам об этом. Мы очень ценим кандидатов, способных придумать что-то новое и воплотить это в жизнь.
Помните, что для нас важны ваши способности, ваши знания и опыт, а не громкие названия занимаемых должностей. Если вы любите заниматься разработкой и никогда не были менеджером, не стесняйтесь этого! Многие люди не хотят управлять другими и являются при этом прекрасными специалистами в своей области.

#5 Увлечения.
Расскажите нам о своих хобби и увлечениях — о том, как вы проводите своё свободное время, чем интересуетесь, какие книги любите читать, на каких инструментах играете.

Для подачи резюме в Google нужно составить его на английском языке и отправить, перейдя по ссылке: Software Engineer — Moscow

Разговорный английский язык — это обязательное требование ко всем кандидатам, подающим резюме в Google.
Total votes 110: ↑72 and ↓38+34
Comments71

Appcelerator Titanium — что это и как оно там

Reading time3 min
Views40K
Данная статья посвящена Appcelerator Titanium — платформе для создания мобильных и десктопных кроссплатформенных приложений на JavaScript (HTML+CSS в придачу). Развитие платформы, особенности, варианты использования, личный опыт
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments44

Операторы '&&' и 'and' в Ruby

Reading time1 min
Views24K
На одном собеседовании меня спросили: «когда ты пишешь на Ruby, ты пользуешься оператором 'and' или двумя символами амперсанда '&&' для обозначения логического 'И' ?». На самом деле, я по старой привычке всегда ставил два символа амперсанда '&&' и никогда не задумывался об этом. Так и ответил, мне сказали «Хорошо».

А вы не смотря под cut можете внятно объяснить разницу между 'and' и '&&' в Ruby?
Проверим?
Total votes 58: ↑41 and ↓17+24
Comments77

Паттерн проектирования «Адаптер» / «Adapter»

Reading time6 min
Views94K
Почитать описание других паттернов.

Пожалуй, начнем.
Для начала, поясню несколько организационных вопросов.
  • Описание того или иного паттерна, является моей сугубо личной интерпретацией теоретического и практического материала, собранного из книг и интернет-статей;
  • При построении UML-диаграмм, я буду использовать свободный редактор от компании astah, ввиду его простоты и независимости от конкретного языка или среды. При этом, диаграммы не будут отличатся изобилием картинок и цветов, но будут ясно отображать суть паттерна;
  • При реализации практических примеров, язык программирования будет выбираться совершенно случайно. Однако, я буду стараться подбирать те языковые средства, на которых данный паттерн реализуется не тривиально;
  • Каждый мой пост, будет содержать как минимум 5 секций — Проблема, Описание патерна, Практическая задача, Диаграмма классов и Реализация;
  • Если Вы, с чем-то не согласны или у Вас есть дополнения к материалу, изложенному мной — я буду рад их почитать в комментариях. Однако, помните — я тоже изучаю паттерны вместе с Вами :)

Читать дальше →
Total votes 150: ↑126 and ↓24+102
Comments62

Заполнение БД тестовыми данными при помощи Populator и Faker

Reading time1 min
Views6.4K
Часто возникает необходимость протестировать приложение на предмет работы с реальными данными. Причём, данные должны быть максимально приближены к реальным как с качественной стороны, так и с количественной. Работу по наполнению базы такими данными значительно упрощают гемы Populator и Faker.
Читать дальше →
Total votes 54: ↑49 and ↓5+44
Comments22

QUnit. Тестирование javascript кода

Reading time5 min
Views64K
Наткнулся вчера на этот инструмент и не смог пройти мимо, провел ночь за написанием тестов, а теперь хочу поделиться находкой. QUnit — это библиотека от разработчиков jQuery, позволяющая писать unit-тесты для кода на javascript. Удобна в использовании, ничего лишнего, осваивается за 20 минут, выгода от применения — колоссальная.

Самым нетерпеливым сразу ссылки:
Официальная документация на сайте jquery: docs.jquery.com/QUnit
Реальные примеры тестов (для модулей jquery): view.jquery.com/trunk/jquery/test/unit
Руководство для начинающих (англ): www.swift-lizard.com/2009/11/24/test-driven-development-with-jquery-qunit
Система распределенного тестирования (гениально и просто): testswarm.com

Под катом информация о преимуществах юнит-тестирования применительно к js и разбор возможностей библиотеки на примерах.
Читать дальше →
Total votes 71: ↑68 and ↓3+65
Comments23

Обзор NoSQL систем

Reading time5 min
Views55K
Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
  • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
  • производительность каждого отдельного сервера
  • не гибкий дизайн логической структуры.
Читать дальше →
Total votes 101: ↑98 and ↓3+95
Comments67

Что такое стартап? Основы от Стива Бланка

Reading time3 min
Views4K
Успех состоит из пути от одной ошибки к другой без потери энтузиазма.
Уинстон Черчиль


Каждый знает, что такое стартап. Разве нет?
Я бы предложим новое объяснение тому, почему появляются стартапы: стартап – это организация, созданная для поиска повторяемой (в англ.оригинале «repeatable» – в значении «не одноразовая модель», а НЕ «бизнес-модель, которую можно повторить») и масштабируемой бизнес-модели.

Бизнес-модель


Хорошо, а что такое бизнес-модель?
Бизнес-модель описывает, каким образом ваша компания создает, достигает и завоевывает ресурсы.
Простым языком, бизнес-модель описывает, как ваша компания зарабатывает деньги (в вашей системе координат это могут быть успех, новые пользователи, прирост трафика и т.п.)
Представьте, что бизнес-модель – это диаграмма, на которой показаны все связи между различными частями вашей организации. Эта диаграмма показывает и то, как ваша продукция попадает к покупателям и как оплата за эти продукты попадает к вам. Также она демонстрирует структуру затрат, как каждый отдел компании взаимодействует с другими, как ваша компания интегрирована в рынок и взаимодействует с партнерами. Слова словами – проще отобразить на схеме.

Схема бизнес-модели


Много людей пытались понять, как лучше отобразить диаграмму или схему бизнес-модели. Мои студенты занимались этим годами, но работа Александра Остерволдера (Alexander Osterwalder) это лучшее, что я увидел за последние десять лет. Его диаграмма – это универсальный образец бизнес-модели. Ваша собственная бизнес-модель будет иметь свойственные только ей нюансы.
Читать дальше →
Total votes 66: ↑49 and ↓17+32
Comments19

Обновление сайта, обновление схемы БД (MySQL)

Reading time3 min
Views5.5K
Проблема — нужно обновлять сайт (ака «svn up») плюс обновить схему БД — добавить таблицы, индексы и т.п.
SQL запросы на обновление БД хранятся в репозитории, необходимо запустить нужный SQL после обновления кода приложения.

Сложность: 1) нельзя, чтобы один и тот же SQL выполнился два раза. 2) выполнять запросы нужно в определенной последовательности (нельзя сделать ALTER TABLE до создания).

Как?
Total votes 31: ↑19 and ↓12+7
Comments44

Авторесайз IFRAME и безопасный способ передачи информации с одного домена на другой

Reading time1 min
Views11K
Как известно, при работе с фреймами для обеспечения безопасности браузеры не позволяют JavaScript-коду обращаться со страницы одного домена на страницу другого домена. В этой краткой статье мы рассмотрим аспекты кросс-доменной работы в JavaScript, опишем один из «хороших» частных случаев, а в конце — я надеюсь в хабракомментах получить ответы на оставшиеся вопросы.

UPD1: те, кто здесь впервые, — обязательно читайте комментарии к этой статье, в них очень много интересного накидали (как я и надеялся). Спасибо!

UPD2: найдено решение задачи авторесайза для всего, кроме Opera < 10.

UPD3: полностью кроссбраузерное решение задачи с ресайзом приводится ниже. Его особенности: а) не портится history, б) работает даже в Опере 7 и IE6, в) для ускорения работы высота фрейма всегда делается кратной N=30 пикселям. Фактически, там 2 алгоритма — для IE (через location.hash) и для «не-IE» (через window.name и «простукивание» возможных высот в цикле). См. также комментарии к статье, там разъяснения, почему так, а не иначе.

UPD4: статья начала принимать черты монументальной, посему она переехала ко мне в Наблы на dkLab: dklab.ru/chicken/nablas/58.html — там же все примеры кода самой последней актуальности. Но, конечно, в случае изменений я буду их и тут тоже анонсировать, добавляя UPD5, UPD6 и т.д.
Total votes 39: ↑28 and ↓11+17
Comments71

Юзабилити и дизайн интерфейсов для хардкорных программеров

Reading time15 min
Views16K
С того момента как я начал программировать я наблюдал и думал об одном особом явлении — как большинство программистов активно избегают всего, что касается дизайна интерфейсов и вопросов юзабилити.


Я понимаю, откуда это пришло. Большинство программистов любят программировать. Они готовы учиться новым особенностям языков программирования, пробуют новые компоненты и библиотеки, улучшают свои алгоритмы и архитектуру кода или скажем оптимизируют структуру используемых данных. Это кажется очень важным, потому что, программа хороша настолько, насколько хороши её коды и алгоритмы и насколько все это оптимизировано. И это так. Но только если программы пишутся для программистов.

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

Читать дальше →
Total votes 127: ↑110 and ↓17+93
Comments75

Ample SDK — Javascript GUI библиотека. Обзор

Reading time5 min
Views6K
Ample SDK logo Доброго времени суток, %username%.
Представляю твоему вниманию анонс Ample SDK, новой кросс-браузерной библиотеки интерфейса пользователя.

Познакомиться с проектом Ample SDK тебе будет интересно по следующим причинам:
  • упрощает создание клиентских веб-приложений
  • реализует стандартные веб технологии и API кросс-браузерно
  • повторяет архитектуру веб-браузера (ничего нового учить не надо!)
  • позволяет использовать SVG в HTML (также в Internet Explorer, хм!?)
  • позволяет использовать XUL в любом современном браузере
  • позволяет легко определять новые доменно-зависимые UI технологии
  • проект с открытым (MIT/GPL) исходным кодом (на GitHub)

Для затравки, один и тот-же SVG Tiger документ отображенный в Internet Explorer 6 и Google Chrome 3:

SVG Tiger в Internet Explorer SVG Tiger в Google Chrome

Интересно?
Читать дальше →
Total votes 97: ↑93 and ↓4+89
Comments45

Riak — веб-ориентированная система хранения данных

Reading time9 min
Views31K


Немного статей на хабре посвящены новому движению в IT индустрии — NoSQL. Я решил изменить это и написал статью-перевод-обзор об одном из докладов с конференции NoSQL прошедшей 5 октября в Нью-Йорке. В этой статье будет говорится о системе Riak, с которой мне довелось иметь счастье работать последнее время.

Что такое Riak? Многие модные слова популярные сейчас, можно отнести к Riak. Riak — это документно-ориентированная база данных. Riak — это децентрализованное key-value хранилище данных, с поддержкой стандартных операций — get, put и delete. Riak — это распределенное, масштабируемое, отказоустойчивое решение для хранения информации. А так же Riak — это система с открытым исходным кодом и поддержкой обращений с помощью HTTP, JSON и REST. Ну и конечно RIAK — это NoSQL.

Читать дальше →
Total votes 80: ↑74 and ↓6+68
Comments32

Облачные вычисления на пальцах

Reading time4 min
Views4.5K
Облачные вычисления – вычисления проводимые в готовой инфраструктуре к которой есть доступ через сеть. Инфраструктура может состоять из тысяч, сотен тысяч вычислительных узлов, дисковых массивов. Все это соединено в единую сеть и функционирует как одна большая вычислительная машина. Все настроено и доступно из «коробки».

А теперь на пальцах
Total votes 111: ↑102 and ↓9+93
Comments50

Map/Reduce: решение реальных задач — TF-IDF — 2

Reading time3 min
Views14K
Продолжая статью “Использование Hadoop для решения реальных задач”, хочу напомнить, что в прошлой статье мы остановились на том, что посчитали такую характеристику как tf(t,d), и сказали, что в следующем посте мы будем считать idf(t) и завершим процесс вычисления значения TF-IDF для данного документа и термина. Поэтому предлагаю долго не откладывать и переходить к этой задаче.

Важно заметить, что idf(t) не зависит от документа, потому как считается на всем корпусе. Это нетрудно увидеть, посмотрев на формулу:



Вероятно, она нуждается в некоторых пояснениях. Итак, |D| это мощность корпуса документов — иными словами, просто количество документов. Мы знаем его, поэтому считать ничего не надо. Знаменатель же логарифма — это количество таких документов d которые содержат интересующий нас токен t_i.

Читать дальше →
Total votes 44: ↑38 and ↓6+32
Comments13

Information

Rating
Does not participate
Location
Запорожье, Запорожская обл., Украина
Date of birth
Registered
Activity