Упитанность животных

Упитанность оценивается в баллах от 1 до 5, где 1 — тощая, 5 — ожирение.

3,25 — от сухостоя до осеменения
4,25 — максимум после осеменения и до окончания периода лактации.

В последнюю треть лактации надо начинать худеть корове, если есть лишний вес.

Главная причина ожирения — несвоевременное осеменение.

Источник: Оценка упитанности молочного скота (soft-agro.com)

В Учхозе КубГАУ есть камеры, которые определяют упитанность коров в потоке.

Полив кормов

Влажность полносмешанного корма должна быть 38-42%. Но надо смотреть по факту на поедаемость, температуру окружающей среды.

В жару быстро начинается брожение. У нас пока оптимально 42%.

Корма при смешивании нужно поливать равномерно. Из трубы делаем планку-лейку.

Тепловой стресс и орошение коров

В жару коров поливают перед дойкой и в местах содержания.

Thermotool показывают индекс теплового стресса. При температуре выше 25 градусов, становится тревожно.

Сода, дрожжи, оксид магния и pH рубца коровы

Соду лучше не давать в свободном доступе. Есть уникумы, которые по 3 кг съедают.

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

Дрожжи Biochem хорошо работают для восстановления pH рубца. ПА рекомендует.

Оксид магния в 3 раза эффективнее соды.

Для контроля рН рубца делают или прокол, что болезненно для животного, или устанавливают в рубец датчик (болюс). Цены не нашел, говорят, что дорого. На одном сайте есть информация, что $100 в месяц. Служит 4-6 мес.

Агро-Нептун ставит болюсы на 10 голов в группе, чтобы было экономнее.

Почему телефон не подключается к Wi-Fi в гостинице?

Часто бывает так, что для подключения к Wi-Fi нужно пройти внутреннюю авторизацию. Телефон обычно после того как цепляет Wi-Fi открывает страницу ввода номера проживания и фамилии, например.

Но так же часто эта страница не открывается. Что делать?

Откройте браузер и в адресной строке наберите msfconnect.com

В большинстве случаев сработает. Если же нет, то поищите в сети инструкции по настройке DNS, обновления, отключения частного IP, но это часто слишком сложно для обычного пользователя.

Насколько я понимаю, проблема в том, что Wi-Fi реализован на технологиях Microsoft и если аппарат на другой ОС (например, iPhone на iOS, многие другие телефоны на Android, ноут на Mac), то порой нужны танцы с бубном или переход на msfconnect.com вручную.

Unity 2D: Как создать простое игровое меню

Исходная ситуация:

  1. У нас есть 2D игра.
  2. Нужно стартовое меню, через которое можно запустить игру или выйти из игры.
  3. Нужна возможность поставить игру на паузу.

Итак, по порядку:

  1. В Hierarchy создайте Creat Empty и назовите его допустим Game. Выделите всё, что касается самого игрового процесса и сделайте дочерним элементом Game. Это нужно для того, чтобы у нас была возможность отключать и включать отображение всех элементов игрового процесса.

Читать далее Unity 2D: Как создать простое игровое меню

Unity 2D: Как нарисовать фон для игры?

      1. У вас должны быть рисунки (я использую в формате png с прозрачным фоном), из которых будете делать палитру (Tile Pallete), а из палитры фон.
      2. В окне Project создаем папку для рисунков (Sprites), кликаем на правую кнопку — Import New Asset. Рисунке в проекте, с ними дальше можно работать.
      3. Нужно создать сетку для нанесения фона (Tilemap). Переходим в меню GameObject — 2D — Tilemap. В Hierarchy появляется Grid-Tilemap.
      4. Добавляйте сколько хотите слоев, в Inspector — Tilemap Renderer установите порядок слоев:

    Читать далее Unity 2D: Как нарисовать фон для игры?

Unity: Где найти Tile Pallete?

Если Вы только установили Unity и начинаете разработку (возможно проходите уроки на сайте Unity), то наверняка в меню Window — 2D у вас нет Tile Pallete.

Чтобы решить проблему нужно перейти в Window — Package Manager, найти 2D Tilemap Editor и установить. После этого можете проверять наличие Tile Pallete.

Читать далее Unity: Где найти Tile Pallete?

Unity: Как заставить мяч прыгать?

Вы сделали шар, он докатывается до стены, но прилипает к ней, а не отлетает?

Все дело в материале. В Assets кликаем правой кнопкой, добавляем Physic Material (или Physic Material 2D). Не перепутайте просто с Material.

Читать далее Unity: Как заставить мяч прыгать?

Задача по C#

Сделать сложение очень больших чисел, которые не влезают в long и int64, заходят как строка, при этом должны быть следующие ограничения:

  • Неотрицательное число
  • В аргументе только цифры
  • Нет ведущих нолей
  • Не пустая строка
  • Целое

