Pull to refresh
-6
0

User

Send message

Архитектура программы на примере коммуникатора

Reading time7 min
Views11K
Хочу поделиться своим опытом в проектировании архитектуры программы. Архитектура — весьма важная вещь для проектов со сложной внутренней структурой и многочисленными внутренними связями. Ошибка в выборе способа решения может сильно аукнуться при дальнейшем развитии проекта, привести к лавинообразному росту сложностей и ошибок. Возможен даже момент, когда проще написать все с нуля, чем распутывать клубок взаимосвязей.
image
Для примера, возьму относительно простую архитектуру однопользовательского приложения. Например, коммуникатор — программу для сетевого общения, которая поддерживает множество разных протоколов, умеет менять внешний вид и должна обладать открытостью для добавления новых возможностей и дальнейшего развития.
Читать дальше →

Неофициальная трансляция ACM ICPC 2010 — как это было

Reading time6 min
Views978
Пост по мотивам прошедшего в пятницу финала ACM ICPC 2010, о том, как в буквальном смысле слова «на коленке» поднять зеркало умирающей под нагрузкой странички, прикрутить к нему чат с ее обсуждением, и не загнуться от нагрузки самому :)

Пост будет интересен скорее веб-программистам, нежели олимпиадникам.

Немного статистики, конфигов nginx, полезные трюки, а также ряд граблей, которые должны быть прекрасно известны людям с опытом, но на которые многие все равно часто наступают…

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

TDD для начинающих. Ответы на популярные вопросы

Reading time8 min
Views51K
Исходники проекта написанного с помощью TDD. Visual Studio 2008/C#
Для написания тестов использована библиотека xUnit, для создания mock-объектов – Moq.




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

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

Биржа электронных валют Cash 2 WebMoney

Reading time1 min
Views1.3K
Здравствуйте хабралюди, хочу выставить на ваш суд реализацию нашей с другом идеи.

image

Идея заключается в следующем, у большинства пользователей интернет рано или поздно возникает необходимость обменять ту или иную валюту на другую, либо вывести деньги в реал, или наоборот ввести в систему. Вы скажете, что для этого существует масса автоматических обменников в сети, но готовы ли вы платить комиссии за обмен достигающие 10%? А что если вам нужно обменять Яндекс на WebMoney? Такое направление с недавнего времени вообще запрещено во всех обменниках. И наконец как вывести электронную валюту в реал?
Читать дальше →

Якорная навигация на jQuery (graceful degradation)

Reading time2 min
Views5.3K
Недавно я наткнулся на интересный плагин для jQuery: BBQ — Back Button & Query Library.

И решил на ее основе сделать свой плагин для навигации на основе якорей. Задачи, которые я себе ставил:
  1. нормальная работа ссылок в условиях выключенного javascript (читай — нормальная индексация страниц поисковиками)
  2. поддержка обычных anchor-ссылок безо всяких дополнительных запросов
  3. поддержка отображения подгруженного контента в разных областях страницы

Результат можно посмотреть здесь. А еще можно почитать чуть подробнее.

UPD: дамы и господа, некоторые жалуются на недоступность странички (403 Forbidden), однако, я ничего такого не вижу. В комментах привели ссылку на рабочий вариант, который можно попробовать, если моя ссылка у вас не заработала: http://vbolshov.org.ru.nyud.net/anchornav/.

как это использовать

Ограничение доступа в интернет для приложений в Linux

Reading time2 min
Views26K
Иногда бывает необходимо запустить программу, предварительно заблокировав для неё доступ в интернет. Существует довольно простой трюк для решения этой задачи.

Итак, идея заключается в том, чтобы при запуске приложения устанавливать особый ID группы, который будет сигналом блокировки доступа для netfilter.

Шаг 1. Создаём группу-маркер и добавляем себя в неё


Создаём группу (В нашем случае группа будет называться noinet):
sudo groupadd noinet

Добавляем в неё текущего пользователя:
sudo gpasswd -a `id -un` noinet
Читать дальше →

Полиморфные связи. Маленькое дополнение

Reading time3 min
Views1.3K
В декабре на Хабре была хорошая статья, о полиморфных связях в Рельсах. Вот она. Перед тем как читать дальше, пожалуйста ознакомьтесь с ней.
Однако, у автора статьи осталось несколько неотвеченных вопросов. Вот на них то мы сегодня и найдем ответы.
Читать дальше

Shorewall: файрволл для всех

Reading time5 min
Views39K
Внезапно оказалось, что Shoreline firewall совсем не освещен на Хабре, несмотря на то, что является крайне удобным инструментом (и весомым аргументом против pf в холиварах) для настройки файрволла под линуксом.

Просьба не холиварить на темы «Линукс — говно, у нас в OpenBSD круче», «А у меня Kerio WinRoute, а вы все неудачники» и подобные.
Статья для тех, кто выбрал Linux из каких-то соображений и не хочет тратить уйму времени на изучение iptables (а там есть, где запутаться).

Посему, под катом простыня
Читать дальше →

19 необщеизвестных приёмов

Reading time5 min
Views2.1K
Заметка не новая, но я уверен, что и сейчас не все знают всё нижеперечисленное (Здесь и далее курсив переводчика).

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

Замер скорости в контроллерах — это очень просто. Используйте метод benchmark в любой модели.
Читать дальше →

Визуализация данных в вебе 3: Flash / Flex

Reading time2 min
Views6.2K
Добрый день!

