Re[5]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.12.11 20:30
Оценка: 4 (1) +1
Здравствуйте, AlexNek, Вы писали:

AN>Но по идее, починить/переделать можно довольно многое. Найти может быть непросто.


Я уже все починил. Там, помимо этого, еще пачка багов была.
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re: Проблема: горячие клавиши для сообщений не работают
От: _Raz_  
Дата: 17.04.11 10:48
Оценка: +1
Здравствуйте, AlexNek, Вы писали:

AN>Не знаю, может только у меня так.

AN>Но все горячие клавиши для сообщений не работают.
AN>F3 — по описанию должна быть панель фильтра показываться
AN>CtrlN — новое сообщение
AN>и т.д.
У меня работают. Но фокус ввода должен быть на списке тем или сообщении.
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Ошибки януса + ссылка на код
От: AlexNek  
Дата: 16.04.11 16:01
Оценка:
Чтобы не забывать что я исправил в "своей" версии и заодно описать проблемы текущей решил создать новую ветку. Кроме описания ошибки, хочется указать где она проявляется и возможный путь исправления (как раз большие возможности для обсуждения)
Если путь исправления всех устроит, думается можно внести коррекцию и в текущую версию.
Не забывайте только изменять тему при описании ошибки.
avalon 1.0rc3 rev 380, zlib 1.2.3
Ошибка при создании нового сообщения
От: AlexNek  
Дата: 16.04.11 16:08
Оценка:
При создании нового сообщения (выбираем форум + кнопка в тоолбаре)
происходит вылет по индексу в param2[0] (Index was outside the bounds of the array)
        internal void SendEditor(ScintillaCommand cmd, int param1, byte[] param2)
        {
            // Initialize unmanged memory to hold the array.
            int size = Marshal.SizeOf(param2[0]) * param2.Length;

            IntPtr pnt = Marshal.AllocHGlobal(size);

            try
            {
                // Copy the array to unmanaged memory.
                Marshal.Copy(param2, 0, pnt, param2.Length);
                Win32Api.SendMessage(Handle, (uint)cmd, new IntPtr(param1), pnt);
            }
            finally
            {
                Marshal.FreeCoTaskMem(pnt);
            }
        }
avalon 1.0rc3 rev 380, zlib 1.2.3
Вариант1: Ошибка при создании нового сообщения
От: AlexNek  
Дата: 16.04.11 16:40
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> При создании нового сообщения (выбираем форум + кнопка в тоолбаре)

AN> происходит вылет по индексу в param2[0] (Index was outside the bounds of the array)

Некоторые сложности в том что вылет происходит в ScintillaWrapper, поэтому пришлось добавить проект в сборку (точнее это я сделал еше раньше) и добавить автоматическое копирование в "Janus\Dependencies\scintilla\"

Теперь в этом файле
Janus\ScintillaWrapper\ScintillaEditor\Control\ScintillaEditor.cs


функция выглядит так
       internal void SendEditor(ScintillaCommand cmd, int param1, byte[] param2)
        {
            IntPtr pnt = IntPtr.Zero;
            if (param2 != null && param2.Length > 0)
            {
                // Initialize unmanged memory to hold the array.
                int size = Marshal.SizeOf(param2[0]) * param2.Length;

                pnt = Marshal.AllocHGlobal(size);
            }

            try
            {
                if (pnt != IntPtr.Zero)
                {
                    // Copy the array to unmanaged memory.
                    Marshal.Copy(param2, 0, pnt, param2.Length);
                }
                Win32Api.SendMessage(Handle, (uint)cmd, new IntPtr(param1), pnt);
            }
            finally
            {
                if (pnt != IntPtr.Zero)
                {
                    Marshal.FreeCoTaskMem(pnt);
                }
            }
        }
avalon 1.0rc3 rev 380, zlib 1.2.3
Ошибки/непонятка в редакторе нового сообщения показывается л
От: AlexNek  
Дата: 16.04.11 16:56
Оценка:
В редакторе нового сообщения показывается в поле "From" показывается логин пользователя, а не его имя.
К тому же все поля на английском "From", "Forum", "Subject"
До кода пока не добрался
avalon 1.0rc3 rev 380, zlib 1.2.3
Несоответствие сообщений статуса
От: AlexNek  
Дата: 16.04.11 17:34
Оценка:
Если отсылка сообщений успешно завершена, то отчего показаны ошибки при отсылке сообщений?
avalon 1.0rc3 rev 380, zlib 1.2.3
Ошибка: нет проверки на 0 ToHexString
От: AlexNek  
Дата: 16.04.11 21:05
Оценка:
При эксперименте с чтением всех пользователей вылетело по null тута
Janus\Janus-Common\Utils\SpecialByteConverter.cs

   public static class SpecialByteConverter
    {
        public static string ToHexString(this byte[] array)
...
avalon 1.0rc3 rev 380, zlib 1.2.3
Re: Несоответствие сообщений статуса
От: AlexNek  
Дата: 16.04.11 22:52
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> Если отсылка сообщений успешно завершена, то отчего показаны ошибки при отсылке сообщений?



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

Сама ошибка "прячется" в response, но проверить это "наверху" не получается пришлось сделать новое исключение SyncTroubleException и засылать его "наверх".
Janus\Rsdn\Janus.Rsdn\Synchronization\Tasks\PostMessagesSyncTask.cs


        protected override void ProcessResponse(
            ISyncContext context,
            PostRequest request,
            PostResponse response)
        {
            ClearOutbox(context, response.commitedIds);
            ClearRatesOutbox(context);

            context.StatisticsContainer.AddValue(JanusATInfo.OutboundMessagesStats, response.commitedIds.Length);
            context.StatisticsContainer.AddValue(JanusATInfo.FailedOutboundMessagesStats, response.exceptions.Length);
            context.StatisticsContainer.AddValue(JanusATInfo.OutboundRatesStats, request.rates.Length);

            Exception syncException = null;
            
            foreach (PostExceptionInfo ex in response.exceptions)
            {
                if (syncException == null)
                {
                    syncException = new SyncTroubleException();
                }

                SyncErrorInfo syncErrorInfo = new SyncErrorInfo(SyncErrorType.CriticalError, GetDisplayName(), ex.exception);
                syncException.Data.Add(syncErrorInfo, ex);
                context.TryAddSyncError(syncErrorInfo);
            }

            if (syncException != null)
            {
                throw syncException;
            }
        }
    }


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

Janus\Janus-Common\Synchronization\WebSvcSync\SimpleSyncTask.cs


        public void Sync(ISyncContext context, TSvc svc, int retries, ITaskIndicator indicator)
        {
...
            indicator.SetTaskState(SyncTaskState.Sync);
            try
            {
                context.CheckState();

                indicator.SetStatusText(SyncResources.IndicatorPrepareRequest);
                TRq rq = PrepareRequest(context);
                if (rq == null)
                {
                    return; // Nothing to do
                }

                context.CheckState();

                indicator.SetStatusText(SyncResources.IndicatorMakeRequest);

                Func<TRsp> requestMaker = delegate { return MakeRequest(context, svc, rq); };
                TRsp rsp = context.CallWithRetries(rq, GetDisplayName(), retries, requestMaker);

                context.CheckState();

                indicator.SetStatusText(SyncResources.IndicatorProcessResponse);
                SyncTaskState syncTaskState = SyncTaskState.Succeed;
                string finishText = SyncResources.IndicatorSuccessFinish;
                try
                {
                    ProcessResponse(context, rq, rsp);
                }
                catch (SyncTroubleException ex)
                {
                    syncTaskState = SyncTaskState.Failed;
                    finishText = SyncResources.IndicatorNotSuccessFinish;
                }

                context.CheckState();
                indicator.SetTaskState(syncTaskState);
                indicator.SetStatusText(finishText);
            }
            // Отмену пользователем не трактуем как ошибку и выкидываем наверх
            catch (UserCancelledException)
            {
                throw;
            }
            catch (Exception ex)
            {
...
            }
        }


Осталось еще исключение, но оно простое как валенок, да и содрано с UserCancelledException. Ну и еще надо добавить атрибут сериализации к SyncErrorInfo
avalon 1.0rc3 rev 380, zlib 1.2.3
Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 16.04.11 23:09
Оценка:
Добрался и до старой проблемы — пользователи загружаются по 1000 за цикл. Для 70 000 нужно много дней ждать. Пробовал только MakeRequest расширить из
Janus\Rsdn\Janus.Rsdn\Synchronization\Tasks\UsersSyncTask.cs

но похоже нужно еще и PrepareRequest менять для изменения lastRowVersion, а это уже на шару не получится.
Есть еще предложения?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re: Ошибка: нет проверки на 0 ToHexString
От: AlexNek  
Дата: 16.04.11 23:09
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> При эксперименте с чтением всех пользователей вылетело по null тута

AN>
Janus\Janus-Common\Utils\SpecialByteConverter.cs

AN>
   public static class SpecialByteConverter
AN>     {
AN>         public static string ToHexString(this byte[] array)
AN> ...


Это также исправил. Возможно лучше было иф инвертировать, но так уж с решарпером автоматом получилось. Может позже и поменяю.

       public static string ToHexString(this byte[] array)
        {
            if (array != null)
            {
                StringBuilder sb = new StringBuilder(array.Length * 2);
                foreach (byte b in array)
                {
                    sb.AppendFormat(CultureInfo.InvariantCulture, "{0:X2}", b);
                }

                return sb.ToString();
            }

            return string.Empty;
        }
avalon 1.0rc3 rev 380, zlib 1.2.3
Re: Ошибки/непонятка в редакторе нового сообщения показывает
От: ixor Россия  
Дата: 17.04.11 05:44
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>К тому же все поля на английском "From", "Forum", "Subject"


Тоже недавно заметил. Строковые ресурсы правятся в пару кликов (ресурсные файлы рядом). Засуну в общий патч по ресурсам.
Есть еще проблемка с отображением для 120dpi.
Я бы мог и это поправить, но тут у меня тоже вопрос. Студия очень старательно перекапывает весь файл при этом! И немного боязно такое отдавать разработчикам, потому что оно под XP 96dpi потом немного иначе выглядит.

AN>До кода пока не добрался
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[2]: Ошибки/непонятка в редакторе нового сообщения показыв
От: AlexNek  
Дата: 17.04.11 08:32
Оценка:
Здравствуйте, ixor, Вы писали:

i> AN>К тому же все поля на английском "From", "Forum", "Subject"


i> Тоже недавно заметил. Строковые ресурсы правятся в пару кликов (ресурсные файлы рядом). Засуну в общий патч по ресурсам.

Пока не разбирался детально, но используемый подход по сравнению с multilang мне совсем не нравится. Да и есть еще две части не в ресурсах. Одна которую можно затащить в ресурсы как обычно и другая (атрибуты), которую будет непросто затащить.
i> Есть еще проблемка с отображением для 120dpi.
А у кого она может появится и как это менять для теста? Еще ни разу не сталкивался.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 17.04.11 09:44
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> Добрался и до старой проблемы — пользователи загружаются по 1000 за цикл. Для 70 000 нужно много дней ждать. Пробовал только MakeRequest расширить из

AN>
Janus\Rsdn\Janus.Rsdn\Synchronization\Tasks\UsersSyncTask.cs

AN> но похоже нужно еще и PrepareRequest менять для изменения lastRowVersion, а это уже на шару не получится.
AN> Есть еще предложения?
Сделал вроде повтор забора пользователей по 1000, но оказывает 1000 стоит прежде всего на стороне клиента. В настройках программы можно увеличить (попробовал до 10000) но тест не прошел после всех игр осталось загрузить только 500 человек (таблицу пока не хочется очищать)
Есть ли ограничения на сервере?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[2]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.04.11 10:10
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Есть ли ограничения на сервере?


Есть.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[3]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 17.04.11 10:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AN>Есть ли ограничения на сервере?


AVK> Есть.

Известно сколько? И тогда в диалоге настроек должно быть нельзя набирать больше чем разрешено.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[4]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.04.11 10:31
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>> Есть.

AN>Известно сколько?

(userRequest.maxOutput > 0 && userRequest.maxOutput < 1000) ? userRequest.maxOutput : 1000


AN> И тогда в диалоге настроек должно быть нельзя набирать больше чем разрешено.


Возможно
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 10:41
Оценка:
Не знаю, может только у меня так.
Но все горячие клавиши для сообщений не работают.
F3 — по описанию должна быть панель фильтра показываться
CtrlN — новое сообщение
и т.д.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[2]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 10:54
Оценка:
Здравствуйте, _Raz_, Вы писали:

R> AN>Не знаю, может только у меня так.

R> AN>Но все горячие клавиши для сообщений не работают.
R> AN>F3 — по описанию должна быть панель фильтра показываться
R> AN>CtrlN — новое сообщение
R> AN>и т.д.

R> У меня работают. Но фокус ввода должен быть на списке тем или сообщении.

Про фокус то понятно. Значит я чего то сломал. Ладно, все равно Trace добавлять надо.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[5]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 17.04.11 10:54
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AVK>> Есть.


AVK> AN>Известно сколько?


AVK>
AVK> (userRequest.maxOutput > 0 && userRequest.maxOutput < 1000) ? userRequest.maxOutput : 1000
AVK>

То есть фиксированного ограничения нет, но в любом случае не больше 1000?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[2]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 11:09
Оценка:
Здравствуйте, _Raz_, Вы писали:

R> AN>Не знаю, может только у меня так.

R> AN>Но все горячие клавиши для сообщений не работают.
R> AN>F3 — по описанию должна быть панель фильтра показываться
R> AN>CtrlN — новое сообщение
R> AN>и т.д.

R> У меня работают. Но фокус ввода должен быть на списке тем или сообщении.

Пока непонятка какая то, то бишь не должно работать.

Горячие клавиши определены в Rsdn.Janus.ForumDummyForm, а контрол в фокусе
Rsdn.Janus.JanusGrid, по парентам тоже нет поиска если все хорошо
       private static Control GetControlFromHandle(IntPtr handle)
        {
            if (handle == IntPtr.Zero)
            {
                return null;
            }

            return Control.FromHandle(handle) != null
                       ? Control.FromHandle(handle)
                       : GetControlFromHandle(GetParent(handle));
        }

Почему у Вас работает не могу понять
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[3]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 11:28
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> R> AN>Не знаю, может только у меня так.

AN> R> AN>Но все горячие клавиши для сообщений не работают.
AN> R> AN>F3 — по описанию должна быть панель фильтра показываться
AN> R> AN>CtrlN — новое сообщение
AN> R> AN>и т.д.

AN> R> У меня работают. Но фокус ввода должен быть на списке тем или сообщении.


AN> Пока непонятка какая то, то бишь не должно работать.


AN> Горячие клавиши определены в Rsdn.Janus.ForumDummyForm, а контрол в фокусе

AN> Rsdn.Janus.JanusGrid, по парентам тоже нет поиска если все хорошо
AN>
       private static Control GetControlFromHandle(IntPtr handle)
AN>         {
AN>             if (handle == IntPtr.Zero)
AN>             {
AN>                 return null;
AN>             }

AN>             return Control.FromHandle(handle) != null
AN>                        ? Control.FromHandle(handle)
AN>                        : GetControlFromHandle(GetParent(handle));
AN>         }
AN>

AN> Почему у Вас работает не могу понять
Все понял
в этой функции все ищется, но там наследования не предусмотрено, а у меня оно появилось
public static Control FindControl(Control control, IDictionary ht)
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[6]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.04.11 11:41
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>То есть фиксированного ограничения нет, но в любом случае не больше 1000?


Верно. То же самое касается и сообщений.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[3]: Проблема: горячие клавиши для сообщений не работают
От: _Raz_  
Дата: 17.04.11 11:49
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>
       private static Control GetControlFromHandle(IntPtr handle)
AN>        {
AN>            if (handle == IntPtr.Zero)
AN>            {
AN>                return null;
AN>            }

AN>            return Control.FromHandle(handle) != null
AN>                       ? Control.FromHandle(handle)
AN>                       : GetControlFromHandle(GetParent(handle));
AN>        }
AN>

Вот тут нет такого кода
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Re[7]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 17.04.11 12:06
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AN>То есть фиксированного ограничения нет, но в любом случае не больше 1000?


AVK> Верно. То же самое касается и сообщений.

Но получается, если запросить 1000, но на самом деле меньше, то ошибки не происходит. Просто выдает меньше?
А если в цикле отбирать по максимуму пока все не отберется?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[4]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 12:06
Оценка:
Здравствуйте, _Raz_, Вы писали:

R> AN>
       private static Control GetControlFromHandle(IntPtr handle)
R> AN>        {
R> AN>            if (handle == IntPtr.Zero)
R> AN>            {
R> AN>                return null;
R> AN>            }

R> AN>            return Control.FromHandle(handle) != null
R> AN>                       ? Control.FromHandle(handle)
R> AN>                       : GetControlFromHandle(GetParent(handle));
R> AN>        }
R> AN>


R> Вот тут нет такого кода


Это вроде тоже самое или?
        private static Control GetControlFromHandle(IntPtr handle)
        {
            if (handle == IntPtr.Zero)
                return null;

            return Control.FromHandle(handle)
                ?? GetControlFromHandle(GetParent(handle));
        }

Сделал я поиск и в базовых классах, но так как для текущей конфигурации не требуется, то не выкладываю.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[4]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 12:20
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> AN> R> AN>Не знаю, может только у меня так.

AN> AN> R> AN>Но все горячие клавиши для сообщений не работают.
AN> AN> R> AN>F3 — по описанию должна быть панель фильтра показываться
AN> AN> R> AN>CtrlN — новое сообщение
AN> AN> R> AN>и т.д.

Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.
avalon 1.0rc3 rev 380, zlib 1.2.3
Проблема: не происходит обновление статуса сообщений
От: AlexNek  
Дата: 17.04.11 12:29
Оценка:
Выбираем форум с непрочитанными сообщениями.
Из тоолбара нажимаем кнопку "пометить все сообщения как прочитанные".
Сообщения нормально отмечаются в базе но для обновления нужно полностью перегрузить форум.

Если только одно сообщение помечать прочитанным, достаточно просто сменить выделенное сообщение на другое для обновления. Либо просто через ctrl-Tab сменить окна.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[8]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.04.11 13:34
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>> Верно. То же самое касается и сообщений.

AN>Но получается, если запросить 1000, но на самом деле меньше, то ошибки не происходит. Просто выдает меньше?

Конечно. 1000 это лимит.

AN>А если в цикле отбирать по максимуму пока все не отберется?


Лучше все таки увеличить лимит на сервере.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[9]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 17.04.11 14:01
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AVK>> Верно. То же самое касается и сообщений.


AVK> AN>Но получается, если запросить 1000, но на самом деле меньше, то ошибки не происходит. Просто выдает меньше?


AVK> Конечно. 1000 это лимит.

Тогда можно с настроек лимит просто убрать? Или?

AVK> AN>А если в цикле отбирать по максимуму пока все не отберется?*


AVK> Лучше все таки увеличить лимит на сервере.

Наверное не зря сделали, да и кто будет лимит до 70000 увеличивать?
Вообще то больше интересовало насколько плохо / неприемлимо будет предыдущее (*) решение. Я его то уже сделал, но одно дело когда это один пробует и другое когда все.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[3]: Ошибки/непонятка в редакторе нового сообщения показыв
От: ixor Россия  
Дата: 17.04.11 14:24
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, ixor, Вы писали:


i>> AN>К тому же все поля на английском "From", "Forum", "Subject"


i>> Тоже недавно заметил. Строковые ресурсы правятся в пару кликов (ресурсные файлы рядом). Засуну в общий патч по ресурсам.

AN>Пока не разбирался детально, но используемый подход по сравнению с multilang мне совсем не нравится. Да и есть еще две части не в ресурсах. Одна которую можно затащить в ресурсы как обычно и другая (атрибуты), которую будет непросто затащить.

Речь об атрибутах ?
[JanusDisplayName("")]
[JanusDescription("")]

i>> Есть еще проблемка с отображением для 120dpi.

AN>А у кого она может появится и как это менять для теста? Еще ни разу не сталкивался.

Появиться может у тех, кто пользуется большими буквами для больших разрешений, меняется в семерке
"Панель управления\Все элементы панели управления\Экран". Как в XP уже не помню ((
выглядит так
http://floomby.ru/content/CLKWEhvyEG/

Жить можно, но осадочек остается))))

Менять "для тестов" не советую! Требует перезагрузки и черевато испугом на малых разрешениях экрана, вплоть до порчи имущества

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[5]: Проблема: горячие клавиши для сообщений не работают
От: ixor Россия  
Дата: 17.04.11 14:26
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.


... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[4]: Ошибки/непонятка в редакторе нового сообщения показыв
От: AlexNek  
Дата: 17.04.11 14:33
Оценка:
Здравствуйте, ixor, Вы писали:

i> i>> AN>К тому же все поля на английском "From", "Forum", "Subject"


i> i>> Тоже недавно заметил. Строковые ресурсы правятся в пару кликов (ресурсные файлы рядом). Засуну в общий патч по ресурсам.


i> AN>Пока не разбирался детально, но используемый подход по сравнению с multilang мне совсем не нравится. Да и есть еще две части не в ресурсах. Одна которую можно затащить в ресурсы как обычно и другая (атрибуты), которую будет непросто затащить.


i> Речь об атрибутах ?

i> [JanusDisplayName("")]
i> [JanusDescription("")]
Да, только я видел немного другие
        [MethodShortcut(Shortcut.CtrlShiftO, "Открыть сообщение на RSDN",
            "Открыть сообщение на сайте RSDN.")]
        private void ShowMessageIntoExtBrowser()
        {
            ServiceManager.TryExecuteCommand("Janus.Forum.OpenMessageOnRsdn", new Dictionary<string, object>());
        }

i> i>> Есть еще проблемка с отображением для 120dpi.

i> AN>А у кого она может появится и как это менять для теста? Еще ни разу не сталкивался.


i> Появиться может у тех, кто пользуется большими буквами для больших разрешений, меняется в семерке

