Search
Write a publication
Pull to refresh
1
0
bolnikh @bolnikh

User

Send message

На плохих компьютерах можно стать миллионером!

Reading time2 min
Views1.4K
Наверное, нет человека в Москве (и в Питере, Саратове, Самаре и в других городах), который не видел бы у своего подъезда, и в метро, объявления:

«Ремонт компьютеров – быстро, качественно, недорого! Диагностика бесплатно!» — и номер телефона.

image

Видя такую рекламу, я тут же вспоминал события десятилетней, а то и пятнадцатилетней давности.

В то время в МИФИ (Московском инженерно-физическом институте), в МГТУ им. Баумана, а также в МАИ я вёл курс лекций — как достичь успеха в жизни, как правильно общаться… (Был у меня и отдельный курс по сексу, ибо как раз в то время вышло первое издание моей книги «1001 вопрос про ЭТО», и я слыл «модной личностью».) Не было лекции, чтобы я не получил записки: «Дайте совет – каким бизнесом лучше начать заниматься?».

И я давал:
Читать дальше →

Chain Friends by MongoDB

Reading time2 min
Views3.5K
imageПро MongoDb было рассказано не так много, но относительно полно, например здесь. Хочу поделиться еще с одним практическим использованием этой БД — это построение цепочек друзей. Построение цепочек и концепцию кругов было использовано в Мойм Круге. Вот пример: Я — Иван Петров — Петр-Иванов — Киририлл Лавров — Вася Пупкин.

MongoDb было выбрано как высокопроизводительное хранилище данных, позволяющее быстро извлекать массивы структур данных. Традиционные key/value DB для этого не подходят, почему — поймете по ходу изложения статьи.

В данной статье рассмотрен опыт использования noSQL DB при построение «цепочек друзей» в небольшой соц-сети 300 тыс пользователей.
Читать дальше →

Как FriendFeed использует MySQL для хранения данных без схемы

Reading time7 min
Views3.3K

Условия


