Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
0 / 1 / 0
Регистрация: 12.10.2018
Сообщений: 10

Сравнение методов доступа к данным класса

12.10.2018, 14:36. Показов 3873. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Изучаю С++. И маленький перфекционист внутри меня не даёт покоя. Допустим есть класс.В нем находится поле класса типа массив(data) и публичный метод для доступа к ячейке этого массива(getCell). Далее в классе нужен ПРИВАТНЫЙ метод для обработки строки массива, который проверяет некоторые ячейки в строке(isMyRow). Как в этом методе правильней(оптимальней) обращаться к ячейкам массива: c помощью метода getCell или с помощью индексации[].
По идее индексация оптимальней, так как не задействует стек. Так что скажете ? Или я всё таки ерундой занимаюсь, задавая такие глупые вопросы??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class MyClass{
private:
int data[3][3];
bool isMyRow(int row);
public:
int getCell(int x, int y);
 
};
 
 
...
 
 
bool  MyClass::isMyRow(int i){
//как надо?
//так?
return (data[row][0]==data[row][1] );
 
//или так?
// return getCell(row,0)==getCell(row,0);
 
}
P.S. Вообще стараюсь не задавать таких посредственных вопросов и указатели более менее понимаю. Но эти мелочи не дают покоя. И гуглил, но гугл молчит.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.10.2018, 14:36
Ответы с готовыми решениями:

Обьявление методов доступа к данным класса.
Не компилируется программа //Обьявление класса Cat. //Переменные-члены обьявляются закрытыми, а открытые методы доступа ...

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...

Сравнение скорости доступа к данным
Просто ужас берёт... http://www.rsdn.ru/article/db/DBSpeed.xml

49
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
15.10.2018, 14:43
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от hoggy Посмотреть сообщение
а теперь заново прочти #12
Прошу прощения, я подумал что ты там писал исключительно про вектор. Ты не понимаешь зачем вообще нужны проверки времени выполнения? Вот представь, пишем какой-нибудь интерпретатор. Криворукий пользователь передает невалидные аргументы в наш метод. Будем падать или ошибку ему выводить?
Ладно, хрен с ним с вектором. Пусть будет map. Как ты там внутри, допустим, метода добавления будешь обращаться к внутренним данным через публичные методы доступа?
И если класс делает чуть более, чем ничего - чуть менее, чем всегда во время полезной работы инвариантность нарушается. Но даже если и нет. В публичных методах доступа проверки на валидность аргументов чаще нужны, чем нет. В приватных - достаточно ассертов. И в этом принципиальная разница.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
15.10.2018, 15:57
Цитата Сообщение от avgoor Посмотреть сообщение
Прошу прощения, я подумал что ты там писал исключительно про вектор.
так и есть. к чему сейчас это вообще было сказано?

Цитата Сообщение от avgoor Посмотреть сообщение
Ты не понимаешь зачем вообще нужны проверки времени выполнения?
не только понимаю, зачем нужны проверки времени выполнения,
но ещё различаю проверки входных данных от пользователей,
от проверок на ошибки программистов.

а вот ты похоже нет.

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

Цитата Сообщение от avgoor Посмотреть сообщение
Как ты там внутри, допустим, метода добавления будешь обращаться к внутренним данным через публичные методы доступа?
я не распарсил фразообразование: "...метода добавления будешь обращаться...".
может быть здесь какая то опечатка.

в любом случае не вижу, какие у вас сложности с использованием map?
и чем принципиально vector отличается в этом контексте?

Цитата Сообщение от avgoor Посмотреть сообщение
И если класс делает чуть более, чем ничего
наверное, тогда он чуть менее, чем совсем не нужен?

Цитата Сообщение от avgoor Посмотреть сообщение
И если класс делает чуть более, чем ничего - чуть менее, чем всегда во время полезной работы инвариантность нарушается.
с фига?
приведите пример.

Цитата Сообщение от avgoor Посмотреть сообщение
В публичных методах доступа проверки на валидность аргументов чаще нужны, чем нет. В приватных - достаточно ассертов. И в этом принципиальная разница.
1.
всегда, если есть техническая возможность,
все входные аргументы в обязательном порядке
должны быть проверены на корректность.

и не важно: приватная там функция, или нет.


2.
как именно работать с ошибками (ассерты, эксепшены, коды, etc)
зависит от специфики ситуации.
и вообще никак не коррелирует с модификатором доступа (public/protected/private).

принципиальный вы наш.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
15.10.2018, 18:15
hoggy, Разговор вообще не про обработку нештатных ситуаций. Рассмотрим такой пример. Класс инкапсулирует матрицу. Задача: реализовать умножение матрицы на вектор. Наружу торчит метод доступа к элементам. Че тут думать-то реализуем в лоб. Вот только есть множество задач, где матрицы - огромные, но сильно разреженные. В рамках данного треда, допустим, что в среднем в строке 27 элементов. Иногда меньше, иногда больше. Будем ее всю хранить, или только ненулевые элементы?
Очевидно, ненулевые. Тогда метод доступа будет возвращать либо сам элемент, либо 0 в случае его отсутствия в строке. Какие вы здесь варианты видите кроме вышесказанного? А как умножать-то будем? за O(N^2)? А реально еще и доступ к элементу за log(M~27) (в силу множества причин для хранения строки подходит только сортированный вектор). Или все-таки пробежимся по ненулевым и умножим за O(N*M) ~ O(N)? Причем, выдавать наружу строку ненулевых - тоже геморрой, т.к. это обяжет нас хранить элементы и их индексы определенным, а самое главное неизменным образом. Или придется формировать строку, как это оговорено в интерфейсе с выделением памяти на каждой итерации.
И похожих случаев - море.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2018, 19:10
Цитата Сообщение от alexbez Посмотреть сообщение
Добрый день. Изучаю С++. И маленький перфекционист внутри меня не даёт покоя. Допустим есть класс.В нем находится поле класса типа массив(data) и публичный метод для доступа к ячейке этого массива(getCell). Далее в классе нужен ПРИВАТНЫЙ метод для обработки строки массива, который проверяет некоторые ячейки в строке(isMyRow). Как в этом методе правильней(оптимальней) обращаться к ячейкам массива: c помощью метода getCell или с помощью индексации[].
alexbez, приватные методы имеют доступ к приватным полям, по определению. Поэтому, вопрос "как правильно" - совершенно бессмысленен. Программист решает, что нужно а что нет. И правильно, - чтобы он был квалифицирован (уровень + интеллект, хотя это редко встречается порознь. Но бывает.).
Интересен ещё вот какой момент. Методы доступа бывают константными и ... (внезапно) не константными. Метод get как правило не возвращает ссылку (это можно, но медленно). То есть он вообще безопасен "как ромашка на лугу". Да и операторы индексного обращения могут быть как константными так и не константными. В последнем случае возвращается не константная ссылка. Для каждого из перечисленных вариантов - свой резон. И говорить об этом можно долго. Тут вон вокруг выхода за границы - война. А могут же быть инварианты (логические ограничения) и на сами значения в массиве.
Словом, - общего ответа нет (имхо), а конкретно вы не говорите. Моё мнение, - прямой доступ внутри класса это нормально, но некоторые проверки, если необходимо могут быть вынесены в методы, которые пользуют и паблики и приватные методы. Такое возможно, но не обязательно.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
15.10.2018, 19:23
Цитата Сообщение от avgoor Посмотреть сообщение
Разговор вообще не про обработку нештатных ситуаций.
верно.

Цитата Сообщение от avgoor Посмотреть сообщение
Будем ее всю хранить, или только ненулевые элементы?
возьмём готовый класс "разряженная матрица",
и заюзаем её паблик согласно документации.

Цитата Сообщение от avgoor Посмотреть сообщение
И похожих случаев - море.
мне не очевидно, в чем смысл вашей проблемы?
не знаете, как спроектировать практичный дизайн разряженной матрицы,
или что?

Добавлено через 35 секунд
Цитата Сообщение от IGPIGP Посмотреть сообщение
Метод get как правило не возвращает ссылку (это можно, но медленно)
вы ничего не перепутали?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2018, 19:27
Цитата Сообщение от hoggy Посмотреть сообщение
вы ничего не перепутали?
Нет. Геттеры обычно возвращают либо копию, либо константную ссылку. Для записи служат сеттеры. И спаниели.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
15.10.2018, 19:29
Цитата Сообщение от IGPIGP Посмотреть сообщение
Геттеры обычно возвращают либо копию, либо константную ссылку
Цитата Сообщение от IGPIGP Посмотреть сообщение
Метод get как правило не возвращает ссылку (это можно, но медленно)
а почему вы себе противоречите?
и почему считаете, что вернуть ссылку - это медленно?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2018, 19:38
Цитата Сообщение от hoggy Посмотреть сообщение
а почему вы себе противоречите?
где?
Цитата Сообщение от hoggy Посмотреть сообщение
и почему считаете, что вернуть ссылку - это медленно?
Это не я. Не константную ссылку с проверкой значения нельзя вернуть быстро. Это делается, например через прокси-класс используя оператор приведения ().
А если геттер возвращает не константную ссылку бесхитростно, то весь разговор - не о чём. Хуже бомбы для инкапсуляции трудно представить. В прошлом году, на одном проекте, я изучая ключевые компоненты увидел как в одном классе геттер возвращает ссылку на мапу, которая протектед и есть-таки инварианты... Люди посмотрели и офанарели. Но потом, оказалось, что сделать правильно - переписать кучу всего. Гуру которые начинали всё, говорят, что очень торопились. Так что жизнь и теория идут рядом.
И смотрят друг на друга дикими глазами.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
15.10.2018, 19:55
Цитата Сообщение от IGPIGP Посмотреть сообщение
Не константную ссылку с проверкой значения нельзя вернуть быстро
что тут такого долгого?
C++
1
2
decltype(auto) some::get()
{  return this->m_object; }
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это делается, например через прокси-класс используя оператор приведения
нормальные люди так не делают.
вертают бесхитростно.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Хуже бомбы для инкапсуляции трудно представить.
инкапсуляция при этом вообще никак не страдает,
и пострадать не может.

Цитата Сообщение от IGPIGP Посмотреть сообщение
я изучая ключевые компоненты увидел как в одном классе геттер возвращает ссылку на мапу, которая протектед и есть-таки инварианты...
и в чем проблема?
как то инвариант нарушается?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2018, 20:02
Цитата Сообщение от hoggy Посмотреть сообщение
нормальные люди так не делают.
Страуструп приводит в качестве примера.
Хороший программист как и хороший художник не может быть вровень с нормой.
Цитата Сообщение от hoggy Посмотреть сообщение
и в чем проблема?
как то инвариант нарушается?
Проблема в том, что затрачено куча усилий чтобы обернуть методы доступа. То есть, не insert ни erase и пр. нельзя сделать напрямую. Данные проверяются.
И вдруг, - неконстантная ссылка на map которую так оберегали...
Но вначале, как и Вы, многие не поняли, что меня смущает. То есть, ненормальных-таки маловато.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
15.10.2018, 20:04
Цитата Сообщение от IGPIGP Посмотреть сообщение
И вдруг - неконстантная ссылка на map которую так оберегали.
так и проблема то в чем?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2018, 20:09
Цитата Сообщение от hoggy Посмотреть сообщение
так и проблема то в чем?
Издеваетесь?
C++
1
std::map<std::string, hzChavoIndex> & getHZChavoIndexes(){return m_hzchavoIndexes;}
m_hzchavoIndexes - объявлен в закрытой части. Есть поддержка инкапсуляции (см. выше). Если так непонятно то не знаю как ещё сказать.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
15.10.2018, 20:16
Цитата Сообщение от hoggy Посмотреть сообщение
возьмём готовый класс "разряженная матрица",
и заюзаем её паблик согласно документации.
Тогда из какой области пример привести, чтоб не услышать в ответ: "возьмите готовое"?
Цитата Сообщение от hoggy Посмотреть сообщение
мне не очевидно, в чем смысл вашей проблемы?
не знаете, как спроектировать практичный дизайн разряженной матрицы,
или что?
Смысл примера не понятен?
Или считаете, что у интерфейса всегда должна быть только одна реализация? А чем вообще отличаются разные реализации одного интерфейса? Чем-то должны ведь. Иначе зачем их больше одной? Все-таки, наверное, одна реализация делает что-то лучше, чем другая. А что-то - хуже. Доступ к данным может быть одной из таких вещей. Зная, что доступ к данным - дорогой все равно будем требовать использовать его во внутренних методах? Зная, что есть быстрый и удобный способ, но интерфейс его не предполагает.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2018, 20:24
avgoor, я вообще не понимаю о чём речь. Можно иметь нужду в доступе на запись и не нуждаться в проверке. Операторы присваивания для экземпляров, конструкторы копирования... Там нужны сеттеры с проверками? Паранойя. (имхо)
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
15.10.2018, 20:45
IGPIGP, Я думаю, там отстаивается идея об однообразном доступе к данным. Но однообразность нужна для однообразных вещей. А внутренний и внешний доступ - вещи не однообразные.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2018, 21:00
Цитата Сообщение от avgoor Посмотреть сообщение
IGPIGP, Я думаю, там отстаивается идея об однообразном доступе к данным. Но однообразность нужна для однообразных вещей. А внутренний и внешний доступ - вещи не однообразные.
Но вот сказал же человек:
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Если рассматривать общий случай, то я бы с осторожностью вызывал публичные методы изнутри других методов класса. Мотивировать это можно тем, что вызов публичного метода должен сохранять инвариант для данного объекта, т.е. переводить его из одного корректного с точки зрения программиста состояния в другое корректное состояние.
Представим класс треугольник : поля double a, b, c; - стороны. Пусть сеттер проверяет условие: устанавливаемое значение не больше суммы остальных. А теперь давайте посчитаем сколько шагов нужно для того чтобы от треугольника 1, 1, 1 перейти к треугольнику 1000, 1000, 1000 ?
Это можно сделать, не нарушая инвариант.
Сначала a=2 (2<=1+1)
Потом b=3 (3<=2+1)
и т.д.
Меня как физика инженера, математики удивляют тем, что они скорее, с лёгкостью кинутся считать "а сколько шагов потребуется...", чем захотят представить происходящее и спросить себя, - а надо ли оно, вообще.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.10.2018, 12:02
Цитата Сообщение от avgoor Посмотреть сообщение
Тогда из какой области пример привести, чтоб не услышать в ответ: "возьмите готовое"?
возьмите не готовое.
составьте пример-иллюстрацию,
которая проиллюстрирует проблему.
затем уже можно будет подумать о решениях.

Цитата Сообщение от avgoor Посмотреть сообщение
Смысл примера не понятен?
не вижу никаких проблем.

Цитата Сообщение от avgoor Посмотреть сообщение
Или считаете, что у интерфейса всегда должна быть только одна реализация?
а это вообще вы с чего взяли?
как вообще такой вопрос мог возникнуть?

Цитата Сообщение от avgoor Посмотреть сообщение
Зная, что доступ к данным - дорогой все равно будем требовать использовать его во внутренних методах?
да. обязательно.

Цитата Сообщение от avgoor Посмотреть сообщение
Зная, что есть быстрый и удобный способ, но интерфейс его не предполагает.
приведите примеры-иллюстрации обоих вариантов.
и тогда сразу придет понимание сабжа.

Добавлено через 20 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Издеваетесь?
ничуть.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Если так непонятно то не знаю как ещё сказать.
мне не понятно, зачем вы слили данные наружу.

я вам другой пример покажу:
C++
1
2
3
std::vector<int> vec {1,2,3};
int& ref = vac[0];
ref = 333;;
вектор специально сливает элементы наружу,
именно для того, что бы снаружи их невозобранно можно было бы модифицировать.
ну вот он слил. и как это нарушает инкапсуляцию/инвариант самого вектора?

я к тому, что сама по себе надобность выдавать наружу мутабельную ссылку
должна быть чем то обоснованна.
из вашего примера не понятно: зачем вы поле класса наружу слили?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.10.2018, 20:04
Цитата Сообщение от hoggy Посмотреть сообщение
мне не понятно, зачем вы слили данные наружу.
Опять издеваетесь? hoggy, почему вы рассчитываете, что я буду вас читать, если не в силах вникнуть в то что я написал.
Смотрите:
Цитата Сообщение от IGPIGP Посмотреть сообщение
В прошлом году, на одном проекте, я изучая ключевые компоненты увидел как в одном классе геттер возвращает ссылку на мапу
То есть, я не сливал и я был удивлён. Вы ничего не поняли и
Цитата Сообщение от hoggy Посмотреть сообщение
Цитата Сообщение от IGPIGP Посмотреть сообщение
Цитата Сообщение от IGPIGP
я изучая ключевые компоненты увидел как в одном классе геттер возвращает ссылку на мапу, которая протектед и есть-таки инварианты...
и в чем проблема?
как то инвариант нарушается?
а теперь, оказывается вы удивлены:
Цитата Сообщение от hoggy Посмотреть сообщение
мне не понятно, зачем вы слили данные наружу.
hoggy, давайте не превращать обсуждение в балаган.
nonedark2008 написал первым всё что нужно и вы, упорствуя, проявляете незавидные качества. Что касается оператора индексного обращения, то в неконстантной реализации он и так возвращает ссылку. На неё можно установить кучу ссылок, но зачем? Если оператор написан как интерфейс, то он уже даёт доступ к данным по ссылке. И если он реализовывает проверки инварианта, то он мало пригоден для внутреннего использования.
Пример про соблюдение инварианта в "треугольнике":
Сравнение методов доступа к данным класса
не убедил?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.10.2018, 21:08
IGPIGP, пример с треугольником не то, что бы не удивил, а вообще не понятно,что должен был проиллюстрировать
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.10.2018, 21:32
hoggy, вы не изменяете себе:
Цитата Сообщение от hoggy Посмотреть сообщение
не только понимаю, зачем нужны проверки
Цитата Сообщение от hoggy Посмотреть сообщение
а почему вы
Цитата Сообщение от hoggy Посмотреть сообщение
и почему
Цитата Сообщение от hoggy Посмотреть сообщение
и в чем проблема?
Цитата Сообщение от hoggy Посмотреть сообщение
так и проблема то в чем?
Цитата Сообщение от hoggy Посмотреть сообщение
а это вообще вы с чего взяли
Цитата Сообщение от hoggy Посмотреть сообщение
мне не понятно, зачем
Цитата Сообщение от hoggy Посмотреть сообщение
а вообще не понятно,что должен был проиллюстрировать
написано достаточно и есть люди которые поняли.

Добавлено через 2 минуты
alexbez, не волнуйтесь. Смотрите и изучайте. В мире программеров, это всё случается досчтаточно часто.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2018, 21:32

Напишите реализацию методов, предоставляющих доступ к данным класса
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...

Почему дружественная функция с перегруженным оператором << не имеет доступа к данным класса?
В заголовочном файле &quot;klass.h&quot; есть класс: class klass { int x; public: klass(); ~klass(); void show(); friend void...

Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только создание объектов и вызов методов
Всем привет) помогите пожалуйста с заданием &quot;Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только...

Treeview описание методов работы с данным элементом
Есть ли у кого-нибудь описание на русском языке по работе с treeview? или работающего примера на vba

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru