Pull to refresh
39
0
Игорь @elw00d

Разработчик

Send message
Не могли бы вы взглянуть на bitbucket.org/igor_kostromin/wpf-mvp/ (ссылка на пример)? Интересно ваше мнение о такой реализации — похоже, что у нас и получился именно MVPVM, о котором вы говорите.
Спасибо за наводки, но, на мой взгляд, не хватает ссылки на проект-пример целиком (с приложенным примером template.docx) и инструкцией по сборке и запуску.
Неудачная попытка сэкономить на спичках в ущерб понятности кода. Для собеседований годится только разве что для того, чтобы дать ответ на вопрос «знаком ли кандидат с эффектами падения производительности из-за случайного доступа к памяти». К применению джавы в реальном мире имеет очень слабое отношение, как и к квалификации кандидата. Если, конечно, работа по предлагаемой вакансии не состоит в тюнинге и пропатчивании джавского JIT-компилятора.
В контексте обсуждения пропиарю собственный велосипед на сишарпе: https://bitbucket.org/igor_kostromin/consoleframework. Пример можно посмотреть здесь: https://bitbucket.org/igor_kostromin/cmdradio-visual (скриншоты и описание). Как-нибудь тоже соберусь и напишу отдельную заметку.
Вы пишете, что использовали девайсы Avermedia. Они ведь не поддерживают запись видео защищенных с HDCP, а у устройств Apple, насколько мне известно, он включен. Или он включается избирательно ( например, при стриме фильмов через кабель HDMI)?
Синтаксис сложен. Почему вместо этого не использовать шаблоны? jquery templates к примеру.
Наверное, потом весело историю коммитов разгребать, в каждом из которых файлы всегда перезаписываются полностью вместо изменения пары строк.
Получается, что в первом примере шаблонная функция difference может быть выбрана для типа, имеющего difference_type, но не имеющего перегруженного оператора вычитания, и будет ошибка при компиляции тела функции?
Скорее посадят даже в том случае, если он уже ударил )
По-моему, новые версии .NET от Microsoft не особо влияют на стабильность моно ) Да и ядро моно давно уже стабилизировалось, в частности, я знаю программистов, которые доверяют ему и делают на нём даже веб-приложения. Вообще изначально я писал это для Windows. Но потом решил, что нельзя пренебрегать важным Linux-направлением, и добавил поддержку Mono. Тем более что такого рода инструменты в nix-среде хотя бы могут быть востребованы по сравнению с Windows, где это вообще никому не нужно. А вариантов нет, можно конечно попробовать написать на пайтоне, но я его не знаю ) По-моему, моно для этого вполне адекватный вариант. Поставить моно для работы нужной программы — это вообще не проблема для прагматически настроенных людей. Попробовали — работает — все довольны. Не работает — почистили, удалили моно, ждём фиксов.
Моно занимает немного, мегабайт 20 всего в «базовой комплектации». Плюс в некоторых дистрибутивах (если я ничего не путаю) оно уже установлено по умолчанию. Gnome Do, например — это же моно-приложение.
Некоторые программы имеют сложные конфиги. Например, ядро Linux. Обычно его конфигурируют из menuconfig. Думается, что и для других сложноконфигурируемых вещей (веб-сервера, почтовые службы) такие штуки найдут применение.
Так она и будет запускаться в консоли :)

Про «симпотично», наверное, к автору.
Морально устаревшее API. Но для С/С++ наверное пока лучше всё равно ничего нет. Для C# я потихоньку пишу удобную библиотеку, там можно будет описывать интерфейсы в XAML, и компоновать контролы как в WPF. Но пока ещё не готово (хотя для маленьких программ уже можно использовать). Описание окна будет выглядеть примерно так:

<Window Name="window2" Title="Очень длинное название окна">
  <GroupBox Title="Title">
    <ScrollViewer VerticalAlignment="Stretch">
      <ScrollViewer.HorizontalScrollEnabled>false</ScrollViewer.HorizontalScrollEnabled>
      <ListBox>
        <ListBox.Items>
          <item>Длинный элемент 2</item>
          <item>Длинный элемент 3</item>
          <item>Длинный элемент 4</item>
          <item>Длинный элемент 5</item>
          <item>Длинный элемент 6</item>
          <item>Длинный элемент 700</item>
        </ListBox.Items>
      </ListBox>
    </ScrollViewer>
  </GroupBox>
</Window>


А само окно так:


Data binding, нормальная система layout'ов, поддержка Win32 и Linux (с использованием Mono) — всё будет в комплекте.
Этот интерфейс не предназначен для конечного пользователя-потребителя. Зато он отлично подходит для упрощения работы админам. Всё же проще запустить такую программу и быстро всё настроить, чем разбираться в синтаксисе и допустимых комбинациях параметров различных конфигурационных файлов. Тем более такие программы можно спокойно запускать удалённо по ssh.
Для обработки пользовательского ввода можно использовать удобную библиотеку libtermkey. А для создания цикла обработки ввода, который бы поддерживал возобновление по разным сигналам (не только по завершении getch()) использовать eventfd.
А размещение .git в / не помешает другим проектам, хранящимся в виде гитовых репозиториев? Git не станет их рассматривать в качестве submodules?
Язык разметки планируется? Как будет вызываться OnDraw? В retained режиме или каждый раз для перерисовки содержимого?
На мой взгляд, перед шагом

// Немного надоедает использовать .call каждый раз. Может воспользоваться bind?
// Точно! Давайте привяжем функцию call к контексту slice.
slice = Function.prototype.call.bind(Array.prototype.slice);

неплохо бы добавить ещё один — эквивалентный переход от
// Но мы можем использовать apply и call, они позволяют нам передавать нужный контекст
slice.call([1,2,3], 0, 1); // => [1]

к
Function.prototype.call(slice, [1,2,3], 0, 1); // => [1]

Без него непонятно, что происходит при вызове bind().

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity