Search
Write a publication
Pull to refresh
9
0
Майк Либер @mikelieber

C# разработчик

Send message

Я бы пересмотрел вообще всё

Reading time4 min
Views78K

В программировании нет вообще никаких непреложных истин. Даже самые очевидные правила могут иметь контекст, в которых их применять нельзя. К сожалению в 99% организаций есть прям заповеди, обязательные к исполнению. И есть правила, которые считаются правилами хорошего тона (как не сморкаться в занавеску). Однако всегда бывают ситуации, когда лучше все-таки сморкаться.


Вот примеры.


1) Например, DRY — don’t repeat yourself. Хорошее полезное правило, но его можно довести до маразма. Из того что я встречал на практике: есть два разных по бизнес-смыслу раздела, которые начинались с простого CRUD, и многие части (и фронта и бека) выглядели во многом абсолютно одинаково. Если их объединить с помощью общей высосанной из пальца абстракции и тем самым избавиться от небольшого дублирования кода, то потом (очень скоро) можно будет сойти с ума, потому что эти две вещи скоро разъедутся, обрастая кастомными фичами, и абстракция будет только вредить. Нельзя абстрагировать неабстрагуемое, даже если DRY нарушен.


«[Немного] дублирования обходится гораздо дешевле, чем неправильная абстракция» — Сэнди Мец

Т.е. DRY — хороший принцип, но бывают исключения.

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

Чем грозит авария на Запорожской АЭС

Reading time18 min
Views119K
Запорожская АЭС – это крупнейшая АЭС Украины и Европы. Уже почти полгода она находится под контролем российских войск. В последний месяц вокруг нее возникает много тревожных новостей: ее территорию обстреливают, ходят слухи о ее минировании. Россия и Украина обвиняют друг друга в ядерном терроризме, а обстановка вокруг АЭС вызывает все большее беспокойство на уровне мировых лидеров и главы ООН.

За последние дни я дал несколько интервью о ситуации на ЗАЭС. Например, для проекта Редакция. В этой статье я кратко опишу основные возможные аварийные ситуаций, которые могут возникнуть на станции, либо уже возникают. И их потенциальные последствия – что и куда может улететь, чем это грозит и даже как можно к этому подготовиться. В марте я уже писал подобную статью про риски аварий на Чернобыльской АЭС. И мне очень не нравится писать на такие темы, но какие времена — такая и атомная популяризация.


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

Чему я научился после проведения тысячи собеседований: часть первая

Level of difficultyEasy
Reading time8 min
Views75K
Найм сотрудников – одна из самых важных задач, которую приходится выполнять менеджеру или предпринимателю. Ее исход решает, будет ли успешным ваш стартап, команда или проект.

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

Как мне удалось дойти до рубежа в тысячу собеседований? Сначала я был техническим руководителем в стартапе, и на мои плечи ложилось комплектование технических команд, а затем, когда стартап выкупили, мне пришлось формировать весьма объемный штат программистов для офиса в Европе. В среднем для заполнения одной должности нужно было проводить по шесть-семь собеседований, а нанял я суммарно более ста пятидесяти человек разного уровня, с разными знаниями, навыками и функциями.
Читать дальше →

Тёмная сторона Mac App Store: как скам-приложения и серые разработчики охотятся на пользователей

Level of difficultyMedium
Reading time8 min
Views5.9K

В течение последнего месяца я внимательно мониторил Mac App Store и сделал тревожное открытие. В самый разгар лихорадки вокруг OpenAI всплыло несколько приложений, которые копируют оригинальный логотип и цветовую схему OpenAI, вводя в заблуждение ничего не подозревающих пользователей Mac App Store. Но это ещё не всё – я также обнаружил, что некоторые разработчики злоупотребляют условиями Apple Developer Agreement, рассылая спам по множеству аккаунтов и заполняя магазин практически идентичными приложениями.

Это создаёт среду в стиле «картелей» и несправедливую конкуренцию для других разработчиков. Некоторые серые деятели, о которых я буду говорить в этой статье, также прибегают к злоупотреблению легитимными средствами, например, запрашивая отзывы от пользователей уже после минуты использования приложения ради манипулирования своим рейтингом в App Store. В текущей статье я подробно разберу эту проблему скама приложений и теневых разработчиков, которые засоряют эту платформу.
Читать дальше →

Что делать, если вы не согласны на обработку ваших персональных данных?

Level of difficultyEasy
Reading time10 min
Views40K

