• .NET, TensorFlow, and the windmills of Kaggle — the journey begins

    This is a series of articles about my ongoing journey into the dark forest of Kaggle competitions as a .NET developer.

    I will be focusing on (almost) pure neural networks in this and the following articles. It means, that most of the boring parts of the dataset preparation, like filling out missing values, feature selection, outliers analysis, etc. will be intentionally skipped.

    The tech stack will be C# + TensorFlow tf.keras API. As of today it will also require Windows. Larger models in the future articles may need a suitable GPU for their training time to remain sane.
    Let's predict real estate prices!
  • Используем пространство экрана оптимально с помощью WPF Data Triggers и Stack

    В этой статье речь пойдёт о том, как использовать WPF Data Triggers в схеме разбиения монитора Stack для того, чтобы полностью автоматически отдавать приложению всё пространство рабочего стола, когда другие приложения не запущены. Stack — это тайловый менеджер окон для Windows, использующий WPF XAML в качестве языка разметки экрана.

    Поставляющаяся из коробки схема разбиения экрана для больших мониторов (см. под катом) разбивает рабочий стол на 2 главные зоны — центральную (я обычно использую её для браузеров и IDE) и боковую (туда попадают RSS Reader, мессенжеры и окна терминалов). Эта схема фиксирована. Т.е. если у вас открыт только браузер, Stack оставит пустое место слева от него. В этой статье я покажу как использовать WPF Data Triggers и Data Binding, чтобы схопывать эту область автоматически, когда она пустая.
    Читать дальше
  • Бэкап: истории успеха или как я пережил OCZ Vertex 2

      После переезда на новую съёмную квартиру, первая же перезагрузка компьютера для втыкания очередной железки привела к тому, что мой двухлетний SSD приказал долго жить. BIOS/EFI тратили по минуте, чтобы выяснить, что пациент не отвечает ни на какие запросы. Другой компьютер подтвердил диагноз. Поскольку куплен диск был в далёкой стране, надежды на гарантийную замену/ремонт не было, поэтому я сразу заказал новый.

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

      Читать дальше →
      • +7
      • 19.1k
      • 5
    • Запуск старых игр для Windows

      Многие из нас время от времени любят поиграть в старые игры. Классика вроде Fallout I и II, Космические Рейнджеры, линейка Command & Conquer и т.д. Однако современные версии Windows не обладают достаточным уровнем обратной совместимости и очень часто многочасовые попытки запустить старую игру обречены на провал.

      Одна из наиболее критических проблем — графика. Одни игры не могут работать с широкими экранами, другие, ни о чём не подозревая, пользуются ошибками в старых версиях DirectX или DirectDraw, третьи не могут жить без 16-битного цвета. Зачастую трудно определить конкретную проблему, но многие из них без особого труда сможет решить…
      Wine
    • Превращаем C# в C++: ручное управление памятью

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

        Для затравки забежим немного вперёд и покажем, как в итоге будет создаваться экземплят такого списка:
        new CustomLinkedList<double, ListBasedAllocator<CustomLinkedListNode<double, int>>, int>()

        Читать дальше →
      • [C#/.NET] Генерируем машинный код с помощью LLVM

          В этом топике я покажу, как без особых трудов сгенерировать и выполнить машинный код с помощью Low Level Virtual Machine на примере функции, вычисляющей ответ на главный вопрос жизни, вселенной и всего такого.

          А для работы нам понадобятся

          Читать дальше →
        • [F#] сопоставление образцов

            Как и во многих других функциональных языках программирования, в F# поддерживается сопоставление образцов (pattern matching). Те, кто не знаком с ФП, могут представить себе его, как значительно улучшенный вариант switch.

            Читать дальше →
          • Как найти работу новичку системного программирования?

              Я студент ВМиК МГУ, 3 курс. Специализация — системное программирование.

              Года полтора работал программистом C#, однако написание логики сайтов на ASP.NET и портирование автоматных игрушек на движок не кажутся интересными занятиями и потому сильно утомляют. В конце концов, не для того идут учиться в МГУ.

              Разумеется, с чего-то надо было начинать. Но опыт и навыки программирования есть (вплоть до функционального), а значит нужно искать работу по интересам и специальности. Вот только что-то не видно на hh.ru вакансий по разработке компиляторов и/или распределённых систем не только для новичков, желающих учиться, но и для опытных профессионалов.

              Не может быть, чтобы это направление совершенно не было востребовано.
            • Управляемая операционная система Вы говорите? Дайте мне парочку…

                Типичная ошибка разработчиков


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

                О разработке операционных систем: современные реалии.


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

                В то время как вторые предоставляют как минимум одно очевидное преимущество, заключающееся в лучшей стабильности (умерший модуль можно заменить), на практике Linux и Windows используют монолитные ядра. Почему? Их проще реализовать.

                Читать дальше →