Pull to refresh
3
0

Пользователь технологий

Send message

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

Reading time15 min
Views83K

Введение



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

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

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

Ниже мы подробно рассмотрим, какие существуют подходы в организации хранения деревьев в реляционных БД, а также рассмотрим инструментарий, который нам предоставляет ORM Doctrine для работы с такими структурами.
Читать дальше →

Full Hierarchy — иерархические структуры в базах данных

Reading time5 min
Views16K
Здравствуйте. В этой статье я хотел бы написать про один очень интересный способ хранения иерархических структур в базах данных, не относящийся при этом к общепринятым и общеизвестным трём (Adjacency List, Nested Set, Materialized Path). Я не встречал в интернете упоминания о нём, о чём очень удивлен, ведь, по моему мнению, — это лучший и единственный способ хранить иерархические структуры. При разработке console-like форума я воспользовался именно этим способом, о чём ни на грамм не жалею. Это авторская статья и ни одно предложение не было вставлено метотодом копипаста.

Под катом способ, который я назвал Full Hierarchy

Реализация иерархии — объединение Adjacency List и Materialized Path через one-to-many

Reading time3 min
Views21K
Хранение иерархии в MySQL довольно затертая тема, воскурив хабр неоднократно я тем не менее не нашел для себя оптимальной структуры, сочетающей легкость поддержки и удобство пользования. Велосипед изобрелся сам...
Читать дальше →

Реализация конечного автомата на языке VHDL

Reading time5 min
Views18K
Конечные автоматы играют очень важную роль при разработке прошивок ПЛИС. Все слышали о двух классических типах автоматов: автомат Мили и автомат Мура, которые были предложены ещё до эпохи ПЛИС. Однако специфика построения ПЛИС вносит свои коррективы и в процессе работы у меня сложился вполне определённый стиль описания автомата.
Читать дальше →

Доказательное планирование

Reading time13 min
Views41K
Примечание переводчика: оригинальная статья была написана в 2007-м году, однако, на мой взгляд, полностью сохраняет актуальность и сегодня.

Разработчики программного обеспечения не любят составлять план работ. Обычно пытаются вовсе от него отказаться. «Закончу, когда закончу!», — говорят они, ожидая, что этот смелый и веселый поступок вызовет одобрение у босса, а о планировании будет успешно забыто.

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

Настройка PhpStorm для вёрстки на ОС Windows

Reading time16 min
Views185K

Добрый день


Так сложилось, что возникла необходимость подготовить единую рабочую среду (workflow) для всех верстальщиков в группе на ОС Windows. Основная цель — это в минимальные сроки передать минимум необходимых знаний всем участникам группы. Основная проблема была в том, что многие не знакомы с unix-системами и понятия не имеют, как завести тот же SASS на ОС Windows. Поэтому было принято решение составить ознакомительную статью (пошаговую инструкцию) по настройке рабочей среды.

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

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

Итак начнём!
Читать дальше →

Создание архитектуры программы или как проектировать табуретку

Reading time25 min
Views709K
Взявшись за написание небольшого, но реального и растущего проекта, мы «на собственной шкуре» убедились, насколько важно то, чтобы программа не только хорошо работала, но и была хорошо организована. Не верьте, что продуманная архитектура нужна только большим проектам (просто для больших проектов «смертельность» отсутствия архитектуры очевидна). Сложность, как правило, растет гораздо быстрее размеров программы. И если не позаботиться об этом заранее, то довольно быстро наступает момент, когда ты перестаешь ее контролировать. Правильная архитектура экономит очень много сил, времени и денег. А нередко вообще определяет то, выживет ваш проект или нет. И даже если речь идет всего лишь о «построении табуретки» все равно вначале очень полезно ее спроектировать.

К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

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

Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Читать дальше →

Глупые часы

Reading time3 min
Views81K
image

В современном мире все чаще встречается приставка «умный» к, казалось бы, обычным вещам. Все что-то замеряют, передают, принимают, обрабатывают, оповещают и подсказывают. Скоро Bluetooth, Wi-Fi и маленький контроллер, а также камера будет в каждом предмете.

Я же хочу рассказать о том, как я сделал часы, к которым были предъявлены жесткие требования – они должны показывать время и… нет, все, они должны показывать время. Хотя все же еще одно требование, цифры должны быть достаточно большими и легко читаться.
Читать дальше →

Пудра для мозга или как сделать порошок для посудомойки в 9,7 раз дешевле

Reading time11 min
Views293K


Update
Новый вариант порошка и более подробный разбор во второй части: DIY порошок для посудомойки: разбираем промышленные средства и улучшаем рецепт

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

Есть очень много областей нашей жизни, где наше представление формирует исключительно маркетинговый буллшит. Увы, большинство людей даже не пытаются задумываться о том, что лежит в основе всего этого. Очень часто рыночная ситуация приводит к тому, что себестоимость продукта составляет 0.5% от его цены. Остальное маркетинг, наценки, логистика, упаковка и тому подобное. Почти все в курсе про концепцию продажи чернил для принтера по цене слез гималайских девственниц и настойчивые рекомендации производителей использовать только оригинальные расходные материалы. Например, совсем недавно меня озарило, что 1.5 грамма сухого вещества во флаконе удобрений для растений не могут стоить 200-250 рублей. А ведь именно такое количество может уместиться в относительно стабильном состоянии в виде раствора. Я сразу представил себе гектары полей и грузовики, которые везут тонны порошка. В результате перешел на расфасовки по 1 кг Буйских комплексных сухих удобрений. Можно ванну раствора приготовить.

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

TLDR:

70% прокаленной соды и 30% стирального порошка вместо моющего средства.
Если очень лень возиться с содой, то просто порошок Биолан или его аналоги. Сода удешевляет.
Пищевая соль «Экстра» вместо соли.
Да начнутся адские эксперименты!

Почему я не преподаю SOLID и «принцип устранения зависимостей»

Reading time5 min
Views65K

Статья 1. Почему я не преподаю SOLID


Если вы разговариваете с кем-то, кому небезразлично качество кода, уже достаточно скоро в разговоре всплывёт SOLID — аббревиатура, помогающая разработчикам запомнить пять важных принципов объектно-ориентированного программирования:

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

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

Сегодня SOLID остается для меня важным, но я больше не пытаюсь сделать мой код SOLID. Я редко упоминаю его, когда говорю про дизайн. И тем более я не учу пользоваться им разработчиков, которым хочется почерпнуть хорошие дизайнерские методы проектирования. Он больше не находится у меня под рукой в моем «ящике для инструментов». Он лежит в пыльной коробке на чердаке. Я храню его, потому что он важен, но редко им пользуюсь.
Читать дальше →

Изменение ёмкости керамических конденсаторов от температуры и напряжения, или как ваш конденсатор на 4,7мкФ превращается в 0,33мкФ

Reading time7 min
Views101K

Вступление: я был озадачен.


Несколько лет назад, после более чем 25 лет работы с этими вещами, я узнал кое-что новое о керамических конденсаторах. Работая над драйвером светодиодной лампы я обнаружил, что постоянная времени RC-цепочки в моей схеме не сильно смахивает на расчётную.

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

Я проверял схему в её естественной среде: в корпусе, который в свою очередь сам по себе был зачехлён чтобы имитировать кожух потолочного светильника. Температура компонентов в некоторых местах достигала более чем 100ºC. Для уверенности, и чтобы освежить память я перечитал даташит на используемые конденсаторы. Так началось моё переосмысление керамических конденсаторов.
Читать дальше →

Основы репликации в MySQL

Reading time10 min
Views333K
С репликацией серверов MySQL я познакомился относительно недавно, и по мере проведения разных опытов с настройкой, записывал, что у меня получалось. Когда материала набралось достаточно много, появилась идея написать эту статью. Я постарался собрать советы и решения по некоторым самым основным вопросам, с которыми я столкнулся. По ходу дела я буду давать ссылки на документацию и другие источники. Не могу претендовать на полноту описания, но надеюсь, что статья будет полезной.
Читать дальше →

Как не нужно строить сети

Reading time9 min
Views80K
image

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

Про соль с точки зрения химика

Reading time10 min
Views181K
На самом деле этот пост был подготовлен еще в апреле 2014 года, я не смог тогда его опубликовать. Являлся вторым в ожидавшейся серии. Можете глянуть первый. На эту тему писать меня сподвигло желание внести немного ясности в представления о некоторых химических аспектах нашего бытия. Пользуясь тем, что химия — наука, не слишком популярная в массах, нам иногда рекламщики и пресса выдают такие перлы, что у меня не хватает слов для описания эмоций. Так что попробуем слегка рассеять туман, ну и чтоб это было интересно и актуально для наших условий. Недавно встретил похожую переводную публикацию, тоже про соль. Серьёзную и хорошо сделанную, правда, слегка не о нашей действительности.

Итак — про соль


Так в Африке ею и торгуют. Толщина кусков, вероятно определяется толщиной пласта. Слабенькие пласты.

Солить или не солить. А зачем вообще соль, может лучше без неё? Заменитель соли? Ценная соль с минералами и розового цвета — а зачем козе баян? Рекламные посты — хороший способ приготовить лапшу на уши.
Читать дальше →

Про сахара с точки зрения химика. Химия на кухне 2

Reading time12 min
Views138K

Старинная форма фасовки сахара — «сахарная голова»
Выкладываю продолжение, как обещал. Первый пост был про соль.
Про сахар. Какие бывают сахара. Про кленовый сахар и сахар ли он? Сосульки из кленового сока — ценный дар природы. Моно- и много- сахариды. Что общего у омара, тарантула, ёлки, гриба, мёда и ракеты «Кассам». Ставим химический опыт по превращению крахмала… Как блеснуть эрудицией. Фруктоза — польза и вред, две стороны вопроса. Кто виноват в том, что от молока болит живот. Как получается, что кислое варенье меньше засахаривается. Из чего делают мёд. Из чего делают сахар. Про тростниковый сахар — едим ради его вкуса.
Всем привет! Что-то после рассказов про «белую смерть», захотелось поговорить про «сладкую». Это такой каламбур, шутка юмора. Вопрос вреда, и в данном случае, как Вы уже догадываетесь, заключается в основном, в неумеренном потреблении. Ну вот, значит, встречаются на полке много разных сортов сахара, и из местных и приезжие, и начинают выяснять, кто из них лучше… Стоп! Не допустим мордобоя, и разберемся сами.
Читать дальше →

Стандартная модель элементарных частиц для начинающих

Reading time5 min
Views81K
«Мы задаёмся вопросом, почему группа талантливых и преданных своему делу людей готова посвятит жизнь погоне за такими малюсенькими объектами, которые даже невозможно увидеть? На самом деле, в занятиях физиков элементарных частиц проявляется человеческое любопытство и желание узнать, как устроен мир, в котором мы живём» Шон Кэрролл

Если вы всё ещё боитесь фразы квантовая механика и до сих пор не знаете, что такое стандартная модель — добро пожаловать под кат. В своей публикации я попытаюсь максимально просто и наглядно объяснить азы квантового мира, а так же физики элементарных частиц. Мы попробуем разобраться, в чём основные отличия фермионов и бозонов, почему кварки имеют такие странные названия, и наконец, почему все так хотели найти Бозон Хиггса.
Читать дальше →

Рождение российской частной космонавтики. Часть первая

Reading time3 min
Views14K
В последнее время мы наблюдаем повышенный интерес к космической тематике в России. Прочитав данную статью, вы сможете получите более полную картину о коммерческих проектах в российской космонавтике. Если первая часть заслужит интерес читателей, то во второй части я познакомлю вас с общественными инициативами в этой области.

Часть первая. Частные компании

Компания Лин Индастриал
Главная цель компании — создание сверхлёгких ракет для вывода микроспутников. Доставка на орбиту будет дороже, но условия запуска станут намного более гибкими. Снимется ряд ограничений к спутникам и появится возможность выбора времени запуска. Сейчас небольшие спутники запускаются «попуткой» с основной полезной нагрузкой.

Надо сказать, что при первом беглом знакомстве с этой фирмой у меня появился некоторый скепсис. Чего только стоит слоган на сайте «Мы не обещаем несбыточного — мы делаем невозможное!», согласитесь, такой лозунг нужно оправдать. Однако, после личного знакомства сначала с Алексеем Мазуром, математиком, который помогает команде Лин Индастриал с расчётами, а потом и с совладельцем и главным конструктором — Александром Ильиным, мои опасения рассеялись. По-крайней мере в части профессионализма и серьёзных намерений команды. Александр Ильин к слову сказать является редактор журнала «Новости космонавтики» и инициатором нескольких фестивалей для ракетомоделистов.

Сейчас компания получила первоначальные инвестиции от одного из создателей World of Tanks и готовится к следующему раунду инвестиций.
Читать дальше →

Излишняя сложность как причина дополнительных скрытых издержек

Reading time7 min
Views8.6K


Мы часто говорим кому-то фразы наподобие «Мне нужно всего лишь несколько часов, чтобы это сделать/реализовать/внедрить». Но спустя какое-то время после окончания работ вдруг осознаём, что нам приходится регулярно исправлять баги и ошибки, объяснять устройство и алгоритм работы другим инженерам и разработчикам, или помогать отвечать на вопросы клиентов. И получается, что объём времени, затраченного на поддержку вашего детища, многократно превышает те несколько часов, что ушли на его создание.

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

Полезный софт для любителей астрономии

Reading time7 min
Views56K


Многие любители астрономии берут с собой «в поля» ноутбуки с приложениями, облегчающими поиск и наблюдение за небесными объектами. Те же самые программы можно использовать и дома, подготовившись заранее и просто распечатав необходимые материалы. Или же проводить наблюдения прямо из окна, с балкона, с прилегающего участка, если это позволяет текущий уровень светового загрязнения и чистота атмосферы. Мы подобрали для вас различные приложения, которые могут быть полезны как начинающим, так и опытным астрономам-любителям. Добро пожаловать под кат.
Читать дальше →

Занимательные хаки: краткая история

Reading time5 min
Views12K
Сложно перечислить все трудности, встающие перед разработчиками при реализации своих идей — от неожиданных проблем железной совместимости, поджимающих сроков, невоспроизводимых багов, до просто недостатков технологии, не позволяющих воссоздать всё желаемое, или слишком больших амбиций. Почитав ряд post mortem-откровений, где девелоперы сетовали на неожиданные препоны, встававшие у них на пути, — можно только даваться диву, что конечный продукт был интересен и играбелен, хоть и не вмещал в себя и половины задуманного. Но в этой статье пойдёт речь о некоторых ярких примерах из истории разработки известных игр, в которых программисты сумели превозмочь трудности и сделали это неординарным способом.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity