Метка «.net» - 12

Предисловие

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

В первый раз время наступило после второго курса. Я был уверен, что полученных знаний языка C мне хватит, чтобы в одиночку написать и компилятор, и виртуальную машину, и всю стандартную библиотеку к нему. Задумка была элегантна и дышала романтикой юношеского максимализма, но вместо этого результатом двух лет прилежной работы стало монструозное нечто. Даже несмотря на то, что виртуальная машина подала признаки жизни и смогла исполнить довольно несложные скрипты на псевдоассемблере, который помог написать боевой товарищ fornever, проект был вскоре заброшен. Вместо этого было решено написать язык для платформы .NET, чтобы нахаляву получить автоматическую сборку мусора, jit-компилятор и все прелести огромнейшей библиотеки классов. Компилятор был реализован всего за полгода, исходный код выложен на CodePlex, и с ним я успешно защитил диплом.

Однако чего-то по-прежнему не хватало. При всех своих преимуществах, разработанный для диплома язык требовал явного объявления всех типов и функций, не имел никакой поддержки generic'ов, не умел создавать анонимные функции, да и вообще область его применения была неясна. Решение изобрести еще один велосипед пришло спустя год, когда мне написал знакомый, учившийся на моей же кафедре на два года младше. Он предложил «помочь» ему в написании дипломной работы, и я согласился. К новому языку были поставлены следующие требования:

  • Взаимодействие с любыми доступными типами .NET без явного импорта
  • Поддержка generic'ов
  • Поддержка анонимных функций и замыканий
  • Наличие хоть какой-нибудь практической ценности

Вышеупомянутый fornever изъявил желание поучаствовать, и работа закипела. Он принимал активное участие в создании дизайна языка и написал парсер на F#, а я занялся описанием синтаксического дерева и внутренней инфраструктуры.

На днях знакомый защитил-таки свой диплом, поэтому репозиторий проекта на Github теперь открыт для всех желающих. Дальше в статье я расскажу о том, что в результате получилось, какие подводные камни встретились на пути, и почему у статьи такой желтый заголовок.Читать полностью »

С 20 мая по 17 июня мы проводили анонимный зарплатный опрос, в котором приняли участие более 5000 человек. Спешим поделиться результатами. Краткая сводка: у опытных разработчиков зарплаты растут, Киев лидирует, типичная столичная зарплата архитектора $4000, тимлида и сеньора — $3000, PM-а — $2500, миддла и бизнес-аналитика — $2000, тестировщика — $1300, сисадмина — $1000.

В статье все зарплаты указаны в долларах США, чистыми (после уплаты налогов). Для оценки зарплаты в выборках используется медиана. Исходные данные доступны на GitHub в виде CSV-файлов. На странице jobs.dou.ua/salaries есть интерактивный виджет.Читать полностью »

Задача этой серии коротких постов — попытаться просто и понятно рассказать веб-разработчикам о платформе .NET и технологии ASP.NET.

Что такое платформа .NET

Платформа .NET состоит из двух основных компонентов: исполняющей среды Common Language Runtime (CLR) и библиотеки классов (.NET Framework).

Первый основной компонент — исполняющая среда. Она интерпретирует и исполняет байт-код (CIL), в который компилируются приложения написанные на различных .NET-совместимых языках программирования. Помимо этого, исполняющая среда выполняет множество других задач, например управление распределением памяти, безопасностью исполняемого кода и пр.

Наиболее распространенным .NET-совместимым языком программирования стал объектно-ориентированный язык си- шарп (C#), который имеет С-подобный синтаксис, близкий к синтаксису языков си-плюс-плюс (C++) и джава (Java).

Второй основной компонент платформы .NET — библиотека классов .NET Framework. И здесь тоже все очень просто.
Читать полностью »

Привет всем читателям, кого заинтересовал мой пост. Сегодня я хочу рассказать о своем опыте «прогулок» по собеседованиям. Не смог найти на хабре интересующую меня статью и решил написать её сам.
Не для кого не секрет, что практически все разработчики .Net ходят по собеседованиям несколько раз в год (а то и в месяц), причем это касается даже тех, кто полностью доволен своей текущей работой. Оно и понятно, нам всем интересно «чего же мы стоим» и получаем ли мы то, чего заслуживаем.
На данных момент я имею стаж в 3,5 года работы .Net разработчиком. Я не являюсь «ярым» любителем походов на собеседования, т.е. посещаю «другие» компании не чаще нескольких раз за год. За весь мой опыт таких мероприятий я ни разу не проявлял к данному вопросу должного внимания, считая вроде того, что я слишком ценен чтобы этим заморачиваться, пусть заморачиваются они. Но всему приходит конец. Я пересмотрел свою позицию, задавшись вопросами вроде:

«Кто может быть лучше меня?»

image
Читать полностью »

Харьковский офис компании Сиклум объявляет двухнедельную акцию для всех .NET разработчиков, которая позволит не только оценить свои профессиональные навыки, но и получить за это подарок с Амазон!
Сиклум объявляет Амазонизацию .NET разработчиков в Харькове!
Читать полностью »

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

Читать полностью »

Предметом внимания вчерашнего поста на Хабре стал фреймворк распределенных вычислений от Microsoft Research — Dryad.

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

В этой статье обсудим компонент верхнего уровня программного стэка фреймворка Dryad – язык запросов к распределенному хранилищу DryadLINQ.

DryadLINQ. Распределенный LINQ от Microsoft Research
Читать полностью »

По следам поста Визуализация списков в отладчике Visual Studio или новое слово от «BugAid For Visual Studio», что бы чисто добить тему, хотелось бы рассмотреть возможности расширения BugAid для визуализации вычисления выражения в операторе if.

Читать полностью »

В этой статье я попытаюсь поделиться своим опытом в проектировании пользовательской бизнес-логики. Это явно не претендует на полноценный ликбез, т.к. я всего лишь вспоминаю то, через что прошёл лично я, какие ошибки я допустил, и как мне их удалось (или не удалось) исправить в будущем. Наверняка, опытные системные архитекторы уже все проходили и знают, однако надеюсь, что некоторые советы таки будут полезны.
Мы использовали (и используем) клиентскую часть на WPF/Silverlight, WCF сервисы и СУБД Oracle, Postrges, MsSQL. Код написан по MVVM, использована Prism для модульности и навигации. Не могу точно сказать, какие из тезисов подойдут для других платформ и языков.

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

Когда приходится просматривать элементы списка (массива) в отладчике Visual Studio, например, в окне QuickWatch часто сталкивашься с не удобством просмотра сложного (или длинного) списка данных. Тяжело увидеть, например, значения поля всех элементов списка.
Данный пост показывает несколько «встроенных» способов решения этой проблемы и возможности расширения BugAid.
мало букв, но достаточно картинок.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js