Архив рубрики: Программирование

Рубрика для примеров программирования

Миграция с JUnit4 на JUnit Jupiter в Spring проекте.

SpringBootTest

В SpringBoot 2 уже встроена поддержка JUnit Jupiter.

При миграции с Junit4 в SpringBoot 2 надо в тестах убрать

Аннотацию @RunWith, заменить import, в которых фигурируют Test и различных Assert для тестов с Junit на Jupiter

Было

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith( SpringRunner.class )
@SpringBootTest
public class ExampleTest{

@Test
public void isTest(){
Assert.assertEquals(1,1)
}

Стало

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest
public class ExampleTest{

@Test
public void isTest(){
assertEquals(1,1)
}

Проверьте какие еще аннотации могут относится к Junit4 и исправьте их на Junit 5

JUNIT 4JUnit 5
@Before@BeforeEach
@After@AfterEach
@BeforeClass@BeforeAll
@AfterClass@AfterAll
@Ignore@Disable

Запуск скрипта в скрипте в среде PowerShell

Необходимо организовать запуск скриптов Powershell. Для примера запустим скрипт ps1, в котором получаем результат работы другого скрипта ps1 и работаем с этим значением.

Напишем первый скрипт, который будет что то возвращать, например json значение какого либо ключа

GetSomeValue.ps1
$answer = $ResponseAnswer.Content | Out-String | ConvertFrom-Json
return $answer.someJsonKey

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

CheckValue.ps1
$GetValue = & "$PSScriptRoot\GetSomeValue.ps1"
If ($GetValue -eq "Ice") {
 write-Host "Success Value is "  $GetValue 
 }Else
{
  write-Host "Failed Value is "  $GetValue  
}

Переменные для имени колонки ms sql

MsSql_DeclareНеобходимо заменить название имени столбца на значение из переменной.  То есть брать название столбца из переменной.

В Ms SQL  это можно сделать достаточно просто через  exec().

Итак стандартный запрос

SELECT '001' AS [CODLIS]
, DATAVAL
, stuff(tbl.COD, 10, 2, 'DL') AS CODART
, tbl.DL AS PR
FROM
tbl
WHERE
tbl.DL > 0

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

Делается это так.

Создаём 2 переменные. В одной будет имя колонки, в другой сам запрос.

 

DECLARE @str varchar(3000),@nameCol varchar(2); 

Устанавливаем значения. Не забываем про двойной апостроф

Set  @nameCol = 'DL'

Set @str = 'SELECT ''001'' AS [CODLIS]
     , ''03.28.2015 0:00:00'' AS DATAVAL
     , stuff(tbl.COD, 10, 2, '''+@nameCol+''') AS CODART
     , '+@nameCol+' AS PR
FROM
 tbl
WHERE
 '+@nameCol+' > 0'

Теперь запускаем наш запрос используя exec()

exec(@str)

Вот собственно и все, меняя значение переменной @nameCol меняем и сам запрос и имена столбцов.

Jscript Группировка в ассоциативном массиве с подсчетом

ListingЕсть данные: цвет. У каждого цвета свой размер (может повторятся).

Необходимо сделать группировку по цвету и повторяющиеся размеры посчитать.

Вывести все это.

Для начала создадим массив наших данных. Нам для это надо создать массив массивов.

var array_res = new Array();
.....// тут цикл в котором получаю данные
array_res[i]=new Array ();
array_res[i].push(color,fasA+'x'+fasL+';'); //Получается вида [["Красный","716x396"],[....,....]]
....
//запускаем процедуру для группирования
  print_Group(array_res);

Сама функция для группировки с комментариями. Тут используются ассоциативные массивы.

function print_Group(arr_res){
  gr = [];  
   // Для каждого цвета собираем  его размеры 
for (var i = 0; i < arr_res.length; i++) {
  if (gr[arr_res[i][0]]== null ) {gr[arr_res[i][0]]="";}
   gr[arr_res[i][0]] += arr_res[i][1];
  }  

// группируем и считаем элементы
for (var k in gr) {
 // Выводим цвет 
document.write('<tr><td colspan="2"><b>'+ k + '</b></td></tr>');
c = []; 
t_c = gr[k].split(';'); //получаем массив всех размеров 
for (var i = 0; i < t_c.length-1; i++) {
 if (c[t_c[i]]== null) c[t_c[i]] = 0; 
  c[t_c[i]] +=1; // счетчик одинаковых размеров 
}
 //выводим размер и его количество
   for (var t in c) {
 document.write('<tr><td colspan="2">'+t + '= ' + c[t] +' шт'+ '</td></tr>'); 
   }
 }
}

Вот такая группировка получается в итоге.

group_array

C# Разрезать изображение на части

before_Cut
Необходимо вырезать часть  картинки из pictureBox и показать на форме.

Сначала в битмапе формируем нужную  часть, затем передаем в picturebox.

Код:

public Bitmap CutImage(Bitmap src, Rectangle rect)
        {
           
            Bitmap bmp = new Bitmap(src.Width, src.Height); //создаем битмап

            Graphics g = Graphics.FromImage(bmp); 

            g.DrawImage(src, 0, 0, rect, GraphicsUnit.Pixel); //перерисовываем с источника по координатам

            return bmp;
        }

В обработчике нажатия кнопки пишем следующее:

private void button1_Click(object sender, EventArgs e)
        {
            Image temp = pictureBox1.Image;// берем картинку или Image.FromFile("D:\\123.png");
            Bitmap src = new Bitmap(temp, pictureBox1.Width, pictureBox1.Height); 
            // Задаем нужную область вырезания (отсчет с верхнего левого угла)
            Rectangle rect = new Rectangle(new Point(0, 0), new Size(pictureBox1.Width/2, pictureBox1.Height/2));
            // передаем в нашу функцию   
            Bitmap CuttedImage = CutImage(src, rect);
            // результат изображение передаем на форму 
            pictureBox1.Image = CuttedImage;
        }

Получилось  вот такое изображение после вырезания.

Cut_image