Нужно создать класс BigNumber и 3 его метода:

  • Конструктор с ограничениями выше
  • Метод сложения двух объектов (через перегрузку операторов)
  • И перекрыть метод ToString()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//сделать сложение очень больших чисел, которые не влезают в long и int64, заходят как строка, при этом должны быть следующие ограничения:
//+не отрицательное число
//+в аргументе только цифры
//+нет ведущих нолей
//+не пустая строка
//+целое

//нужно создать класс bignumber и 3 его метода:
//+конструктор с ограничениями выше
//+метод сложения двух объектов(через перегрузку операторов)
//+и перекрыть метод tostring()

namespace Sum
{
    class Program
    {
        static void Main(string[] args)
        {
            BigNumber a = new BigNumber("175872");
            BigNumber b = new BigNumber("1234567890123456789012345678901234567890");

            //BigNumber a = new BigNumber("19");
            //BigNumber b = new BigNumber("2");
 

            Console.WriteLine(a.ToString());
            Console.WriteLine(b.ToString());
            var r = a + b;
            Console.WriteLine(r.ToString());
            Console.ReadKey();
        }
    }

    public class BigNumber
    {
        string bignumber;

        /// <summary>
        /// Конструктор класса
        /// </summary>
        public BigNumber(string bignum)
        {
            if (bignum.Length == 0)
            {
                Console.WriteLine("Тип вводимых данных не соответсвует требованиям");
                bignumber = null;
                return;
            }
            else
            {
                int x1;
                int x2 = 0;
                int i = 0;
                foreach (var number in bignum)
                {
                    try
                    {
                        x1 = (int)Char.GetNumericValue(number);
                        x2 += x1;
                        bignumber = bignum;
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Тип вводимых данных не соответсвует требованиям");
                        bignumber = null;
                        break;
                    }
                    if (bignum.Length != 1 && x2 == 0 && i != 0)
                    {
                        Console.WriteLine("Тип вводимых данных не соответсвует требованиям");
                        bignumber = null;
                        break;
                    }

                    i += 1;
                }
            }            
        }

        /// <summary>
        /// Сложение
        /// </summary>
        /// <returns>ответ</returns>
        public static BigNumber operator + (BigNumber a, BigNumber b)
        {
            int[] a_array, b_array, c_array;
            a_array = new int[a.bignumber.Length];
            b_array = new int[b.bignumber.Length];

            int i = 0;
            foreach (var item in a.bignumber)
            {
                a_array[i] = (int)Char.GetNumericValue(item);
                i += 1;
            }

            int j = 0;
            foreach (var item in b.bignumber)
            {
                b_array[j] = (int)Char.GetNumericValue(item);
                j += 1;
            }

            Array.Reverse(a_array);
            Array.Reverse(b_array);

            int temp = 0;
            if (a.bignumber.Length >= b.bignumber.Length)
            {
                c_array = new int[a.bignumber.Length];
                for (int n = 0; n < a.bignumber.Length; n++)
                {
                    if ((n+1) <= b.bignumber.Length)
                    {
                        if (n < a.bignumber.Length-1)
                        {
                            c_array[n] = (a_array[n] + b_array[n] + temp) % 10;
                            temp = (a_array[n] + b_array[n] + temp) / 10;
                        }
                        else
                        {
                            c_array[n] = a_array[n] + b_array[n] + temp;
                        }
                    }
                    else
                    {
                        if (n < a.bignumber.Length - 1)
                        {
                            c_array[n] = (a_array[n] + temp) % 10;
                            temp = (a_array[n] + temp) / 10;
                        }
                        else
                        {
                            c_array[n] = a_array[n] + temp;
                        }
                    }
                }
            }
            else
            {
                c_array = new int[b.bignumber.Length];
                for (int n = 0; n < b.bignumber.Length; n++)
                {
                    if ((n + 1) <= a.bignumber.Length)
                    {
                        if (n < b.bignumber.Length - 1)
                        {
                            c_array[n] = (a_array[n] + b_array[n] + temp) % 10;
                            temp = (a_array[n] + b_array[n] + temp) / 10;
                        }
                        else
                        {
                            c_array[n] = a_array[n] + b_array[n] + temp;
                        }
                    }
                    else
                    {
                        if (n < b.bignumber.Length - 1)
                        {
                            c_array[n] = (b_array[n] + temp) % 10;
                            temp = (b_array[n] + temp) / 10;
                        }
                        else
                        {
                            c_array[n] = b_array[n] + temp;
                        }
                    }
                }
            }

            Array.Reverse(c_array);
            string res = String.Concat<int>(c_array);
            BigNumber res1 = new BigNumber(res);

            return res1;
        }    

        public override string ToString()
        {
            return bignumber;
        }
    }
}