Pull to refresh
1
0
Дмитрий @SHadDim

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

Send message

Хранение деревьев в базе данных. Часть первая, теоретическая

Reading time4 min
Views131K
Полгода назад написал бандл ClosureTable для фреймворка Laravel 3. Поводом для написания стала вот эта замечательная презентация Билла Карвина о способах хранения и обработки иерархических данных в MySQL с использованием PHP.

Итак. Существует несколько шаблонов проектирования баз данных для хранения и обработки иерархических структур:
  • Adjacency List («список смежности»)
  • Materialized Path («материализованный путь»)
  • Nested Sets («вложенные множества»)
  • Closure Table («таблица связей»)

Читать дальше →
Total votes 47: ↑41 and ↓6+35
Comments66

Метод измерения действующего значения напряжения с применением МК

Reading time5 min
Views105K
    В данном посте речь пойдет об одном из вариантов измерения действующего значения напряжения и частоты сети на 8-ми битном микроконтроллере PIC18. При желании, можно метод перенести на любой другой МК, вплоть до всеми любимых ARDUINO (если они поддерживают реализацию прерываний по таймеру с частотой 5-10 кГц).
    Также, рассматриваемый метод позволяет измерять частоту сетевого напряжения без использования внешних дополнительных средств, таких как компараторы. Но, при этом приходится жертвовать либо временными ресурсами МК, либо точностью измерения частоты.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments10

Тест роботов-пылесосов: iRobot Roomba 780, Moneual MR7700, iClebo Arte и Neato XV-11

Reading time13 min
Views114K
В своем большинстве люди не очень-то любят работать во всех смыслах этого слова. Другими словами мы с вами достаточно ленивы. Зачастую новые технологии появляются и развиваются именно из-за лени. Робот-пылесос — очередное изобретение, призванное сократить нашу с вами тяжелую ношу. Мы занимаемся продажей бытовых роботов уже более трех лет. Многие потребители до сих пор не знают, что помимо компании iRobot на рынке есть и другие представители, которые порой имеют лучшие характеристики. Другое дело, что iRobot первый зашел на российский рынок и вложил большие деньги в рекламу, поэтому узнаваемость бренда очень высокая.

Мы считаем, что в продаже имеются только несколько конкурентных роботов-пылесосов, а именно: iRobot Roomba, Yujin Robot iClebo и Neato. Все остальные пылесосы хуже по многим параметрам, включая качество уборки и изготовления, а также отсутствие нормального сервиса. Так как в Сети нет хорошего прямого сравнения этих брендов, мы решили восполнить данный пробел. У нас вовремя под рукой оказался еще один интересный бренд Moneual со своей моделью MR7700 (в России по ошибке известен как Rydis R750), его мы тоже не поленились добавить в сравнительный обзор.

Итак, сегодня будут соревноваться в качестве уборки, преодолении порожков, удобстве эксплуатации и другим параметрам следующие модели роботов-пылесосов: iRobot Roomba 780, Moneual MR7700, Yujin Robot iClebo Arte, Neato Robotics XV-11.



За более подробными деталями, а также некоторыми вещами, о которых мы не упомянули в видео-обзоре, обращаемся к тексту под катом.
Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments37

Не кладите все свои яйца в чужую корзину (из книги «Passionate Programmer» by Chad Fowler)

Reading time3 min
Views29K

Продолжаю перевод глав из книги «Passionate Programmer», которые публикуются в блоге автора. Автор книги неординарный Чад Фаулер — известный спикер Ruby- и IT-конференций, бывший джазовый саксофонист, ныне CTO 6Wunderkinder.

Во время работы менеджером группы разработки, я как-то спросил одного из своих подчинённых: «Чего ты хочешь добиться в своей карьере? Кем ты хочешь стать?». Я был ужасно разочарован его ответом: «Я хочу быть архитектором J2EE-приложений». Я его спросил, почему тогда не «дизайнером Microsoft Word» или «инсталлятором RealPlayer»?

Этот парень хотел построить свою карьеру вокруг определённой технологии, созданной определённой компанией, в которой он не работал. Что будет если эта компания выйдет из бизнеса. Что будет если его «новенькая и сексуальная» технология станет устаревшей? Почему вы хотите доверить какому-то поставщику ПО свою карьеру?
Читать дальше →
Total votes 40: ↑36 and ↓4+32
Comments18

Темное программирование

Reading time7 min
Views139K
imageПредлагаю перейти на сторону зла, на темную сторону программирования. Ситхи сильнее джедаев. И печенек хватит на всех. Предупреждаю, прежде чем начнете читать далее. Характер при переходе на темную сторону портится.
Прошу под кат
Читать дальше →
Total votes 257: ↑203 and ↓54+149
Comments212

.NET и паттерны проектирования

Reading time8 min
Views162K
Шаблон проектирования или паттерн — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.

Кажется, это определение мы слышали тысячу раз… Помимо знания терминов и паттернов интересно знать, как они применяются в реальных проектах.

В статье я рассмотрю несколько наиболее популярных паттернов используемых в .NET. Некоторые из них глубоко интегрированы в инфраструктуру .NET, в то время как другие просто применяются при проектировании базовых классов в BCL.

Паттернам проектирования посвящен не один десяток книг, но одна книга стоит особняком и это знаменитая книга «Банды четырех». Поэтому для большего понимания ситуации я буду приводить небольшое описание из этой книги.
Читать дальше →
Total votes 59: ↑40 and ↓19+21
Comments6

foreach or for that is the question

Reading time5 min
Views55K
Вопрос о выборе цикла for/foreach стар, как мир. Все мы слышали, что foreach работает медленнее for-а. Но не все знаем почему… А вообще так ли оно?

Когда я начинал изучать .NET, один человек сказал мне, что foreach работает в 2 раза медленнее for-а, без каких-либо на то обоснований, и я принял это как должное. Теперь, когда чьих-то слов мне мало, я решил написать эту статью.

В этой статье я исследую производительность циклов, а так же уточню некоторые нюансы.

Итак, поехали!
Читать дальше →
Total votes 55: ↑45 and ↓10+35
Comments27

Посты-рекордсмены. Продолжение

Reading time5 min
Views30K
Судя по реакции на предыдущий пост, тема парсинга Хабра и альтернативных топов интересна не только мне, поэтому продолжу.
Спасибо всем, кто голосовал и комментировал и отдельно тем, кто присылал идеи новых рейтингов и исследований.

В предыдущем посте (Посты-рекордсмены / Хабрахабр), я пробовал различные варианты сортировки постов Хабра, отличные от обычного рейтинга. В этом я буду сортировать по рейтингу, но не все посты, а отобранные по определённым критериям.
Читать дальше →
Total votes 80: ↑75 and ↓5+70
Comments13

Unit тесты на практике

Reading time12 min
Views146K
В последнее время появилось и продолжает появляться достаточно много публикаций на тему разработки через тестирование. Тема достаточно интересная и стоит того, чтобы посвятить её исследованию какую-то часть своего времени. В нашей команде мы используем модульное тестирование уже на протяжении года. В этой статье я хочу рассказать о том, что получилось и какой опыт в итоге мы приобрели.

Сразу оговорюсь, что примеры приводятся применительно к языку C# и платформе .NET. Соответственно, в других языках/платформах подходы и реализации могут отличаться.

Итак…
Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments56

Заовнил, вонзился, запилил: словарь IT-шника

Reading time5 min
Views99K
Как часто друзья и родственники, не связанные с IT, просили вас рассказать, что нового на работе, а вы, увлекаясь, начинали говорить вроде на русском, но совершенно непонятном для них языке? Мы создали наш словарь терминов, в который вошли как внутренний сленг отдельных проектов, так и достояние широкой общественности. Надеемся, эта компиляция поможет айтишникам при необходимости выразить свои мысли на языке маглов, а неайтишникам – понять, что айтишники несут. Ну и просто повеселит всех. Ведь пятница!

Про код и изменения





Код добра – программный код, очевидно содержащий непоправимые улучшения.
Котятоемкий код — очень некрасивое техническое решение. Выражение обязано своим происхождением предположению, что каждый раз, когда программист пишет строчку некрасивого кода, бог убивает котенка.
Непоправимо улучшить – запилить годное, но не до конца проверенное изменение функционала. Синоним — необратимо улучшить.
Мясной коммит (ковровый коммит) – правка, судя по количеству и характеру изменений, наверняка содержащая непоправимые улучшения.
Тупач – очень срочная задача, результаты работ по которой должны попасть в бранч для выкатываемой версии. Образовано от to patch.
Минорный тупач – задача горит – сильнее некуда, но уж очень мелкая.
Глубокий ToDo Later — (отправить задачу в глубокий тудулейтер) статус задачи в таск-трекере отложена на неопределенный срок.
Подпереть костылями – реализовать функциональность за счет непредусмотренного временного решения.
Шрапнельные правки – огромное количество мелких правок по всему проекту, которые очень сложно оттестировать.
Скриптюня — очень классный скрипт, экономит кучу времени, практически лучший друг оператора.
Читать дальше →
Total votes 280: ↑173 and ↓107+66
Comments97

Самые смешные комментарии в исходном коде

Reading time1 min
Views159K
На StackOverflow был отличный пост точно на эту тему, но какой-то сверхусердный модератор, который должен остаться неназванным, удалил его (судя по всему, сейчас восстановлено — прим. пер.).

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

// 
// Дорогой мейнтейнер:
// 
// Когда ты закончишь «оптимизировать» эту подпрограмму
// и поймешь, насколько большой ошибкой было делать это,
// пожалуйста, увеличь счетчик внизу как предупреждение
// для следующего парня:
// 
// total_hours_wasted_here = 42
//

Читать дальше →
Total votes 213: ↑163 and ↓50+113
Comments110

Различные методы загрузки ассоциаций в Ruby on Rails

Reading time3 min
Views42K
Rails предоставляют нам 4 различных способа загрузки ассоциаций: preload, eager_load, includes и joins. Рассмотрим каждый из них:

Preload


Этот метод загружает ассоциации в отдельном запросе:
User.preload(:posts).to_a

# =>
SELECT "users".* FROM "users"
SELECT "posts".* FROM "posts"  WHERE "posts"."user_id" IN (1)

Т.к. preload всегда создает два отдельных запроса, то мы не можем использовать таблицу posts в условии выборки:
User.preload(:posts).where("posts.desc='ruby is awesome'")

# =>
SQLite3::SQLException: no such column: posts.desc:
SELECT "users".* FROM "users"  WHERE (posts.desc='ruby is awesome')

А таблицу users – можем:
User.preload(:posts).where("users.name='Neeraj'")

# =>
SELECT "users".* FROM "users"  WHERE (users.name='Neeraj')
SELECT "posts".* FROM "posts"  WHERE "posts"."user_id" IN (3)

Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments2

Набор в Школу разработчиков 3D решений: бесплатные места

Reading time5 min
Views22K

Кадр с финальной стадии монтажа 3D-куба для визуализации инженерных решений

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

В России очень нужны соответствующие специалисты, поэтому мы открываем Школу 3D. Самое важное: стоимость обучения — $12.000. При этом есть 15 бесплатных мест. Обучение будет проходить на английском языке. Студенты школы 3D станут одними из первых в России по внедрению 3D-решений и получат доступ в экспертную среду и практику в ведущей IT компании. Детали ниже.
Читать дальше →
Total votes 34: ↑26 and ↓8+18
Comments8

Windows Azure для стартапов: ресурсы на 150$ каждый месяц

Reading time3 min
Views21K
Если вы стартап и разрабатываете мобильное приложение или сервис, то практически всегда сталкиваетесь с вопросом: где разместить бэкенд для приложения, где найти или арендовать сервера для продакшен запуска или для разработки и тестирования. Идеально было бы еще, чтобы это были не просто VPS или сервера, а облачные мощности, а кроме того, чтобы первоначальные вложения были минимальны или стремились к нулю 

И если вы стартап, которому меньше 5 лет, то по программе BizSaprk (международная программа Microsoft поддержки технологических стартапов) вы как раз можете получить ресурсы облака Windows Azure «безд-возд-мезд-но, то есть даром» (как говорила Сова из Винни-Пуха). Каждый участник стартапа может получить собственную подписку Windows Azure, включающую ежемесячные кредиты на сумму 150$ (5 000 руб.).


Мне интересно
Total votes 48: ↑34 and ↓14+20
Comments45

Борьба за свои права или как я создал профсоюз программистов

Reading time5 min
Views34K
Месяц назад работодатель заявил о закрытии фирмы. Неприятно, конечно, после того, как на протяжении нескольких месяцев мы все вместе «в одной лодке» претерпевали финансовые трудности. Но владелец фирмы на то и владелец, что имеет право. Не беда, подумал я, на рынке на программистов повышенный спрос, найду более стабильную компанию. По-настоящему неприятный сюрприз ждал позже, когда работодатель отказался производить причитающиеся мне выплаты, связанные с увольнением. Вот тут и пришла в голову мысль: с какой стати кто-то будет оптимизировать издержки за мой счёт и что с этим можно сделать?



Читать дальше →
Total votes 144: ↑132 and ↓12+120
Comments102

Правила личной эффективности от ЭД

Reading time21 min
Views66K
Заранее предупреждаю и извиняюсь, но оно того стоит: букаф многа.

Введение

В средней школе я был «круглым» двоечником, которого переводили в следующий класс только под значительным влиянием моего отца, в то время проректора ФПИ, довольно влиятельного (в личном общении) и властного человека.

В конце седьмого класса у меня встал выбор — идти в ПТУ или учиться дальше в школе. Все учителя, настаивали на том, что мне бесполезно учиться не то что в институте, но и в старших классах, в виду моей бездарности. Естественно, это мне не очень понравилось, и я решил стать лучшим в школе.

Попытка понять программу восьмого класса провалилась в виду отсутствия элементарных знаний предыдущих классов (начиная с второго-третьего), что не оставляло передо мной выбора, кроме как начать изучать все предметы по новой, самостоятельно.

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

Читать дальше →
Total votes 197: ↑155 and ↓42+113
Comments202

Офис мечты: какой он?

Reading time5 min
Views57K
На Хабре было очень много статей про эффективность (личную и командную). И этот вопрос никуда не исчезает, т.к. задач, которые приходится решать современному человеку, всё больше и больше, а времени на их решение всё меньше и меньше (про то, куда уходит наше время, тоже было много постов). Одной из составляющих, влияющих на эффективность труда, несомненно, является рабочее пространство.

На рабочем месте в офисе многие из нас проводят около трети своей жизни — 8-9 часов в день. Отдельные «счастливчики» дотягивают до 10-12 часов. И очень немногие из специалистов могут, не покривив душой, назвать своё рабочее место идеальным. Конечно, требования людей к рабочему месту определяются не только личными вкусами, но и особенностями профессии. И сегодня мы хотели бы затронуть тему идеального рабочего места с точки зрения IT-специалистов.

В конце июля Mail.Ru Group и HeadHunter провели небольшое исследование. Мы опросили 691 IT-специалиста и выяснили, что для них важнее всего в офисном пространстве.


Читать дальше →
Total votes 106: ↑83 and ↓23+60
Comments279

О системе диалогов Deus Ex и реальных механиках в настольных играх

Reading time3 min
Views54K
Deus Ex Human Revolution — произведение искусства в лучших традициях киберпанка, своего рода IT-RPG. Игра отличная и стильная с крутым сюжетом и массой проработанных деталей. Но самое, на мой взгляд, крутое в ней – это система диалогов как механика.

Сейчас объясню в чём дело. Посмотрите на вот эти два скриншота: первый из Fallout II, второй из нового Deus Ex.


Старая добрая диалоговая система


Диалог в Deus Ex с установленным в голову социальным модулем
Читать дальше →
Total votes 69: ↑55 and ↓14+41
Comments57

Горизонт планирования

Reading time5 min
Views38K
Часто мы делаем проекты продолжительностью в несколько месяцев. При этом горизонт планирования команд в Сибириксе — порядка пяти недель. В переложении на спринты — 3-5 спринтов (зависит от опыта конкретной команды).

Я использую два монитора, Google-календарь, Scrumban, общую тетрадь и песочные часы. Сам способ постоянно дорабатывается, но общие принципы остаются неизменными: держать под рукой все проекты в рукописном виде + управлять движением проектов на виртуальной канбан-доске.



Сама процедура занимает 2 часа в неделю. Этого времени достаточно, чтобы распланировать нагрузку примерно на 35-50 человек. Удобно делать либо рано утром в понедельник, либо в пятницу, во второй половине дня, либо в воскресенье вечером.
Читать дальше →
Total votes 71: ↑61 and ↓10+51
Comments31

Три правила хорошего программирования

Reading time4 min
Views60K
В последнее время я видел мало действительно хорошего кода, много посредственного и очень много — плохого. (Много того, что я писал раньше — особенно, когда я только начинал — относится к последним, увы.) Читая случайные статьи в интернете и профессиональные книги, я пришел к выводу, что писать хороший код — легко. Невероятно трудно, но в то же время легко. На самом деле, это настолько просто, что сводится к трем правилам.
Читать дальше →
Total votes 70: ↑55 and ↓15+40
Comments20

Information

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