Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Где фермеры продают продукты, когда рынки закрыты?
Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
soks

soks

  • 9
    вклад
  • 2
    вопроса
  • 19
    ответов
  • 5%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Какую CMS выбрать для хранения регламентов компании на WIN SERVER

    0000168 @0000168
    Разверните SharePoint
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 1 Комментировать
  • Оптимизация EventLog?

    kefirr
    kefirr @kefirr
    У меня 63к записей, тормозит именно чтение целого лога. А Reverse именно прочитает всё и начнёт возвращать с конца. Доступ к отдельным записям по индексу быстрый.

    Используйте Count и доступ по индексу.
    Если хочется LINQ — вот, например, метод, перечисляющий записи с конца.

    public static IEnumerable<EventLogEntry> EnumerateLatestLogEntries()
    {
    	var entries = new EventLog("System").Entries;
    	for (var i = entries.Count-1; i>=0;i--)
    	{
    		yield return entries[i];
    	}	
    }
    


    Но если нужен именно UI, отображающий события (список там или грид), то нужно думать о виртуализации данных. То есть, например, подгружать записи из лога по мере скроллирования.
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 1 2 комментария
  • Чем просматривать HTTPS запросы?

    AFoST
    AFoST @AFoST
    Вот http://www.fiddler2.com/fiddler2/ должно помочь
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 4 Комментировать
  • Обход двумерного массива при помощи одного foreach на C#?

    clx
    clx @clx
    Например так:
    var array = from i in Enumerable.Range(0, 5)
                from j in Enumerable.Range(0, 3)
                select new { Row = i, Col = j };
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 7 1 комментарий
  • Вопрос по c sharp

    Zlobober @Zlobober
    Хочу собрать автомобиль «Тойота». Есть колёса, кузов, двери и дрель «Механик-60». Картинка требуемого автомобиля прилагается. С помощью чего это можно реализовать?
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 12 Комментировать
  • Статья про борьбу с "хронической усталостью"

    lsoul
    Максим Шишкин @lsoul
    Неожиданно - юрист
    В GTD наверное будет в тему.
    Думаю, это будет интересно.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 9 Комментировать
  • Программно залогинится на login.microsoftonline.com (C#)

    rasa
    rasa @rasa
    Это не вы задавали вопрос?
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 1 1 комментарий
  • Посоветуйте книги про Project Management

    Maxim Avanov @Ghostwriter
    Критическая цепь
    Цель
    Цель-2
    Теория ограничений Голдратта
    Внутри торнадо
    Ответ написан более трёх лет назад
    5 комментариев
    Нравится 9 5 комментариев
  • Что вдохновляет вас писать код?

    Elkaz @Elkaz
    Интересный и перспективный проект, где есть умные менеджеры, хороший руководитель, и разного рода мелочи (удобный стол, удобное кресло, печеньки). Возможность оставаться на работе (душ, кровать). Возможность приходить и уходить в любое время. Отсутствие тотального контроля. Когда программист погружен в подобную или близкую атмосферу, код будет писаться сам по себе =) В целом в любой работе так =) Удовлетворить все пожелания (реальные, а не Бентли под окна) работника — и дело в шляпе. Суммарная затратность не такая большая, а профитов в разы больше.
    Ответ написан более трёх лет назад
    7 комментариев
    Нравится 31 7 комментариев
  • Что вдохновляет вас писать код?

    tucnak @tucnak
    Что-то внутри. Наверное сущность программиста…
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 5 Комментировать
  • Ищу Учителя / Наставника по C#

    taliban
    Анатолий @taliban
    php программист
    Половина желаний не относится конкретно к языку, прочитайте пару книг (да, именно не одну а больше) И вот тогда уже, избавясь от половины вопросов и желаний сами поймете чего Вам действительно нужно.
    Ответ написан более трёх лет назад
    4 комментария
    Нравится 3 4 комментария
  • Интересное поведение хомячков

    LastDragon @LastDragon
    Это хабра!

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

    (к счастью, нормальные индивидуумы здесь тоже встречаются)
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 15 2 комментария
  • А что вы делаете ночью на Хабре?

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

    Режим сбился, да.
    Ответ написан более трёх лет назад
    3 комментария
    Нравится 6 3 комментария
  • А что вы делаете ночью на Хабре?

    Weballergy
    Weballergy @Weballergy
    Пытаюсь найти что-нибудь на RoR, что можно доработать до аналога DLE и иже с ним.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 8 Комментировать
  • MVC, как лучше избежать дублирование кода?

    bioroot @bioroot
    Первым делом определитесь чего вы хотите на самом деле. Не понятно почему отсутствие проверки родителя — непрофессиональность. Если она не нужна, то непрофессиональность как раз её написание ради какой-то абстрактной идеи. Например, для региона может быть нужно сделать отдельную страницу при наличии страны и отсутствии его самого («для указанной страны не существует такого региона»). Если все ошибки ведут на одинаковую надпись «страница не найдена», то дополнительные проверки ни к чему.

    Далее надо определиться с реализацией. Но тут уже вам должно быть виднее какая у вас архитектура. По сути всё предложенное выше сводится к классическому паттерну Strategy: весь общий функционал оставляем в родительском классе, а все частности (ключевой момент — их должно быть мало) переносим в наследников. В вашем случае предком будет CRUDController с реализацией метеодов завязанной на modelClass, а потомками классы определяющие этот modelClass и метод checkRequest. Дёрганье checkRequest прописывайте где вам нравится. Не знаю как устроен Yii, но если он позволяет создавать контроллеры произвольных классов не наследуясь ни от кого, то имеет смысл вообще объявить CRUDController абстрактным и в нём же прописать абстрактный метод checkRequest. Тогда это будет вообще Strategy из книжки, а вы получите возможность использовать checkRequest в других методах CRUDController не опасаясь того что в наследниках он не определён. И ещё обычно в современных фреймворках есть метод, который дёргается перед любым экшеном контроллера. Возможно, там вашему checkRequest самое место.

    Продолжая фантазировать на тему, можно сделать тип модели modelClass передаваемым в параметре. Или получать его исходя из того что вам передали. Только надо сделать карту допустимых значений. Что-нибудь типа
    array(
    	...
    	'region' => array( 'model' => 'regionModel', 'parent' => 'countryModel' ),
    	'country' => array( 'model' => 'countryModel', 'parent' => null )
    )
    

    и из этой карты получать модель и родителя проходя по ключам массива и проверяя на существование параметра с таким ключом. Как только нашли — проверяем существование родителя и работаем по общим методам с уже определённым значением modelClass.

    Почему все советуют делать Strategy. Потому что эта штука зарекомендовала себя в боях. Классический ООП подход часто приносит больше трудностей при разработке (надо быть аккуратнее и чаще всего писать больший объём кода), но даёт заметный выигрыш при необходимости изменить какую-то часть проекта. К примеру, «нафантазированный» способ реализуется быстрее (надо добавить пару методов и карту соответствия, против базового класса + 5 классов дочерних для сущностей). Но при этом если понадобиться добавить какой-то новый экшн (например, добавление комментария к ревью), то в случае со стратегией вы просто впишите его в нужный класс. А для более простого метода придётся ломать себе голову с изобретением исключения в логике. Пару раз так можно сделать, но… после 12 костылей код превратится в тыкву.

    Но, в конечном итоге, решать всё-равно вам. Может быть и второй быстрый способ подойдёт, потому что «там стопудова ничего не будет меняться» (не верьте тем кто так говорит — обязательно будет). Может вы их скрестите и внесёте в базовый класс стандартную реализацию checkRequest, а в дочерних классах будете определять только modelClass и parentModelClass. Всё зависит от конкретных потребностей и архитектуры проекта.
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 2 1 комментарий
  • Помогите с excel формулой

    resurtm
    resurtm @resurtm
    dl.dropbox.com/u/916366/habr/qa_excel.png — 3 минуты гугления.
    Ответ написан более трёх лет назад
    4 комментария
    Нравится 5 4 комментария
  • Этично ли кинуть взломщика собственного сайта?

    pnick
    Николай @pnick
    Телеком инженер
    Главное, чтоб этот пост не прочитал тот самый заказчик (:
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 12 Комментировать
  • Этично ли кинуть взломщика собственного сайта?

    Yaraife @Yaraife
    Сама деятельность незаконна, т.е. вся эта сделка.
    Это означает, что покупатель не защищен законом.

    Позаботьтесь об анонимности, и, конечно, киньте его.
    1) Так как заказчик пытается украсть ваши данные, он может считаться для вас врагом, и однозначно следует попытаться ослабить его, например кинув его на деньги. (он не сможет повторить операцию)
    2) Он не защищен законом, поэтому не сможет ничего предпринять, скажем подать в суд.

    Поразительная внимательность для владельца сайта.
    Не вижу причин не кидать заказчика на деньги, если только эти несколько хешей пользователей для вас не буду серьёзной угрозой.
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 21 2 комментария
  • Посоветуйте художественную литературу для программистов

    alexmay
    Alex May @alexmay
    Я бы посоветовал читать Шекли, а также
    Автостопом по галактике
    Автостопом (Д. Адамса) — вообще надо в обязательный курс программистов внести :)
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 5 Комментировать
  • C#. Возможно ли создать список объектов заранее неизвестного типа?

    bleykher @bleykher
    Тяжело ответить на вопрос без примера дальнейшего использования списка.
    1. Можно сделать просто создать
    List<object>
    и туда пихать всё, что угодно.
    2. Если нужно будет вызывать какой-то метод для объекта в списке, то можно Value унаследовать от класса, содержащего объявление нужного метода (класс BaseValue) и создать список
     List<BaseValue>
    .
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 4 1 комментарий
Оценили как «Нравится»
Самые активные сегодня
  • neuotq
    Александр Талалаев
    • 10 ответов
    • 0 вопросов
  • Василий Банников
    • 9 ответов
    • 0 вопросов
  • SoreMix
    SoreMix
    • 8 ответов
    • 0 вопросов
  • shambler81
    Виктор Таран
    • 8 ответов
    • 0 вопросов
  • Kozack
    Alex
    • 7 ответов
    • 0 вопросов
  • enkryptor
    Виталий Сергеев
    • 6 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации