
Pavel
30.08.2017
09:19:14
вот тогда заживем

Дед Пегас
30.08.2017
09:19:34
Уже

Антон
30.08.2017
09:19:38
pro.cmake

Google

Дед Пегас
30.08.2017
09:20:15
Ну шмейк это онтоп тут)
Просто pro.programming может в себя встянуть supapro.cxx, я думаю...

Pavel
30.08.2017
09:22:10
а если я хочу спросить мнения про архитектуру проекта у с++ программистов а не у веб-жс-фронтент-гуру-нинзя программистов?
научились блин каналы делать

Дед Пегас
30.08.2017
09:22:33
Не думаю, что js там у нас будут обитаться...

Pavel
30.08.2017
09:22:40
больше каналов богу каналов

Дед Пегас
30.08.2017
09:22:48
Ты сейчас Алекса призовёшь)
Не, смотри, в этом чате народ хочет обсуждать про плюсы и около с некоторым эпсилон и чтобы не теряться во фуде
Если pro.programming приживётся, будет ощ годно.
Не приживётся, ну и член с ним.)
флуде*
Вот только попробуй.

Matwey
30.08.2017
09:24:39
по-моему сейчас будет реклама

Google

Ilia
30.08.2017
09:25:12
Ребят, сегодня посетила идея, что если расписывать структуру программы заранее, то это упростит разработку, т.к. не будешь тратить время на ненужные вещи, а делать только то, что нужно. Сейчас я делаю так: начинаю тупо писать, и придумываю решения на ходу. Какие подводные у такого подхода, с созданием архитектуры заранее?
Какие подводные камни ? Никаких, кроме одного: если ты спроектируешь архитектуру заранее и неправильно, то ты зря потратил время.

Pavel
30.08.2017
09:25:25
ктото усиленно обсуждал вопросы про с++ и тут внезапно вылез вопрос про архитектуру?

Ilia
30.08.2017
09:27:28
просто если есть ТЗ, то можно ведь продумать архитектуру заранее
Даже с ТЗ можно придумать архитектуру неверно.
Например, когда в ТЗ всё правильно написано, но ты (т.е. архитектор) не знает какие-то технические детали реализации, средств, которые будут использоваться и т.п.
В результате может появится неверная архитектура.

Дед Пегас
30.08.2017
09:27:46
Для адекватной архитектуры нужен прототип)

Pavel
30.08.2017
09:28:42
у меня один знакомый всегда говорил — программа пишется в два этапа. сначала пишешь, отлаживаешь, проверяшь. а потом всё стриаешь и пишешь заново

Ilia
30.08.2017
09:28:54
Даже с ТЗ можно придумать архитектуру неверно.
Например, когда в ТЗ всё правильно написано, но ты (т.е. архитектор) не знает какие-то технические детали реализации, средств, которые будут использоваться и т.п.
В результате может появится неверная архитектура.
Например, простая задача, есть сервер, пользователю надо дать выбрать файл и скачать его.
Ну, как бы список файлов, нажал — получил скаченное. Вроде всё просто и ясно.
Далее выясняется, что это - HTTP сервер. Ну и всё, всё надо переделывать ?

Pavel
30.08.2017
09:31:04
помоему это с опытом приходит. чем больше опыта тем быстрее и проще продумывается основной скелет программы. где какие потоки чего читают, куда передают и т.п.
а просто садиться и писать это раз 10 будешь переписывать потом

Matwey
30.08.2017
09:32:12
А есть еще такое понятие как data-driven development...

Ilia
30.08.2017
09:32:14

Pavel
30.08.2017
09:33:47

Дед Пегас
30.08.2017
09:34:12
Что значит "просто программисту"?

Ilia
30.08.2017
09:34:13
С++ программисту все технологии близки.

Дед Пегас
30.08.2017
09:34:23
И чем просто программист оличается от С++ программиста?
Первый программирует на ЯП "Просто"?

Pavel
30.08.2017
09:34:42

Ilia
30.08.2017
09:34:48
Может быт это QT-программа мобильная игра, а может быть это — краулер сайтов. Оба на С++. Наверное, есть разница, как это проектировать

Pavel
30.08.2017
09:35:37
а никто и не спрашивал про как конкретно. он же спросил про то какие подходы есть
когда я сажусь чтонибудь писать я представляю хоть немного архитектуру. и я вполне осознаю, что лет 5 назад я не мог в той же степени её осознавать когда садился чтонибудь писать

Google

Pavel
30.08.2017
09:36:40
вот и всё. а вы мне можете рассказать про data-driven-development если хотите :)
а если спрашивать подобное у "среднестатискстического программиста" я боюсь будет много нытья по поводу "ТЗ поменяли теперь вместо двух кнопок на форме у меня три кнопки, всё переделывать надо хнык хнык"
ладно, ладно, шучу я

Дед Пегас
30.08.2017
09:38:39
Это невполне верно.)

Pavel
30.08.2017
09:39:02
а я и не претендую на абсолютную истину
когда всё верно и разложено по полочкам (каналам), то так несколько скучно )

Berkus
30.08.2017
09:53:46
тесты - это практически спецификация от заказчика как оно должно выглядеть и работать


Eugene
30.08.2017
11:02:10
Подскажите, есть ли элегантное решение такой задачи:
Есть класс:
template <typename TPixel, unsigned int Dimension>
class Calculator :
public CalculatorBase<Image<TPixel, Dimension>>
{
// много всего
void Calculate() override;
};
Весь код выполняется в методе Calculate и для разных Dimension этот код различается. Мне нужно специализировать этот класс на Dimension == 2 и Dimension == 3. Как сделать это наиболее компактно?

Ilia
30.08.2017
11:04:12
#Gof:Visitor ?
Ну или чёрная шаблонная магия...
Надо смотреть, что у тебя будет одинаковое, а что разное в зависимости от Dimension


Eugene
30.08.2017
11:12:01
Всё одинаковое, все шаблонные кишки из CalculatorBase. Но вот расчёт для 3D должен использовать 2D. Поэтому для 2D и 3D должна быть разная реализация. И как это частично специализировать я пока не понимаю, кроме как дублировать всё остальное, типа:
template <typename TPixel, unsigned int Dimension>
class Calculator :
public CalculatorBase<Image<TPixel, Dimension>>
{
};
template <typename TPixel>
class Calculator<TPixel, 2U> :
public CalculatorBase<Image<TPixel, 2U>>
{
// много всего
void Calculate() override;
};
template <typename TPixel>
class Calculator<TPixel, 3U> :
public CalculatorBase<Image<TPixel, 3U>>
{
// много всего
void Calculate() override;
};
И мне это совсем не нравится. Я не великий знаток шаблонной магии C++.
Если выражаться по простому, надо специализировать только один метод по одному параметру, а всё остальное оставить как есть. Есть подозрение, что так нельзя.


Pavel
30.08.2017
11:34:49
почему подозрение
https://stackoverflow.com/questions/10284498/partial-specialization-of-a-method-in-a-templated-class

Eugene
30.08.2017
11:36:29
Да, я читал.
Короче, сейчас я сделал так (подробности опущены):
template <...>
class Base : public CalculatorBase<...>
{
// много всего
};
template <...>
class Calculator : public Base<...>
{
};
template <typename TPixel>
class Calculator<TPixel, 2U> : public Base<TPixel, 2U>
{
// что-то ещё
void Calculate() override;
};
template <typename TPixel>
class Calculator<TPixel, 3U> : public Base<TPixel, 3U>
{
// что-то ещё (дублирование кода)
void Calculate() override;
};
Что-то всё равно пришлось продублировать, но меньше.

Evgeniy
30.08.2017
11:44:17

Eugene
30.08.2017
11:44:30
Это C++17?

Google

Evgeniy
30.08.2017
11:44:58

Berkus
30.08.2017
11:45:03
> (дублирование кода)
вынеси его в base и не будет дублирования

Alexander
30.08.2017
11:45:04

Eugene
30.08.2017
11:45:46
Не прокатит, проект должен собираться без поддержки фич из C++17.

Alexander
30.08.2017
11:46:33

Eugene
30.08.2017
11:47:26
Насколько я видел, в конфигурации CMake прописан C++11. Также студия 2013
Проект большой, у меня лишь малая часть всего кода есть.

Matwey
30.08.2017
12:00:25
unsigned char *buf;
int rv;
buf = kmalloc(1, GFP_KERNEL);
if (!buf)
return -ENOMEM;
Рубрика "ужосы нашего городка"

Admin
ERROR: S client not available

Pavel
30.08.2017
12:01:06
вот ровно 1?

Eugene
30.08.2017
12:01:41

Matwey
30.08.2017
12:01:55

Vladislav
30.08.2017
12:02:06

Matwey
30.08.2017
12:02:28
Тут недавно просто рассказывали, что Торвальдс плохого не напишет

Pavel
30.08.2017
12:04:14
нууу. а с чего ты взял что в usb_control_msg можно передавать указатель на стек?

Vladislav
30.08.2017
12:04:18
можно конечно было заранее для таймера выделить, но why bother (c)

Berkus
30.08.2017
12:05:08
он только обсирает тех кто писал, громко и в мейлинг листе

Google

Matwey
30.08.2017
12:05:20

Pavel
30.08.2017
12:05:33
Alan Cox это был
в 2009 году. не гоните, кокс тоже няшка.

Vladislav
30.08.2017
12:05:58

Matwey
30.08.2017
12:06:27

Vladislav
30.08.2017
12:06:41
путаешь

Pavel
30.08.2017
12:08:26
include/linux/usb.h:1367
про transfer_buffer. тот байт как раз там и заканчивает

Berkus
30.08.2017
12:09:08
и его прямо обязательно kmalloc-ать?
или это какой-то буфер который шарится потом с клиентом

Pavel
30.08.2017
12:09:46
с железкой
будет плохо если он будет на стеке же

Berkus
30.08.2017
12:10:09
если асинхронно то плохо, если синхронно - не вижу разницы

Vladislav
30.08.2017
12:10:12
не везде, но лучше пусть этим dma_map заведует

Pavel
30.08.2017
12:10:13
хотя я в этом не разбираюсь совсем )
синхронное дма?
хм

Vladislav
30.08.2017
12:10:59

Berkus
30.08.2017
12:11:13

Matwey
30.08.2017
12:12:20