Как стать автором
Обновить
74
0
Виталий Чужа @hDrummer

Пользователь

Отправить сообщение

Букварь по F# для любопытствующих C#-разработчиков

Время на прочтение13 мин
Количество просмотров10K

Предисловие


Мой переход на F# в качестве излюбленного языка был слегка усеян препятствиями. Примерно через десять лет почти постоянного использования C# у меня пробудилось любопытство, когда я услышал об этом другом #-языке. Моя первая реакция была той, которую с тех пор видел у других C#-разработчиков — отрицание, — C# является хорошим языком, и мне с ним комфортно, так зачем тратить силы на изучение другого? Но любопытство осталось — и, по крайней мере, несколько раз выделил вечер, чтобы прочитать базовый вводный пост и попытаться написать каких-нибудь ката на F#. Это не прижилось, потому что я просто чувствовал себя потерянным и не мог воплотить свой опыт использования C# в ощущение даже отдаленного комфорта с F#. Достаточно легко опустить фигурные скобки, немного замяться, чтобы не забыть let вместо var — но как сделать то, что я хотел?


Тогда я этого не осознавал, но, на мой взгляд, наблюдал потенциальный недостаток в том, как F#-разработчики говорят, описывают и представляют свой язык внешнему миру. Существует обширная база материалов обо всех возможностях и функциональности F#: Algebraic Data Types, Exhaustive Matching, Type Inference и т.д. Есть много статей, посвященных тому, как решать широкий спектр задач с помощью F#. Но, как мне кажется, не хватает чего-то вроде следующего: некоторых указаний о том, как взять то, что вам уже удобно в C#, и перевести их на F#. Так что мне интересно, можем ли мы как-то закрыть этот недостаток.

Читать дальше →
Всего голосов 24: ↑23 и ↓1+31
Комментарии13

Быстрое чтение CSV в C# (fast read CSV)

Время на прочтение8 мин
Количество просмотров23K

Уже не первый год пользуюсь своим универсальным конвертером CSV файлов в БД SQL Server - ImportExportDataSql, который имеет ряд полезных функций, необходимых любому разработчику БД MSSQL, например: перенос данных с одной БД в другую через SQL скрипт, выгрузка структуры БД, загрузка/выгрузка файлов (с типом varbinary), объединение SQL выборок в один файл и др.

ImportExportDataSql бесплатный, портативный, без рекламы и оповещает об обновлениях.

Поставил себе цель, ускорить загрузку CSV в БД MSSQL быстрее, чем это делает стандартная утилита "bcp". В моем приложении используется стандартный способ чтения CSV файлов, через System.IO.StreamReader методом ReadLine, но я уверен, что стандартные способы не самые производительные.

Итак, сравним несколько библиотек, написанных на языке C#, которые читают CSV файлы и разбивают строку на массив строк (колонки). Результаты тестов будут складываться по нескольким параметрам: время выполнения, потребление оперативной памяти, средняя нагрузка CPU (%).

Подробные результаты тестов, а также исходники для тестирования описанных способов, приведены в конце статьи.

Читать далее
Всего голосов 6: ↑4 и ↓2+5
Комментарии6

Каковы перспективы у «немодной» платформы .NET — мнения экспертов

Время на прочтение9 мин
Количество просмотров46K


Платформа .NET появилась в начале 2000-х годов. Она объединяла «под одной крышей» несколько языков программирования, что было в новинку для того времени. Но разработчики платформы утверждали, что это новшество несет несомненную пользу: программисты начали создавать свои приложения на тех языках, которые знали лучше всего, которые лучше подходили для решения своих задач.

Еще одним новшеством платформы .NET была технология активных серверных страниц ASP.NET (Active Server Page). С её помощью можно было относительно быстро разработать веб-приложения, взаимодействующие с базами данных. Важной особенностью ASP.NET считалась возможность использования всей мощи объектно-ориентированного программирования для веб-разработки. Приложения, написанные с использованием этой технологии, обладают лучшей производительностью и защитой. По крайней мере, в это верили инженеры Microsoft.
Читать дальше →
Всего голосов 51: ↑42 и ↓9+33
Комментарии127

