hardware error hack code microcontroller linux FreeBSD windows

chemical experiments
I just repair my home PC power supply i think will be no loud sound …
У нас эксперимент по химии (и физике) ремонт блока питания от компа, гуляем пока во дворе ждем результата опыта.
chemical-test

Фряха 12.2 обновляю к 25 ноября 2020. К разделу Майнинг — использование видеокарт возможно с конца 2018 года используя эмулятор linux64 . monero и похожие на нее криптовалюты используют FreeBSD как основную систему — там как сервер и простая винда, майнеры ее особо ценят, там подсчет блока чуть чуть опережает других, 6 штук найденых только подтверждают это ( переводом в 1200 почти американских денюшек).

FreeBSD 12.2 Released — Supports Linux In Jailed Environments, Better Hardware Support Written by Michael Larabel in BSD on 27 October 2020 at 08:26 PM EDT. 18 Comments

BSD --

FreeBSD 12.2-RELEASE is now available as the latest feature and bug fix update to the FreeBSD 12 platform ahead of the expected FreeBSD 13.0 release around the end of Q1-2021.

FreeBSD 12.2 brings with it many improvements to the stable code-base for this BSD operating system including the likes of:

— The default LLVM Clang compiler toolchain and LLVM sub-projects updated against the 10.0.1 release.

— Updates to the wireless network driver stack yielding better 802.11n and 802.11ac WiFi support. Also on the network front is the Intel ICE driver added for Intel E800 series 100Gb Ethernet card support.

— FreeBSD’s Jail utility now allows running Linux in a jailed environment.

— The rc.conf now supports a «linux_mounts_enable» option for handling whether Linux-specific file-systems get mounted in /compat/linux.

— Various kernel drivers deprecated and marked for removal in FreeBSD 13.0.

— FreeBSD’s VirtIO Block (virtio_blk) driver now supports TRIM.

— A notice that beginning with FreeBSD 13.0, the default CPU type for i386 architecture builds will change from i486 to i686. In other words binaries for i386 will now require at least i686 class CPUs. Fortunately, i486/i586 processors still running modern software is increasingly rare. This change for FreeBSD 13.0 will be the final bump for their default i386 / x86 32-bit support.

Download links and more details on today’s FreeBSD 12.2 availability via FreeBSD.org.

Image watermark php code (for Bitrix 12 … 16) Битрикс 1С водяной знак на дополнительные
фото png jpg.

Исправленый вариант change code if imageSX imageSY function returns 0
( image object create from jpeg ..)
Вообще как то принято если публикуется код программы в нем должно быть парочка ошибок или вообще закладка которая например позволяет спам рассылать ну или стереть чего, а потом вежливо попросить так евро 500 за восстановление. Ну тут в порядке исключения проверенный кусочек кода.До php5.6 version 7 no test.

bitrix/php_interface/init.php
<!-- <?php --> //Подключаем файл с функциями
require_once ($_SERVER["DOCUMENT_ROOT"]. "/bitrix/php_interface/watermark.php");
//Создание элемента
AddEventHandler("iblock", "OnBeforeIBlockElementAdd",array("CWatermark", "ImageAdd"));
//Изменение элемента
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate",array("CWatermark", "ImageUpdate"));
// обработчик события регистрации (use Russian letters for username only but trusted method against spammers is shut down then hack kill 'em all with axe)
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserRegisterHandler");
// обработчик события обновления данных пользователем
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserRegisterHandler");
function OnBeforeUserRegisterHandler($args) {
if(isset($_POST['c'])  $_POST['c'] != $_POST['s']) {
 $GLOBALS['APPLICATION'] -> ThrowException('Произошла внутренняя ошибка, попробуйте еще раз');
 return false;
 }
 if (!preg_match("/^[а-яА-Я]+$/ui", $args['NAME'])) {
  if(empty($args['NAME'])) {
   $GLOBALS['APPLICATION']->ThrowException('Имя обязательное поле');
   return false;
   }else{
   $GLOBALS['APPLICATION']->ThrowException('Имя может состоять только из русских букв');
    return false;
    }
    }
    if (!preg_match("/^[а-яА-Я]+$/ui", $args['LAST_NAME'])) {
        if(empty($args['LAST_NAME'])) {
            $GLOBALS['APPLICATION']->ThrowException('Фамилия обязательное поле');
            return false;
            }else{
                $GLOBALS['APPLICATION']->ThrowException('Фамилия может состоять только из русских букв');
                return false;
                }
                
                }
    return true;
}
/////
//..
watermark.php
<!--?php -->
class CWatermark { 
    // chmod 1777 ./tmp ./bitrix/tmp ./upload ./upload/tmp 
    // св-ва инфоблока-настроить вн вид списка - вывести все поля -не обязательно но проще отладка 
    // ./.upload/tmp сохраняется оригинал картинки и включены 2 файла лога - пишется $arFields 
    //Срабатываем при создании элемента 
    function ImageAdd(&$arFields) { 
    //Указываем нужные ИБ, допустим ваш каталог имеет ID 1 + секция в других инфоблоках 529 
    if ($arFields["IBLOCK_ID"] == 4 or $arFields["IBLOCK_SECTION"][0]== 529) {
        CWatermark::log_array($arFields); // убрать после отладки
        if (!empty($arFields["PREVIEW_PICTURE"]["tmp_name"])) { 
            //CWatermark::PostWaterMark($arFields["PREVIEW_PICTURE"]["tmp_name"]);
            }
            //Если заполнено детальное изображение
            if (!empty($arFields["DETAIL_PICTURE"]["tmp_name"])) { 
                // //foreach($arFields[PROPERTY_VALUES][28] as &$file):
                // foreach($arFields["DETAIL_PICTURE"] as &$file): 
                // CAllFile::ResizeImage( 
                // $file,
                // array("width" => "200", "height" => "200"),< ?--> 
                // BX_RESIZE_IMAGE_PROPORTIONAL);
                // endforeach;
                CWatermark::PostWaterMark($arFields["DETAIL_PICTURE"]["tmp_name"]);
            }
            // $tok="bbb";
            //$arFields[NAME] = $tok; //имя присваиваем из свойства
            //if ($arFields[PROPERTY_VALUES][69][0] == "") {$arFields[ACTIVE] = "N";} //aктивность также в зависимости от свойства
            // $arFields[PROPERTY_VALUES][2][n0][VALUE]["name"]=$arFields[DETAIL_PICTURE]["name"];
            // $arFields[PROPERTY_VALUES][2][n0][VALUE]["type"]=$arFields[DETAIL_PICTURE]["type"];
            // $arFields[PROPERTY_VALUES][2][n0][VALUE]["tmp_name"]=$arFields[DETAIL_PICTURE]["tmp_name"];
            // $arFields[PROPERTY_VALUES][2][n0][VALUE][error]=$arFields[DETAIL_PICTURE][error];
            // $arFields[PROPERTY_VALUES][2][n0][VALUE][size]=$arFields[DETAIL_PICTURE][size];
            // $arFields[PROPERTY_VALUES][2][n0][VALUE]["COPY_FILE"] = "Y";
            // $arFields[TAGS] = trim($tok, " ;:\/*.,");
            $f=fopen($_SERVER["DOCUMENT_ROOT"]."/logc1.txt","w");
            fwrite($f, print_r($arFields,true));//печатаем в файл результирующий массив для проверки
            fclose($f);
            CWatermark::log_array($arFields); // убрать после отладки.
            //Тут наносим на дополнительное фото, 2 это ID свойства ИБ 
            //for jcarusel
            if(isset($arFields["PROPERTY_VALUES"]["53"])) {
                foreach ($arFields["PROPERTY_VALUES"]["53"] as $key=>$moreimg)
                {
                    CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["53"][$key]['VALUE']['tmp_name']);
                }
            }
            if(isset($arFields["PROPERTY_VALUES"]["54"])) {
                foreach ($arFields["PROPERTY_VALUES"]["54"] as $key=>$moreimg)
                {
                    CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["54"][$key]['VALUE']['tmp_name']);
                }
            }
            if(isset($arFields["PROPERTY_VALUES"]["56"])) {
                foreach ($arFields["PROPERTY_VALUES"]["56"] as $key=>$moreimg)
                {
                   CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["56"][$key]['VALUE']['tmp_name']);
                }
            }
            if(isset($arFields["PROPERTY_VALUES"]["61"])) {
                foreach ($arFields["PROPERTY_VALUES"]["61"] as $key=>$moreimg)
                {
                   CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["61"][$key]['VALUE']['tmp_name']);
                }
            }
//REAL_PICTURE 
//Оригинал
//CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["54"]["n0"]["VALUE"]["tmp_name"]);
//CWatermark::PostWaterMark($arFields[PROPERTY_VALUES][2]["xkey0"][VALUE][tmp_name]);
//bx16 no extension for temp picture!!!
/* [n0] => Array
 (
     [VALUE] => Array
     (
         [name] =>
         [type] =>
         [tmp_name] =>
         [error] => 4
         [size] => 0
         )
     )
*/
// foreach($arFields["PROPERTY_VALUES"]["2"] as &$file):
// CAllFile::ResizeImage(
// $file,
// array("width" => "200", "height" => "200"),
// BX_RESIZE_IMAGE_PROPORTIONAL);
// endforeach;
 }
}
//Срабатываем при изменение элемента
// only catalog infoblock id=1
 /* [IBLOCK_SECTION] => Array
 (
   [0] => 529
 )
 */
function ImageUpdate(&$arFields) {
    //То же самое, указываем ID ИБ
    if ($arFields["IBLOCK_ID"] == 4 or $arFields["IBLOCK_SECTION"][0]== 529) {
        //Если заполнено изображение анонса
        // if(!empty($arFields["PREVIEW_PICTURE"]["tmp_name"])){
        //CWatermark::PostWaterMark($arFields["PREVIEW_PICTURE"]["tmp_name"]);
        // }
        //Если заполнено детальное изображение
        // if (!empty($arFields["DETAIL_PICTURE"]["tmp_name"])) {
        // CWatermark::PostWaterMark($arFields["DETAIL_PICTURE"]["tmp_name"]);
        //}
        //Тут наносим на дополнительное фото, 2 это ID свойства ИБ 53 54 56 61 edit insert correct
        //for jcarusel
        $f=fopen($_SERVER["DOCUMENT_ROOT"]."/logc2.txt","w");
        fwrite($f, print_r($arFields,true));//печатаем в файл результирующий массив для проверки
        fclose($f);
        CWatermark::log_array($arFields); // убрать после отладки.
        if(isset($arFields["PROPERTY_VALUES"]["53"])) {
         foreach ($arFields["PROPERTY_VALUES"]["53"] as $key=>$moreimg)
         {
             CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["53"][$key]['VALUE']['tmp_name']);
         }
        }
        if(isset($arFields["PROPERTY_VALUES"]["54"])) {
         foreach ($arFields["PROPERTY_VALUES"]["54"] as $key=>$moreimg)
         {
             CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["54"][$key]['VALUE']['tmp_name']);
         }
        }
        if(isset($arFields["PROPERTY_VALUES"]["56"])) {
         foreach ($arFields["PROPERTY_VALUES"]["56"] as $key=>$moreimg)
         {
             CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["56"][$key]['VALUE']['tmp_name']);
          }
        }
        if(isset($arFields["PROPERTY_VALUES"]["61"])) {
            foreach ($arFields["PROPERTY_VALUES"]["61"] as $key=>$moreimg)
            {
                CWatermark::PostWaterMark($arFields["PROPERTY_VALUES"]["61"][$key]['VALUE']['tmp_name']);
            }
        }
    //REAL_PICTURE 
    //Оригинал
    }
    }
    //functions *********************************
    // записывает все что передадут в /bitrix/log.txt
function log_array() {
    $arArgs = func_get_args();
    $sResult = '';
    foreach($arArgs as $arArg) {
        $sResult .= "\n\n".print_r($arArg, true);
        }
    if(!defined('LOG_FILENAME')) {
        define('LOG_FILENAME', $_SERVER['DOCUMENT_ROOT'].'/bitrix/log.txt');
        }
        AddMessage2Log($sResult, 'log_array -> ');
        }
function PostWaterMark(&$image) {
    //echo (" <pre>  ");
    //print_r ($key);
    //print_r ($arFields);
    // remove spaces echo (" < p r e >");
    if ($image == NULL) return true; 
    //Получаем папку для загрузок 
    $_upload_dir = COption::GetOptionString("main", "upload_dir");
    // imagesX imagesY FAIL!! if image create from jpg jpeg (truecolor? >600 pixel??) 
    // getimagesize return array - Correctly!
    //ошибка - imagesx imagesy выдают 0 если картинка jpeg truecolor? 
    $size = getimagesize($image); $ratio = $size[0]/$size[1]; // width/height
    if( $ratio > 1) { $width = $size[0]; $height = $size[1]; } 
    else { $width = ceil($size[1]*$ratio); //for resize watermark before add
    $height = ceil($size[0]*$ratio); //picture w - h change & smaller size - more proportional
    } 
    if ($size[mime] == 'image/jpeg') { 
    $resultImage = imagecreatefromjpeg($image); 
    } 
    if ($size[mime] == 'image/png') { 
    $resultImage = imagecreatefrompng($image);
    } 
    if ($resultImage == NULL) return true; // source picture jpeg or png #
    $src = imagecreatefromstring(file_get_contents($fn)); #
    $dst = imagecreatetruecolor($width,$height); #
    imagecopyresampled($dst,$src,0,0,0,0,$width,$height,$size[0],$size[1]); #
    imagedestroy($src); #
    imagepng($dst,$target_filename_here); // adjust format as needed #imagedestroy($dst);
    imagealphablending($resultImage, true); //adobe photoshop flatten image
    //отладка отключить если работает debug comment this after 
    $imgprop = array("width" => $width, "height" => $height, "lay"=>$size[2],"dim"=>$size[3],"bits"=>$size[bits],"channels"=>$size[channels],"mime"=>$size[mime] );
    $f3=fopen($_SERVER["DOCUMENT_ROOT"]."/logc3.txt","w");
    fwrite($f3, print_r($imgprop,true));//печатаем в файл результирующий массив для проверки
    fwrite($f3, print_r($size[3],true));//печатаем в файл результирующий массив для проверки
    fclose($f3); 
    //Создаем временную картинку 
    //пригодилось для копии только
    $_image = $_SERVER['DOCUMENT_ROOT'] . "/" . $_upload_dir . "/tmp/" . md5(microtime()) . ".jpg";
    imagejpeg($resultImage, $_image, 100);
    //save original
    //Узнаем размеры загружаемой картинки
    //ошибка - imagesx imagesy выдают 0 если картинка jpeg truecolor? 
    // change - getimagesize(filename) get correct width & height in [0] [1] !
    $imagesizeW = $width ;
    //imagesx($resultImage); 
    $imagesizeH = $height ; 
    //imagesy($resultImage); 
    //Открываем картинку для наложения
    //Но сначала масштабируем водяной знак, т.к. размеры картинок у нас разные
    //Узнаем размер будущего водяного знака (8% //35% от ширины картинки) 
    // if ($imagesizeW = 0) { $imagesizeW=$wight; $imagesizeH=$height; } imagesx imagesy do not work!
    $watermarkSize = ceil(46 * $imagesizeW / 100); 
    $watermarkSizeH = ceil(46 * $imagesizeH / 100);#
    imagecopyresampled($dst,$src,0,0,0,0,$width,$height,$watermarkSize,$watermarkSizeH); 
    // ну опять хрень - прозрачный png эта ф-ция не масштабирует!!! 
    //fuck.. png with transparent (at white 255,255,255 color) do not resize with ResizeImageGet 
    //see manual Bitrix! to prevent black pictures w/o transparency
    $wmTargetArray = CFile::ResizeImageGet( 63, array("width" => $watermarkSize, "height" => $watermarkSizeH), BX_RESIZE_IMAGE_EXACT, true, array() )
    ; //2181 //63 - это ID watermark.png, который лежит в файловой системе Битрикса b_file ID SUBDIR FILE_NAME (закинуть в медиабиблиотеку) 
    //select * from b_file where module_id!="iblock" (in medialibrary) //
    $wmTarget = $_SERVER['DOCUMENT_ROOT'] . "/bitrix/php_interface/watermark.png";
    $wmTarget = $_SERVER['DOCUMENT_ROOT'] . $wmTargetArray["src"]; 
    //Загружаем PNG ватермарка
    // $finalWaterMarkImage
    // resize transparent png (color 255,255,255 is transparent)
    $src = imagecreatefrompng($wmTarget); 
    $srcWidth = imagesx($src); 
    //if png work correctly 
    $srcHeight = imagesy($src);
    $finalWaterMarkImage = imagecreatetruecolor($watermarkSize,$watermarkSizeH);
    imagecolortransparent($finalWaterMarkImage, imagecolorallocatealpha($finalWaterMarkImage, 0, 0, 0, 112)); 
    //127 full transparency
    imagealphablending($finalWaterMarkImage, false);
    imagesavealpha($finalWaterMarkImage, true); 
    //setTransparency($new_image,$image_source);     function 50 lines up
    // $transparencyIndex = imagecolortransparent($src);
    // $transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255); 
    // if ($transparencyIndex >= 0) { // $transparencyColor = imagecolorsforindex($src, $transparencyIndex); 
    // } 
    // $transparencyIndex = imagecolorallocate($finalWaterMarkImage, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue']); 
    // imagefill($finalWaterMarkImage, 0, 0, $transparencyIndex); 
    // imagecolortransparent($finalWaterMarkImage, $transparencyIndex); 
    // $black = imagecolorallocate($finalWaterMarkImage, 0, 0, 0);
    // $white = imagecolorallocate($finalWaterMarkImage, 255, 255, 255);
    // imagecolortransparent($finalWaterMarkImage, $black); black after resize, in original white... 
    // resize with transparent color http://php.net/manual/ru/function.imagecolortransparent.php see comment 3 
    //imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height); 
    imagecopyresampled($finalWaterMarkImage,$src,0,0,0,0,$watermarkSize,$watermarkSizeH,$srcWidth,$srcHeight);
    // imagecolortransparent($finalWaterMarkImage, $transparencyIndex); 
    // comment if correcte 
    $_image1 = $_SERVER['DOCUMENT_ROOT'] . "/" . $_upload_dir . "/tmp/" . md5(microtime()) . ".png"; 
    imagepng($finalWaterMarkImage, $_image1, 0);
    //debug save watermark img w resize see correct resize & transparent color
    //Узнаем размеры картинки водяного знака 
    $finalWaterMarkWidth = imagesx($finalWaterMarkImage);
    $finalWaterMarkHeight = imagesy($finalWaterMarkImage); 
    //Пихаем водяной знак в нижний правый угол картинки
    //Узнаем какой ставить отступ с краев (4% 15% от ширины картинки)
    $watermarkMargin = ceil(15 * $imagesizeW / 100);
    $im_prop1= array("fw" => $finalWaterMarkWidth, "fh" => $finalWaterMarkHeight, "w" => $imagesizeW, "h" => $imagesizeH, "m" => $watermarkMargin, "width" => $width, "height" => $height, "ww" => $watermarkSize , "wh" => $watermarkSizeH );
    AddMessage2Log($image, 'nameofimage -> '); 
    CWatermark::log_array($im_prop1); // убрать после отладки.
    CWatermark::log_array($size); // убрать после отладки.
    imagecopy($resultImage,$finalWaterMarkImage,$imagesizeW - $finalWaterMarkWidth - $watermarkMargin, $imagesizeH - $finalWaterMarkHeight - $watermarkMargin, 0, 0, $finalWaterMarkWidth, $finalWaterMarkHeight);
    imagealphablending($resultImage, false);
    imagesavealpha($resultImage, true); 
    imagejpeg($resultImage, $image, 100); //result $image overwrite original with watermark 8% size right bottom
    //imagejpeg($resultImage, $_image, 100); 
    //save copy with watermark in upload/tmp 
    imagedestroy($resultImage); 
    imagedestroy($finalWaterMarkImage); 
    //rename($_SERVER["DOCUMENT_ROOT"].$newimg["src"],$_image["tmp_name"]);
    // $_image["size"]=$newimg["size"];
    //$GLOBALS['APPLICATION']->ThrowException('file $_image');
    //return ($_image);
    //return as input $image } 
    //Очищаем временную папку
    // function Clear() { 
    //$_upload_dir = COption::GetOptionString("main", "upload_dir"); 
    //$_WFILE = glob($_SERVER['DOCUMENT_ROOT'] . "/" . $_upload_dir . "/tmp/*.jpg");
    //foreach($_WFILE as $_file) unlink($_file);
    // return true; 
    // } 
    } ?>

Установка на FreeBSD oss (4) и nspluginwrapper — libflashplayer,и соответственно linux-centos emulator,
или что лучше — Firefox Chromium (chrome) wine-devel (wine use pkg) + Pipelight,
все это нужно для посмотра flash видео и клипов.
Первый вариант сейчас идеально работает без звука, а со звуком — где то по цепочке
alsa-lib-oss (kernel panic) browser crash ):

OSS нужно ставить для многих звуковушек особенно если для серверных плат,
я не смог ее запустить так на новой версии freebsd 12 current что то dump/ kernel panic/ но на 10-11 версии работает. v2017 работает.

По второму варианту надо ставить wine ну что делать с виндой новая система freebsd дружит, как работает не знаю пока буду проверять.

// исправилось  2017 . Chromium работает через alsa oss , firefox 57+  alsa-lib alsa-plugins убрать, встроеный код работает через oss4. pkg delete -f alsa-plugins alsa-libs


 короткие записи— почему то Brasero не записывает образ диска в простом режиме tao а диск dvd iso ( привод lg  bluray)установлен пакет sysutils/dvd+rw-tools

vse podryad

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Перейти к верхней панели