Как стать автором
Обновить
0
0
Valdemar_UA @Valdemar_UA

Пользователь

Отправить сообщение

16 практических советов по работе с CouchDB

Время на прочтение10 мин
Количество просмотров18K
Где-то год назад при разработке нашего проекта мы дошли до некой точки развития, когда или начинается кропотливая настройка и оптимизация MySQL-сервера, или начинается опять же кропотливое изучение запросов, которые идут в БД. Так получилось, что именно тогда был бум статей про MongoDB, CouchDB и прочие NoSQL базы данных и соблазн попробовать их на живом проекте был крайне велик.

При выборе главную роль сыграла фраза «CouchDB предназначен именно для веба», а также то, что для доступа не требовались никакие прослойки — доступ осуществляется по любимому мной REST, а API выглядит очень простым и изящным. Вдобавок к этому CouchDB имеет крайне удобный веб-интерфейс для администрирования Futon, чего на тот момент не было у MongoDB, а также железную устойчивость к падениям.

Забегая вперед скажу, что выбор полностью себя оправдал — мы избавились от огромного количества проблем при разработке и проектировании БД, код проекта сильно упростился и стал гораздо лучше структурирован, но самое главное — тот самый поворот в сознании, который нам дал CouchDB. За это время я лично набил множество шишек при разработке и хотел бы поделиться опытом с Хабрасообществом. Эти советы не для начинающих — это советы по использованию CouchDB на живом production.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии45

Создание гемов — Руководство

Время на прочтение3 мин
Количество просмотров9.9K
Хотя на Хабре уже проскакивали статьи о создании гемов, они либо содержат устаревшую, либо неполную информацию.

Как же на самом деле надо создавать, развивать и публиковать свои гемы?

Современный подход заключается в использовании Bundler совместно с другими инструментами, такими, как Git, YARD и RSpec-2.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии12

Определение страны по IP: тестируем скорость алгоритмов

Время на прочтение4 мин
Количество просмотров36K
Для определения страны по IP необходимы специальные базы данных, состоящие из диапазонов IP адресов и соответствующих им стран. Обычно такие базы данных распространяются в виде CSV или SQL файлов для использования в СУБД, либо бинарных файлов специального формата.

Для проведения тестирования была выбрана февральская база GeoLite Country, бесплатная версия GeoIP Country от MaxMind.

В тестировании приняли участие несколько популярных решений и мой «велосипед» на эту тему.
Читать дальше →
Всего голосов 66: ↑57 и ↓9+48
Комментарии93

Coder vs. Developer vs. Engineer — а какой Job Title у тебя, %username%?

Время на прочтение12 мин
Количество просмотров70K
Computer Scientist, Software Engineer и Coder заходят в бар.
— О, а вот и программисты! — окликает их бармен...


Я знаю людей, которые программируют уже не один десяток лет, но обижаются, когда их называют "программистами". А по запросу Coder vs Developer vs Software Engineer в гугле находится 113 000 000 ссылок: 1 2 3 4 5 6 7 8 9 … 113 000 000. Что интересно, можно найти совершенно противоположные мнения об одном и том же. С чем-то я согласен, а с чем-то в корне нет.

Последние же несколько лет так вообще постоянно подливают масло в огонь, появляются какие-то совсем странные программисты, которые называют себя Creative Technologist, Creative Coder и Interactive Developer.

Давайте же попробуем разобраться.
Читать дальше →
Всего голосов 148: ↑132 и ↓16+116
Комментарии129

Уменьшаем размер своего iOS приложения

Время на прочтение3 мин
Количество просмотров7.1K
Хочу поделиться способом, который позволит сэкономить несколько мегабайт «лишнего» веса в вашем iOS приложении. Зачем это может понадобиться? Во-первых, если ваше приложение чуть больше 20 Мб, то его нельзя будет скачать по 3G, а только используя Wi-Fi или синхронизацию c iTunes (ограничение со стороны Apple). Ну, а во-вторых, если вы любите все оптимизировать или просто хотите чуть-чуть сократить время загрузки вашего апа.
Все нижеперечисленные пункты я проверял и использовал в своем апе, сэкономив суммарно около 4 Мб. Кажется не очень то и много, но если, например, умножить на 5000 тысяч загрузок в день, то уже получим около 20 Гб сэкономленного трафика. Итак, приступим.
Читать дальше →
Всего голосов 27: ↑20 и ↓7+13
Комментарии20

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

