• Повторение попыток выполнения после сбоя?

    kk86
    @kk86
    Естественно, что простой цикл или «расписание» задач будут лежать в основе метода. Трудно придумать что-то ещё.

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

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

    А теперь представим, что в процессе загрузок аккумулятор телефона разряжается. Это и есть тот нюанс. В идеале, планировщик хранит список задач в ПЗУ. Например, планировщик может сохранять в файл на диске список изображений, подлежащих загрузке и «вычёркивать» оттуда те, которые были успешно загружены.

    Возможно, есть что-то готовое, но я не встречал, честно говоря.
    Ответ написан
  • [C# / Visual Studio] Кодогенерация класса и мгновенное его использование в редакторе

    kk86
    @kk86
    Сразу скажу, что не очень понял вашу задачу, поэтому могу «нагнать пурги».

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

    Если убрать ограничение кастомной грамматики, то может помочь T4 (Text Template Transformation Toolkit). Внимание! Не уверен, что будет работать генерация в том случае, если компилируете не из студии, а MSBuild'ом.

    Если вам можно не в студии, а в рантайме, то можно накрутить самописный генератор на основе CodeDom, Mono.Cecil или аналогов…

    Ещё вариант, написать библиотеку с такими типами на языке Nemerle и использовать потом из клиента. В пределах Nemerle вы можете легко описать свой DSL (domain specific language).
    Ответ написан
    Комментировать
  • Как грамотно называются отступы?

    kk86
    @kk86
    У нас в конторе их называют сайдбарами.
    Ответ написан
  • Что значат некоторые устойчивые английские термины в веб-программировании?

    kk86
    @kk86
    DSL чаще всего встречал как Domain-specific language. На русский переводят как «предметно-ориентированный язык программирования».

    Вашу интерпретацию DSL вижу впервые.
    Ответ написан
    3 комментария
  • Определитель/калькулятор лицензии?

    kk86
    @kk86 Автор вопроса
    Обнаружил неплохую диаграммку тут: marakana.com/s/understanding_open_source_licenses,1030/index.html
    Ответ написан
    Комментировать
  • Как набрать первые 5 единиц кармы?

    kk86
    @kk86
    В основном, народ это делает как раз в q&a двумя способами:
    — отвечая на вопросы;
    — публикуя прямую просьбу, как вы (только обычно ещё тему указывают).

    Плюсанул.
    Ответ написан
    3 комментария
  • Что делать с человеком, который не комментирует код?

    kk86
    @kk86
    Если код и правда понятен, то зачем заставлять писать лишнее? Если код местами непонятен, аргументированно требуйте комментировать такие места. В качестве аргументов желательно приводить факт непонятности кода другим разработчикам (то есть надо попросить нескольких людей объяснить что делает неизвестный им код за 5-10 минут).

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

    Как разработчик могу сказать, что сам противник комментариев, но с оговоркой: неясные моменты всё-таки надо комментировать, если не удаётся переписать. Другое дело, что когда руководство или коллеги начинают продавливать желание видеть комментарии везде, это вызывает раздражение, так как с комментариями жить тяжелее (не буду «баянить» про то, что их непросто поддерживать и т.п.)
    Ответ написан
    3 комментария
  • Реализация hashCode(); в классе Object (Java)

    kk86
    @kk86
    Вот тут нашёл не саму реализацию, но объяснение её принипа:
    As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)
    Ответ написан
  • Пожалуйста объясните преимущества .Net для веба?

    kk86
    @kk86
    Строго в качестве имхо. Разработка на ASP.NET ведётся по двум основным причинам:

    1) при правильной разработке результирующий продукт (сайт) может работать быстрее, чем написанный на интерпретируемых языках. Достигается благодаря компиляции исходников в байт-код и JIT. Правда, Java может быть также близка. Лично для меня C# намного приятнее Java, однако в Java-мире есть Scala, которая, пожалуй, даже ещё приятнее.
    Вообще, это не очень аргумент, т.к. скорость работы обычных сайтов (без меганагрузок) зависит не от платформы, а от прямизны рук программистов и извилистости поверхностей их мозгов. :)

    2) дотнет-разработчиков достаточно много. В сравнении с тем же Ruby-девелоперами, например. Так что те, кто берутся делать проект на .NET, могут не бояться совсем не найти специалистов, если надо будет нанять ещё несколько человек.

    Есть ещё пара аргументов, но я их тут писать не буду, т.к. народ наверняка подумает, что я совсем уж троллю. :)
    Ответ написан
    3 комментария
  • Посоветуйте хороший учебник по CSS

    kk86
    @kk86
    На хороший базовый/средний уровень можно быстро выйти, прочитав «Большая книга CSS» (Дэвид Сойер Макфарланд).
    Ответ написан
  • WPF вшить библиотеку в экзешник?

    kk86
    @kk86
    Можно и без ILMerge. Вот, например. Вообще, тема изъезжена. Вариантов больше двух есть.
    Ответ написан
    Комментировать
  • Что за конь?

    kk86
    @kk86
    Луркморье в помощь
    Ответ написан
    Комментировать
  • Что за тостер на главной?

    kk86
    @kk86
    Это какая-то мерзенькая реклама. Я долго не мог одуплить, что происходит.
    Ответ написан
    Комментировать
  • Дешевый ноутбук для того, кто пишет много текстов

    kk86
    @kk86
    Я использую Asus EEE PC 1005 PE, мне хватает, чтобы около 6 часов заниматься программированием в Visual Studio 2008 / NetBeans при включённом WiFi. Из плюсов — озвученный аккумулятор, малая масса. Из минусов, по большому счёту, только глянец и 13''. С последним можно мириться, а глянец мешает.

    Сам покупал за 13 тысяч. Что с ценами сейчас, я не очень знаю. Кстати, советую указать в вопросе бюджет, а то расплывчатое требование.

    Купил около года назад. Общее впечатление охарактеризовываю как «очень доволен».
    Ответ написан
  • Как отучить стажёра от говнокода?

    kk86
    @kk86
    Я не хочу Вас обидеть, но посоветовать новичку регулярки использовать, это надо было догадаться.

    А если конструктивно, то долбить, долбить и долбить, как правильно писать код. Парное программирование, код ревью и прочее. Повторение — мать учения.
    Ну и книги какие-то вручить. Например, классический Code Complete.

    Очень желаю Вам удачи. Выращивание кадров достойно уважения, не часто такое бывает.
    Ответ написан
    2 комментария
  • C#. Возможно ли создать список объектов заранее неизвестного типа?

    kk86
    @kk86
    Как вариант, использовать список типа dynamic:

    List x = new List();

    Но по сути это то же, что и список Object'ов, только ещё медленнее работающий, но не требующий явного приведения типов в коде. Учтите, что использование dynamic может нанести ущерб производительности, т.к. за ним стоит рефлекшн. Пример:

    Copy Source | Copy HTML
    1. using System;
    2. using System.Collections.Generic;
    3. namespace Test
    4. {
    5.     class Program
    6.     {
    7.         public static void Main(string[] args)
    8.         {
    9.             List<dynamic> list = new List<dynamic>();
    10.             list.Add(1);
    11.             list.Add("sdfsdf");
    12.  
    13.             foreach (dynamic item in list)
    14.                 Write(item);
    15.  
    16.             Console.ReadKey(true);
    17.         }
    18.  
    19.         public static void Write(Int32 intValue)
    20.         {
    21.             Console.WriteLine("Int: " + intValue);
    22.         }
    23.         public static void Write(String stringValue)
    24.         {
    25.             Console.WriteLine("String: " + stringValue);
    26.         }
    27.     }
    28. }
    Ответ написан
    Комментировать