09:48

домовой
запустил memcached   на  битрикс  сервере.
битрикс сразу же перестал жрать дисковое место гигабайтами.
Время отклика уменьшилось до 1 сек  максимум. (в среднем  0.5-0.7 сек)

И блин,  у меня один (философский | риторический) вопрос: по какой причине разработчики битрикс не смогли написать продукт так же без memcached?
грамотно  написанные  sql запросы  получают необходимые данные  за  те же  0.5-0.7  сек. на все необходимые запросы

@темы: bitrix

09:40

домовой
Мы в восхищении. Королева в восхищении.  
Битрикс и Аспро радуют дичью.

В процессе  переписывания  алгоритма поиска ( выбрать весь мусор содержащий слова, а потом постобработкой отобрать удовлетворяющее  условиям) задумался а как быть с xss  в "умном поиске" .
Для примера ввел название  товара  "<sсript>alert(xss)</sсript>" , сохранил. При открытии  детальной страницы  увидел алерт. Сильно удивился. Написал в аспро.
upd
При просмотре исходной страницы удивился еще больше.  14 из 16 упоминаний слова  sсript  корректно  обработаны. дичь только в js  имеющем буквы seo. И есть  подозрение что это скорее  ошибка  bitrix нежели aspro.

@темы: bitrix

домовой
Я считал, что телефонная книга утеряна и все содержимое флешки телефона тогда перемешало в нечитаемый мусор. И бекапа не осталось.
Неожиданно спустя 12 лет откопал на старом винте бекап телефонной книги того устройства.

10:32

домовой
youtube подсунул очередное интересное:  автоматический раскладчик  smd компонентов из палок и желудей. И черт подери это интересно.
Получается что из
3д принтер (четырехосевой чпу станок) +компьютер +две веб камеры+ вакуумный пинцет можно попытаться сотворить раскладчик компонентов.
нужна лишь программа openpnp, железо и время.

ман по настройке программы:
https://www.youtube.com/watch?v=1v9Qjctx5Vo 

вики по  проекту openpnp утверждает что дорогие платы для управления принтером не  обязательны:  Теоретически достаточно ардуино, cnc шилда и модифицированной прошивки  grbl.

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

upd
сел считать а сколько должен стоить вакуумный  пинцет на  альтернативных компонентах  и получил утверждение, что это почти не имеет смысла.
1. насадки остаются те же. ибо дешевой замены тупо нет.  
2. клапан и компрессор  менять  смысла нет. 
3.  мотор  с полым валом теоретически можно  поменять на связку:
мотор 28byj-48+шкивы+ремень gt2+подшипники+алюминиевая трубка.  Но увы суммарная стоимость  будет примерно  500 руб. И много гемороя при проектировании. 
4. Крепление на вал -  скорее  всего заменить нечем.  Разве что  точить на токарном станке. но стоимость такой работы под вопросом.

@темы: 3d

15:14

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

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()

@темы: bitrix

06:05

домовой
Плюс еще одно приложение для андроид из класса must have. Называется web video caster. Представляет из себя  браузер, который умеет выдирать видео с сайтов и отсылать на dlna плееры.
Таким образом все выглядит примерно как на хромокастах: жмешь по видео, выбираешь  dlna плеер/miracast/прочий hdmi свисток  и оно воспроизводится на телевизоре к которому подключен плеер.
Телефон  при этом в воспроизведении видео не  участвует. 

upd:
Единственное что не  совсем понятно  - почему при одновременно  включенных wifi и 4g   dlna/airdrop плеер не обнаруживается.

11:24

домовой

Стал  "счастливым обладателем" 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 )

Теперь остается понять как я это все сделал. И как  это правильно  делать.



15:07

домовой
Мды. Или я чего то не понимаю в шаблоне аспро,  или  надо придерживаться правила 
Если обьявил копирование страницы в буфер через конструкцию setViewTarget .... endViewTarget то будь любезен обязательно показать этот буфер на странице. 

@темы: bitrix

домовой
создание простого компонента  умеющего в  ajax

Этап первый: создаем компонент

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

@темы: bitrix

15:47

домовой
на третий год чукча увидел как наименее варврскими методами сказать обнови кеш  по измененным элементам инфоблока.





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 раз.  (каждый день  по  одному разу) и составить график когда  операция завершиласьошибкой.



@темы: bitrix

10:24

домовой
Прочитал комментарии к статье про то что  wd похорронила данные  на приличном проценте  nas  подключенных к тырнету.   Увидел совет предлагающий купить ленточную библиотеку с роботом на  касетах lto-4 или lto-6 и  не колебать мозг. 
Не подозревал что


  • ленточные  накопители живы до сих пор. 

  • емкость  одного картриджа lto-6  составляет   2.5 тб

  • скорость доступа к данным на скорости 130 МБ/сек

  • интерфейсы fibreChannel  ,  sata , sas.


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

А вот работа ленточной библиотеки весьма завораживает тараканов  в моей голове:) даже появляются абсурные идеи: а не повторить  ли  благородному дону сию конструкцию для касетниц с деталями. Надеюсь меня все  таки отпустит и я не  начну судорожно рисовать  детали для печати  такой игрушки))

11:18

домовой
Пришел usb осциллограф  osc520. Он же loto osc482. В виртуалке  под xp все  запустилось  практически без косяков. Ну подумаешь программа вылетает после того как загрузит прошивку в устройство. при повторном запуске прошивка не загружается и все работает  корректно.

vid  и pid устройства соответствуют hantek 6022.

Точно работает с  фирменной урезанной версией hscope содержащей только прошивки  loto osc*. искать где-то здесь 

Теоретически должен работать с hscope (еще не проверено)  не завелось. пару раз грузилась прошивка в устройство, но hscope так и не распознал железо.


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

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

09:59

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

<?
global $USER; 
if (defined("admin_debug") && $USER->IsAdmin()) 
{
 echo "<pre>"; 
 $tmp=get_included_files(); 
 foreach($tmp as $val)
 if ( strlen( $_REQUEST['search_file'] )>0 )
 {
  if ( !strpos( $val , $_REQUEST['search_file'] )===false ) echo "$val\n" ;
 }
else
{
 echo "$val\n" ; 
}
 echo "<pre>"; 
}
?>


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

global $USER;
if (defined("admin_debug") && $USER->IsAdmin())
foreach ($arParams as $val)
{
  if (!is_array($val))
   {   if ( isset( $GLOBALS[$val] ) )
    {
      echo  "<PRE>";
      echo  "$val\n";
      print_r($GLOBALS[$val] );
      echo  "</PRE>";
    }
  }
}
Подсунул  это  выражение  во все шаблоны  catalog.section. Узнал много нового про хентай  БДСМ  и  быдлокод призванный  тормозить  весьма шустрые  процессоры.

@темы: bitrix

10:21

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

Текущего опыта вполне хватает чтобы собрать дельта принтер достаточно дешево.
1. калиброваный прокат вместо конструкционного профиля. 
2. алюминиевая  трубка вместо карбоновой  в роли диагональных тяг
3. фанерные основания ( на них тупо наклеить лист с разметкой и аккуратно засверлить) 
4. минимум деталей 


  • 6 деталей удерживающих валы на основаниях,

  • 3 каретки, 

  •  эффектор.



из покупных деталей


  • моторы,

  • драйвера,

  • плата управления 

  • голова  e3d v6 в сборе,

  • экструдер а ля китайский bmg,

  • вентиляторы

  • шкивы,

  • магниты,

  • шарики 



upd: из обидного: эти самые покупные детали тянут на 7 тыс руб даже если не считать плату управления

01:09

домовой
Года четыре назад мне отдали останки hero 9300+ с неработающим дисплеем . Тогда восстанавливать смартфон мне показалось дорого и сложно.
Сейчас же дисплеев почти нет но то что нашлось  стоит с доставкой всего 500 руб. А телефон все же лучше чем абы что из днс.
Тачскрин снял с экрана проволочкой из ide шлейфа за пару тройку минут. собрал в кучу  весь бутерброд тачскрин дисплей платы корпус. И на удивление все работает. остается напечатать утеряную кнопку home, и прикупить тонкие полоски 3м ленты

@темы: мог(б)ильные технологии

10:45

домовой
Прочитал на хабре  статью про то как больно чайнику верстать сайты на старом ноутбуке под семеркой и с 4 гб рамы.  Типа фигма не работает, гитхаб десктоп не запускается, память кончается и вообще все грустно.
Не поленился залезть в репозиторий и поискать. Под никсы есть и figma и vscode и github desktop. Под каким-нибудь q4os установка данных электрон поделок мало чем отличается  от поставить приложение под форточку. Но вот памяти и ресурсов процессора данный linux дистрибутив поребляет несоизмеримо меньше чем windows. 

Другое дело что память все равно быстро кончится, ибо каждая электрон поделка хочет  500-1200 мб рамы. И с этим мало что  можно сделать. 

домовой

Создавая пульт дистанционного управления на esp8266 и паре переменных резисторов необходимо :
1. Не надеяться на то, что потом удастся перешить плату
Платы c esp8266 хрупкие и в неопределенный момент времени  могут немного умереть или отказаться прошиваться. Так что лучше заранее озадачиться и сделать механизм который позволит изменить параметры без перепрошивки.

2. Не жалеть клей во время фиксации резисторов  в конечном положении
резистор может провернуться относительно деталей корпуса

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

4. Не заливать пружины клеем
они после этого не работают

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

2. проверить работу моторов с шим контроллером
Если колеса при отсутствии нагрузки  приходят в движение  при 70-90% мощности, то нет смысла задумываться о пропорциональном управлении.

11:20

домовой
Мы в  восхищении! Королева в восхищении!
Битрикс при успешной оплате вешает признак "оплачено" на всю сумму заказа. 
т.е.  возможен злой фокус вида


  1. злоумышленник  делает заказ горсточки гаек на 100 руб

  2.  оператор проверяет, что все  хорошо и разрешает платить 

  3. злоумышленник начинает оплату (открывает форму в которой проставлено платить 100 руб )

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

  5. злоумышленник заканчивает оплату 100 руб.

  6. Битрикс радостно ставит уплочено 10 100 руб. При этом с карты списано  всего 100 руб.


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

@темы: рабочее, bitrix

21:27

домовой
Сеанс наркомании с элементами некромантии.или наоборот. 
Взять телефон с вздувшейся несьемной батареей.
Долго проклинать те клейкие сопли которыми крепят АКБ к экрану
Откусить никелерованныевые ленты контактов полумертвого аккумулятора от платы защиты. 
Взять первую попавшуюся АКБ  из тех что посвежее и перепаять контроллер защиты. Оно пока даже пытается работать

15:31

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

Вариант  с энкодером  выглядит  неудобным, потому как  имеющийся в наличии ec11  имеет всего  40 шагов на  оборот.

Неожиданно в голову пришла мысль, что можно по очереди включать питание  переменного резистора. Для верности  с обеих сторон. Например полумостом.  А если вспомнить стоимость l293 на али ... то не остается причин почему бы благородному дону не пожертвовать аж 15 рублей во благо удобству.

(линии питания на ноги vss и gnd не показаны  чтобы не усложнять схему)

В итоге получилась немного бредовая, но вполне работоспособная идея.  
просто пишется что то типа  

//в начале прижать обе ноги к земле

digitalWrite(pin1,LOW);
digitalWrite(pin2,LOW); 
//поднять ногу1, чтобы включить  питание на резистор;  измерить напряжение; опустить ногу;
digitalWrite(pin1,HIGH);
 int left=analogRead(A0) ;
digitalWrite(pin1,LOW); 
//повторить  все то же самое  с другой ногой.
digitalWrite(pin2,HIGH);
int right=analogRead(A0) ;
digitalWrite(pin2,LOW);