Время на прочтение9 мин
Количество просмотров40K
Прослушав вебинар «How Google Tests Software» я был так вдохновлен, что решил записать некоторые тезисы. Эта статья и есть мой конспект. Прежде всего, я должен внести ясность относительно ее содержания. Это не дословный перевод. Здесь описаны только те вещи, которые показались мне важными. Проще говоря, здесь описано не все, что прозвучало в вебинаре. Так же существует вероятность, что я понял что-то не до конца или даже понял неправильно. Поэтому горячо рекомендую прослушать вебинар самостоятельно.
Его ведет Джэймс Витакер, который в данный момент занимает пост технического директора по тестированию ПО в Google. Джэймс совместно с коллегами готовится выпустить одноименную книгу. В ней можно будет получить исчерпывающую информацию о том, как проводят тестирование GoogleMaps, Google+, ChromeOS, Android и т.д…
Читать дальше →
Всего голосов 224: ↑217 и ↓7+210
Комментарии52

Параллельная загрузка JavaScript и CSS без блокирования парсинга страницы

Время на прочтение5 мин
Количество просмотров67K
Известно, что следуя идеям старой школы, а именно, добавляя ссылки на JS и CSS в страницы, может обернуться большим временем загрузки страницы. Браузер отображает страницу по мере скачивания, но останавливается, если натыкается на тег script со ссылкой, до того момента, пока скрипт не будет загружен и выполнен. Сайты стали использовать всё большее количество скриптов, начальное отображение страницы занимает всё больше времени, к примеру, на этой странице, которую вы читаете, 13 скриптов, 7 из которых находятся в head'е. Ко всему прочему, некоторые браузеры по-прежнему придерживаются ограничений на одновременное количество загрузок с одного хоста.

Сразу предлагаю принять, что все JS файлы минимизированы, и передаются в сжатом виде.

Существует несколько решений, как то:
— поместить стили и скрипты прямо в страницу;
— установка аттрибутов async/defer тегу script;
— склеить все скрипты в один файл;
— помесить ссылки на скрипты в конец body;
— разместить все файлы на CDN/на разных хостах;
— свой вариант…

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

Началось всё, конечно, с того, что я взялся за один проект, и в какой-то момент мне показалось, что простенькая страница достаточно долго загружается, и посмотрел на график загрузки, и на результаты YSlow. Огонь на секунду потух в моих глазах, но зная, что может быть лучше, я полез искать,
как сделать лучше.
Всего голосов 94: ↑89 и ↓5+84
Комментарии49

Как дуэт блогеров меняет индустрию модных фотографий анимированными синемаграфами

Время на прочтение4 мин
Количество просмотров3.1K
image
Синемаграф, созданный во время Нью-Йоркской недели моды в прошлом месяце

Восходящие звёзды Джейми Бек и Кевин Бёрг составляют дуэт, стоящий за бешено популярным Tumblr-блогом From Me To You.

(Можно было бы заявить, что эти звёзды уже взошли, учитывая их недавние кампании с Ralph Lauren и Juicy Couture, фотостатью в New York Times и появление в Lucky Magazine, но мы уверены, что это только начало.)

28-летняя Бек и 30-летний Бёрг сочетают необычный набор талантов, который привлекает не только внимание Tumblr-сообщества, но и растущий список брендов и редакторов.

Бек — фотограф, главная модель и стилист блога. Она использует свои навыки пинапа, макияжа и создания причёсок, а также винтажный гардероб для создания гламурных образов таких американских икон, как Одри Хёпберн и Грейс Келли.

Бёрг больше занимается технической стороной, создавая дизайн блога и собственно синемаграфы — анимированные GIF-изображения, которые выглядят как движущиеся фотографии. Кроме того, он — как я понял из встреч с одним из их клиентов и их менеджером, Карен Робинович из DBA — занимается деловыми отношениями, отмечая пожелания клиентов и сроки выполнения.
Читать дальше →
Всего голосов 84: ↑74 и ↓10+64
Комментарии44

Секрет объектно-ориентированной разработки в Rails

Время на прочтение10 мин
Количество просмотров2.7K
Сегодня мы предоставим вашему вниманию перевод поста Стива Клабника (Steve Klabnik), известного разработчика, приверженца Ruby, одного из победителей Ruby Hero Award этого года. Что это за награда? Она присуждается победителями прошлого года тем участникам сообщества, которые наиболее проявили себя: создали значимый обучающий контент, разработали плагины и гемы, участвовали в проектах с открытым кодом. Такая награда была создана для того, чтобы отметить наиболее проявивших себя людей и дать им признание, которое они заслуживают.
Пообщаться со Стивом можно будет на конференции в Киеве RubyC 5-6 ноября этого года.


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

Мне кажется, эти люди также считают эту вещь уникальной. Это не когда люди, не умеющие писать хороший код, стараются, но все равно получается плохо. Это как флаг, сигнал. Теперь, когда я вижу, как кто-то внедряет эту вещь, я сразу думаю: «он шарит». Возможно, я слишком сильно доверяю своему чувству, но эта продвинутая техника разработки предлагает множество взаимосвязанных преимуществ вашим Rails приложениям, легко применима и ускоряет тестирование на порядок или больше. К сожалению, для многих начинающих Rails разработчиков это неочевидно, но я хотел бы, чтобы вы писали код лучше и вот я здесь, чтобы, с вашего позволения, «раскрыть секрет» и поделиться этой мощной техникой с вами.

Читать дальше →
Всего голосов 60: ↑53 и ↓7+46
Комментарии19

Программизм: история одной болезни

Время на прочтение7 мин
Количество просмотров12K
Вероятно, в этой статье нет ни одной новой или свежей мысли, мало того, я уверен, что вы уже не раз читали нечто подобное. Статья не претендует и на то, чтобы быть истиной. Ее содержание – плод собственного опыта, проб, ошибок и одновременно выжимка из тех знаний, которые удалось перенять от коллег, прочитать на Хабре и в других местах. Наверное, для каждого конкретного индивидуума то, что сказано в этом тексте, будет сильно отличатся от действительности, но, я уверен, многие смогут узнать в описании себя. Первая стадия, наверное, не очень характерна для программистов, которые не занимались олимпиадным программированием в бытность студентами или учениками, а вот следующие уже практически никак не зависят от этого фактора.

Стадия первая. Рождение


«Я программист. Я олимпиадник. Я знаю что такое «о»-маленькое. Я знаю, что такое «О»-большое. Я понимаю, чем отличается «эн-квадрат» от «эн-факториала» и почему они оба стыдливо прячутся при виде «эн-логарифм-эн». Сейчас я приду на проект и перепишу эту тормозную кашу из кода так, что она будет работать в много раз быстрее! Смотрите, я знаю алгоритм Кнута-Морриса-Пратта! А здесь можно сэкономить одно сравнение строчек на равность! А если эту рекурсию развернуть в цикл, то за счет экономии вызовов методов и выделения памяти в стэке… Что, программа тормозит? Сейчас я посмотрю код… Вот! Смотрите, здесь вместо двух вложенных циклов можно написать один и использовать бинарный поиск вместо внутреннего!»

Знакомтесь, это первая стадия. Она, в отличие от следущих, особенно характерна именно для олимпиадников. Пациент думает о том, как написать быстрый код. Он одержим быстрым кодом. К сожалению, наличие быстрого кода не всегда делает быстрым программный продукт в целом.
дальше все будет хуже
Всего голосов 329: ↑307 и ↓22+285
Комментарии137

Тюнинг nginx

Время на прочтение8 мин
Количество просмотров96K
Статья написана по материалам моего доклада на CodeCamp 2009.

Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

Читать дальше →
Всего голосов 102: ↑100 и ↓2+98
Комментарии69

Что должен знать о времени каждый программист

Время на прочтение3 мин
Количество просмотров97K

Некоторые замечания о времени

  • UTC: время на нулевом меридиане называется Всемирное координированное время, Universal Coordinated Time. Несовпадение акронима было вызвано необходимостью универсальности его для всех языков.
  • GMT: ранее вместо UTC использовалось среднее время по Гринвичу (Greenwich Mean Time, GMT), так как нулевой меридиан был выбран так, чтобы проходить через Гринвичскую королевскую обсерваторию.
  • Прочие часовые пояса могут быть записаны как смещение от UTC. Например, Австралийское восточное стандартное время (EST) записывается как UTC+1000, то есть время 10:00 по UTC есть 20:00 по EST того же дня.
Читать дальше →
Всего голосов 250: ↑237 и ↓13+224
Комментарии100

Capistrano и php

Время на прочтение8 мин
Количество просмотров32K
image Всем привет. Сегодня я хотел бы ещё раз поговорить о замечательном deploy-ере Capistrano.

Напомню, что Capistrano — это Open Source-ный инструмент для выполнения скриптов на нескольких серверах, который в основном используется для web приложений. Он позволяет автоматизировать процесс развертывания новой версии на одном или нескольких web серверах и включает поддержку таких задач, как например изменение базы данных.

Capistrano написан на Ruby и является «модулем» (или компонентном, не знаю как лучше) фреймворка Ruby on Rails.

Данный топик по большей части является переводом туториала со страницы проекта на github-е с некоторыми дополнениями, изменениями и сокращениями специфичными для php (или для «не RoR»). Здесь не будут рассматриваться вопросы работы с несколькими серверами и базой данных, это всего лишь небольшое пособие для начинающих.

Итак, допустим на нашем локальном компьютере в паке /path/deploy/from находится приложение написанное на языке php. У этого приложения есть git репозиторий находящийся по адресу example.net/project.git с актуальным кодом. Также у нас есть хостинг по адресу example.com с ssh доступом и папкой /path/deploy/to куда мы собираемся залить наши файлы. Мы не хотим постоянно возиться с ftp клиентом и решили потратить несколько часов для того, чтобы разобраться в деплойере capistrano. Давайте приступим.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии15

Связка rvm + Rails + Nginx + Unicorn или деплоим рельсы правильно

Время на прочтение9 мин
Количество просмотров55K
Целью данной заметки я ставлю в подробностях описать организацию сервера для Rails приложений в самой популярной на данный момент связке: rvm + Rails + Nginx + Unicorn. К написанию статьи побудило отсутствие полной пошаговой документации по этой связке, понятной не только ядреным профессионалам этой области. Далее я попытаюсь подробно, шаг за шагом, описать идеологически правильный процесс организации сервера для обслуживания нескольких Rails приложений (на примере одного) — если у вас есть абсолютная уверенность в том, что на подопытной машине никогда не будет работать более одного приложения — настройка может быть существенно короче и проще. Хочу предупредить, что тонкости, касающиеся работы приложения под высокой нагрузкой в статье не описываются, т.к. цель ставилась иная — заставить работать приложение в связке и сократить количество конфликтов с другими приложениями до минимума.
Читать дальше →
Всего голосов 68: ↑63 и ↓5+58
Комментарии135

Волшебное решето Эратосфена

Время на прочтение4 мин
Количество просмотров74K
image
Наверняка все, кто читает этот пост не раз использовали, или хотя бы слышали о решете Эратосфена — методе отыскания простых чисел. Сама проблема получения простых чисел занимает ключевое место в математике, на ней основаны некоторые криптографические алгоритмы, например RSA. Есть довольно много подходов к данной задаче, но в этой статье я остановлюсь на некоторых модификациях самого простого из них — решета Эратосфена.
Читать дальше →
Всего голосов 83: ↑74 и ↓9+65
Комментарии35

Munin — мониторинг сети это просто!

Время на прочтение3 мин
Количество просмотров111K

В жизни каждого системного администратора рано или поздно наступает момент, когда глаз и рук уже не хватает уследить за всеми серверами, то там, то там возникают какие-то проблемы, а для решения их очень хочется узнать что же было «до этого». И именно здесь на выручку приходят они — вел
икие и ужасные системы мониторинга. Долгое время я пользовался Nagios, и до сих пор, при всём удобстве, иначе как монстрообразным назвать не могу. В итоге реально использовались лишь 10% возможностей этой прекрасной системы. Всё изменилось, когда я наткнулся на Munin — прекрасное решение для мониторинга небольших сетей.
Обзор системы
Всего голосов 37: ↑33 и ↓4+29
Комментарии42

Тайм-менеджмент — это действительно просто

Время на прочтение3 мин
Количество просмотров12K
Сначала они не замечают тебя, потом смеются над тобой, потом борются с тобой. А потом ты побеждаешь.
Махатма Ганди

Эффективность направлена на максимальное приближение к цели, рациональность — на максимально экономное выполнение процесса.
Тим Феррис

Был очень рад прочитать сегодня статью «Тайм-менеджмент: эволюция». Человек рассказал, что и как получилось. Хочу рассказать немного о том, почему, на мой взгляд, так произошло.

Я являюсь автором вебинара по управлению временем и ряда других популярных статей, в частности, про модели реальности.

Сейчас, спустя год, могу сказать, что тайм-менеджмент — это очень просто. После того, как все принципы перешли на уровень подсознания.

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

Итак, я считаю, нужно уметь делать следующее:
  • Не делать ненужные вещи (принцип Парето), на каждую задачу смотреть под углом, как ее не делать, как отложить ее решение, или как передать другому;
  • Выделять нужные вещи. На практике часто нельзя поставить приоритеты 1,2,3 — поэтому нужно составить список нужных вещей, затем отфильтровать с точки зрения отказа от каждой задачи;
  • Делать до конца одну-две нужные (читай, важные) вещи в день, и делать эффективно. Значит, научиться оценивать свою эффективность и постоянно ее повышать, доводя каждую задачу до логического конца.

Читать дальше →
Всего голосов 116: ↑92 и ↓24+68
Комментарии78

Архитектура REST

Время на прочтение4 мин
Количество просмотров920K

Введение


В русскоязычной части Интернета присутствует большое количество статей, посвященных веб-службам на основе SOAP и XML-RPC, но почему-то почти ничего нет про вполне заслуживающую внимания (но менее распространенную) архитектуру RESТ.

В данной статье описываются основы этой архитектуры, возможности и примеры её использования.

Читать дальше →
Всего голосов 85: ↑78 и ↓7+71
Комментарии75

Разработчики не любят тестировщиков. Потому что не умеют их использовать

Время на прочтение6 мин
Количество просмотров5.2K
Сказки про ссоры разработчиков и тестировщиков когда-то были правдой, но сейчас таких конфликтов почти не встретишь. Спокойная совместная работа над выпуском ПО, ориентация на общие цели, бла-бла-бла…

Но если присмотреться внимательнее, то под видимостью продуктивного сотрудничества зачастую скрывается абсолютное непонимание разработчиков: «зачем эти тестеры вообще нужны??». Это непонимание нередко является взаимным, и несмотря на кажущуюся миролюбивость, оставляет в совместной работе лишь видимость продуктивности.
Читать дальше →
Всего голосов 49: ↑39 и ↓10+29
Комментарии29

[Перевод] 7 смертных грехов в разработке ПО

Время на прочтение6 мин
Количество просмотров3.7K
Друзья, представляю вам перевод статьи «The 7 deadly sins of software development» автора Neil McAllister, опубликованной на infoworld.com.

Читать дальше →
Всего голосов 80: ↑66 и ↓14+52
Комментарии32

Информация

В рейтинге
Не участвует
Откуда
Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность