Как стать автором
Обновить
41
0
ETC.Dema @ETCDema

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

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

Делаем правильную платформу или Как повторить Google

Время на прочтение5 мин
Количество просмотров2.7K
Введение
Сегодня я расскажу о проектировании высоко-нагруженных отказоустойчивых систем. Акцент будет поставлен практическую разработку и жареные факты, а не на сухую теорию. После прочтения вы не испугаетесь разработки сервиса с миллиардом пользователей, если у вас будет достаточное количество серверов. Тема весьма обширна, но я постараюсь быть кратким и лаконичным.
Читать дальше →
Всего голосов 131: ↑76 и ↓55+21
Комментарии299

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

Время на прочтение6 мин
Количество просмотров66K
Введение

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

Вычисляем плохих ботов

Время на прочтение1 мин
Количество просмотров2.8K
image
Это ничуть не руководство к действию, а только лишь некоторые мои умозаключения, которые не являются истиной в последней инстанции.
Итак, давайте рассмотрим ситуацию, когда по сайту лазят боты и занимаются там разными неприглядными делами: сканируют, спамят через формы, грабят контент и так далее. Но по сайту могут пройтись и хорошие роботы — с поисковых систем, которых обижать нельзя. Необходимо определить плохих ботов и заблокировать их.

Итак, ряд простых, но полезных советов
Всего голосов 78: ↑62 и ↓16+46
Комментарии52

Разбираемся с анимацией в jQuery

Время на прочтение4 мин
Количество просмотров31K
imageЗдравствуйте. Сегодняшний топик я хотел написать о том, что механизм анимации в jQuery не эффективен, создает кучу таймеров, каждый из которых работает по отдельности, что приводит к чрезмерно частой перерисовки контента и сильно тормозит браузер, и хотел описать некоторые приемы написания «правильной анимации». В ходе подготовки примеров я понял, что я ошибался. Механизм анимации jQuery действительно не эффективен, создает кучу проблем, но причины этих проблем вовсе не в создании большого количества таймеров, а в нечте совсем другом, и, кажется, я добился замечательных результатов в устранении этих проблем.
Читать дальше →
Всего голосов 166: ↑160 и ↓6+154
Комментарии35

Истинная цена вещей

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

Но есть и другие причины покупать меньше. Множество причин.

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

Жизнь предмета? Лео, ты спятил?

Ну да, возможно — в конце концов, я ведь разговариваю сам с собой в этом посте. Но выслушай меня, о Гипотетический Читатель из моей головы.

Предмет не рождается в магазине. Он рождается в деревьях (если это дерево), в шахтах (если это метал), в глубинах мира (в случае нефтесодержащих материалов, таких как пластик, синтетические ткани и т.д.), или, возможно, во всех трех и более местах, если это комбинация материалов. Он рождается, когда все эти природные материалы добыты и собраны (с большими затратами и вредом для окружающей среды), и доставлены на завод, который неизбежно загрязняет природу. Затем ему придается конечная форма (часто на нескольких различных заводах), он отправляется на склад, и, в конце концов, продавцу.
Читать дальше →
Всего голосов 80: ↑55 и ↓25+30
Комментарии92

Server-side JS (v8+Node)

Время на прочтение2 мин
Количество просмотров12K
Недавно видел на хабре спор по поводу того, что нам не нужны никакие скриптовые языки, кроме javascript. Утверждение, конечно, спорное, но меня заинтересовала возможность применения javascript на сервере.
Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии82

Помощь в отладке для Visual Studio — Debugger Visualizers

Время на прочтение3 мин
Количество просмотров9.6K
Microsoft Visual Studio - Debugger
Отладка любой программы сложна сама по себе и что бы, ее хоть как то облегчить – можно воспользоваться визуализаторами для Visual Studio (Debugger Visualizers).

Визуализатор – это компонент пользовательского интерфейса отладчика Visual Studio. Он создает диалоговое окно или другой элемент интерфейса, в котором переменная или объект отображается осмысленным образом, подходящим для этого типа данных. Например, HTML-визуализатор интерпретирует строку HTML и отображает результат в том виде, в каком она будет выглядеть в окне обозревателя, визуализатор точечных рисунков распознает структуру точечного рисунка и отображает его и т. д. Некоторые визуализаторы позволяют не только просматривать, но и редактировать данные.

Отладчик Visual Studio содержит четыре стандартных визуализатора. Это визуализаторы текста, HTML и XML, которые работают со строковыми объектами, и визуализатор наборов данных, который работает с объектами DataSet, DataTable и DataView.

Кроме стандартных визуализаторов из поставки Visual Studio, существуют еще и другие — вот о них и пойдет речь дальше.
Читать дальше →
Всего голосов 62: ↑52 и ↓10+42
Комментарии13

Древнейший стресс-менеджмент

Время на прочтение2 мин
Количество просмотров5.5K
Хочу поделиться с вами одной интересной медитацией (медитация как известно — древнейший способ стресс-менеджмента), которой поделился со мной мой учитель в ту светлую пору, когда я увлекался разными духовными практиками.
image
С моим учителем ей поделился в своё время один лаосский монах. И дошла она до нас в неизменном виде (не считая перевода) через много столетий.

Цель этой медитации — добиться стабильного уравновешенного состояния и стрессоустойчивости, проще говоря перестать нервничать, психовать и переживать по различным поводам, а уметь в любой ситуации принимать обдуманные хладнокровные решения (поругался с заказчиком, обманули подрядчики, любимая девушка мозг вынесла, начальник идиот, сайт лёг, да мало ли поводов попариться).
Читать дальше →
Всего голосов 110: ↑80 и ↓30+50
Комментарии142

Создание слайдеров с анимированной прокруткой, используя Javascript

Время на прочтение4 мин
Количество просмотров14K
В этой статье я хотел бы поделиться своими практическими наработками в создании анимированных слайдеров, используя JavaScript.
Читать дальше →
Всего голосов 66: ↑64 и ↓2+62
Комментарии48

Вышел ASP.NET MVC V2 Preview 1 — разбор полетов

Время на прочтение5 мин
Количество просмотров1.1K
imageНа днях MVC 2 Preview 1 стал доступен широкой публике. Этот релиз фреймворка несет в себе весьма значительные нововведения, которые я постараюсь кратко описать в этой заметке. Прежде всего, необходимо заметить, что как и в случае с первой версией, статус “Preview 1” – означает техническую демонстрацию изменений и нового функционала. Ожидается, что заинтересованное сообщество разработчиков протестирует и оценит этот релиз и на основе отзывов в MVC Framework  будут внесены изменения для выпуска Preview 2 и так далее, до финального релиза второй версии. Другими словами, данный релиз не предназначен для использования, что называется, “в production”. Весьма вероятно, что последующие релизы могут содержать более или менее значительные изменения, из-за которых, может быть нарушена совместимость проекта написанного для preview 1 с выпусками preview 2 и так далее.
Читать дальше →
Всего голосов 33: ↑24 и ↓9+15
Комментарии10

Скругленные углы на чиcтом CSS без JS без картинок с анти-аллиасингом

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

Хочу заметить, что это не улучшение какого-то из существующих методов, а совершенно новый (по крайней мере, я нигде не смог найти — наверное, плохо искал ;) метод. В статье 38 статей о создании закругленных углов на сайтах данный метод также не был упомянут.

Итак, что же мы имеем: чистый CSS, без единой картинки, без JavaScript (хотя и с ним, для демонстрации, тоже сделаем), с анти-аллиасингом (то есть плавные переходы), прозрачные углы (то есть в фоне может быть что угодно), тянущийся по высоте и ширине и, конечно же, кроссбраузерный метод.

Не томи
Всего голосов 123: ↑116 и ↓7+109
Комментарии75

Расширяем и улучшаем Cache в ASP.NET

Время на прочтение5 мин
Количество просмотров8.9K
Про ASP.NET-объект Cache наверняка знает каждый web-разработчик на платформе .NET. Совсем не странно, ведь это единственное решение для кэширования данных web-приложения в ASP.NET, доступное прямо из коробки.
Достаточно функциональный и легкий, снабженный механизмами приоритета, вытеснения, зависимостей и обратных вызовов, Cache хорошо подходит для небольших приложений, работая внутри AppDomain. Кажется, Microsoft предусмотрела все, что необходимо… Но я, тем не менее, хочу сделать его еще немного лучше. Чем же именно?
Об этом я расскажу под катом
Всего голосов 28: ↑21 и ↓7+14
Комментарии21

Учимся проектировать на основе предметной области (DDD: Domain Driven Design)

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

1. Введение



В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слуху, но для многих являющихся тайной за семью печатями, а так же привести ряд ресурсов, с которыми неплохо было бы познакомиться при желании продолжить развитие в проектировании на основе предметной области (DDD: Domain Driven Design).


Читать дальше →
Всего голосов 66: ↑54 и ↓12+42
Комментарии25

Кастомизация input type=”file” с помощью CSS

Время на прочтение2 мин
Количество просмотров64K
Есть несколько способов кастомизации (изменения внешнего вида) инпутов такого типа. Все они обладают своими плюсами и минусами, но, на мой взгляд, предложенный мною вариант, выигрывает даже со своими минусами, коих всего один.
Читать дальше →
Всего голосов 60: ↑40 и ↓20+20
Комментарии57

Range, TextRange и Selection

Время на прочтение13 мин
Количество просмотров77K
Многим JavaScript-разработчикам приходилось сталкиваться с объектами, перечисленными в заголовке, например, при решении следующих задач:
— создание визуальных редакторов (wysiwyg),
— поиск в окне браузера,
— выставление BB-кода,
и т.д.

В этой статье автором предпринята попытка собрать перевод документации об этих объектах в одном месте + написать небольшие сопроводительные примеры. Перевод вольный, не дословный, так что если встретите неточность или корявую формулировку — пишите в комментариях.

В целом пост носит справочный характер, и, надеюсь, кому-то упростит разработку.

Читать дальше →
Всего голосов 96: ↑96 и ↓0+96
Комментарии28

Asterisk – система компьютерной телефонии уровня предприятия

Время на прочтение9 мин
Количество просмотров261K
Я хочу рассказать о свободном решении для компьютерной телефонии от компании Digium. Asterisk – это ATC созданная хакерами (в первоначальном смысле этого слова), а точнее, это супер конвергентная платформа компьютерной телефонии, распространяемая по лицензии GNU GPL, изначально разрабатываемая Марком Спенсером (Mark Spenser), позже ставшим президентом и техническим директором компании Digium. Благодаря коммерческой поддержке Его компании и лицензии GNU GPL Asterisk активно развивается и поддерживается тысячами людей со всей планеты.

Дaлее
Всего голосов 111: ↑108 и ↓3+105
Комментарии67

Yota-роутер или wimax2wifi за 15 минут

Время на прочтение3 мин
Количество просмотров11K
Часто возникает необходимость быстро или недорого подключить офис к интернету. Для этих целей отлично подходит новый Московско-Питерский провайдер беспроводного интернета, Yota, публичное тестирование которого некоторые и нас успешно провалили :)

Благодаря двум людям, Олегу, сделавшему альтернативную прошивку с расширенными возможностями к роутеру asus wl-500gp http://oleg.wl500g.info/, и Xanderу проведшему реверс инжениринг и создавшему драйвер yota-модема под linux http://code.google.com/p/madwimax/, появилась возможность создания yota-роутера http://wl500g.info/showthread.php?t=17005

UPD: Данные манипуляции более не актуальны. Прошивка от Олега последней версии поддерживает Yota по умолчанию, настройка в веб-интерфейсе. Ссылка — http://code.google.com/p/wl500g/. by Paskal.

Процедура активации модема немного запутана и требует некоторых подготовительный работ, с которыми знакомы только знатоки wl-500-го. Целью данной статьи является упрощение процесса активации до трех простых этапов:
  1. подготовительный,
  2. смена прошивки,
  3. запуск скрипта активации модема.

Читать дальше →
Всего голосов 53: ↑48 и ↓5+43
Комментарии35

Социальные аспекты руководства, или как же всё таки «пинать» сотрудников. 2 года спустя.

Время на прочтение6 мин
Количество просмотров6.7K
Статья про «пинание», «закручивание гаек» и контроль задач, разные стили общения и руководства, про сложности делегирования, самомотивацию сотрудников.

Вопрос: Прочитал вашу статью «Социальные аспекты разработки» и был ошеломлен! До этого момента я считал, что такие идеи лишь из области утопий и невозможны к реализации.

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

99.77 КБ

Я вскоре отстранился от управления нашей компанией и занялся тем, чем мне всегда хотелось заниматься – созданием игр, собрал команду разработчиков, нашел инвесторов и запустил проект по созданию онлайн-игры в жанре стратегии. Однако в полной мере реализовать «бизнес с человеческим лицом» у меня, похоже, опять не получается.

Симптомы: падение дисциплины, низкая скорость разработки, потеря энтузиазма.
Свой же стиль руководства я бы теперь назвал «попустительским».

И вот, как только мое терпение кончилось, и я собрался на следующий день «закрутить как можно туже гайки», я натыкаюсь на вашу статью. Это было как бальзам на больное сердце. Я сразу с великим облегчением отказался от идеи пинания, но понимаю, что делать все равно что-то надо, а с чего начать не знаю? Хотелось бы вашего совета.

Ответ: В 2 словах это,
— Вносите элементарную организованность в процесс. Это не «пинание» — это ваша работа.
— Разный стиль. С крутыми – искренне, с молодежью – дружелюбно, с «примадоннами» – сухо
— Используйте эмоции для «поджигания» людей. Прочитайте Возьмите эмоции с собой
— Используйте 4 модели руководства исходя из задачи и человека. Это вопросы — Может? Возьмет?
— Готовьтесь к тому, что у вас будут проблемы с Директивным стилем и Делегированием.
— Стремитесь к тому, чтобы у вас в команде были только люди с сильной самомотивацией, для которых ваша работа это хобби, страсть, любимое дело. Помогите разобраться в себе другим людям.
— Сплачивайте команду: cобирайте в одной комнате, проводите общие собрания, ставьте общие достойные цели.

Читать дальше →
Всего голосов 94: ↑87 и ↓7+80
Комментарии22

Памятка дизайнеру сайтов

Время на прочтение10 мин
Количество просмотров244K
Вторая версия статьи, расширенная и дополненая.

Большая часть готовилась для моего выступления на «РИТ: Клиентские технологии», куда я, к сожалению, не доехал.

 

Памятка дизайнеру сайтов

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

Первоначально эта памятка писалась мною для внутреннего пользования но, обрастая материалами, выросла в самостоятельную статью. Америку я не открыл, а просто собрал воедино и сформулировал ряд требований, которые должен учитывать дизайнер в процессе проектирования и оформления сайта.

Читать дальше →
Всего голосов 453: ↑444 и ↓9+435
Комментарии231

Иерархические структуры данных и Doctrine

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

Введение



Хранение иерархических данных (или попросту — деревьев) в реляционных структурах задача довольно нетривиальная и вызывает некоторые проблемы, когда разработчики сталкиваются с подобной задачей.

В первую очередь, это связано с тем, что реляционные базы не приспособлены к хранению иерархических структур (как, например, XML-файлы), структура реляционных таблиц представляет из себя простые списки. Иерархические же данные имеют связь «родитель-наследники», которая не реализована в реляционной структуре.

Тем не менее, задача «хранить деревья в базе данных» рано или поздно возникает перед любым разработчиком.

Ниже мы подробно рассмотрим, какие существуют подходы в организации хранения деревьев в реляционных БД, а также рассмотрим инструментарий, который нам предоставляет ORM Doctrine для работы с такими структурами.
Читать дальше →
Всего голосов 64: ↑63 и ↓1+62
Комментарии41

Информация

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

Специализация

Фулстек разработчик, Архитектор программного обеспечения
Ведущий
Веб-разработка
Vue.js
HTML
CSS
JavaScript
.NET Core
ASP.NET MVC
PostgreSQL
Linux