Размер шрифта: A A A
Цвет сайта: Ц Ц Ц
Изображения:
Шрифт: Arial TNR
Кернинг: 1px 2px 3px
Обычная версия
Выбор образовательного учреждения
Муниципальные учреждения:
7 технологий 3D-печати, которые увеличат конкурентоспособность вашего предприятия
Сегодня в 14:53 0 комментариев 0

Полноцветная струйная печать (CJP) | Многоструйная печать (MJP) | Лазерная стереолитография (SLA/DLP) | Селективное лазерное спекание (SLS) | Селективное лазерное плавление (SLM/DMP) | Заключение

Изготовить мастер-модель для литья, прототип или готовое изделие из высокопрочного сплава? 3D-печать на производстве может решать широкий круг задач, позволяя в разы сократить временные и материальные затраты.

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

Полноцветная струйная 3D-печать

3д печать гипсом
Изделие, изготовленное по технологии CJP

Оригинальное наименование: ColorJet Printing (CJP).

Принцип действия: послойное склеивание гипсового порошка специальным клеящим составом.

Сферы применения: прототипирование, мелкосерийное производство.

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

Главные преимущества: 

  • широкая цветопередача;
  • доступность;
  • высокая скорость печати (в 5-10 раз быстрее по сравнению с другими технологиями);
  • низкая себестоимость;
  • безотходное использование материала.

Особенности: отсутствие поддержек.

Минусы технологии: 

  • хрупкость изделий из гипса;
  • необходимость постобработки.

Тип оборудования: профессиональные 3D-принтеры.

Модельный ряд: 


Подробнее о технологии
История внедрения: 3D-печать поможет завершить строительство собора Саграда-Фамилия


Многоструйная печать

Восковые модели, напечатанные на 3D-принтере
Восковые модели, напечатанные на 3D-принтере по технологии MJP

Оригинальное наименование: MultiJet Printing (MJP).

Принцип действия: послойное построение изделий из восковых или фотополимерных материалов.

Сферы применения: создание прототипов, оснастки, моделей для испытаний, проверки на собираемость или утверждения дизайна; литье по выплавляемым и выжигаемым моделям.

Отрасли: литейное производство, автомобилестроение, ювелирное дело, медицина, производство потребительских товаров.

Главные преимущества:

  • высокая скорость печати;
  • исключительная детализация и точность построения;
  • разнообразие модельных материалов;
  • простота эксплуатации аддитивных установок.

Особенности: наличие поддержек.

Минусы технологии:

  • ограниченный ассортимент расходных материалов;
  • модели уязвимы к солнечному свету.

Тип оборудования: профессиональные 3D-принтеры.

Модельный ряд: 

  • 3D Systems ProJet MJP 3600W (воск);
  • 3D Systems ProJet MJP 3600W Max (воск);
  • 3D Systems ProJet MJP 2500W (воск);
  • 3D Systems ProJet MJP 2500 (фотополимер);
  • 3D Systems ProJet MJP 2500 Plus (фотополимер);
  • 3D Systems ProJet MJP 3600 (фотополимер);
  • 3D Systems ProJet MJP 3600 Max (фотополимер);
  • 3D Systems ProJet MJP 3600 Dental (фотополимер);
  • 3D Systems ProJet MJP 5600 (фотополимер).

Подробнее о технологии
История внедрения: как сократить цикл проектирования и снизить себестоимость производства с помощью 3D-печати


Лазерная стереолитография

3D печать методом лазерной стереолитографии
Результат печати на стереолитографическом принтере 3D Systems ProX 950

Оригинальное наименование: Stereolithography Apparatus / Digital Light Processing (SLA/DLP).

Принцип действия: послойное выращивание моделей из жидкого фотополимера, который затвердевает под лазерным лучом или УФ-лампой.

Сферы применения: создание прототипов, приспособлений и оснастки, литье по выжигаемым моделям.

Отрасли: аэрокосмическая индустрия, автомобилестроение, приборостроение, ювелирное дело, медицина, наука, искусство.

Главные преимущества:

  • быстродействие 3D-принтеров;
  • высокая точность и прочность, а также идеальное качество поверхности изделий;
  • возможность построения моделей сложной формы и структуры;
  • большой объем рабочей камеры (у 3D-принтера 3D Systems ProX 950 – 150 х 75 х 55 см);
  • выращенный прототип можно использовать как готовое изделие.

Особенности: не требуется специальная оснастка и промежуточные этапы обработки; несложная постобработка.

Всё о 3D-технологиях

Минусы технологии:

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

Тип оборудования: промышленные 3D-принтеры / профессиональные 3D-принтеры*.

Модельный ряд: 

  • 3D Systems ProJet 6000 HD (фотополимер);
  • 3D Systems ProJet 7000 HD (фотополимер);
  • 3D Systems ProX 800 (фотополимер);
  • 3D Systems ProX 950 (фотополимер);
  • 3D Systems ProX 800 (керамонаполненный фотополимер);
  • 3D Systems ProX 950 (керамонаполненный фотополимер);
  • *3D Systems FabPro 1000 (технология DLP, фотополимер).

Подробнее о технологии
История внедрения: Снизить затраты на литейные модели авиадеталей на 95%? Это возможно!


Селективное лазерное спекание

Изделие, напечатанное по SLS-технологии
Изделие из прочного материала DuraForm ProX AF – полиамида, наполненного алюминием (SLS-технология)

Оригинальное наименование: Selective Laser Sintering (SLS).

Принцип действия: точечное спекание пластиковых порошков с разными компонентами лазерным лучом.

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

Отрасли: машиностроение, аэрокосмическая промышленность, литейное производство, строительство, архитектура.

Главные преимущества:

  • высокая скорость печати;
  • возможность создавать изделия сложнейших форм и фактур;
  • отличные механические характеристики напечатанных моделей;
  • большой размер камеры построения (550 х 550 х 750 мм в 3D-принтере 3D Systems sPro 230).

Особенности: отсутствие поддержек; может требоваться финишная шлифовка или полировка.

Минусы технологии:

  • высокая стоимость материалов и оборудования;
  • необходимость обработки шероховатых или пористых поверхностей напечатанных на 3D-принтере изделий;
  • особые требования к помещению и условиям эксплуатации.

Тип оборудования: промышленные 3D-принтеры.

Модельный ряд: 

  • 3D Systems sPro 60 HD-HS (полистирол);
  • 3D Systems sPro 60 HD-HS (полиамид);
  • 3D Systems sPro 140 (полиамид);
  • 3D Systems sPro 230 (полиамид);
  • 3D Systems ProX 500 (полиамид);
  • 3D Systems ProX SLS 6100 (полиамид).

Подробнее о технологии
История внедрения: как сократить срок изготовления деталей в 6 раз, используя селективное лазерное спекание


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

3D-печать металлами в аэрокосмической индустрии
3D-печать металлами на службе аэрокосмической индустрии

Оригинальное наименование: Selective Laser Melting / Direct Metal Printing (SLM/DMP).

Принцип действия: последовательное послойное расплавление металлического порошкового материала  посредством мощного лазерного излучения.

Сферы применения: изготовление компонентов узлов и агрегатов, геометрически сложных конструкций, прототипов, деталей пресс-форм, ювелирных и стоматологических изделий и др.

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

Главные преимущества:

  • высокая точность, плотность и повторяемость изделий;
  • возможность печати уникальных сложнопрофильных объектов, в том числе мельчайших деталей и изделий с внутренними полостями;
  • уменьшение массы изделий;
  • экономия материала;
  • сокращение цикла НИОКР.

Особенности: требуется минимальная механическая обработка, нет необходимости использовать дорогостоящую оснастку; топологическая оптимизация позволяет управлять физико-механическими свойствами изделий, которые могут превосходить результаты, доступные традиционным технологиям.

Минусы технологии:

  • большие первоначальные вложения;
  • особые требования к помещению и условиям эксплуатации;
  • сложность в интеграции 3D-решений в традиционные технологические процессы.

Тип оборудования: промышленные 3D-принтеры.

Модельный ряд: 


Подробнее о технологии
История внедрения: топологическая оптимизация и 3D-печать металлами усовершенствуют опору авиадвигателя для GE Aircraft


Заключение

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

Выбираем монитор нового поколения, экономя семейный бюджет
Сегодня в 14:49 0 комментариев 0

На смену мониторам с разрешением Full HD пришли продвинутые модели с 4K, обеспечивающие более четкую картинку во время игр и просмотров фильмов. Стоимость такого удовольствия весьма солидная, однако на рынке есть и доступные предложения с отличными характеристиками. О некоторых таких моделях читайте в данной статье.

«Подарок» от южнокорейского промышленного гиганта

Если говорить о соотношении между ценой и качеством, то 28-дюймовые мониторы Samsung U28E590D — отличное решение для любителей идеального изображения. По данным E-Katalog, модель входит в тройку самых популярных мониторов. Чем порадуют мониторы с Ultra HD-разрешением экрана? В первую очередь ценой — 26 990–30 390 руб. (цены магазинов на мониторы — от сотрудничающих с сайтом e-katalog.ru площадок). Разработчики уделили внимание функциональности и дизайну устройства. Монитор устанавливается на стол или вешается на стену при помощи специального крепления. Дисплей с разрешением 3840 ? 2160 пикселей на базе матрицы типа TN+film (время отклика 1 мс) охватывает весь спектр цветов. Функция «Картинка в картинке» позволяет выводить на экран два отдельных активных окна.

Гости с Тайваня

Тайваньская компания BenQ, один из лидеров по производству компьютерной техники и электроники, предложила пользователям 4К-мониторы BenQ BL2420U. Модель выполнена в строгом стиле. Корпус изготовлен из высокопрочного пластика, без ярких элементов и лишних деталей. В ножке предусмотрено отверстие для проведения кабелей. Экран диагональю 23,6 дюйма построен на IPS-матрице и дает яркую насыщенную картинку и отличную цветопередачу (300 кд/кв. м), контрастность — 1000:1. Смотреть фильмы и соревноваться в игровых баталиях на таком мониторе вполне комфортно. Приобрести модель можно по цене 28 310–32 740 руб.

Еще один представитель тайваньских ЖК-устройств — 28-дюймовый монитор с 4К-дисплеем AOC U2879VF, который производители «облачили» в черный корпус на стильной ножке серебристого цвета. Экран с антибликовым покрытием гарантирует геймерам максимальную четкость в динамических сценах благодаря высокой скорости отклика — 1 мс. Функции «Картинка в картинке» и «Картинка рядом с картинкой» дают возможность открывать несколько приложений и воспроизводить изображение с различных источников информации. Широкий угол обзора позволяет комфортно смотреть фильмы большой компанией. Средняя цена 4К-монитора от AOC International на российском рынке электроники — 28 000 руб.

О ПРОГРАММАХ И ИНТЕРФЕЙСЕ
Сегодня в 14:47 0 комментариев 0

