Поправьте, если я не прав и программы умеют делать это проще, но все такие 3д редакторы для меня имеют один недостаток. Вот например тумба из моего примера в статье. Есть внешний размер, его нельзя нарушать. Начинаем рисовать. Но мы не можем просто сделать панели по внешнему размеру. Верхняя и нижняя панель заходит над вертикальными, соответственно у вертикальных уже надо вычесть двойную толщину панели. Но это ерунда, предположим. Теперь ящики, нужно, чтобы было 5 штук во внутреннем пространстве. Какой будет размер каждого ящика? Я не знаю. И считать я не хочу. Потому, что зачем мне это? Но я не могу не считать, рисуя ящик, я должен знать размеры досок из которых он состоит, учитывая все зазоры между ящиками, толщиной направляющих и т.д. Я не хочу сказать, что это сложно. Это не сложно и это может сделать любой школьник, но это дурацкая рутинная работа, заниматься которой не доставляет никакого удовольствия. И вот я нарисовал 5 ящиков, а мне потом сказали, а давай, ящиков будет 4 или 6. И надо снова пересчитывать размеры, пусть уже и немного проще. Поэтому я ушел от этого к тому подходу, который описал в статье. Взял любой внешний размер и каркас готов. Отступил по краям на толщину направляющих и разделил пространство на 5 частей в 2 строчки. Создал ящики. И я не знаю их размеров, но мне и не надо. А если надо, то я могу их вывести размеры в консоль, или сделать несколько ящиков фиксированного нужного размера, а другие на оставшееся место. И все будет пропорционально меняться, если вдруг поменяется внешний размер или количество, так же как это происходит на веб-странице, когда меняешь размер окна.
я правильно понимаю, что всё, что "написал, для себя сам", это бесплатное и время с киловатт-часами ни копейки не стоят?
А для меня оно реально бесплатное. Я занимаюсь этим в рамках хобби, потому что мне это интересно и я получаю от этого удовольствие. Если бы это было не так - я бы точно не стал так заморачиваться) Иногда у меня спрашивают, творческая ли у меня профессия, и я отвечаю - да, я программист. Они думают ,что это шутка, а это не шутка) Как художник пишет картины потому, что кайфует от этого, так же и я пишу код потому, что мне нравится это делать.
Дополню еще немного о том, почему мне удобней делать все это кодом. Потому, что когда я начинаю проектировать, я не всегда знаю заранее, что должно быть на выходе, нужно посмотреть покрутить, делать много изменений (особенно когда делаешь не только для себя, но и с кем-то надо согласовать, особенно, если это женщина). И вот взять тумбу из примера статьи и внезапно, что если сделать не 5 ящиков, а 4, но побольше? В этих всех программах обычно, надо выделять ящик, удалять его, пропорционально изменять размер других. А у меня просто убрать одну "*," и все посчитается само: $boxes = split_vertical($box, "*,*,*,*", 16);
И все, вот их 4
А теперь что если нижние два ящика объединить в 1?
Вот так: $boxes = split_vertical($box, "50%,*,*", 16);
А что если внезапно нужна тумба побольше и пошире, с двумя большими ящиками и двумя маленькими (это уже комод теперь). Просто поменять 2 строчки: $box = box(800, 1200, 600);
...
$boxes = split_vertical($box, "400,400,*,*", 16);
Я меняю внешние размеры, а внутри все пересчитывается автоматически в соответствии с правилами, можно задать четко размер для любой части, можно в процентах от общего пространства, можно равномерно разделить оставшееся свободное место. Добавить/убрать ящик/полку - одна строчка в коде. Что-то меняешь серьезнее, закоментарил старый код, и всегда видишь, как было и можешь к этому вернуться.
Я 7.2 не рекомендовал, я написал ту, на которой делал сам, подразумевая, что это минимум на котором я проверял, будет ли все работать на более ранних, я не знаю. Но это не значит, что на версии 8.4 работать не будет, оно там прекрасно работает. Но вы правы, я подумал ,что это само собой разумеющееся, а на самом деле это следовало указать.
Осталась такая плохая (или наоборот хорошая) привычка использовать старые версии языка, поскольку он интерпретируемый, не факт, что там где понадобится, чтобы твой код работал будет стоять новая версия. В свое время несколько раз на этом обжигался, с тех пор я, как тот кот которому крышка унитаза упала по спине, и он продолжал ходить в туалет забираясь на унитаз, то исключительно лицом к крышке)
А логика объединенная с рендером - это принцип OpenSCAD, это иногда причиняет боль, а иногда удобнее, я взял что-то среднее оттуда, ориентируясь на собственное удобство. ООП, где все будет объектом и будет что-то типа куб->доскаСверху(), мне не зашло потому, что при этом исходный куб должен уменьшится, но так не всегда нужно, показалось что функциональное программирование тут будет проще, когда функция всегда возвращает измененный куб, а уж присваивать его той же переменной или другой - это я буду решать в зависимости от задачи.
Мне sketchup тоже не зашел в свое время, я его тоже пробовал. Наверное у меня такое мышление, что код мне понятнее)
У меня кромка всегда уменьшает деталь. Т.е. работает как padding в css, сохраняя внешний размер делали. А с направляющими на ящиках - я просто делаю между ними зазор в 16мм, чтобы на предыдущий ящик положить лист дсп и следующий на своем месте. А фасады уже потом, закрывают лишние зазоры.
Я никогда не заказываю отверстия для конфирмата при распиле, это бессмысленно удорожает заказ, их я делаю сам и сразу по месту, поэтому не вижу смысла вносить это в проект. С фурнитурой также.
Есть риски погореть, прибыльность производства начинает зависеть от твоих продаж. Если ты где-то облажался в маркетинге или еще где, и твой бренд не берут, ты не окупил то, что уже произвел (влез в долги) и твои склады забиты товаром который не продается, ты начинаешь терпеть убытки. А когда ты делаешь не для себя, тебе все равно, продадут они это или нет, тебе они за это уже заплатили. А их продажи - их проблемы, облажались - улетели с рынка, на их место пришли другие и у кого они закажут новую партию?) Именно)
Плюс, если ты облажался в производстве и выпустил некачественный продукт, покупатели запомнят твой бренд и никогда в жизни его больше не купят, как бы ты потом не рекламировался и не кричал "мы все исправили". Например, телефоны Сименс, глючная 60я серия, которая принесла компании дурную славу, и исправленная отличная 70я, которая уже была никому не нужна. А вот бизнес работает не так. Сможешь доказать заказчикам, что ты проделал работу над ошибками и такого больше не повториться, дашь им скидку на заказ, и они снова вернутся к тебе, во всяком случае большая их часть.
А что им мешает это делать? Тот же ALAC это позволяет. Неужели устройство для передачи потокового вещания не справится с кодировкой в ALAC в реальном времени? Если бы там был существенный выигрыш в размере передаваемых данных, было бы совсем другое дело.
OGG в свое время звучал лучше MP3 на тех же битрейтах, но популярнее не стал. APNG был качественнее GIF, но GIF до сих пор в ходу, а про APNG многие и не слышали. ИМХО, чтобы скинуть FLAC с трона нужно что-то посерьезнее чем, примерно такой же размер файла, но быстрее кодирование/декодирование. Если с видео-кодеком "тот же размер и качество, но время кодирования/декодирования в 3 раза быстрее" будет прорывом, то со звуком все не так однозначно. Никто не кодирует звукозаписи в таком объеме, чтобы время кодирования во FLAC было проблемой. По проигрыванию, FLAC и так могут проигрывать практически любые устройства. А если оно такое старое, что не тянет FLAC, навряд ли кто-то прикрутит к нему поддержку HALAC. Но, тем не менее, я буду только рад, если более эффективная технология со временем вытеснит менее эффективную.
Может быть подобных - да, но конкретно этот начинается началом и заканчивается концом) Он целостный и в нем есть, как завязка конфликта, так и его разрешение.
Помню, лет в 28 решил пересмотреть мультики из детства, начал с трансформеров, самых первых, что я смотрел, где они были люди и у них были кольца на руках. В детстве он мне казался очень крутым, но посмотрев его во взрослом возрасте, естественно сразу стало понятно, что это просто детский мультик, который не сильно интересно смотреть. В памяти всплыл еще Эховзвод, решил пересмотреть и его. И я был готов, что это окажется такой же детский мультик, который казался крутым только в школе... Но, черт возьми, оказалось, что и близко нет! Я посмотрел все серии запоем и оценил, что он совсем не детский, а это один из самых крутых фантастических сериалов, с продуманным сюжетом, персонажами, и это можно смотреть в любом возрасте.
Натыкался на паленую серию SSD Crucial mx500 в ДНС. Никогда с ними не было проблем, и взяв в очередной раз был удивлен, когда копирование файлов вдруг остановилось, после того как на новый диск было скопировано всего 2 с небольшим гига из 500. После перезагрузки SSD больше не видилась ни в ОС ни в биос. Отнес по гарантии признали случай гарантийным, спросили чего хочу, денег или другую такую же. Я выбрал другую такую же. Зря. Я же не знал, что она будет прям реально такая же) На всякий случай подозревая что-то неладное с моим компом, на этот раз подключил её другим шлейфом к другому порту другого компа и начал копировать те же данные. Остановилось ровно на том же месте и том же файле) Круг подозреваемых сузился: либо это был файл-убийца SSD, либо паленая партия. Случай снова признали гарантийным, на этот раз, я выбрал не приз, а деньги и взял Samsung 970 EVO. Все файлы скопировались нормально и SSD работает без проблем уже больше года. Но подозреваю, что всегда брать Samsung тоже панацеей не является. Параллельный импорт...
Спасибо) Реле все-таки для меня оказались проще, т.к. про полярность не очень хочется думать, при подключении пинов. Насчет ESP32-CAM, действительно, такое возможно и в этом случае может быть было бы разумно сделать управление по WiFi, тогда компьютер вообще не потребовался бы, а можно было бы прокинуть нужные порты на роутере и управлять этим удаленно... но сразу вылезает несколько НО: 1. Камера у меня использовалась, как резервный способ управления, даже неплохая вебка (Logitech C920) дает весьма посредственную картинку, когда снимает монитор. Не думаю, что OV2640 даст картинку лучше, возможно текст будет читаем не везде, плата захвата USB-HDMI дает картинку выше по качеству на несколько голов. 2. Практика показывает, что ESP32 не всегда работает по сети стабильно, у неё бывают зависания (реже чем ESP8266, но все-таки), и будет обидно если удаленное управление откажет в нужный момент. Имея физическое подключение её проще сбросить удаленно в случае какой-то проблемы.
Да, все верно. Чем управлять управляющим компом? Если он просто имеет доступ в интернет то AnyDesk, UltraViewer и их аналоги. Есть есть свой выделенный сервер и хочется безопасности, без чужих промежуточных серверов, то поднять сервер MeshCentral или Aspia. Если у управляемого компьютера есть свой белый IP, то VNC, RDP и т.д.
В текущем варианте - да. Задача была подключать "чужие" компьютеры, или другое устройства к своему, для удаленной настройки, не подключая их к сети и с возможностью переустановить операционку.
В коде заданы пины 17 и 18, можно поменять на свои. #define RESET_BUTTON_PIN 17 #define POWER_BUTTON_PIN 18 Да, код переделан из примера клавиатуры для ESP32
Схему не рисовал, могу так описать, как у меня сделано, но так не надо)
IRF3205 Ножки слева направо, когда транзистор повернут "лицом" с надписью: 1 - УПРАВЛЕНИЕ 2 - ВЫХОД 3 - ВХОД Между ножками 1 и 3 резистор на 10кОм
Поправьте, если я не прав и программы умеют делать это проще, но все такие 3д редакторы для меня имеют один недостаток. Вот например тумба из моего примера в статье. Есть внешний размер, его нельзя нарушать. Начинаем рисовать. Но мы не можем просто сделать панели по внешнему размеру. Верхняя и нижняя панель заходит над вертикальными, соответственно у вертикальных уже надо вычесть двойную толщину панели. Но это ерунда, предположим. Теперь ящики, нужно, чтобы было 5 штук во внутреннем пространстве. Какой будет размер каждого ящика? Я не знаю. И считать я не хочу. Потому, что зачем мне это? Но я не могу не считать, рисуя ящик, я должен знать размеры досок из которых он состоит, учитывая все зазоры между ящиками, толщиной направляющих и т.д. Я не хочу сказать, что это сложно. Это не сложно и это может сделать любой школьник, но это дурацкая рутинная работа, заниматься которой не доставляет никакого удовольствия. И вот я нарисовал 5 ящиков, а мне потом сказали, а давай, ящиков будет 4 или 6. И надо снова пересчитывать размеры, пусть уже и немного проще. Поэтому я ушел от этого к тому подходу, который описал в статье. Взял любой внешний размер и каркас готов. Отступил по краям на толщину направляющих и разделил пространство на 5 частей в 2 строчки. Создал ящики. И я не знаю их размеров, но мне и не надо. А если надо, то я могу их вывести размеры в консоль, или сделать несколько ящиков фиксированного нужного размера, а другие на оставшееся место. И все будет пропорционально меняться, если вдруг поменяется внешний размер или количество, так же как это происходит на веб-странице, когда меняешь размер окна.
я правильно понимаю, что всё, что "написал, для себя сам", это бесплатное и время с киловатт-часами ни копейки не стоят?
А для меня оно реально бесплатное. Я занимаюсь этим в рамках хобби, потому что мне это интересно и я получаю от этого удовольствие. Если бы это было не так - я бы точно не стал так заморачиваться) Иногда у меня спрашивают, творческая ли у меня профессия, и я отвечаю - да, я программист. Они думают ,что это шутка, а это не шутка) Как художник пишет картины потому, что кайфует от этого, так же и я пишу код потому, что мне нравится это делать.
Дополню еще немного о том, почему мне удобней делать все это кодом. Потому, что когда я начинаю проектировать, я не всегда знаю заранее, что должно быть на выходе, нужно посмотреть покрутить, делать много изменений (особенно когда делаешь не только для себя, но и с кем-то надо согласовать, особенно, если это женщина). И вот взять тумбу из примера статьи и внезапно, что если сделать не 5 ящиков, а 4, но побольше? В этих всех программах обычно, надо выделять ящик, удалять его, пропорционально изменять размер других. А у меня просто убрать одну "*," и все посчитается само:
$boxes = split_vertical($box, "*,*,*,*", 16);
А теперь что если нижние два ящика объединить в 1?
Вот так:
$boxes = split_vertical($box, "50%,*,*", 16);
А что если внезапно нужна тумба побольше и пошире, с двумя большими ящиками и двумя маленькими (это уже комод теперь). Просто поменять 2 строчки:
$box = box(800, 1200, 600);
...
$boxes = split_vertical($box, "400,400,*,*", 16);
Я меняю внешние размеры, а внутри все пересчитывается автоматически в соответствии с правилами, можно задать четко размер для любой части, можно в процентах от общего пространства, можно равномерно разделить оставшееся свободное место. Добавить/убрать ящик/полку - одна строчка в коде. Что-то меняешь серьезнее, закоментарил старый код, и всегда видишь, как было и можешь к этому вернуться.
Я 7.2 не рекомендовал, я написал ту, на которой делал сам, подразумевая, что это минимум на котором я проверял, будет ли все работать на более ранних, я не знаю. Но это не значит, что на версии 8.4 работать не будет, оно там прекрасно работает. Но вы правы, я подумал ,что это само собой разумеющееся, а на самом деле это следовало указать.
Осталась такая плохая (или наоборот хорошая) привычка использовать старые версии языка, поскольку он интерпретируемый, не факт, что там где понадобится, чтобы твой код работал будет стоять новая версия. В свое время несколько раз на этом обжигался, с тех пор я, как тот кот которому крышка унитаза упала по спине, и он продолжал ходить в туалет забираясь на унитаз, то исключительно лицом к крышке)
А логика объединенная с рендером - это принцип OpenSCAD, это иногда причиняет боль, а иногда удобнее, я взял что-то среднее оттуда, ориентируясь на собственное удобство. ООП, где все будет объектом и будет что-то типа куб->доскаСверху(), мне не зашло потому, что при этом исходный куб должен уменьшится, но так не всегда нужно, показалось что функциональное программирование тут будет проще, когда функция всегда возвращает измененный куб, а уж присваивать его той же переменной или другой - это я буду решать в зависимости от задачи.
Не сталкивался с такой проблемой. Обычно, пока задней части нет, приложил снаружи дверцу, как должна быть, зафиксировал, изнутри прикрутил петлю.
Мне sketchup тоже не зашел в свое время, я его тоже пробовал. Наверное у меня такое мышление, что код мне понятнее)
У меня кромка всегда уменьшает деталь. Т.е. работает как padding в css, сохраняя внешний размер делали. А с направляющими на ящиках - я просто делаю между ними зазор в 16мм, чтобы на предыдущий ящик положить лист дсп и следующий на своем месте. А фасады уже потом, закрывают лишние зазоры.
Несколько раз пытался и удалял его) Не мое)
Я никогда не заказываю отверстия для конфирмата при распиле, это бессмысленно удорожает заказ, их я делаю сам и сразу по месту, поэтому не вижу смысла вносить это в проект. С фурнитурой также.
Наверное, проблема во мне) я эту программу пробовал много лет назад, тогда не зашло
Есть риски погореть, прибыльность производства начинает зависеть от твоих продаж. Если ты где-то облажался в маркетинге или еще где, и твой бренд не берут, ты не окупил то, что уже произвел (влез в долги) и твои склады забиты товаром который не продается, ты начинаешь терпеть убытки. А когда ты делаешь не для себя, тебе все равно, продадут они это или нет, тебе они за это уже заплатили. А их продажи - их проблемы, облажались - улетели с рынка, на их место пришли другие и у кого они закажут новую партию?) Именно)
Плюс, если ты облажался в производстве и выпустил некачественный продукт, покупатели запомнят твой бренд и никогда в жизни его больше не купят, как бы ты потом не рекламировался и не кричал "мы все исправили". Например, телефоны Сименс, глючная 60я серия, которая принесла компании дурную славу, и исправленная отличная 70я, которая уже была никому не нужна. А вот бизнес работает не так. Сможешь доказать заказчикам, что ты проделал работу над ошибками и такого больше не повториться, дашь им скидку на заказ, и они снова вернутся к тебе, во всяком случае большая их часть.
А что им мешает это делать? Тот же ALAC это позволяет. Неужели устройство для передачи потокового вещания не справится с кодировкой в ALAC в реальном времени? Если бы там был существенный выигрыш в размере передаваемых данных, было бы совсем другое дело.
OGG в свое время звучал лучше MP3 на тех же битрейтах, но популярнее не стал. APNG был качественнее GIF, но GIF до сих пор в ходу, а про APNG многие и не слышали. ИМХО, чтобы скинуть FLAC с трона нужно что-то посерьезнее чем, примерно такой же размер файла, но быстрее кодирование/декодирование. Если с видео-кодеком "тот же размер и качество, но время кодирования/декодирования в 3 раза быстрее" будет прорывом, то со звуком все не так однозначно. Никто не кодирует звукозаписи в таком объеме, чтобы время кодирования во FLAC было проблемой. По проигрыванию, FLAC и так могут проигрывать практически любые устройства. А если оно такое старое, что не тянет FLAC, навряд ли кто-то прикрутит к нему поддержку HALAC. Но, тем не менее, я буду только рад, если более эффективная технология со временем вытеснит менее эффективную.
Может быть подобных - да, но конкретно этот начинается началом и заканчивается концом) Он целостный и в нем есть, как завязка конфликта, так и его разрешение.
Помню, лет в 28 решил пересмотреть мультики из детства, начал с трансформеров, самых первых, что я смотрел, где они были люди и у них были кольца на руках. В детстве он мне казался очень крутым, но посмотрев его во взрослом возрасте, естественно сразу стало понятно, что это просто детский мультик, который не сильно интересно смотреть. В памяти всплыл еще Эховзвод, решил пересмотреть и его. И я был готов, что это окажется такой же детский мультик, который казался крутым только в школе... Но, черт возьми, оказалось, что и близко нет! Я посмотрел все серии запоем и оценил, что он совсем не детский, а это один из самых крутых фантастических сериалов, с продуманным сюжетом, персонажами, и это можно смотреть в любом возрасте.
Натыкался на паленую серию SSD Crucial mx500 в ДНС. Никогда с ними не было проблем, и взяв в очередной раз был удивлен, когда копирование файлов вдруг остановилось, после того как на новый диск было скопировано всего 2 с небольшим гига из 500. После перезагрузки SSD больше не видилась ни в ОС ни в биос. Отнес по гарантии признали случай гарантийным, спросили чего хочу, денег или другую такую же. Я выбрал другую такую же. Зря. Я же не знал, что она будет прям реально такая же) На всякий случай подозревая что-то неладное с моим компом, на этот раз подключил её другим шлейфом к другому порту другого компа и начал копировать те же данные. Остановилось ровно на том же месте и том же файле) Круг подозреваемых сузился: либо это был файл-убийца SSD, либо паленая партия. Случай снова признали гарантийным, на этот раз, я выбрал не приз, а деньги и взял Samsung 970 EVO. Все файлы скопировались нормально и SSD работает без проблем уже больше года. Но подозреваю, что всегда брать Samsung тоже панацеей не является. Параллельный импорт...
Если там есть вирусы, то это может быть опасно, а вот чтобы вирус через HDMI-usb прошел, такого я еще не слышал)
Спасибо)
Реле все-таки для меня оказались проще, т.к. про полярность не очень хочется думать, при подключении пинов. Насчет ESP32-CAM, действительно, такое возможно и в этом случае может быть было бы разумно сделать управление по WiFi, тогда компьютер вообще не потребовался бы, а можно было бы прокинуть нужные порты на роутере и управлять этим удаленно... но сразу вылезает несколько НО:
1. Камера у меня использовалась, как резервный способ управления, даже неплохая вебка (Logitech C920) дает весьма посредственную картинку, когда снимает монитор. Не думаю, что OV2640 даст картинку лучше, возможно текст будет читаем не везде, плата захвата USB-HDMI дает картинку выше по качеству на несколько голов.
2. Практика показывает, что ESP32 не всегда работает по сети стабильно, у неё бывают зависания (реже чем ESP8266, но все-таки), и будет обидно если удаленное управление откажет в нужный момент. Имея физическое подключение её проще сбросить удаленно в случае какой-то проблемы.
Да, все верно. Чем управлять управляющим компом? Если он просто имеет доступ в интернет то AnyDesk, UltraViewer и их аналоги. Есть есть свой выделенный сервер и хочется безопасности, без чужих промежуточных серверов, то поднять сервер MeshCentral или Aspia. Если у управляемого компьютера есть свой белый IP, то VNC, RDP и т.д.
В текущем варианте - да. Задача была подключать "чужие" компьютеры, или другое устройства к своему, для удаленной настройки, не подключая их к сети и с возможностью переустановить операционку.
В коде заданы пины 17 и 18, можно поменять на свои.
#define RESET_BUTTON_PIN 17
#define POWER_BUTTON_PIN 18
Да, код переделан из примера клавиатуры для ESP32
Схему не рисовал, могу так описать, как у меня сделано, но так не надо)
IRF3205 Ножки слева направо, когда транзистор повернут "лицом" с надписью:
1 - УПРАВЛЕНИЕ
2 - ВЫХОД
3 - ВХОД
Между ножками 1 и 3 резистор на 10кОм
РЕЛЕ комутирует постоянный ток, управляющее напряжение - 3В
Связи (для 17го контакта ESP32):
ESP32(GND) - IRF3205(3)
ESP32(17) - IRF3205(1)
ESP32(3V3) - РЕЛЕ(УПРАВЛЯЮЩИЙ+)
IRF3205(2) - РЕЛЕ(УПРАВЛЯЮЩИЙ-)
Есть готовые модули реле, которые подключаются намного проще, например: https://voltiq.ru/wp-content/uploads/wiring_a_relay_module.jpg