Привет, Хабр! Меня зовут Татьяна Никонорова, я работаю ведущим консультантом по ИБ и занимаюсь разработкой организационно-распорядительных документов. Проще говоря, перевожу со сложного юридического языка на понятный русский -))

Когда я говорю, что занимаюсь защитой персональных данных, один из самих частых вопросов ко мне звучит примерно так: «Как мне отказаться от обработки моих персональных данных?». Я решила рассмотреть данный вопрос не только с точки зрения требований законодательства, но и опираясь на свой практический опыт.

Читать далее

Надстройка импорта банковских выписок 1С в Excel

Level of difficultyEasy
Reading time1 min
Views3.2K

Я решил поделиться своей надстройкой, которая умеет импортировать из файлов формата 1С в Excel. Надстройка абсолютно бесплатна и код проект открыт для любознательных.

У меня уже был некий макрос, который импортировал данные из файлов 1С, но это было так сказать "для себя". И вот в один момент я решил сделать, что-то полезное не только мне, но и другим и решил оформить этот макрос в виде надстройки.

Чтобы более грамотно реализовать импорт я решил прочитать собственно что-то вроде стандарта формата.

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

Надеюсь, кому-нибудь пригодится.

Читать далее

Почему работать с OAuth сложно даже сегодня?

Level of difficultyMedium
Reading time10 min
Views21K

OAuth — это стандартный протокол. Ведь так? И для OAuth 2.0 есть клиентские библиотеки практически на всех языках программирования, которые можно представить.

Вероятно, вы подумаете, что имея клиентскую библиотеку, можно реализовать OAuth для любого API буквально за десять минут. Или хотя бы за час.

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

Вам нужен медиатор

Level of difficultyMedium
Reading time16 min
Views22K