Для того, чтоб правильно открывать различные файлы,  компьютер использует необходимые ему инструменты с инструкцией — программы. Программа — это набор команд, который позволяет выполнить поставленную задачу. Эти задачи могут быть разными: считывание информации с определенного файла (например, winamp — программа, позволяющая слушать музыку), создание новых файлов (например, Photoshop позволяет создавать графические файлы) и множество других (программы, обеспечивающие выход в интернет, так называемые «браузеры» или миллионы всевозможных игр, которые так же являются программами). Программу можно отличить по её особу формату, самый распространенный — .exeпрограмма

Интерфейс — общее в разнообразии программ

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

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

У многих программ возможно изменение пользовательского интерфейса (можно поменять внешний вид программы на свой вкус). Помните, мы говорили, что операционная система — комплекс программ. А это значит, что и её интерфейс можно поменять, как это делать мы расскажем позже, а пока для наглядности приведем пример измененного интерфейса для Windows7.

1391089944_preview-1-7778

Мы видим, что изменены не только обои рабочего стола, но и все его составляющие: панель задач (нижняя горизонтальная полоска), кнопка пуска. фон открывающихся окон, а так же все значки. Но вернемся к самим программам

Калькулятор, как типичная программа

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

ЗАКЛАДКИ В БРАУЗЕРЕ: КАК НЕ ПОТЕРЯТЬ САЙТ
Сегодня в 14:46 0 комментариев 0

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

Закладки браузера

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

Как сделать закладку в Google Chrome

В конце адресной строки (где обозначен адрес сайта, ссылка на него) находится значок звездочки, он и добавляет закладку в избранное

гугл-хром-закладка

гугл-хром-как-сделать-закладку

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

 

сохранение закладки в гугл хром

 

 

 

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

другие закладки

Если же Вы выбрали сохранение страницы в какую-то другую папку, то она появится в «Других закладках».

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

ВИЗУАЛЬНЫЕ ЗАКЛАДКИ

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

визуальная-закладка

 

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

заполнить закладки хрома

 

В Google chrome, к сожалению, предусмотрено всего восемь стандартных закладок, которые формируются сами (браузер собирает статистику посещаемых Вами сайтов и на основе количества заходов делает визуальные закладки). Их можно удалить, но поставить принудительно собственные нельзя. Кому удобна подобная система — тот пользуется и радуется, а кому нет — тот начинает хитрить и искать альтернативный способ. Существуют особые мини-программы для браузеров, которые увеличивают возможности имеющихся функций или вовсе добавляют новые. Такие программы называют расширениями браузера. Можно поставить расширение, которое позволяет полностью контролировать визуальные вкладки.

23 рекомендации для читабельного кода
Сегодня в 14:41 0 комментариев 0

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

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

Ниже приведены 23 принципа, которые помогут написать более читабельный код. Это длинная статья, поэтому не стесняйтесь перейти к любой части:

Содержание


1. Сначала определить проблему
2. Выбрать правильный инструмент
3. Главное — простота
4. Функции, классы и компоненты должны иметь чёткое назначение
5. Придумывать имена трудно, но это важно
6. Не дублируйте код
7. Удалите мёртвый код, не оставляйте его в комментариях
8. Постоянные значения должны быть в статических константах или перечисляемых типах
9. Предпочитайте внутренние функции, а не кастомные решения
10. Читайте руководства для конкретного языка
11. Избегайте нескольких вложенных блоков
12. Суть не в лаконичности
13. Изучите шаблоны проектирования и когда их избегать
14. Разделите классы на хранение и обработку данных
15. Исправляйте корень проблемы
16. Скрытая ловушка абстракций
17. Приложение не подчиняется правилам реального мира
18. По возможности типизируйте переменные, даже если это не требуется
19. Пишите тесты
20. Проводите статический анализ
21. Код-ревью с человеком
22. Комментарии
23. Документация
Вывод

1. Сначала определить проблему


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

Ваш фрагмент кода — тоже потенциальная проблема. Даже самый красивый код. Единственный раз, когда код перестаёт быть проблемой — когда проект закончен и больше не поддерживается. Почему проблемой? Потому что кому-то придётся его читать, понимать, исправлять, расширять или даже полностью удалять реализованную функцию.

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

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

Есть и другие типы проблем. Допустим, нужно реализовать фильтруемый список записей. Данные хранятся в БД со сложными связями между записями. Анализ задания клиента показал, что для такой фильтрации данных из-за структуры БД придётся потратить около 20 часов на создание сложных SQL-запросов с множеством операций соединения и внутренних запросов. Почему бы не объяснить, что другое решение, пусть и неполное, займёт всего 1 час? Может оказаться, что дополнительная функция не стоит столько потраченного времени и денег.

2. Выбрать правильный инструмент


Возможно, этот модный язык, ваш любимый фреймворк или новый движок базы данных — не самый лучший инструмент для решения проблемы. В серьёзном проекте не полагайтесь только на один инструмент, о котором вы слышали много хорошего. Это рецепт катастрофы. Если нужны отношения между данными в базе, то желание поучиться MongoDB приведёт к печальному финалу. Да, всё можно реализовать, но часто приходится использовать обходные пути, а это дополнительный код и неоптимальные решения. Конечно, гвоздь забивается и деревянной доской, но быстрый поиск в Google наведёт на молоток. Возможно, со времени прошлого поиска решения уже появилась новая нейросеть, которая автоматически выполнит задачу вместо вас.

3. Главное — простота


Возможно, вы слышали выражение «Преждевременная оптимизация — корень всего зла». Тут есть доля правды. Лучше выбрать простое решение, пока вы на 100% не уверены, что оно не сработает. Не просто предполагаете, но уже опробовали или заранее рассчитали — и точно уверены, что не сработает. Какова бы ни была причина для выбора более сложного решения — будь то скорость выполнения, экономия RAM, расширяемость, отсутствие зависимостей или другие причины — оно может сильно повлиять на читабельность кода. Не усложняйте без необходимости. Если только вы не знаете более эффективное решение, которое точно не повлияет на читабельность или требования по времени разработки.

По той же причине не нужно использовать все новые возможности языка, если они не приносят пользы вам и вашей команде. Новое — не значит лучшее. Если не уверены, то перед рефакторингом вернитесь к первому пункту и подумайте, какую проблему вы пытаетесь решить. Оператор for не устарел только из-за того, что в JavaScript появилось слишком много новых способов написания циклов.

4. Функции, классы и компоненты должны иметь чёткое назначение


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

Разделите код на функции, каждая из которых выполняет одно действие. Например, возьмём кнопку. Кнопка может быть классом, который объединяет все функциональные возможности кнопки. Вы можете реализовать кнопку с одной функцией для рисования на экране, с другой — для выделения при наведении курсора мыши, одну для вызова и ещё одну для анимации по щелчку. Можно и дальше делить класс. Если нужно рассчитать положение прямоугольной кнопки по разрешению экрана, не используйте функцию draw. Для рисования кнопки реализуйте другой класс, его могут использовать и другие элементы GUI. 

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

Рассмотрим примеры кода с одинаковой функциональностью. Какой быстрее прочитать и понять его действия?

// C++
if (currentDistance < radius2) {
    // Это вид игрока
    if (!isLight) {
        // Если освещение тайла около 30% или больше или расстояние от игрока 1, то тайл должен быть видим.
        if (hasInfravision || map.getLight(mapPosition) > 0.29f || ASEngine::vmath::distance(center, mapPosition) == 1) {
            map.toggleVisible(true, mapPosition);
        }
    }
    // Это для вычислений света
    else {
        ASEngine::ivec3 region = World::inst().map.currentPosition;
        ASEngine::ivec2 pos = mapPosition;
        if (mapPosition.x > 63) {
            pos.x -= 64;
            region.x += 1;
        }
        else if (mapPosition.x < 0) {
            pos.x += 64;
            region.x -= 1;
        }
        if (mapPosition.y > 63) {
            pos.y -= 64;
            region.y += 1;
        }
        else if (mapPosition.y < 0) {
            pos.y += 64;
            region.y -= 1;
        }
        map.changeLight(pos, region, 1.0f - static_cast(currentDistance) / static_cast(radius2));
    }
}


// C++
if (currentDistance < radius2) {
    // Это вид игрока
    if (!isLight) {
        this->markVisibleTile(hasInfravision, map, center, mapPosition);
    }
    // Это для вычислений света
    else {
        ASEngine::ivec3 region = World::inst().map.currentPosition;
        ASEngine::ivec2 pos = map.getRelativePosition(mapPosition, region);
        map.changeLight(pos, region, 1.0f - static_cast(currentDistance) / static_cast(radius2));
    }
}


5. Придумывать имена трудно, но это важно


Названия должны хорошо различаться и давать общее представление о том, что делает переменная или функция. Поскольку с этим кодом работает вся команда, важно соответствовать соглашениям, выбранным для проекта. Даже если лично вы с ними не согласны. Если каждый запрос на запись в базе данных начинается со слова “find”, например, “findUser”, то ваши коллеги могут запутаться, если вы вдруг назовёте функцию “getUserProfile”, потому что вы к ней привыкли. По возможности группируйте названия. Например, если есть много классов для проверки ввода, то суффикс “Validator” сразу покажет назначение класса.

Выберите какой-нибудь тип записи и соблюдайте его. Всё становится запутанным, если в разных файлах одного проекта встречются camelCasesnake_casekebab-case и beercase.

6. Не дублируйте код


Мы уже установили, что код является проблемой, так зачем дублировать свои проблемы, чтобы сэкономить несколько минут? Это действительно не имеет смысла. Копипаст кажется быстрым решением, но если надо скопировать более двух строк, то подумайте над лучшим решением. Может, общая функция или цикл?

7. Удалите мёртвый код, не оставляйте его в комментариях


Код в комментариях сбивает с толку. Кто-то временно его убрал? Это важно? Когда его прокомментировали? Он мёртв, избавьте его от страданий. Просто уберите. Понимаю, что вы не решаетесь удалить код, потому что всё может пойти плохо — и тогда вы просто раскомментируете его. Вы можете быть очень привязаны к нему, ибо потратили время и энергию на его написание. Или вы думаете, что он может «скоро» понадобиться. Все эти проблем решает система управления версиями. Если код понадобится, просто зайдите в историю git. Убирайте за собой!

8. Постоянные значения должны быть в статических константах или перечисляемых типах


Вы используете строки или целые числа для определения типов объектов? Например, у пользователя может быть роль «админ» или «гость». Как вы проверите, что у него роль «админ»?

if ($user->role == "admin") { 
// user is an admin
}


Это совсем не классно. Прежде всего, если имя admin изменится, вам придётся менять его во всём приложении. Говорите, такое редко случается, мол, в современных IDE массовую замену сделать несложно? Это правда. Другая причина — отсутствие автодополнения, и из-за этого повышается вероятность ошибки. Её может быть трудно искать. 

Определив глобальные константы или перечисляемые типы в зависимости от языка, вы получите автозаполнение и сможете изменить значение в одном месте, если это когда-нибудь понадобится. Не нужно даже помнить, какое значение скрыто за константой, вы просто позволяете IDE выполнять магию автозаполнения.

// PHP
const ROLE_ADMIN = "admin";

if ($user->role == ROLE_ADMIN) { 
// user is an admin
}


// C++
enum class Role { GUEST, ADMIN }; // Можно сопоставить такой enum со строкой, но это не требуется.

if (user.role == Role.ADMIN) { 
// user is an admin
}


Это не просто типы ваших объектов. В PHP в качестве имён полей можно указать массивы со строками. В сложных структурах легко сделать опечатку, поэтому объекты предпочтительнее. Старайтесь избегать кодирования строками — и вы уменьшите количество опечаток и увеличите скорость работы благодаря автозаполнению.

9. Предпочитайте внутренние функции, а не кастомные решения


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

10. Читайте руководства для конкретного языка


Если вы пишете на PHP, то должны знать PSR. Для JavaScript есть приличное руководство от Airbnb. Для C++ есть руководство от Google и основные рекомендации Бьёрна Страуструпа, создателя C++. В других языках могут быть свои рекомендации по качеству кода, или вы даже можете придумать собственные стандарты для своей команды. Важно всем придерживаться выбранного ориентира для проекта, каким бы он ни был. Это предотвращает проблемы из-за того, что люди с разным уникальным опытом делают то, к чему привыкли.

11. Избегайте нескольких вложенных блоков


Просто сравните два блока кода:

void ProgressEffects::progressPoison(Entity entity, std::shared_ptr<Effects> effects)
{
    float currentTime = DayNightCycle::inst().getCurrentTime();
    if (effects->lastPoisonTick > 0.0f && currentTime > effects->lastPoisonTick + 1.0f) {
        if (effects->poison.second > currentTime) {
            std::shared_ptr<Equipment> eq = nullptr;
            int poisonResitance = 0;
            if (this->manager.entityHasComponent(entity, ComponentType::EQUIPMENT)) {
                eq = this->manager.getComponent<Equipment>(entity);
                for (size_t i = 0; i < EQUIP_SLOT_NUM; i++) {
                    if (eq->wearing[i] != invalidEntity && this->manager.entityHasComponent(eq->wearing[i], ComponentType::ARMOR)) {
                        std::shared_ptr<Armor> armor = this->manager.getComponent<Armor>(eq->wearing[i]);
                        poisonResitance += armor->poison;
                    }
                }
            }
            int damage = effects->poison.first - poisonResitance;
            if (damage < 1) damage = 1;
            std::shared_ptr<Health> health = this->manager.getComponent<Health>(entity);
            health->health -= damage;
        } else {
            effects->poison.second = -1.0f;
        }
    }
}


void ProgressEffects::progressPoison(Entity entity, std::shared_ptr effects)
{
    float currentTime = DayNightCycle::inst().getCurrentTime();
    if (effects->lastPoisonTick < 0.0f || currentTime < effects->lastPoisonTick + 1.0f) return;
    if (effects->poison.second <= currentTime) {
        effects->poison.second = -1.0f;
        return;
    }
    
    int poisonResitance = this->calculatePoisonResistance(entity);
    int damage = effects->poison.first - poisonResitance;
    if (damage < 1) damage = 1
Оптический приемопередатчик FTDI-POF
Сегодня в 14:40 0 комментариев 0

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

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

Задача: создать рабочий прототип платы с последовательным портом, сигналы которого передаются по пластиковой волоконно-оптической линии связи. За основу взят программатор MBFTDI, построенный на микросхеме FT2232H. Разъем JTAG с программатора нужно было убрать и на его место поставить оптический приемник и передатчик. Что и было сделано.

Дальше расскажу о том, что и как я делал


Услышав техническое задание, я сразу сказал, что это не возможно. Могу сказать, что в вузе мы не раз говорили об оптоволокне, однако все время упор был сделан именно на кварцевое волокно, которое сейчас используется в линиях связи. Для работы с ним необходимо дорогое оборудование. А нужно было найти недорогое решение. 

Однако после изучения статьи на Хабре, я был сильно озадачен. Вот что именно меня озадачило: при моих оценках «отлично» и почти 100% посещении всех занятий (да-да, я не упустил случая себя похвалить) я и не мог предположить, что существует POF (Plastic Optical Fiber). Это пластиковое волокно, которое как раз подходит для нашей задачи.

  1. Его размеры 2.2 мм в диаметре. Для сравнения: диаметр стандартного кварцевого волокна 125 мкм.
  2. Обработка почти не требуется. Можно резать волокно обычным ножом и не обрабатывать торец, но все равно будет работать.
  3. Приемник и передатчик вместе стоят чуть больше 1000 рублей, что меньше, чем устройства для работы с кварцевым волокном.
  4. Минимум поглощения находится в видимом спектре – 650 нм (красный цвет)


Естественно, что показатели передачи лучше у кварцевого волокна, однако для нас прекрасно подойдет и POF. Его преимущества делают нашу работу легче и удобнее, а низкая цена компонентов вообще нас радует.

Давайте же перейдем к самому процессу разработки.

От начала до конца за 3 шага


Для работы с этим волокном нам нужны приемник и передатчик. Выбор пал на SFH551 (черный) и SFH756 (белый) соответственно. 



Для начала была собрана пробная модель на печатной плате, на кабеле длинной 15-20 см все работало, однако при подключении всей катушки (около 100 м) излучение рассеивалось в волокне и не доходило до конца. Кажется светодиод в передатчике светит слишком слабо. Разобравшись в документации, стало понятно, что передатчику нужен больший ток. Микросхема FTDI на выходе не может дать более 12мА, а нужно хотя бы 50мА. Эта проблема решена путем добавления в схему передатчика транзистора.

Получив работающую схему оптической развязки, мы приступили к разводке платы. За основу, естественно, была взята схема программатора MBFTDI. Дальнейшую работу проводили в программе DipTrace. Я не нашел для нее библиотеки с нашими элементами и сделал их сам. Честно говоря, этой программой я пользовался в первый раз, но ее понятный интерфейс помог быстро освоиться. Также в DipTrace есть интересная функция 3D Preview, которая показывает плату со всеми элементами в 3D. Это для меня было по-своему захватывающе, так как своему элементу также можно присвоить 3D модель. И, конечно же, я их сделал. Работа проводилась в Компасе 3D. Созданные модели можно конвертировать в формат, подходящий для DipTrace – STEP. 

Вот, какая модель получилась в конце, рядом готовая плата:

image

Имея рабочие устройства на руках, наступила фаза исследований. Для начала проверили, работает ли наш прототип. Да, все прекрасно работало: на скорости 921600 бит в секунду на расстоянии 100 метров данные успешно передавались и принимались. Для приема и передачи использовались программы PUTTY и TeraTerm.

Теперь появился вопрос – можно ли передавать информацию по одному кабелю? И если можно, то как?

Например, можно собрать схему со свето-делительными кубами. 

image

Тут уже задумываемся о цене кубиков, и этот вариант сразу отпадает. Ну и ладно, мы поищем что-нибудь еще. И найдем! Мы вспомнили об оптических разветвителях. 
Смотрел в интернете, но почему-то никто их не предлагал на продажу(или я плохо искал), хотя было несколько статей на эту тему.



Ну, в любом случае идея для нас понятная, можно и самим попытаться. Сделаем на каждом кабеле по скосу, приблизительно до середины. Соединив их, получим что-то вроде Х — делителя.



Выемки сделаны канцелярским ножом, никакого расчета деления мощности делать не стоит, потери в месте соединения слишком высокие. Но как маленький эксперимент – нам подходит, даже что-то получилось.

Также нужно вспомнить, что при добавлении в схему делителей, уменьшается мощность, дошедшая до приемника: с кубиками получим 25%, с делителями 50% начальной мощности. Это тоже нам не особо на руку.

Короткий вывод


Приятное знакомство с DipTrace. Неожиданное знакомство POF и работа с ним. Получение опыта (куда-же без него) и просто радость за выполненную работу. К сожалению, остался вопрос насчет использования одного кабеля для передачи в обе стороны. 
Библиотеку из двух элементов AVAGO можно найти на GitHub.

Надеюсь, что статья вам понравилась, если есть советы, буду рад их прочитать.

Горячие клавиши общего назначения
Сегодня в 14:37 0 комментариев 0

Работу в Windows можно сделать более эффективной и быстрой, если пользоваться не только мышью, но и применять «горячие клавиши» - специальные комбинации клавиш, призванные упростить и ускорить работу. Например, мало, кто знает, что очень часто используемый Проводник (куда уж без него) запускается одновременным нажатием Win + E. Согласитесь, это гораздо удобнее!

Примечание

  • Клавиша Win находится между клавишами Ctrl и Alt с левой стороны (на ней нарисована эмблема Windows).
  • Клавиша Menu находится слева от правого Ctrl.
  • Комбинация «клавиша» + «клавиша» означает, что сначала надо нажать первую клавишу, а затем, удерживая ее, вторую.

Горячие клавиши общего назначения

Сочетание клавишОписание
Ctrl + Esc
Win
Открыть меню «Пуск» (Start)
Ctrl + Shift + EscВызов «Диспетчера задач»
Win + EЗапуск «Проводника» (Explore)
Win + RОтображение диалога «Запуск программы» (Run), аналог «Пуск» — «Выполнить»
Win + DСвернуть все окна или вернуться в исходное состояние (переключатель)
Win + LБлокировка рабочей станции
Win + F1Вызов справки Windows
Win + PauseВызов окна «Свойства системы» (System Properties)
Win + FОткрыть окно поиска файлов
Win + Сtrl + FОткрыть окно поиска компьютеров
PrintscreenСделать скриншот всего экрана
Alt + PrintscreenСделать скриншот текущего активного окна
Win + Tab
Win + Shift + Tab
Выполняет переключение между кнопками на панели задач
F6
Tab
Перемещение между панелями. Например, между рабочим столом и панелью «Быстрый запуск»
Ctrl + AВыделить всё (объекты, текст)
Ctrl + C
Ctrl + Insert
Копировать в буфер обмена (объекты, текст)
Ctrl + X
Shift + Delete
Вырезать в буфер обмена (объекты, текст)
Ctrl + V
Shift + Insert
Вставить из буфера обмена (объекты, текст)
Ctrl + NСоздать новый документ, проект или подобное действие. В Internet Explorer это приводит к открытию нового окна с копией содержимого текущего окна.
Ctrl + SСохранить текущий документ, проект и т.п.
Ctrl + OВызвать диалог выбора файла для открытия документа, проекта и т.п.
Ctrl + PПечать
Ctrl + ZОтменить последнее действие
ShiftБлокировка автозапуска CD-ROM (удерживать, пока привод читает только что вставленный диск)
Alt + EnterПереход в полноэкранный режим и обратно (переключатель; например, в Windows Media Player или в окне командного интерпретатора).

Работа с текстом

Сочетание клавишОписание
Ctrl + AВыделить всё
Ctrl + C
Ctrl + Insert
Копировать
Ctrl + X
Shift + Delete
Вырезать
Ctrl + V
Shift + Insert
Вставить
Ctrl + ←
Ctrl + →
Переход по словам в тексте. Работает не только в текстовых редакторах. Например, очень удобно использовать в адресной строке браузера
Shift + ←
Shift + →
Shift + ↑
Shift + ↓
Выделение текста
Ctrl + Shift + ←
Ctrl + Shift + →
Выделение текста по словам
Home
End
Ctrl + Home
Ctrl + End
Перемещение в начало-конец строки текста
Ctrl + Home
Ctrl + End
Перемещение в начало-конец документа

Работа с файлами

Сочетание клавишОписание
Shift + F10
Menu
Отображение контекстного меню текущего объекта (аналогично нажатию правой кнопкой мыши).
Alt + EnterВызов «Свойств объекта»
F2Переименование объекта
Перетаскивание с CtrlКопирование объекта
Перетаскивание с ShiftПеремещение объекта
Перетаскивание с Ctrl + ShiftСоздание ярлыка объекта
Щелчки с CtrlВыделение нескольких объектов в произвольном порядке
Щелчки с ShiftВыделение нескольких смежных объектов
EnterТо же, что и двойной щелчок по объекту
DeleteУдаление объекта
Shift + DeleteБезвозвратное удаление объекта, не помещая его в корзину

Работа в проводнике

Сочетание клавишОписание
F3 или Ctrl + FОтобразить или спрятать панель поиска в проводнике (переключатель).


+ (на цифровой клавиатуре)
− (на цифровой клавиатуре)
Навигация по дереву проводника, свёртка-развёртка вложенных каталогов.
* (звездочка) (на цифровой клавиатуре)Отображение всех папок, вложенных в выделенную папку
F5Обновить окно проводника или Internet Explorer.
BackspaceПерейти на уровень вверх в окне проводника или Internet Explorer.
F4Перейти к адресной строке проводника или Internet Explorer.

Работа с окнами

Сочетание клавишОписание
Alt + Tab
Alt + Shift + Tab
Вызов меню перехода между окнами и переход по нему
Alt + Esc 
Alt + Shift + Esc
Переход между окнами (в том порядке, в котором они были запущены)
Alt + F6Переключение между несколькими окнами одной программы (например, между открытыми окнами WinWord)
Alt + F4Закрытие активного окна (запущенного приложения). На рабочем столе — вызов диалога завершения работы Windows
Ctrl + F4Закрытие активного документа в программах, допускающих одновременное открытие нескольких документов
Alt
F10
Вызов меню окна
Alt + − (минус)Вызов системного меню дочернего окна (например, окна документа)
EscВыйти из меню окна или закрыть открытый диалог
Alt + букваВызов команды меню или открытие колонки меню. Соответствующие буквы в меню обычно подчёркнуты (или изначально, или становятся подчёркнутыми после нажатия Alt). Если колонка меню уже открыта, то для вызова нужной команды необходимо нажать клавишу с буквой, которая подчёркнута в этой команде
Alt + SpaceВызов системного меню окна
F1Вызов справки приложения.
Ctrl + Up
Ctrl + Down
Вертикальная прокрутка текста или переход вверх-вниз по абзацам текста.

Работа с диалоговыми окнами

Сочетание клавишОписание
Ctrl + TabПеремещение вперед по вкладкам
Ctrl + Shift + TabПеремещение назад по вкладкам
TabПеремещение вперед по опциям
Alt + подчеркнутая букваВыполнение соответствующей команды или выбор соответствующей опции
EnterВыполнение команды для текущей опции или кнопки
Клавиши со стрелкамиВыбор кнопки, если активная опция входит в группу переключателей
Shift + TabПеремещение назад по опциям
Shift + TabПеремещение назад по опциям

Работа в Internet Explorer

Сочетание клавишОписание
F4Отображение списка поля «Адрес»
Ctrl + N 
F5
Запуск еще одного экземпляра обозревателя с аналогичным веб-адресом
Ctrl + RОбновление текущей веб-страницы
Ctrl + BОткрывает диалоговое окно «Упорядочить избранное»
Ctrl + EОткрывает панель «Поиск»
Ctrl + FЗапуск служебной программы поиска
Ctrl + IОткрывает панель «Избранное»
Ctrl + LОткрывает диалоговое окно «Открыть»
Ctrl + OОткрывает диалоговое окно «Открыть», подобно действию CtrL+L
Ctrl + PОткрывает диалоговое окно «Печать»
Ctrl + WЗакрытие текущего окна
F11Переход в полноэкранный режим и обратно (работает и в некоторых других приложениях).

Декорируем заколку — объёмный цветок из бисера, МК
Сегодня в 13:06 0 комментариев 0

Время изготовления: 2 вечера.
 
Сложность изготовления: требует небольших навыков работы с бисером.
 
Что потребуется:

  • Бисер красный – 2 г
  • Бисер розовый – 2 г
  • Леска
  • Иголка для бисера – 1 шт.
  • Ножницы – 1 шт.
  • Клей «Контакт»
  • Большая бусина – 1 шт.


 

 
Ход изготовления:

Цветок для заколки будет состоять из семи объемных одинаковых лепесточков.
 
Начинаем плетение. Отрезаем 25 сантиметров лески и нанизываем на нее одну красную бусину.
 

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

 
Теперь нам надо надеть на один конец лески еще пару красных бисеринок. Затем продеть другой конец лески в обратном направлении.
 

 
Затем надеваем на леску еще две красные бусины. Навстречу продеваем другой конец лески.
 


 
Теперь на леску необходимо надеть три бусинки. Сначала красную, затем розовую и снова красную.  Продеваем другой конец лески в обратном направлении.
 

 
Повторяем еще раз три бусины — красную, розовую и красную. И проделываем то же самое с леской.
 
Затем нам потребуется четыре бусинки. Сначала красная, затем две розовых и красная. Повторяем четыре бусинки в том же прядке. Как и в прошлые разы продеваем леску навстречу.
 
Теперь нам потребуется 5 бусин: красная, розовая, розовая, розовая, красная. Снова вдеваем леску навстречу.
 
Повторяем ряд из пяти бусин. Продеваем вторую леску в обратном направлении.
 


 
Теперь начинаем уменьшать количество бусин. Делаем два ряда по четыре бусины: красная, розовая, розовая, красная. 
 
Затем два ряда: красная, розовая, красная. И два ряда: красная, красная. Последняя завершающая бусина должна быть, как и первая – красная.
 
Теперь леску хорошо затягиваем и завязываем на узелок.
 

 
Делаем еще шесть лепесточков.
 

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

 
Берем иголку для бисера и вдеваем в нее леску, прошиваем лепестки по кругу. Так лепестки будут надежнее сцеплены между собой.
Цветок готов. Теперь приклеиваем его к заколке. А для прочности прикрепляем его леской.
 
Вот и все, заколочка с объемным цветочком готова!
 

Изящная брошь из бисера и кружева
Сегодня в 13:04 0 комментариев 0

Сложность изготовления: требует навыков шитья.
 
Время изготовления: один или два вечера.
 
Что потребуется:

  • Фетр синий или голубой толщиной 1 мм – 10 кв. см
  • Бумага – 5 кв. см
  • Ручка шариковая
  • Бисер перламутровый – 1-2 г
  • Бисер голубой – 2-3 г
  • Бусины граненые голубые "крашеный горный хрусталь" диаметром 3,5 мм – 4 шт.
  • Пришивной страз красного цвета диаметром 6,5 мм – 1 шт.
  • Бисер персикового цвета – 0,5 г
  • Бисер белого цвета – 0,5 г
  • Иголка для бисера
  • Нитки голубые
  • Клей «Момент» или «Контакт»
  • Ножницы
  • Булавка для брошей – 1 шт.


 
Ход изготовления:

Сначала нам необходимо нарисовать на бумаге шаблон и вырезать его.
 
Затем приложить шаблон к фетру и обвести шариковой ручкой. Всего нам потребуется 2 одинаковых детали.
 

 
Выстригаем эти детали ножницами. На одну мы будем нашивать бисер, а вторая будет служить основой для булавки.
 

 
Берем одну фетровую деталь и начинаем обшивать ее по краю бисером  перламутрово-фиолетового цвета.
 
Для этого воткните нитку в иголку и завяжите на конце узелок. Проткните фетр иголкой и выведите нитку наружу. Затем наденьте на иголку с ниткой две бисеринки. И пришейте их швом назад иголку.
 

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

 
После этого берем страз красного цвета и размещаем его в центр нашего цветка.
 


 
Затем обшиваем страз бисером персикового цвета.
 
После этого обшиваем серединку белым бисером.
 

 
Затем делаем промежутки между лепестками и выделяем их перламутровым бисером. У нас должно получиться четыре сердцевидных лепестка.
 


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

 
Затем заполняем лепесточки бисером голубого цвета.
 

 
Теперь нам нужно сделать более объемной нашу серединку. Для этого нам потребуется бисер персикового цвета. Пришиваем сначала полоску из трех бисеринок. Затем полоску из двух бисеринок. Заполняем таким образом центр цветка.
 

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

 
Вот и все, брошка готова, носите с удовольствием!
 

Изящная брошь из бисера и кружева
Сегодня в 13:03 0 комментариев 0

Для создания броши мне понадобились такие материалы:
 

  • основа для брошей
  • небольшой отрезок фетра
  • такого же размера кусочек двойного кожзама (у меня нашелся отрезок старого ремня)
  • немного белого кружева
  • леска 0.20 мм
  • бисерная иголка
  • ножницы
  • горячий клей
  • цветочек из бисера

                   
 

 
Ход работы:
 
Первым делом я разогрела палочку клея в пистолете и приклеила кусочек фетра к нижней части бисерной розочки. Для большей надежности в нескольких местах я пришила фетр к нижним бисеринкам леской. 


 
Кусочек кожзама я разделила на две части (он у меня двойной, а можно взять два кусочка менее плотного, или заменить второй отрезок квадратиком плотной джинсовой ткани). 
 

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


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


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

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


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


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


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


 
Как только клей остыл, я унесла брошку для съемок финальных фото. А уже через 30 минут украшение обрело свою новую хозяйку. Розочка стала отличным подарком моей творческой подруге Миле.


 
Вам понравилась такая идея создания броши? Хотите новых мастер-классов? Тогда — до новых встреч!

Страницы: 1 2 3 4