Как стать автором
Обновить

Fluent NHibernate и Oracle

.NET *
Из песочницы
В этом топике я хотел бы осветить библиотеку Fluent NHibernate в связке с Oracle и привести небольшой пример. Статей по этой теме сейчас немного (упоминание на хабре), еще меньше описаний взаимодействия с Oracle. Естественно, большинство не на русском языке. Однако, библиотека заслуживает внимания.
Читать дальше →
Всего голосов 24: ↑20 и ↓4 +16
Просмотры 15K
Комментарии 6

Элегантные строки

.NET *C# *
Из песочницы
Представим, что нам нужно что-нибудь сделать со строками в .net. Что-то не очень сложное, но и не совсем простое. Например, для правильного форматирования, расставить пробелы после запятых в тексте. Что же предлагает .net из коробки?
Что-то такое:

string str = "...";
str.Replace(",", ", ");


Постойте, но мы же хотели расставлять пробелы, а не заменять запятые!..
Хорошо, пойдем дальше.
Всего голосов 49: ↑28 и ↓21 +7
Просмотры 16K
Комментарии 41

SDK для устройства дополненной реальности, много аналитики и немного о WWDC 2015 в новостях недели для мобильного разработчика

Блог компании KamaGames Studio Разработка мобильных приложений *Разработка игр *


SDK для Magic Leap. Уже скоро


Компания Magic Leap с ее волшебной технологией класса «посвети мне фонариком вот сюда» проецирования изображения на глаз пользователя для создания дополненной реальности скоро выпустит SDK. Да, они официально хотят любви разработчиков и многия, многия сторонние приложения с использованием их технологии, как было заявлено на EmTech Didital conference. Так что разработчики, да и вообще все заинтересованные, уже могут записаться на получение SDK для Magic Leap. Фреймворк будет поддерживать Unity и Unreal Engine, весьма разумный выбор. «SDK… done», как сказал нам официальный твиттер Magic Leap. Когда же, когда? «Soon», отвечает нам тот же Twitter…

Потрогать-посмотреть результат многолетней работы компании мало кому довелось, рассказы и картинки кажутся чудом, граничащим с обманом… но компания как минимум поддерживается корпорацией Google, так что чудо может быть где-то рядом. Кстати, часть финансовых вливаний в размере 542 млн. долларов было потрачено на производственные мощности. Ибо «мы вышли из фазы НИОКР и переходим к реализации продукта», как сказал CEO Rony Abovitz. И это хорошо.
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 5.8K
Комментарии 0

Код живой и мёртвый. Часть первая. Объекты

Совершенный код *.NET *Проектирование и рефакторинг *C# *ООП *

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


И вместе с этим мы видим повсеместную эпидемию менеджеров, хелперов, сервисов, контроллеров, селекторов, адаптеров, геттеров, сеттеров и другой нечисти: всё это мёртвый код. Он сковывает и загромождает.


Бороться предлагаю вот как: нужно представлять программы как текст на естественном языке и оценивать их соответственно. Как это и что получается — в статье.

Читать дальше →
Всего голосов 34: ↑28 и ↓6 +22
Просмотры 14K
Комментарии 55

Код живой и мёртвый. Часть вторая. Действия и свойства

Программирование *Совершенный код *Проектирование и рефакторинг *C# *ООП *

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


Сложно оценить героя, не поняв его "статы" и "абилки". Что он может и на что способен — вот следующий уровень сложности, на который нам придётся нырнуть. Мало с помощью точного имени отразить внутреннее святилище объекта, ещё следует убедиться, что это таки святилище, а не конюшни из геттеров.


Об этом — в статье.

Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 5.6K
Комментарии 62

Код живой и мёртвый. Часть третья. Код как текст

Программирование *Совершенный код *.NET *Проектирование и рефакторинг *ООП *

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


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


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

Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 5.5K
Комментарии 102

Различия Fluent и gettext

Open source *Локализация продуктов *
Перевод

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

Gettext — это система локализации, глубоко укоренившаяся в проект GNU и сопутствующие ему архитектурные решения. Fluent Project рассматривает gettext как хороший пример полноценной низкоуровневой платформонезависимой экосистемы библиотек и инструментов для управления полным циклом выпуска продукта с файлами локализации в удобочитаемом формате. В то же время парадигма Fluent приводит нас к другим архитектурным решениям в важных локализационных аспектах, которые, в свою очередь, приводят к совершенно разным API и жизненным циклам.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 3.8K
Комментарии 32

Типизированные запросы OData в TypeScript

.NET *TypeScript *
Tutorial


Традиционно запросы OData к данным выражаются в виде простых строк без проверки типов при компиляции или без поддержки IntelliSense, кроме того, разработчику приходится изучать синтаксис языка запросов. Данная статья описывает библиотеку TsToOdata, которая превращает запросы в удобную языковую конструкцию и применяется аналогично классам и методам. Вы создаете типизированные запросы с помощью ключевых слов языка TypeScript и знакомых операторов.

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 3.5K
Комментарии 2

OData babel плагин

JavaScript *TypeScript *
Tutorial


Статья описывает трансляцию кода TypeScript в OData запросы во время компиляции программы.


Плагин babel-plugin-ts2odata выполняет разбор JavaScript AST с помощью библиотеки TsToOdata описание которой в моей предыдущей статье Типизированные запросы OData в TypeScript.

Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 1.2K
Комментарии 0

Prometheus, не уходи: 6 альтернативных инструментов мониторинга для Kubernetes

Блог компании VDSina.ru Системное администрирование *Серверное администрирование *Облачные сервисы *Kubernetes *
Перевод


Мониторинг помогает обеспечить бесперебойную работу приложений Kubernetes и далее устранить любые проблемы, которые могут возникнуть в процессе его работы.

Например, он позволяет в любой момент времени узнать, сколько сейчас в наличии памяти, дискового пространства и как активно используется CPU, узнать о распределении ресурсов между контейнерами и состоянии приложений, работающих в кластере. Очень часто для этих целей используется Prometheus, в этой статье мы рассмотрим шесть альтернативных инструментов мониторинга для Kubernetes.
Читать дальше →
Всего голосов 18: ↑9 и ↓9 0
Просмотры 4.2K
Комментарии 3

Microsoft планирует крупное обновление пользовательского интерфейса Windows 10

Интерфейсы *Разработка под Windows *Дизайн Софт
Перевод

Microsoft готовит крупное обновление ОС для Windows 10 в 2021 году, которое, по информации источников, принесет с собой значительное обновление дизайна пользовательского интерфейса Windows. Заку Боудэну (Zac Bowden) сообщили, что Microsoft планирует обновить многие пользовательские интерфейсы, такие как меню "Пуск", Центр уведомлений и даже Проводник с использованием современного дизайна, улучшенной анимации и новых функций.

Читать далее
Всего голосов 24: ↑21 и ↓3 +18
Просмотры 36K
Комментарии 224

Windows 10 Sun Valley: что мы знаем на сегодня

Интерфейсы *Разработка под Windows *Дизайн Софт
Перевод

В настоящее время Microsoft работает над крупным обновлением для Windows 10, выпуск которого ожидается в конце этого года. Оно принесет с собой обновленный дизайн и новые функции, которые должны улучшить опыт взаимодействия пользователя с ОС. Sun Valley станет крупнейшим обновлением с тех пор, как Microsoft забуксовала с Windows 10 на месте. Компания хочет вдохнуть новую жизнь настольным компьютерам, а Sun Valley – точка отправки.

Суметь в дизайн
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 19K
Комментарии 69

Положение дел у Windows: сколько разношёрстных уровней UI в Windows 10?

Интерфейсы *Разработка под Windows *Дизайн Софт
Перевод

Все мы слышали байку: если в Windows 10 копнуть достаточно глубоко, можно найти элементы, относящиеся еще ко временам Windows 3.x. Но так ли это на самом деле? В этой статье мы узнаем, сколько уровней пользовательского интерфейса присутствует в Windows и когда они были впервые представлены.

Откопать старый UI
Всего голосов 91: ↑89 и ↓2 +87
Просмотры 48K
Комментарии 288

В Windows 10 21H2 появится новый параметр в меню питания, изоляция сторонних драйверов и процесс taskbar.dll

Интерфейсы *Разработка под Windows *Дизайн Софт
Перевод

В Windows 10 добавят новый параметр в меню питания для перезапуска приложений, изоляцию для сторонних драйверов, а панель задач получит отдельный процесс.

Microsoft представил инсайдерам сборку Windows 10 21343 с некоторыми значительными визуальными изменениями, представив новые иконки для проводника. Но, похоже, это было не единственное улучшение в выпуске, поскольку в меню питания также появился новый параметр, который позволяет выбирать, перезапускать ли приложения после перезагрузки.

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 8.6K
Комментарии 18

Fluent Generics in C#

Программирование *.NET *C# *ООП *
Перевод

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

Несмотря на то, что дженерики давно в C#, мне всё же удаётся найти новые интересные способы их применения. Например, в одной из моих предыдущих статей я написал об уловке, позволяющей добиться return type inference, что может облегчить работу с контейнерными union types.

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

После нескольких экспериментов, я нашёл способ решить проблему элегантно, используя подход схожий с паттерном проектирования fluent interface, который был применён не к объектам, а к типам. Мой подход предлагает domain-specific language, который позволяет разработчику построить нужный тип за несколько логических шагов, последовательно его "конфигурируя".

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

Читать далее
Всего голосов 32: ↑32 и ↓0 +32
Просмотры 10K
Комментарии 43