Этой весной в чатах и сообществах dotnet (не забываем #DropTheDot) обострились анти-медиаторные настроения. Поначалу меня это забавляло, потом удивляло: люди подхватывают лозунги, не пытаясь разобраться в вопросе. Квинтэссенцией обострения стал доклад Андрея Парамонова "MediatR не нужен”, шокирующий своей категоричностью аргументов. В докладе были зерна истины, но они к концу так и не проросли.

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

Зачем мне медиатор?

День Победы. Мой Бессмертный полк

Level of difficultyEasy
Reading time4 min
Views35K
День Победы!

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

Почему мне противно от хакатонов, но все равно в них участвую

Reading time8 min
Views13K

Привет! Эта статья будет о нашем “экспертном” взгляде на хакатоны, где мы вкинем пару холиварных тейков и, кстати, расскажем о нашем решении для True Tech Hack. 

В Иннополисе невероятно скучно жить. Настолько, что в нашей айти-деревне за три года построился только еще один, никому не нужный в постковидный период удаленки, технопарк. Поэтому мы решили поехать развеяться. А выбор пал на хакатон True Tech Hack  — приуроченный к недавнему ребрендингу MTC. Само собой, чтобы посетить заключительный этап хакатона (еще и совпавший по датам с одноименной конференцией, что определенно вкусно) нужно пройти в десятку финалистов,

но об этом позже.

Данные: какие про вас собирают, а какие от вас закрывают?

Reading time3 min
Views21K

Государство активно взяло курс на формирование реестра граждан и наполнение его разнородными данными. Про это высказываются самые разные чиновники после главного шага - введения системы "электронных повесток". К этому готовились. Напомню, что именно было сделано в последние два года для сбора максимального объема данных внутри госсистем.

Читать далее

yield return

Reading time7 min
Views12K

А вы никогда не задумывались, что yield return выглядит как-то инородно среди прочего C# кода? Больше нигде не встречается такого странного синтаксиса и такой инструкции, кроме как внутри методов, возвращающих перечисление.

А ещё интересно, сколько же на самом деле стоит перечислять элементы с помощью yield return? И можно ли лучше?

Читать далее

Иллюзия стартапа: лучше казаться, чем быть

Level of difficultyMedium
Reading time4 min
Views6.6K

Сколько раз нужно наступить на грабли, чтобы изменить свою модель поведения? Сколько раз нужно смотреть на нулевые показатели метрики, чтобы убедиться, что продукт скорее мёртв, чем жив? Сколько раз нужно перенести папку проекта в "Завершенные проекты", чтобы начать делать иначе?

Читать далее

Интерактивные книги 2: на этот раз про геймдизайн и алгоритмы

Level of difficultyMedium
Reading time2 min
Views11K
Хабр силен комментариями. Поэтому, когда я писал топик "Мечтали про интерактивные книги? Я знаю человека, который делает их прямо сейчас", то надеялся, что читатели помогут найти аналогичные примеры. Результат превзошел ожидания.


Итак, знакомьтесь — Амит Патель (Amit Patel) и его интерактивные статьи на стыке математики, алгоритмов и программирования. Небольшой дисклаймер: поскольку я не могу встроить интерактивные иллюстрации на Хабр, то буду использовать анимированные gif. Некоторые из них могут быть тяжелые.
Читать дальше →

Я пытался зарабатывать по $5 в день пассивного дохода, но вместо этого научился чему-то новому

Level of difficultyEasy
Reading time8 min
Views54K

Что такое пассивный доход?

Его можно определить как деньги, получаемые от действий, в которых вы не принимаете активного или прямого участия.

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

Заманчиво, не так ли?
Читать дальше →

Как меняются ботнеты и методы борьбы с ними

Reading time4 min
Views3.4K

Мы как-то рассказывали о ситуации с DDoS-атаками и изменениях в поведении хакеров. Их атаки становятся не только более мощными, но и более изощрёнными. Обсудим перспективные средства борьбы и как специалисты по ИБ пресекают подобную деятельность.

Читать далее

Как я сделал SPA в два раза быстрее

Level of difficultyMedium
Reading time10 min
Views24K

Существует огромное множество статей про оптимизацию загрузки веб-сайтов, но часто они обходятся лишь общими советами или абстрактными простыми примерами. В этой статье я хочу поделиться своим опытом комплексной оптимизации реального проекта с конкретными примерами, в данном случае SPA, написанном на Vue 3 с использованием Vuetify для части UI компонентов и Firebase для авторизации.

Читать далее

Мы неправильно воспринимаем учетные записи в экосистемах

Level of difficultyEasy
Reading time5 min
Views5.9K

Вы наверняка знаете термин "экосистема", который обычно применяют в комплексу сервисов Apple или Google. И Яндекс не отставал. Ваш почтовый ящик на базе Яндекса позволяет вам логиниться практически во все их системы от почты и Браузера, до Диска, Такси, Кино и т.п. Привязанная карта к учетке становится доступна в прочих системах, очень удобно платить и управлять всем. И тут мы подбираемся к нюансам и попробуем понять, причем тут свои домены.

Читать далее

Clean Architecture

Level of difficultyEasy
Reading time8 min
Views84K

Как многие разработчики, я прекрасно понимаю, насколько важно создавать приложения, которые будет легко поддерживать, расширять и развивать в долгосрочной перспективе. Именно поэтому принципы Clean Architecture (Чистая архитектура) стали неотъемлемой частью моей работы. В этой статье я расскажу о том, почему следование принципам Clean Architecture так важно и какие преимущества эти принципы могут дать.

Читать далее

C# как замена VBA в Excel

Level of difficultyMedium
Reading time14 min
Views16K
Я довольно много пишу на C#, и это мне нравится. Время от времени мне хочется, чтобы можно было использовать C# внутри других приложений.

Думаю, одним из таких приложений, в которых хорошо приживётся C#, был бы Excel, этим языком можно было бы заменить VBA. Язык VBA уже немного отстаёт от времени, а Microsoft не планирует его апгрейдить. Вместо него — компания предлагает среду-песочницу для JavaScript под названием Office Scripts.

Я понимаю привлекательность JavaScript для веб-версии Excel, но не в качестве хорошей замены VBA.

Так как этим не собирается заниматься Microsoft, я решил, что могу попробовать сам. В конце концов, если Microsoft так увлечена JavaScript, маловероятно, что она выдавит меня с обширного рынка использования C# в Excel.

Итак, вот что я создал:

QueryStorm IDE, выполняющая запрос LINQ для таблицы Excel

«Это что, IDE языка C#, выполняющая запросы LINQ для таблиц Excel?» Именно. Всё так и есть.

Я назвал это QueryStorm. Моя работа над этим проектом началась ещё в 2014 году. Изначально у него имелась только поддержка SQL, и с тех пор я продолжал над ним работать, постепенно добавляя поддержку скриптинга на C#, пользовательских функций C#/Excel, поддержку NuGet, отладчик и даже магазин приложений!
Читать дальше →

Information

Rating
Does not participate
Location
Анталия, Анталья, Турция
Registered
Activity

Specialization

Backend Developer
Senior
From 8,000 €
C#
SQL
Git
Linux
Docker
PostgreSQL
MySQL
OOP
Design patterns
.NET