Всем привет! Наконец-таки подошел к концу капитальный ремонт в квартире, и в связи с этим хочу поделиться с Вами, реализованным проектом «Умной квартиры» с базовыми возможностями управления освещением, подогревом теплых полов, контроля температуры и влажности помещений, и прочими плюшками. Описательная часть будет выполнена в виде мануала (так проще излагать что ли).
User
API BIM-системы Renga
6 min
6.8KВсем привет! В этой статье я расскажу об API BIM-системы Renga. О самой системе можно почитать тут, здесь же можно запросить версию для некоммерческого использования. Если вкратце, то Renga это трехмерная система автоматизированного проектирования в архитектуре и строительстве. В ней проектировщик/архитектор/конструктор работает с информационной моделью здания, получает ассоциативные чертежи, спецификации, в общем, создает проект.
Сначала, как водится, немного водички.
Разработка расширений для CAD систем довольно распространена, поскольку в любом проектировании существуют различные направления, разделы и стандарты оформления проектной документации, которые требуют разной узкоспециализированной функциональности. Кроме того существуют задачи интеграции с программами расчета, визуализации, документооборота и многими другими. Выход — создание подключаемых модулей, расширяющих функциональность системы.
Зачем нужно API CAD-системы
Сначала, как водится, немного водички.
Разработка расширений для CAD систем довольно распространена, поскольку в любом проектировании существуют различные направления, разделы и стандарты оформления проектной документации, которые требуют разной узкоспециализированной функциональности. Кроме того существуют задачи интеграции с программами расчета, визуализации, документооборота и многими другими. Выход — создание подключаемых модулей, расширяющих функциональность системы.
+4
Эксплуатация зданий: что будет, если один раз подойти с умом
7 min
18KКарточка оборудования на модели здания — к ней прикреплены работы, затраты по единице железа, все документы (договоры, гарантия и пр.), инструкции и регламенты.
Вот строят торговый центр. Сразу, когда строят, рассчитывают, что, например, то же кондиционирование будет требовать столько-то энергии, столько-то работы по обслуживанию. А потом выясняется, что где-то они проёмы так заложили, что оборудование внутрь уже не занести. И вместо одной мощной единицы появляется две, зато которые можно занести внутрь. Или вот надо было сделать определённую конструкцию для специального оборудования. Иностранный подрядчик сказал:
— Привезли не ту конструкцию, мы её уже смонтировали, но ваше оборудование не подходит. Либо простой, либо так принимайте и покупайте другое.
И все расчёты дальше идут лесом. Звучит дико, но так почти на каждом объекте.
Вот тут пригождаются информационные модели, а точнее — приложения для управления эксплуатацией, которые работают в связке с моделями зданий. Хотя бы для того, чтобы тот же торговый центр мог элементарно посчитать, что и сколько стоит в эксплуатации. Конечно, обходится не без воплей — сразу становится видно, кто, где и сколько эээ…нецелевым образом расходует.
Естественно, BIM-приложения дают много и в том случае, если здание уже построено и надо эксплуатировать рациональнее. Да, бывает, что модели нет (а иногда даже и простой 2D-документации), но все эти проблемы решаемы. Мы же в будущем, чёрт побери, тут всё продумано!
Вот строят торговый центр. Сразу, когда строят, рассчитывают, что, например, то же кондиционирование будет требовать столько-то энергии, столько-то работы по обслуживанию. А потом выясняется, что где-то они проёмы так заложили, что оборудование внутрь уже не занести. И вместо одной мощной единицы появляется две, зато которые можно занести внутрь. Или вот надо было сделать определённую конструкцию для специального оборудования. Иностранный подрядчик сказал:
— Привезли не ту конструкцию, мы её уже смонтировали, но ваше оборудование не подходит. Либо простой, либо так принимайте и покупайте другое.
И все расчёты дальше идут лесом. Звучит дико, но так почти на каждом объекте.
Вот тут пригождаются информационные модели, а точнее — приложения для управления эксплуатацией, которые работают в связке с моделями зданий. Хотя бы для того, чтобы тот же торговый центр мог элементарно посчитать, что и сколько стоит в эксплуатации. Конечно, обходится не без воплей — сразу становится видно, кто, где и сколько эээ…нецелевым образом расходует.
Естественно, BIM-приложения дают много и в том случае, если здание уже построено и надо эксплуатировать рациональнее. Да, бывает, что модели нет (а иногда даже и простой 2D-документации), но все эти проблемы решаемы. Мы же в будущем, чёрт побери, тут всё продумано!
+32
BIM: как мы строим строителей на стройке
6 min
78KПо нашей примерной оценке, основанной на 20-летней практике, на земляных работах можно «потерять» до 50-60 % бюджета. На железобетоне и отделке точно 30 %. На ошибках перезаказа при коллизиях стоимость инженерки увеличивается примерно на 10 %. Именно по этой простой причине, когда «злой заказчик» внедряет BIM-модель здания, со всех сторон начинаются дикие крики и стоны.
BIM-контроль сейчас будет на всех госзаказах по новому нормативу, поэтому крики и стоны будут особенно эпичны.
Вот здесь я вижу трассировку всех систем, могу получить точную смету на каждый узел: и при перемещении или добавлении объекта получу обновления сразу во всех проектных и рабочих документах.
Что такое BIM-модель? Это трёхмерная модель здания, где все системы состыкованы и увязаны в одном едином плане. Поставили розетку в комнате — в общей смете тут же появилась новая розетка и соответствующий метраж кабеля. Погрешность такой модели по материалам — 2 %. На бумаге обычно берут запас 15 %, и излишки этого запаса отчаянно «теряются».
Давайте лучше покажу примеры, чем буду рассказывать.
BIM-контроль сейчас будет на всех госзаказах по новому нормативу, поэтому крики и стоны будут особенно эпичны.
Вот здесь я вижу трассировку всех систем, могу получить точную смету на каждый узел: и при перемещении или добавлении объекта получу обновления сразу во всех проектных и рабочих документах.
Что такое BIM-модель? Это трёхмерная модель здания, где все системы состыкованы и увязаны в одном едином плане. Поставили розетку в комнате — в общей смете тут же появилась новая розетка и соответствующий метраж кабеля. Погрешность такой модели по материалам — 2 %. На бумаге обычно берут запас 15 %, и излишки этого запаса отчаянно «теряются».
Давайте лучше покажу примеры, чем буду рассказывать.
+64
Советский HI-FI и его создатели: путешествие «Брига» «капитана» Лихницкого
9 min
50KЭтот пост является пилотным в цикле публикаций о культовой аппаратуре в советской аудиотехнике. Мы сравнительно давно обещали этот цикл, но как-то «не доходили руки». В серию статей войдут несколько УМЗЧ, виниловых проигрывателей, акустических систем высокой верности воспроизведения. Иными словами, писать буду про устройства, которые оставили след в истории СССР, а для многих стали символами эпохи. Я постараюсь не обойти стороной историю создания этих девайсов, а также некоторые значимые моменты в биографии их создателей.
Полагаю, будет справедливо первую публикацию посвятить усилителю «Бриг» и его создателям Анатолию Лихницкому и Алле Каляевой, как первопроходцам серийного HI-FI в СССР. Признаюсь, что не редко я иронизирую по поводу маргинальных взглядов Лихницкого на звук и некоторые аспекты схемотехники, о которых этот человек много писал в конце жизни, что никак не умаляет его заслуг как инженера и организатора работ по созданию первого советского HI-FI УМЗЧ. Следует также отметить существенный вклад в создание усилителя инженера Николая Слесарева и дизайнера Владимира Ратаева.
Полагаю, будет справедливо первую публикацию посвятить усилителю «Бриг» и его создателям Анатолию Лихницкому и Алле Каляевой, как первопроходцам серийного HI-FI в СССР. Признаюсь, что не редко я иронизирую по поводу маргинальных взглядов Лихницкого на звук и некоторые аспекты схемотехники, о которых этот человек много писал в конце жизни, что никак не умаляет его заслуг как инженера и организатора работ по созданию первого советского HI-FI УМЗЧ. Следует также отметить существенный вклад в создание усилителя инженера Николая Слесарева и дизайнера Владимира Ратаева.
+36
Взаимодействие веб-страницы с Ethereum
4 min
19KВ сети появилось довольно много материалов про разработку для блокчейн Ethereum и про смарт-контракты, а так же про то, как создавать эти самые смарт-контракты.
В конце концов, есть официальная документация и stackoverflow.
В то же время, долго разбираться в документации не хочется, и многие разработчики в последнее время хотят побыстрее что-то пощупать руками и написать что-нибудь под эфириум, а так как вопросов возникает масса и источники разрознены, я решил собрать в одном месте простой пошаговый мануал с картинками по созданию своего первого dapp (от decentralized app) — децентрализованного приложения. Он будет представлять из себя связку смарт-контракта с веб-интерфейсом. То есть чтобы с помощью веба можно было доставать информацию из блокчейна и пихать ее туда. Постараюсь быть кратким, шаги буду объяснять по ходу дела.
В конце концов, есть официальная документация и stackoverflow.
В то же время, долго разбираться в документации не хочется, и многие разработчики в последнее время хотят побыстрее что-то пощупать руками и написать что-нибудь под эфириум, а так как вопросов возникает масса и источники разрознены, я решил собрать в одном месте простой пошаговый мануал с картинками по созданию своего первого dapp (от decentralized app) — децентрализованного приложения. Он будет представлять из себя связку смарт-контракта с веб-интерфейсом. То есть чтобы с помощью веба можно было доставать информацию из блокчейна и пихать ее туда. Постараюсь быть кратким, шаги буду объяснять по ходу дела.
+21
Структура и модель выполнения .NET Core приложений
15 min
53KВ этой статье я рассмотрю компоненты платформы .NET Core 2.0, необходимые для загрузки и выполнения .NET Core-приложений, а также артефакты для двух возможных типов развертывания.
Текст объемный и рассчитан на:
В статье не упоминается процесс создания приложений при помощи SDK (dotnet CLI), однако эта информация будет полезной для понимания, как работает SDK, а именно её основной компонент (ядро) — «драйвер» dotnet.dll, поскольку эта библиотека является управляемой сборкой и выполняется на .NET Core.
Примеры процессов выполнения описаны для ОС Windows, но работают по тому же принципу и на других ОС (с учетом различных расширений исполняемых файлов и нативных библиотек).
Текст объемный и рассчитан на:
- начинающих разработчиков, которые только знакомятся с платформой .NET Core;
- опытных разработчиков, выполняющих роль DevOps-инженеров в produсtion-окружении.
В статье не упоминается процесс создания приложений при помощи SDK (dotnet CLI), однако эта информация будет полезной для понимания, как работает SDK, а именно её основной компонент (ядро) — «драйвер» dotnet.dll, поскольку эта библиотека является управляемой сборкой и выполняется на .NET Core.
Примеры процессов выполнения описаны для ОС Windows, но работают по тому же принципу и на других ОС (с учетом различных расширений исполняемых файлов и нативных библиотек).
+40
Договоры — это как отладка
7 min
29K7.2. Как форс-мажор указана забастовка в отрасли и регионе, это лучше вычеркнуть, т.к. неясно, в какой отрасли и в каком регионе.
Чтобы быть плохим юристом, не надо обладать специальными навыками: достаточно здравого смысла, чтобы разбираться в документах. Чтобы быть приемлемым юристом — ещё нужна хорошая память для того, чтобы помнить, что и где в нормативах и прецедентах. А чтобы быть отличным — ещё иметь огромную практику и нездоровое чувство юмора. Хотя последнее необязательно, конечно.
Каждый наш договор страхует юрист-отладчик, который как брекпоинтами размечает точки рисков. Сейчас покажу пару примеров того, что он видит и чувствует.
+79
Сомнительный скрипт замены ссылок mamydirect на Geektimes
10 min
35KGeektimes присоединился к некой «партнерской программе», заменяющей прямые ссылки ссылками со скриптом перенаправления.
В код HTML добавился следующий внешний скрипт:
Скрипт, подключенный на страницы гиктаймза, заменяет ссылки, ведущие не на файлы .jpg, .bmp, .pdf, .png, .zip и .gif, находящихся не на доменах из черного списка, ссылкой с редиректом через скрипт
Он же, в свое время, добавляет куки PHPSESSID и совершает перенаправление на URL, указанный в ссылке.
В код HTML добавился следующий внешний скрипт:
<script src="//js.mamydirect.com/js/?h=CqwpgTi7" type="text/javascript" async></script>
Скрипт, подключенный на страницы гиктаймза, заменяет ссылки, ведущие не на файлы .jpg, .bmp, .pdf, .png, .zip и .gif, находящихся не на доменах из черного списка, ссылкой с редиректом через скрипт
http://js.mamydirect.com/redir/clickGate.php
, вида:http://js.mamydirect.com/redir/clickGate.php?u=RGm1L5B5&m=1&p=8d1pun3ZhJ&t=CqwpgTi7&st=&s=&splash=0&abp=1&url=https%3A%2F%2Fmeduza.io%2Fnews%2F2017%2F06%2F09%2Fdyru-v-reestre-roskomnadzora-ispolzovali-protiv-platezhnyh-serverov-rossiyskih-bankov&r=https%3A%2F%2Fgeektimes.ru%2Fpost%2F289947%2F
Он же, в свое время, добавляет куки PHPSESSID и совершает перенаправление на URL, указанный в ссылке.
+128
Опрос пользователей Хабра
1 min
20KДорогие друзья! Мы совершили несколько итераций и за последнее время изменили дизайн наших сайтов: Хабрахабр и Гиктаймс. Мы получили немало фидбэка в комментариях и в обращениях — спасибо за советы, найденные баги фичи, мы всё учли, сделали и записали.
Мы знаем, сколько вас из какой страны и региона, какие вы по полу и даже немножко — по увлечениям. И мы обязательно продолжим знакомство. Но ни одна аналитика не расскажет нам то, что вы можете рассказать словами о том, как вы пользуетесь Хабром и Гиктаймс. Поэтому просим вас уделить несколько минут нашему опросу.
Мы знаем, сколько вас из какой страны и региона, какие вы по полу и даже немножко — по увлечениям. И мы обязательно продолжим знакомство. Но ни одна аналитика не расскажет нам то, что вы можете рассказать словами о том, как вы пользуетесь Хабром и Гиктаймс. Поэтому просим вас уделить несколько минут нашему опросу.
+124
Flightradar24 — как это работает?
4 min
124KНаверное каждый, кто хоть раз встречал или провожал родственников или друзей на самолет, пользовался бесплатным сервисом Flightradar24. Это весьма удобный способ отслеживания положения самолета в реальном времени.
Как показал опрос знакомых, очень мало кто знает, что этот сервис поддерживается лишь энтузиастами, отправляющими на сервер данные. Еще меньше знают, что присоединиться к проекту может любой желающий.
Восполним этот пробел. О том, как это работает продолжим под катом.
Как показал опрос знакомых, очень мало кто знает, что этот сервис поддерживается лишь энтузиастами, отправляющими на сервер данные. Еще меньше знают, что присоединиться к проекту может любой желающий.
Восполним этот пробел. О том, как это работает продолжим под катом.
+128
Взлом Bitcoin по телевизору: обфускуй, не обфускуй, все равно получим QR
13 min
48KTranslation
История про то, как секретный ключ для Bitcoin’a в виде QR-кода восстановили из размазанной картинки
Мы могли бы просто назвать этот пост «Насколько хорош QR-код и как мы его восстановили практически из ничего». Но гораздо интереснее, когда QR-код является ключом к кошельку на сумму $1000 в битках.
+118
Создание языка программирования с использованием LLVM. Часть 7: Расширение языка: Изменяемые переменные
37 min
8.1KTutorial
Translation
Оглавление:
Часть 1: Введение и лексический анализ
Часть 2: Реализация парсера и AST
Часть 3: Генерация кода LLVM IR
Часть 4: Добавление JIT и поддержки оптимизатора
Часть 5: Расширение языка: Поток управления
Часть 6: Расширение языка: Операторы, определяемые пользователем
Часть 7: Расширение языка: Изменяемые переменные
Часть 8: Компиляция в объектный код
Часть 9: Добавляем отладочную информацию
Часть 10: Заключение и другие вкусности LLVM
Добро пожаловать в главу 7 руководства “Создание языка программирования с использованием LLVM”. В главах 1-6 мы построили полноценный, хотя и простой, функциональный язык программирования. На этом пути мы изучили некоторые техники парсинга, изучили, как строить и и как представлять AST, как построить LLVM IR, и как оптимизировать результирующий код, и как JIT компилирует его.
Часть 1: Введение и лексический анализ
Часть 2: Реализация парсера и AST
Часть 3: Генерация кода LLVM IR
Часть 4: Добавление JIT и поддержки оптимизатора
Часть 5: Расширение языка: Поток управления
Часть 6: Расширение языка: Операторы, определяемые пользователем
Часть 7: Расширение языка: Изменяемые переменные
Часть 8: Компиляция в объектный код
Часть 9: Добавляем отладочную информацию
Часть 10: Заключение и другие вкусности LLVM
7.1. Введение
Добро пожаловать в главу 7 руководства “Создание языка программирования с использованием LLVM”. В главах 1-6 мы построили полноценный, хотя и простой, функциональный язык программирования. На этом пути мы изучили некоторые техники парсинга, изучили, как строить и и как представлять AST, как построить LLVM IR, и как оптимизировать результирующий код, и как JIT компилирует его.
+23
Поддержка пользователей, или экстренная компьютерная помощь. Как это делается и сколько стоит
9 min
34KВосстановление работоспособности компьютеров на рабочих местах и решение проблем бизнес-пользователей в случае каких-либо инцидентов часто напоминает тушение пожаров – реакция на сбои и поломки должна быть как можно более оперативной. Без специальной службы здесь не обойтись. Но не так-то просто без цифр и примеров ответить на вопрос, стоит ли создавать собственный отдел или лучше обратиться к аутсорсеру. Я посчитал, во сколько может обойтись техподдержка для средних и крупных компаний.
+34
EmerDNS – альтернатива DNSSEC
5 min
16KКлассический DNS, который специфицирован в rfc1034 не пинает только ленивый. При весьма высокой эффективности работы, он действительно никак не защищён, что позволяет злоумышленникам переводить трафик на подставные сайты, путём подмены DNS-ответов для промежуточных кеширующий серверов (отравление кэша). Как-то с этой напастью борется https с его SSL-сертфикатами, которые позволяют обнаружить подмену сайта. Но пользователи обычно ничего не понимают в SSL, и на предупреждения о несоответствии сертификата автоматически кликают «продолжить», вследствие чего время от времени страдают материально.
+14
Создание языка программирования с использованием LLVM. Часть 5: Расширение языка: Поток управления
29 min
7.4KTranslation
Добро пожаловать в Главу 5 учебника «Создание языка программирования с LLVM». Предыдущие главы (1-я, 2-я, 3-я и 4-я) описывали реализацию простого языка программирования Kaleidoscope и включение в него поддержки генерации LLVM IR, а также последующей оптимизации и JIT-компиляции. К сожалению, в текущем виде Kaleidoscope почти бесполезен: он не имеет никакого потока управления, за исключением вызовов и возвратов. Это означает, что в коде не может быть условных переходов, что значительно ограничивает язык программирования. В этой главе мы расширим Kaleidoscope, добавив в него выражение
if/then/else
и простой цикл "for"
.+17
Создание языка программирования с использованием LLVM. Часть 4: Добавление JIT и поддержки оптимизатора
20 min
10KTranslation
Добро пожаловать в Главу 4 учебника «Создание языка программирования с LLVM». Предыдущие главы (1-я, 2-я и 3-я) описывали реализацию простейшего языка программирования и добавление в него поддержки генерации LLVM IR. В этой главе описаны две новых техники: добавление поддержки оптимизатора и добавление поддержки JIT-компилятора. Эти дополнения продемонстрируют как получить хороший, эффективный код для нашего языка программирования Kaleidoscope.
+17
Создание языка программирования с использованием LLVM. Часть 3: Генерация кода LLVM IR
22 min
16KTranslation
Добро пожаловать в Главу 3 учебника «Создание языка программирования с LLVM». В этой главе мы рассмотрим, как преобразовать AST (Абстрактное Синтаксическое дерево), построенное в Главе 2, в LLVM IR. Она расскажет вам о некоторых аспектах работы LLVM, а также продемонстрирует, насколько он прост в использовании. Вы увидите, что гораздо больше труда потребовалось на лексический и синтаксический анализ, чем на непосредственное создание кода LLVM IR.
Обратите внимание: код из этой главы требует наличия LLVM 2.2 или более поздней версии. С версиями по LLVM 2.1 включительно этот код работать не будет. Также стоит отметить, что вам стоит использовать версию этого учебника, которая соответствует вашему релизу LLVM: вы можете использовать документацию, которая прилагается к официальным выпускам или посетить страницу с релизами на llvm.org.
Обратите внимание: код из этой главы требует наличия LLVM 2.2 или более поздней версии. С версиями по LLVM 2.1 включительно этот код работать не будет. Также стоит отметить, что вам стоит использовать версию этого учебника, которая соответствует вашему релизу LLVM: вы можете использовать документацию, которая прилагается к официальным выпускам или посетить страницу с релизами на llvm.org.
+24
Создание языка программирования с использованием LLVM. Часть 2: Реализация парсера и AST
20 min
36KTranslation
Добро пожаловать в Главу 2 учебника «Создание языка программирования с LLVM». В этой главе мы увидим, как использовать лексический анализатор, созданный в Главе 1, чтобы построить полный синтаксический анализатор для нашего языка Kaleidoscope. После того, как у нас будет готов парсер, мы будем строить Abstract Syntax Tree (AST) (Абстрактное синтаксическое дерево).
+37
Создание языка программирования с использованием LLVM. Часть 1: Введение и лексический анализ
7 min
59KTranslation
Добро пожаловать в учебник «Создание языка программирования с LLVM». Этот учебник знакомит вас с созданием простейшего языка программирования, и при этом показывает, каким оно может быть легким и интересным, а также даёт вам начальные знания, которые вы затем сможете применить на других языках программирования. Код в этом учебнике также может быть использован в качестве стартовой площадки для ваших творений с помощью LLVM.
Целью данного учебника является постепенное представление нашего языка, описание его пошагового создания. Это позволит нам охватить достаточно широкий спектр вопросов проектирования языков и использования LLVM, попутно показывая и объясняя код без огромного количества ненужных деталей.
Целью данного учебника является постепенное представление нашего языка, описание его пошагового создания. Это позволит нам охватить достаточно широкий спектр вопросов проектирования языков и использования LLVM, попутно показывая и объясняя код без огромного количества ненужных деталей.
+57
Information
- Rating
- 2,715-th
- Registered
- Activity