i> "Панель управления\Все элементы панели управления\Экран". Как в XP уже не помню ((
i> выглядит так
i> http://floomby.ru/content/CLKWEhvyEG/

Ааа, что то подобное можно сделать в дизайнере форм. Как я помню, надо формы переделывать "под динамику".
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[6]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 14:40
Оценка:
Здравствуйте, ixor, Вы писали:

i> AN>Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.


i>

Не всё так радужно как казалось, дело в том что хоть сообщения и правильно выделяются в гриде, в янусе происходит не опрос выделенных сообщений, а выбранных "нодах" с сообщениями. Надо грид еще доделывать. Функция "Выбрать все" может только там располагаться.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[5]: Ошибки/непонятка в редакторе нового сообщения показыв
От: ixor Россия  
Дата: 17.04.11 14:55
Оценка:
Здравствуйте, AlexNek, Вы писали:

i>> i>> Есть еще проблемка с отображением для 120dpi.


i>> AN>А у кого она может появится и как это менять для теста? Еще ни разу не сталкивался.


i>> Появиться может у тех, кто пользуется большими буквами для больших разрешений, меняется в семерке

i>> "Панель управления\Все элементы панели управления\Экран". Как в XP уже не помню ((
i>> выглядит так
i>> http://floomby.ru/content/CLKWEhvyEG/

AN>Ааа, что то подобное можно сделать в дизайнере форм. Как я помню, надо формы переделывать "под динамику".


Ммм Лучше формы переделывать под XAML ))) А с этим можно справиться и напильником)))

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[7]: Проблема: горячие клавиши для сообщений не работают
От: ixor Россия  
Дата: 17.04.11 15:00
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, ixor, Вы писали:


i>> AN>Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.


i>>

AN>Не всё так радужно как казалось, дело в том что хоть сообщения и правильно выделяются в гриде, в янусе происходит не опрос выделенных сообщений, а выбранных "нодах" с сообщениями. Надо грид еще доделывать. Функция "Выбрать все" может только там располагаться.

А какой юзкейс предполагается?

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[8]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 15:15
Оценка:
Здравствуйте, ixor, Вы писали:

i> i>> AN>Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.


i> i>>


i> AN>Не всё так радужно как казалось, дело в том что хоть сообщения и правильно выделяются в гриде, в янусе происходит не опрос выделенных сообщений, а выбранных "нодах" с сообщениями. Надо грид еще доделывать. Функция "Выбрать все" может только там располагаться.


i> А какой юзкейс предполагается?

Возможно в текущей версии не столь актуально, но когда у меня есть список "ответов мне" с десятком непрочитанных, проще всего выделить все и сказать "прочитать". Да и вообще Ctrl-A почти "стандартная" функция в винде, по крайней мере для меня.

Блин, надо еще и стартовать обновление статуса команд . Вот что значит оптимизация: обновляем статус команды только по выбору сообщения.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[6]: Ошибки/непонятка в редакторе нового сообщения показыв
От: AlexNek  
Дата: 17.04.11 15:15
Оценка:
Здравствуйте, ixor, Вы писали:

i> i>> i>> Есть еще проблемка с отображением для 120dpi.


i> i>> AN>А у кого она может появится и как это менять для теста? Еще ни разу не сталкивался.


i> i>> Появиться может у тех, кто пользуется большими буквами для больших разрешений, меняется в семерке

i> i>> "Панель управления\Все элементы панели управления\Экран". Как в XP уже не помню ((
i> i>> выглядит так
i> i>> http://floomby.ru/content/CLKWEhvyEG/

i> AN>Ааа, что то подобное можно сделать в дизайнере форм. Как я помню, надо формы переделывать "под динамику".


i> Ммм Лучше формы переделывать под XAML ))) А с этим можно справиться и напильником)))

Что то другого метода не припомню
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[9]: Проблема: горячие клавиши для сообщений не работают
От: ixor Россия  
Дата: 17.04.11 15:26
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, ixor, Вы писали:


i>> i>> AN>Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.


i>> i>>


i>> AN>Не всё так радужно как казалось, дело в том что хоть сообщения и правильно выделяются в гриде, в янусе происходит не опрос выделенных сообщений, а выбранных "нодах" с сообщениями. Надо грид еще доделывать. Функция "Выбрать все" может только там располагаться.


i>> А какой юзкейс предполагается?

AN>Возможно в текущей версии не столь актуально, но когда у меня есть список "ответов мне" с десятком непрочитанных, проще всего выделить все и сказать "прочитать". Да и вообще Ctrl-A почти "стандартная" функция в винде, по крайней мере для меня.

Понял.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[10]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 17.04.11 15:58
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, AlexNek, Вы писали:


AN>>Здравствуйте, ixor, Вы писали:


i>>> i>> AN>Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.


i>>> i>>


i>>> AN>Не всё так радужно как казалось, дело в том что хоть сообщения и правильно выделяются в гриде, в янусе происходит не опрос выделенных сообщений, а выбранных "нодах" с сообщениями. Надо грид еще доделывать. Функция "Выбрать все" может только там располагаться.


i>>> А какой юзкейс предполагается?

AN>>Возможно в текущей версии не столь актуально, но когда у меня есть список "ответов мне" с десятком непрочитанных, проще всего выделить все и сказать "прочитать". Да и вообще Ctrl-A почти "стандартная" функция в винде, по крайней мере для меня.
Вроде получилось. Пришлось правда "обмануть" и сказать что сообщения изменились

I>lD� lP� lP� l\� l\� lh� l�k��t

Что то у меня получаются в конце сообщения такие фигни. Может это из-за UT8?
Не попробуешь на свое сообщение ответить? У тебя в редакторе что будет?
... << RSDN@Home 1.2.0 alpha 5-AN rev. 1495>>
Re[10]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.04.11 16:06
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>> Конечно. 1000 это лимит.

AN>Тогда можно с настроек лимит просто убрать?

Нельзя. В настройках клиентский лимит, на сервере серверный.

AVK>> Лучше все таки увеличить лимит на сервере.

AN>Наверное не зря сделали,

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

AN> да и кто будет лимит до 70000 увеличивать?


Я.

AN> Я его то уже сделал, но одно дело когда это один пробует и другое когда все.


Я, честно говоря, вооще не понял, для чего ты там вообще что то правил.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 17.04.11 16:13
Оценка:
При экспорте в HTML происходит вылет по недостатку параметров
       public static Forum CreateInstance()
        {
            return TypeAccessor<Forum>.CreateInstance();
        }


       public Forum(IServiceProvider provider)
        {
            _serviceProvider = provider;
            _imageManager = ServiceProvider.GetRequiredService<IForumImageManager>();
        }
avalon 1.0rc3 rev 380, zlib 1.2.3
Ошибка: Экспорт в техт не работает
От: AlexNek  
Дата: 17.04.11 16:13
Оценка:
При выборе режима плоский текст и установках в настройках Unicode- выводится только 0xFEFF
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[11]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 17.04.11 18:06
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AVK>> Конечно. 1000 это лимит.


AVK> AN>Тогда можно с настроек лимит просто убрать?


AVK> Нельзя. В настройках клиентский лимит, на сервере серверный.

Ну так если все равно больше 1000 нельзя и точный лимит нельзя узнать без опроса сервера. Почему не забить максимум? Вроде на старых модемах уже никого не осталось


AVK> AVK>> Лучше все таки увеличить лимит на сервере.


AVK> AN>Наверное не зря сделали,


AVK> Сделали по аналогии с юзерами. Причем в те времена, когда железо было перегружено. Сейчас такая проблема остро не стоит, особенно учитывая что запрос юзеров примитивный, без джойнов и подзапросов.


AVK> AN> да и кто будет лимит до 70000 увеличивать?


AVK> Я.

ждемс

AVK> AN> Я его то уже сделал, но одно дело когда это один пробует и другое когда все.


AVK> Я, честно говоря, вооще не понял, для чего ты там вообще что то правил.

Ну захотел всех пользователей сразу поиметь, а не кликать сотню раз. Да и всего то одну виртуальную функцию добавил которая определяет нужно ли повторять процесс. Пока только для пользователей, но для сообщений уже не проблема.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[12]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.04.11 18:45
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>> Нельзя. В настройках клиентский лимит, на сервере серверный.

AN>Ну так если все равно больше 1000 нельзя и точный лимит нельзя узнать без опроса сервера. Почему не забить максимум?

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

AN> Вроде на старых модемах уже никого не осталось


Зато GPRS живее всех живых.

AVK>> Я, честно говоря, вооще не понял, для чего ты там вообще что то правил.

AN>Ну захотел всех пользователей сразу поиметь

Правкой клиента этого не добиться.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[13]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 17.04.11 19:09
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AVK>> Нельзя. В настройках клиентский лимит, на сервере серверный.


AVK> AN>Ну так если все равно больше 1000 нельзя и точный лимит нельзя узнать без опроса сервера. Почему не забить максимум?


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

Я и не думал про ошибку, просто не приходило в голову что кто то по GPRS-у с форумом может работать.

AVK> AVK>> Я, честно говоря, вооще не понял, для чего ты там вообще что то правил.


AVK> AN>Ну захотел всех пользователей сразу поиметь


AVK> Правкой клиента этого не добиться.

Может быть, но их всех заимел ...
В чем разница, нажимать кнопу пока ничего не будет приходить или заставить это делать прогу?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re: Ошибка: Экспорт в техт не работает
От: AlexNek  
Дата: 17.04.11 19:36
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> При выборе режима плоский текст и установках в настройках Unicode- выводится только 0xFEFF

Похоже здесь условие перепутано
Janus\Janus\Features\ForumViewer\Export\MessageExporter.cs

emd.UnreadMessagesOnly
? activeMsgSvc.ActiveMessages
: activeMsgSvc.ActiveMessages.Where(msg => !msg.IsRead));


и отладчик еще ругался что данные из другого треда забирают (сделал еще InvokeRequired). Так что у меня куча правок, включая переформатирование (именно поэтому и увидел, что по неверному пути пошло). То бишь если сообщение не прочитано оно будет экспортироваться, а если уже прочитано то нет. Ну и еще в качестве символа новой строки был только \n
avalon 1.0rc3 rev 380, zlib 1.2.3
Re: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 17.04.11 21:09
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN> При экспорте в HTML происходит вылет по недостатку параметров

AN>
       public static Forum CreateInstance()
AN>         {
AN>             return TypeAccessor<Forum>.CreateInstance();
AN>         }
AN>


AN>
       public Forum(IServiceProvider provider)
AN>         {
AN>             _serviceProvider = provider;
AN>             _imageManager = ServiceProvider.GetRequiredService<IForumImageManager>();
AN>         }
AN>


Как выяснилось, эта функция не только не нужна, но и вредна, так как экспорт пытается сам загрузить форум. Исправил экспорт так
        private static string BuildHTMLPage(IList<IMsg> msgs, ProgressDelegate progressDelegate, bool processSmiles)
        {
            TextFormatter formatter = new TextFormatter();
            StringBuilder stringBuilder = new StringBuilder();
            Forum forum = _activeForum;
            stringBuilder.AppendFormat(
...

Кроме того экспорт не учитывал кодировку указанную в хтмл
       private static void Export2HTML(IList<IMsg> msgs, Stream stream, ProgressDelegate progressDelegate)
        {
            Encoding encoding = Encoding.GetEncoding(1251);

            using (StreamWriter streamWriter = new StreamWriter(stream, encoding))
            {
                string htmlPage = BuildHTMLPage(msgs, progressDelegate, false);
                streamWriter.Write(htmlPage);
            }
        }


Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?
И картинок чего то нет и при экпорте всего форума (Философия программирования) хтмл получается получается слишком "широким" (это дуреет
Автор: Sinix
Дата: 15.04.11
из за последней цитаты) Видимо в css лажа. Кто спец и может сразу сказать что править?
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[10]: Проблема: горячие клавиши для сообщений не работают
От: ixor Россия  
Дата: 18.04.11 06:51
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, AlexNek, Вы писали:


AN>>Здравствуйте, ixor, Вы писали:


i>>> i>> AN>Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.


i>>> i>>


i>>> AN>Не всё так радужно как казалось, дело в том что хоть сообщения и правильно выделяются в гриде, в янусе происходит не опрос выделенных сообщений, а выбранных "нодах" с сообщениями. Надо грид еще доделывать. Функция "Выбрать все" может только там располагаться.


i>>> А какой юзкейс предполагается?

AN>>Возможно в текущей версии не столь актуально, но когда у меня есть список "ответов мне" с десятком непрочитанных, проще всего выделить все и сказать "прочитать". Да и вообще Ctrl-A почти "стандартная" функция в винде, по крайней мере для меня.

I>Понял.


Все нормально работает.
Посмотри как сообщения заканчивающиеся смайлами цитируются
Где-то ты перемудрил
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Re[13]: Проблема: пользователи загружаются по 1000 за цикл
От: ixor Россия  
Дата: 18.04.11 07:01
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>> Нельзя. В настройках клиентский лимит, на сервере серверный.

AN>>Ну так если все равно больше 1000 нельзя и точный лимит нельзя узнать без опроса сервера. Почему не забить максимум?

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


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

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Re[12]: Проблема: пользователи загружаются по 1000 за цикл
От: ixor Россия  
Дата: 18.04.11 07:11
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, AndrewVK, Вы писали:


AVK>> AVK>> Конечно. 1000 это лимит.


AVK>> AN>Тогда можно с настроек лимит просто убрать?


AVK>> Нельзя. В настройках клиентский лимит, на сервере серверный.

AN>Ну так если все равно больше 1000 нельзя и точный лимит нельзя узнать без опроса сервера. Почему не забить максимум? Вроде на старых модемах уже никого не осталось


AVK>> AVK>> Лучше все таки увеличить лимит на сервере.


AVK>> AN>Наверное не зря сделали,


AVK>> Сделали по аналогии с юзерами. Причем в те времена, когда железо было перегружено. Сейчас такая проблема остро не стоит, особенно учитывая что запрос юзеров примитивный, без джойнов и подзапросов.


AVK>> AN> да и кто будет лимит до 70000 увеличивать?


AVK>> Я.


На самом деле, если хорошо вдуматься, тебе вовсе не нужны все 70 000 юзеров, а нужны только те, чьи сообщения находятся в локальной БД + модераторы
Закачивая 1000 новых сообщений, обнаружить среди них >1000 новых пользователей возможно, только благодаря оценкам.
Алгоритм подкачки юзеров "на лету" был бы более гибок, но он дороговат и бесполезен на больших локальных БД
Это я так. Мысли в слух)))

С уважением. ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Re[13]: Проблема: пользователи загружаются по 1000 за цикл
От: ixor Россия  
Дата: 18.04.11 07:16
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AN>> Вроде на старых модемах уже никого не осталось


AVK>Зато GPRS живее всех живых.


Кстати, можно позаботиться о модемщиках и выдать им угрожающее предупреждение!

Хотите ли Вы загрузить 70 000 пользователей (количество трафика такое-то)!?
Да- грузим.
Нет — таскаем по 1000, как раньше.

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Re[13]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.11 07:19
Оценка:
Здравствуйте, ixor, Вы писали:

I>Алгоритм подкачки юзеров "на лету" был бы более гибок, но он дороговат и бесполезен на больших локальных БД


Проблема в том, что непоследовательный забор юзеров ломает алгоритм обновления по фиксируемой rowversion.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[11]: Проблема: горячие клавиши для сообщений не работают
От: ixor Россия  
Дата: 18.04.11 07:22
Оценка:
Здравствуйте, AlexNek, Вы писали:

I>>lD? lP? lP? l\? l\? lh? l?k??t

AN>Что то у меня получаются в конце сообщения такие фигни. Может это из-за UT8?
AN>Не попробуешь на свое сообщение ответить? У тебя в редакторе что будет?

Мдя-с. Брэнча сильно не хватает для проверки результатов.

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Re[14]: Проблема: пользователи загружаются по 1000 за цикл
От: ixor Россия  
Дата: 18.04.11 07:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ixor, Вы писали:


I>>Алгоритм подкачки юзеров "на лету" был бы более гибок, но он дороговат и бесполезен на больших локальных БД


AVK>Проблема в том, что непоследовательный забор юзеров ломает алгоритм обновления по фиксируемой rowversion.


Всё совсем плохо.
В сущьности, необходимость непоследовательного забора, только на первых семидесяти-восьмидесяти обновлениях возникает, а потом будет только зря лопать ресурсы.
А какие там порядки трафика должны быть со сжатием и без? Хотя бы грубая оценка.

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Re[12]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 18.04.11 15:27
Оценка:
Здравствуйте, ixor, Вы писали:

i> I>>lD? lP? lP? l\? l\? lh? l?k??t


i> AN>Что то у меня получаются в конце сообщения такие фигни. Может это из-за UT8?

i> AN>Не попробуешь на свое сообщение ответить? У тебя в редакторе что будет?

i> Мдя-с. Брэнча сильно не хватает для проверки результатов.

Уболтал, попробую куда то залить, все равно следующие две недели почти ничего не буду делать, но пока не работает без проблем
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[13]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 18.04.11 15:27
Оценка:
Здравствуйте, ixor, Вы писали:

i> AVK>> AVK>> Конечно. 1000 это лимит.


i> На самом деле, если хорошо вдуматься, тебе вовсе не нужны все 70 000 юзеров, а нужны только те, чьи сообщения находятся в локальной БД + модераторы

i> Закачивая 1000 новых сообщений, обнаружить среди них >1000 новых пользователей возможно, только благодаря оценкам.
i> Алгоритм подкачки юзеров "на лету" был бы более гибок, но он дороговат и бесполезен на больших локальных БД
i> Это я так. Мысли в слух)))
Безусловно, все пользователи ненужный балласт, но пока нет запроса по ид пользователя, другое решение не видно.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[11]: Проблема: горячие клавиши для сообщений не работают
От: AlexNek  
Дата: 18.04.11 16:12
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, ixor, Вы писали:


I>>Здравствуйте, AlexNek, Вы писали:


AN>>>Здравствуйте, ixor, Вы писали:


i>>>> i>> AN>Ура! Ctrl-A выделяет все сообщения. Правда еще пришлось IUIShell покурочить.


i>>>> i>>


i>>>> AN>Не всё так радужно как казалось, дело в том что хоть сообщения и правильно выделяются в гриде, в янусе происходит не опрос выделенных сообщений, а выбранных "нодах" с сообщениями. Надо грид еще доделывать. Функция "Выбрать все" может только там располагаться.


i>>>> А какой юзкейс предполагается?

AN>>>Возможно в текущей версии не столь актуально, но когда у меня есть список "ответов мне" с десятком непрочитанных, проще всего выделить все и сказать "прочитать". Да и вообще Ctrl-A почти "стандартная" функция в винде, по крайней мере для меня.

I>>Понял.


I>Все нормально работает.

I>Посмотри как сообщения заканчивающиеся смайлами цитируются
I>Где-то ты перемудрил

Пока не имею понятия. Но раз у тебя работает, то дело весьма вероятно в хреновой поддержке утф8. Но не понимаю почему твоя "подпись" видна только в янусе при просмотре сообщения.
... << RSDN@Home 1.2.0 alpha 5-AN rev. 1495>>
Re[14]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.11 16:35
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Безусловно, все пользователи ненужный балласт, но пока нет запроса по ид пользователя, другое решение не видно.


Запрос то сделать несложно, но проблем это не решает.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[15]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 18.04.11 17:19
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>Безусловно, все пользователи ненужный балласт, но пока нет запроса по ид пользователя, другое решение не видно.


AVK>Запрос то сделать несложно, но проблем это не решает.

А что тогда остается из проблем?
Делаем вначале список "нужных" пользователей, по мере закачки ставим флаг "закачан" и по мере прихода новых сообщений дополняем списк новыми "нужными" пользователями. Так как сообщения приходят до пользователей, то список будет актуальный. Хотя если год не синхронизироваться.....
... << RSDN@Home 1.2.0 alpha 5-AN rev. 1495>>
Re[16]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.11 17:31
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>А что тогда остается из проблем?


1) Повторно запрашивать все профили каждый раз неправильно. Значит надо проверять, каких нет. Это, при разрастании БД, операция весьма затратная.
2) Уже скачанные профили периодически меняются. Как это отслеживать, учитывая что линейная последовательность при произвольном доступе отсутствует?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[17]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 18.04.11 17:50
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>А что тогда остается из проблем?


AVK>1) Повторно запрашивать все профили каждый раз неправильно. Значит надо проверять, каких нет. Это, при разрастании БД, операция весьма затратная.

Ну вроде идею я описал, только вот не знаю как при больших базах будет происходить отлов дубликата. То есть я сделал список нужных пользователей, хочу их кинуть в базу на запрос передачи, а они уже там есть.
AVK>2) Уже скачанные профили периодически меняются. Как это отслеживать, учитывая что линейная последовательность при произвольном доступе отсутствует?
А как это сейчас отслеживается?
... << RSDN@Home 1.2.0 alpha 5-AN rev. 1495>>
Re[18]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.11 18:01
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>>1) Повторно запрашивать все профили каждый раз неправильно. Значит надо проверять, каких нет. Это, при разрастании БД, операция весьма затратная.

AN>Ну вроде идею я описал

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

AVK>>2) Уже скачанные профили периодически меняются. Как это отслеживать, учитывая что линейная последовательность при произвольном доступе отсутствует?

AN>А как это сейчас отслеживается?

По максимальному rowversion. Но это работает только при последовательном (в плане изменений) считывании профилей. С произвольной выборкой такой режим несовместим.

Единственное, что придумывается — спрашивать пользователей по результатам последнего запроса в параллель с основным алгоритмом скачивания. Но это тоже ощутимо затормозит синхронизацию, так как нужно будет проверять до 1000 профилей на их присутствие в БД. Получается улучшение на первые несколько дней на свежей БД vs постоянные увеличивающиеся тормоза при последовательной эксплуатации. ИМХО, овчинка не стоит выделки. Лучше увеличить до 10К лимит.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[19]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 18.04.11 18:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>>1) Повторно запрашивать все профили каждый раз неправильно. Значит надо проверять, каких нет. Это, при разрастании БД, операция весьма затратная.

AN>>Ну вроде идею я описал

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

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

AVK>>>2) Уже скачанные профили периодически меняются. Как это отслеживать, учитывая что линейная последовательность при произвольном доступе отсутствует?

AN>>А как это сейчас отслеживается?

AVK>По максимальному rowversion. Но это работает только при последовательном (в плане изменений) считывании профилей. С произвольной выборкой такой режим несовместим.

А как вообще работает rowversion? Что то типа временной метки? получается что измененные профили попадают просто как новые? Нельзя ли просто совместить произвольный с паралельным? То бишь В какой то момент говорим что у нас база полная и потом берем только последовательно.

AVK>Единственное, что придумывается — спрашивать пользователей по результатам последнего запроса в параллель с основным алгоритмом скачивания. Но это тоже ощутимо затормозит синхронизацию, так как нужно будет проверять до 1000 профилей на их присутствие в БД. Получается улучшение на первые несколько дней на свежей БД vs постоянные увеличивающиеся тормоза при последовательной эксплуатации. ИМХО, овчинка не стоит выделки. Лучше увеличить до 10К лимит.

Против вроде никого нет, просто рассматриваем другие варианты.
... << RSDN@Home 1.2.0 alpha 5-AN rev. 1495>>
Re[20]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.11 18:49
Оценка:
Здравствуйте, AlexNek, Вы писали:

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


А если синхронизация сбойнет?

AVK>>По максимальному rowversion. Но это работает только при последовательном (в плане изменений) считывании профилей. С произвольной выборкой такой режим несовместим.

AN>А как вообще работает rowversion? Что то типа временной метки?

Да. Для клиента важно лишь знать, что это число непрерывно возрастает по временной оси.

AN>получается что измененные профили попадают просто как новые?


Просто нет такого понятия — измененные/новые.

AN> То бишь В какой то момент говорим что у нас база полная


Кто говорит?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[21]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 18.04.11 19:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


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


AVK>А если синхронизация сбойнет?

То бишь сообщения будут в базе а пользователи нет? А если в одну транзакцию их?

AN>>получается что измененные профили попадают просто как новые?


AVK>Просто нет такого понятия — измененные/новые.

А что есть? Говорит ведь столько то пользователей получено значит среди них либо новые либо измененые.

AN>> То бишь В какой то момент говорим что у нас база полная


AVK>Кто говорит?

Да хоть бы и сетап.
... << RSDN@Home 1.2.0 alpha 5-AN rev. 1495>>
Re[22]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.11 19:21
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>>А если синхронизация сбойнет?

AN>То бишь сообщения будут в базе а пользователи нет? А если в одну транзакцию их?

Включать в транзакцию обращение по сети — очень плохая идея.

AN>>> То бишь В какой то момент говорим что у нас база полная


AVK>>Кто говорит?

AN>Да хоть бы и сетап.

Сетап в какой то момент?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[23]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 18.04.11 19:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>>А если синхронизация сбойнет?

AN>>То бишь сообщения будут в базе а пользователи нет? А если в одну транзакцию их?

AVK>Включать в транзакцию обращение по сети — очень плохая идея.

Я не говорил про сеть, только про запись в базу. Если собъется загрузка так не будет и записи.

AN>>>> То бишь В какой то момент говорим что у нас база полная


AVK>>>Кто говорит?

AN>>Да хоть бы и сетап.

AVK>Сетап в какой то момент?

Или после первого старта, незнаю. Главное, что получаем пользователей по двум каналам.
... << RSDN@Home 1.2.0 alpha 5-AN rev. 1495>>
Re[24]: Проблема: пользователи загружаются по 1000 за цикл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.11 19:49
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Я не говорил про сеть, только про запись в базу. Если собъется загрузка так не будет и записи.


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

AVK>>Сетап в какой то момент?

AN>Или после первого старта, незнаю.

Вот и я не знаю.

AN> Главное, что получаем пользователей по двум каналам.


Главное — чтобы количество проблем, привнесенных новой фичей, не было больше положительного эффекта от нее.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[25]: Проблема: пользователи загружаются по 1000 за цикл
От: AlexNek  
Дата: 18.04.11 20:22
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AN>Я не говорил про сеть, только про запись в базу. Если собъется загрузка так не будет и записи.


AVK> Ты не понял. Загрузили сообщения, записали в БД, полезли за пользователями и навернулись? Дальнейшие действия? Будет мержить сбойный словари и новый? Не слишком ли сложная система получается?

Загрузили сообщения, записали в БД, записали пользователей в запрос БД, полезли за пользователями и навернулись? Ну и фиг с ним у запросов не будет флага прочитано.

AVK> AVK>>Сетап в какой то момент?


AVK> AN>Или после первого старта, незнаю.


AVK> Вот и я не знаю.

Можно монетку кинуть

AVK> AN> Главное, что получаем пользователей по двум каналам.


AVK> Главное — чтобы количество проблем, привнесенных новой фичей, не было больше положительного эффекта от нее.

Согласен, но пока вроде никто не планирует подобного, просто иногда даже с "дурного" обсуждения можно вынести что то полезное.

Эх опасно, в Янусе чего набирать, установил авто синхронизацию, написал ответ и вылетело. Кто то в соседней ветке утверждал что Fast Fail это просто здорово.
database is locked ---> System.Data.SQLite.SQLiteException: The database file is locked
database is locked
   at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
   at System.Data.SQLite.SQLiteDataReader.NextResult()
   at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
   at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
   at BLToolkit.Data.DbManager.ExecuteOperation[T](OperationType operationType, Func`1 operation)
   --- End of inner exception stack trace ---
   at BLToolkit.Data.DbManager.OnOperationException(OperationType op, DataException ex)
   at BLToolkit.Data.DbManager.HandleOperationException(OperationType op, Exception ex)
   at BLToolkit.Data.DbManager.ExecuteOperation[T](OperationType operationType, Func`1 operation)
   at BLToolkit.Data.DbManager.ExecuteNonQueryInternal()
   at BLToolkit.Data.DbManager.ExecuteNonQuery()
   at BLToolkit.Data.DbManager.BLToolkit.Data.Linq.IDataContext.ExecuteNonQuery(Object query)
   at BLToolkit.Data.Linq.Query`1.NonQueryQuery(IDataContextInfo dataContextInfo, Expression expr, Object[] parameters)
   at BLToolkit.Data.Linq.Query`1.<SetNonQueryQuery>b__c(QueryContext ctx, IDataContextInfo db, Expression expr, Object[] ps)
   at BLToolkit.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute[TResult](Expression expression)
   at BLToolkit.Data.Linq.LinqExtensions.Insert[T](IValueInsertable`1 source)
   at Rsdn.Janus.OutboxHelper.AddOutboxMessage(IServiceProvider provider, IOutboxMessage message) in Y:\user_alex_new\dot_net\-Janus\Janus-Common\rsdn.ru\OutboxHelper.cs:line 50
   at Rsdn.Janus.MessageForm.SaveMessage(Boolean closeOnSave) in Y:\user_alex_new\dot_net\-Janus\Janus\Features\ForumViewer\MessageEditor\MessageForm.cs:line 707
   at Rsdn.Janus.MessageForm.SendMessage() in Y:\user_alex_new\dot_net\-Janus\Janus\Features\ForumViewer\MessageEditor\MessageForm.cs:line 825
   at Rsdn.Janus.MessageEditorService.SendMessage() in Y:\user_alex_new\dot_net\-Janus\Janus\Features\ForumViewer\MessageEditor\MessageEditorService.cs:line 35
   at Rsdn.Janus.MessageEditorCommandTarget.ExecuteSend(ICommandContext context) in Y:\user_alex_new\dot_net\-Janus\Janus\Features\ForumViewer\MessageEditor\Commands\MessageEditorCommandTarget.cs:line 21
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[2]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 19.04.11 05:28
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?

AN>И картинок чего то нет и при экпорте всего форума (Философия программирования) хтмл получается получается слишком "широким" (это дуреет
Автор: Sinix
Дата: 15.04.11
из за последней цитаты) Видимо в css лажа. Кто спец и может сразу сказать что править?


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

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[3]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 19.04.11 15:11
Оценка:
Здравствуйте, ixor, Вы писали:

i> AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?

i> AN>И картинок чего то нет и при экпорте всего форума (Философия программирования) хтмл получается получается слишком "широким" (это дуреет
Автор: Sinix
Дата: 15.04.11
из за последней цитаты) Видимо в css лажа. Кто спец и может сразу сказать что править?


i> Картинки же вроде бы в базу не попадают? Болтаются внешними ссылками.

i> Или на нах даже ссылки теряются?
i> Кстати, тут совсем неясная выгода от экспорта сообщений, когда в них есть ссылки на внешние картинки.
С картинками я вообще не разбирался, но нет даже смайликов.

А с css и "-" похоже прийдется самому разбираться.
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[2]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 30.04.11 16:24
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


Тире

&mdash; (черта длиной в заглавную букву М)


С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1510>>
Re[3]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.04.11 16:31
Оценка:
Здравствуйте, ixor, Вы писали:

i> AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


i> Тире


i>

i> &mdash; (черта длиной в заглавную букву М)

Кому в форуме эти отличия нужны и кто о них знает и помнит? Если бы этот символ еще везде нормально отображался.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[4]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 30.04.11 16:44
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, ixor, Вы писали:


i>> AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


i>> Тире


i>>

i>> &mdash; (черта длиной в заглавную букву М)

AN>Кому в форуме эти отличия нужны и кто о них знает и помнит? Если бы этот символ еще везде нормально отображался.

Я помню, что &mdash; это не просто тире))) Поэтому и ссылку прислал)))) Чисто для информации.
Про глюк у мозилы в инете тишина. Были какие-то глюки, но в древних версиях.

Как тебе вот такой код?
        /// <summary>
        /// EN DASH
        /// </summary>
        /// <remarks><c>&ndash</c> in HTML</remarks>
        public static readonly string EnDash = Convert.ToChar(0x2013).ToString();


С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1510>>
Re[5]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.04.11 17:14
Оценка:
Здравствуйте, ixor, Вы писали:

i> AN>Здравствуйте, ixor, Вы писали:


i> i>> AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


i> i>> Тире


i> i>>

i> i>> &mdash; (черта длиной в заглавную букву М)
i> i>>


i> AN>Кому в форуме эти отличия нужны и кто о них знает и помнит? Если бы этот символ еще везде нормально отображался.


i> Я помню, что &mdash; это не просто тире))) Поэтому и ссылку прислал)))) Чисто для информации.

Спасибо конечно, но я имел в виду другое. Ведь когда в форуме пишешь, думается: сейчас поставлю малое тире, здесь требуется поширше, а тут нужно обязательно большое. То бишь есть в ответах "нормальный минус/тире" ну так и оставить его как есть. Какие были требования для такой конвертации.

i> Про глюк у мозилы в инете тишина. Были какие-то глюки, но в древних версиях.

А нафиг мне что искать — открываю а тама "квадратик" (3.5 разве уже древняя?)

i> Как тебе вот такой код?

i>
i>         /// <summary>
i>         /// EN DASH
i>         /// </summary>
i>         /// <remarks><c>&ndash</c> in HTML</remarks>
i>         public static readonly string EnDash = Convert.ToChar(0x2013).ToString();
i>

Какие то двойственные чувства.
Если бы был уже готовый набор констант и от них генерить строки, то было бы более положительно. А так мне лично более приятней эта запись
public const string EnDash = "&ndash"; // 0x2013

Но это типа, "тебе больше нравятся брюнетки или блондинки"
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[6]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 01.05.11 05:26
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, ixor, Вы писали:


i>> AN>Здравствуйте, ixor, Вы писали:


i>> i>> AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


i>> i>> Тире


i>> i>>

i>> i>> &mdash; (черта длиной в заглавную букву М)
i>> i>>


i>> AN>Кому в форуме эти отличия нужны и кто о них знает и помнит? Если бы этот символ еще везде нормально отображался.


i>> Я помню, что &mdash; это не просто тире))) Поэтому и ссылку прислал)))) Чисто для информации.

AN>Спасибо конечно, но я имел в виду другое. Ведь когда в форуме пишешь, думается: сейчас поставлю малое тире, здесь требуется поширше, а тут нужно обязательно большое. То бишь есть в ответах "нормальный минус/тире" ну так и оставить его как есть. Какие были требования для такой конвертации.

А они разве были? 0_о
anw, если проблемно, то можно и "-", но насколько я помню, в html нету минуса — есть &mdash;
Скинь в почту пример, где не отображается, 3го числа гляну, если не забуду

i>> Про глюк у мозилы в инете тишина. Были какие-то глюки, но в древних версиях.

AN>А нафиг мне что искать — открываю а тама "квадратик" (3.5 разве уже древняя?)

А с кодировками точно всё нормально???

i>> Как тебе вот такой код?

i>>
i>>         /// <summary>
i>>         /// EN DASH
i>>         /// </summary>
i>>         /// <remarks><c>&ndash</c> in HTML</remarks>
i>>         public static readonly string EnDash = Convert.ToChar(0x2013).ToString();
i>>

AN>Какие то двойственные чувства.
AN>Если бы был уже готовый набор констант и от них генерить строки, то было бы более положительно. А так мне лично более приятней эта запись
AN>
public const string EnDash = "&ndash"; // 0x2013
AN>

AN>Но это типа, "тебе больше нравятся брюнетки или блондинки"

&ndash не отображается в WindowsForms и производных, а Convert.ToChar(0x2013).ToString()
Это был пример из жизни, используется везде где нужен символ "-" в WF 2.0

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1510>>
Re[7]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 01.05.11 20:07
Оценка:
Здравствуйте, ixor, Вы писали:

i> AN>Здравствуйте, ixor, Вы писали:


i> i>> AN>Здравствуйте, ixor, Вы писали:


i> i>> i>> AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


i> i>> i>> Тире


i> i>> i>>

i> i>> i>> &mdash; (черта длиной в заглавную букву М)
i> i>> i>>


i> i>> AN>Кому в форуме эти отличия нужны и кто о них знает и помнит? Если бы этот символ еще везде нормально отображался.


i> i>> Я помню, что &mdash; это не просто тире))) Поэтому и ссылку прислал)))) Чисто для информации.


i> AN>Спасибо конечно, но я имел в виду другое. Ведь когда в форуме пишешь, думается: сейчас поставлю малое тире, здесь требуется поширше, а тут нужно обязательно большое. То бишь есть в ответах "нормальный минус/тире" ну так и оставить его как есть. Какие были требования для такой конвертации.


i> А они разве были? 0_о

А нафига тогда было еще делать? Я всегда набираю "-". Хотя может кто, что другое набирает?
i> anw, если проблемно, то можно и "-", но насколько я помню, в html нету минуса — есть &mdash;
i> Скинь в почту пример, где не отображается, 3го числа гляну, если не забуду
Счас поищу тест.... не нашел, тогда отправлю это сообщение и сделаю ему экспорт, я то точно минус вбил

i> i>> Про глюк у мозилы в инете тишина. Были какие-то глюки, но в древних версиях.


i> AN>А нафиг мне что искать — открываю а тама "квадратик" (3.5 разве уже древняя?)


i> А с кодировками точно всё нормально???

А разве подобные вещи зависят от кодировки?

i> AN>Какие то двойственные чувства.

i> AN>Если бы был уже готовый набор констант и от них генерить строки, то было бы более положительно. А так мне лично более приятней эта запись
i> AN>
public const string EnDash = "&ndash"; // 0x2013
i> AN>

i> AN>Но это типа, "тебе больше нравятся брюнетки или блондинки"

i> &ndash не отображается в WindowsForms и производных, а Convert.ToChar(0x2013).ToString()

i> Это был пример из жизни, используется везде где нужен символ "-" в WF 2.0
Подожди, тире или минус? Ну если "платформно независимое" представление символа, то нормалек. А константу (для 0x2013) отчего не использовать?
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[2]: Ошибка: нет проверки на 0 ToHexString
От: ixor Россия  
Дата: 16.05.11 11:10
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Это также исправил. Возможно лучше было иф инвертировать, но так уж с решарпером автоматом получилось. Может позже и поменяю.


AN>
       public static string ToHexString(this byte[] array)
AN>        {
AN>            if (array != null)
AN>            {
AN>                StringBuilder sb = new StringBuilder(array.Length * 2);
AN>                foreach (byte b in array)
AN>                {
AN>                    sb.AppendFormat(CultureInfo.InvariantCulture, "{0:X2}", b);
AN>                }

AN>                return sb.ToString();
AN>            }

AN>            return string.Empty;
AN>        }
AN>


Fixed rev 1513
... << RSDN@Home 1.2.0 alpha 5 rev. 1513>>
Re[3]: Ошибка: нет проверки на 0 ToHexString
От: AlexNek  
Дата: 16.05.11 15:34
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, AlexNek, Вы писали:


AN>>Это также исправил. Возможно лучше было иф инвертировать, но так уж с решарпером автоматом получилось. Может позже и поменяю.


AN>>
       public static string ToHexString(this byte[] array)
AN>>        {
AN>>            if (array != null)
AN>>            {
AN>>                StringBuilder sb = new StringBuilder(array.Length * 2);
AN>>                foreach (byte b in array)
AN>>                {
AN>>                    sb.AppendFormat(CultureInfo.InvariantCulture, "{0:X2}", b);
AN>>                }

AN>>                return sb.ToString();
AN>>            }

AN>>            return string.Empty;
AN>>        }
AN>>


I>Fixed rev 1513

Я уже и забыл о чем речь, но главное что пошло на пользу дела.
... << RSDN@Home 1.2.0 alpha 5-AN rev. 2349>>
Re[2]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 23.05.11 13:40
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


Проверено & mdash ; прекрасно отображается в Firefox 4.0.1.
... << RSDN@Home 1.2.0 alpha 5 rev. 1523>>
Re: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 23.05.11 13:55
Оценка:
Здравствуйте, AlexNek, Вы писали:

Стабильно падает, если попытаться экспортировать сообщения сразу из поиска
  Janus\Features\Search\SearchDummyForm.cs
В методе
public IEnumerable<IMsg> SelectedMessages

System.InvalidOperationException was unhandled
  Message=Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "_tgMsgs" не из того потока, в котором он был создан.
  Source=System.Windows.Forms
  StackTrace:
       в System.Windows.Forms.Control.get_Handle()
       в System.Windows.Forms.Control.SendMessage(Int32 msg, Int32 wparam, Int32 lparam)
       в System.Windows.Forms.ListView.SelectedIndexCollection.get_Count()
       в Rsdn.TreeGrid.TreeGrid.get_SelectedNodes()
       в Rsdn.Janus.SearchDummyForm.get_SelectedMessages() в D:\source\RSDN@HOME.VS2010\Janus\Features\Search\SearchDummyForm.cs:строка 233
       в Rsdn.Janus.ObjectModel.SearchFeature.get_ActiveMessages() в D:\source\RSDN@HOME.VS2010\Janus\Features\Search\SearchFeature.cs:строка 65
       в Rsdn.Janus.FeatureActiveMessageService.get_ActiveMessages() в D:\source\RSDN@HOME.VS2010\Janus\Features\ForumViewer\FeatureActiveMessageService.cs:строка 29
       в Rsdn.Janus.MessageExporter.GetMessages(IServiceProvider provider, ExportMode exportMode, Boolean unreadMessagesOnly) в D:\source\RSDN@HOME.VS2010\Janus\Features\ForumViewer\Export\MessageExporter.cs:строка 126
       в Rsdn.Janus.MessageExporter.ExportWorker(IProgressVisualizer progressVisualizer, IServiceProvider provider, ExportMessageDialog exportMessageDialog) в D:\source\RSDN@HOME.VS2010\Janus\Features\ForumViewer\Export\MessageExporter.cs:строка 64
       в Rsdn.Janus.MessageExporter.<>c__DisplayClass9.<Export>b__5(IProgressVisualizer progressVisualizer) в D:\source\RSDN@HOME.VS2010\Janus\Features\ForumViewer\Export\MessageExporter.cs:строка 176
       в Rsdn.Janus.ProgressWorker.<>c__DisplayClass2.<Run>b__0(AsyncOperation asyncOp) в D:\source\RSDN@HOME.VS2010\Janus-Common\Utils\ProgressWorker.cs:строка 45
       в Rsdn.Janus.AsyncHelper.<>c__DisplayClass10.<RunAsync>b__f(Object state) в D:\source\RSDN@HOME.VS2010\Janus-Common\Utils\AsyncHelper.cs:строка 122
       в System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state)
       в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       в System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
       в System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)
  InnerException:
... << RSDN@Home 1.2.0 alpha 5 rev. 1523>>
Re: "Cannot parse '*': '*' or '?' not allowed as first chara
От: ixor Россия  
Дата: 23.05.11 14:41
Оценка:
Здравствуйте, AlexNek, Вы писали:

Что бы не плодить новые темы решил прикрепить к этой.

Валится при поиске по -> "*********"

Lucene.Net.QueryParsers.ParseException was unhandled
  Message=Cannot parse '*********': '*' or '?' not allowed as first character in WildcardQuery
  Source=Lucene.Net
  StackTrace:
       в Lucene.Net.QueryParsers.QueryParser.Parse(String query)
       в Rsdn.Janus.SearchHelper.Search(Int32 forumID, String searchText, Boolean searchInText, Boolean searchInSubject, Boolean searchAuthor, Boolean searchInMyMessages, Boolean searchAnyWords, DateTime from, DateTime to) в D:\source\RSDN@HOME.VS2010\Janus\Features\Search\SearchHelper.cs:строка 203
       в Rsdn.Janus.SearchHelper.SearchMessagesByLucene(IServiceProvider provider, Int32 forumId, String searchText, Boolean searchInText, Boolean searchInSubject, Boolean searchAuthor, Boolean searchInMarked, Boolean searchInMyMessages, Boolean searchAnyWords, Boolean searchInQuestions, DateTime from, DateTime to) в D:\source\RSDN@HOME.VS2010\Janus\Features\Search\SearchHelper.cs:строка 288
       в Rsdn.Janus.SearchDummyForm.<>c__DisplayClass5.<BtnSearchClick>b__2(IProgressVisualizer pi) в D:\source\RSDN@HOME.VS2010\Janus\Features\Search\SearchDummyForm.cs:строка 383
       в Rsdn.Janus.ProgressWorker.<>c__DisplayClass2.<Run>b__0(AsyncOperation asyncOp) в D:\source\RSDN@HOME.VS2010\Janus-Common\Utils\ProgressWorker.cs:строка 45
       в Rsdn.Janus.AsyncHelper.<>c__DisplayClass10.<RunAsync>b__f(Object state) в D:\source\RSDN@HOME.VS2010\Janus-Common\Utils\AsyncHelper.cs:строка 122
       в System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state)
       в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       в System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
       в System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)
  InnerException: Lucene.Net.QueryParsers.ParseException
       Message='*' or '?' not allowed as first character in WildcardQuery
       Source=Lucene.Net
       StackTrace:
            в Lucene.Net.QueryParsers.QueryParser.GetWildcardQuery(String field, String termStr)
            в Lucene.Net.QueryParsers.QueryParser.Term(String field)
            в Lucene.Net.QueryParsers.QueryParser.Clause(String field)
            в Lucene.Net.QueryParsers.QueryParser.Query(String field)
            в Lucene.Net.QueryParsers.QueryParser.TopLevelQuery(String field)
            в Lucene.Net.QueryParsers.QueryParser.Parse(String query)
       InnerException:
... << RSDN@Home 1.2.0 alpha 5 rev. 1523>>
Re[2]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 23.05.11 15:22
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?

AN>И картинок чего то нет и при экпорте всего форума (Философия программирования) хтмл получается получается слишком "широким" (это дуреет
Автор: Sinix
Дата: 15.04.11
из за последней цитаты) Видимо в css лажа. Кто спец и может сразу сказать что править?


Хтмл получается слишком широким из-за тегов <pre> при вставке кода например или вот еще хороший пример — сообщения приходившие от тебя, когда ты эксперементировал редактором (там очень много звездочек в одной строке).
Если первый вариант (с кодом) можно хоть как-то "ужать", хотя он и становится от этого плохо читабельным, то со звездочками совсем всё плохо и простого решения под рукой нет. Php-шники рекомендуют использовать встроенную функцию wordwrap с количеством символов для урезания строки Это тоже самое, что при экспорте текста на ширину 80 символов, но если там это оправдано, то при

(это дуреет

из за последней цитаты)



Извини, или ты уже поправил что-то в MessageExporter.cs (Да, кстати, этот файл я утащил с твоего репо без изменений!) или я не понимаю что там может "дуреть" У меня отлично всё отображается и ресайзится, никаких аномалий я не нашел.

Вот кто действительно "дуреет" от экспорта, так это IE9.

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1523>>
Re[3]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 23.05.11 21:02
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, AlexNek, Вы писали:


AN>>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


I>Проверено & mdash ; прекрасно отображается в Firefox 4.0.1.

Если мои любимые аддоны не будут там работать... (тогда, что бы тебе только на юниксе работать )
... << RSDN@Home 1.2.0 alpha 5-AN rev. 2906>>
Re[2]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 23.05.11 21:02
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, AlexNek, Вы писали:


I>Стабильно падает, если попытаться экспортировать сообщения сразу из поиска

I>[cut=Janus\Features\Search\SearchDummyForm.cs]
I>В методе
I>
I>public IEnumerable<IMsg> SelectedMessages
I>

I>
I>System.InvalidOperationException was unhandled
I>  Message=Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "_tgMsgs" не из того потока, в котором он был создан.
....
I>


По крайней мере понятно как править.
... << RSDN@Home 1.2.0 alpha 5-AN rev. 2906>>
Re[3]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 23.05.11 21:02
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, AlexNek, Вы писали:


AN>>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?

AN>>И картинок чего то нет и при экпорте всего форума (Философия программирования) хтмл получается получается слишком "широким" (это дуреет
Автор: Sinix
Дата: 15.04.11
из за последней цитаты) Видимо в css лажа. Кто спец и может сразу сказать что править?


I>Хтмл получается слишком широким из-за тегов <pre> при вставке кода например или вот еще хороший пример — сообщения приходившие от тебя, когда ты эксперементировал редактором (там очень много звездочек в одной строке).

I>Если первый вариант (с кодом) можно хоть как-то "ужать", хотя он и становится от этого плохо читабельным, то со звездочками совсем всё плохо и простого решения под рукой нет. Php-шники рекомендуют использовать встроенную функцию wordwrap с количеством символов для урезания строки Это тоже самое, что при экспорте текста на ширину 80 символов, но если там это оправдано, то при

I>

I>(это дуреет

из за последней цитаты)



I>Извини, или ты уже поправил что-то в MessageExporter.cs

А фиг его знает, вроде после правки туда больше не лазил.
I>(Да, кстати, этот файл я утащил с твоего репо без изменений!)
Хоть раз стало приятно из за того, что что то стащили
I>или я не понимаю что там может "дуреть" У меня отлично всё отображается и ресайзится, никаких аномалий я не нашел.
вот из-за этого "Хтмл получается слишком широким из-за тегов <pre>". Я правда пробовал только в моей версии лисы (3.5).

I>Вот кто действительно "дуреет" от экспорта, так это IE9.

Я только в 8-му успел привыкнуть , а тут уже и 9-й
... << RSDN@Home 1.2.0 alpha 5-AN rev. 2906>>
Re[4]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 24.05.11 06:07
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, ixor, Вы писали:


I>>Здравствуйте, AlexNek, Вы писали:


AN>>>Еще почему то & mdash ; мозилла не воспринимает. Ошибка в мозилле? И почему не оставить просто минус?


I>>Проверено & mdash ; прекрасно отображается в Firefox 4.0.1.

AN>Если мои любимые аддоны не будут там работать... (тогда, что бы тебе только на юниксе работать )

Ну уж извини Какая была)
... << RSDN@Home 1.2.0 alpha 5 rev. 1511>>
Локализация диалогов
От: AlexNek  
Дата: 16.06.11 22:32
Оценка:
Не совсем ошибки, но похоже в этих файлах не все переведено на русский
BuildIndexForm
EnterTopicMessageIdForm partial
FindDialogForm partial
SelectDB.cs
SP1RequiredForm.cs partial

Кроме того часть диалогов определена как нейтральные, а часть как русские, не знаю также везде ли была включена поддержка многоязычия в диалогах.
Еще в парочке было включено автоматическое изменение размеров, от которого дизайнер форм входит в шок и меняет положение элементов как хочет.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re: Локализация диалогов
От: ixor Россия  
Дата: 17.06.11 00:02
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Не совсем ошибки, но похоже в этих файлах не все переведено на русский

AN>
BuildIndexForm
AN>EnterTopicMessageIdForm partial
AN>FindDialogForm partial
AN>SelectDB.cs
AN>SP1RequiredForm.cs partial
AN>

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

Хм. Какие должны стоять?

AN>Еще в парочке было включено автоматическое изменение размеров, от которого дизайнер форм входит в шок и меняет положение элементов как хочет.


BuildIndexForm — подлежит переделке полностью.

Если я не ошибаюсь, то необходимости в SP1RequiredForm.cs больше нет или Янус под 2.0 SP1 запустится? Вроде — нет.

SelectDB.cs — подлежит переделке вместе с логикой первичной загрузки.

EnterTopicMessageIdForm — я вроде локализовал совсем недавно.

FindDialogForm — функционал вроде бы есть, но нет шортката 0_о и даже упоминания о нём настройках. Форма-привидение

С уважением, ixor.
<< RSDN@Home 1.2.0 alpha 5 rev. 1526>> Windows 7 x86 v6.1.7601.65536 framework v2.0.50727.5446
Re[2]: Локализация диалогов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.06.11 10:28
Оценка:
Здравствуйте, ixor, Вы писали:

I>Если я не ошибаюсь, то необходимости в SP1RequiredForm.cs больше нет или Янус под 2.0 SP1 запустится? Вроде — нет.


Поддержка голого 2.0 дропнута довольно давно.

I>FindDialogForm — функционал вроде бы есть, но нет шортката 0_о и даже упоминания о нём настройках. Форма-привидение


Поиск в редакторе — шорткат обеспечивается сцинтиллой вроде бы.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[2]: Локализация диалогов
От: AlexNek  
Дата: 17.06.11 16:22
Оценка:
Здравствуйте, ixor, Вы писали:

i> AN>Не совсем ошибки, но похоже в этих файлах не все переведено на русский

i> AN>
BuildIndexForm
i> AN>EnterTopicMessageIdForm partial
i> AN>FindDialogForm partial
i> AN>SelectDB.cs
i> AN>SP1RequiredForm.cs partial
i> AN>

i> AN>Кроме того часть диалогов определена как нейтральные, а часть как русские, не знаю также везде ли была включена поддержка многоязычия в диалогах.

i> Хм. Какие должны стоять?

С этим нужно определиться, но по крайней мере должно быть одинаково. На моей системе все "нейтральные" диалоги отображаются на английском и только русские на русском.
Я у себя в ветке допустил большую ошибку предположив, что язык проекта по умолчанию русский, теперь у меня по три файла ресурсов к диалогу en, ru, default. Прийдется опять править и ставить английский по умолчанию, тогда будет как и было — ru и default (хотя при этом прийдется вначале все тексты писать на англицком). Зато получится один екзел файл для перевода и проверки (правда пока без шорткатов — их видимо прийдется переделывать).
И текстов на проект слишком много, прога локализации вылетала пару раз по недостатку памяти

i> AN>Еще в парочке было включено автоматическое изменение размеров, от которого дизайнер форм входит в шок и меняет положение элементов как хочет.


По формам я только написал, какие проблемы с русским обнаружены, больше ничего не рыл и даже не думал Спасибо, что описал проблемы.

i> BuildIndexForm — подлежит переделке полностью.


i> Если я не ошибаюсь, то необходимости в SP1RequiredForm.cs больше нет или Янус под 2.0 SP1 запустится? Вроде — нет.


i> SelectDB.cs — подлежит переделке вместе с логикой первичной загрузки.


i> EnterTopicMessageIdForm — я вроде локализовал совсем недавно.

Я то этого не знал

i> FindDialogForm — функционал вроде бы есть, но нет шортката 0_о и даже упоминания о нём настройках. Форма-привидение
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[3]: Локализация диалогов
От: AlexNek  
Дата: 17.06.11 16:29
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> I>Если я не ошибаюсь, то необходимости в SP1RequiredForm.cs больше нет или Янус под 2.0 SP1 запустится? Вроде — нет.


AVK> Поддержка голого 2.0 дропнута довольно давно.


А что будет если в системе не будет 3.5, будет что то вразумительное сказано?
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[4]: Локализация диалогов
От: ixor Россия  
Дата: 18.06.11 08:49
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, AndrewVK, Вы писали:


AVK>> I>Если я не ошибаюсь, то необходимости в SP1RequiredForm.cs больше нет или Янус под 2.0 SP1 запустится? Вроде — нет.


AVK>> Поддержка голого 2.0 дропнута довольно давно.


AN>А что будет если в системе не будет 3.5, будет что то вразумительное сказано?


Просто не запустится.
<< RSDN@Home 1.2.0 alpha 5-AN-R5 rev. 5554>> Windows 7 x86 v6.1.7601.65536 framework v2.0.50727.5446
Re[2]: Локализация диалогов
От: AlexNek  
Дата: 18.06.11 22:58
Оценка:
Этот диалог не мог открыть в дизайнере FavoritesSelectFolderForm
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[3]: Локализация диалогов
От: ixor Россия  
Дата: 19.06.11 03:52
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Этот диалог не мог открыть в дизайнере FavoritesSelectFolderForm


Этот открывается нормально.
Не открывается MessageForm из-за _serviceManager.
<< RSDN@Home 1.2.0 alpha 5-AN-R5 rev. 5554>> Windows 7 x86 v6.1.7601.65536 framework v2.0.50727.5446
Re[4]: Локализация диалогов
От: AlexNek  
Дата: 19.06.11 16:15
Оценка:
Здравствуйте, ixor, Вы писали:

i> AN>Этот диалог не мог открыть в дизайнере FavoritesSelectFolderForm


i> Этот открывается нормально.

У меня там проблема с этой строкой
this._folderView.DefaultTextFormat = ((System.Windows.Forms.TextFormatFlags)((System.Windows.Forms.TextFormatFlags.Left, Default, Top, VerticalCenter | System.Windows.Forms.TextFormatFlags.Left, Default, Top, EndEllipsis)));

Ее похоже дизайнер вставляет, а после этого в упор не понимает.

i> Не открывается MessageForm из-за _serviceManager.

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

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

Сегодня, с утра винда вообще не хотела грузится, только к вечеру восстановил.
Визуал студио вылетает почти через каждые полчаса, как только начинаю рефакторинг делать.
После одного из вылетов прога локализации попортила свою базу и теперь отказывается работать.
В общем, борюсь пока с "привидениями"
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[5]: Локализация диалогов
От: ixor Россия  
Дата: 19.06.11 17:09
Оценка:
Здравствуйте, AlexNek, Вы писали:

i>> Не открывается MessageForm из-за _serviceManager.

AN>А у меня открывается без проблем но там настолько большая сейчас разница что сравнить не представляется возможным.

Я глянул твой код, ты там отрекфакторил этот кусок, но он все равно глючит вот так
Автор: ixor
Дата: 19.06.11
<< RSDN@Home 1.2.0 alpha 5-AN-R5 rev. 5554>> Windows 7 x86 v6.1.7601.65536 framework v2.0.50727.5446
Re[6]: Локализация диалогов
От: AlexNek  
Дата: 19.06.11 17:51
Оценка:
Здравствуйте, ixor, Вы писали:

i> i>> Не открывается MessageForm из-за _serviceManager.


i> AN>А у меня открывается без проблем но там настолько большая сейчас разница что сравнить не представляется возможным.


i> Я глянул твой код, ты там отрекфакторил этот кусок, но он все равно глючит вот так
Автор: ixor
Дата: 19.06.11


На выбор форумов я вообще внимания не обращал, так как ни разу еще не пользовался .
Как завалы разгребу, гляну.
Там дофига чего было: автосохранение, вопрос при закрытии, ограничение длины названия темы..
avalon 1.0rc3 rev 419, zlib 1.2.3
Re: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 30.11.11 07:32
Оценка:
Здравствуйте, AlexNek, Вы писали:

  Bug_Formatter_Patch
Index: Janus.4.sln
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Janus/Core/JanusProtocolSupport/FormatMessageHelper.cs
===================================================================
--- Janus/Core/JanusProtocolSupport/FormatMessageHelper.cs    (revision 0)
+++ Janus/Core/JanusProtocolSupport/FormatMessageHelper.cs    (working copy)
@@ -0,0 +1,188 @@
+?namespace Rsdn.Janus
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Text.RegularExpressions;
+
+    using JetBrains.Annotations;
+
+    public static class FormatMessageHelper
+    {
+        /// <summary>
+        /// Форматирует оценки.
+        /// </summary>
+        /// <param name="rate">Сумма оценок.</param>
+        /// <param name="smile">Количество улыбок.</param>
+        /// <param name="agree">Количество согласных.</param>
+        /// <param name="disagree">Количество не согласных.</param>
+        /// <returns>Форматированное представление оценок.</returns>
+        public static string FormatRates(int rate, int smile, int agree, int disagree)
+        {
+            var list = new List<string>(4);
+
+            if (smile != 0)
+            {
+                list.Add(smile + ":)");
+            }
+
+            if (agree != 0)
+            {
+                list.Add(agree + "+");
+            }
+
+            if (disagree != 0)
+            {
+                list.Add(disagree + "-");
+            }
+
+            if (rate != 0)
+            {
+                list.Add(rate.ToString());
+            }
+
+            return String.Join("/", list.ToArray());
+        }
+
+        /// <summary>
+        /// Возвращает первое не пустое значение, 
+        /// иначе - Аноним
+        /// </summary>
+        /// <param name="nick">Псевдоним пользователя.</param>
+        /// <param name="realName">Реальное имя пользователя.</param>
+        /// <param name="userName">Имя пользователя.</param>
+        /// <returns>Первое не пустое "имя" пользователя, иначе - Аноним.</returns>
+        public static string GetUserDisplayName(string nick, string realName, string userName)
+        {
+            if (!String.IsNullOrEmpty(nick))
+            {
+                return nick;
+            }
+
+            if (!String.IsNullOrEmpty(realName))
+            {
+                return realName;
+            }
+
+            if (!String.IsNullOrEmpty(userName))
+            {
+                return userName;
+            }
+
+            return SR.Forum.UserNickAnonymous;
+        }
+
+        /// <summary>
+        /// Преобразовывает тип пользователя в строку.
+        /// </summary>
+        /// <param name="userClass">Тип пользователя. <see cref="UserClass"/></param>
+        /// <param name="isHtml">Использовать подсветку.</param>
+        /// <returns>Строковое представление ипа пользователя.</returns>
+        public static string FormatUserClass(UserClass userClass, bool isHtml)
+        {
+            string result = String.Empty;
+
+            switch (userClass)
+            {
+                case UserClass.Admin:
+                    result = "admin";
+                    if (isHtml)
+                    {
+                        result = "<font color='darkred'>" + result + "</font>";
+                    }
+                    break;
+
+                case UserClass.Moderator:
+                    result = "moderator";
+                    if (isHtml)
+                    {
+                        result = "<font color='red'>" + result + "</font>";
+                    }
+                    break;
+
+                case UserClass.Team:
+                    result = "rsdn";
+                    if (isHtml)
+                    {
+                        result = "<font color='blue'>" + result + "</font>";
+                    }
+                    break;
+
+                case UserClass.Expert:
+                    result = "expert";
+                    if (isHtml)
+                    {
+                        result = "<font color='green'>" + result + "</font>";
+                    }
+                    break;
+            }
+
+            return result.Length > 0 ? "[" + result + "]" : result;
+        }
+
+        /// <summary>
+        /// Форматирует тултип сообщения, указывая на тему, автора и дату постинга.
+        /// </summary>
+        /// <param name="subject">The subject.</param>
+        /// <param name="date">The date.</param>
+        /// <param name="nick">The nick.</param>
+        /// <returns>Тултип сообщения.</returns>
+        [NotNull]
+        public static string FormatMsgLinkTitle(string subject, DateTime date, string nick)
+        {
+            string formattedDate = date.ToString(Config.Instance.ForumDisplayConfig.DateFormat);
+
+            return String.Format("\"{0}\",\r{1}, {2}", subject, nick, formattedDate);
+        }
+
+        /// <summary>
+        /// Следующие пара методов выдернуты из исходников IT (с заметными доработками правда),
+        /// так что все возможные вопросы к нему
+        /// Перенес из MessageUtilities
+        /// </summary>
+        /// <param name="subjIn">The subj in.</param>
+        /// <returns></returns>
+        public static string ReSubj(string subjIn)
+        {
+            string res;
+            //Чистый subj без Re-префиксов
+            string subj = Regex.Replace(subjIn, @"^Re(\[[0-9]+\]){0,1}: ", "");
+
+            if (subjIn.Length >= 4 && subjIn.Substring(0, 4) == "Re: ")
+            {
+                res = "Re[2]: " + subj;
+            }
+            else if (subjIn.Length >= 3 && subjIn.Substring(0, 3) == "Re[")
+            {
+                int si = subjIn.IndexOf("[");
+                try
+                {
+                    int nn = Int32.Parse(subjIn.Substring(si + 1, subjIn.IndexOf("]") - si - 1));
+                    nn++;
+                    res = "Re[" + nn + "]: " + subj;
+                }
+                catch (Exception)
+                {
+                    //На случай исключения принимаем Re равным 0
+                    res = "Re: " + subj;
+                }
+            }
+            else
+            {
+                res = "Re: " + subj;
+            }
+
+            return res;
+        }
+
+        /// <summary>
+        /// Возвращает дату в виде строки
+        /// Формат даты задется в настройках
+        /// </summary>
+        /// <param name="date">Входная дата.</param>
+        /// <returns>дата в заданном формате</returns>
+        public static string GetDateAsString(DateTime date)
+        { 
+            return date.ToString(Config.Instance.ForumDisplayConfig.DateFormat);
+        }
+    }
+}
\ No newline at end of file
Index: Janus/Core/JanusProtocolSupport/HTMLPageBuilder/HtmlPageBuilder.cs
===================================================================
--- Janus/Core/JanusProtocolSupport/HTMLPageBuilder/HtmlPageBuilder.cs    (revision 1539)
+++ Janus/Core/JanusProtocolSupport/HTMLPageBuilder/HtmlPageBuilder.cs    (working copy)
@@ -6,7 +6,7 @@
 using System.Web;
 
 using BLToolkit.Data.Linq;
-
+using Rsdn.Janus.DataModel;
 using Rsdn.SmartApp;
 
 namespace Rsdn.Janus
@@ -28,7 +28,8 @@
         private readonly IJanusDatabaseManager _dbManager = null;
         // ReSharper restore ConvertToConstant, RedundantDefaultFieldInitializer
 
-        public HtmlPageBuilder(IServiceProvider serviceProvider) : base(serviceProvider)
+        public HtmlPageBuilder(IServiceProvider serviceProvider)
+            : base(serviceProvider)
         {
             _serviceProvider = serviceProvider;
         }
@@ -78,19 +79,22 @@
 
         private string GetUserDisplayName(IDataContext db, int userID)
         {
-            return
-                db
-                    .Users(u => u.ID == userID)
+            IQueryable<IUser> users = db.Users(u => u.ID == userID);
+            int count = users.Count();
+            if (count > 0)
+            {
+                IQueryable<string> queryable = users
                     .Select(
                         u =>
                             FormatAuthor(
                                 u.ID,
                                 u.UserClass,
                                 u.DisplayName(),
-                                false))
-                    .Single();
+                            false));
+                return queryable.Single();
+            }
+            return "Nothing";
         }
-
         #region Вывод сообщения об исключении
         private const string _templateException = "ExceptionPage.html";
 
@@ -231,11 +235,11 @@
                 userId.ToString());
 
             return string.Format(template,
-                JanusFormatMessage.GetUserImagePath(_serviceProvider, userClass),
+                ImagesHelper.GetUserImagePath(_serviceProvider, userClass),
                 string.Format(_templateAlt, SR.TGColumnAuthor, showName),
                 showName,
                 userInfoUri,
-                JanusFormatMessage.FormatUserClass(userClass, true));
+                FormatMessageHelper.FormatUserClass(userClass, true));
         }
 
         private string FormatDate(DateTime dt)
@@ -249,7 +253,7 @@
             return
                 string.Format(
                     _templateHeaderItemForDate,
-                    JanusFormatMessage.GetWeekDayImagePath(
+                    ImagesHelper.GetWeekDayImagePath(
                         _serviceProvider,
                         Convert.ToInt32(dt.DayOfWeek),
                         isOutdate),
@@ -267,7 +271,7 @@
         {
             // Rate
             // rate calc for headers and rate frame
-            var text = JanusFormatMessage.FormatRates(
+            var text = FormatMessageHelper.FormatRates(
                 rating, smiles, agrees, disagrees);
 
             if (text.Length == 0)
@@ -295,7 +299,7 @@
                     anchor
                         ? _templateHeaderItemAnchor
                         : _templateHeaderItem,
-                    JanusFormatMessage.GetMessageImagePath(
+                    ImagesHelper.GetMessageImagePath(
                         _serviceProvider,
                         isRead,
                         isMarked,
@@ -335,7 +339,7 @@
             return
                 string.Format(
                     _templateHeaderItem,
-                    JanusFormatMessage.GetForumImagePath(_serviceProvider, false),
+                    ImagesHelper.GetForumImagePath(_serviceProvider, false),
                     string.Empty,
                     FormatForumName(forumName, forumDescription, false));
         }
@@ -360,7 +364,7 @@
 
             //    0 - rate text, 1 - path to rate icon
             return string.Format(_templateRatePart, rt,
-                JanusFormatMessage.GetRateImagePath(_serviceProvider, rateType));
+                ImagesHelper.GetRateImagePath(_serviceProvider, rateType));
         }
 
         private string FormatRateItemWithDate(
@@ -640,10 +644,10 @@
 
                     sbSubtotal.AppendFormat(
                         _tlUsersList,
-                        JanusFormatMessage.GetUserImagePath(provider, user.UserClass),
+                        ImagesHelper.GetUserImagePath(provider, user.UserClass),
                         user.UserID,
                         user.UserName,
-                        JanusFormatMessage.FormatUserClass(user.UserClass, true));
+                        FormatMessageHelper.FormatUserClass(user.UserClass, true));
                     usersCount++;
                 }
             }
@@ -663,7 +667,7 @@
         private const string _templateOrigin = @"<div class='o'>{0}</div>";
         private const string _templateUserInfo = "UserInfo.html";
         private const string _templateUserInfoNotFound = "UserInfoNotFound.html";
-        //private const string _templatePrefixImage      = "<img>";
+        //private const string _templatePrefixImage = "<img>";
 
         public string GetUserInfoText(int uid)
         {
@@ -757,7 +761,7 @@
                         FormatAuthor(
                             user.ID,
                             user.UserClass,
-                            JanusFormatMessage.GetUserDisplayName(user.Nick, user.RealName, user.Name),
+                            FormatMessageHelper.GetUserDisplayName(user.Nick, user.RealName, user.Name),
                             true),
                         user.Name,
                         user.Nick,
@@ -773,28 +777,28 @@
                         FormatUri(JanusProtocolResourceType.UserMessagesStat, parameter),
                         firstInfo,
                         lastInfo,
-                        JanusFormatMessage.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserInfo),
-                        JanusFormatMessage.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserRating),
-                        JanusFormatMessage.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserOutrating),
-                        JanusFormatMessage.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserMessages),
-                        JanusFormatMessage.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserMessagesStat));
+                        ImagesHelper.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserInfo),
+                        ImagesHelper.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserRating),
+                        ImagesHelper.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserOutrating),
+                        ImagesHelper.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserMessages),
+                        ImagesHelper.GetResourceImagePath(_serviceProvider, JanusProtocolResourceType.UserMessagesStat));
             }
         }
         #endregion
 
         #region Сборка до кучи с учетом настроек *
         //private static string _html = 
-        //    "<html><head><title>{0}</title></head><body>{1}</body></html>";
+        //    "<html><head><title>{0}</title></head><body>{1}</body></html>";
 
         //public string GetAllUserInfo(int uid)
         //{
-        //    StringBuilder sb = new StringBuilder();
-        //    // Основное инфо
-        //    sb.Append(GetUserInfoText(uid));
+        //    StringBuilder sb = new StringBuilder();
+        //    // Основное инфо
+        //    sb.Append(GetUserInfoText(uid));
 
-        //    return String.Format(_html,
-        //        SR.UserInfo,
-        //        sb.ToString());
+        //    return String.Format(_html,
+        //        SR.UserInfo,
+        //        sb.ToString());
         //}
         #endregion
 
Index: Janus/Core/JanusProtocolSupport/ImagesHelper.cs
===================================================================
--- Janus/Core/JanusProtocolSupport/ImagesHelper.cs    (revision 0)
+++ Janus/Core/JanusProtocolSupport/ImagesHelper.cs    (working copy)
@@ -0,0 +1,174 @@
+?namespace Rsdn.Janus
+{
+    using System;
+    using SmartApp;
+
+    public static class ImagesHelper
+    {
+        /// <summary>
+        /// Возвращает путь к иконке, ассоциированной с классом пользователя.
+        /// </summary>
+        /// <param name="provider"></param>
+        /// <param name="userClass">Класс пользователя.</param>
+        /// <returns>Путь к иконке, ассоциированной с классом пользователя.</returns>
+        public static string GetUserImagePath(IServiceProvider provider, UserClass userClass)
+        {
+            string name = userClass != UserClass.User ? userClass.ToString() : String.Empty;
+
+            return GetImageUri(provider, @"MessageTree\User" + name, StyleImageType.ConstSize);
+        }
+
+        /// <summary>
+        /// Возвращает путь к иконке сообщения.
+        /// </summary>
+        /// <param name="provider"></param>
+        /// <param name="isRead">Сообщение прочитано</param>
+        /// <param name="isMarked">Помечено ли сообщение флагом (очками).</param>
+        /// <param name="isArticle">Является ли сообщение статьей.</param>
+        /// <returns>Путь к иконке сообщения.</returns>
+        public static string GetMessageImagePath(IServiceProvider provider, bool isRead, bool isMarked, bool isArticle)
+        {
+            const string Marked = "Marked";
+            const string Article = "Article";
+            const string Unread = "Unread";
+
+            string path;
+            string article = String.Empty;
+            string marked = String.Empty;
+            string read = "";
+
+            if (isArticle)
+            {
+                article = Article;
+            }
+
+            if (isMarked)
+            {
+                marked = Marked;
+            }
+
+            if (!isRead)
+            {
+                if (isMarked)
+                {
+                    read = Unread + "2";
+                }
+                else
+                {
+                    read = Unread;
+                }
+            }
+
+            path = String.Format("Msg{0}{1}{2}", article, read, marked);
+            //if (isArticle)
+            //{
+            //    path = isRead
+            //               ? isMarked ? "MsgArticleMarked" : "MsgArticle"
+            //               : isMarked ? "MsgArticleUnread2Marked" : "MsgArticleUnread";
+            //}
+            //else
+            //{
+            //    path = isRead
+            //               ? isMarked ? "MsgMarked" : "Msg"
+            //               : isMarked ? "MsgUnread2Marked" : "MsgUnread";
+            //}
+
+            return GetImageUri(provider, @"MessageTree\" + path, StyleImageType.ConstSize);
+        }
+
+        /// <summary>
+        /// Gets the week day image path.
+        /// </summary>
+        /// <param name="provider">The provider.</param>
+        /// <param name="weekDay">The week day.</param>
+        /// <param name="outdated">if set to <c>true</c> [outdated].</param>
+        /// <returns></returns>
+        public static string GetWeekDayImagePath(IServiceProvider provider, int weekDay, bool outdated)
+        {
+            string text = String.Format(@"MessageTree\WD{0}{1}", 
+                                        outdated ? "OUT" : String.Empty, 
+                                        weekDay);
+
+            IStyleImageManager styleImageManager = provider.GetRequiredService<IStyleImageManager>();
+
+            return styleImageManager.GetImageUri(text, StyleImageType.ConstSize);
+        }
+
+        /// <summary>
+        /// Возвращает путь к иконке с оценкой.
+        /// </summary>
+        /// <param name="provider"></param>
+        /// <param name="rate">Оценка.</param>
+        /// <returns>Путь к иконке с оценкой.</returns>
+        public static string GetRateImagePath(IServiceProvider provider, MessageRates rate)
+        {
+            switch (rate)
+            {
+                case MessageRates.Rate1:
+                case MessageRates.Rate2:
+                case MessageRates.Rate3:
+                    return GetImageUri(provider, @"MessageViewer\" + rate, StyleImageType.Small);
+            }
+
+            return GetImageUri(provider, @"MessageViewer\Rate" + rate, StyleImageType.Small) ?? String.Empty;
+        }
+
+        /// <summary>
+        /// Возвращает путь к иконке форума.
+        /// </summary>
+        /// <param name="provider"></param>
+        /// <param name="isUnread">В форуме есть не прочитанные сообщения.</param>
+        public static string GetForumImagePath(IServiceProvider provider, bool isUnread)
+        {
+            string path =
+                isUnread
+                    ? @"NavTree\ForumUnread"
+                    : @"NavTree\Forum";
+
+            return GetImageUri(provider, path, StyleImageType.ConstSize);
+        }
+
+        /// <summary>
+        /// Возвращает путь к иконке, ассоциированной с ресурсом.
+        /// </summary>
+        /// <param name="provider"></param>
+        /// <param name="resourceType">Тип ресурса.</param>
+        /// <returns>Путь к иконке, которая ассоциирована с ресурсом.</returns>
+        public static string GetResourceImagePath(IServiceProvider provider, JanusProtocolResourceType resourceType)
+        {
+            string name;
+
+            switch (resourceType)
+            {
+                case JanusProtocolResourceType.FaqList: name = "faqall"; break;
+                case JanusProtocolResourceType.ArticleList: name = "articleall"; break;
+                case JanusProtocolResourceType.UserInfo: name = "ExtBrowser"; break;
+                case JanusProtocolResourceType.UserRating: name = "userratein"; break;
+                case JanusProtocolResourceType.UserOutrating: name = "userrateout"; break;
+                case JanusProtocolResourceType.UserMessages: name = "ShowAllMsgs"; break;
+                case JanusProtocolResourceType.UserMessagesStat: name = "sh_all_msgs"; break;
+                case JanusProtocolResourceType.TeamList: name = "admin"; break;
+                case JanusProtocolResourceType.MessageRate:
+                    return GetImageUri(provider, "RateGroup", StyleImageType.ConstSize);
+                default:
+                    return GetImageUri(provider, @"ForumImages\webref", StyleImageType.ConstSize);
+            }
+
+            return GetImageUri(provider, name, StyleImageType.Small);
+        }
+
+        /// <summary>
+        /// Получить путь до картинки.
+        /// </summary>
+        /// <param name="provider"></param>
+        /// <param name="name">Имя картинки.</param>
+        /// <param name="imageType">Тип картинки.</param>
+        /// <returns>Путь до картинки.</returns>
+        public static string GetImageUri(IServiceProvider provider, string name, StyleImageType imageType)
+        {
+            IStyleImageManager styleImageManager = provider.GetRequiredService<IStyleImageManager>();
+
+            return styleImageManager.GetImageUri(name, imageType);
+        }
+    }
+}
\ No newline at end of file
Index: Janus/Core/JanusProtocolSupport/UrlHelper.cs
===================================================================
--- Janus/Core/JanusProtocolSupport/UrlHelper.cs    (revision 0)
+++ Janus/Core/JanusProtocolSupport/UrlHelper.cs    (working copy)
@@ -0,0 +1,176 @@
+?namespace Rsdn.Janus
+{
+    using System;
+    using System.Text.RegularExpressions;
+    using Rsdn.Framework.Formatting;    
+
+    public static class UrlHelper
+    {
+        /// <summary>
+        /// Проверяем присутствует ли в заданном адресе имя домена
+        /// </summary>
+        /// <param name="urlMatch">Результаты предварительноцй проверки URL.</param>
+        /// <param name="urlAddress">Проверяемый URL адрес.</param>
+        /// <returns>
+        ///     <c>true</c> если имя домена присутствует; иначе, <c>false</c>.
+        /// </returns>
+        // Данная функция видится "неустойчивой". Лучше убрать чем укономить время дополнительного разбора.
+        //public static bool IsDomainPresent(Match urlMatch, string urlAddress)
+        //{
+        //    string testUri = urlAddress;
+        //    if (!IsSchemePresent(urlMatch))
+        //    {
+        //        testUri = "http://" + testUri;
+        //    }
+
+        //    bool ret = IsDomainPresentInternal(testUri);
+
+        //    return ret;
+        //}
+
+        /// <summary>
+        /// Проверяем присутствует ли в заданном адресе имя домена
+        /// </summary>
+        /// <param name="urlAddress">Проверяемый URL адрес.</param>
+        /// <returns>
+        ///     <c>true</c> если имя домена присутствует; иначе, <c>false</c>.
+        /// </returns>
+        public static bool IsDomainPresent(string urlAddress)
+        {
+            string testUri = urlAddress;
+
+            testUri = AddUrlScheme(testUri);
+
+            bool ret = IsDomainPresentInternal(testUri);
+
+            return ret;
+        }
+
+        /// <summary>
+        /// Добавляем префикс, если нужно
+        /// </summary>
+        /// <param name="sourceUri">Исходный URI</param>
+        /// <returns>готовый к проверке адрес</returns>
+        public static string AddUrlScheme(string sourceUri)
+        {
+            const string httpPrefix = "http:";
+            const string httpSuffix = "//";
+
+            if (!IsSchemePresent(sourceUri))
+            {
+                if (!string.IsNullOrEmpty(sourceUri)
+                    && (sourceUri.Length < httpPrefix.Length
+                    || sourceUri.IndexOf(httpPrefix, 0, httpPrefix.Length) < 0)
+                    )
+                {
+                    if (sourceUri.Length < httpSuffix.Length 
+                        || sourceUri.IndexOf(httpSuffix, 0, httpSuffix.Length) < 0)
+                    {
+                        sourceUri = httpSuffix + sourceUri;
+                    }
+
+                    sourceUri = httpPrefix + sourceUri;
+                }
+            }
+            return sourceUri;
+        }
+
+        /// <summary>
+        /// Проверяем присутствует ли в заданном адресе имя домена
+        /// входной адрес должен иметь "схему"
+        /// </summary>
+        ///<param name="testUri">Проверяемый URL адрес</param>
+        ///<returns>
+        ///     <c>true</c> если имя домена присутствует; иначе, <c>false</c>.
+        /// </returns>
+        private static bool IsDomainPresentInternal(string testUri)
+        {
+            bool ret = IsValidUrl(testUri);
+            if (ret)
+            {
+                Uri uri = new Uri(testUri);
+                string host = uri.DnsSafeHost;
+
+                string[] strings = host.Split(new[] {'.'}, StringSplitOptions.RemoveEmptyEntries);
+
+                // проверяем есть ли точка в имени носта и делит ли она имя хотябы на две части
+                if (strings.Length < 2)
+                {
+                    ret = false;
+                }
+            }
+
+            return ret;
+        }
+
+        /// <summary>
+        /// Determines whether [is valid URL] [the specified test URI].
+        /// </summary>
+        /// <param name="testUri">The test URI.</param>
+        /// <returns>
+        ///   <c>true</c> if [is valid URL] [the specified test URI]; otherwise, <c>false</c>.
+        /// </returns>
+        public static bool IsValidUrl(string testUri)
+        {
+            bool ret = true;
+            try
+            {
+                Uri uri = new Uri(testUri);
+            }
+            catch (Exception)
+            {
+                ret = false;
+            }
+
+            return ret;
+        }
+
+        /// <summary>
+        /// Determines whether [is scheme present] [the specified URL match].
+        /// </summary>
+        /// <param name="urlMatch">The URL match.</param>
+        /// <returns>
+        ///   <c>true</c> if [is scheme present] [the specified URL match]; otherwise, <c>false</c>.
+        /// </returns>
+        public static bool IsSchemePresent(Match urlMatch)
+        {
+            return urlMatch.Groups["scheme"].Success;
+        }
+
+        /// <summary>
+        /// Determines whether [is scheme present] [the specified URL].
+        /// </summary>
+        /// <param name="url">The URL.</param>
+        /// <returns>
+        ///     <c>true</c> if [is scheme present] [the specified URL]; otherwise, <c>false</c>.
+        /// </returns>
+        /// <exception cref="System.ArgumentNullException">input is null.</exception>
+        public static bool IsSchemePresent(string url)
+        {
+            Match match = TextFormatter.ParseUrl(url);
+            //Match match = TextFormatter.ParseUrl(url);
+            return IsSchemePresent(match);
+        }
+
+        /// <summary>
+        /// Gets the hostname.
+        /// </summary>
+        /// <param name="urlMatch">The URL match.</param>
+        /// <returns></returns>
+        public static string GetHostname(Match urlMatch)
+        {
+            return urlMatch.Groups["hostname"].Value;
+        }
+
+        /// <summary>
+        /// Получить внутренний формат ссылки для соответствующего  <paramref name="resourceType"/>
+        /// </summary>
+        /// <param name="resourceType">Тип ресурса.</param>
+        /// <param name="parameters">Параметр ссылки.</param>
+        /// <returns>Внутренний формат ссылки.</returns>
+        public static string FormatUri(JanusProtocolResourceType resourceType, string parameters)
+        {
+            return JanusProtocolDispatcher.FormatURI(resourceType, parameters);
+        }
+    }
+}
\ No newline at end of file
Index: Janus/Core/JanusProtocolSupport/XmlPageBuilder/XsltFormatUtils.cs
===================================================================
--- Janus/Core/JanusProtocolSupport/XmlPageBuilder/XsltFormatUtils.cs    (revision 1539)
+++ Janus/Core/JanusProtocolSupport/XmlPageBuilder/XsltFormatUtils.cs    (working copy)
@@ -41,29 +41,26 @@
         [UsedImplicitly]
         public string GetUserImagePath(UserClass userClass)
         {
-            return JanusFormatMessage
-                .GetUserImagePath(_serviceProvider, userClass);
+            return ImagesHelper.GetUserImagePath(_serviceProvider, userClass);
         }
 
         [UsedImplicitly]
         public string GetWeekDayImagePath(int weekDay, bool isOutdated)
         {
-            return JanusFormatMessage
-                .GetWeekDayImagePath(_serviceProvider, weekDay, isOutdated);
+            return ImagesHelper.GetWeekDayImagePath(_serviceProvider, weekDay, isOutdated);
         }
 
         [UsedImplicitly]
         public string GetMessageImagePath(bool isRead,
             bool isMarked, bool isArticle)
         {
-            return JanusFormatMessage
-                .GetMessageImagePath(_serviceProvider, isRead, isMarked, isArticle);
+            return ImagesHelper.GetMessageImagePath(_serviceProvider, isRead, isMarked, isArticle);
         }
 
         [UsedImplicitly]
         public string GetRateImagePath(MessageRates rate)
         {
-            return JanusFormatMessage.GetRateImagePath(_serviceProvider, rate);
+            return ImagesHelper.GetRateImagePath(_serviceProvider, rate);
         }
 
         [UsedImplicitly]
@@ -76,8 +73,7 @@
         [UsedImplicitly]
         public string FormatUserClass(UserClass userClass)
         {
-            var uc = JanusFormatMessage
-                .FormatUserClass(userClass, true);
+            string uc = FormatMessageHelper.FormatUserClass(userClass, true);
 
             return uc.Length != 0 ? "&nbsp;" + uc : string.Empty;
         }
Index: Janus/Core/ObjectModel/MsgBase.cs
===================================================================
--- Janus/Core/ObjectModel/MsgBase.cs    (revision 1539)
+++ Janus/Core/ObjectModel/MsgBase.cs    (working copy)
@@ -219,13 +219,13 @@
 
         public string GetFormattedRating()
         {
-            return JanusFormatMessage.FormatRates(Rating, Smiles, Agrees, Disagrees);
+            return FormatMessageHelper.FormatRates(Rating, Smiles, Agrees, Disagrees);
         }
 
         protected string GetFormattedRatingForReplies()
         {
-            return JanusFormatMessage.FormatRates(RepliesRate, RepliesSmiles, RepliesAgree,
-                                                  RepliesDisagree);
+            return FormatMessageHelper.FormatRates(RepliesRate, RepliesSmiles, RepliesAgree,
+                                                   RepliesDisagree);
         }
 
         #endregion
@@ -413,7 +413,7 @@
 
             cellData[_rateThisColumn].Text = GetFormattedRating();
 
-            cellData[_dateColumn].Text = JanusFormatMessage.GetDateString(Date);
+            cellData[_dateColumn].Text = FormatMessageHelper.GetDateAsString(Date);
             cellData[_dateColumn].CellImageType = CellImageType.Image;
             cellData[_dateColumn].Image = _imgManager.GetMessageDateImage(Date);
 
Index: Janus/Core/UI/AboutJanusForm.cs
===================================================================
--- Janus/Core/UI/AboutJanusForm.cs    (revision 1539)
+++ Janus/Core/UI/AboutJanusForm.cs    (working copy)
@@ -9,6 +9,8 @@
 using System.Text;
 using System.Windows.Forms;
 
+using Rsdn.Framework.Formatting;
+
 namespace Rsdn.Janus
 {
     /// <summary>
@@ -19,13 +21,13 @@
 
         #region Declarations
 
-        private readonly IServiceProvider _provider;
+        private readonly IServiceProvider _provider;
 
         private const string _resourcePrefix = "Rsdn.Janus.Core.UI.";
 
-        private bool        _isShowing = true;
-        private bool        _useEffect = true;
-    
+        private bool _isShowing = true;
+        private bool _useEffect = true;
+
         #endregion
 
         #region Constructor(s)
@@ -58,7 +60,7 @@
         private void CustomInitializeComponent()
         {
             _webBrowser.BackColor = Color.Black;
-            _versionLabel.Text    = ApplicationInfo.NameWithVersion;
+            _versionLabel.Text = ApplicationInfo.NameWithVersion;
 
             if (!Environment.OSVersion.IsModernOS())
                 _useEffect = false;
@@ -159,7 +161,7 @@
                         break;
                     }
                 }
-            
+
             return result;
         }
 
@@ -324,7 +326,7 @@
                     12284, 2962, 15309, 5743, 5161, 28760, 19717, 73,
                     3242, 6921, 343, 2668, 7107, 1938, 3655, 3655,
                     10596, 16874, 1, 20712, 21120, 4964, 8546, 11709,
-                    5623, 9088, 33647, 61389, 44901, 507, 52960
+                    5623, 9088, 33647, 61389, 44901, 507, 52960, 95947
                 };
             using (var db = _provider.CreateDBContext())
             {
@@ -344,20 +346,19 @@
                 foreach (var user in users)
                 {
                     columnsCount++;
-                    var userHomePage =
-                        string.Format(
-                            user.HomePage.StartsWith("http://")
-                                ? "{0}'>{1}"
-                                : "http://{0}'>{1}",
-                            user.HomePage,
-                            user.HomePage);
+                    string homePageUrl = TextFormatter.ParseUrl(user.HomePage);
+                    var userHomePage = string.Format(homePageUrl.StartsWith("http://")
+                                                    ? "{0}'>{1}"
+                                                    : "http://{0}'>{1}",
+                                                    homePageUrl,
+                                                    homePageUrl);
 
                     sb.AppendFormat(
                         _devTableRow,
                         columnsCount % 2 == 0 ? "#F4FFF4" : "#E4FFF4",
                         user.ID,
                         user.Name,
-                        JanusFormatMessage.FormatUserClass(user.UserClass, true),
+                        FormatMessageHelper.FormatUserClass(user.UserClass, true),
                         "",
                         userHomePage);
                 }
Index: Janus/Core/UI/MainForm.cs
===================================================================
--- Janus/Core/UI/MainForm.cs    (revision 1539)
+++ Janus/Core/UI/MainForm.cs    (working copy)
@@ -60,6 +60,7 @@
             if (disposing)
             {
                 _navigationComboBoxGenerator.Dispose();
+
                 if (_mainMenuGenerator != null)
                 {
                     _mainMenuGenerator.Dispose();
@@ -115,9 +116,9 @@
             _toolBarGenerator = new StripMenuGenerator(_serviceProvider, _toolStrip, "MainForm.Toolbar");
         }
 
-        protected override void OnClosing(CancelEventArgs e)
+        protected override void OnFormClosing(FormClosingEventArgs e)
         {
-            base.OnClosing(e);
+            base.OnFormClosing(e);
 
             if (_serviceProvider.GetRequiredService<ISynchronizer>().IsActive())
             {
Index: Janus/Features/ForumViewer/Export/MessageExporter.cs
===================================================================
--- Janus/Features/ForumViewer/Export/MessageExporter.cs    (revision 1539)
+++ Janus/Features/ForumViewer/Export/MessageExporter.cs    (working copy)
@@ -9,7 +9,6 @@
 
 using Rsdn.Framework.Formatting;
 using Rsdn.Janus.Framework.Imaging;
-using Rsdn.Janus.ObjectModel;
 using Rsdn.SmartApp;
 
 namespace Rsdn.Janus
@@ -126,7 +125,7 @@
         /// </summary>
         private static string FormatUserClass(UserClass userClass, bool isHtml)
         {
-            return JanusFormatMessage.FormatUserClass(userClass, isHtml);
+            return FormatMessageHelper.FormatUserClass(userClass, isHtml);
         }
         #endregion
 
Index: Janus/Features/ForumViewer/MessageEditor/MessageForm.cs
===================================================================
--- Janus/Features/ForumViewer/MessageEditor/MessageForm.cs    (revision 1539)
+++ Janus/Features/ForumViewer/MessageEditor/MessageForm.cs    (working copy)
@@ -560,7 +560,7 @@
                 {
                     _forumsComboBox.Enabled = false;
                     _quoteAnalyzer = new QuoteAnalyzer(_messageInfo.Message);
-                    _subjectTextBox.Text = JanusFormatMessage.ReSubj(_messageInfo.Subject);
+                    _subjectTextBox.Text = FormatMessageHelper.ReSubj(_messageInfo.Subject);
                     ActiveControl = _messageEditor;
                 }
 
@@ -782,7 +782,7 @@
             var text = HttpUtility.HtmlEncode(_subjectTextBox.Text);
 
             return string.Format(_templateHeaderItem,
-                JanusFormatMessage.GetMessageImagePath(_serviceManager, true, false, false),
+                ImagesHelper.GetMessageImagePath(_serviceManager, true, false, false),
                 string.Format(_templateAlt, SR.TGColumnSubject, text),
                 text);
         }
Index: Janus/Features/ForumViewer/MessageViewer/ModeratingForm.cs
===================================================================
--- Janus/Features/ForumViewer/MessageViewer/ModeratingForm.cs    (revision 1539)
+++ Janus/Features/ForumViewer/MessageViewer/ModeratingForm.cs    (working copy)
@@ -76,7 +76,7 @@
                             m =>
                                 new ModInfo(
                                     m.ForumID,
-                                    JanusFormatMessage.GetModeratorialActionName(
+                                        GetModeratorialActionName(
                                         m.ForumID,
                                         _forumID,
                                         m.ServerForum.Name,
@@ -89,6 +89,38 @@
             _userCol.Width = _actionCol.Width = _createCol.Width = -1;
         }
 
+        /// <summary>
+        /// Возвращает текст для действий модератора.
+        /// </summary>
+        /// <param name="forumId">Ид форума.</param>
+        /// <param name="msgForumId">Ид сообщения.</param>
+        /// <param name="forumName">Имя форума.</param>
+        /// <param name="forumDescription">Описание форума.</param>
+        /// <returns></returns>
+        public static string GetModeratorialActionName(int forumId, int msgForumId, string forumName, string forumDescription)
+        {
+            switch (forumId)
+            {
+                case 0:
+                    return SR.Forum.Moderatorial.Delete;
+                case -2:
+                    return SR.Forum.Moderatorial.ExtractBranch;
+                case -7:
+                    return SR.Forum.Moderatorial.CloseTopic;
+                case -8:
+                    return SR.Forum.Moderatorial.OpenTopic;
+                default:
+                    string forumNameText = Config.Instance.ForumDisplayConfig.ShowFullForumNames
+                                                ? forumDescription
+                                                : forumName;
+
+                    string actionName = forumId != msgForumId
+                                            ? SR.Forum.Moderatorial.MoveToForum.FormatStr(forumNameText)
+                                            : SR.Forum.Moderatorial.LeaveIntact;
+                    return actionName;
+            }
+        }
+
         private int GetModImageIndex(int forumId, int msgForumId)
         {
             switch (forumId)
@@ -116,7 +148,7 @@
                 {
                     mod.UserName,
                     mod.ActionDesc,
-                    JanusFormatMessage.GetDateString(mod.Create)
+                    FormatMessageHelper.GetDateAsString(mod.Create)
                 })
             {
                 BackColor =
Index: Janus/Janus.csproj
===================================================================
--- Janus/Janus.csproj    (revision 1539)
+++ Janus/Janus.csproj    (working copy)
@@ -584,6 +584,9 @@
       <DesignTime>True</DesignTime>
       <DependentUpon>SchemaManagementResources.resx</DependentUpon>
     </Compile>
+    <Compile Include="Core\JanusProtocolSupport\FormatMessageHelper.cs" />
+    <Compile Include="Core\JanusProtocolSupport\ImagesHelper.cs" />
+    <Compile Include="Core\JanusProtocolSupport\UrlHelper.cs" />
     <Compile Include="Core\JanusProtocolSupport\XmlPageBuilder\XsltFormatUtils.cs" />
     <Compile Include="Core\JBrowserManagement\BrowserHelper.cs" />
     <Compile Include="Core\JBrowserManagement\JBrowserActiveMessageService.cs" />


Собственно вот такой патч у меня получился по твоим исходникам.
Он не компиляется из за вот этой строки:


UrlHelper.cs

        public static bool IsSchemePresent(string url)
        {
            Match match = TextFormatter.ParseUrl(url);
            return IsSchemePresent(match);
        }



TextFormatter.ParseUrl — протектед.

Вопрос к AVK: Нормально ли использование TextFormatter в коде повсеместно? Если нормально, то надо его праваить. У меня прав доступа к его репозитарию нет.


Вопрос к AlexNek: похоже исправления в этом методе не имеют никакого отношения к форматтерам и это просто попутный рефакторинг?
         private string GetUserDisplayName(IDataContext db, int userID)
         {
-            return
-                db
-                    .Users(u => u.ID == userID)
+            IQueryable<IUser> users = db.Users(u => u.ID == userID);
+            int count = users.Count();
+            if (count > 0)
+            {
+                IQueryable<string> queryable = users
                     .Select(
                         u =>
                             FormatAuthor(
                                 u.ID,
                                 u.UserClass,
                                 u.DisplayName(),
-                                false))
-                    .Single();
+                            false));
+                return queryable.Single();
+            }
+            return "Nothing";
         }


С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>
Re[2]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.11.11 10:03
Оценка:
Здравствуйте, ixor, Вы писали:

I>TextFormatter.ParseUrl — протектед.


I>Вопрос к AVK: Нормально ли использование TextFormatter в коде повсеместно?


ХЗ. Но, наверное, можно.

I> Если нормально, то надо его праваить. У меня прав доступа к его репозитарию нет.


У TextFormatter есть наследник в янусе, JanusFormatMessage. Можно вытащить в нем как публичный метод. Заодно, по возможности, убрав Match из публичного интерфейса.

I>Вопрос к AlexNek: похоже исправления в этом методе не имеют никакого отношения к форматтерам и это просто попутный рефакторинг?


На рефакторинг непохоже, логика меняется. Раньше этот метод при отсутствии юзера выкидывал исключение.
Только написан он на редкость криво. Count приводит к отдельному запросу в БД. Всего то нужно сделать как то так:
return
  db
    .Users(u => u.ID == userID)
    .Select(
      u =>
        FormatAuthor(
          u.ID,
          u.UserClass,
          u.DisplayName(),
          false))
    .SingleOrDefault()
    ?? "Nothing";
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[3]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 30.11.11 13:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ixor, Вы писали:


I>>TextFormatter.ParseUrl — протектед.


I>>Вопрос к AVK: Нормально ли использование TextFormatter в коде повсеместно?


AVK>ХЗ. Но, наверное, можно.


I>> Если нормально, то надо его праваить. У меня прав доступа к его репозитарию нет.


AVK>У TextFormatter есть наследник в янусе, JanusFormatMessage. Можно вытащить в нем как публичный метод. Заодно, по возможности, убрав Match из публичного интерфейса.


Собственно вопрос и родился из-за наследника JanusFormatMessage.
В простейшем случае(без скрытия Match) там получается очень уродская перегрузка с вызовом родителя и такое в репо я закидывать не стал (оставил как рабочий вариант).
Посмотрю как будет со скрытием Match.

I>>Вопрос к AlexNek: похоже исправления в этом методе не имеют никакого отношения к форматтерам и это просто попутный рефакторинг?


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

AVK>Только написан он на редкость криво. Count приводит к отдельному запросу в БД. Всего то нужно сделать как то так:
AVK>
AVK>return
AVK>  db
AVK>    .Users(u => u.ID == userID)
AVK>    .Select(
AVK>      u =>
AVK>        FormatAuthor(
AVK>          u.ID,
AVK>          u.UserClass,
AVK>          u.DisplayName(),
AVK>          false))
AVK>    .SingleOrDefault()
AVK>    ?? "Nothing";
AVK>


Собственно так и было. Может Алекс вспомнит, что он хотел сделать.
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>
Re[4]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.11.11 13:27
Оценка:
Здравствуйте, ixor, Вы писали:

AVK>>
AVK>>return
AVK>>  db
AVK>>    .Users(u => u.ID == userID)
AVK>>    .Select(
AVK>>      u =>
AVK>>        FormatAuthor(
AVK>>          u.ID,
AVK>>          u.UserClass,
AVK>>          u.DisplayName(),
AVK>>          false))
AVK>>    .SingleOrDefault()
AVK>>    ?? "Nothing";
AVK>>


I>Собственно так и было. Может Алекс вспомнит, что он хотел сделать.


Так точно не было, был просто Single, который выкидывает исключение. Алекс, видимо, боролся с исключениями — и где то (скорее всего в каком то из отчетов) вылетало исключение при неполной базе юзеров. Либо сам где то запользовал, где пользователя может не быть. "Nothing", кстати, тоже не самая удачная идея — лучше все таки null возвращать, а ?? добавлять снаружи, если где требуется.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[5]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 30.11.11 14:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ixor, Вы писали:


AVK>>>
AVK>>>return
AVK>>>  db
AVK>>>    .Users(u => u.ID == userID)
AVK>>>    .Select(
AVK>>>      u =>
AVK>>>        FormatAuthor(
AVK>>>          u.ID,
AVK>>>          u.UserClass,
AVK>>>          u.DisplayName(),
AVK>>>          false))
AVK>>>    .SingleOrDefault()
AVK>>>    ?? "Nothing";
AVK>>>


I>>Собственно так и было. Может Алекс вспомнит, что он хотел сделать.


AVK>Так точно не было, был просто Single, который выкидывает исключение. Алекс, видимо, боролся с исключениями — и где то (скорее всего в каком то из отчетов) вылетало исключение при неполной базе юзеров. Либо сам где то запользовал, где пользователя может не быть. "Nothing", кстати, тоже не самая удачная идея — лучше все таки null возвращать, а ?? добавлять снаружи, если где требуется.


Я вставил "как велено" — собиру-покатаюсь-посмотрю как работает. Не зная подводных камней держусь подальше от запросов к БД, даже решарперу не доверяю что-то там менять. Тестов нету. Мало ли что там может быть.
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>
Re[2]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.11.11 17:43
Оценка:
Здравствуйте, ixor, Вы писали:

I>Здравствуйте, AlexNek, Вы писали:


I>Собственно вот такой патч у меня получился по твоим исходникам.

I>Он не компиляется из за вот этой строки:


I>
I>UrlHelper.cs

I>        public static bool IsSchemePresent(string url)
I>        {
I>            Match match = TextFormatter.ParseUrl(url);
I>            return IsSchemePresent(match);
I>        }
I>



I>TextFormatter.ParseUrl — протектед.

Да, это было первое исправление в еще в мае и причина, по которой я стащил исходники проекта, после этого было еще 6 исправлений для TextFormatter
Но, когда делал патч уже успел забыть об этом

I>Вопрос к AlexNek: похоже исправления в этом методе не имеют никакого отношения к форматтерам и это просто попутный рефакторинг?

I>
I>         private string GetUserDisplayName(IDataContext db, int userID)
I>         {
I>-            return
I>-                db
I>-                    .Users(u => u.ID == userID)
I>+            IQueryable<IUser> users = db.Users(u => u.ID == userID);
I>+            int count = users.Count();
I>+            if (count > 0)
I>+            {
I>+                IQueryable<string> queryable = users
I>                     .Select(
I>                         u =>
I>                             FormatAuthor(
I>                                 u.ID,
I>                                 u.UserClass,
I>                                 u.DisplayName(),
I>-                                false))
I>-                    .Single();
I>+                            false));
I>+                return queryable.Single();
I>+            }
I>+            return "Nothing";
I>         }
I>


Это уже попало в новый репозиторий в этом виде, никакой дополнительный инфы с марта не сохранилось, видимо был тяжелый вылет сразу. Но похоже уже разобрались.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[5]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.11.11 17:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ixor, Вы писали:


AVK>>>
AVK>>>return
AVK>>>  db
AVK>>>    .Users(u => u.ID == userID)
AVK>>>    .Select(
AVK>>>      u =>
AVK>>>        FormatAuthor(
AVK>>>          u.ID,
AVK>>>          u.UserClass,
AVK>>>          u.DisplayName(),
AVK>>>          false))
AVK>>>    .SingleOrDefault()
AVK>>>    ?? "Nothing";
AVK>>>

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

I>>Собственно так и было. Может Алекс вспомнит, что он хотел сделать.

Нее, у меня дефрагментация памяти включена на автомат для подобных случаев.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[6]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.11.11 17:46
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Хоть так и на какие то миллисекунды оптимальней


Я бы сказал на сотни миллисекунд.

AN>подобная запись мне довольно непривычна


Что именно тебе непривычно? Запрос и в твоем варианте практически такой же. Или тебе оператор "??" незнаком?

AN>. Ну и три уровня вложенности с точки зрения отладки тоже не очень нравится.


Нет там никаких уровней вложенности.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[7]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.11.11 18:23
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>Хоть так и на какие то миллисекунды оптимальней


AVK>Я бы сказал на сотни миллисекунд.

А насколько часто происходит данный запрос?

AN>>подобная запись мне довольно непривычна


AVK>Что именно тебе непривычно? Запрос и в твоем варианте практически такой же. Или тебе оператор "??" незнаком?

Да все. У нас только 2.0 и ни капли больше. Все остальное скажем, примерно известно, но нужно задумываться...

AN>>. Ну и три уровня вложенности с точки зрения отладки тоже не очень нравится.


AVK>Нет там никаких уровней вложенности.

Как тогда называть подобную конструкцию?
Db
 .X
 .Y
 .Z

Db.X.Y.Z
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[8]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.11.11 18:50
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>>Я бы сказал на сотни миллисекунд.

AN>А насколько часто происходит данный запрос?

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

AVK>>Что именно тебе непривычно? Запрос и в твоем варианте практически такой же. Или тебе оператор "??" незнаком?

AN>Да все. У нас только 2.0 и ни капли больше.

Оператор ?? доступен начиная с 2.0. Опять же повод ознакомится с возможностями хотя бы 3 шарпа, 5 лет уж прошло как никак, пора.

AVK>>Нет там никаких уровней вложенности.

AN>Как тогда называть подобную конструкцию?

Эта конструкция просто конструирует expression tree запроса. Само дерево конечно иерархично, но не вижу никакой в этом проблемы.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[9]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 30.11.11 21:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>>Я бы сказал на сотни миллисекунд.

AN>>А насколько часто происходит данный запрос?

AVK>Понятия не имею, смотреть надо. Но твой вариант еще и хуже читается, так что никакого смысла в двойном запросе нету.

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

AVK>>>Что именно тебе непривычно? Запрос и в твоем варианте практически такой же. Или тебе оператор "??" незнаком?

AN>>Да все. У нас только 2.0 и ни капли больше.

AVK>Оператор ?? доступен начиная с 2.0. Опять же повод ознакомится с возможностями хотя бы 3 шарпа, 5 лет уж прошло как никак, пора.

Не знаю почему, но у нас он запрещен.
Ознакомится и повседневно использовать — разные вещи.
Давай ты с Руби ознакомишься, а потом с одного взгляда скажешь скажешь, что делает файлик?
Я как то на одну строку из старого проекта смотрел, смотрел — вообще непонятно что делает. Пришлось по частям разбирать и искать, и по новому перечитывать.

AVK>>>Нет там никаких уровней вложенности.

AN>>Как тогда называть подобную конструкцию?

AVK>Эта конструкция просто конструирует expression tree запроса. Само дерево конечно иерархично, но не вижу никакой в этом проблемы.

Ну если у тебя сразу перед глазами появляется дерево то это здорово.
Я привык знать тип каждой переменной и иметь возможность глянуть списочек в отладчике 2008
Вот что ты будешь делать с отладкой следующей записи и о чем она тебе говорит?
return A().B().C().D();

А этот вариант? Даже с "дурными" именами можно примерно догадаться что происходит и проверить каждый результат.
List<Abc> x1 = A();
Abc x2 = x1.B();
MyString x3 = x2.C();
int x4 = x3.D();
return x4;
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[10]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.12.11 17:29
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>А при чем двойной запрос и хуже читается?


Вопрос непонятен.

AN>Да и откуда знать что будет запрос?


Count и Single ленивость сворачивают.

AN> По крайней мере сразу видно, что если количество пользователей равно нулю, то ничего не делать.


А если не равно?

AVK>>Оператор ?? доступен начиная с 2.0. Опять же повод ознакомится с возможностями хотя бы 3 шарпа, 5 лет уж прошло как никак, пора.

AN>Не знаю почему, но у нас он запрещен.

И что? Так и будешь всю жизнь в болоте сидеть? У нас тоже одно время был "запрещен". Правда, я в курсе был почему. Теперь разрешен, теперь я все больше на 4 поглядываю, хотя мне скорее не язык, а фреймворк и студия новые нужны.

AN>Ознакомится и повседневно использовать — разные вещи.


Ты планируешь всю жизнь на одном месте работать?

AN>Давай ты с Руби ознакомишься, а потом с одного взгляда скажешь скажешь, что делает файлик?


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

AVK>>Эта конструкция просто конструирует expression tree запроса. Само дерево конечно иерархично, но не вижу никакой в этом проблемы.

AN>Ну если у тебя сразу перед глазами появляется дерево то это здорово.

Оно не нужно перед глазами.

AN>Я привык знать тип каждой переменной


От дурных привычек нужно отучаться.

AN> и иметь возможность глянуть списочек в отладчике 2008


Список чего?

AN>Вот что ты будешь делать с отладкой следующей записи и о чем она тебе говорит?

AN>
AN>return A().B().C().D();
AN>


Да все как обычно. Что именно тебя смущает? И зачем вообще тебе часто отлаживать формирование дерева запроса?

AN>А этот вариант? Даже с "дурными" именами можно примерно догадаться что происходит и проверить каждый результат.

AN>
AN>List<Abc> x1 = A();
AN>Abc x2 = x1.B();
AN>MyString x3 = x2.C();
AN>int x4 = x3.D();
AN>return x4;
AN>


Ну и? Намного сложнее такая каша читается. Ты из-за гипотетической отладки исходники ненужным шумом засоряешь? Тогда срочно отучайся от таких привычек. Если тебя, конечно, профессиональный рост интересует.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[11]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 01.12.11 18:46
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>А при чем двойной запрос и хуже читается?


AVK>Вопрос непонятен.

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

Этоя твой ответ не понял

AN>>Да и откуда знать что будет запрос?


AVK>Count и Single ленивость сворачивают.

Ну вот и новое узнал

AN>> По крайней мере сразу видно, что если количество пользователей равно нулю, то ничего не делать.


AVK>А если не равно?

Тогда будет "какая то фигня" выполнятся.

AVK>>>Оператор ?? доступен начиная с 2.0. Опять же повод ознакомится с возможностями хотя бы 3 шарпа, 5 лет уж прошло как никак, пора.

AN>>Не знаю почему, но у нас он запрещен.

AVK>И что? Так и будешь всю жизнь в болоте сидеть? У нас тоже одно время был "запрещен". Правда, я в курсе был почему.

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

AN>>Ознакомится и повседневно использовать — разные вещи.


AVK>Ты планируешь всю жизнь на одном месте работать?

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

AN>>Давай ты с Руби ознакомишься, а потом с одного взгляда скажешь скажешь, что делает файлик?


AVK>Понадобится — ознакомлюсь. Полгода назад питон вот понадобился — ничего, справился без особых проблем.

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

AVK>>>Эта конструкция просто конструирует expression tree запроса. Само дерево конечно иерархично, но не вижу никакой в этом проблемы.

AN>>Ну если у тебя сразу перед глазами появляется дерево то это здорово.

AVK>Оно не нужно перед глазами.

Кому как.

AN>>Я привык знать тип каждой переменной


AVK>От дурных привычек нужно отучаться.

Отчего считаешь дурной привычкой?

AN>> и иметь возможность глянуть списочек в отладчике 2008


AVK>Список чего?

список элементов.

AN>>Вот что ты будешь делать с отладкой следующей записи и о чем она тебе говорит?

AN>>
AN>>return A().B().C().D();
AN>>


AVK>Да все как обычно. Что именно тебя смущает? И зачем вообще тебе часто отлаживать формирование дерева запроса?

Это не обязательно дерево запроса — это принцип. Вот если это будет возврат для Funct1 и она используется так
g(Funct1)

и насколько будет удобно глянуть что то же возвратила функция?
AN>>А этот вариант? Даже с "дурными" именами можно примерно догадаться что происходит и проверить каждый результат.
AN>>
AN>>List<Abc> x1 = A();
AN>>Abc x2 = x1.B();
AN>>MyString x3 = x2.C();
AN>>int x4 = x3.D();
AN>>return x4;
AN>>


AVK>Ну и? Намного сложнее такая каша читается.

Но по крайней мере понятно, что делается без всяких знаний об остальном. Что бы получить такую же информацию от одной строки нужно хорошо пошерстить исходникии побегать туда-сюда.
При этом я не утвержаю что такая запись всегда полезна.
AVK>Ты из-за гипотетической отладки исходники ненужным шумом засоряешь?
Это не только отладка но и понимание. Вполне возможно, что если в проекте будет достаточное количество подобных конструкций и они будет восприниматься "на автомате", то это и будет шумом иначе это подспорье для другого.
AVK>Тогда срочно отучайся от таких привычек. Если тебя, конечно, профессиональный рост интересует.
Честно говоря не вижу связи, а без учебы и так неинтересно.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[12]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.12.11 19:45
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>>>А при чем двойной запрос и хуже читается?

AVK>>Вопрос непонятен.
AN>
AN>Но твой вариант еще и хуже читается, так что никакого смысла в двойном запросе нету.
AN>

AN>Этоя твой ответ не понял

В твоем варианте кода сильно больше, и он не полностью декларативный. Как следствие — читаемость его хуже.

AVK>>Count и Single ленивость сворачивают.

AN>Ну вот и новое узнал

Только заучивать это не надо. Достаточно понять, что переход от перечисления к скалярной величине в принципе не может не сворачивать ленивость.

AVK>>Ты планируешь всю жизнь на одном месте работать?

AN>Я и так сейчас по проектам работаю. Сделал и "свободен". Сейчас просто "большой" попался. Хотя и не люблю без особой нужды нормальное место менять.

Ну значит все может измениться.

AN>>>Я привык знать тип каждой переменной

AVK>>От дурных привычек нужно отучаться.
AN>Отчего считаешь дурной привычкой?

Отвлекает мозги ненужными подробностями и стимулирует нормальные имена переменным давать.

AVK>>Список чего?

AN>список элементов.

Все равно непонятно.

AVK>>Да все как обычно. Что именно тебя смущает? И зачем вообще тебе часто отлаживать формирование дерева запроса?

AN>Это не обязательно дерево запроса — это принцип.

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

AN> Вот если это будет возврат для Funct1 и она используется так

AN>
AN>g(Funct1)
AN>

AN>и насколько будет удобно глянуть что то же возвратила функция?

Отладчик в студии вполне способен функции вызывать. С лямбдами, правда, у него проблема.

AVK>>Ну и? Намного сложнее такая каша читается.

AN>Но по крайней мере понятно, что делается без всяких знаний об остальном.

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

AVK>>Тогда срочно отучайся от таких привычек. Если тебя, конечно, профессиональный рост интересует.

AN>Честно говоря не вижу связи, а без учебы и так неинтересно.

Не видишь связи между умением писать лаконичный код и профессиональным ростом? Да, тут я вряд ли чем помочь смогу. Могу только сказать, что в моей текущей команде тебе либо пришлось бы быстро отказываться от таких странных принципов, либо расстаться.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[13]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 01.12.11 21:20
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>>>А при чем двойной запрос и хуже читается?

AVK>>>Вопрос непонятен.
AN>>
AN>>Но твой вариант еще и хуже читается, так что никакого смысла в двойном запросе нету.
AN>>

AN>>Этоя твой ответ не понял

AVK>В твоем варианте кода сильно больше, и он не полностью декларативный. Как следствие — читаемость его хуже.

Ну это мнение я уже слышал, я же не вижу связи между "хуже читается" и "двойным запросом". Или это просто две разных фразы?

AVK>>>Count и Single ленивость сворачивают.

AN>>Ну вот и новое узнал

AVK>Только заучивать это не надо. Достаточно понять, что переход от перечисления к скалярной величине в принципе не может не сворачивать ленивость.

В принципе да — это нужно "чувствовать"

AVK>>>Ты планируешь всю жизнь на одном месте работать?

AN>>Я и так сейчас по проектам работаю. Сделал и "свободен". Сейчас просто "большой" попался. Хотя и не люблю без особой нужды нормальное место менять.

AVK>Ну значит все может измениться.

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

AN>>>>Я привык знать тип каждой переменной

AVK>>>От дурных привычек нужно отучаться.
AN>>Отчего считаешь дурной привычкой?

AVK>Отвлекает мозги ненужными подробностями и стимулирует нормальные имена переменным давать.

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

AVK>>>Список чего?

AN>>список элементов.

AVK>Все равно непонятно.

Ну допустим этот
List<Abc> x1 = A();


AVK>>>Да все как обычно. Что именно тебя смущает? И зачем вообще тебе часто отлаживать формирование дерева запроса?

AN>>Это не обязательно дерево запроса — это принцип.

AVK>В задницу все принципы, мешающие писать хорошо читаемый и лаконичный код.

В задницу лаконичный код который может прочитать один человек из команды

AN>> Вот если это будет возврат для Funct1 и она используется так

AN>>
AN>>g(Funct1)
AN>>

AN>>и насколько будет удобно глянуть что то же возвратила функция?

AVK>Отладчик в студии вполне способен функции вызывать. С лямбдами, правда, у него проблема.

Возможно я опять чего то не знаю (а не знаю я гораздо больше, чем знаю ). Как мне глянуть в 2008 студии значение вызвращенное функцией? Например, что возвратит функция С()?

AVK>>>Ну и? Намного сложнее такая каша читается.

AN>>Но по крайней мере понятно, что делается без всяких знаний об остальном.

AVK>Оно и без переменных прекрасно понятно. Весь этот мусор никакой полезной информации не несет, только засоряет код.

Возможно для стандартного запроса к базе это и так. Но вот скажи что делает эта строка?
return A().B().C().D();


AVK>>>Тогда срочно отучайся от таких привычек. Если тебя, конечно, профессиональный рост интересует.

AN>>Честно говоря не вижу связи, а без учебы и так неинтересно.

AVK>Не видишь связи между умением писать лаконичный код и профессиональным ростом? Да, тут я вряд ли чем помочь смогу. Могу только сказать, что в моей текущей команде тебе либо пришлось бы быстро отказываться от таких странных принципов, либо расстаться.

Ну, работа в команде это совсем другая тема. И если не иметь в виду кокретные личности (Ведь мы все же абстрактно разговариваем, не так ли?). То для нормального проекта я бы не взял "умника" пишущего лаконичный код. Поддерживать подобный код достаточно тяжело. Смотришь на строчку и думаешь, что же тут хотели сэкономить? Так как что делает строка с первого взгляда совсем не ясно.
(z ||= []) << 'test'

(это к теме Руби)
По моему мнению, в многих случаях, нужно иметь не лаконичный, а понятный и "удобный код". Хотя это и сильно относительные понятия.
Но пожалуй, это обсуждение для форума "философия..."
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[14]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.12.11 11:01
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Ну это мнение я уже слышал, я же не вижу связи между "хуже читается" и "двойным запросом". Или это просто две разных фразы?


Это две разные проблемы.

AVK>>Отвлекает мозги ненужными подробностями и стимулирует нормальные имена переменным давать.

AN>Ну имена я то чисто для примера короткие взял

Наличие типа рядом провоцирует дать короткое имя, так как имя типа подсознательно является частью описания переменной.

AVK>>В задницу все принципы, мешающие писать хорошо читаемый и лаконичный код.

AN>В задницу лаконичный код который может прочитать один человек из команды

А с чего ты взял, что один человек? У большинства опытных программистов проблем, которые ты описываешь, нет.

AVK>>Отладчик в студии вполне способен функции вызывать. С лямбдами, правда, у него проблема.

AN>Возможно я опять чего то не знаю (а не знаю я гораздо больше, чем знаю ). Как мне глянуть в 2008 студии значение вызвращенное функцией? Например, что возвратит функция С()?

Так и написать в окошке отладчика — A().B().C().

AVK>>Оно и без переменных прекрасно понятно. Весь этот мусор никакой полезной информации не несет, только засоряет код.

AN>Возможно для стандартного запроса к базе это и так. Но вот скажи что делает эта строка?
AN>
AN>return A().B().C().D();
AN>


Вызывает последовательно функции A, В, С и D

AN>По моему мнению, в многих случаях, нужно иметь не лаконичный, а понятный и "удобный код".


Очень часто лаконичный это и есть понятный и удобный.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[15]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 02.12.11 18:13
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>>Отвлекает мозги ненужными подробностями и стимулирует нормальные имена переменным давать.

AN>>Ну имена я то чисто для примера короткие взял

AVK>Наличие типа рядом провоцирует дать короткое имя, так как имя типа подсознательно является частью описания переменной.

Никогда ни у меня, ни у решарпера такой провокации не возникало

AVK>>>В задницу все принципы, мешающие писать хорошо читаемый и лаконичный код.

AN>>В задницу лаконичный код который может прочитать один человек из команды

AVK>А с чего ты взял, что один человек? У большинства опытных программистов проблем, которые ты описываешь, нет.

Мне кажется, дело не в опытности, а в "привычке". Например, во всех проектах, с которыми я сталкивался все обращения к базе были исключительно в одной компоненте / отдельных файлах, методы которых я просто вызывал. А то что писал сам было еще на плюсах. Я если бы только и делал, что писал Линкушные запросы, то подобная запись была бы просто родной и сразу бы "стал опытным"
Но я вообще то имел в виду не "наши" конкретные строки, а код "особо одаренных".

AVK>>>Отладчик в студии вполне способен функции вызывать. С лямбдами, правда, у него проблема.

AN>>Возможно я опять чего то не знаю (а не знаю я гораздо больше, чем знаю ). Как мне глянуть в 2008 студии значение вызвращенное функцией? Например, что возвратит функция С()?

AVK>Так и написать в окошке отладчика — A().B().C().

Нужен не повторный вызов функций, а именно конкретное значение, которое "уже выстрадал в отладчике".
Желательно также иметь это значение в окне "авто". Да и еще историю.
Например, имея x4=5, я могу глянуть списочек x1 и проверить может ли оно вообще таким быть.

AVK>>>Оно и без переменных прекрасно понятно. Весь этот мусор никакой полезной информации не несет, только засоряет код.

AN>>Возможно для стандартного запроса к базе это и так. Но вот скажи что делает эта строка?
AN>>
AN>>return A().B().C().D();
AN>>


AVK>Вызывает последовательно функции A, В, С и D

Ну и насколько полезна подобная информация?
А тут я сразу вижу, что возвращается список из которого выбирается один элемент. Их которого "добывается" специальная строка на основе которой рассчитывается некое число. Ну и заодно проще проверку на нуль сделать/ обнаружить.
List<Abc> x1 = A();
Abc x2 = x1.B();
MyString x3 = x2.C();
int x4 = x3.D();
return x4;


AN>>По моему мнению, в многих случаях, нужно иметь не лаконичный, а понятный и "удобный код".


AVK>Очень часто лаконичный это и есть понятный и удобный.

Как то у меня совсем противоположный опыт.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re: Ошибка: Экспорт в HTML вылетает
От: Буравчик Россия  
Дата: 02.12.11 22:22
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>При экспорте в HTML происходит вылет по недостатку параметров

AN>
       public static Forum CreateInstance()
AN>        {
AN>            return TypeAccessor<Forum>.CreateInstance();
AN>        }
AN>


AN>
       public Forum(IServiceProvider provider)
AN>        {
AN>            _serviceProvider = provider;
AN>            _imageManager = ServiceProvider.GetRequiredService<IForumImageManager>();
AN>        }
AN>


Достаточно просто протащить ServiceProvider в BuildHTMLPage.

  патч
# HG changeset patch
# User buravchik
# Date 1322847769 -14400
# Node ID 97579d3042597707fb3bc7c060d9d308e0ef30ff
# Parent  70d7936492a46f970989ed79f8f17d63fa1cadae
Fix #117. Теперь экспорт сообщений, в принципе, работает.

diff -r 70d7936492a4 -r 97579d304259 Janus/Core/ObjectModel/Features/Forum.cs
--- a/Janus/Core/ObjectModel/Features/Forum.cs    Wed Nov 30 17:23:35 2011 +0400
+++ b/Janus/Core/ObjectModel/Features/Forum.cs    Fri Dec 02 21:42:49 2011 +0400
@@ -389,10 +389,5 @@
         }
 
         #endregion
-
-        public static Forum CreateInstance()
-        {
-            return TypeAccessor<Forum>.CreateInstance();
-        }
     }
 }
\ No newline at end of file
diff -r 70d7936492a4 -r 97579d304259 Janus/Features/ForumViewer/Export/MessageExporter.cs
--- a/Janus/Features/ForumViewer/Export/MessageExporter.cs    Wed Nov 30 17:23:35 2011 +0400
+++ b/Janus/Features/ForumViewer/Export/MessageExporter.cs    Fri Dec 02 21:42:49 2011 +0400
@@ -100,7 +100,7 @@
                                     Export2Text(messages, fs, pd);
                                     break;
                                 case ExportFormat.HTML:
-                                    Export2HTML(messages, fs, pd);
+                                    Export2HTML(provider, messages, fs, pd);
                                     break;
                                 case ExportFormat.MHT:
                                     Export2Mht(provider, messages, fs, pd);
@@ -285,10 +285,10 @@
         #region Р­РєСЃРїРѕСЂС‚ РІ html
 
         #region Собственно в html
-        private static void Export2HTML(IList<IMsg> msgs, Stream fs, ProgressDelegate pd)
+        private static void Export2HTML(IServiceProvider provider, IList<IMsg> msgs, Stream fs, ProgressDelegate pd)
         {
             using (var sw = new StreamWriter(fs, Encoding.Default))
-                sw.Write(BuildHTMLPage(msgs, pd, false));
+                sw.Write(BuildHTMLPage(provider, msgs, pd, false));
         }
         #endregion
 
@@ -335,7 +335,7 @@
                     codePage));
                 sw.Flush();
 
-                var htmlText = BuildHTMLPage(msgs, pd, true);
+                var htmlText = BuildHTMLPage(provider, msgs, pd, true);
                 var page = Encoding.GetEncoding(codePage).GetBytes(htmlText);
                 fs.Write(page, 0, page.Length);
 
@@ -374,12 +374,11 @@
         private const string _messageFormatResource = _resourcePrefix + "MessageFormat.html";
         private const string _resourcePrefix = "Rsdn.Janus.Features.ForumViewer.Export.";
 
-        private static string BuildHTMLPage(IList<IMsg> msgs,
-            ProgressDelegate pd, bool processSmiles)
+        private static string BuildHTMLPage(IServiceProvider provider, IList<IMsg> msgs, ProgressDelegate pd, bool processSmiles)
         {
             var formatter = new TextFormatter();
             var sb = new StringBuilder();
-            var forum = Forum.CreateInstance();
+            var forum = new Forum(provider);
             forum.LoadData(msgs[0].ForumID);
             sb.AppendFormat(
                 @"<tr><td class='s' colspan='2' align='center'>{0}&nbsp;<font size='1'>[{1}]</font></td></tr>",


А вот с ошибкой при экспорте сообщений в Поиске все сложнее. И поэтому вопрос: а надо ли вообще экспорт из избранного?

Есть три вида экспорта. И все они имеют ограничения в окне поиска:
1. Выделенные сообщения — в окне поиска сейчас нельзя выделить несколько сообщений
2. Выделенные темы — также нельзя выделить несколько сообщений (а значит тем), а также при выгрузке выгружается только одно сообщение из темы, а не вся тема
3. Весь форум — возможность отключена в окне поиска

Получается, что возможности экспорта из поиска ограничены. Так может вообще экспорт найденных сообщений убрать? Думаю экспортом сообщений вообще мало пользуются, а уж из поиска и подавно.
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 17>>
Best regards, Буравчик
Re[16]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.12.11 23:07
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>>Наличие типа рядом провоцирует дать короткое имя, так как имя типа подсознательно является частью описания переменной.

AN>Никогда ни у меня, ни у решарпера такой провокации не возникало

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

AVK>>Так и написать в окошке отладчика — A().B().C().

AN>Нужен не повторный вызов функций, а именно конкретное значение, которое "уже выстрадал в отладчике".

Не пиши функций с побочным эффектом. Конкретно в обсуждаемом случае почти все функции LINQ BLT чистые, так что никакой разницы нет.

AN>Например, имея x4=5, я могу глянуть списочек x1 и проверить может ли оно вообще таким быть.


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

AVK>>Вызывает последовательно функции A, В, С и D

AN>Ну и насколько полезна подобная информация?

Так ты пример такой привел.

AN>А тут я сразу вижу, что возвращается список из которого выбирается один элемент.


А если бы ты нормальные названия писал, а не АВС, то это тоже было бы понятно.
Да, студия и решарпер умеют показывать типы функций, если что. В том числе и в таком выражении. Ctrl+Q/Ctrl+P не пробовал нажимать?

AVK>>Очень часто лаконичный это и есть понятный и удобный.

AN>Как то у меня совсем противоположный опыт.

Ну вот твой опыт в конторе, которая до 3.0 даже не добрела, он, как бы это помягче, не очень релевантен.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[2]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.12.11 23:07
Оценка:
Здравствуйте, Буравчик, Вы писали:

AN>> return TypeAccessor<Forum>.CreateInstance();


Б>Достаточно просто протащить ServiceProvider в BuildHTMLPage.


TypeAccessor это вообще хвосты от долинкового BLT, его вообще надо приговаривать без вариантов.

Б>Получается, что возможности экспорта из поиска ограничены. Так может вообще экспорт найденных сообщений убрать? Думаю экспортом сообщений вообще мало пользуются, а уж из поиска и подавно.


Насколько я знаю, экспортом в HTML пользуются. В основном для совсем оффлайнового чтения сообщений.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[2]: Ошибка: Экспорт в HTML вылетает
От: ixor Россия  
Дата: 03.12.11 08:25
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>А вот с ошибкой при экспорте сообщений в Поиске все сложнее. И поэтому вопрос: а надо ли вообще экспорт из избранного?


Экспорт из любой точки приложения — хорошая опция.

Б>Есть три вида экспорта. И все они имеют ограничения в окне поиска:

Б>1. Выделенные сообщения — в окне поиска сейчас нельзя выделить несколько сообщений

Скорее всего баг.

Б>2. Выделенные темы — также нельзя выделить несколько сообщений (а значит тем), а также при выгрузке выгружается только одно сообщение из темы, а не вся тема


А как в поиске отделить темы от сообщений? При экспорте понятно, а в поиске вроде только сообщения.

Б>3. Весь форум — возможность отключена в окне поиска


И совершенно правильно!)

Б>Получается, что возможности экспорта из поиска ограничены. Так может вообще экспорт найденных сообщений убрать? Думаю экспортом сообщений вообще мало пользуются, а уж из поиска и подавно.


Возможность экспорта из поиска:
Юзкесй такой — найти все совпадения по искомой фразе, экспортировать и прочитать в плоском виде в спокойной обстановке для изучения какого-то конкретного вопроса или технологии.

Я вот больше сомниваюсь в необходимости экспорта "всего форума"..)) Даже довольно свежая база уже содержит 10 000 записей все в том же дот.нет форуме, прочитать такое за один раз да еще и без возможности пометки прочитанным? то есть после следуещей распечатки заново все перечитывать что ли? Весьма смутно..)) Функция конечно должна остаться..)

Экспорт из избранного: сохранить в плоском виде в html и закинуть в Evernote. Избранное в Янусе терял уже много раз, да и читать в эверноуте гораздо удобнее. Закинешь хороший пример и он доступен для быстрого обращения в лубой точке мира.

С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[2]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 03.12.11 18:11
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>А вот с ошибкой при экспорте сообщений в Поиске все сложнее. И поэтому вопрос: а надо ли вообще экспорт из избранного?


Б>Есть три вида экспорта. И все они имеют ограничения в окне поиска:

Б>1. Выделенные сообщения — в окне поиска сейчас нельзя выделить несколько сообщений
Видимо отключено специально, но при желании можно видимо что то придумать.
Б>2. Выделенные темы — также нельзя выделить несколько сообщений (а значит тем), а также при выгрузке выгружается только одно сообщение из темы, а не вся тема
Б>3. Весь форум — возможность отключена в окне поиска
Нафига это делать прямо из поиска, не зная размера темы. Можно перейти в форум на сообщение и оттуда уже решать.

Б>Получается, что возможности экспорта из поиска ограничены. Так может вообще экспорт найденных сообщений убрать? Думаю экспортом сообщений вообще мало пользуются, а уж из поиска и подавно.

Может все же проще исправить вылет?
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[17]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 03.12.11 18:11
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>>Наличие типа рядом провоцирует дать короткое имя, так как имя типа подсознательно является частью описания переменной.

AN>>Никогда ни у меня, ни у решарпера такой провокации не возникало

AVK>При чем тут решарпер вообще непонятно, а насчет не возникало ... Я тоже так думал, пока вывод типов в шарпе не появился.

Вначале пишется А();
Затем уже решарпер может сделать и тип и имя автоматом.

AVK>>>Так и написать в окошке отладчика — A().B().C().

AN>>Нужен не повторный вызов функций, а именно конкретное значение, которое "уже выстрадал в отладчике".

AVK>Не пиши функций с побочным эффектом. Конкретно в обсуждаемом случае почти все функции LINQ BLT чистые, так что никакой разницы нет.

Какая будет гарантия, что в чужом коде не будет побочных эфектов.
Я раз наверное дня три воевал с одной ошибкой, пока не дошло, что побочный эффект в ToString()

AN>>Например, имея x4=5, я могу глянуть списочек x1 и проверить может ли оно вообще таким быть.


AVK>Все это нужно только после того, как ты локализовал внутри метода проблему. И ради такого, если уж приспичило, несложно вытащить промежуточное вычисление в переменную, а потом вернуть все обратно.

И так делать каждый раз когда приспичило? И не обязательно, что локализовал. Бывает просто идешь по цепочке и проверяешь.

AVK>>>Вызывает последовательно функции A, В, С и D

AN>>Ну и насколько полезна подобная информация?

AVK>Так ты пример такой привел.

Я как раз это преднамеренно сделал, что бы разница была лучше видна.

AN>>А тут я сразу вижу, что возвращается список из которого выбирается один элемент.


AVK>А если бы ты нормальные названия писал, а не АВС, то это тоже было бы понятно.

AVK>Да, студия и решарпер умеют показывать типы функций, если что. В том числе и в таком выражении. Ctrl+Q/Ctrl+P не пробовал нажимать?
Но это нужно делать лишние двишение, при прокрутке этого не увидидшь. Тут у нас любитель регионов есть, так и то проблема их открывать иначе вообще кроме названия класса и региона.

по Ctrl+Q ничего не происходит
по Ctrl+P вызывается диалог печати

AVK>>>Очень часто лаконичный это и есть понятный и удобный.

AN>>Как то у меня совсем противоположный опыт.

AVK>Ну вот твой опыт в конторе, которая до 3.0 даже не добрела, он, как бы это помягче, не очень релевантен.

Во первых, кто говорит, что версия НЕТа определяется исключительно разработчиками?
Во вторых, отчего думаешь, что это первая моя контора и опыт исключительно по шарпу?
В третьих, я конечно, не утверждаю, что имею статистически правильную выборку и она является единственно правильной. И не думаю, что ты бы хотел утверждать это по твоему опыту.
Разница говорит лишь о том, что мы находимся в несколько "разных мирах" и чей мир являетя более "правильным" я бы никогда не взялся искать.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 8461&gt;&gt;
Re[3]: Ошибка: Экспорт в HTML вылетает
От: Буравчик Россия  
Дата: 03.12.11 18:26
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Может все же проще исправить вылет?


Вылет (отсутствие нужного конструктора) исправить действительно легко — пару постов назад выложил патч. А вот исправить вылет при экспорте найденных сообщений — сложнее. Я пока не смог разобраться.

На у самое главное, что понимать под экспортом тем из поиска? Какие темы выгружать? Всю тему, к которой относится найденное сообщение? Или все сообщения, которые являются ответом на найденное?
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 17>>
Best regards, Буравчик
Re[18]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.12.11 18:30
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>И так делать каждый раз когда приспичило?


Да. Не настолько уж частая операция — отладка — сама по себе. А уж чтобы обязательно понадобилось какое то промежуточное значение ...

AN> И не обязательно, что локализовал. Бывает просто идешь по цепочке и проверяешь.


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

AVK>>Так ты пример такой привел.

AN>Я как раз это преднамеренно сделал, что бы разница была лучше видна.

А то, что надо имена нормальные функциям и переменным давать, ты, конечно, запамятовал? Я ж в этом топике писал в том числе и об этом — что отсутствие информации о типах сразу покажет абсурдность названий типа АВС.
А теперь от абстрактных примеров перейдем к нашему коду. Что там тебе непонятно может быть и чем помогут промежуточные операции?

AN>Но это нужно делать лишние двишение


Да уж, знатное оправдание засиранию кода.

AN>, при прокрутке этого не увидидшь. Тут у нас любитель регионов есть, так и то проблема их открывать


И в чем эта проблема состоит?

AN>по Ctrl+Q ничего не происходит

AN>по Ctrl+P вызывается диалог печати

Это решарперные хоткеи. Quick Doc и Parameters Info.

AVK>>Ну вот твой опыт в конторе, которая до 3.0 даже не добрела, он, как бы это помягче, не очень релевантен.

AN>Во первых, кто говорит, что версия НЕТа определяется исключительно разработчиками?

А это неважно кем определяется. Результат важен — болото.

AN>Во вторых, отчего думаешь, что это первая моя контора и опыт исключительно по шарпу?


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

AN>Разница говорит лишь о том, что мы находимся в несколько "разных мирах" и чей мир являетя более "правильным" я бы никогда не взялся искать.


Ну оставайся тогда со своими заблуждениями. При таком подходе я вряд ли чем смогу тебе помочь.
... << RSDN@Home 1.2.0 alpha 5 rev. 1537 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[4]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 05.12.11 19:11
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, AlexNek, Вы писали:


AN>>Может все же проще исправить вылет?


Б>Вылет (отсутствие нужного конструктора) исправить действительно легко — пару постов назад выложил патч. А вот исправить вылет при экспорте найденных сообщений — сложнее. Я пока не смог разобраться.

Я даже не смотрел, не хочу от сетапа отходить, а то уже начал begin end на шарпе писать
Но по идее, починить/переделать можно довольно многое. Найти может быть непросто.

Б>На у самое главное, что понимать под экспортом тем из поиска? Какие темы выгружать? Всю тему, к которой относится найденное сообщение? Или все сообщения, которые являются ответом на найденное?

То что вижу то и экспортирую — я бы так поступил.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R7 rev. 12276&gt;&gt;
Re[19]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 05.12.11 19:11
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>И так делать каждый раз когда приспичило?


AVK>Да. Не настолько уж частая операция — отладка — сама по себе. А уж чтобы обязательно понадобилось какое то промежуточное значение ...

Никто не знает когда может понадобится, но по закону подлости всегда в самое неподходящее время.
AN>> И не обязательно, что локализовал. Бывает просто идешь по цепочке и проверяешь.

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

По крайней мере, я так отлаживал "свои" запросы.

AVK>>>Так ты пример такой привел.

AN>>Я как раз это преднамеренно сделал, что бы разница была лучше видна.

AVK>А то, что надо имена нормальные функциям и переменным давать, ты, конечно, запамятовал?

нет тоже специально не сделал.
AVK>Я ж в этом топике писал в том числе и об этом — что отсутствие информации о типах сразу покажет абсурдность названий типа АВС.
AVK>А теперь от абстрактных примеров перейдем к нашему коду. Что там тебе непонятно может быть и чем помогут промежуточные операции?
вот все время ты конкретику хочешь
Абсолютно непонятного нет ничего, просто "не проглатывается" сразу. Ну не знаю я какой тип возвратят db.Users и при чем здесь FormatAuthor, а для SingleOrDefault нужно в хелп лезть. Да и к лямбдам только недавно немного привык и то на Янусе.

AN>>Но это нужно делать лишние двишение


AVK>Да уж, знатное оправдание засиранию кода.

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

AN>>, при прокрутке этого не увидидшь. Тут у нас любитель регионов есть, так и то проблема их открывать


AVK>И в чем эта проблема состоит?

нажать Ctrl-M-L, потому как обычно все через мышу и одной рукой фиг нажмешь.

AN>>по Ctrl+Q ничего не происходит

AN>>по Ctrl+P вызывается диалог печати

AVK>Это решарперные хоткеи. Quick Doc и Parameters Info.

Нашел,но что то не вижу как они могут помочь в данной ситуации.
Quick Doc
Parameters Info

AVK>>>Ну вот твой опыт в конторе, которая до 3.0 даже не добрела, он, как бы это помягче, не очень релевантен.

AN>>Во первых, кто говорит, что версия НЕТа определяется исключительно разработчиками?

AVK>А это неважно кем определяется. Результат важен — болото.

А если бы в таргете стояло 4.0, было бы что то по другому?
Версию определяют заказчики и если они хотят сейчас все еще 2.0 что прикажешь делать?
Но мне достаточно того, что это "болото" меня кормит и не издевается.

AN>>Во вторых, отчего думаешь, что это первая моя контора и опыт исключительно по шарпу?


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

А сколько человек — крупная команда? Хотя я и не собираюсь, что либо доказывать, институтские времена давно уже позади. И никого я не вовлекаю в свою религию, просто описываю, даже может не мнение, а "чувства".

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

AN>>Разница говорит лишь о том, что мы находимся в несколько "разных мирах" и чей мир являетя более "правильным" я бы никогда не взялся искать.


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

Я вообще, всегда стараюсь прислушиваться к твоим советам. Но проповедование единой и незыблемой религии уже вроде проходили
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R7 rev. 12276&gt;&gt;
Re[20]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.12.11 20:27
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Никто не знает когда может понадобится, но по закону подлости всегда в самое неподходящее время.


Ну вот когда понадобится, тогда и можно добавить.

AVK>>А теперь от абстрактных примеров перейдем к нашему коду. Что там тебе непонятно может быть и чем помогут промежуточные операции?

AN>вот все время ты конкретику хочешь

А зачем тут философские абстракции?

AN>Абсолютно непонятного нет ничего, просто "не проглатывается" сразу.


Это субъективно. Для меня твою кашу читать намного сложнее.

AN> Ну не знаю я какой тип возвратят db.Users


И слава богу. Для понимания кода это не нужно.

AN> и при чем здесь FormatAuthor


Из названия понятно.

AN>, а для SingleOrDefault нужно в хелп лезть


Запомнить пару десятков query operators совсем несложно.

AN>. Да и к лямбдам только недавно немного привык и то на Янусе.


Вот я и говорю — все упирается в твое незнание языка, но исправлять ситуацию ты почему то упорно не хочешь.

AVK>>Это решарперные хоткеи. Quick Doc и Parameters Info.

AN>Нашел,но что то не вижу как они могут помочь в данной ситуации.

Они сообщат тебе так желаемые тобой типы.

AN>Версию определяют заказчики


Заказчики определяют версию рантайма, а не языка.

AN>А у тебя профессионал, тот кто среди ночи скажет как называется ... и какое количество вчерашних новинок он пользует сегодня (один фиг нужны или нет)?


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

AN>Я вообще, всегда стараюсь прислушиваться к твоим советам.


Как то незаметно, если честно.

AN> Но проповедование единой и незыблемой религии уже вроде проходили


Никакой религии мне не нужно.
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[6]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 05.12.11 21:34
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AN>>Но по идее, починить/переделать можно довольно многое. Найти может быть непросто.


AVK>Я уже все починил. Там, помимо этого, еще пачка багов была.

Залил уже на битбакет? Коммент есть? Бум грабить тогда...
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R7 rev. 12276&gt;&gt;
Re[7]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.12.11 22:08
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Залил уже на битбакет?


Да.

AN> Коммент есть?


Какой коммент? К коммитам? Есть.
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[21]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 07.12.11 17:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AN>Никто не знает когда может понадобится, но по закону подлости всегда в самое неподходящее время.


AVK> Ну вот когда понадобится, тогда и можно добавить.


AVK> AVK>>А теперь от абстрактных примеров перейдем к нашему коду. Что там тебе непонятно может быть и чем помогут промежуточные операции?


AVK> AN>вот все время ты конкретику хочешь


AVK> А зачем тут философские абстракции?

Так я уже говорил что тему лучше бы перенести в философию..

AVK> AN>Абсолютно непонятного нет ничего, просто "не проглатывается" сразу.


AVK> Это субъективно.

Именно это я говорю.

AVK> Для меня твою кашу читать намного сложнее.

взаимно

AVK> AN> Ну не знаю я какой тип возвратят db.Users


AVK> И слава богу. Для понимания кода это не нужно.

Кому как, картинка не складывается.

AVK> AN> и при чем здесь FormatAuthor


AVK> Из названия понятно.

Для чего его еще форматировать и что он возвращает?

AVK> AN>, а для SingleOrDefault нужно в хелп лезть


AVK> Запомнить пару десятков query operators совсем несложно.

Для начала нужно начать их интенсивно пользовать
Если просто прочитать и не пользовать то через какое то время нужно все равно в хелп лезть.

AVK> AN>. Да и к лямбдам только недавно немного привык и то на Янусе.


AVK> Вот я и говорю — все упирается в твое незнание языка, но исправлять ситуацию ты почему то упорно не хочешь.

Знать и пользовать, мне кажется, две разные вещи.

AVK> AVK>>Это решарперные хоткеи. Quick Doc и Parameters Info.


AVK> AN>Нашел,но что то не вижу как они могут помочь в данной ситуации.


AVK> Они сообщат тебе так желаемые тобой типы.

По описанию этого не видно, но опять таки — это при обычном просмотре текста не видно. А исходники можно смотреть и просто в "текстовом диффе"

AVK> AN>Версию определяют заказчики


AVK> Заказчики определяют версию рантайма, а не языка.

А что можно пользовать 4-ку с таргетом на 2-ку?

AVK> AN>А у тебя профессионал, тот кто среди ночи скажет как называется ... и какое количество вчерашних новинок он пользует сегодня (один фиг нужны или нет)?


AVK> У меня профессионал, это тот кто пишет простой, лаконичный и неглючный код, а не отмазывается незнанием языка.

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

AVK> AN>Я вообще, всегда стараюсь прислушиваться к твоим советам.


AVK> Как то незаметно, если честно.

Это просто издалека так, приезжай в гости, увидишь ближе.

AVK> AN> Но проповедование единой и незыблемой религии уже вроде проходили


AVK> Никакой религии мне не нужно.

ну другого слова я не могу подобрать.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[22]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 07.12.11 19:15
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>> Из названия понятно.

AN>Для чего его еще форматировать

На это тебе и явная аннотация типа ответа не даст.

AN> и что он возвращает?


Форматированное имя.

AVK>> Запомнить пару десятков query operators совсем несложно.

AN>Для начала нужно начать их интенсивно пользовать

Ну так начни. Я тебе с самого начала об этом писал.

AVK>> Вот я и говорю — все упирается в твое незнание языка, но исправлять ситуацию ты почему то упорно не хочешь.

AN>Знать и пользовать, мне кажется, две разные вещи.

Но ты то и использовать упорно не желаешь.

AVK>> Они сообщат тебе так желаемые тобой типы.

AN>По описанию этого не видно

Ужась.

AN>, но опять таки — это при обычном просмотре текста не видно. А исходники можно смотреть и просто в "текстовом диффе"


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

AVK>> Заказчики определяют версию рантайма, а не языка.

AN>А что можно пользовать 4-ку с таргетом на 2-ку?

Можно.

AVK>> У меня профессионал, это тот кто пишет простой, лаконичный и неглючный код, а не отмазывается незнанием языка.

AN>Был у нас такой, очень просто и лаконично любил писать, потом только сидишь и думаешь, а что же эта функция делает? По счастью, сплавили его в другой проект.



AVK>> Как то незаметно, если честно.

AN>Это просто издалека так, приезжай в гости, увидишь ближе.

Куда?
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[23]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 09.12.11 22:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, AlexNek, Вы писали:


AVK>>> Запомнить пару десятков query operators совсем несложно.

AN>>Для начала нужно начать их интенсивно пользовать

AVK>Ну так начни. Я тебе с самого начала об этом писал.

Где именно нужно начать?

AVK>>> Вот я и говорю — все упирается в твое незнание языка, но исправлять ситуацию ты почему то упорно не хочешь.

AN>>Знать и пользовать, мне кажется, две разные вещи.

AVK>Но ты то и использовать упорно не желаешь.


Что именно?
AVK>>> Они сообщат тебе так желаемые тобой типы.
AN>>По описанию этого не видно

AVK>Ужась.

Может я не туда смотрел.
Quick Doc
Parameters Info
AN>>, но опять таки — это при обычном просмотре текста не видно. А исходники можно смотреть и просто в "текстовом диффе"

AVK>Ну да, придумать отмазку можно всегда. Особенно когда не хочется разбираться вновом.

как ты определяешь — "разбираться в новом"?

AVK>>> Заказчики определяют версию рантайма, а не языка.

AN>>А что можно пользовать 4-ку с таргетом на 2-ку?

AVK>Можно.

А какого тогда нужно для Януса грузить 3.5 а не 2.0?

AVK>>> У меня профессионал, это тот кто пишет простой, лаконичный и неглючный код, а не отмазывается незнанием языка.

AN>>Был у нас такой, очень просто и лаконично любил писать, потом только сидишь и думаешь, а что же эта функция делает? По счастью, сплавили его в другой проект.

AVK>

Он кстати, шарпа почти не знал.

AVK>>> Как то незаметно, если честно.

AN>>Это просто издалека так, приезжай в гости, увидишь ближе.

AVK>Куда?

проверь почту.
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5-AN-R7 rev. 12276&gt;&gt;
Re[24]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.12.11 14:22
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>>Ну так начни. Я тебе с самого начала об этом писал.

AN>Где именно нужно начать?

В янусе, разумеется.

AN>>>А что можно пользовать 4-ку с таргетом на 2-ку?

AVK>>Можно.
AN>А какого тогда нужно для Януса грузить 3.5 а не 2.0?

Я провел опрос и оказалось, что ограничение януса голым 2.0 никому не нужно. А одно время да, янус, хоть и собирался компилятором от 3.5, работал на голом 2.0.
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[25]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 11.12.11 13:57
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AVK>>Ну так начни. Я тебе с самого начала об этом писал.


AVK> AN>Где именно нужно начать?


AVK> В янусе, разумеется.

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

AVK> AN>>>А что можно пользовать 4-ку с таргетом на 2-ку?


AVK> AVK>>Можно.


AVK> AN>А какого тогда нужно для Януса грузить 3.5 а не 2.0?


AVK> Я провел опрос и оказалось, что ограничение януса голым 2.0 никому не нужно. А одно время да, янус, хоть и собирался компилятором от 3.5, работал на голом 2.0.

Так, похоже, мы о разных вещах говорим, ты похоже говоришь о компиляторе для языка версии х.
Я же имел в виду использовать при разработке фрэймворк НЕТх.0, но что бы у пользователей был только НЕТ2.0.
А с компилятором тоже проблема, на CI стоит кем — то "вышестоящим" утвержденный компайлер. И пока сверху не прийдет директива — никаких изменений.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[26]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.12.11 15:40
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>> В янусе, разумеется.

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

AN>Я же имел в виду использовать при разработке фрэймворк НЕТх.0, но что бы у пользователей был только НЕТ2.0.


А при чем тут фреймворк? Мы тут исключительно про язык говорили.

AN>А с компилятором тоже проблема, на CI стоит кем — то "вышестоящим" утвержденный компайлер.


Вот я и говорю — болото у вас.

AN> И пока сверху не прийдет директива — никаких изменений.


За 6 лет можно было продавить смену компилятора, не?
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[27]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 11.12.11 22:55
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AVK>> В янусе, разумеется.


AVK> AN>Ну так это также была одна из причин, по которой я им занялся — узнать чего то новое.


AVK> AN>Я же имел в виду использовать при разработке фрэймворк НЕТх.0, но что бы у пользователей был только НЕТ2.0.


AVK> А при чем тут фреймворк? Мы тут исключительно про язык говорили.

Отчего мы?

AVK> AN>А с компилятором тоже проблема, на CI стоит кем — то "вышестоящим" утвержденный компайлер.


AVK> Вот я и говорю — болото у вас.

100% гарантию дашь что все старые программы, которые мы в глаза даже не видели будут работать абсолютно точно также после другого компайлера?

AVK> AN> И пока сверху не прийдет директива — никаких изменений.


AVK> За 6 лет можно было продавить смену компилятора, не?

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

Какой выигрыш получим от смены?
В тройке, например не нашел ничего, что нужно нам вот как позарез, даже скорее наоборот.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[28]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.12.11 10:23
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>> Вот я и говорю — болото у вас.

AN>100% гарантию дашь что все старые программы, которые мы в глаза даже не видели будут работать абсолютно точно также после другого компайлера?

Мне проблемы подобного рода не попадались ни разу.

AN>Какой выигрыш получим от смены?


Ускорение решения ряда задач, более удобный инструмент.

AN>В тройке, например не нашел ничего, что нужно нам вот как позарез, даже скорее наоборот.


Именно об этом я тут и писал. Болото.
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[29]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 13.12.11 18:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AVK>> Вот я и говорю — болото у вас.


AVK> AN>100% гарантию дашь что все старые программы, которые мы в глаза даже не видели будут работать абсолютно точно также после другого компайлера?


AVK> Мне проблемы подобного рода не попадались ни разу.

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

AVK> AN>Какой выигрыш получим от смены?


AVK> Ускорение решения ряда задач, более удобный инструмент.

Ну а если нет этого ряда задач?

AVK> AN>В тройке, например не нашел ничего, что нужно нам вот как позарез, даже скорее наоборот.


AVK> Именно об этом я тут и писал. Болото.

вот, например, не болотная функция. Как поставить точку останова на вход в resolver?
        private static IDisposable ReflectionResolverScope()
        {
            ResolveEventHandler resolver = (s, a) => Assembly.ReflectionOnlyLoad(a.Name);
            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += resolver;
            return
                Disposable.Create(
                    () => AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= resolver);
        }
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[30]: Ошибка: Экспорт в HTML вылетает
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.12.11 21:30
Оценка:
Здравствуйте, AlexNek, Вы писали:

AVK>> Мне проблемы подобного рода не попадались ни разу.

AN>На плюсах бывало без оптимизации работает, с ней нет.

А при чем тут плюсы?

AN>Представь себя на месте тех кто принимает решение.


А что мне представлять? Я и сам такое решение принимал.

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


Ага, я и говорю, болото.

AVK>> Ускорение решения ряда задач, более удобный инструмент.

AN>Ну а если нет этого ряда задач?

Или кто то считает, что нет. Когда решение принимают не разработчики, такое иногда бывает.

AVK>> Именно об этом я тут и писал. Болото.

AN>вот, например, не болотная функция. Как поставить точку останова на вход в resolver?
AN>
        private static IDisposable ReflectionResolverScope()
AN>        {
AN>            ResolveEventHandler resolver = (s, a) => Assembly.ReflectionOnlyLoad(a.Name);
AN>            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += resolver;
AN>            return
AN>                Disposable.Create(
AN>                    () => AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= resolver);
AN>        }
AN>


Выделяешь код лямбды и жмешь F9.
... << RSDN@Home 1.2.0 alpha 5 rev. 16 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[31]: Ошибка: Экспорт в HTML вылетает
От: AlexNek  
Дата: 17.12.11 00:09
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK> AVK>> Мне проблемы подобного рода не попадались ни разу.


AVK> AN>На плюсах бывало без оптимизации работает, с ней нет.


AVK> А при чем тут плюсы?

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

AVK> AN>Представь себя на месте тех кто принимает решение.


AVK> А что мне представлять? Я и сам такое решение принимал.

А сколько примерно было при этом связанных проектов и организаций?

AVK> AN> Если ничего не менять новых проблем точно не будет, а если менять для каких то там возможных выигрышей проблемы могут быть.


AVK> Ага, я и говорю, болото.

скорее, поддержка принципа не "трогай без необходимости".

AVK> AVK>> Ускорение решения ряда задач, более удобный инструмент.


AVK> AN>Ну а если нет этого ряда задач?


AVK> Или кто то считает, что нет. Когда решение принимают не разработчики, такое иногда бывает.


AVK> AVK>> Именно об этом я тут и писал. Болото.


AVK> AN>вот, например, не болотная функция. Как поставить точку останова на вход в resolver?

AVK> AN>
        private static IDisposable ReflectionResolverScope()
AVK> AN>        {
AVK> AN>            ResolveEventHandler resolver = (s, a) => Assembly.ReflectionOnlyLoad(a.Name);
AVK> AN>            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += resolver;
AVK> AN>            return
AVK> AN>                Disposable.Create(

AVK> AN>                    () => AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= resolver);

AVK> AN>        }
AVK> AN>


AVK> Выделяешь код лямбды и жмешь F9.

Ну это же неудобно...
avalon 1.0rc3 rev 419, zlib 1.2.3
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.