Генератор псевдослучайных чисел с равномерным, нормальным и логнормальным распределением своими руками

Публикация № 1022666

Разработка - Практика программирования

Рассматриваем распределение случайных величин для генератора

Генератор псевдослучайных чисел

 

Введение в проблему

 

Проблема случайных чисел начинается с того, что пока не существует ни одного генератора случайных чисел. Быть может, некоторые читатели возразят, и будут настаивать на том, что непосредственно человек является генератором случайных чисел. Но, к сожалению, это не так. Если попросить респондента загадать случайное число, то с высокой долей вероятности это будет число из промежутка от 0 до 20. Из этого интервала, скорее всего, будет загадано число «3», «7», «10», «12». Если же «случайное» число не будет принадлежать данному отрезку, то оно будет либо из повторяющихся цифр, например «111», «666» и так далее, либо будет кратно 10 («100», «1000»). Еще респонденты называют какие-то культовые числа, как то «42», «23», «13».

Таким образом, даже человек является своего рода генератором псевдослучайных чисел, и «программа», заложенная в нём – еще проще и более предсказуемо, чем машинная.

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

Кроме всего вышеперечисленного (данные вещи имеют явный развлекательный характер), псевдослучайные числа также применяются в криптографии, современном шифровании, создании «одноразовых» паролей, при передаче информации между пользователями.

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

 

Способы решения

 

Генератор псевдослучайных чисел с равномерным распределением

 

Встроенный в Pascal генератор случайных чисел является эталоном для наших последующих экспериментов. Данное изображение было создано при использовании графических средств. Были созданы 5000 случайных чисел для x, 5000 – для y, а после по полученным значениям были построены точки с координатами (x, y).

 

 

Это похоже на равномерное распределение.

Возникла идея проанализировать распределение у цифр десятичной записи деления единицы на большое простое число.

Была создана простая программа в Pascal:

 

program pseudorandomnumbersgeneratorthree;

begin

writeln(1/9941);

end.

 

В результате: 0.000100593501659793

Очевидно, что для нашего эксперимента такой точности недостаточно. Самый большой тип данных в Pascalreal (действительные числа) – ограничен 1.7*10^38, поэтому возникла идея обратиться к Java.

  

«Я же просил 400 капель, а тут 402!»

 

Будем запрашивать текущее время в миллисекундах, проверять, является ли оно простым числом (если нет, то будем увеличивать его на 1 до тех пор, пока оно не станет простым), а дальше – находить величину, обратную ему и брать значения с 1 цифры, не равной 0, по 1001 цифру после запятой.

 

import java.math.BigDecimal;

import java.math.BigInteger;

 

public class testing {

 

public static void main(String[] args) {

BigDecimal input = BigDecimal.valueOf(1.0);

BigInteger helper = BigInteger.valueOf(1);

BigInteger input1 = BigInteger.valueOf((int)System.currentTimeMillis());

 

 

boolean primenumber = input1.isProbablePrime(100);

 

while (primenumber != true) {

       input1 = input1.add(helper);

       primenumber = input1.isProbablePrime(100);

}

 

if (primenumber) {

       BigDecimal input3 = new BigDecimal(input1.toString());

       BigDecimal input4 = input.divide(input3, 1001, BigDecimal.ROUND_DOWN);

       System.out.println(input4);

}

}

}

Код реализации представлен выше.

 

 
 Для времени = 2103543487 мс.  получил последовательность:

4.7538831794067873244780700842245055046014363666920473795748060044741066957557031955004218080137080617

43531713352213668782593606537595673675749399898191883684123712152189036251666519504666651086923785569

44946106550351530716892661986597665237619116547410840382592955635910749298428932360835951664830022123

52170877653930812222851849223500269856793314774956207026111269550378446728066145275750127622628987275

12734325515752933896916389254566430553665088075262596175650159021409382443634739080628286530878836069

43467957883962681300156073264959318618545868930733448630624863330909592932984132787743028009955279807

34348374324813756512560274918623538777356400809221777690778968906574356929374952351531775107057722548

52366643751729578576570687269086156049599178074895677210214004955344191560324039072266633867788443776

53695732699630183590304829291128412977753665997778347807458472571144900699645008099611491416721065391

50431169574389692662436505169336677468936015393153600156591390687042164296363795591E-10

Подсчитаем, сколько раз встречается та или иная цифра («отбросим» нули после запятой до первой цифры, не равной «0», отбросим последнюю, 1001 цифру последовательности (округление)):

 

0

1

2

3

4

5

6

7

8

9

97

84

88

105

83

115

125

106

86

101

 

Получилось распределение — последовательность цифр [0-9], близкое к равномерному. Величина выборки 1000, повторение цифр из-за периодичности дроби внутри выборки отсутствуют. Поставленная задача достигнута, генератор создан.

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

 

package education1;

import java.math.BigDecimal;

import java.math.BigInteger;

import java.util.Scanner;

 

public class testing {

 

public static void main(String[] args) {

BigDecimal input = BigDecimal.valueOf(1.0);

BigInteger helper = BigInteger.valueOf(1);

 

Scanner in = new Scanner(System.in);

 

System.out.println("Введите число от 0 до 9");

BigInteger input1 = BigInteger.valueOf((int)System.currentTimeMillis());

int onlyforlools = in.nextInt();

 

System.out.println("Введите число от 0 до 9");

int onlyforlools1 = in.nextInt();

 

System.out.println("Введите число от 0 до 9");

int onlyforlools2 = in.nextInt();

BigInteger input9 = BigInteger.valueOf((int)System.currentTimeMillis());

 

BigInteger firstcontrolnumber = input9.subtract(input1);

 

boolean primenumber = input9.isProbablePrime(100);

 

while (primenumber != true) {

       input9 = input9.add(helper);

       primenumber = input9.isProbablePrime(200);

      

}

 

if (primenumber) {

       BigDecimal input11 = new BigDecimal(input9.toString());

       BigDecimal input12 = input.divide(input11, 1001, BigDecimal.ROUND_DOWN);

       System.out.println(input12);

}

}

}

 

Каждое рациональное число представимо в виде бесконечной периодической дроби. Ниже вспомогательная программа, которая ищет длину возможного периода для бесконечной дроби и показывает распределение цифр 0-9.

 

import java.math.BigInteger;

 

public class testing {

       public static void main (String [] args) {

       BigInteger ten = new BigInteger("10");

       BigInteger helper = BigInteger.valueOf(9947); /*здесь вводите число, далее      Java преобразует его в бесконечную десятичную периодическую дробь вида     1/число, а  потомнаходит количество чисел в периоде*/

       BigInteger lools = new BigInteger("1");

      

       boolean primenumber = helper.isProbablePrime(100);

      

       while (primenumber != true) {

       helper = helper.add(lools);

       primenumber = helper.isProbablePrime(100);

       }

      

       BigInteger three = helper;

      

       BigInteger end123 = new BigInteger ("1");

       String period = "";

      

       do {

       end123 = end123.multiply(ten);

       period = period + end123.divide(three).toString();

       end123 = end123.mod(three);

       }

       while (end123.compareTo(lools) != 0);

      

       int resultat = period.length();

 

      int[][]amountofnumbers = {{0, 0}, {1, 0}, {2, 0}, {3,0}, {4, 0}, {5,0}, {6, 0}, {7,0}, {8,0}, {9,0}};

      

       for (char element: period.toCharArray()) {

       if (element == '0') amountofnumbers[0][1] = amountofnumbers[0][1] + 1;

       if (element == '1') amountofnumbers[1][1] = amountofnumbers[1][1] + 1;

       if (element == '2') amountofnumbers[2][1] = amountofnumbers[2][1] + 1;

       if (element == '3') amountofnumbers[3][1] = amountofnumbers[3][1] + 1;

       if (element == '4') amountofnumbers[4][1] = amountofnumbers[4][1] + 1;

       if (element == '5') amountofnumbers[5][1] = amountofnumbers[5][1] + 1;

       if (element == '6') amountofnumbers[6][1] = amountofnumbers[6][1] + 1;

       if (element == '7') amountofnumbers[7][1] = amountofnumbers[7][1] + 1;

       if (element == '8') amountofnumbers[8][1] = amountofnumbers[8][1] + 1;

       if (element == '9') amountofnumbers[9][1] = amountofnumbers[9][1] + 1;

       }

      

       System.out.println(resultat);

       System.out.println(period);

      

       for (int i = 0; i < amountofnumbers.length; i++) {

             for (int j = 0; j < amountofnumbers[i].length; j++) {

                    System.out.print(amountofnumbers[i][j] + "\t");

             }

             System.out.println();

       }

}

}

Чем больше простое число, тем больше получившийся период. Например, для числа 3 – в периоде всего одно число, для числа 101 – 4 числа, для  7369 – 1842 числа.

 

Генератор псевдослучайных чисел с нормальным распределением

 

Кроме генераторов с равномерным распределением также существуют генераторы с нормальным распределением (имеющим большое значение в физике, биологии, социологии). Воспользуемся центральной предельной теоремой (Сумма достаточно большого количества слабо зависимых случайных величин, имеющих примерно одинаковые масштабы (ни одно из слагаемых не доминирует, не вносит в сумму определяющего вклада), имеет распределение, близкое к нормальному.) ссылка: https://ru.wikipedia.org/wiki/Центральная_предельная_теорема для небольшого видоизменения лучшей программы по генерации псевдослучайной последовательности с равномерным распределением, чтобы получить последовательность случайных чисел с нормальным распределением.

Код представлен ниже:

 

import java.math.BigDecimal;

import java.math.BigInteger;

 

public class testing {

 

public static void main(String[] args) {

BigDecimal input = BigDecimal.valueOf(1.0);

BigInteger helper = BigInteger.valueOf(1);

BigDecimal divider = new BigDecimal("100.0");

BigInteger input1 = BigInteger.valueOf((int)System.currentTimeMillis());

BigDecimal summary = new BigDecimal("0");

int counter;

boolean primenumber = input1.isProbablePrime(100);

if (primenumber == true) {

       counter = 1;

}

else {

       counter = 0;

}

while (counter < 101) {

while (primenumber != true) {

       input1 = input1.add(helper);

       primenumber = input1.isProbablePrime(200);

}

if (primenumber) {

       BigDecimal input3 = new BigDecimal(input1.toString());

       BigDecimal input4 = input.divide(input3, 1001, BigDecimal.ROUND_DOWN);

       summary = summary.add(input4);

}

counter = counter + 1;

primenumber = false;

}

System.out.println(summary.divide(divider, 1001, BigDecimal.ROUND_DOWN));

}

}

 

 

 Нормальное распределение, изображенное с помощью графических ресурсов Pascal

 

Генератор псевдослучайных чисел с логнормальным распределением

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Логнормальное распределение, изображенное с помощью графических ресурсов Pascal

Белые полосы наблюдаются из-за округления значения функции e^(случайное число с нормальным распределением)

 

 

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

 

import java.math.BigDecimal;

import java.math.BigInteger;

import org.nevec.rjm.*;

 

public class testing {

 

public static void main(String[] args) {

BigDecimal input = BigDecimal.valueOf(1.0);

BigInteger helper = BigInteger.valueOf(1);

BigInteger input1 = BigInteger.valueOf((int)System.currentTimeMillis());

BigDecimal summary = new BigDecimal("0");

BigDecimal divider = new BigDecimal("100.0");

BigDecimal eulerdigit = new BigDecimal("2.7182818284590455");

 

int counter;

boolean primenumber = input1.isProbablePrime(100);

if (primenumber == true) {

       counter = 1;

}

else {

       counter = 0;

}

while (counter < 101) {

while (primenumber != true) {

       input1 = input1.add(helper);

       primenumber = input1.isProbablePrime(200);

}

if (primenumber) {

       BigDecimal input3 = new BigDecimal(input1.toString());

       BigDecimal input4 = input.divide(input3, 1001, BigDecimal.ROUND_DOWN);

       summary = summary.add(input4);

}

counter = counter + 1;

primenumber = false;

}

System.out.println(eulerdigit.pow(summary.divide(divider, 1001, BigDecimal.ROUND_DOWN)).toString());

}

}

 

Итог

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

 

Автор: Васильев Алексей. Консультант-математик: Васильев Николай.

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vasilev2015 1847 18.03.19 08:27 Сейчас в теме
Все программные модули статьи можно перевести на язык 1С 8.3
Пример деления с неограниченной точностью:


        //Вводите переменные из диалога
	Делимое = 1;
	Делитель = 9971;
	НужнаяРазрядность = 1000;
        //Вводите переменные из диалога
	
	РезультатДеления = ""+Цел(Делимое / Делитель)+",";
	ОстатокДеления = Делимое % Делитель;
	
	Для Разрядность = 1 ПО НужнаяРазрядность Цикл
		ОстатокДеления = ОстатокДеления * 10;
		РезультатДеления = РезультатДеления+Цел(ОстатокДеления / Делитель);
		ОстатокДеления = ОстатокДеления % Делитель;			
	КонецЦикла; 
	
	Сообщить(РезультатДеления);

Показать
Оставьте свое сообщение

См. также

И тогда наверняка нас захватят облака Промо

Интеграция Бесплатно (free)

Внимание! Данный текст содержит достаточно мало технических подробностей и готовых рецептов. Главным образом некоторые размышления на предмет будущего технологий и профессий. Некое лёгкое чтение на досуге.

28.06.2019    9737    comol    36    

1С: Документооборот, Data Science и Python

Документооборот и делопроизводство Математика и алгоритмы ДО Бесплатно (free)

В статье рассказывается о создании и обучении модели Data Science на языке Python и интеграции с системой 1С: Документооборот

04.08.2020    912    Vaganov_Alexey    4    

Кто такой архитектор? Системный или функциональный? Статья 1

Конфигурирование 1С Проектирование Бесплатно (free)

В связи с повальным непониманием того, как устроен процесс разработки в сфере 1С и кто за что отвечает, будут написаны 8 статей. Это первая статья. Она очень актуальна, т.к. многие проектные команды не имеют архитектора, либо используют его не по назначению. В этой статье раскрываю роль архитектора и его значимость. Основываюсь на своём опыте (более 10 лет), также изучал статьи на эту тему от коллег и консультировался с руководителями крупных команд. В данной статье будут раскрыты следующие вопросы: 1. Кто такой архитектор? 2. Какие задачи выполняет архитектор? 3. Можно ли без него обойтись? 4. Чем отличается системный архитектор от функционального архитектора? 5. Кто главный: РП или архитектор? Кому подчиняется проектная команда?

30.06.2020    5110    biimmap    47    

Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика

Практика программирования Бесплатно (free)

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

29.06.2020    6544    WildHare    32    

Развитие 1С программиста Промо

Практика программирования Личная эффективность Бесплатно (free)

Делюсь своим опытом и видением развития 1С программиста.

17.10.2018    19990    pashamak    62    

Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория

Практика программирования Бесплатно (free)

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

22.06.2020    8108    WildHare    23    

Не спеша, эффективно и правильно – путь разработки. Часть 1. Парадигма

Практика программирования Бесплатно (free)

Черновой вариант книги Никиты Зайцева, a.k.a.WildHare. Разработкой на платформе 1С автор занимается с 1996-го года, специализация — большие и по-хорошему страшные системы. Квалификация “Эксперт”, несколько успешных проектов класса “сверхтяжелая”. Успешные проекты ЦКТП. Четыре года работал в самой “1С”, из них два с половиной архитектором и ведущим разработчиком облачной Технологии 1cFresh. Ну — и так далее. Не хвастовства ради, а понимания для. Текст написан не фантазером-теоретиком, а экспертом, у которого за плечами почти двадцать три года инженерной практики на больших проектах.

15.06.2020    12228    WildHare    34    

Как построить микросервисную инфраструктуру

Интеграция Бесплатно (free)

При росте информационных систем возникает потребность выноса определенной бизнес-логики в отдельное приложение для повышения отказоустойчивости и возможности одновременного использования этой функциональности в различных источниках. О том, как построить микросервисную инфраструктуру с использованием Apache Kafka в качестве шины данных, на конференции Infostart Event 2019 Inception рассказал разработчик группы компаний Автоград Дмитрий Маренин.

15.06.2020    4563    dmarenin    6    

Подмена заголовка 1С Промо

Универсальные функции Работа с интерфейсом Россия Бесплатно (free)

Подстановка имени базы данных в начало заголовка окон с программой 1С (конфигуратор и предприятие). Удобно при одновременной работе с большим количеством баз данных. Скрипт интересен будет как для программистов, так и для администраторов баз данных. Заголовок можно менять для любой программы, не только для 1С, для этого требуется немного исправить скрипт. Программисту 1С не составит труда переделать скрипт.

08.12.2018    10565    moolex    26    

Не программируй - вставляй и копируй. OAuth 2.0 авторизация API Google, получение токенов доступа (refresh и access token)

WEB Облачные сервисы, хостинг Бесплатно (free)

Без программирования, в несколько кликов - простой и быстрый способ трехногой авторизации по протоколу OAuth 2.0 в Google APIs. Получение refresh и первого access token для использования в HTTP-запросах из 1С к API Google. Для приложений типа "Компьютеры".

09.06.2020    2606    uno-c    0    

Как разработать Web приложение и остаться 1С-ником

WEB Бесплатно (free)

Создание современных веб-приложений обходится для бизнеса дорого и требует постоянной актуализации различных фреймворков, что не всегда оправданно. Как применить инженерный подход и предоставить бизнес-пользователям доступ к данным 1С в удобном и защищенном веб-приложении на конференции Infostart Event 2019 Inception рассказал руководитель управления ИТ компании WiseAdvice Олег Филиппов.

18.05.2020    11341    comol    86    

Учимся готовить кроликов с редиской: опыт применения Rabbit MQ и Redis в интеграционных проектах

Производительность и оптимизация (HighLoad) Интеграция Бесплатно (free)

При построении мощных производительных отказоустойчивых решений для интеграции во всем мире активно используются технологии обработки очередей сообщений с помощью брокера RabbitMQ и кэш-сервера Redis. О практическом опыте использования этих технологий при построении ИТ-ландшафта, включающего системы на 1С, на конференции Infostart Event 2019 Inception рассказал Сергей Наумов.

12.05.2020    4878    SergeyN    3    

Автоматизация магазина на Oracle Apex. Обзор аналога 1С Промо

Интеграция Розничная торговля Розничная торговля Бесплатно (free)

Как известно 1С - лидер в автоматизации учета в постсоветском пространстве. Есть ли достойные альтернативы (не дорогие, с возможностью конфигурирования, простые) ? Однозначно да ! Предлагаю Вашему вниманию обзор "буржуйской" технологии Oracle Apex

17.05.2013    59172    avhrst    295    

Визионное программирование

Практика программирования Бесплатно (free)

Новый способ программирования и его практическая демонстрация.

22.04.2020    4345    mkalimulin    111    

Как работает 1С размером 13 ТБ в условиях непрерывной разработки

Перенос данных из 1C8 в 1C8 Администрирование СУБД Бесплатно (free)

Обеспечение быстрого непрерывного обмена данными между высоконагруженными системами 1С, покрывающими всю территорию России, требует ответственного подхода к архитектуре и инструментам, используемым для обмена. Как правильно построить такую инфраструктуру и научиться ее оперативно мониторить, в своем докладе на конференции Infostart Event 2019 Inception рассказал разработчик компании «ДНС Ритейл» Максим Старков.

27.03.2020    11001    max_st    52    

Улучшение пооперационного планирования в 1С:ERP 2.4 внешними средствами

Математика и алгоритмы Производительность и оптимизация (HighLoad) Бесплатно (free)

Задача построения оптимального производственного расписания требует сравнения тысяч и десятков тысяч вариантов. Выполнять такие вычисления средствами платформы 1С Предприятие нецелесообразно. Как реализовать пооперационное планирование с использованием генетических алгоритмов и параллельных вычислений в докладе на конференции Infostart Event 2019 Inception рассказал генеральный директор компании «ИНТЕХ» Сергей Сафаров.

02.03.2020    4761    ildarovich    7    

Метод Кларка-Райта. Оптимальное планирование маршрутов грузоперевозок Промо

Математика и алгоритмы Бесплатно (free)

Одной из наиболее важных задач каждого предприятия, осуществляющего доставку грузов в крупных населенных пунктах, является сокращение издержек. Возможное решение данной проблемы заключается в сокращении пробега автотранспорта и, как следствие, уменьшении расхода ГСМ. Появляются такие вопросы ... - СКОЛЬКО НУЖНО МАШИН ДЛЯ РАЗВОЗКИ КОНКРЕТНОГО ОБЪЕМА ГРУЗА ПО АДРЕСАМ ДОСТАВКИ ? - КАК РАЗБИТЬ ТОЧКИ ДОСТАВКИ НА ОПТИМАЛЬНЫЕ ПО ПРОБЕГУ И ЗАГРУЗКЕ МАШИН МАРШРУТЫ ? ... В этой статье Вы найдете один из многих способов получить ответ на эти вопросы.

10.02.2016    59254    mi1man    20    

Использование машинного обучения для решения инцидентов. Практическое применение

Практика программирования Бесплатно (free)

Продолжаю (и заканчиваю) тему с автоматическим решением инцидентов. Перейдем от теории к практике.

25.02.2020    4061    Repich    9    

Технология разветвлённой разработки, использующая git, ci/cd

CI/CD Git (GitHub, GitLab, BitBucket) Методология управления разработкой EDT 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Адаптация и расширение требований к разветвлённой разработке с использованием git и ci/cd, основанное на стандартах 1С

24.02.2020    5506    check2    10    

Информер для сайта , актуальные релизы 1С + Проверка подписки ИТС. Промо

WEB Администрирование данных 1С Сервисные утилиты Бесплатно (free)

Небольшой код который встраивается на сайт и выводит информацию о последних релизах конфигураций 1С

12.09.2014    40691    Malfarion    34    

CI/CD для 1С проектов, унифицировано, с кастомизацией

CI/CD Инструментарий разработчика Бесплатно (free)

Тема CI/CD в связке с 1С не нова, но многих пугает сложность использования и поддержки, необходимость обучения команды. Про то, как унифицировать и упростить поддержку сборочных конвейеров для большого количества решений, в своем докладе на конференции Infostart Event 2019 Inception рассказал начальник отдела компании BIA-Technologies Валерий Максимов.

20.02.2020    5855    theshadowco    11    

О синхронизации ИБ с проектом в EDT

EDT Бесплатно (free)

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

19.02.2020    3436    check2    2    

Использование машинного обучения для решения инцидентов

Практика программирования Бесплатно (free)

История о том, как я с помощью машинного обучения сокращал затраты на техподдержку.

18.02.2020    6583    Repich    17    

Проставление большого количества галочек в активном окне винды Промо

Практика программирования Сервисные утилиты Инструментарий разработчика Россия Бесплатно (free)

Как проставить большое количество галочек подряд в любом окне винды

07.11.2010    30686    Boris-Leleko    9    

Гарантированный обмен 1С с внешними системами через сервер очередей Microsoft MSMQ

Внешние источники данных Бесплатно (free)

Описание решения задачи организации обмена 1С с внешними системами с условием гарантированной доставки сообщений и независимой поддержкой архивов сообщений. Быстрый ответ: сервер очередей Microsoft MSMQ.

09.02.2020    7152    da_1c    11    

Атака сервера кнопонажималкой

Нагрузочное тестирование Инструментарий разработчика Бесплатно (free)

Чтобы убедиться, что продукт выдержит планируемую нагрузку, необходимо провести нагрузочное тестирование – написать сценарии пользовательских действий и запустить их в несколько потоков, чтобы заранее найти проблемы в бизнес-логике и «узкие места». О том, как упростить написание сценариев тестирования для конфигурации Тест-центр с помощью фреймворка Vanessa Automation на конференции Infostart Event 2019 Inception рассказал ведущий программист компании «ПервыйБИТ» Никита Грызлов.

20.01.2020    5719    nixel    22    

Часовой на страже логов

Практика программирования Инструментарий разработчика Бесплатно (free)

При поддержке решений, которые установлены у большого количества пользователей на различных системах, очень важно вовремя получать подробную информацию о возникших проблемах. О том, как собирать логи и анализировать полученные данные в трекере ошибок Sentry на конференции Infostart Event 2019 Inception рассказал Андрей Крапивин.

13.01.2020    6234    Scorpion4eg    8    

Алгоритм “хвост змеи для заполнения прямоугольной области”. Промо

Практика программирования Бесплатно (free)

При разработке http://infostart.ru/public/275582/ столкнулся с необходимостью распределить выделенные задания на прямоугольную область календаря. В результате родился алгоритм, который может пригодиться не только мне и не только в этой задаче.

20.06.2014    27032    milkers    16    

Как программисту перейти с языка 1С Предприятие на Java

ООП Языки и среды Россия Бесплатно (free)

Как изучить язык Java, зная язык 1С.

06.01.2020    12875    ManyakRus    291    

Как управлять качеством кода 1С, используя платформу SonarQube

Рефакторинг и качество кода Инструментарий разработчика Бесплатно (free)

При быстром росте функциональности проводить визуальный Code-Review для обнаружения некачественного кода проблематично. О том, как автоматизировать проверку качества кода 1С с помощью платформы SonarQube на конференции Infostart Event 2019 Inception рассказал ведущий разработчик компании «Командор» Олег Тымко.

30.12.2019    8138    olegtymko    9    

Проброс IP-адреса клиента в http-сервис 1С. Реализация для IIS

WEB Администрирование веб-серверов IIS Бесплатно (free)

Настраиваем веб-сервер IIS для передачи в 1С IP-адреса клиента, вызвавшего http-сервис. Разбираемся с этим же вопросом при использовании фронтэнд вебсервера на примере nginx.

01.12.2019    6063    VKislitsin    9    

Предметно-ориентированное проектирование (3D) в 1С. Виртуальная машина. Промо

Математика и алгоритмы Бесплатно (free)

Проектирование программного обеспечения - это постоянная битва за простоту.

03.06.2014    40072    Evgen.Ponomarenko    88    

Создание промышленной системы для локализации решений на базе 1С

Локализация решений Бесплатно (free)

Статья для тех, кто занимается переводом и локализацией конфигураций, или поддержкой мультиязычных решений. В данной статье, хотелось бы поделиться опытом о том, что должно быть в таких системах, как лучше устроить перевод и т.д. Что, кстати, очень важно для разработчиков мобильных решений :)

28.11.2019    6266    DitriX    21    

Может ли оптическое распознавание текста (OCR) работать так же быстро, как сканирование штрих-кода, и что для этого надо сделать? UPD 11.12.19 вошло в релиз https://infostart.ru/public/1166378/

Мобильная разработка Бесплатно (free)

В статье рассматривается решение важной проблемы – сканирование объектов, на которые не нанесен или не может быть нанесен штрихкод или RFID по технологическим причинам, но при этом присутствует номер, артикул или какой-либо другой цифро-буквенный идентификатор. Т.е. распознавание текста с целью идентификации объектов учета. Приложено короткое видео с примерами работы. UPD: функции встроены в конструктор https://infostart.ru/public/1166378/

28.11.2019    4771    informa1555    37    

GitSync 3.0. Шпаргалка по использованию

Git (GitHub, GitLab, BitBucket) Бесплатно (free)

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

26.11.2019    7155    VKislitsin    32    

Из архивов Web-проектов: Основы теории цвета Промо

Работа с интерфейсом Бесплатно (free)

Казалось бы, все сделано по уму: и ТЗ адекватное, и программа написана в соответствии. А глаз не радует... Для тех кому знакома ситуация, кому важна гармония во всем, посвящается:

17.09.2013    24499    Evgen.Ponomarenko    13    

Swagger для 1С.

OneScript WEB Бесплатно (free)

Решение для формирования Swagger спецификаций, описывающих HTTP сервисы конфигураций 1С.

21.10.2019    11821    botokash    40    

Фреймворк для создания бизнес web-приложений

Прочие инструменты разработчика Бесплатно (free)

Для создания систем, решающих узкие бизнес задачи, использовать 1С бывает нецелесообразно. Хочу представить альтернативу - web фреймворк katejs. Будет интересно также тем, кто интересуется web разработкой на современном javascript.

15.10.2019    5086    nep_i    25    

Подбор оборудования для информационных систем на платформе 1С

Интеграция Производительность и оптимизация (HighLoad) Бесплатно (free)

При подборе оборудования по рекомендациям с сайта ИТС возникает противоречие: проводить ли нагрузочные тесты, чтобы определить возможную нагрузку, или достаточно просто взять данные из таблиц статистики? О том, какую тактику применить в том или ином случае, на конференции INFOSTART EVENT 2018 Education рассказал начальник отдела разработки компании IBS Филиппов Евгений.

09.09.2019    8855    jf2000    8    

Ускорение реструктуризации таблиц Промо

Инструментарий разработчика Администрирование данных 1С Тестирование и исправление Бесплатно (free)

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

12.09.2013    51545    OLEG4120    32    

Интеграция 1С с промышленным оборудованием

Интеграция Бесплатно (free)

Эффективность управленческой информации в производственном процессе зависит от данных, собираемых на нижних уровнях. Про автоматизацию получения этих данных с использованием технологии OPC (OLE for process control) на конференции Infostart Event 2018 Education рассказал Юрий Коноваленко.

06.09.2019    8673    user642664_yurkeshk    12    

Как должна выглядеть правильная интеграция. Использование Mule ESB и RabbitMQ с 1С

Интеграция Бесплатно (free)

Чем масштабнее проект, тем сложнее настроить все связи. Каждый решает эти проблемы по-своему: кто-то пользуется конвертацией, кто-то пользуется xml и json. Руководитель управления ИТ компании WiseAdvice Олег Филиппов рассказал, как можно применить такие инструменты, как Mule ESB и RabbitMQ.

02.09.2019    9598    comol    3    

Кодогенерация и метагенерация в 1С

Практика программирования Инструментарий разработчика Бесплатно (free)

В своем докладе на конференции INFOSTART EVENT 2018 EDUCATION Дмитрий Белозеров рассказал о разработке инструмента, позволяющего программно работать с метаданными 1С и писать скрипты для выполнения тех же действий, которые выполняет разработчик в конфигураторе –  с какими сложностями и нюансами пришлось столкнуться, и что получилось в итоге.

26.08.2019    8870    kirovsbis    28    

Внутреннее качество разработки конфигураций 1С Промо

Практика программирования Математика и алгоритмы Бесплатно (free)

Пиши с верой в то, что твой читатель - это маньяк с дробовиком, знающий твой домашний адрес. Размышления на тему внутреннего качества кода при разработке/доработках конфигураций 1С.

21.06.2013    37722    ig1082    50    

Отказ от использования хранилищ 1С, переход на Git.

Инструментарий разработчика Разработка Бесплатно (free)

Валерий Максимов в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION делится опытом перехода нескольких команд (более 100 разработчиков) от использования хранилищ 1С на системы контроля версий Git.

25.07.2019    10435    theshadowco    31    

Раскручиваем Гайку: разработка ПО для роботов на платформе 1С

Разработка Бесплатно (free)

Роботы на 1С стали реальностью. Их разработкой пока на общественных началах занимаются в компании «Цифровой кот». Насколько перспективно это направление, какие возникали сложности, и какая помощь коллег требуется, участникам конференции Infostart Event 2018 рассказал руководитель и ведущий разработчик компании - Юрий Лазаренко.

23.07.2019    7061    TitanLuchs    36    

Бизнес-аналитика с помощью Power BI

Интеграция Бесплатно (free)

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

11.07.2019    13131    pbazeliuk    19    

Горячие символы или новое это хорошо забытое старое. Промо

Практика программирования Бесплатно (free)

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

07.06.2013    26104    vasiliy_b    70    

Интеграция сценарного тестирования в процесс разработки

Практика программирования Инструментарий разработчика Бесплатно (free)

Разработчик системы «Тестер» Дмитрий Решитко в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION показывает, что процесс тестирования можно очень плотно интегрировать в процесс разработки, что внедрение тестирования – это возможность развития программиста как такового, позволяющая ему упорядочивать ход мыслей и оставаться «в фокусе». Навыки построения процесса кодирования на стыке с тестированием сокращают время на концентрацию, освобождают от страха перед изменениями и улучшают память разработчика.

08.07.2019    9000    grumagargler    7    

Управляй качеством кода 1С с помощью SonarQube

Практика программирования Россия Бесплатно (free)

Управляй техническом долгом проектов 1С с помощью SonarQube. В статье рассматривается пример применения SonarQube при разработке.

07.07.2019    37552    olegtymko    230    

Тестирование интеграций между системами

Интеграция Бесплатно (free)

Как начать разрабатывать интеграцию без реальной «второй стороны»? Как быть уверенным, что обмен не «сломается» при следующем обновлении? О том, какие подходы можно применять при тестировании интеграций и как такое тестирование может выглядеть в целом – в докладе Никиты Грызлова на конференции INFOSTART EVENT 2018 EDUCATION.

01.07.2019    10234    nixel    3