Мы используем MySQL для хранения любых данных FriendFeed. Наша база данных растёт вместе с числом пользователей. Сейчас у нас более 250 миллионов записей, это записи пользователей (post'ы), комментарии, оценки («likes»)

По мере того как росла база данных, мы время от времени имели дело с проблемами масштабируемости. Мы решали проблемы стандартными путями: slave-сервера, используемые только для чтения, memcache для увеличения пропускной способности чтения и секционирование для увеличения пропускной способности записи. Однако, по мере роста, использованные методы масштабируемости привели к затруднению добавлению новой функциональности.

В частности, изменение схемы базы данных или добавление индексов к существующим 10-20 миллионов записей приводили к полной блокировке сервера на несколько часов. Удаление старых индексов требовало времени, а не удаление ударяло по производительности, так как база данных продолжала использовать их на каждом INSERT. Существуют сложные процедуры с помощью которых можно обойти эти проблемы (например создание нового индекса на slave-сервере, и последующий обмен местами master'a и slave), однако эти процедуры настолько тяжелые и опасные, что они окончательно лишили нас желания добавлять что-то новое, требующее изменение схемы или индекса. А так как наши базы сильно распределены, реляционные вещи MySQL как например JOIN никогда не работали для нас. Тогда мы решили поискать решение проблем, лежащее вне реляционных баз данных.

Существует множество проектов, призванных решить проблему хранения данных с гибкой схемой и построением индексов на лету (например CouchDB). Однако, по-видимому ни один из них не используется крупными сайтами. В тестах о которых мы читали и прогоняли сами, ни один из проектов не показал себя стабильным, достаточно зрелым для наших целей (см. this somewhat outdated article on CouchDB, например). А все это время MySQL работал. Он не портил данные. Репликация работала. Мы уже в достаточной мере понимали все его узкие места. Нам нравился MySQL именно как хранилище, вне реляционных шаблонов.

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

Ремонт блоков питания от роутеров и другой техники Asus и D-Link за 10 минут

Reading time2 min
Views172K
Написать этот пост я решил, после прочтения многочисленных комментариев о том, что многим пришлось поменять роутер, так как он стал мигать всеми лампочками подряд, перестал загружаться и прошиваться! Упорно используя «Поиск», описания этой проблемы, к моему великому удивлению, я не нашел на Хабре. Хотя проблема известна давно и описана в Рунете. Бывает такое, по закону подлости, на следующий день как закончится гарантия. А обычно через 1.5-2.5 года эксплуатации. Всему виной, в 90% случаев, лишь блок питания (далее по тексту — БП). В сервисных центрах в ремонте отказывают, т.к. гарантия закончилась или впаривают новый БП по цене от 700 до 1200 рублей. Данная проблема случается в 3 роутерах из 10, оборудованных этими источниками питания. Обычно БП производят сторонние фирмы, а все «восторженные» отзывы пользователей о надежности оборудования, достаются именно D-Link и Asus! Стоимость деталей для ремонта — 10 рублей!
Итак, начнем!

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

Сервис для сборки Zend Framework в один файл

Reading time1 min
Views1.3K
Здравствуйте, уважаемые хабрачитатели!
Сей краткий пост посвящен небольшому сервису по сборке Zend Framework-a в один файл.
Зачем это делать, не раз уже писалось на хабре (например, тут), но если кому-то лень читать, я передам основной тезис: при использовании кэшера опкода (к примеру, eaccelerator) сборка фреймворка в один файл дает большой прирост производительности.
Сервис находится здесь. Кроме меня, его никто не тестировал, так что прошу сообщать о найденных багах.
На данный момент исходным материалом для сборок служит Zend Framework версии 1.10.2.
Буду рад, если кому-то это окажется полезным.

Создаём тему для Drupal. Часть 3

Reading time3 min
Views32K
image
Часть 1, Часть 2

Шаблоны


Шаблоны мы будем складывать в sites/all/themes/mytheme/templates. Создадим шаблоны page.tpl.php — для страниц, node.tpl.php — для контента, block.tpl.php — для блоков, comment-wrapper.tpl.php — для блока с комментариями, comment.tpl.php — для одного комментария, header.tpl.php — для шапки, footer.tpl.php — для подвала, region.tpl.php — для регионов. Также, по аналогии с препроцессами, мы можем создавать файлы типа node-story.tpl.php для отображения материала типа story или block-user.tpl.php для блока user. Это позволяет темизировать отдельно разные типы содержимого сайта.
Читать дальше →

Mantis + Subversion у себя на компьютере с Windows XP. Пошаговая инструкция для удобной организации работы с кодом

Reading time6 min
Views5.7K

Исторически сложилось, что багтрекер в нашей команде – это Mantis. Для работы над ошибками очень хорошая и простая в обучении система. Буквально садись и работай. Но для удобной организации работы ей явно не хватает связки с Subversion. В связке Subversion+Mantis помогают организовать работу с кодом небольшой команды программистов. Более подробно про организацию работы у нас я описал в прошлой статье.
А сейчас давайте поговорим, как установить Subversion у себя на компьютере и связать его с Mantis на сервере.
Читать дальше →

Подготовим и сдадим декларацию по УСН за 15 минут не выходя из дома

Reading time2 min
Views1.4K
Смертельный номер: сейчас с помощью сервиса "Мое дело" и любого клиент банка мы за 15 минут подготовим декларацию индивидуального предпринимателя на упрощенной схеме налогообложения и отправим ее в налоговую инспекцию, не выходя из дома.

Итак, друзья, засекаем время.

Делай Раз


Создаем выписку в клиент-банке в формате 1С за 2009 год. 3 Минуты.
Читать дальше →

Автоматизируем работу с сайтом за 5 минут на примере Yandex.Почты с помощью NetExport

Reading time7 min
Views10K
Иногда, бывает нужно автоматизировать некоторые процессы на чужом сайте. Залогиниться на сайт, скачать какой нибудь файл, открыть страничку. Часто приходится разбираться в коде сайта, чтобы найти, как правильно написать запрос curl.

Предлагаю Вашему вниманию способ, которым я сам пользуюсь, чтобы значительно облегчить себе жизнь и автоматизировать все и вся, от проверки почты, до загрузки данных в телебанке. Я постараюсь, на примере Yandex.почты показать, как можно очень быстро и почти без программирования сгенерить curl php скрипт для захода на любой сайт и загрузки контента в автоматическом режиме.
Читать дальше →

Инструмент для учета отработанного времени фрилансера — Tahometer.com

Reading time2 min
Views3.8K
Уважаемые коллеги, представляю на ваш суд стартап Tahometer (www.tahometer.com).

image

Задача Тахометра – отчитываться перед заказчиком о затраченном фрилансером времени, рассчитывать стоимость проделанной работы в соответствии с заданными почасовыми ставками.

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

Использование runit для своих сервисов

Reading time3 min
Views55K
Супервизор сервисов runit позиционируется как замена стандартным скриптам инициализации Unix.

Но на практике оказалось, что runit идеален для управления сервисами безотносительно инициализации и т.п.

Введение


Супервизор берёт на себя такой функционал, как:
  • превращение любого процесса в демон;
  • логгирование вывода процесса и ротирование логов;
  • запуск, остановка, рестарт, запрос состояния, управляющие скрипты для init.d;
  • выключение и запуск сервисов автоматически при появлении новых сервисов в списке либо удалении старых из списка;
  • возможность ведения нескольких независимых списков сервисов одновременно (например, для каждого пользователя отдельно и для системы в целом);
  • удобный API для управления сервисами.

Для большинства операционных систем runit уже входит в репозитории пакетов (apt-get install runit). Кроме того, мы имеем уже готовый набор рецептов для популярных сервисов (nginx, apache etc.).

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

Программирование: Практики которые я возьму с собой

Reading time3 min
Views4.3K
Я имею довольно небольшой опыт работы в сфере разработки программного обеспечения (всего 6 лет), но я уже накопил ряд полезных и правильных практик (по моему скромному мнению), которые можно использовать при создании программного обеспечения.

В основном описаны моменты которые касаются поддержки процесса разработки программного обеспечения, не затрагиваются темы планирования хода выполнения работ. Также не затронут процесс программирования и полезные плюшки для него (например расслоение системы на уровни, использование шаблонов проектирования). Но все ниже приведенное было и остается полезным для меня лично, и я буду рад если и вам на что нибудь сгодится :)
Читать дальше →

Качества успешного предпринимателя – Практическая хватка (2/11)

Reading time6 min
Views1.4K
Перевод второго поста Марка Састера из серии про качества успешного предпринимателя (здесь перевод первого поста).
_________

Это часть моей новой серии постов о том, что делает предпринимателя успешным. Исходно я публиковал их на сайте VentureHacks, одном из моих любимых сайтов для предпринимателей. Если вы там не были, то стоит зайти.

Серия была начата с разговора о том, что я считаю самым важным качеством: об упорстве.



2. Практическая хватка. Итак, вы упорный человек и никогда не сдаетесь. Очевидно, с этого мало толку, если ваша стартап-идея никуда не годится. Не думаю, что для создания хороших компаний требуются начитанные люди — часто это только мешает делу. Но вам нужно быть умным, и я предпочитаю тех, кто обладает житейской, практической мудростью. Есть люди, которые просто «рубят фишку» — их-то я ищу. Они на инстиктивном уровне понимают, как покупают их клиенты, и знают, как их вдохновить. Слабости конкурентов они чуют шестым чувством. Они выявляют благоприятные возможности, на которые никто еще не обратил внимание, и создают продукты, которые удовлетворяют соответствующие потребности.
Читать дальше →

Стартап Интернет-магазина часть2 (оплата и доставка)

Reading time9 min
Views9.9K
В этой статье продолжение темы стартапа интернет-магазина и на сей раз речь пойдет об оплате и доставке. Из комментариев к прошлой статье стало ясно, что уважаемые хабравчане желают видеть больше цифр, поэтому постараюсь сделать эту статью более прозрачной в плане понимания затрат и острых углов.
Итак…
Читать дальше →

Введение в Continuous Integration

Reading time5 min
Views178K
Недавно я попал на новый проект, с задачей создать небольшое приложение с нуля. Разговариваю с тестером:
— А как тебе новые версии поставлять?
— Можешь как все остальные на проекте, через SVN.
— То-есть ты сама билдить будешь?
— Да нет… Бинарники оттуда беру.


Оказывается, очень много программистов, даже имеющих в подписях слова вроде Senior или Superior никогда в жизни не стыкались с понятием CI, или слабо себе представляют что это такое. Не найдя отдельных публикаций на Хабре на эту тему, решил восполнить пробел, а заодно и по возможности заработать желанный инвайт.
Читать дальше →

Закачка файлов с depositfiles.com из консоли

Reading time1 min
Views5.5K
Пост не мой — просто попросили закинуть. Если понравилось, то почта автора для инвайта: jeka.eee.12@gmail.com. Уже получено — спасибо!

Функция для скриптов на bash, предназначенная для автоматизации скачивания файлов с файлообменника Depositefiles.com:
Читать дальше →

Обзор онлайн-справочников для Ruby On Rails

Reading time4 min
Views5.8K
Мало найдеться программистов (особенно начинающих), способных держать в голове названия всех нужных методов а так-же количество, порядок и назначение передаваемых им параметров. Для этого существуют справочники по API.

В этом посте я хотел бы собрать вместе несколько полезных, посвященных Ruby on Rails, справочных ресурсов (в том числе и по API), которые всегда удобно держать под рукой, в соседней вкладке браузера.

Речь пойдет о:
Читать дальше →

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity