потерял сеть. при разборке выяснилось что оторвался от платы разъем антенны. запаять феном наверное можно но перед этим стоит осмотреть плату под микроскопом.
потерял сеть. при разборке выяснилось что оторвался от платы разъем антенны. запаять феном наверное можно но перед этим стоит осмотреть плату под микроскопом.
китайский ширпотреб:
датчики врут.
собственной памяти нет.
приложение слишком умное и заносчивое.
В общем много поводов разобраться с протоколом ble и попытаться разобрать протокол обмена. возможно даже с применением стороннего железа и техники man in middle.
upd интересное руководство по реверс инженерингу ble
codeberg.org/Freeyourgadget/Gadgetbridge/wiki/B...
2. Принтер kp3s получил еще один повод для обновления прошивки: говорят пофиксили баг с linear advance.
3. Наткнулся на упоминание приложения VMOS реализующую андроид внутри андроида. www.youtube.com/watch?v=vee5MZx52do
4. автостарт термукс и демонов в termux. программа termux:boot .
5. про старые модемы huawei.
включение и выключение cdrom в модеме net3g.ru/articles/148874
калькулятор кода разблокировки модема calc.gmss.ru/
6. информация про направленную lte антенну
3g-aerial.biz/wi-fi-3g-4g-pushka-analiz-i-rasch...
sdelaysam-svoimirukami.ru/4835-3g-4g-antenna-s-...
(~2000- плата управления с экраном, ~2000 - рельсы,~2000 - моторы,~2000 - блок питания ,~1000 - нагрев стола.сюда добавляем вентиляторы, экструдер, ролики , ремень и получается, что даже как запчасти оно окупается.)
Купил. Собрал, посмотрел на дельту, посмотрел на kp3s, грустно вздохнул, осознавая что в дельта принтере я все сделал не так. Пока не ясно как сделать правильно.
Первая печать - пробка. Как выяснилось вентилятор обдува радиатора почти не дует. Купил понижайку, подключил 3010 вентилятор на 12 вольт из своих запасов. все печатает.
upd:
Поймал очередную пробку. Разобрал экструдер, прочистил сопло. В порядке эксперимента нагрел зажигалкой кубик нагревателя. Принтер не возмутился бесконтрольному увеличению температуры. Ожидаемо но неприятно.
Еще один повод "пересобрать марлин"/"добавить одноплатный компьютер и принтер клиппером".
Увы, это предельно точное описание моего сегодняшнего открытия.
Штатная выгрузка заказов в внешние системы происходит посредством xml файла. Описывать структуру дело неблагодарное и бессмысленное. Все давно описано до нас.
Внезапно выяснилось что эта самка собаки произвольным образом теряет в файле ид товаров.
да. вот прямо
И происходит это бессистемно.
У меня нет слов. Если это работает и сейчас, то это будет гениально.
Да, скорость не превышает 9600, да выбор языков разработки и сред резко сужается, да, существуют ограничения на автопроигрывание и прослушивание, но при этом появляется хоть какая то свобода использования старых китайских смартфонов в робототехнике.
подробности: http://forum.espruino.com/conversations/257732/
upd
Итак...
1. фича входит в espruino ide. Для своих целей можно попытаться выдернуть файл
https://www.espruino.com/ide/EspruinoTools/core/serial_web_audio.js и разобраться как оно работает.
2. Есть нескромное подозрение что при некоторой удаче эта эмуляция uart будет корректно работать с программной реализацией uart под названием picoUart
Как оно выглядит
одна таблица имеет формат имени b_iblock_$iblock_id_index_val и является справочником текстовых значений
поля
id,
value.
вторая таблица имеет формат имени b_iblock_$iblock_id_index - содержит поля
ELEMENT_ID - собственно ид элемента ифоблока
SECTION_ID - все секции родители для element_id (да характеристики повторяются столько раз сколько секций родиелей есть у товара)
FACET_ID - рассчитывается по правилу "(вписывается цена ==Да)? (ид_типа_цены*2+1) : (ид_свойства*2)"
VALUE - если тип свойства не число то ид из справочника
VALUE_NUM - значение числовых свойств включая перечисляемые и ссылки на ид элемента
INCLUDE_SUBSECTIONS
Оно круто ускоряет поиск по характеристикам/вывод виджета catalog.section.
Но вот беда, алгоритм генерации фасетного индекса творит лютую дичь в результате которой часть товара просто исчезает из результатов поиска.
ниже будут записываться способы поиска ошибок фасетного индекса.
$iblock_id - ид инфоблока
$section_id - ид товарного направления
$property_id - ид свойства по которому идет поиск в товарном направлении.
1. Найти товары которых нет в фасетном индексе вообще.
2. Найти товары у которых есть свойство по которому выполняется поиск в товарном направлении и нет в фасетном индексе
3. Найти товары у которых нет свойства по которому выполняется поиск в товарном направлении и есть в фасетном индексе
С сортировкой разбиением на страницы и прочими мелкими радостями.
Можно отдать все 6000 id через переменную фильтра, и catalog.section сделает все сам. Но после этого не стоит удивляться что сервер 30 секунд обрабатывает результат.
Можно отдать в переменную фильтра свего N<99 id элементов. Тогда скрипт должен взять на себя сортировку и вывод количества страниц
читать дальше
Итак правильный пароль должен (а иногда даже обязан) иметь длину от 8 знаков и содержать знаки из следующих групп
1. Строчные буквы из диапазона [a-z] (26 знаков)
2. Прописные буквы из диапазона [A-Z](26 знаков)
3. Цифры [0-9] (10 знаков)
4. Что-то из 22 спецзнаков (количество используемых спецзнаков подсмотрено на яндексе)
Казалось бы это должно дать (2*26+10+22)^8 вариантов перебора... но на практике получается меньше. Гораздо меньше.
Требование что должны быть ВСЕ группы знаков прводит к тому что число вариантов уменьшается на порядки.
читать дальше
Оси X Y не перпендикулярны. Угол примерно 88.5-89.2 градуса.
Недостаточно жесткий. (ось z можно скручивать пальцами).
Медленный. Редукторные 24byj-28 не позволяют принтеру выжать сколь нибудь большие скорость и ускорение.
Шумный. 25х7 вентиляторы, и песня распаяных драйверов 4988 создают много шума.
С старым Марлином (без поддержки linear advance).
С достаточно большим ретрактом для директа (больше 2 мм).
С другой стороны принтер может в 40 мм/сек. (И это значение даже похоже на истину.)
Он компактный.
И он работает.
при том ускорении которое есть, сил трения недостаточно чтобы малая жесткость принтера вносила искажения в печатаемую модель.
И что самое грустное его бессмысленно переделывать. Максимум : поменять прошивку (на марлин с linear advance и настроенной компенсацией углов) и поставить на обдув вентиляторы 30 мм.
Клиппер ставить на эту игрушку увы не имеет смысла.
По задумке, старый смартфон без otg и с поломанным корпусом должон получить новый толстый корпус в котором скроется мультиметр, транзистор-тестер (и возможно показометр-осциллограф ), а так же батарея которая будет все это питать .
основа мультиметра - спец модуль ina226 (который иногда обзывают powermonitor. измеряет и напряжение и ток на клеммах, потому использование его в роли ампер+вольт+омметра прямо таки напрашивается. )
транзистор тестер он и есть транзистор тестер.
Протокол связи с смартфоном : блютус. при отдельном питании это даст гальваническую развязку со смартфоном.
Из грустного: если не смогу отбиться от этой идеи, придется весьма глубоко закопаться в программирование под мобильники.
А еще придется понять и полностью переписать транзистор тестер, чтобы он не требовал жать на кнопку, проверял только выбранный параметр, отдавал данные в понятном мобильному приложению виде, мог соединяться с ina226 и т п.
битрикс сразу же перестал жрать дисковое место гигабайтами.
Время отклика уменьшилось до 1 сек максимум. (в среднем 0.5-0.7 сек)
И блин, у меня один (философский | риторический) вопрос: по какой причине разработчики битрикс не смогли написать продукт так же без memcached?
грамотно написанные sql запросы получают необходимые данные за те же 0.5-0.7 сек. на все необходимые запросы
Битрикс и Аспро радуют дичью.
В процессе переписывания алгоритма поиска ( выбрать весь мусор содержащий слова, а потом постобработкой отобрать удовлетворяющее условиям) задумался а как быть с xss в "умном поиске" .
Для примера ввел название товара "<sсript>alert(xss)</sсript>" , сохранил. При открытии детальной страницы увидел алерт. Сильно удивился. Написал в аспро.
upd
При просмотре исходной страницы удивился еще больше. 14 из 16 упоминаний слова sсript корректно обработаны. дичь только в js имеющем буквы seo.
Неожиданно спустя 12 лет откопал на старом винте бекап телефонной книги того устройства.
Получается что из
3д принтер (четырехосевой чпу станок) +компьютер +две веб камеры+ вакуумный пинцет можно попытаться сотворить раскладчик компонентов.
нужна лишь программа openpnp, железо и время.
ман по настройке программы:
https://www.youtube.com/watch?v=1v9Qjctx5Vo
вики по проекту openpnp утверждает что дорогие платы для управления принтером не обязательны: Теоретически достаточно ардуино, cnc шилда и модифицированной прошивки grbl.
остается сложный философский вопрос вида: как и рыбку сьесть и на крюк не попасть.
как организовать электронику так, чтобы станок работал и как принтер, и как раскладчик компонентов, и как лазерный гравер.
upd
сел считать а сколько должен стоить вакуумный пинцет на альтернативных компонентах и получил утверждение, что это почти не имеет смысла.
1. насадки остаются те же. ибо дешевой замены тупо нет.
2. клапан и компрессор менять смысла нет.
3. мотор с полым валом теоретически можно поменять на связку:
мотор 28byj-48+шкивы+ремень gt2+подшипники+алюминиевая трубка. Но увы суммарная стоимость будет примерно 500 руб. И много гемороя при проектировании.
4. Крепление на вал - скорее всего заменить нечем. Разве что точить на токарном станке. но стоимость такой работы под вопросом.
было сказано что надо поставить подписки на новости и акции всем пользователям.
Начинаю искать примеры, проверять как это работает и понимаю что я ничего не понимаю.
пример из официального мануала не работает от слова совсем. молча.
другие примеры работают абы как. создается адрес подписки, но нет рубрик.
3 часа изображал из себя барана перед новыми воротами, пока в голову не постучалась банальная мысль: посмотреть что творится в бд. Через 5 минут стало понятно что узел подписок был прилеплен соплями с экскрементами, и почти никак не пересекается с остальными таблицами.
И блин весь танец с бубном можно было заменить на три sql запроса
insert into b_subscription(USER_ID,ACTIVE,EMAIL,FORMAT,CONFIRM_CODE,CONFIRMED) values($user_id,'Y','$user_email','html',md5("$user_id $user_email "),'Y'))
insert b_subscription_rubric values ($subscription_id ,1),($subscription_id ,2)
где $subscription_id это результат выполнения select last_insert_id()
Таким образом все выглядит примерно как на хромокастах: жмешь по видео, выбираешь dlna плеер/miracast/прочий hdmi свисток и оно воспроизводится на телевизоре к которому подключен плеер.
Телефон при этом в воспроизведении видео не участвует.
upd:
Единственное что не совсем понятно - почему при одновременно включенных wifi и 4g dlna/airdrop плеер не обнаруживается.
Стал "счастливым обладателем" noname подделки samsung a71. Не спрашивайте за сколько.
Внутри неведома плата имеющая много надписей c529_sc7731g.
Встроенной памяти нет.
Оперативной памяти 1 гб.
Процессор одноядерный, от spreadtrum .
Прошивок нет.
upd:
Treble на первый взгляд похоже даже есть. судя по тому что раздел вендор не существует/ не смонтирован можно предполагать что treble это обманка.
Рекавери не выполняет полезную работу Рекавери обычный. просто включена защита от дурака.
В рекавери есть адб но он требует авторизации.
В выключенном состоянии никакого adb нет
Похоже в телефоне не sc7731g. По крайней мере программа research download не смогла определить кто оно такое (по крайней мере с FDL от прошивки под sc7731g ).
Аида 64 скромно пытается говорить о sc8830.
Удалось выяснить что андроид на самом деле 5.1. Вероятно качественно задекорированный.
Miracle thunder /miracle box не смогли определить что это за SOC и что с ним можно сделать .Единственное чем помог комбайн - однозначно сказал, что это android 5.1
Рут получен. Вероятно с помощью kingo root. Но криво. Вероятно стоит какой то служебный вариант su. он дает доступ по первому требованию. и никакого менеджера доступа нету.
План на будущее:
посмотреть на https://projectsakura.xyz/
Поставил на свой rosy. Тот же lineage только в профиль. Но приключения во время установки не позволят откатиться назад. Ибо следуя кривой инструкции я потер все содержимое телефона. А последний бекап был на телефоне.
Получить root на подделке (ок)
побаловаться с установкой gsi прошивок. Ну а вдруг получится? - Увы без шансов. Требле на подделке нет.
научиться делать бекап spreadtrum soc.
3. портировать и поставить twrp
оказывается есть программа "SPD Auto TWRP recovery porter" берет стоковый рекавери и выдирает из него ядро, dbt, стартовые скрипты, и подставляет все это в подходящий вариант twrp (из веток андроид 4,5,6 )
Теперь остается понять как я это все сделал. И как это правильно делать.
Если обьявил копирование страницы в буфер через конструкцию setViewTarget .... endViewTarget то будь любезен обязательно показать этот буфер на странице.
Этап первый: создаем компонент
1. перейти в папку где лежит битрикс
cd www/
2. создать папку нового виджета
mkdir -p local/components/domov0y/my.super.component
3. перейти в папку компонента
cd local/components/domov0y/my.super.component
4. создать файл component.php содержащий следующий код
<?php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
//todo: тут будет логика компонента
//здесь говорится о том что надо подключить файл шаблона
$this->IncludeComponentTemplate();
?>
5. создать каталоги templates/.default и templates/.default/lang/ru/
mkdir -p templates/.default/lang/ru/
6. создать файл шаблона компонента templates/.default/template.php содержащий текст
<?
IncludeTemplateLangFile(__FILE__)
//Так выводятся тексты лежащие в языковом файле
echo getMessage('MY_MESSAGE');?>
//todo: тут код шаблона
?>
7. создать файл templates/.default/lang/ru/template.php
<?
$MESS["MY_MESSAGE "] = "Это произвольный текст который будет выведен на экран после того как языковой файл будет подключен через функцию IncludeTemplateLangFile(__FILE__) и вызван код echo getMessage('MY_MESSAGE'); ";
Собственно на этом создание простого и бессмысленного компонента завершено.
И его даже можно запустить написав на странице код
<? $APPLICATION->IncludeComponent(
"domov0y:my.super.component ",
".default",
Array(),
false
);
Этап второй: учим компонент работать через ajax
условно простое, но не универсальное решение: создать файл ajax.php который будет содержать следующий код
<?
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
define("ajax",1);
include('component.php');
include('templates/.default/template.php');
?>
при этом надо исправить component.php
строка
$this->IncludeComponentTemplate();
меняется на
if (!defined("ajax" ))$this->IncludeComponentTemplate();
Ну а дальше остается писать javasсript позволяющий работать с файлом
local/components/domov0y/my.super.component/ajax.php
c помощью ajax запросов.
Никакой магии в этом нет. Используйте стандартный jquery и не вспоминайте о том что в фреймворке bitrix есть свой вариант функций реализующих ajax
if (CModule::IncludeModule('iblock')){CIBlock::clearIblockTagCache($iblock_id);}
Печально. Нельзя просто так взять и с помощью update изменить все потроха инфоблока.Точнее можно, но это мало что даст в условиях когда существуют таблицы фасетных индексов. Когда они существуют то большая часть данных для пущего ускорения работы битрикс запросов берется как раз из фасетных индексов.
Пока найдено интересное но не совсем понятное:
if (CModule::IncludeModule('iblock'))
{
$indexer=\Bitrix\Iblock\PropertyIndex\Manager::createIndexer($iblock_id);
$result=$indexer->deleteElement($element_id);
$result=$indexer->indexElement($element_id );
}
Если оно реально работает, то можно будет попытаться сотворить нехорошее вида
1. записать список обновленных элементов в массив
2. со словами " они украли нашу прелесть" вызвать метод удалить и обновить индекс элемента инфоблока
А еще я понял каким матерным заклинанием надо было отбиваться от битрикса.
показать шаманство класса: заполнить базу и попытаться сделать бекап битрикса и восстановление на другом хосте. 30 раз. (каждый день по одному разу) и составить график когда операция завершиласьошибкой.