Продолжаем говорить о визуализации данных в вебе. На сей раз поговорим о Flash / Flex библиотеках и компонентах.

Предыдущие топики:
Читать дальше →

nginx + apache. Кеширование

Reading time4 min
Views20K
Привет, %username%
Тут я хочу рассказать о том, как я настраивал кеширование на одном сервере, точнее VDS. Характеристики сервера: 2000MHz, 2GB RAM, 80Gb HDD, технология виртуализации — OpenVZ.
Было решено использовать Nginx версии 0.7.64. На сервере находилось около 200 сайтов. И несколько высоко нагруженных проектов. Вот эти самые проекты и давали ощутимые тормоза и нагрузку на сервер. Мы будем рассматривать DLE в этом примере.
Читать дальше →

7+ превосходных инструментов для оптимизации изображений

Reading time5 min
Views105K
Перевод статьи 8 Excellent Tools for Optimizing Your Images
К сожалению на момент перевода один из сервисов перестал работать. Но хабровчане предложили еще много хороших решений!

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

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

Почему российские компании катастрофически отстают от западных?

Reading time6 min
Views2.1K
Хочу поднять тему менеджмента и смежных с ним областей знания, так как считаю, что им уделяется крайне мало внимания на Хабре. Западные компании тратят огромные суммы на обучение своих менеджеров и развитие систем управления. Пришло время и нам обратить внимание на эти вопросы. (Осторожно, дальше много текста).

Мечты


Думаю, каждый посетитель Хабра хотя бы раз, но представлял себе день, когда на арену мирового IT-бизнеса взойдут российские компании и отвоюют большую часть покупателей и западных конкурентов. И казалось бы, у нас для этого есть все шансы: наличие талантливых программистов, большое количество людей увлеченных сферой IT, помогает специфика отрасли, позволяющая вести бизнес без границ и без значительного вмешательства чиновников и милиции, да и, в конце концов, перед глазами пример компании Google, которая как ни крути имеет русские корни!

image

Вынужден огорчить – ни у одной российской компании сейчас нет шансов стать хоть сколько-нибудь заметным игроком во всемирной паутине. Речь о построении успешной компании с долгосрочными конкурентными преимуществами, а не о копировании американских идей с добавкой нелегального контента. Не произойдёт это по ряду причин, которые, к сожалению, свойственны всему российскому бизнесу, включая IT-отрасль. И все эти причины относятся к
Читать дальше →

Привычки успешных фрилансеров на онлайн-биржах

Reading time4 min
Views2.4K
Тут в одном из постов было упомянуто, что русские фрилансеры не могут тягаться с зарубежными (имеется ввиду работа на фрилансерских сайтах). Я успел поиграть за обе стороны и на зарубежных сайтах, и на российских. После чего сделал небольшую подборку наблюдений.
Читать дальше →

Готовимся к Хабра-эффекту

Reading time3 min
Views13K
Наплыв посетителейЗаметка посвящена не столько возможным методам защиты (о них уже было много написано), сколько обзору небольшого списка для быстрой проверки при подготовке к возможных скачкам посещаемости. Судя по статистике нагрузки на электронные магазины на прошлой неделе (когда начался рождественский сезон продаж на Западе), даже для крупных магазинов время ответа может колебаться на 20%, что же говорить о менее крупных веб-сайтах?

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

Gource — визуализируем историю работы над проектом

Reading time1 min
Views22K
Спешу рассказать хабрасообществу о, относительно новом, дьявольски завораживающем проекте Gource которое еще не упоминалось. Это приложение позволяет визуализировать историю изменений в системе контроля версии. Отрисовывает невероятно красиво при помощи OpenGL.


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

Gnome Applets. Введение

Reading time5 min
Views4.5K
Апплет — это небольшое приложение, которое интегрированно в Gnome панель и выполняет какие — либо поэтапные действия. В этой серии постов, я хочу рассказать как создаются эти самые gnome applets, от простого к чему-нибудь к более сложному и интересному. Для создания апплетов мы будем использовать PyGTK, но в принципе писать апплеты для Gnome можно и с помощью связки С + GTK+.
Продолжение

Создание live-usb для бэкапа/восстановления системы

Reading time6 min
Views6.5K
Каждый раз, когда мне приходится делать резервную копию системы я искал незанятую USB флэшку, на которую заливал установочный образ ArchLinux и грузился в него. В этом способе был очень неприятный момент — мне приходилось искать незанятую USB флэшку размером >512 MiB, при том что под рукой всегда лежала SD карточка на 64 MB, которой для нужд бэкапа и восстановления вполне хватило бы. Но с SD карточкой была одна проблема — редкий дистрибутив мог загрузиться с нее на моем Eee PC 900. Перепробовав с дюжину различных мелких дистрибутивов, ни один из которых мне не подошел полностью, я решил сделать свою live систему.
Читать дальше →

Календарные типы данных в MySQL: особенности использования

Reading time6 min
Views81K
В MySQL 5 есть несколько типов данных для хранения даты и времени. Это TIMESTAMP, DATE, DATETIME, TIME и YEAR. Все они обладают своими особенностями, и выбор в пользу того или иного календарного типа должен производиться отдельно в каждой конкретной ситуации. Я хотел бы поделиться с вами результатом моего сегодняшнего миниисследования этих типов, в том числе в аспекте работы с временными зонами.


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

Information

Rating
Does not participate
Registered
Activity