Использование Entity Framework Core code-first с СУБД SQLite при разработке WinForms-приложений в VisualStudio 2015

Время на прочтение10 мин
Количество просмотров34K
На первый взгляд нижеприведённый материал может показаться ещё одним банальным «хэллоууорлдом», «туториалом от Капитана Очевидность», коих уже предостаточно на просторах Сети, но это впечатление обманчиво. На деле чтобы добиться того же результата с нуля у WinForms-программиста, не работавшего ранее с Entity Framework Core (не путать с классической Entity Framework) и вооружённого только уже валяющимися в изобилии на просторах Сети туториалами по EF Core и документацией может уйти куда больше времени, чем он наивно ожидал до того, как взялся за дело. Так случилось и со мной. Посему хочу поделиться опытом.
Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии17

Как подготовиться к выступлению на IT-конференции. 10 вещей, которые нужно решить заранее

Время на прочтение4 мин
Количество просмотров2.7K

Привет, Хабр!

Представляем еще одну 3-минутную публикацию, которая поможет успешно выступить на IT-конференции. Мы уже рассказали, как справиться со страхом сцены, выбрать тему и составить презентацию. Сегодня поговорим про 10 вещей, которые могут испортить даже самый лучший доклад, если не решить их заранее. И самое главное, разберемся, как их избежать, чтобы выступление прошло успешно.

Поехали!
Всего голосов 6: ↑5 и ↓1+9
Комментарии5

Сколько стоит разработать мобильное приложение

Время на прочтение4 мин
Количество просмотров50K
Всем привет, меня зовут Сева, я директор проектного управления в Citronium. Все мои друзья, кто так или иначе связан с бизнесом постоянно задают мне два вопроса: “Сколько стоит сделать мобильное приложение? Ну такое, чтоб прям нормальное было. Стандартное, но не очень дорогое.” и “А почем нынче вебсайты? Ну такие, стандартные, как у всех”.

Я поначалу отвечал невнятно, говорил, что все всегда по-разному, а тут все же сам задумался над обоими вопросами и решил на них ответить. По порядку. Начнем с мобильного приложения. Я посчитал среднюю стоимость каждого этапа разработки всех составляющих мобильного приложения и получил примерные цифры. Если коротко, это порядка 1.5 млн рублей за гибридное мобильное приложение и порядка 2.2 млн рублей за два нативных приложения, то есть одно под Android и еще одно под iOS.
Читать дальше →
Всего голосов 21: ↑16 и ↓5+15
Комментарии37

Agile без идеализма. Когда и как именно работает гибкий менеджмент. Политэкономический памфлет

Время на прочтение12 мин
Количество просмотров14K

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



Цель данной статьи — поставить идеалистичное отношение к Agile с ног на голову — материалистически объяснить, когда Agile работает, как именно работают те или иные ценности и принципы; какой Agile идеалистический, а какой материалистический.

Читать дальше →
Всего голосов 11: ↑5 и ↓6+5
Комментарии26

Обнаружена опаснейшая уязвимость в Windows DNS Server

Время на прочтение3 мин
Количество просмотров38K


Исследователи в области кибербезопасности из компании Check Point раскрыли новую критическую уязвимость, которая затрагивает версии Windows Server 2003–2019 с оценкой критичности 10 из 10 по шкале CVSS.


17-летний программный недостаток приводит к удаленному выполнению кода (CVE-2020-1350), названному Check Point «SigRed» и может позволить удаленному злоумышленнику, не прошедшему проверку подлинности, получить права администратора домена над целевыми серверами и получить полный контроль над ИТ-инфраструктурой организации.

Читать дальше →
Всего голосов 32: ↑28 и ↓4+35
Комментарии21

Как убрать назойливое предупреждение о сертификате для RDP

Время на прочтение2 мин
Количество просмотров22K

Привет Хабр, это супер короткое и простое руководство для новичков о том, как подключаться по RDP по доменному имени, чтобы не вылезало назойливое предупреждение о сертификате, подписанным самим сервером. Нам понадобится WinAcme и домен.

Все, кто хоть раз пользовался RDP, видели эту надпись.


В руководстве приведены готовые команды для пущего удобства. Скопировал, вставил и заработало.
Читать дальше →
Всего голосов 23: ↑18 и ↓5+24
Комментарии33

ViennaNET: набор библиотек для backend’а

Время на прочтение4 мин
Количество просмотров13K

Всем привет!


Мы сообщество .NET-разработчиков Райффайзенбанка и мы хотим рассказать про набор инфраструктурных библиотек на .NET Core для быстрого создания микросервисов с единой экосистемой. Вывели его в Open Source!


>>> Готовы поделиться второй частью статьи: прошлись по еще не рассмотренным библиотекам для работы с распределенными транзакциями, очередями и БД.


Читать дальше →
Всего голосов 25: ↑23 и ↓2+32
Комментарии24

XSL-трансформация на MS SQL без CLR

Время на прочтение6 мин
Количество просмотров3.7K
Иногда очень удобно отправлять письма прямо изнутри БД, например, оповещения об успешности/неуспешности каких-то действий, информацию о состоянии системы, логи действий пользователей итд. Это может показаться дикостью, чудовищным велосипедом, кривым-косым решением, итд — но просто представьте, что это так.

Содержимое письма при таком способе приходится формировать plain-текстом, а рассылать почту либо через xp_sendmail, либо (более гибко) через почтовый COM-объект (например, CDO.Message), инстанциируя и управляя им через SQL-обертки для работы с OLE sp_OAxxxx.

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

+-----------+--------------+--------------+
| АБСОЛЮТНО | НЕ ВИДИТ ПРО | БЛЕМ В ТАКОМ |
| ОФОРМЛЕНИ | И СЛУЖЕБНОГО | ВЫВОДА <EOT> |
+-----------+--------------+--------------+

Что делать, если подобный формат начинает напрягать, а регистрировать на сервере свои компоненты, или «выныривать» из уровня БД на уровень приложения для отправки чего-то более красивого ну очень не хочется:
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии21

Новый метод криптографии, обещающий идеальную секретность, встречен со скептицизмом

Время на прочтение7 мин
Количество просмотров8.8K

Международная команда разработчиков заявляет, что их идеальную криптографию физически невозможно взломать




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

Современная криптография требует, чтобы компьютерные алгоритмы выполняли математически сложные процессы, превращающие обычные данные в тарабарщину. Обычно данные становятся нечитаемыми для любого человека, у которого нет цифрового ключа, раскрывающего математику, использованную для защиты этих данных – если только у оппонента не окажется достаточно вычислительных мощностей, чтобы взломать математически сложный код без ключа. Однако в опубликованном 20 декабря 2019 года в журнале Nature Communications исследовании заявляется об изобретении «криптографии идеальной секретности», которая будет оставаться в безопасности даже когда у оппонента появится доступ к квантовым компьютерам будущего.
Читать дальше →
Всего голосов 7: ↑4 и ↓3+6
Комментарии14

Async programming in .NET: Best practices

Время на прочтение24 мин
Количество просмотров36K
Появление async/await в C# привело к пересмотру того, как писать простой и корректный параллельный код. Зачастую, используя асинхронное программирование, программисты не только не решают проблемы, которые были с потоками, но и привносят новые. Дедлоки и рейсы никуда не пропадают — их просто становится труднее диагностировать.



Дмитрий Иванов — Software Analysis TeamLead в Huawei, в прошлом техлид JetBrains Rider и разработчик ядра ReSharper: структур данных, кэшей, многопоточности, регулярный спикер конференции DotNext.

Под катом — видеозапись и текстовая расшифровка доклада Дмитрия с конференции DotNext 2019 Piter.
Всего голосов 30: ↑30 и ↓0+30
Комментарии6

Делегаты и Лямбда выражения в C# .Net — Шпаргалка или коротко о главном

Время на прочтение6 мин
Количество просмотров85K

Привет, Дорогой читатель!


