Просмотр полной версии : Вопрос по префиксам для лог. программ
Давно хотел задать вопрос по префиксам, назрел он давно, а сейчас в связи с написанием нового лога, стал очень актуальным.
Известно, что многие логи, написанные или пишущиеся сейчас используют в качестве базы файлы .cty, где содержистя вся информация о CQ Zone, ITU Zone. Вот именно об этом мой вопрос. Возьмем рассмотрим например, две ситуации:
1) CE9/KC4 (Antarctica) - СQ: 12, 13, 29, 30, 32, 38, 39 и ITU: 67, 69-74.
2) B (China) - СQ: 23, 24 и ITU: 33, 42, 43, 44.
Данные согласно DXCC List 2008. Для China существует деление по цифре в префиксе и первой букве суффикса, например: BY6Q - China (Hu Bei), СQ: 24, ITU: 44. И так далее. То есть можно составить некий "маппинг" для определения зон корректно. Однако для случая 1) ситуация более сложная. Так как например, префикс KC4 у нас используется для многих станций, например, McMurdo, Palmer, Byrd - все в разных зонах. Заносить в базу данных весь список, а он есть конечно, не совсем удобно, да и не рационально - он огромен просто. Сейчас мы в nGenLog используем именно такой "тупой" маппинг. И сие не есть оптимально.
Кроме этого есть и вторая, насущная проблема. Например для Аргентины: LU#G[A-O] - Chaco и LU#G[P-Z] - Formosa, при учете их на дипломы. Здесь нам необходимо отсечь сам префикс, например, LU1, затем определить первую букву суффикса - G, а далее проверить на оставшиеся буквы, чтобы точно определить провинцию. Сейчас делаем это на основе регулярных выражений (Regular Expression), но создать "универсальную" маску для сравнения пока не удается. Слишком много вариантов. Писать специальный парсер - может и идея, но тоже слишком много ветвлений.
Отсюда вопрос: существует ли наиболее удобный способ для решения данной проблемы? Кто как ее решал в своих логах, тем более многие из них на форуме обсуждались. Исходный код не нужен - нужна хорошая идея и алгоритм реализации.
Кто-нибудь может подсказать, как решить такую задачку? Любые идеи приветствуются.
В большинстве логов такая ситуация
Я Сам испытываю трудности
У меня тоже сложно определить, так как иногда станции передают зону отличную от стандарта.
Например в CQWW работает K5ZD и хотя WAZ зона 4 для K5 он передавал 5,
RT9S тоже не соответствовал - он передавал 16 зону
Я решил, да и в других логах необходимо заносить в базу префиксов этот позывной или префикс с указанием правильной зоны
С Аргентиной я решил так:
Public Sub FindCountry(sCallsign As String)
Dim rs As dao.Recordset
Dim sMsg As String
Dim Msg As String
Dim msg1 As String
Dim msg2 As String
Dim IsLuBig As Boolean
Dim length As Integer
Dim SQLString As String
Dim i As Integer
Dim maxi As Integer
Dim csign As String
Dim aStr As String
Dim Prefix As String
On Error Resume Next
If Len(sCallsign) = 0 Then Exit Sub
If IsRuntime Then On Error GoTo ErrRtn
Trace "Country FindCountry"
ClearProperties
csign = NormalizeCall(sCallsign)
IsLuBig = False
' If IsValidCall(sCallsign) = False Then Exit Sub
sMsg = csign
length = Len(sCallsign)
If length < 1 Then Exit Sub
SQLString = "select * from prefix where Prefix = '" & sCallsign & "'"
Set rs = LogDB.OpenRecordset(SQLString, dbOpenDynaset, dbReadOnly)
If rs.BOF Or rs.RecordCount = 0 Then
notFull = False
Msg = Left$(csign, 2)
msg1 = Mid$(csign, 4, 2)
IsLuBig = (Len(msg1) > 0 And Msg = "LU")
Select Case Msg
Case "L1" To "L9"
csign = Replace(csign, "L", "LU")
msg2 = "LU"
Case "LU", "LV", "LW"
csign = Replace(csign, Msg, "LU")
msg2 = "LU"
Case "UR" To "UY", "EO", "EM", "EN"
csign = Replace(csign, Msg, "UR")
Case "U5"
csign = "UR" & Mid$(csign, 2, 2)
Case "UO", "UP", "UN"
csign = Replace(csign, Msg, "UN")
Case "RA" To "RZ", "UE" To "UI"
csign = Replace(csign, Msg, "UA")
Case "R0" To "R9", "U0", "U2" To "U4", "U6" To "U9"
csign = "UA" & Mid$(csign, 2, 2)
If sMsg = "R3K" Then csign = "UA3A"
' If Left(sMsg, 3) = "RA2" Or Left(sMsg, 3) = "UA2" Then csign = "RA2F"
Case "FO", "FR"
csign = Msg & "-" & LCase$(Right$(csign, 1))
' Case "UA2"
' csign = "RA2F" '& LCase$(Right$(csign, 1))
Case Else
Select Case Left$(csign, 4)
Case "RO4M", "UA4M"
csign = "UA4L"
End Select
End Select
'
If IsLuBig Then
' это значит надо смотреть две буквы после префикса
Select Case msg1
Case "XA" To "XO"
csign = Replace(csign, msg1, "XA")
Case "XP" To "XZ"
csign = Replace(csign, msg1, "XP")
Case "GA" To "GO"
csign = Replace(csign, msg1, "GA")
Case "GP" To "GZ"
csign = Replace(csign, msg1, "GP")
Case Else
csign = "LU." & Mid$(csign, 4, 1)
End Select
End If
With PrefixRS
.Index = "Prefix"
.Seek ">=", csign
On Error Resume Next
If .NoMatch Then .MoveLast
If IsRuntime Then On Error GoTo ErrRtn
If .BOF Then Exit Sub
For i = 1 To .RecordCount
Prefix = !Prefix
'If notFull Then
' Select Case ms1
'
'
'
' Else
If IsLuBig Then
If InStr(Prefix, ".") > 0 Then
If Mid$(csign, 4, 2) = Mid$(Prefix, 4, 2) Then
Prefix = "LU." & msg1
Exit For
End If
' .MovePrevious
End If
' ElseIf Not IsLuBig Then
' If InStr(prefix, ".") > 0 Then
' If Mid$(csign, 4, 1) = Mid$(prefix, 4, 1) Then
' prefix = "LU." & Mid$(prefix, 4, 1)
' Exit For
' End If
' End If
ElseIf InStr(Prefix, ".") > 0 And Mid$(Prefix, 4, 1) = Mid$(csign, 4, 1) Then
If Len(Mid$(csign, 4, 1)) > 0 Then
Prefix = Left$(Prefix, 2) & "." & Mid$(Prefix, 4, 1)
Exit For
End If
ElseIf InStr(Prefix, "-") > 0 And LCase$(Mid$(Prefix, 4, 1)) = LCase$(Mid$(csign, 4, 1)) Then
If Len(Mid$(csign, 4, 1)) > 0 Then
' csign = Replace(csign, Mid$(csign, 3, 1), "-")
Prefix = Left$(Prefix, 2) & "-" & LCase$(Mid$(Prefix, 4, 1))
Exit For
End If
' End If
End If
'If Not station.CurrentContest.IsCQ And !IsStarred = 1 Then
'Else
If Left$(csign, Len(Prefix)) = Prefix Then Exit For
If Left$(csign, 1) <> Left$(Prefix, 1) And i > 1 Then Exit Sub
If .BOF Then Exit Sub
'End If
.MovePrevious
If .BOF Then
.MoveFirst
Exit Sub
End If
Next 'i
If Len(Prefix) = 0 Then Exit Sub
End With
If CountryPrefix = Prefix Then
SetPrefixZones PrefixRS
Trace "Country End FindCountry"
Exit Sub
End If
SQLString = "select * from prefix where Prefix = '" & PrefixRS!Prefix & "'"
Set rs = LogDB.OpenRecordset(SQLString, dbOpenDynaset, dbReadOnly)
End If
rs.MoveFirst
FromRow rs, PrefixRS
rs.close
Set rs = Nothing
Trace "Country End FindCountry"
Exit Sub
ErrRtn:
ErrorHandler cmMDI, "FindCountry"
End Sub
Очень долго неполучалось hi hi.
Вообщем так пока может кто-то решает по другому
Игорь, спасибо за отклик... Кода я уже скопировал, он теперь переведен из VB в C# конвертером. Будем смотреть на производительность. В принципе мы где-то также делаем, но используем RegEx и как всегда имеем плюсы и минусы. Минусов пока больше... Я тут пытаюсь "колдовать" с сиквелом, используя в запросе IN и прочие ухищрения. Все только для повышения быстродействия. Одной идеей могу поделиться сразу, может пригодится. Мы используем для определения страны выделенные блоки префиксов (Prefix Allocation Block), например CL - CM для Кубы. В .NET есть метод String.CompareTo() или String.CompareOrdinal() позволяющий сравнить две строки. То есть первая то, что введено, а вторая эталонная из базы. При этом, данный метод работает быстрее, чем если тоже самое делать встроенными средствами сиквела, типа BETWEEN или другими. Что еще удобно, так то, что не надо использовать Switch...Case, так как вводимая строка идет, как параметр, а второй параметр - эталонная строка берется из запроса (Execute Scalar Query) к сиквелу. Где еще выигрышь в производительности? В сиквеле 2005 (да и в 2008) есть фича - CLR хост и Object Brocker. При этом исчезает напрочь потребность иметь дополнительный Data Access Layer. То есть у нас напрямую приложение работает с базой данных.
На что еще наткнулись - 8Q... да именно Мальдивы. Какой там континент? Во-во. Их два: AF/AS. Ну и какой нам использовать? :) Да, можно забить "по умолчанию" AS, а в контестах для кого-то множитель по континенту пролетит...
Однако проблема с антарктическими станциями все еще камень преткновения... и здесь я не знаю как быть. Да есть вся директория антарктических станций, но вбивать ее... мама мия... Есть мысли? Может сообща придумаем чего-то?
Госопода в качестве языка для парсера Рекомендую perl
у него очень мощная система регулярных выражений Так что много проблем решится скажем аргентина такой страшной казаться не будет.
Вот пример как я споты фильтрую:
if(($spot=~m/\s144\d\d\d\.\d\s/||$spot=~m/\s145\d\d\d\.\d\s/)
&&($spot=~m/<ES>/i||$spot=~m/\(ES>/i||$spot=~m/\sES\s/i))
{
print("ES_144!!!!\n");
open(ESSPOTFILE, ">> /var/log/sporadik/ES_144_file.spt") or die "can't open spot-file";
print ESSPOTFILE $spot;
close (ESSPOTFILE);
$spot="";
};
Регулярные выражения можно по компактнее вписать мне просто людей жалко кто будет с нуля пытаться их прочитать тогда.
А на счет языка C# это вы зря... смените пока не поздно...
Все только для повышения быстродействия. Одной идеей могу поделиться сразу, может пригодится. Мы используем для определения страны выделенные блоки префиксов (Prefix Allocation Block), например CL - CM для Кубы.
Да но у меня в базе такого нет. В принципе ясно для этого типа
А если что-то типа UA-UI1,3,4,6,RA-RZ тут сложно пока
Попозже может попробую
Спасибо
if(($spot=~m/\s144\d\d\d\.\d\s/||$spot=~m/\s145\d\d\d\.\d\s/)
&&($spot=~m/<ES>/i||$spot=~m/\(ES>/i||$spot=~m/\sES\s/i))
{
А как связать Перл с VB или Delphi?
Для RA9QCE:
Насчет Perl, да великолепно... Нам любой язык годится... лишь бы задача решалась... :) А насчет C# - зачем же его менять? А главное на что? Где еще вы XAML, WPF, WCF найдете? Пока альтернатив нет. А Perl и под .NET тоже имеется, так что платформа очень универсальная - уже 57 языков поддерживает. Но я не о том, а о том, как задачку решить... :)
ПС Читать будет программер... от конечного пользователя все одно все скрыто будет...
Для UR5FCM:
"А если что-то типа UA-UI1,3,4,6,RA-RZ тут сложно пока" - Нее, не сложно. Я завтра кину простенький примерчик, как у нас это сделано с исходным кодом. Если есть VS 2005, то все прозрачно и понятно. Хранимые процедуры будут в базе - базу приложу в виде скрипта .sql или .ddl. Там все легко и тривиально. И можно улучшать. :)
С такими языками не знаю но вот скажем в проектах серьёзных, ну тот же matlab, все нормально с этим...
видимо проще всего отдельно вынести весь обработчик в perl... тут уже думать надо под unix с C и c++ связывается без проблем, возможно и в виндоус без .NET то же....
С такими языками не знаю но вот скажем в проектах серьёзных, ну тот же matlab, все нормально с этим...
Да matlab работал
В принципе можно через DLL связь с приложениями сделать типа АРI или я не прав
Добавлено через 43 секунды
видимо проще всего отдельно вынести весь обработчик в perl... тут уже думать надо под unix с C и c++
Ну Линукс на то он и Линукс там все вроде б связано
Ну не будем же мы писать лог на MatLab... :)
Добавлено через 1 минуту
Ладно, юмор юмором, а вопрос я думаю не у меня одного такой... У нас там и немцы и швейцарцы в задумчивости "репу" чешут...
Ну не будем же мы писать лог на MatLab... :)
Добавлено через 1 минуту
Ладно, юмор юмором, а вопрос я думаю не у меня одного такой... У нас там и немцы и швейцарцы в задумчивости "репу" чешут...
А Вы несмотрели CallParser от автора DXAtlas
Там на его сайте есть примеры
Может это то что надо?
Если VB.NET, Delphi под .NET и Perl под .NET - без проблем связываются. Поскольку все в CLR исполняется. А если через DLL, то придется писать wrapper и дергать методы и функции через P/Invoke. Других простых путей нет и не будет...
Добавлено через 4 минуты
Для UR5FCM:
На пример CallParser, написанный на дельфи - смотрел, и как раз самая первая идея была по улучшению. Однако и там те же грабли - вид сбоку. Алекс также загружает всю таблицу по антарктическим станциям - они там идут огроменным списком... Мы же хотим от всего этого по возможности отказаться... Иначе скоро придется сидюк выпускать для файла в формате .сty ... Не рационально.
вот наобум проверка вашей Аргентины, не проверял в компиляторе, пишу прямо в форуме,, но думаю должен работать
if(($call=~m/\AL[O-W]\dG[A-O]/){print"Chaco"};
if(($call=~m/\AL[O-W]\dG[P-Z]/){print"Formosa"};
Читабельно и просто...
А по поводу языков... Ну я сторонник C/C++ для проектов такого плана, нового ничего не придумали хорошего для этого, скрипты Perl, ну может ruby python для любителей... Процедурные языки - пока haskell более менее, пока не встречался с их необходимостью. А остальное ну зачем, тот же C# в чем его преимущество? просто индусам объяснить чуть быстрее и будут дешевые программеры в майкрософте трудится... У ну да еще TCL/TK LISP но это уже не по теме...
Добавлено через 1 минуту
если вы все же под .NET начали то уж и пишите если PERL там есть нормальный, по связке документацию по перл полистайте, я обычно банально через хэдеры связываю, perl все же на Си и под него и был затьочен..
Добавлено через 6 минут
По реализации я бы взял наиболее частый формат файла вашего cty сделал парсер чтобы из него сделать уже автоматически регулярные выражения и парсер для позывного будет уже автоматически обновляться при обновлении файла cty
Ладно я спать, 5 утра местного...
Сам Perl для меня не новый язык... Я на нем в свое время писал и много, когда еще cgi-bin был... Насчет С/С++ - спорить не собираюсь, так как сам сишник до мозга костей. Но сейчас уже не хочется возится с "DLL Hell" еще раз, когда есть полностью managed код. Да и под .NET никто С++ не отменял, он там тоже есть. Насчет С# - вы неправы во многом, ну да ладно... Он силен например, Generics (только не пытайтесь сравнивать с ATL ради бога - много общего, но и глубокая пропасть), возможностью работать с LINQ и напрямую с объектами из базы данных, а не с рекордсетом, что уже давно считается атавизмом...
По поводу регулярного выражения на перле - у вас там где-то ошибка, так как нет определения цифры в префиксе...
ПС Я не буду здесь насчет языков, а то топик улетит в ненужное русло... :) У каждого свой вкус и о них не спорят. Тем более я в том проекте лишь как сторонний программист, решение о выборе языка принимал не я и не мне его менять. Думаю так будет яснее...
цифра проверяется "\d" - одна любая цифра
расскажу сраху по порядку
"\A" - начало строки, чтобы он что-то в середине похожее не выхватил, можно решить модификатором оператора, отменив "жадность" но мне так больше нравится
L буква
L это понятно
[O-W] Диапазон букв по латинскому алфавиту от O до Z , поскольку аргентине выделен диапазон LOA-LWZ
далее одна любая цифра, кстати дааа цифр в спецпозывном может быть и много, значит надо после цифры поставить модификатор *
Все выражение будет \AL[O-W]\d*G[A-O]
Ну а далее по аналогии.
теперь \d* означает одна или несколько цифр
можно вписать и по другому \d{1,4} - все это значит от 1 до 4 цифр...
Для RA9QCE:
Спасибо... Я именно это и имел в виду, когда и спец-позывной... А \d я просмотрел... каюсь... :) Тоже уже спать надо...
И Роман, раз вы у нас такой гуру в регулярных... ничего, если я вам завтра напишу с чем у нас затык, а вы напишете регулярные для этого? А уж как их встроить в класс RegEx на C# или на перл под дотнет - сие моя забота...
Ну попробуем, хотя в перл я не сказал бы что гуру.
if(($call=~m/\AL[O-W]\dG[A-O]/){print"Chaco"};
if(($call=~m/\AL[O-W]\dG[P-Z]/){print"Formosa"};
На Delphi так тоже можно.
UA3GDW:
Можно и на Delphi... Которую Борланд уже похоронил и отправил в свободное плавание... :) Смысл в Delphi? Мертвый язык, мертвые приложения... тупик в развитии. А когда перспектив нет, то надо писать на перспективных платформах, .NET, Eclipse и других. Вот пример, был лог DXBase и нет больше лога. Джек скис писать на Delphi. А мигрировать на новое - сил нет, да и желания, так как уже конкурентных логов море. Вот и ответ, кто на коне, а кто и под конем...
По поводу регулярных выражений для парсера. Все выражения наконец дописаны, оттестированы. Сами темплейты выложу здесь в топике, без кода. Так как он является частью ноу-хау, а также собственностью разработчиков. Возможно, Игорь UR5FCM, после окончания миграции его лога на VB.NET разрешит или сам опубликует часть - решение за ним. Что касается той части, что мы используем в nGenLog, кое-что думаю можно будет опубликовать. В частности методику трекинга дипломов по унифицированному способу.
Можно и на Delphi... Которую Борланд уже похоронил и отправил в свободное плавание... Смысл в Delphi?
Приложения может быть. Но библиотеку написать можно
Не Activex как на VB6, а для работы через АРI на VB6
Можно и на Delphi... Которую Борланд уже похоронил и отправил в свободное плавание... Смысл в Delphi? Мертвый язык, мертвые приложения... тупик в развитии. А когда перспектив нет, то надо писать на перспективных платформах, .NET, Eclipse и других. Вот пример, был лог DXBase и нет больше лога. Джек скис писать на Delphi. А мигрировать на новое - сил нет, да и желания, так как уже конкурентных логов море. Вот и ответ, кто на коне, а кто и под конем...
Не понятна связь между "похоронил" и "скис писать". Давайте религиозные войны не разводить? Про средства разработки микрософта тоже можно много чего написать...
RZ4AG:
Вот войны я здесь и не хочу разводить... и про средства Микрософт я в курсе...
Приведу лишь несколько аргументов, чтобы было понятно:
а) Создание современного интерфейса пользователя (GUI) на базе Best Practice с учетом эргономики, а не поделок на эту тему.
б) Поддержка динамических модулей и плагинов для различных функций и задач, без перекомпиляции кода.
в) Поддержка современных методов доступа к базам данных и обеспечение их синхронизации в квази реальном времени.
г) Поддержка нескольких платформ, таких как Микрософт, Линукс, Мак.
д) Создание удобного деплоймента на основе Click Once и без участия пользователя.
е) Полный отказ от third-party компонентов, а создание их на основе темплейтов на базе XAML.
ж) Поддержка XBAP и Silverlight 2.0.
з) Поддержка DLR (Dynamic Language Runtime), который есть только в .NET.
И все это на базе одной платформы .NET 3.5... Вот такие цели у проекта. На данный момент у .NET нет конкурентов...
И поскольку топик не об этом, а о вполне конкретной проблеме, то если хотите поспорить на тему, откройте новый топик, я там с удовольствием подискутирую с вами.
ПС Джек "скис" потому, что саппорт Борланд больше не предоставляет. Одна из причин. Вторая, что визуальных контролей под версию 7 никто больше не делает. А держать версию не совместимую с Виста... увы, потеря рынка - с его слов...
UR5FCM:
Игорь, естесственно... Но тогда такой к тебе вопрос: "Зачем создавать дополнительный layer?" и писать доступ к API на том же Дельфи, вместо того, чтобы спокойно не использовать стандартный P/Invoke или wrapper? Ведь все делается просто [DLLImport] и все. Далее тебе все функции доступны. Нужен тебе COM или СОМ+ объект - interop и все. Зачем огород городить и создавать сложности самому же себе? :)
Можно и на Delphi... Которую Борланд уже похоронил и отправил в свободное плавание... Смысл в Delphi? Мертвый язык, мертвые приложения... тупик в развитии.
Странно читать это от человека, который разбираетя в программировании... Во первых - Дельфи - это не язык, а оболочка в языку Паскаль.
Во вторых - многие считаю Dot Net как раз тупиковой веткой развития из-за его тяжеловестности.
В третьих - большинство тех, кто сейчас использует дельфи, пишут под 7 версией, а не под более поздними, использующими технологию Net.
Так что Ваши выводы весьма спорны.
А держать версию не совместимую с Виста
Delphi 7 прекрасно совмещается с Вистой
что визуальных контролей под версию 7 никто больше не делает
Ну и в чём проблема? Пишите компоненты сами.
ПС Джек "скис" потому, что саппорт Борланд больше не предоставляет
Борланд продала Delphi другой фирме. Сейчас уже выпущена Delphi 2009.
На данный момент у .NET нет конкурентов...
И поклонников мало и софта написанного под .NET тоже мало.
Поддержка динамических модулей и плагинов для различных функций и задач, без перекомпиляции кода.
Это наверно для ленивых. Поддержку плагинов можно ввести в приложение написанное на любом языке.
Странно читать это от человека, который разбираетя в программировании... Во первых - Дельфи - это не язык, а оболочка в языку Паскаль.
Во вторых - многие считаю Dot Net как раз тупиковой веткой развития из-за его тяжеловестности.
В третьих - большинство тех, кто сейчас использует дельфи, пишут под 7 версией, а не под более поздними, использующими технологию Net.
Так что Ваши выводы весьма спорны.
Что я могу сказать... Наверное то, что возможно вы не до конца сами разобрались в вопросе, а что такое Borland Delphi... Посмотрите по ссылке и сами все поймете:
http://en.wikipedia.org/wiki/Comparison_of_Pascal_and_Borland_Delphi
Насчет того, что "многие считают многие считают .NET как раз тупиковой веткой развития из-за его тяжеловестности"... Многие - это кто? Те кто на нем и строчки не написал? Или те, кто на нем пишут? Можно поподробнее, по данному моменту? Уж больно интересно стало... Тем более, на сегодняшний день, по оценке весьма известных независимых источников доля .NET приложений в мире составляет без малого 43%. Не плохой результат?
Те, кто сейчас пишут на 7-й версии Дельфи, вероятно еще не поняли, что такое CLR до конца и им нравится до сих пор иметь головную боль с OCX, COM, DLL... Это их дело, конечно. Но для тех, кто пишет на .NET понятие "DLL Hell" больше не существует, так весь код 100% managed.
И выводы эти не мои, а весьма известных программистов во всем мире... :)
Delphi 7 прекрасно совмещается с Вистой
Не везде и не во всем... Если б так все было прекрасно, то на форумах по Дельфи 7 не было бы кучи вопросов "А как, а почему?"
Ну и в чём проблема? Пишите компоненты сами.
Писать визуальные компоненты на Дельфи требует намного более времени и затрат, чем написать визуальный компонент на XAML или .NET. Кроме того единажды написанный контроль можно использовать как для веб, так и для WPF, WinForms. Кроме того и на платформе Линукс под Mono, или для PDA под CF. То есть налицо только выигрыш и плюсы.
То, что выпущена сеичас 2009 версия, я в курсе. Но где поддержка LINQ? Нету...
И поклонников мало и софта написанного под .NET тоже мало.
Что-то новенькое... Поклонников уже столько, что их не счесть... А софта написано столько, сколько на Дельфи не написано... Не понял, если честно, откуда такие сведения - можно источник?
Это наверно для ленивых. Поддержку плагинов можно ввести в приложение написанное на любом языке.
Нет не для ленивых. Мне кажется, что вы просто не понимаете, что такое DLR в сути своей... Плагин - это плагин. А динамическая компиляция - это динамическая компиляция. Вам, для подключения нового плагина или модуля надо код лопатить и заново компилировать, а тут не надо... основной принцип.
Кроме того, тут писалось о тяжеловесности. Прошу пардона, но написанное приложение на дотнет "весит" в десятки раз меньше, чем тоже самое на Дельфи. Да и исполняется в несколько раз быстрее, если не в десятки раз. Хотите проверить? :)
ПС Тестов уже от независимых фирм в самом инете полно...
----------------------------------------------------------------------
И давайте все же по теме топика...
У меня вот еще вопрос в связи с этим. Имеем префикс KG4 - Гуантанамо. Делов том, что согласно положению о выделенных блоках, к Гуантанамо относятся лишь позывные вида KG4хх, где хх - две буквы. В то же время KG4ххх - используются в штатах. Далее, старый блок KС6 уже используют в штатах, а не на островах, где теперь другие префиксы. То есть опять приходим к ситуации с ambigous позывными и exception для отдельно взятых позывных, когда одна и та же DXCC в нескольких местах используется. В связи с этим есть предложение: давайте создадим единый формат, таблицы в екселе или базу, откуда все данные можно брать... Как первый шаг. Иначе копать в инете всю инфу трудновато.
И еще один момент - очень важный. Существует ряд стран DXCC, где несколько зон одновременно. В режиме повседневной работы не всегда знаешь, какая зона правильная. Что с этим моментом делать? Какие мысли будут?
Вот войны я здесь и не хочу разводить...
И занялись именно этим ;)
а) Создание современного интерфейса пользователя (GUI) на базе Best Practice с учетом эргономики, а не поделок на эту тему.
Да уж... Виста - верх это "Best Practice с учетом эргономики".
б) Поддержка динамических модулей и плагинов для различных функций и задач, без перекомпиляции кода.
не уникально.
в) Поддержка современных методов доступа к базам данных и обеспечение их синхронизации в квази реальном времени.
Что подразумеваем под современным методом?
е) Полный отказ от third-party компонентов, а создание их на основе темплейтов на базе XAML.
Правда приложение более неторопливым становится - но это фигня... У нас есть Intel c новыми процессорами.
ж) Поддержка XBAP и Silverlight 2.0.
Лог в браузере? то же вариант, но на любителя.
И все это на базе одной платформы .NET 3.5... Вот такие цели у проекта. На данный момент у .NET нет конкурентов...
в создании монстрообразных приложений - однозначно.
ПС Джек "скис" потому, что саппорт Борланд больше не предоставляет. Одна из причин. Вторая, что визуальных контролей под версию 7 никто больше не делает. А держать версию не совместимую с Виста... увы, потеря рынка - с его слов...
Если это не отмазка (очень на это похоже), а реальная причина, то его заявление что пограммы созданы программистами High класса, становится очень сомнительным.
У меня вот еще вопрос в связи с этим. Имеем префикс KG4 - Гуантанамо. Делов том, что согласно положению о выделенных блоках, к Гуантанамо относятся лишь позывные вида KG4хх, где хх - две буквы. В то же время KG4ххх - используются в штатах. Далее, старый блок KС6 уже используют в штатах, а не на островах, где теперь другие префиксы. То есть опять приходим к ситуации с ambigous позывными и exception для отдельно взятых позывных, когда одна и та же DXCC в нескольких местах используется. В связи с этим есть предложение: давайте создадим единый формат, таблицы в екселе или базу, откуда все данные можно брать... Как первый шаг. Иначе копать в инете всю инфу трудновато.
Ну допустим при помощи rw9wa и ua4fff выкопана инфо по старым префиксам насколько это было возможно, часть инфо уже давно есть в префикслисте ve3nea.
Точно так же как в этом же списке есть вполне элегантное решение для случая Гуантанамо
И еще один момент - очень важный. Существует ряд стран DXCC, где несколько зон одновременно. В режиме повседневной работы не всегда знаешь, какая зона правильная. Что с этим моментом делать? Какие мысли будут?
Брать наиболее распостранненую. И иметь как можно более детальный префикс-лист.
RZ4AG:
Я не занялся, а просто ответил оппоненту. Поскольку меня очень удивило "голословное" заявление без фактов... Не более того.
Насчет Best Practices имелась в виду не Виста, а давно накопленный опыт создания GUI, интуитивно понятного пользователю. От операционной системы этот опыт не зависит, увы.
Насчет пункта б) "не уникально". Ну-ка назовите мне еще один framework где такое есть? И с поддержкой DLR, а также с различными языками в одном проекте... После этого, сделаем вывод. На сегодняшний день дотнет поддерживает уже 58 языков, кто еще такое может?
По пункту в) - имеется в виду синхронизация данных offline/online (оcasionally connected clients), и не по стратегии merge, где последний выыгрывает, а по стратегии с fuzzy logic, с тем, чтобы не образовывались дублеты и не было бы потери данных. Посмотрите например, на Sync от Микрософт. Кроме того, уровень коммуникации на WCF.
Насчет того, что "приложение становится неторопливым" - ну откуда такие данные? Я просто поражаюсь... Вы запускали хоть одно приложение на WPF? Если нет, то запустите и посмотрите... посему опять настолько голословно, что...
Насчет лога в браузере, не мы первые. Уже был пример педишн K7C, которые в реальном времени свои данные показывали. Весьма удобно и оперативно. Или будем и здесь с сарказмом?
Насчет монстрообразных приложений - можно пример... того, что монстр и не работает... А?
Кроме того, как я уже писал, цель проекта nGenLog охватить не только платформу виндоуз, а также и линукс. Или вы тоже против линукса выступаете?
RZ4AG:
По поводу списков, а линки на них можно? Однако помимо списка, есть задача, как это и програмно сделать. В базе данных нет вариантов хранить массив в одной ячейке... нет такого типа пока. А логика обработки такой ситуации, не тривиальна.
Заранее спасибо.
PS Список от Алекса Шовкопляса у меня есть... там действительно две ситуации прописаны жестко. Однако у него там тоже неясность: America/Los_Angeles, America/New_York, в плане масок KG4@.,KG4@@@. То есть тоже неоднозначность.
Берем префикс 3D2 и нарываемся также на неоднозначность. Если у нас есть отдельная таблица со всеми 3D2хх кто откуда работал, хорошо, а если нет, то...
Аналогичная ситуация и с Антарктидой. Кроме того, нигде пока не видел (хотя кто-то и сделал уже, не знаю) обработку ситуации специальных позывных. Имеется в виду, например R350..., UE45 и прочие префиксы от других стран, кторые не коррелируют с районами или другим делением. Что тоже отдельный лист заводить?
По поводу списков, а линки на них можно?
aia [гав] mail.ru пришлите письмо.
Однако помимо списка, есть задача, как это и програмно сделать. В базе данных нет вариантов хранить массив в одной ячейке... нет такого типа пока. А логика обработки такой ситуации, не тривиальна.
Михаил, как не крути, универсальный механизм определения позывного получить не удастся, так как все чаще звучат позывные которые не попадают под стандартные правила. Те же американские/французские заморские территории, 3D2, супер-префиксы России. Как ни крути, придется делать список позывных-исключений из правил с привязкой к верной территории. Опять же проще всего подход Шовкопляса: сначала проверим на исключение, а потом парсим если не в исключениях.
PS Список от Алекса Шовкопляса у меня есть... там действительно две ситуации прописаны жестко. Однако у него там тоже неясность: America/Los_Angeles, America/New_York, в плане масок KG4@.,KG4@@@. То есть тоже неоднозначность.
Это часовые зоны, тут как не крути, до определения штата невозможно понять какое значение брать.
RZ4AG:
Согласен на все 100%... пока нет однозначности, так и придется поступать. Вопрос тут практический: как это лучше всего организовать с точки зрения быстродействия и оптимизации самой информации. Объемы то растут... Мы сейчас, например выкачали всю базу по IOTA со всеми данными по активации тех или иных островов - спасибо организаторам, очень полезный сервис прикрутили. Размер базы правда, опять вырос. То же самое, касается программы RDA, WLOTA и многих других... Тут уже сиди или дивиди пахнет...
Нам кстати, очень понравилось приложение Алекса для чтения бюллетеней. С двух точек зрения:
а) Удобный парсер
б) Возможность получения оперативной информации
Вот если бы его логику и функциональность прикрутить к оперативному наполнению базы по критериям отбора, цены бы не было. Все бюллетени имеют информацию о педишн и другие данные. Если ими наполнять базу, то больше ничего и не надо - всегда актуальная инфа будет. Жаль, я не знаю, может ли Алекс часть своего кода опубликовать, как он сделал для парсера позывных... а было б здорово.
ПС Пока мы так и делаем: две таблицы - исключения и страны с многозначностью. Если ничего в них не нашли, то парсим - нет результата, то подставляем по умолчанию...
На Delphi так тоже можно.
это можно но оно более менее серьёзного шаблона просто не переварит. уже пройдено
Добавлено через 11 минут
Не ну если пошла такая пьянка, оба подхода неверны про платформы.
Единственно правильное ИМХО это абсолютно платформонезависимое, в качестве языка использовать свободные реализации C\C++\LISP\PERL может быть Python + что-то продцедурно ориентированное сюда, вроде hascell. В качестве библиотек отображения смотреть в сторону Qt_Gtk+/fltk/wxWidgets/tk и тогда будет и удобно и зависеть вы ни от чегоне будете.
Добавлено через 16 минут
по поводу парсеров... perl для этого просто великолепен, честно, я тащусь... особенно после того как на работе нужно было для достаточно сложного конфига сделать парсер в labview... Было такое чувство что кто-то надругался над моим мозгом...
RA9QCE:
Насчет выбора платформы я уже писал в самом начале. Оно уже принято... и кода уже написано немало. Поддержка всех трех платформ есть: Микрософт, Линукс, Мак (в перспективе). Под дотнет масса визуальных контролей уже, нормальная, а не "кривая" поддержка сиквела 2008. Говоря о GTK, QT - так тоже есть, тот же GTK#... Перл в полный рост на дотнет, процедурные языки тоже в распоряжении имеются... Если чего нет, так есть всегда старый и добрый С++... для дотнет. А уж на нем сваять можно хоть черта.
Дотнет платформа сама по себе платформно-независимая, а выбор языка уже определяется разработчиком. На сегодняшний день все 3 платформы поддерживаются. Кроме того, что уже немаловажно - .NET Micro Framework для кучи микроконтроллеров и процессоров. Например, та же Altera, Atmel, Xylinx и другие... И все в одном флаконе. А со свободно распространяемыми языками намучаешься под разные вещи писать - например под PDA или для веб. Придется несколько веток кода делать. А в случае дотнет - одна... но несколько компиляторов под разные платформы.
если уж речь идет о дотнет тогда уж mono....
если уж речь идет о дотнет тогда уж mono....
Ну дык мы на нем и пишем основную версию... :)
И еще один момент - очень важный. Существует ряд стран DXCC, где несколько зон одновременно. В режиме повседневной работы не всегда знаешь, какая зона правильная. Что с этим моментом делать? Какие мысли будут?
Однозначно - только так, как сделано в cty.dat - указывается основная зона страны, а в список префиксов вносятся или целиком позывные, или если есть возможность только префиксы с указанием зоны.
Пример для Самары, где ITU 29 или 30 даже в пределах области разное:
European Russia: 16: 29: EU: 55.80: 37.60: -3.0: UA:96:054:
R, RX4HX[30] и т.д.
Добавлено через 39 секунд
Ну дык мы на нем и пишем основную версию...
Кстати, я что-то не понял, Вы автор какой программы? :)
RX4HX:
С файлом .CTY понятно... То есть поступаем по принципу override для списка позывных. Так и делается, но вот размеры такой базы уже большие, а будут еще больше. Для быстродействия используем так называемые in-memory tables, однако их объем уже составляет без малого 15-17 мегов...
Возник новый вопрос, после детального изучения файла .CTY, как от Алекса Шовкопляса, так и от программ CQRLog, DX4WIN, а именно касательно префикса KC4. Непонятно откуда взяты данные, что префикс также используется и внутри штатов:
а) KC4AA[A-F], KC4US@ - Антактида
б) KC4@., KC4@@., KC4[B-TV-Z], KC4A[B-Z], KC4AA[G-Z], KC4U[A-RT-Z] - Штаты
В DXCC листе за 2008 год однозначно указано, что KC4 только Антарктида, тогда откуда взялись такие данные для пункта б)? Есть ли источник в инете, или данные устарели и просто хранятся для архива?
По поводу проекта - программа nGenLog. И я не автор, а лишь один из программеров в команде разработчиков.
Цитата:
Сообщение от UA3GDW
На Delphi так тоже можно.
это можно но оно более менее серьёзного шаблона просто не переварит. уже пройдено
TRegExpr
UA3GDW:
Комплексные регулярные выражения на этой библиотеке TRegExpr все равно не сделаешь. В свое время намучались... Кроме того, последнее обновление версии аж в 2004 году. Исходняков не предоставляется. Масса ошибок, обсуждаемых на форумах. Новые версии той же Дельфи не поддерживаются, только 7-я. Снова тупик? :) Вот одна из причин, почему мы на ней не стали писать...
---------------------------------------
Ладно, оставим споры по платформам, тем паче выбор уже сделан. Подумаем лучше, как все это свести к удобоваримому виду, с минимальными затратами и удобством заполнения актуальными данными.
Вчера я общался с группой наших радиолюбителей разработчиков, была высказана очень интересная на мой взгляд мысль: на базе сервиса Google Maps создать онлайн колбук, при этом забить в него всю информацию. Иными словами, создать файл .KMZ, прикрепить pushpin на позывной и иконку. Видимые плюсы:
а) Онлайн база по позывным доступная и актуальная для любого типа лога.
б) Независимость от сервиса QRZ.COM, который стал платным.
в) Возможность использовать те же данные сразу и для APRS.
Данные по педишн сразу можно будет вносить также и даже использовать уже имеющиеся календари и делать выборку по фильтру, а также включать трек на них. Хостинг для такого сервиса найти можно без проблем, причем здесь в Европе. Критерии и вопросы:
а) Формат данных, какие поля необходимы?
б) Нужен ли формат импорта/экспорта?
в) Как лучше сервис представить - Web Service, API или XML Request?
Давайте обсудим такую идею?
ПС Если нужен отдельный топик - можно создать.
Непонятно откуда взяты данные, что префикс также используется и внутри штатов:
Так на qrz.com и посмотрите - KC4UA, KC4URT и другие.
EW4DX:
Там я смотрел... Меня интересуют официальные источники, чтоб блок префиксов в парсер и базу загнать. Алекс Шовкоплайс в своем файле такое имеет... Вопрос, а где он нашел такое инфо в инете. Мне ссылочка нужна...
С файлом .CTY понятно... То есть поступаем по принципу override для списка позывных. Так и делается, но вот размеры такой базы уже большие, а будут еще больше. Для быстродействия используем так называемые in-memory tables, однако их объем уже составляет без малого 15-17 мегов...
Стесняюсь спросить - а от куда такой объем данных? Вы что, для каждого позывного отдельно координаты вводите? У меня в логе модифицированный фаил cty.dat со многими усключениями имет объем ... 120 кб. Введя туда все возможные испключения, объем бы составил ну максимум 1 мб. Ах ну да, у Вас же технология Net - все монстроподобно :)
По поводу проекта - программа nGenLog.
Оба-на! Не люблю критиковать братьев-программеров, но тут не могу сдержаться! Прошлой осенью я набрел на этот лог. Скачал - объем - 15 мег - уже не мало. Попытался установить - оказалось, что надо скачать еще 200 мег (!!!) Microsoft .NET Framework 3.5!!! И это Вы называете не монстроподобно?!! А у меня траффик был планный, даже пробовать дальше не стал - удалил сразу...
RX4HX:
По объему данных... поясняю. Во-первых, лог базируется не только на таблицах из файла .CTY, а также на таблицах для IOTA, WLOTA, RDA, WAB, DIEI, IIA и других дипломов. Если вы посчитаете суммарный объем, то как раз и получится. И не вижу причину для смеха.
По поводу нашего проекта. Не надо хаять то, к чему не приложил свою руку. Это раз. Кроме того, зачем надо было стаскивать полную версию 3.5, если Redistributable .NET 3.5 занимает всего 2.7 MB?? :) Опять от не знания или от его избытка? Если честно, мне все хочется спросить, вы сами программист или пользователь? Если последнее, то все становится понятным... а если нет, то остается удивляться...
Алекс Шовкоплайс
Шовкопляс он :)
источники есть для каждой информации внутри пакета, см. внимательно структуру.
По объему данных... поясняю. Во-первых, лог базируется не только на таблицах из файла .CTY, а также на таблицах для IOTA, WLOTA, RDA, WAB, DIEI, IIA и других дипломов. Если вы посчитаете суммарный объем, то как раз и получится. И не вижу причину для смеха.
вы для каждого позывного храните информацию о нем? Если это так, то это перебор ИМХО. Если же это только списки референсов - то как-то многовато. у меня все в 6 мегов влазит при далеко не маленьком списке дипломов.
Опять от не знания или от его избытка? Если честно, мне все хочется спросить, вы сами программист или пользователь?
Я программист. И пользователь. Зашел на сайт nGenLog'а. Там стоит ссылка - для установки лога скачайте вот это... и ссылка на сайт майкрософт. Если можно было не все качать, зачем там такая сылка стоит?
Или я еще должен разбираться, что качать, а что нет? Просто замечательное отношение к пользователям...
[Off-topic]
Крууто! Насчет программиста... :) Просто за свою более, чем 20-летнюю практику программирования я впервые вижу программера, который не может четко понять, что требуется для установки, а хочет, чтобы ему все в рот разжевали, да положили. Кроме того, возвращаясь к вашему утверждению "о монстрообразности дотнет" - теперь понятно стало, что к чему... Вы же сами на нем строчки не написали, но критику наводите. То есть голословно утверждаете, то, что совершенно не знаете. И какой же вы тогда программист? :)
Как пользователь? Может быть, но даже пользователь думает, прежде, чем нажимать на клавишу "Enter"... иначе много чего может случиться. Как в анекдоте про лицензионное соглашение и статистику в России... :)
ПС Ссылки могут быть ошибочными, на то и голова дана... Раз вы программист, неужто бездумно код пишете? Кстати, если не сложно, а где можно посмотреть на ваши творения? Не с критикой, упаси боже для интереса... И на каком языке - было б интересно узнать, вы пишете...
И давайте все же конкретно по теме, без критиканства. Флуд и флейм я не хочу видеть.
Добавлено через 12 минут
Шовкопляс он :)
Вы для каждого позывного храните информацию о нем? Если это так, то это перебор ИМХО. Если же это только списки референсов - то как-то многовато. у меня все в 6 мегов влазит при далеко не маленьком списке дипломов.
Да знаю я, что Шовкопляс... При десяти-пальцевом методе печатания на клавиатуре иногда сбиваюсь... :)
По размеру базы. Если посчитать объем выкачанных данных с сайта IOTA по активациям, то уже набирается около 2.5 мегов информации. Кроме того, у нас на сегодняшний день поддерживаются 156 дипломов... включая все островные, маяки, провинции стран и другие. Поэтому суммарный объем стал уже 15-17 мегов. Но общий в базе. Естесственно мы не вгружаем все таблицы в память сразу, а используем так называемый механизм Materialize, то есть отложенный запрос, если другими словами. Это позволяет уложить весь список по позывным в памяти всего в 20-30 килобайт, поскольку храним лишь индекс и дескриптор объекта в памяти, а сам объект возвращаем со свойствами лишь во время активации, причем динамической. Достигнуто такое за счет LINQ Entity Framework, где работа ведется не на уровне таблицы, а на уровне иерархии объекта(ов). Дублирования позывных нет... база оптимизирована. Даже кросс-референс на один и тот же позывной, если он, например и в таблице IOTA, WLOTA и т.д., то он один, а не несколько одинаковых. Сделано на базе типа HIERARCHY в сиквеле 2008.
Кроме того, зачем надо было стаскивать полную версию 3.5, если Redistributable .NET 3.5 занимает всего 2.7 MB??
Скачать 3 МB и затем при установке тянуть еще 70? Я правильно понимаю?
TRegExpr
Это жалкое подобие шаблонов perl полистайте как-нибудь по шаблонам перл хелп, после этого вы его с этой хадостью сравнивать не будете...
Чего стоят только вложенные шаблоны с логическими операциями...
EW4DX:
Почти правильно... При установке можно отключить часть опций, ненужных по желанию пользователя. Иначе надо выкачать 68 мегабайт. Но в любом случае не 231 метра, как коллега...
В скором времени появится облегченная версия с выходом дотнет 4.0, а в обновлении (сервис-пак) к XP и Vista будет идти 3.5. Сейчас в сервис-паке 3 только 3.0, и в Vista по умолчанию тоже 3.0.
Добавлено через 4 минуты
Это жалкое подобие шаблонов perl полистайте как-нибудь по шаблонам перл хелп, после этого вы его с этой хадостью сравнивать не будете...
Правильно замечено - жалкое подобие... лучше не скажешь... :)
Чего стоят только вложенные шаблоны с логическими операциями...
Вот как раз этого нам и не хватает... :( Ну почему не встроить в стандартный класс RegEx? А приходится его наследовать и извращаться... Слава богу, есть перл под дотнет, где все на ура сделано, да и по уму...
EW4DX:
Почти правильно... При установке можно отключить часть опций, ненужных по желанию пользователя. Иначе надо выкачать 68 мегабайт. Но в любом случае не 231 метра, как коллега...
Мда... Получается, придется выкачать в сумме 100 мег, только для того, чтобы посмотреть, что же такое ngenlog? Честно - у меня интерес уже пропал.
Скачать 3 МB и затем при установке тянуть еще 70? Я правильно понимаю?
Да Игорь, именно так :) Я тоже малась офигел...
То RX1AL: посмотреть мои творения можно сдесь: http://rx4hx.qrz.ru
Обсудить вот здесь: http://forum.qrz.ru/thread19958.html
Добавлено через 5 минут
Просто за свою более, чем 20-летнюю практику программирования я впервые вижу программера, который не может четко понять, что требуется для установки, а хочет, чтобы ему все в рот разжевали, да положили.
Я просто балдею: у вас на сайте черным по белому написано:
System Requirements
-Operating System: Windows XP with Service Pack 2 or Windows Vista
-Processor: 400 MHz Pentium or equivalent (Minimum); 1GHz Pentium or equivalent (Recommended)
-RAM:96 MB (Minimum); 256 MB (Recommended)
-Hard Disk: Up to 500 MB of available space may be required
-Display: 1024 x 768 or more
-Microsoft .NET Framework 3.5: (click here to download)
click here to download - т.е. я еще и должен знать, что "click here to download", это значит вовсе не "click here to download", а "click here to download", но где-то в другом месте! 5 баллов! Давно так не смеялся! :)
Мда... Получается, придется выкачать в сумме 100 мег, только для того, чтобы посмотреть, что же такое ngenlog? Честно - у меня интерес уже пропал.
Какое 100 мб. 40 мб от силы нужно
Да и в SP3 Microsoft .NET Framework 3.5 уже есть
Что Вы на это скажете
Да и в SP3 Microsoft .NET Framework 3.5 уже есть
Что Вы на это скажете
Сомневаюсь. У меня SP3, и то версию 3.0 пришлось ставить отдельно. А закачав 2.7 мега Redistributable .NET по рекомендации RX1AL при установке он еще захотел стянуть 70 мегов. И при этом не дает выбора, что закачивать, а что нет. И тянуть всю эту массу, только чтобы посмотреть хотя бы на внешний вид программы - разве это нормально? Скриншотов лога нигде нет.
UR5FCM:
Игорь, я уже сомневаюсь что EW4DX грамотный пользователь... Хотя бы в плане того, что он не знает, что в SP3 включено. Кроме того SP2 для Windows XP содержит полную версию дотнет 3.0.
EW4DX:
И скриншот лога, на основной странице сайта... Что-то опять не заметили...? :)
Добавлю еще, что лог изначально назывался HF Logg, написанный шведами. Совместно было решено сделать на его основе новую версию. В разделе Links есть вся инфа, а также и другие скриншоты. Могу сказать, что они ничем не отличаются от новой версии... Или опять будем говорить, что не нашли? :)
RX4HX:
Относительно вашего гомерического смеха RX4HX... Я отвечу очень просто: программиста оценивают не по тому, что он говорит, а по тому, как он проги пишет. Пока я не видел ни одного фрагмента вашего кода... живого кода... Скриншоты и обсуждение на форуме, к сожалению не добавляет уверенности в вашей грамотности... Выложите кусок кода, тогда поговорим...
ПС Код от Игоря я видел и работаю с ним дальше... Могу сказать только о высоком уровне кода и полном понимании того, что он делает. А мульки на скриншотах - дело десятое. Гораздо важнее стабильность и функциональность приложения... А формочки, то бишь интерфейс можно любой привинтить...
Игорь, я уже сомневаюсь что EW4DX грамотный пользователь...
Может, и так. У меня виндовс на автообновлении, а в нем есть только версия 3.0. И то отдельно сам устанавливал вроде бы. А вчера поставил Windows SP2 товарищу, накатил SP3, и после установки и запуска Nero9 он мне сказал - сорри, надо иметь версию 3.0! Где что неправильно сделано? Вот со скриншотом да, мне его файервол обрезал, похоже, с главной страницы. Теперь увидел. Не судите строго... Для того и задаю вопросы, что хочу разобраться.
EW4DX:
Да не сужу я... тем более строго... :) Я лишь хотел ещё раз подчеркнуть, что слепо действовать или кнопки топтать на клаве, не надо... Всегда нужно себя или другого спрашивать, а можно ли или нет. По поводу Windows XP на автоматическом обновлении. Во-первых, как специалист, советую сразу же отключить эту опцию в настройках, так как в основном идут секьюрити обновления, а также часто возможна ситуация когда так называемый fire апдейт просто блокирует систему. Уже не раз такое встречалось. Кроме того, сам сервис-пак в этом случае не ставится. Его всегда нужно отдельно устанавливать. И последнее: не надо накатывать 3-й сервис-пак на 2-й. Это ошибка, часто критическая. Нужно деинсталлировать 2-й и начисто поставить 3-й. В случае, если система приобреталась (или скачивалась... источников много...) со 2-м, то надо искать сразу с 3-м, а не пытаться их поженить. Ничего хорошего с установленными старыми приложениями у вас не будет. Тот же пример с Nero 9, а их гораздо больше на самом деле. И последнее, в силу того, что у нас софт распространяется по ... каналам, не советую, искренне. Патчить или хакать систему для регистрации чревато... ни один апдейт не пройдет, проверка на сайте Микрософта, а взамен вы получаете с сайта апдейта от Микрософт патч, который больше не даст вам право на апдейт, так как система не лицензионная. Вот так.
И все же давайте ближе к теме. Нужен вам небольшой ликбез или практический совет - пишите мне в ЛС, всегда помогу и отвечу...
Кроме того, сам сервис-пак в этом случае не ставится.
Ставится. Проверено.
И последнее: не надо накатывать 3-й сервис-пак на 2-й. Это ошибка, часто критическая.
Из области домыслов. Проблем никогда не возникало. Хотя предпочитаю создавать установочный диск сам, и сразу туда вносить последний SP.
И еще раз повторюсь - в самом 3 сервис-паке Винды нет версии 3.5 дотнета. Вероятно, он имеется на установочном диске от микрософт как дополнительное приложение, но это совсем другая история.
EW4DX:
Если вы ставили сервис-пак на 1-й или 2-й, да согласно Микрософту он кумулятивный, можно ставить... но есть и исключения, а не домыслы... и реальные фишки. Почитайте в KB на самом сайте от Микрософт, тогда поймете - кто прав, а где домыслы...
Про "другую песню"... там он имеется... а в случае CD, которым пользуетесь вы, я не знаю... тут все может быть..., что и нету...
И давайте заканчивать на тему - "есть, нет, не ставится...". Топик на совершенно другую тему, а благодаря вашим стараниям он уехал в другую сторону... Хотите поспорить или конкретно подискутировать - откройте свой новый топик... Или пишите в ЛС. Честно, надоело...
ПС А насчет вашей проблемы с 3.5 прочитайте вот здесь: http://windowssecrets.com/2008/12/04/03-XP-Service-Pack-3-blocks-.NET-security-patches и поймете, что использование ... софта чревато...
И давайте заканчивать на тему - "есть, нет, не ставится...".
Да пожалуйста. :smile3:
Сообщение от RX1AL
И давайте заканчивать на тему - "есть, нет, не ставится...".
Давайте... не ставится.
Скриншоты и обсуждение на форуме, к сожалению не добавляет уверенности в вашей грамотности...
Зато:
1. Мой лог имеет на порядок больший функционал (это я сегодня на работе не поленился - все скачал и попробовал, у меня хоть и фирменный с компом SP3 - все равно как и дома все скачивать пришлось);
2. Чтоб попробовать мой лог надо всего 4 мб скачать (как говориться, почувствуйте разницу!!!);
3. Не требует инсталляции - копируйте куда хотите и при переустановке винды его не надо будет заново устанавливать.
И самое главное: он БЕСПЛАТНЫЙ, а за Ваш лог еще и денег ходят брать.
Так что - не обижайтесь - для меня эта тема закрыта :)
RX4HX:
Не обижаюсь... с чего бы вдруг... Каждый хвалит свое болото... так уж заведено... :)
Насчет функционала я бы поспорил, но не хочется разводить дебаты на 20 страниц... толку не будет... Насчет объема вашего в 4 мегабайта по отношению к нашему в 15 мегов... У вас там какая база? Ах, да аксесс... А у нас SQL 2008 Express Edition в полной версии, так для корректности. Если вы можете почувствовать или знаете, какие преимущества имеет сиквел, то не будете здесь доказывать, что аксесс - самая крутая база на свете. В особенности по быстродействию и поддержке хранимых процедур. Когда надумаете сделать поддержку карт, как в DM780 или у нас - посмотрим, что скажете.
Не требует инсталляции - скорее минус, чем плюс... Попробуйте запустить свой лог на Виста и упрётесь сразу же в UAC...
Следующие моменты, не как критика, а как пожелания и совет... Приложения, написанные с использованием MDI или SDI - прошлый век, если не каменный. Давно пора переходить на современные типы интерфейса с docking. Сразу отпадут все вопросы по размещению положений окон (то, что называется form persistent), не надо будет извращаться с "приклеиванием" окон, с передачей фокуса в активные окна и параметры в них. А у вас такие грабли есть и на каждом шагу. Кроме того, проверка правильности ввода пользователем данных во многих местах отсутствует.
Главный минус - привязка на API самой системы. А это не есть гут. Всегда надо стараться избегать этого. Но вам видать виднее... :)
И самый последний аргумент к "зато" - наш лог работает и в Windows и в Линукс системах, без переписи кода. Будет и в Мак. А ваш... то-то...
Иными словами, прежде, чем писать "зато", надо сравнить основные отличия и преимущества, а потом уж выводы делать...
ПС Кроме того, судя по используемому коду, много чего взято из исходников от N1MM... то есть не свое решение с нуля... И копирование лога в директорию - тоже инсталляция... :)
У вас там какая база? Ах, да аксесс...
Значит говорите програмист... И не можете отличить базу аксесс от не аксесс... Еще раз насмешили. А Вы вообще хоть ради интереса, мой лог смотрели? Или "давайте спорить о вкусе папайя с теми, кто их ел?" . Я от Ваш ради интереса смотрел.
Не требует инсталляции - скорее минус, чем плюс... Попробуйте запустить свой лог на Виста и упрётесь сразу же в UAC...
Еще раз насмешили. Вы просто меня сегодня прим веселите! Чую класс программиста! А лог то под SP1 висты работае без проблем... Писать программы просто надо нормально.
ПС Кроме того, судя по используемому коду, много чего взято из исходников от N1MM...
Ну и это просто хит!!! Сравнивать N1MM (контест-лог) написанный на бейсике с базой на ексее с логом (для повседневных связей) написанным на Дельфи с совершенно другой базой! Браво! Я... я просто катаюсь со смеху по полу!
RX4HX:
Ну я тоже покатаюсь со смеху... Можно? Сначала про то, как "хорошо" ваша программа совместима с Виста... Начнем с того, что по вашим утверждениям ее "просто надо скопировать в директорию". Поехали. Берём архив, через Total Commander и пытаемся скопировать содержимое тупо на диск С:\ - получаем сразу отлуп от Виста - "Access Denied". То есть нарвались сразу на Elevation User Access Control (UAC), видим кнопку "As Administrator", опять облом (вот досада!) по умолчанию то, нет прав... Какая беда, не правда ли? :) Ну и последнее, под Виста... посмертный, так сказать скриншот версии 17.0.0.399, при полном событии, называемом application hang. Смотреть ниже.
Ну так и кто тут программер? :) Классно пишем приложения, нечего сказать... Ну о других багах под ХР, будет чуть позднее, там ваще песня... :)
Скачал nGenLog...
Ну не утерпел я :( Сортировку в списке связей кто у вас писал? Настучите ему по голове. 160 метров идут за 80-ю метрами, а никак не за 15-ю.
Насчет объема вашего в 4 мегабайта по отношению к нашему в 15 мегов...
стоп, стоп, стоп... договорились же уже что 100 мегов :)
А у нас SQL 2008 Express Edition в полной версии
и что? это не повод раздувать до таких объемов. Есть куда более компактные полнофункциональные серверы без ограничений SQL 2008 EE.
Не требует инсталляции - скорее минус, чем плюс... Попробуйте запустить свой лог на Виста и упрётесь сразу же в UAC...
насчет инсталлера согласен, 90% проще запустить один exe. А насчет UAC, даже в MS уже поняли что перестарались.
Приложения, написанные с использованием MDI или SDI - прошлый век, если не каменный. Давно пора переходить на современные типы интерфейса с docking. Сразу отпадут все вопросы по размещению положений окон (то, что называется form persistent), не надо будет извращаться с "приклеиванием" окон, с передачей фокуса в активные окна и параметры в них.
Мне не кажется, что приложение считающее что оно одно на рабочем столе - намного эффективнее. :-/
И самый последний аргумент к "зато" - наш лог работает и в Windows и в Линукс системах
про линукс что-то нигде не видно...
Будет и в Мак
Не говори "Гоп" пока не перепрыгнешь. :)
А ваш... то-то...
А вам не приходило в голову что человек и не собирался писать под другие платформы? Он изначально ограничил себя Windows и больше ему ничего не нужно. Тем более во фришном логе.
Иными словами, прежде, чем писать "зато", надо сравнить основные отличия и преимущества, а потом уж выводы делать...
Знаете, НИ ОДНОГО функционального преимущества, кроме использования МОДНЫХ технологий я в nGenLog не увидел. В целом изящный интерфейс - не поспоришь, но при этом ОБЯЗАТЕЛЬНАЯ необходимость для работы мыши (иногда фокус просто теряется и клавиатурой не находится), крайне неудобная статистика. И ряд мелких багов, не буду перечислять...
RX4HX:
Следующая фишка в вашем логе, от которой просто под стол падать надо, по-другому не скажешь... использование borlandmm.dll - Borland Memory Manager. Слов нет, одни ???? - контроль за распределением памяти... не, воистину круто... :) По-немецки есть выражение: Еs brennt jetzt wahnsinnig! - лучше не скажешь. Едем неспеша далее, и обнаруживаем еще один атавизм со времен древнейших файлов .ini - файлы формата .awr. То есть парсим тупо в лоб все секции и загоняем данные в массив. Производительность приложения просто отдыхает... и курит в тамбуре. А взять формат XML, как стандарт де-факто не догадаться было? Или как написать парсер для него не знаем... Не весело с вами жить... :)
И главная ошибка - завязка на ядро - kernel32.dll. А если 64-бита взять? Так там вообщи кричи караул, так как работать не будет...
ПС Да, забыл сказать... полный-то объем вашего лога не 4 мега, а все 9.2 мега будет... Уж здесь бы не лукавили... :)
RZ4AG:
Александр, спасибо... за критику, когда она по делу, а не так, для базара... :) Сортировку писал не я, да там поправить дело минутное... Кроме того, то, что вы видите в демо версии - не есть то, что в разработке... Насчет 100 мегов - нет, не договорились... :) Давайте разделим: а) объем самого приложения и б) объем пре-реквизитов. Так будет корректнее. Ибо если взять джава приложение, то там надо и JRE вытащить, если не стоит.
По поводу SQL 2008EE - выбор пал на него из-за поддержки данных GIS и ESRI формата, а также иерархических структур. Кроме того все программеры в основном на сиквеле работали. Хотя в сторону Personal Oracle и Postgress смотрим. UAC пока не сильная помеха, даже при его назойливости. Выйдет скоро патч на эту тему.
Про приложение... Нет, суть построения современного приложения сейчас строится на двух вещах - либо SOA, либо Smart Client. И оба на основе Composite Block, где смысл в том, что приложение представляет собой контейнер, а все формы - контекст внутри контейнера. Возьмите тот же Microsoft Office или VS 2005/2008. Office вообще считается в мире уже стандартом для приложений.
Про Линукс не написано... знаю... :) Напишем и покажем. У нас принцип, не выкладывать не оттестированное... Будет кстати и под веб для двух платформ IE и Firefox.
Насчет преимуществ... есстественно, по сравнению с такими логами, как Logger32, DX4WIN, Logic - да... но мы и пишем всего полгода. И не только пишем, а еще и портируем HF Logg и многое берем от Ham Office (жаль на немецком, а так вещь) - но много появится. Все же не только пишут, а и работают тоже...
Ну не утерпел я Сортировку в списке связей кто у вас писал? Настучите ему по голове. 160 метров идут за 80-ю метрами, а никак не за 15-ю.
Это нет так. Все идет по порядку
С сортировкой все норма как положено
2190м - 160м -80м
Незнаю почему у Вас так
См скриншот:
Цитата:
Сообщение от RZ4AG Посмотреть сообщение
Ну не утерпел я Сортировку в списке связей кто у вас писал? Настучите ему по голове. 160 метров идут за 80-ю метрами, а никак не за 15-ю.
Это нет так. Все идет по порядку
С сортировкой все норма как положено
2190м - 160м -80м
Незнаю почему у Вас так
Потому что читать надо внимательно. :) Я написал в СПИСКЕ связей, а не при вводе связей. Отсортируйте связи по диапазону.
Есть вопрос по базе позывных на диске QRZ Ham Radio CDROM от QRZ.com.
Поиск в этой базе произвожу с помощью функций из qrz32.dll.
Так вот, при вводе некоторых позывных эта dll виснет.
Может кто знает другой алгоритм поиска в этой базе без qrz32.dll?
Может кто знает другой алгоритм поиска в этой базе без qrz32.dll?
Может кто и знает...
Есть вопрос по базе позывных на диске QRZ Ham Radio CDROM от QRZ.com.
Поиск в этой базе произвожу с помощью функций из qrz32.dll.
Так вот, при вводе некоторых позывных эта dll виснет.
Может кто знает другой алгоритм поиска в этой базе без qrz32.dll?
Владимир, а в чем там конкретно проблема? Поясните подробнее... Просто мы используем эту же DLL, написали для нее свой wrapper для C# и все работает. Кроме того, на самом сайте QRZ.COM (если не убрали) было подробное описание всего API и примеры. А помочь всегда можно... и нужно, тем более вы большое дело делаете...
Следующая фишка в вашем логе
Ладно, прекращаем бесполезный спор. Думаю только пользователи поставят все на свои места. Собственно ради них все и писалось :)
Ладно, прекращаем бесполезный спор. Думаю только пользователи поставят все на свои места. Собственно ради них все и писалось :)
И после таких критических ошибок, вы считаете себя программистом и спор бесполезным? Конечно, как программисту вам обидно, что такие ошибки нашли... Я могу понять. Но вот чего не могу, так это критиковать труд других, не написав ни строчки кода на C# и WPF, о которых вы тут так горячо рассуждали... и поливали... Одно дело, когда о достоинствах и недостатках рассуждает компетентный программер, а другое дело, когда программер только по наслышке.
Пишите свой лог, правьте ошибки, баги, иксепшн... Будущее оно покажет...
ПС Вот как раз пользователь под Виста и не оценит ваш труд, так как аппликуха сказала просто "ква" и баххх"... :)
Владимир, а в чем там конкретно проблема? Поясните подробнее... Просто мы используем эту же DLL, написали для нее свой wrapper для C# и все работает. Кроме того, на самом сайте QRZ.COM (если не убрали) было подробное описание всего API и примеры. А помочь всегда можно... и нужно, тем более вы большое дело делаете...
Программа написана на Delphi.
Здесь описание процедур и функций qrz32.dll.: http://files.ur5eqf.com/UQRZSearch.rar.
Виснет при вызове функции QRZSearch, на некоторых, позывных.
QRZSearch(QRZCALL, CALL, '', '', Buf, RAW_FMT);
Позывной, на пример HS0ZGD, в файле callbkc.dat, записан два раза.
HB9TQZ,HS0ZGD
………..
HB9TQZ,LINDBLOM,.248,STIG,,,,,20; AV. APPIA; WHO - GMG/ITT/TMS,GENEVA 27,,,,HS0ZGD,
Если убрать "первую" строку – работает без проблем.
Но самое интересное:
Подключаю этот справочник позывных к Миксу – нет проблем,
К ААлогу – нет проблем.
Эти программы ни какой информации по этим позывным не выводят, но и не виснут
UR5EQF:
Владимир, что могу сказать сразу после просмотра вашего кода. В функции QRZSearch у вас есть output параметер Found: PChar. Он принимает тип только одной строки, то есть скаляр. У вас же в файле находится две записи по одному и тому же позывному. То есть массив из строк. Поэтому возможно и не работает. Поставьте в функции проверку на возможность нескольких значений и выбирайте, например из полученного массива строк, только первое значение. Или добавьте пользовательский критерий выбора, например из выпадающего списка. Иначе дублирующие записи получаются, а функция возвращает только один параметр...
ПС Насчет микса и АА лога не скажу, почему там работает.
Не удалось мне решить проблему с qrz32.dll.
Пришлось самому написать процедуру поиска в базе позывных.
Здесь описание процедур и функций qrz32.dll.: http://files.ur5eqf.com/UQRZSearch.rar.
Виснет при вызове функции QRZSearch, на некоторых, позывных.
Код Ваш не корректный:
function QRZSearch(Mode: integer; Key1: string; Key2: string; Key3: string;
var Found: PChar; Fmt: integer): Integer; stdcall;
begin
if LibHandle = 0 then
begin
Result := -1;
Exit;
end;
Result := _QRZSearch(Mode, PChar(Key1), PChar(Key2), PChar(Key3), Found, Fmt);
end;
Я бы написал вот так:
function QRZSearch(Mode, Fmt: Integer; Key1, Key2, Key3: String; var Found: String): Integer;
var
szBuf: array [0...1024] of Char;
begin
Result := -1;
if (LibHandle <> 0) and (@_QRZSearch <> nil) then
begin
Result := _QRZSearch(Mode, PChar(Key1), PChar(Key2), PChar(Key3), @szBuf, Fmt);
Found := szBuf;
end;
end;
И так как библиотека загружается в секции initialization модуля, то смысл в динамической загрузке теряется.
Спасибо, попробовал так. И так виснет......
Я написал свой обработчик, может кому пригодиться:
http://ur5eqf.com/index.php?option=com_content&task=view&id=56&Itemid=84
Powered by QRZ.RU