Pull to refresh
128
0
Михаил Лавкин @LMik

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

Send message

Использование ActiveRecord для работы с Core Data

Reading time4 min
Views6.5K
Введение


Active Record — это паттерн проектирования приложений, использующих для хранения информации базу данных. Таблица базы данных отображается в виде класса приложения, а отображением объекта класса является строка таблицы.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments14

Закольцованные сети, или зачем нам STP

Reading time6 min
Views58K

Суть проблемы


Целью жизни коммутатора сетевого (он же свитч) является неустанная пересылка пакетов от отправителя получателю. Для оптимизации работы, свитч содержит т.н. CAM-таблицу, содержащую в себе адреса устройств, пакеты от которых он когда-то получал, и номера физических портов, из которых эти самые пакеты были получены.

Иными словами, если свитч недавно получил пакет от компьютера А в порт 1, то в таблицу заносится соответствие «комп. А» -> «порт 1», и дальнейшие пакеты, адресованные компьютеру А, автоматически пересылаются только в порт 1, и никуда больше, что экономит пропускную способность сети и делает неэффективными пассивные перехватчики траффика.

Но что делать свитчу, если приходит широковещательный пакет (broadcast)?
Логично предположить, что такие пакеты пересылаются во все порты, кроме того, откуда изначально были получены.
Что, при определённой конфигурации сети, может привести к весьма печальным последствиям…
Читать дальше →
Total votes 69: ↑65 and ↓4+61
Comments41

Жизненный цикл UIViewController'a

Reading time10 min
Views155K
Большинство прикладных приложения под iOS таким или иным образом используют UIViewController'ы. Там где UIKit фрэймворк — там и UIViewController'ы. Их много, они повсюду, они сидят в засадах и выглядывают из-за каждого угла. Поэтому, любой программист под iOS — будь он зеленым новичком, едва ступившим на тропу программирования, либо матерым профессионалом своего дела, должны знать о UIViewController'aх все.

Причиной написания данной поста является то, что, как оказалось, можно преспокойно программировать под iOS полгода, и не знать полностью о жизненном цикле UIViewcontroller'ов. И на небольших проектах это даже получается. Однако, когда приходится иметь дело с серьезным, достаточно большим проектом, то появляются определенные проблемы с нехваткой памяти, «неправильной» и «непонятной» работой контроллеров, пропажей данных, и еще со многими типичными проблемами, о которых будет написано ниже.

Так вот. В данном посте, я еще раз расскажу о жизненном цикле UIViewController'ов, расскажу о том, что и где стоит делать, и в каком случае. Пост ориентирован на разработчиков разных уровней, так что кто-то узнает для себя что-то новое, а кто-то найдет повод отпинать моменты, на которые стоит обратить внимание Junior'ов в команде.

Всех заинтересовавшихся, прошу
под кат
Total votes 70: ↑64 and ↓6+58
Comments43

Пьеса «Разработка многопользовательской сетевой игры.» Часть 2: Это страшное слово «протокол»

Reading time7 min
Views19K


Часть 1: Архитектура
Часть 3: Клиент-серверное взаимодействие
Часть 4: Переходим в 3D

Итак, продолжим создание многопользовательской игры.
Сегодня мы рассмотрим создание протокола передачи данных.
А также создадим заготовки TCP сервера и соответственно клиента.

Добро пожаловать в зрительный зал.
Total votes 88: ↑77 and ↓11+66
Comments69

Пьеса «Разработка многопользовательской сетевой игры.» Часть 1: Архитектура

Reading time3 min
Views21K
image

Часть 2: Протокол
Часть 3: Клиент-серверное взаимодействие
Часть 4: Переходим в 3D

В общем, как и обещал, публикую серию статей по разработке многопользовательской сетевой игры. Изначально я хотел просто накатать статейку по разработке серверной части на интересном языке Scala. Но понял, что одной статейкой для развертывания темы не получится обойтись. А писать очередной топик обо всем и ни очем, не хотелось изначально. Поэтому встречайте пьесу в трех действиях. В течении которой мы разработаем архитектуру проекта, реализуем серверную и клиентскую части…
Все помнят прикольные танчики на денди?
Ну вот на примере этих танчиков и будем разрабатывать сервер и клиент.

Добро пожаловать в зрительный зал.
Total votes 109: ↑100 and ↓9+91
Comments44

Автоматические хосты для веб-разработки (FreeBSD)

Reading time2 min
Views6K


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

Как вариант, можно скриптами обновлять конфиги apache и файл hosts.

Другое решение, настройка собственного DNS сервера с зоной верхнего уровня.
Это мы и сейчас и проделаем.

Итак, создадим зону ".dev" (используя демон named и apache под FreeBSD)
Читать дальше →
Total votes 45: ↑38 and ↓7+31
Comments21

Создание приложения на framework Cocos2d под iOS

Reading time5 min
Views11K
Здравствуйте, хабражители!

Первая моя игра была написана iPhone SDK про писающего мальчика, она очень тормозила на 3G и 3GS. Вторую сделал с меньшей нагрузкой на процессор, при этом я уже слышал о cocos2d, прочитав документацию про него, я решил к SDK, больше не возвращаться и начал программировать под эту платформу. В этой статье я не буду описывать как устанавливать cocos2d, это описано здесь, постараюсь не повторяться с этим постом. Могу лишь добавить есть стабильная 1.0.1 версия. В этой статье я расскажу как создать меню, анимацию и переход между слоями.

Итак, к делу.
Читать дальше →
Total votes 41: ↑33 and ↓8+25
Comments9

TOP 7 – за 7 дней. Маркетинг iPad приложений на Apple Store

Reading time3 min
Views9.4K
Начну не с самих методов раскрутки, а с подготовки, что является не менее важным, чем сама раскрутка и продвижение приложения. Сразу оговорюсь, что привожу в пример только платные приложения и российский Apple Store.

image
Читать дальше →
Total votes 71: ↑53 and ↓18+35
Comments62

Apache HTTP Server: Обслуживание нескольких HTTPS-хостов на одном IP-адресе

Reading time5 min
Views21K
При миграции сервера в облако возникла необходимость разместить несколько веб-сайтов, работающих по HTTPS на одном физическом IP-адресе.
При этом нужно было остаться на той же операционной системе CentOS 5.6 и штатном apache-2.2.19.
Готового решения для CentOS не нашел, поэтому предлагаю свой вариант решения.

Теория


Согласно RFC 4366, раздел 3.1. Server Name Indication это возможно.
Для полноценной работы это расширение должен поддерживать и сервер и клиент (браузер).

Практика


Поддержка расширения SNI согласно Wikipedia появилась в Apache HTTP Server начиная с версии 2.2.12.
Подробности есть в Apache Wiki.
Для работы расширения нужна библиотека OpenSSL версии 0.9.8f или выше.
Проблема в том, что в CentOS 5.6 встроен OpenSSL версии 0.9.8e, и «поднять» ему версию не так то просто, т.к. именно на эту версию завязано много других компонент.
Собирать отдельный OpenSSL и Apache вне дерева пакетов — неспортивно.
В процессе поиска решения наткнулся на альтернативу: библиотеку gnutls и модуль mod_gnutls.
Библиотека gnutls в системе тоже присутствует и тоже очень старая, правда достаточно безболезненно удаляется вместе с зависимостями.

В результате были собраны и установлены «свежие» пакеты gnutls и mod_gnutls, которые дали нужный функционал с минимальным влиянием на остальную систему. Под катом подробности по процессу сборки и примеры файлов конфигурации.
Читать дальше →
Total votes 32: ↑29 and ↓3+26
Comments32

NOC: Комплексный подход к управлению сетью

Reading time5 min
Views104K


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

Еще в начале 80-х комитет ISO выделил основные компоненты системы управления сетью. Модель получила название FCAPS. По версии ISO, для успешного управления сетью надо уметь управлять отказами (F), конфигурацией оборудования и сервисов (C ), собирать и обрабатывать статистику по потреблению услуг (A), оценивать производительность (P) и централизованно управлять безопасностью (S). Прошедшие три десятка лет не добавили ничего принципиально нового, и все задачи управления сетью так или иначе прыгают вокруг основных составляющих.

Коммерческие комплексы подобного рода весьма дороги и далеко не безгрешны, а среди open-source систем присутсвовал явный и откровенный пробел, что просто подталкивало на разработку своего велосипеда. В результате обобщения нашего личного опыта по созданию и эксплуатации сетей, после долгих проб и ошибок появилась система NOC
Читать дальше →
Total votes 69: ↑69 and ↓0+69
Comments52

Прозрачное кэширование в nginx для всех и каждого

Reading time2 min
Views114K
Представим, что у нас есть сайт, на который регулярно дают ссылки с хабра.
Нам нужно подготовить его к резким всплескам посещаемости. Как это сделать?

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

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

Читать дальше →
Total votes 100: ↑97 and ↓3+94
Comments65

Почему я не использую платёжный агрегатор…

Reading time7 min
Views65K
Оплата покупки на сайте — необходимый атрибут любого хорошего интернет-магазина. Это не просто правило хорошего тона, это значительное повышение оборотов. Способов оплаты в рунете много — электронные валюты Яндекс.Деньги, Киви, WebMoney, RBK Money, а также банковские карты, счета мобильных телефонов, смс микроплатежи и т.д. Как дать покупателям возможность оплачивать покупки любимым способом?
Для своего сервиса мы решили не заморачиваться и воспользовались услугами одного платежного агрегатора. Но по мере роста накопилось большое количество замечаний. Стало понятно, что агрегатор — временное решение, и рано или поздно от него придётся отказаться.

Тогда мы попытались подойти к задаче независимо и понять, в каких случаях стоит использовать платежные агрегаторы, а в каких — имеет смысл отказаться от их услуг.
Читать дальше →
Total votes 88: ↑76 and ↓12+64
Comments166

Настройка свитчей уровня доступа в сети провайдера

Reading time4 min
Views247K
В статье я расскажу о том, как мы (небольшой региональный провайдер) настраиваем коммутаторы уровня доступа.

В начале, кратко пробежимся по тому, что такое иерархическая модель построения сети, какие функции рекомендуют вешать на каждый ее уровень и как именно устроена сеть, на примере которой я буду излагать настройку свитча. Ну и затем настроим свитч исходя из предложенных требований.
Читать дальше →
Total votes 46: ↑38 and ↓8+30
Comments141

Голосовое дерево на Asterisk своими руками

Reading time4 min
Views102K
image

Доброго времени суток хабражители.

Хотелось бы поделиться опытом развертывания голосовых деревьев (IVR), с помощью Asterisk.
Для этого нам понадобится:
  • Машина с установленным Asterisk`ом
  • Телефонный номер, заведенный в Asterisk посредством SIP/H.323 от провайдера ip-телефонии, либо посредством аналоговой линии/цифрового потока Е1 через платы Digium
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments54

Bitcoin, генерируем монеты в общем пуле

Reading time7 min
Views258K
Криптовалюта Bitcoin продолжает развиваться, сложность генерации блока повышается с каждым разом. Торги на биржах идут уже на весьма существенные суммы. А вот генерировать в одиночку становится почти нереально.
Сегодня речь пойдёт о генерации монет коллективно — в общем пуле. В этом случае приз за генерацию блока разделяется между всеми участниками пула примерно пропорционально вкладу в генерацию блока.
За счёт большой суммарной вычислительной мощности пула генерация блоков происходит намного чаще, чем если работать в одиночку, но и приз каждому участнику меньше. В долговременном среднем получается примерно столько же (минус процент владельца пула), но зато равномернее.

Что такое Bitcoin, и как оно работает на хабре уже есть статьи. А вот о генерации в общем пуле информация весьма разрозненна даже в его родной вики. В этой статье рассказывается о механизме работы пулов, имеющихся пулах, клиент-программах и некоторых результатах.

Термины, пулы, программы, результаты, рассчёты, выводы...
Total votes 59: ↑54 and ↓5+49
Comments243

Инструменты поисковиков для продвижения сайтов

Reading time4 min
Views9K
В предыдущих статьях мы рассказали про базовые принципы поисковой оптимизации, при выполнении которых можно достаточно хорошо улучшить позиции своего сайта в результатах поиска.

Сегодня мы хотим рассказать о некоторых дополнительных возможностях, которые вы можете использовать при продвижении своего сайта через инструменты от самих поисковых систем Яндекс.Вебмастер и Google Webmasters.

Данный обзор инструментов идет в продолжение первых двух статей (см часть 1 и часть 2)

Сейчас мы разберем такие важные вопросы как:
  • Присвоение региона сайту
  • Формирование особых сниппетов
  • Обзор самых важных слов сайта
  • Анализ мета-описаний страниц сайта
  • Проблемы индексации
Эти инструменты хорошо известны профессионалам, но далеко не все, кто самостоятельно занимается продвижением своего сайта, знает о них. Эта статья именно для них.
Читать дальше →
Total votes 78: ↑60 and ↓18+42
Comments22

FreeBSD + PostgreSQL: тюнинг сервера БД

Reading time7 min
Views26K
Привет, Хабрсообщество!

Наверное, моя статья будет не интересна матерым сисадминам и покажется копипастом. Но я адресую ее тем, кто, как и я, будучи только разработчиком, впервые столкнулся с необходимостью еще и администрировать сервер, при этом решая задачи высоконагруженной БД. И чтобы гугл вас не проклял, постараюсь собрать в одном месте основные приемы для разгона сервера БД, которые мне успешно удалось реализовать.
Читать дальше →
Total votes 58: ↑52 and ↓6+46
Comments67

MongoDB или как разлюбить SQL

Reading time6 min
Views66K
Введение

Коллеги, при разработке приложений, мы каждый день сталкиваемся с потребностью в гибком хранении информации (обновлении, поиске по ней, и т.д.). Класс продуктов, которые решают этот круг задач, как все мы знаем — Базы данных. Но что это такое в нашем понимании? У многих «база данных» твердо ассоциируется с MySQL, таблицами и SQL-запросами. И это устраивает до определенного момента. Действительно, реляционные базы данных дают массу преимуществ в работе: поскольку данные имеют сильную связанность, не нужно контролировать целостность базы данных. Используя простой под-запрос можно выбрать количество комментариев к каждому посту в блоге. Используя JOIN нетрудно делать сложные связанные выборки и получать данные сразу о нескольких сущностях.
Читать дальше →
Total votes 129: ↑122 and ↓7+115
Comments99

Отчёт о встрече Apple Developers Community #3

Reading time3 min
Views8.8K
3 марта в Санкт-Петербурге прошла 3-я встреча разработчиков под iPhone/iPad.

image

На основе полученных отзывов с предыдущей встречи тематикой была выбрана всегда актуальная тема GameDev. За несколько часов докладчики рассказали нам про Monotouch, Unity3D и Cocos2d.

О докладах, докладчиках и встрече в целом расскажу под катом.
Читать дальше →
Total votes 28: ↑20 and ↓8+12
Comments18

Как проектировать программы и их интерфейсы под пользователя, или теория DISC для «нечайников»

Reading time6 min
Views8.4K
Как часто программист сталкивается с вопросом выбора целевой аудитории? Я, если честно, не могу особенно назвать себя программистом, но с этим связан очень тесно. Я заказчик, и по сути менеджер проектов. Как правило, этот вопрос возникает в момент, когда проектируешь новое приложение. Будь это модуль для 1С, веб сайт или приложение для iPhone – задача очевидна. Необходимо чтобы пользователю было удобно.
Как правило мы примеряем всё под себя – если мне понятно, мне удобно, значит и пользователю будет удобно. И на практике сталкиваемся с «нормальной» ситуацией, когда пользователь не может найти кнопку или функцию, которая для Вас, находится в очевидном месте. Итак давайте разберемся, откуда возникают такие недоразумения?
Читать дальше →
Total votes 54: ↑48 and ↓6+42
Comments43

Information

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