Почти все кто мало-мальски работал в .Net знает что такое Делегаты (Delegates). А те кто не знает о них, почти наверняка хотя бы в курсе о Лямбда-выражениях (Lambda expressions). Но лично я постоянно то забываю о синтаксисе их объявления, то возвращаюсь к многостраничным объяснениям умных людей о том, как компилятор реагирует на подобные конструкции. Если у Вас случается такая проблема, то милости прошу!
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии15

Конвертация текстовых документов в xml на С#

Время на прочтение12 мин
Количество просмотров16K

Недавно мне пришлось столкнуться с необходимостью достать текст из офисных документов (docx, xlsx, rtf, doc, xls, odt и ods). Задача осложнялась требованием представить текст в формате xml без мусора с максимально удобной для дальнейшего парсинга структурой.


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


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


  1. Для платформы .Net не существует какого-либо готового решения для работы со всеми перечисленными форматами, что заставит нас местами кастылизовывать наш солюшн.
  2. Не пытайтесь в сети найти хороший мануал по работе с Microsoft OpenXML: чтобы разобраться с этой библиотекой придется изрядно покрасноглазить, покурить StackOverflow и поиграться с отладчиком.
  3. Да, мне все таки, удалось приручить дракона.

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


Работа с xlsx и docx

Читать дальше →
Всего голосов 16: ↑14 и ↓2+21
Комментарии32

Конвертация rtf в xml на С#

Время на прочтение4 мин
Количество просмотров4.3K

В продолжении серии постов о конвертации текстовых файлов в xml с использованием С# предлагаю перейти к конвертации файлов формата rtf.


Казалось бы, данный формат довольно древний, причем весьма распространенный и, если для него и нет какой-то библиотеки для преобразования всех данных в формат xml путем вызова одного метода, то уж какое-то решение от Microsoft точно должно быть, хотя бы аналогичное OpenXML. Однако, если бы было оно так, то данная статья не была бы написана.

Читать дальше →
Всего голосов 9: ↑5 и ↓4+6
Комментарии10

Анализ утечки второго порядка: когда утекает у тех, кто ворует данные у банка

Время на прочтение5 мин
Количество просмотров42K

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



Сейчас хочется поговорить о том, откуда эта информация берется, на примере конкретного случая с известным российским банком. Чтобы никого не обидеть (а банки очень обидчивы и любят публично поистерить силами своих пиар-отделов, все отрицая в стиле «вы все врете» и «на нас осуществляют информационную атаку»), назову данный банк условно «Эпсилон».


Мне на анализ попало два весьма интересных PHP-приложения, случайно оказавшихся в открытом доступе на одном из серверов в Нидерландах. Но обо всем по порядку…

Читать дальше →
Всего голосов 49: ↑47 и ↓2+58
Комментарии59

Как я, тимлид, оцениваю проекты

Время на прочтение9 мин
Количество просмотров14K
Тимлиды часто оценивают проекты, и не все делают это хорошо. Тут многое зависит от личности самого тимлида, а также от его понимания команды. Есть много техник оценки проектов от метода “по аналогии” до PERT. Но сегодня я расскажу о том, как я применяю planning poker и другие приемы, чтобы оценивать точнее и с большей пользой.

image

Читать дальше →
Всего голосов 21: ↑15 и ↓6+18
Комментарии17

Исследование одного вредоноса

Время на прочтение7 мин
Количество просмотров12K
image

Попался мне недавно вредоносный doc файл, который рассылали с фишинговыми письмами. Я решил, что это неплохой повод поупражняться в реверс-инжиниринге и написать что-то новое на Хабр. Под катом — пример разбора вредоносного макроса-дроппера и не менее вредоносных dll.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии21

7 бесплатных курсов для архитекторов решений от Microsoft

Время на прочтение4 мин
Количество просмотров32K
Привет, Хабр! Сегодня мы на экваторе серии подборок классных бесплатных курсов от Microsoft. В этой части у нас самые крутые курсы для архитекторов решений. Все они на русском, приступить к ним можно уже сейчас, а по окончании вы получите бейдж. Присоединяйтесь!

Новая серия статей


Следующая серия статей, начало 2020 года


Эта серия статей, 2019 год


Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии5

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность