Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Вопрос к тестировщикам

5427   5 6 7 8 9 10 11 12 13 14 15 все
Программист коренной житель14.08.19 13:16
NEW 14.08.19 13:16 
в ответ Murr 14.08.19 11:03
пока они бегают - прожка должна продолжать работать.

С двумя-то одинаковыми ИП в сети?


А чего мне удивлятся - это твои требования.

Опять придумываешь.


ехцептион катчится и давится

мда...


У меня как раз проблем нет.

Так что же ты тогда тут заливаешь об ошибках каких-то?

открой стредствами винды (не ДотНета) на каждом уровне по сокету

опять на ходу требования уточняем? :)

В любом случае, есть IDisposable и using ими можео гарантировать освобождение ресурсов.


Murr патриот14.08.19 15:22
Murr
NEW 14.08.19 15:22 
в ответ Программист 14.08.19 13:16

С двумя-то одинаковыми ИП в сети?

------

И что такого? Ну сбоит сеть... фига... завод должен продолжать работать... пока не устранят...

Или до тебя только сейчас начинает доходить, что в этой ситуации вообще можно продолжать работать? спок



Так что же ты

-----

Ну Я вообще-то тебя спросил и ты ответил - будешь вылизывать сокет и клиентский код.

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

Ну да ладно - для тебя, сидящего на сокете и не интересующегося окружением, это слишком сложно...


опять на ходу требования уточняем? :)

-----

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



есть IDisposable и using ими можео гарантировать освобождение ресурсов.

-----

Правда? У сокетного (не ДотНет, а ВинАпи) хендла есть IDisposable?

Может у него еще и IUnknown для комплекта в наличии? Тогда и до диспозабла добраться не проблема... смущ

Нее, лучше уж отправить тебя сравнивать 10(левое и 10(правое) - там ты хоть понимаешь с чем рабоатешь...

Программист коренной житель14.08.19 15:45
NEW 14.08.19 15:45 
в ответ Murr 14.08.19 15:22
Или до тебя только сейчас начинает доходить, что в этой ситуации вообще можно продолжать работать? спок

Так завод и работает. В чем проблема?


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

Насколько я помню, сокет - это пара из IP адреса и порта, т.е. сокет - это понятие из IP-протокола. Таким образом, фраза "доставить что-то на сокет по протоколу ZigBee" не имеет смысла.


Ну да ладно - для тебя, сидящего на сокете и не интересующегося окружением, это слишком сложно...

Ага, зато если послушать тебя, съевшего собаку на ZigBee, то получается, что устройства ZigBee несут в себе опасность для всего мира. И хакеры должны выстраиваться в очередь за этим волшебным железом :) А что? Подключился к сети и трындец - все программы (кроме твоей конечно) сдохли. Кррррасота :)


У сокетного (не ДотНет, а ВинАпи) хендла есть IDisposable?

У .Net'ого есть. Если по какой-то причине .Net'й сокет использовать нельзя, а можно только ВинАпи, то всегда можно обернуть сокет ВинАпи враппером и реализовать IDisposable.

Враппер, кстати, сделает использование ВинАпишного сокета тестируемым :) Так что одни сплошные плюсы.

Murr патриот15.08.19 09:51
Murr
NEW 15.08.19 09:51 
в ответ Программист 14.08.19 15:45

Насколько я помню, сокет - это пара из IP адреса и порта

-----

Плоховато у тебя с сокетами.

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

Если тебе задать вопрос - как на одной паре ИП+порт будут работать несколько подключений - ответа у тебя не будет.

Может все же надо внимательно изучать окружение?


фраза "доставить что-то на сокет по протоколу ZigBee" не имеет смысла.

------

Ну, во-первых, фразу ты синтезировл самостоятельно.

А во-вторых - фраза таки имеет смысл, если смотреть на систему в целом, а не только на сокет.



ZigBee несут в себе опасность для всего мира

------

И не просто опасность, а сертифицированную опасность. Очень страшно....



можно обернуть

------

Да-да... особенно - в чужем коде и особенно для нелюбителей изучать окиружение...

Программист коренной житель16.08.19 09:20
NEW 16.08.19 09:20 
в ответ Murr 15.08.19 09:51
Если тебе задать вопрос - как на одной паре ИП+порт будут работать несколько подключений - ответа у тебя не будет.

От сюда следует, что ответ будет у тебя :D Ну давай, рассказывай.


Может все же надо внимательно изучать окружение?

Нафига мне твое окружение? :)


Ну, во-первых, фразу ты синтезировл самостоятельно.

Твоя фраза:

Ну а в ZigBee на возможность доставить команду на устройство сокет

Сокет - это термин из мира IP, ZigBee - с IP никак не пересекается. Соответственно переслать что-то по протоколу ZigBee на сокет нельзя. При этом наверняка есть устройства, которые работают "мостами"/"шлюзами" между ZigBee и IP, но это уже другая тема. И если у тебя эти устройства глючат, то это проблема этих устройств, но никак не клиентского софта.


А во-вторых - фраза таки имеет смысл, если смотреть на систему в целом, а не только на сокет.

На колу мочало, начинай сначала.


Да-да... особенно - в чужем коде и особенно для нелюбителей изучать окиружение...

:) Красота! Каждый раз что-то новенькое :) То нельзя использовать .Нет, теперь вот код еще чужой :)

Ладно, открою тебе великую тайну - сокеты в ВинАпи - это тоже "чужой код" и, как нетрудно догадаться, любой "чужой код" можно обернуть враппером.

Murr патриот16.08.19 10:37
Murr
NEW 16.08.19 10:37 
в ответ Программист 16.08.19 09:20

Ну давай, рассказывай.

----

Ох, ты-жжж...

Никак просишь рассказать тебе об том, что для тебя явлается окружением которое изучать не нужно и вредно...

Неее, не буду тебе вредить... просто скажу что внутренний идентификатор сокета гораздо длиннее ИП+порт.


И если у тебя эти устройства глючат, то это проблема этих устройств, но никак не клиентского софта.

------

Ну вот и будешь это рассказывать заказчику на предмет - Какого Хрена Оно Не Работает?


любой "чужой код" можно обернуть враппером

-----

Делай. Чужой код - класс А. Если не нравится - могу его статиком сделать.


internal class A

{

public delegate Boolean CheckRecursionCondition();

public event CheckRecursionCondition Condition;

public void Recursion()

{

AllocateResouce();

if (Condition())

{

Recursion();

}

DeallocateResouce();

}

private void AllocateResouce() { }

private void DeallocateResouce() { }

}

internal class B

{

A a;

public B()

{

a = new A();

a.Condition += ConditionChecker;

}

static int count = 0;

private static Boolean ConditionChecker()

{

if (count > 20)

throw new Exception("Dummy");
++count;

return true;

}

public static void Runner()

{

B b = new B();

b.a.Recursion();

}

}




это уже другая тема.

-----

А заказчику как-то до лампочки какая этё тема - не работает - это он видит...

И когда в следующий раз упомянешь другую тему, то, плс, упомяни и другое сертифицированное оборудование... а то как-то смурно - тема - другая, а железяки - те же...

Программист коренной житель16.08.19 11:50
NEW 16.08.19 11:50 
в ответ Murr 16.08.19 10:37
Никак просишь рассказать тебе об том, что для тебя явлается окружением которое изучать не нужно и вредно...

На кой фиг мне сдалось твое окружение? :)


просто скажу что внутренний идентификатор сокета гораздо длиннее ИП+порт.

Какой нахрен "внутренний идентификатор" сокета? Ты вообще о чем?


Ну вот и будешь это рассказывать заказчику на предмет - Какого Хрена Оно Не Работает?

Нет, не буду. Я просто скажу ему, что проблема не в моем софте. А уже после этого можно будет начать разговоры о возможных путях решения проблемы.


Чужой код - класс А.

Это интернал-то? :)


 public interface IA
{
   public event CheckRecursionCondition Condition;
   public void Recursion();
}
public class Wrapper_A : IA
{
   private A a = null;
   public Wrapper_A ()
   {
     a = new A ();
     a.Condition += ConditionChecker;
   }
   private Boolean ConditionChecker()
   {
     try
     {
       if (Condition != null)
          return Condition ();

       return false;
     }
     catch
     {
         return false;
     }
   }
   public event CheckRecursionCondition Condition;
   public void Recursion()
   {
      A.Recursion ();
   }
}


Ну и использование:

 internal class B
{
  public IA a {get; private set; }
  public B(IA a)
  {
    this.a = a;
    a.Condition += ConditionChecker;

  }

  static int count = 0;

  private static Boolean ConditionChecker()
  {
     if (count > 20)
        throw new Exception("Dummy");
     ++count;

     return true;
  }
}

public static void Runner()
{
   B b = new B(new Wrapper_A());
   b.a.Recursion();
}


Как-то так.


А заказчику как-то до лампочки какая этё тема - не работает - это он видит...

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

Murr патриот16.08.19 12:34
Murr
NEW 16.08.19 12:34 
в ответ Программист 16.08.19 11:50

А уже после этого можно будет начать разговоры о...

-----

...где найти другого дурака готового расстаться с деньгами на разработку.


Как-то так.

-----

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


Murr патриот16.08.19 12:40
Murr
NEW 16.08.19 12:40 
в ответ Программист 16.08.19 11:50

Я не могу отвечать за работу других компонентов.

-----

Тебе не за это надо отвечать, а за работоспособность системы в целом, со всеми железками и деревяшками.

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

Не можешь, не умеешь, не хочешь - свободен...

Программист коренной житель16.08.19 13:00
NEW 16.08.19 13:00 
в ответ Murr 16.08.19 12:34
выход из рекурсии посредством эхцептиона...

За выход из рекурсии отвечает ConditionChecker.

Murr патриот16.08.19 17:20
Murr
NEW 16.08.19 17:20 
в ответ Программист 16.08.19 13:00

За выход из рекурсии отвечает ConditionChecker.

-----

А вопрос был - будешь ли ты использовать ехцептион для выхода из вложенных циклов или рекурсии...

Ну а ответ ты знаешь...

AlexNek патриот16.08.19 19:39
AlexNek
NEW 16.08.19 19:39 
в ответ Murr 16.08.19 17:20
будешь ли ты использовать ехцептион для выхода из вложенных циклов или рекурсии.

Чёт я начало пропустил - кому руки то отрывать? смущ

Murr патриот16.08.19 20:55
Murr
NEW 16.08.19 20:55 
в ответ AlexNek 16.08.19 19:39

Руки не надо - токма пальцы какими в кнопарики давють.,

AlexNek патриот17.08.19 18:28
AlexNek
NEW 17.08.19 18:28 
в ответ Murr 16.08.19 20:55

ломит в больницу ехать, да и что с такого возьмешь спок

Программист коренной житель19.08.19 09:29
NEW 19.08.19 09:29 
в ответ Murr 16.08.19 17:20
будешь ли ты использовать ехцептион для выхода из вложенных циклов или рекурсии...

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

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

Murr патриот19.08.19 12:22
Murr
NEW 19.08.19 12:22 
в ответ Программист 19.08.19 09:29
это вполне себе нормальный способ.

-----

Ну а с этим кто-то спорит?

Повторюсь - был задана вопрос - А? - на что было отвечено - Да.

По факту было сделано - Нет.

Об нормальности и ненормальнности методики сейчас не говорим.


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

Murr патриот19.08.19 12:23
Murr
NEW 19.08.19 12:23 
в ответ AlexNek 17.08.19 18:28

Ну да - прогер без пальцов и без глазов - это крутой прогер... особенно - если хорошо проварить...

Программист коренной житель19.08.19 15:15
NEW 19.08.19 15:15 
в ответ Murr 19.08.19 12:22
Ну а с этим кто-то спорит?
Ну Я надеюсь, что ты не пользуешься исключениями как способом управления работой прожки

Ну т.е. вызодить из цикла и/или рекурсии по исключению - это нормально и никаких проблем с этим нет. Или как?


Повторюсь - был задана вопрос - А? - на что было отвечено - Да.
По факту было сделано - Нет.

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

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


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


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

Конечно! Писать говно код вообще не очень трудно :)

AlexNek патриот19.08.19 19:13
AlexNek
NEW 19.08.19 19:13 
в ответ Программист 19.08.19 09:29
это вполне себе нормальный способ

Получить исключение в нормально работающей программе - это нормально?шок

Речь конечно, прежде всего при выполнении проги в студии.

Программист коренной житель20.08.19 08:39
NEW 20.08.19 08:39 
в ответ AlexNek 19.08.19 19:13
Получить исключение в нормально работающей программе - это нормально?шок

А что такое "нормально работающая прога"? Или по-твоему исключение - это только NullPointerException, деление на 0, переполнение стека, AccessViolation и прочее?

Сгенерировать исключение в случае, если нет доступа к БД или к файлу - это вполне себе "нормально работающая программа".


В старые времена ошибка возвращалась в виде целочисленного значения - 0 - нет ошибки, все остальное - код ошибки. Сейчас вместо возврата значения ошибки кидают исключение и да это "нормально работающая программа".


5 6 7 8 9 10 11 12 13 14 15 все