ETC.Dema @ETCDema
Пользователь
MongoDB или как разлюбить SQL
6 мин
66KВведение
Коллеги, при разработке приложений, мы каждый день сталкиваемся с потребностью в гибком хранении информации (обновлении, поиске по ней, и т.д.). Класс продуктов, которые решают этот круг задач, как все мы знаем — Базы данных. Но что это такое в нашем понимании? У многих «база данных» твердо ассоциируется с MySQL, таблицами и SQL-запросами. И это устраивает до определенного момента. Действительно, реляционные базы данных дают массу преимуществ в работе: поскольку данные имеют сильную связанность, не нужно контролировать целостность базы данных. Используя простой под-запрос можно выбрать количество комментариев к каждому посту в блоге. Используя JOIN нетрудно делать сложные связанные выборки и получать данные сразу о нескольких сущностях.
+115
Вычисляем плохих ботов
1 мин
2.8KЭто ничуть не руководство к действию, а только лишь некоторые мои умозаключения, которые не являются истиной в последней инстанции.
Итак, давайте рассмотрим ситуацию, когда по сайту лазят боты и занимаются там разными неприглядными делами: сканируют, спамят через формы, грабят контент и так далее. Но по сайту могут пройтись и хорошие роботы — с поисковых систем, которых обижать нельзя. Необходимо определить плохих ботов и заблокировать их.
Итак, ряд простых, но полезных советов
+46
Разбираемся с анимацией в jQuery
4 мин
31KЗдравствуйте. Сегодняшний топик я хотел написать о том, что механизм анимации в jQuery не эффективен, создает кучу таймеров, каждый из которых работает по отдельности, что приводит к чрезмерно частой перерисовки контента и сильно тормозит браузер, и хотел описать некоторые приемы написания «правильной анимации». В ходе подготовки примеров я понял, что я ошибался. Механизм анимации jQuery действительно не эффективен, создает кучу проблем, но причины этих проблем вовсе не в создании большого количества таймеров, а в нечте совсем другом, и, кажется, я добился замечательных результатов в устранении этих проблем.
+154
Истинная цена вещей
4 мин
5.9KПеревод
Частенько мы подумываем о том, чтобы урезать наши расходы, покупая меньше вещей, потому что мы хотим быть экономными и подкопить немного денег. Я полностью за.
Но есть и другие причины покупать меньше. Множество причин.
Цена вещи — это лишь одна причина, лежащая на поверхности. Когда мы что-то купили, мы приносим это домой и забираем жизнь еще одного предмета в этом мире.
Жизнь предмета? Лео, ты спятил?
Ну да, возможно — в конце концов, я ведь разговариваю сам с собой в этом посте. Но выслушай меня, о Гипотетический Читатель из моей головы.
Предмет не рождается в магазине. Он рождается в деревьях (если это дерево), в шахтах (если это метал), в глубинах мира (в случае нефтесодержащих материалов, таких как пластик, синтетические ткани и т.д.), или, возможно, во всех трех и более местах, если это комбинация материалов. Он рождается, когда все эти природные материалы добыты и собраны (с большими затратами и вредом для окружающей среды), и доставлены на завод, который неизбежно загрязняет природу. Затем ему придается конечная форма (часто на нескольких различных заводах), он отправляется на склад, и, в конце концов, продавцу.
Но есть и другие причины покупать меньше. Множество причин.
Цена вещи — это лишь одна причина, лежащая на поверхности. Когда мы что-то купили, мы приносим это домой и забираем жизнь еще одного предмета в этом мире.
Жизнь предмета? Лео, ты спятил?
Ну да, возможно — в конце концов, я ведь разговариваю сам с собой в этом посте. Но выслушай меня, о Гипотетический Читатель из моей головы.
Предмет не рождается в магазине. Он рождается в деревьях (если это дерево), в шахтах (если это метал), в глубинах мира (в случае нефтесодержащих материалов, таких как пластик, синтетические ткани и т.д.), или, возможно, во всех трех и более местах, если это комбинация материалов. Он рождается, когда все эти природные материалы добыты и собраны (с большими затратами и вредом для окружающей среды), и доставлены на завод, который неизбежно загрязняет природу. Затем ему придается конечная форма (часто на нескольких различных заводах), он отправляется на склад, и, в конце концов, продавцу.
+30
Server-side JS (v8+Node)
2 мин
12KНедавно видел на хабре спор по поводу того, что нам не нужны никакие скриптовые языки, кроме javascript. Утверждение, конечно, спорное, но меня заинтересовала возможность применения javascript на сервере.
+36
Помощь в отладке для Visual Studio — Debugger Visualizers
3 мин
9.6KОтладка любой программы сложна сама по себе и что бы, ее хоть как то облегчить – можно воспользоваться визуализаторами для Visual Studio (Debugger Visualizers).
Визуализатор – это компонент пользовательского интерфейса отладчика Visual Studio. Он создает диалоговое окно или другой элемент интерфейса, в котором переменная или объект отображается осмысленным образом, подходящим для этого типа данных. Например, HTML-визуализатор интерпретирует строку HTML и отображает результат в том виде, в каком она будет выглядеть в окне обозревателя, визуализатор точечных рисунков распознает структуру точечного рисунка и отображает его и т. д. Некоторые визуализаторы позволяют не только просматривать, но и редактировать данные.
Отладчик Visual Studio содержит четыре стандартных визуализатора. Это визуализаторы текста, HTML и XML, которые работают со строковыми объектами, и визуализатор наборов данных, который работает с объектами DataSet, DataTable и DataView.
Кроме стандартных визуализаторов из поставки Visual Studio, существуют еще и другие — вот о них и пойдет речь дальше.
+42
Древнейший стресс-менеджмент
2 мин
5.5KХочу поделиться с вами одной интересной медитацией (медитация как известно — древнейший способ стресс-менеджмента), которой поделился со мной мой учитель в ту светлую пору, когда я увлекался разными духовными практиками.
С моим учителем ей поделился в своё время один лаосский монах. И дошла она до нас в неизменном виде (не считая перевода) через много столетий.
Цель этой медитации — добиться стабильного уравновешенного состояния и стрессоустойчивости, проще говоря перестать нервничать, психовать и переживать по различным поводам, а уметь в любой ситуации принимать обдуманные хладнокровные решения (поругался с заказчиком, обманули подрядчики, любимая девушка мозг вынесла, начальник идиот, сайт лёг, да мало ли поводов попариться).
С моим учителем ей поделился в своё время один лаосский монах. И дошла она до нас в неизменном виде (не считая перевода) через много столетий.
Цель этой медитации — добиться стабильного уравновешенного состояния и стрессоустойчивости, проще говоря перестать нервничать, психовать и переживать по различным поводам, а уметь в любой ситуации принимать обдуманные хладнокровные решения (поругался с заказчиком, обманули подрядчики, любимая девушка мозг вынесла, начальник идиот, сайт лёг, да мало ли поводов попариться).
+50
Создание слайдеров с анимированной прокруткой, используя Javascript
4 мин
14KВ этой статье я хотел бы поделиться своими практическими наработками в создании анимированных слайдеров, используя JavaScript.
+62
Вышел ASP.NET MVC V2 Preview 1 — разбор полетов
5 мин
1.1KНа днях MVC 2 Preview 1 стал доступен широкой публике. Этот релиз фреймворка несет в себе весьма значительные нововведения, которые я постараюсь кратко описать в этой заметке. Прежде всего, необходимо заметить, что как и в случае с первой версией, статус “Preview 1” – означает техническую демонстрацию изменений и нового функционала. Ожидается, что заинтересованное сообщество разработчиков протестирует и оценит этот релиз и на основе отзывов в MVC Framework будут внесены изменения для выпуска Preview 2 и так далее, до финального релиза второй версии. Другими словами, данный релиз не предназначен для использования, что называется, “в production”. Весьма вероятно, что последующие релизы могут содержать более или менее значительные изменения, из-за которых, может быть нарушена совместимость проекта написанного для preview 1 с выпусками preview 2 и так далее.
+15
Скругленные углы на чиcтом CSS без JS без картинок с анти-аллиасингом
2 мин
7.6KРаз уже пошла такая пьянка бурное обсуждение, то предложу и свой метод скругления углов, с характеристиками, которые можно увидеть в названии топика.
Хочу заметить, что это не улучшение какого-то из существующих методов, а совершенно новый (по крайней мере, я нигде не смог найти — наверное, плохо искал ;) метод. В статье 38 статей о создании закругленных углов на сайтах данный метод также не был упомянут.
Итак, что же мы имеем: чистый CSS, без единой картинки, без JavaScript (хотя и с ним, для демонстрации, тоже сделаем), с анти-аллиасингом (то есть плавные переходы), прозрачные углы (то есть в фоне может быть что угодно), тянущийся по высоте и ширине и, конечно же, кроссбраузерный метод.
Хочу заметить, что это не улучшение какого-то из существующих методов, а совершенно новый (по крайней мере, я нигде не смог найти — наверное, плохо искал ;) метод. В статье 38 статей о создании закругленных углов на сайтах данный метод также не был упомянут.
Итак, что же мы имеем: чистый CSS, без единой картинки, без JavaScript (хотя и с ним, для демонстрации, тоже сделаем), с анти-аллиасингом (то есть плавные переходы), прозрачные углы (то есть в фоне может быть что угодно), тянущийся по высоте и ширине и, конечно же, кроссбраузерный метод.
+109
Расширяем и улучшаем Cache в ASP.NET
5 мин
8.9KПро ASP.NET-объект Cache наверняка знает каждый web-разработчик на платформе .NET. Совсем не странно, ведь это единственное решение для кэширования данных web-приложения в ASP.NET, доступное прямо из коробки.
Достаточно функциональный и легкий, снабженный механизмами приоритета, вытеснения, зависимостей и обратных вызовов, Cache хорошо подходит для небольших приложений, работая внутри AppDomain. Кажется, Microsoft предусмотрела все, что необходимо… Но я, тем не менее, хочу сделать его еще немного лучше. Чем же именно?
Достаточно функциональный и легкий, снабженный механизмами приоритета, вытеснения, зависимостей и обратных вызовов, Cache хорошо подходит для небольших приложений, работая внутри AppDomain. Кажется, Microsoft предусмотрела все, что необходимо… Но я, тем не менее, хочу сделать его еще немного лучше. Чем же именно?
+14
Учимся проектировать на основе предметной области (DDD: Domain Driven Design)
8 мин
218K1. Введение
В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слуху, но для многих являющихся тайной за семью печатями, а так же привести ряд ресурсов, с которыми неплохо было бы познакомиться при желании продолжить развитие в проектировании на основе предметной области (DDD: Domain Driven Design).
+42
Кастомизация input type=”file” с помощью CSS
2 мин
64KЕсть несколько способов кастомизации (изменения внешнего вида) инпутов такого типа. Все они обладают своими плюсами и минусами, но, на мой взгляд, предложенный мною вариант, выигрывает даже со своими минусами, коих всего один.
+20
Range, TextRange и Selection
13 мин
77KМногим JavaScript-разработчикам приходилось сталкиваться с объектами, перечисленными в заголовке, например, при решении следующих задач:
— создание визуальных редакторов (wysiwyg),
— поиск в окне браузера,
— выставление BB-кода,
и т.д.
В этой статье автором предпринята попытка собрать перевод документации об этих объектах в одном месте + написать небольшие сопроводительные примеры. Перевод вольный, не дословный, так что если встретите неточность или корявую формулировку — пишите в комментариях.
В целом пост носит справочный характер, и, надеюсь, кому-то упростит разработку.
— создание визуальных редакторов (wysiwyg),
— поиск в окне браузера,
— выставление BB-кода,
и т.д.
В этой статье автором предпринята попытка собрать перевод документации об этих объектах в одном месте + написать небольшие сопроводительные примеры. Перевод вольный, не дословный, так что если встретите неточность или корявую формулировку — пишите в комментариях.
В целом пост носит справочный характер, и, надеюсь, кому-то упростит разработку.
+96
Asterisk – система компьютерной телефонии уровня предприятия
9 мин
261K Я хочу рассказать о свободном решении для компьютерной телефонии от компании Digium. Asterisk – это ATC созданная хакерами (в первоначальном смысле этого слова), а точнее, это супер конвергентная платформа компьютерной телефонии, распространяемая по лицензии GNU GPL, изначально разрабатываемая Марком Спенсером (Mark Spenser), позже ставшим президентом и техническим директором компании Digium. Благодаря коммерческой поддержке Его компании и лицензии GNU GPL Asterisk активно развивается и поддерживается тысячами людей со всей планеты.
+105
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-го. Целью данной статьи является упрощение процесса активации до трех простых этапов:
Благодаря двум людям, Олегу, сделавшему альтернативную прошивку с расширенными возможностями к роутеру 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-го. Целью данной статьи является упрощение процесса активации до трех простых этапов:
- подготовительный,
- смена прошивки,
- запуск скрипта активации модема.
+43
Социальные аспекты руководства, или как же всё таки «пинать» сотрудников. 2 года спустя.
6 мин
6.7KСтатья про «пинание», «закручивание гаек» и контроль задач, разные стили общения и руководства, про сложности делегирования, самомотивацию сотрудников.
Вопрос: Прочитал вашу статью «Социальные аспекты разработки» и был ошеломлен! До этого момента я считал, что такие идеи лишь из области утопий и невозможны к реализации.
Теперь я понял, что это реализуемо. Сам я всегда исповедовал похожий подход, про себя я его называю «человечный менеджмент». Пытался его использовать, когда со своими партнерами несколько лет назад мы начинали свой первый бизнес, но внедрить его на практике так и не получилось. Под прессингом своих партнеров и неадекватной оценки происходящего мы все-таки свалились к системе «пинания» сотрудников и тогда я решил, что такой подход пока не реализуем.
Я вскоре отстранился от управления нашей компанией и занялся тем, чем мне всегда хотелось заниматься – созданием игр, собрал команду разработчиков, нашел инвесторов и запустил проект по созданию онлайн-игры в жанре стратегии. Однако в полной мере реализовать «бизнес с человеческим лицом» у меня, похоже, опять не получается.
Симптомы: падение дисциплины, низкая скорость разработки, потеря энтузиазма.
Свой же стиль руководства я бы теперь назвал «попустительским».
И вот, как только мое терпение кончилось, и я собрался на следующий день «закрутить как можно туже гайки», я натыкаюсь на вашу статью. Это было как бальзам на больное сердце. Я сразу с великим облегчением отказался от идеи пинания, но понимаю, что делать все равно что-то надо, а с чего начать не знаю? Хотелось бы вашего совета.
Ответ: В 2 словах это,
— Вносите элементарную организованность в процесс. Это не «пинание» — это ваша работа.
— Разный стиль. С крутыми – искренне, с молодежью – дружелюбно, с «примадоннами» – сухо
— Используйте эмоции для «поджигания» людей. Прочитайте Возьмите эмоции с собой
— Используйте 4 модели руководства исходя из задачи и человека. Это вопросы — Может? Возьмет?
— Готовьтесь к тому, что у вас будут проблемы с Директивным стилем и Делегированием.
— Стремитесь к тому, чтобы у вас в команде были только люди с сильной самомотивацией, для которых ваша работа это хобби, страсть, любимое дело. Помогите разобраться в себе другим людям.
— Сплачивайте команду: cобирайте в одной комнате, проводите общие собрания, ставьте общие достойные цели.
Вопрос: Прочитал вашу статью «Социальные аспекты разработки» и был ошеломлен! До этого момента я считал, что такие идеи лишь из области утопий и невозможны к реализации.
Теперь я понял, что это реализуемо. Сам я всегда исповедовал похожий подход, про себя я его называю «человечный менеджмент». Пытался его использовать, когда со своими партнерами несколько лет назад мы начинали свой первый бизнес, но внедрить его на практике так и не получилось. Под прессингом своих партнеров и неадекватной оценки происходящего мы все-таки свалились к системе «пинания» сотрудников и тогда я решил, что такой подход пока не реализуем.
Я вскоре отстранился от управления нашей компанией и занялся тем, чем мне всегда хотелось заниматься – созданием игр, собрал команду разработчиков, нашел инвесторов и запустил проект по созданию онлайн-игры в жанре стратегии. Однако в полной мере реализовать «бизнес с человеческим лицом» у меня, похоже, опять не получается.
Симптомы: падение дисциплины, низкая скорость разработки, потеря энтузиазма.
Свой же стиль руководства я бы теперь назвал «попустительским».
И вот, как только мое терпение кончилось, и я собрался на следующий день «закрутить как можно туже гайки», я натыкаюсь на вашу статью. Это было как бальзам на больное сердце. Я сразу с великим облегчением отказался от идеи пинания, но понимаю, что делать все равно что-то надо, а с чего начать не знаю? Хотелось бы вашего совета.
Ответ: В 2 словах это,
— Вносите элементарную организованность в процесс. Это не «пинание» — это ваша работа.
— Разный стиль. С крутыми – искренне, с молодежью – дружелюбно, с «примадоннами» – сухо
— Используйте эмоции для «поджигания» людей. Прочитайте Возьмите эмоции с собой
— Используйте 4 модели руководства исходя из задачи и человека. Это вопросы — Может? Возьмет?
— Готовьтесь к тому, что у вас будут проблемы с Директивным стилем и Делегированием.
— Стремитесь к тому, чтобы у вас в команде были только люди с сильной самомотивацией, для которых ваша работа это хобби, страсть, любимое дело. Помогите разобраться в себе другим людям.
— Сплачивайте команду: cобирайте в одной комнате, проводите общие собрания, ставьте общие достойные цели.
+80
Памятка дизайнеру сайтов
10 мин
244KВторая версия статьи, расширенная и дополненая.
Большая часть готовилась для моего выступления на «РИТ: Клиентские технологии», куда я, к сожалению, не доехал.
К сожалению огромная армия даже опытных, «модных» и эффектных дизайнеров забывают, что результатом их творчества должен быть сайт, а не только«супер-скриншот» годный только для портфолио.
Первоначально эта памятка писалась мною для внутреннего пользования но, обрастая материалами, выросла в самостоятельную статью. Америку я не открыл, а просто собрал воедино и сформулировал ряд требований, которые должен учитывать дизайнер в процессе проектирования и оформления сайта.
Большая часть готовилась для моего выступления на «РИТ: Клиентские технологии», куда я, к сожалению, не доехал.
К сожалению огромная армия даже опытных, «модных» и эффектных дизайнеров забывают, что результатом их творчества должен быть сайт, а не только
Первоначально эта памятка писалась мною для внутреннего пользования но, обрастая материалами, выросла в самостоятельную статью. Америку я не открыл, а просто собрал воедино и сформулировал ряд требований, которые должен учитывать дизайнер в процессе проектирования и оформления сайта.
+435
Иерархические структуры данных и Doctrine
15 мин
81KВведение
Хранение иерархических данных (или попросту — деревьев) в реляционных структурах задача довольно нетривиальная и вызывает некоторые проблемы, когда разработчики сталкиваются с подобной задачей.
В первую очередь, это связано с тем, что реляционные базы не приспособлены к хранению иерархических структур (как, например, XML-файлы), структура реляционных таблиц представляет из себя простые списки. Иерархические же данные имеют связь «родитель-наследники», которая не реализована в реляционной структуре.
Тем не менее, задача «хранить деревья в базе данных» рано или поздно возникает перед любым разработчиком.
Ниже мы подробно рассмотрим, какие существуют подходы в организации хранения деревьев в реляционных БД, а также рассмотрим инструментарий, который нам предоставляет ORM Doctrine для работы с такими структурами.
+62
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Фулстек разработчик, Архитектор программного обеспечения
Ведущий
Веб-разработка
Vue.js
HTML
CSS
JavaScript
.NET Core
ASP.NET MVC
PostgreSQL
Linux