Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: IP camera +VB.NET Добавлено: 24.01.11 02:54  

Автор вопроса:  ВВВ

Ответить

  Ответы Всего ответов: 52  

Номер ответа: 31
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #31 Добавлено: 28.01.11 22:01
EROS пишет:
криво и безграмотно..
 

ехал как-то по России, проезжал речку и населенный пункт с названием ВОБЛЯ.
это, наверное, чтобы число ответов в статистике увеличить? или просто у тебя принцип жизненный такой?

Ответить

Номер ответа: 32
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #32 Добавлено: 28.01.11 23:37
это, наверное, чтобы число ответов в статистике увеличить? или просто у тебя принцип жизненный такой?

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

Ответить

Номер ответа: 33
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #33 Добавлено: 29.01.11 01:05
EROS пишет:
вовсе нет.. это обычная реакция на говнокод,который показывает всю безграмотность и криворукость тебя как программиста.
Может ездить по России у тебя хорошо получается но программировать - точно нет.

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

Ответить

Номер ответа: 34
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #34
Добавлено: 29.01.11 01:15
*достаю попкорн*

Ответить

Номер ответа: 35
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #35 Добавлено: 29.01.11 02:04
вместо вонючих слов взял бы да написал грамотно и не кривыми руками

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

чтобы хоть какой-то результат был по этой теме

говнокод - это не результат. Это пример того, как НЕ НУЖНО делать. А мой коммент для того, чтоб новички понимали что перед ними говнокод,который юзать не следует..

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

Ответить

Номер ответа: 36
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #36 Добавлено: 29.01.11 02:48
судя по теме http://vbnet.ru/forum/show.aspx?id=213585 (далеко не единственной) , в которой тебе очень мягко указали на то, что ты пишешь :-) - уровень твоей грамотности мало изменился (и в написании просто текста по-русски есть ощибки :-)). похоже, что у тебя и впрямь руки прямые - только обе(если их две) левые. а дерьма в тебе точно много, не захлебнись, хотя может я ошибся- это твой мозг, умник :-) и зубы у тебя потеют. вообще модератору надо чаще на содержание поглядывать - такие реплики явно не украшают форум.

Ответить

Номер ответа: 37
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #37
Добавлено: 29.01.11 03:26
Вот бы кто расписал всё, да поучил на чужих ошибках...

Ответить

Номер ответа: 38
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #38 Добавлено: 29.01.11 03:41
Запасайтесь попкорном, у вас есть еще не больше 10 минут :)

Ответить

Номер ответа: 39
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #39 Добавлено: 29.01.11 04:02
Уровень моей грамотности был невысок, а после того как я был вынужден перейти на английские версии MS Office, не имеющие русской проверки орфографии, он катастрофически снизился, тем не менее, позволю себе сделать некоторые замечания.

1.
  1. Private Sub RunConnection(ByVal c_ip As String, ByVal c_port As Integer)
  2. .....
  3. RunConnection("192.168.2.178", "80")


Второй аргумент метода RunConnection имеет тип Integer, но при вызове этого метода в него передается объект типа String. Исходя из предположения, что автор убедился в том, что код компилируется, перед тем как его выкладывать, приходим к выводу что автор пишет проект с отключенной жесткой проверкой типов (Option Strict Off), что само по себе является эпическим фейлом.

2.
  1. Public Class c_cam
  2. Private c_socket As New Net.Sockets.TcpClient
  3. Dim c_autoreconnect As Boolean
  4. Const GetPath As String = "/videostream.cgi" '"/snapshot.cgi"
  5. Private Sub RunConnection(ByVal c_ip As String, ByVal c_port As Integer)


Из этой выдержки можно прийти к выводу, что автор для всех идентификаторов (кроме методов) использует одну и ту же нотацию, которая не используется в .NET. Что является эпическим фейлом.

3.
  1. Event Reconnection(ByVal form1 As Form1)
  2. Public Event FrameDropped(ByVal dropscount As Integer)
  3. Public Event Frame(ByVal f() As Byte)


Для событий автор использует сигнатуры, которые не используются в .NET. В .NET общепринятой является сигнатура
  1. Public Event FrameDropped(ByVal sender As Object, ByVal e As System.EventArgs)

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

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

4.
  1. Dim resp As New Net.Sockets.TcpClient()

Выбор TcpClient в данном случае необоснован. В данной ситуации более подходящим является класс HttpWebRequest

5.
  1.             resp.Connect(c_ip, c_port) 'Коннектимся к камере
  2.             c_socket = resp
  3.             Dim header As String = String.Format("GET" & vbNewLine & vbNewLine, c_ip, c_port, GetPath, Crypt("admin", "1234"))
  4.             resp.Client.Send(Encoding.Default.GetBytes(header))
  5.             Me.OnConnect()

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

6.
  1.         Dim d(1024 * 900) As Byte 'Буффер данных

Выбор размера буфера ничем не обоснован.
В качестве промежуточного буфера при работе с IO рекомендуется выбирать 8 кб. В данном же случае EROS предлагал более подходящий вариант - использовать буфер, которого гарантированно хватит на несколько кадров (но поскольку нельзя быть на 100% увереным в том, что буфера будет хватать, нужно предусмотреть возможность его увеличения по ходу работу).

7.
  1. c_queuestrbuffer &= System.Text.Encoding.Default.GetString(d, 0, cnt)

Здесь нельзя использовать Encoding.Default, потому что в качестве Default кодировки может быть не только 8-битная, но и 7-битная, а также многобайтная. И ее использования для кодирование бинарных данных (jpeg) в текст и обратно приведет к порче данных.

8.
  1. Private c_queuestrbuffer As String = "" 'Это и есть наш буфер
  2. ...
  3. c_queuestrbuffer &= System.Text.Encoding.Default.GetString(d, 0, cnt)
  4. Dim p() As String = Split(c_queuestrbuffer, dev)

Использование строки в качестве буфера является очень грубой ошибкой.
Во-первых, очень часто будут выполняться операции конкатенации. Поскольку стркои являются неизменяемыми объектами, любая такая операция будет сопровождаться созданием нового объекта типа String, что приведет к бОльшему расходу памяти и, как следствие, более частому запуску сборщика мусора. Более того, в определенных случаях CLR может выбрать неудачный размер нулевого поколения. Это приведет к тому, что эти потеряные строки быстро попадут во 2-е поколение, которое не начнет очищаться до тех пор, пока не кончится свободная оперативная память.
Во-вторых, так же часто выполняется операция Spit, результатом работы которой является еще большее кол-во объектов, что приводит к аналогичным последствиям.

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

9.
  1. If p.Length > 2 Then

Не знаком с протоколом, однако могу предположить, что здесь должно быть > 1.

10.
  1. c_queuestrbuffer = dev & p(p.Length - 1)

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

11.
  1. Private c_queuestrbuffer As String = "" 'Это и есть наш буфер.

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

12.
  1. Dim m As New IO.MemoryStream(System.Text.Encoding.Default.GetBytes(c_lf))

Идет работа с Stream, почему не вижу Using?

13.
  1. PictureBox1.Image = bmp

Обращение к контролу не из UI потока (см Control.Invoke). эпик фейл.

14.
  1. c_datarecived += cnt

Бесполезный счетчик, нигде не используется.

15.
  1. c_datathread.Abort()

Методом Tread.Abort допустимо использовать, когда поток должен убить сам себя. В противных случаях это может привести к непредвиденным последствиям (подробнее в MSDN в комментариях к этому методу, там расписано, в т.ч. много матана).

Кроме того
16. Практически отсутствует обработка ошибок (например, могут прийти поврежденные данные, и тогда Bitmap.FromStream даст исключение)
17. Никакой политики работы с неуправляемыми ресурсами (таковыми является TcpClient, Bitmap (которые уже стали ненужными)), что может привести к утечкам памяти и другим проблемам (если у камеры ограничено макс. число одновременных подключений, то код вполне может все их занять, при этом ничего не показывая)
18. Нет понятия о таймаутах. Если камера зависнет, код тоже зависнет на неопределенное время и никак не обработает эту ситуацию.

Это что на поверхности, глубоко не вникал, нет времени.

Ответить

Номер ответа: 40
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #40 Добавлено: 29.01.11 04:14
Та не, ну до эээээээ не дотянет, так.. на одну пачечку попкорна тянет от силы :)

Ответить

Номер ответа: 41
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #41
Добавлено: 29.01.11 13:04
Эй, народ, вообще тут чел нормальные вещи мутит, вы на сайт зайдите: http://mechmagic.com/. Это первое, теперь второе. Igory Rubas действительно родился в 1961 году? 50 лет??? Впрочем, в сочетании с "теорией эвольвентных передач" я бы поверил. Поэтому ну пиплы, так уж резко может не надо...

Ответить

Номер ответа: 42
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #42 Добавлено: 29.01.11 16:32
Igory Rubas действительно родился в 1961 году? 50 лет?

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

моя реакиця была ответом на хамство..
И то, что он там
нормальные вещи мутит

не отменяет тот факт, что как программист он безграмотный и криворукий.

Кроме того,если бы ему на самом деле было бы 50 лет, то он был бы способен достойно принять обоснованную критику в свой адрес.

Ответить

Номер ответа: 43
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #43 Добавлено: 29.01.11 17:29
ребята, давайте жить дружно :-) форум не для того, чтобы считающие себя умными и пряморукими поливали все вокруг(посмотрите ради прикола комменты того чЛЕНА этого форума - ламеры и т.д.. ).
Опубликовал тот кусок кода не для получения лесного отзыва от кого-нибудь (мне фиолетово чье-то мнение уже давно), а для того, чтобы хоть кому-то пригодилось, как можно с IP-камеры поток посмотреть.
БОльшая часть кода вообще выдрана с попавшегося неработающего :-( примера с инета (http://tugibaev.ru/?p=71), маркера начала/конца кадра в нем тоже не было.
Я свою задачу решил, а насчет хамства отдельных личностей .. достаточно часто на форумах встречаются "крутые" только в виртуальном пространстве особи, надувающие щеки и морщащие свой лобок от собственной важности, благодаря чувству безнаказанности - к сожалению, я сам не сдержался от реакции на его коммент :-(, чем отличается критика от того ..., всем остальным, уверен-понятно.
Вся эта словесная перепалка - соверщенно глупое занятие, на которое соверщенно не стоит тратить время и внимание ни чужое(в данном случае-внимание форумчан), ни тем более -свое. Насчет криворукости - посмотри свои произведения, написанные немного раньше - заметишь очень много криворукого :-). и это есть нормально, значит есть какое-то развитие :-). у меня, в основном -прикладные задачи, которые успешно работают. Первую прогу(за которую получил деньги) написал в 1982 г - на Fortranе, машинки были тогда Д3-28, оптимизация параметров гидроаккустической антены глубиномера подводного объекта.
а цель этого топика - согласитесь не в этом.

Ответить

Номер ответа: 44
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #44
Добавлено: 29.01.11 18:56
Igor Rubas
какие из программ (mechmagic) ты написал? (на vb)

Ответить

Номер ответа: 45
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #45 Добавлено: 29.01.11 19:06
оболочка у всех на VB, математика у некоторых в dll на С++. некоторые задачи(еще до появления .NET) на VB6 решались очень долго, а на C++ - мгновенно. с тех пор так и осталось :-)

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам