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

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

Send message

В чём разница между хорошим и плохим кодом? Объяснение для непрограммистов

Reading time4 min
Views9.7K

Однажды я где-то прочитал цитату, имевшую приблизительно следующий смысл:

«Жизни многих людей в современном мире зависят от программного обеспечения, например, оно контролирует системы управления большими коммерческими авиалайнерами. Тем не менее, сфера разработки ПО практически никак не регулируется. Любой может стать разработчиком-самоучкой, при этом нет никаких сертификаций или правил, как в других профессиях с высокими ставками, например, в архитектуре или нейрохирургии. Это угрожающе нерегулируемая сфера, хотя несколько строк плохого кода могут привести к смерти».

Кажется, это заявление я прочитал в каком-то крупном СМИ. Статья называлась примерно так: «Опасайтесь плохого кода, он может вас убить; хотя постойте, он невидим, так что не стоит беспокоиться!». Весьма успокаивающее послание для читателей, как считаете? Сейчас я думаю, что авторы статьи просто пытались создать сенсацию из наличия таящегося «плохого кода» в авиалайнерах, поездах и беспилотных автомобилях, которых становится в нашем обществе всё больше, и таким образом увеличить количество просмотров.

Так как же объяснить концепцию «плохого кода» обывателю?


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

Для таких людей я представлю ответ на вопрос: «Если вы кодер, то чем вы занимаетесь?»
Читать дальше →

Почему шифрование почты за 30 лет не стало мейнстримом?

Reading time4 min
Views6.3K


30 марта 2023 года Mozilla закрыла баг 135636 и исправила ошибку по автоматическому включению/отключению шифрования почтовых сообщений в зависимости от текущей конфигурации отправителя и получателя (режимы OpenPGP и S/MIME). В этом не было бы ничего странного, если бы не одна деталь: тикет открыт 21 год назад. В связи с этим возникает вопрос: почему закрытие такого простого бага заняло больше двух десятилетий?
Читать дальше →

Реверс-инжиниринг британских билетов на поезд

Level of difficultyMedium
Reading time15 min
Views16K
Долгие годы, начиная ещё задолго до моего рождения, в Великобритании использовались билеты на поезд размером с кредитную карту. Изначально это были билеты APTIS1, которые позже заменили на чуть более удобочитаемую версию, печатаемую в том же формате.

1 Я до сих пор помню, как покупал их в детстве, чтобы добраться до лондонского вокзала Ватерлоо!


Сегодня эта отрасль стимулирует нас отказываться от бумажного билета в пользу электронного, со штрих-кодом (или смарт-карты ITSO2); компании-перевозчики не только не хотят тратить деньги на печать билетов, но и получают возможность точно отслеживать использование билетов в сети и минимизировать случаи мошенничества.
Читать дальше →

Как на самом деле работает Async/Await в C# (Часть 4)

Level of difficultyHard
Reading time6 min
Views10K

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Читать далее

Супергерой или миф: как возникло понятие 10х-программист и что за ним стоит

Level of difficultyEasy
Reading time4 min
Views15K

Все, кто так или иначе связан с IT-сферой, знакомы с понятием 10х-программист. Так называют самых крутых и эффективных разработчиков. Термин встречается буквально везде: от кликбейтных статей “Как стать программистом за месяц” до книг уважаемых экспертов вроде Стива Макконнелла или Мартина Фаулера. Даже в сериале "Кремниевая долина" в первых же сериях упоминается, что главный герой – как раз один из тех самых 10х-программистов.

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

Читать далее

Как на самом деле работает Async/Await в C# (Часть 2)

Level of difficultyHard
Reading time7 min
Views17K

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Читать далее

Вжух и денег нет: как Binance обнулил мой счет

Level of difficultyEasy
Reading time6 min
Views83K

Кратко: баланс на Binance около 3000 USDT  – > технический сбой 24 марта 2023 г. – > вжух, денег нет. В статье, расскажу о работе поддержки Binance и как вернуть деньги. Вдруг я не один, кто столкнулся с этой проблемой и мой опыт будет полезен.

Читать далее

Какой ты нафиг программист?

Level of difficultyEasy
Reading time4 min
Views26K

Скажу честно, изучая программирование, я влюбился в Python. Тогда у него ещё не было такой ошеломляющей популярности, и после курса С/С++/Java было ощущение, что меня вынули из чана с кипящей смолой, облили пантенолом и дали попить вкусной минералки. Я уже был неплохим инженером, но меня, как любого адекватного человека, манили деньги в разработке — и я учился, учился, учился… Пока учился, написал кучу скриптов для рабочих серверов, научился сам работать с SQL-запросами в биллинге, делал выборки для аналитиков, не мучая службу АСУ. Я даже ушёл в не очень кровавый энтерпрайз посмотреть на разработку, погрузился, но отступил в связанное с основным профилем тестирование. Потому что однажды честно сказал себе: «Какой ты нафиг программист?» Скажу и некоторым остальным ;-)

Читать далее

Остановись, мгновенье. Медленное программирование — тренд для уставших разработчиков

Reading time5 min
Views41K

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

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

Читать далее

Кидалово mytonwallet.io. Почему не стоит делать тестовые задания

Level of difficultyEasy
Reading time3 min
Views72K

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

Читать далее

Нюансы разработки парсера для своего языка программирования

Level of difficultyMedium
Reading time7 min
Views13K

image


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


Я решил не сильно париться, поэтому использовал библиотеку parglare. Она очень легкая и удобная, всем рекомендую. Для описания синтаксиса парсер принимает строку в соответствующем формате, использует регулярные выражения (не надо осуждать регулярки, они всесильны!).

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


Ведь в жизни практически любого программиста может наступить момент, когда ему в голову приходит светлая идея — разработать свой собственный язык программирования. Может быть и не ради захвата мира, наравне с C/C++, Python или хотя бы PHP, а в качестве личного пет-проекта, с которым он, длинными зимними вечерами будет оттачивать собственное мастерство.


А так как у любого языка (не только программирования), все начинается с анализа его грамматики, то самой первой задачей создателя будет выбор инструментов для синтаксического анализа исходного текста.


Это история — заметки на память о муках выбора связки лексер-парсер для разбора грамматики NewLang. А так же попытка описать и систематизировать выводы об особенностях разных анализаторов с которыми пришлось поработать при выборе парсера для разбора грамматики у своего языка программирования.

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

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

Level of difficultyEasy
Reading time19 min
Views26K

И так однажды, появилась у меня книга по криптографии с названием "Криптография с секретным ключом" от Фрэнка Рубина. Я совру, если скажу что эта книга меня заинтересовала хорошими отзывами или автором, где таковой является магистром математики и доктором информатики, занимающимся криптографией больше 50 лет (по крайней мере так пишется на обложке книги). Вовсе нет, я просто её купил, чтобы когда-нибудь прочитать. Даже если бы у этой книги были только отвратительные отзывы и/или её бы написал человек, находящийся в кустарных условиях и понимающий только что такое шифр Цезаря, я бы скорее всего её точно также бы купил. Но факт того, кем является автор и то, что он изучает криптографию более 50 лет, мы держим в голове всё последующее время повествования.

Читать далее

Казалось бы, простой вопрос: что такое паттерны проектирования?

Reading time6 min
Views20K
image

В индустрии разработки ПО есть ряд тем, о которых ведутся споры почти в каждой компании. Я считаю, что история паттернов проектирования — одна из них. Можно найти сколько угодно постов, статей и ответов на Quora/Stackoverflow в пользу и не в пользу паттернов проектирования. Например, на днях я наткнулся на этот старый вопрос на Quora:
«Почему сейчас программисты меньше говорят о паттернах проектирования? Какие паттерны (если они есть) все еще представляют ценность?»
Читать дальше →

Чем ChatGPT похож на человека и почему к этому надо относиться серьезно

Reading time7 min
Views5.4K

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

Я соглашусь с вами в том, что ChatGPT — это всего лишь виртуальный собеседник. Это чисто программный продукт, и поэтому пообщаться с ним можно только в интернете. Не идет никакой речи о том, чтобы он управлял роботом, наподобие тех, которые разрабатывает Boston Dynamics. В реальном мире такие системы еще долго не будут составлять нам конкуренции. На роль дворника способного убирать улицу эта разработка точно не претендует. А вот в виртуальной сфере все не так однозначно. Уже сейчас, на текущей стадии развития ChatGPT способен создавать несложные части программного кода, но на этом его возможности не ограничиваются. Этот бот может придумывать интересные тексты и эссе. Так что со временем он вполне cможет вписаться в нишу квалифицированного интеллектуального труда, в котором на данный момент находится достаточное количество высокооплачиваемых людей. Поэтому я надеюсь что вы начинаете понимать каким людям в будущем этот бот будет составлять настоящую конкуренцию.

Читать далее

Инструменты анализа эффективности работы приложения. PerfView

Reading time15 min
Views14K

Иногда приходится разбираться, почему .NET приложение работает "плохо". Не так, как мы ожидали. Тупит, медленно работает, зависает, запросы «не исполняются», утекает память или потребляется слишком много CPU.

Есть множество способов, как разбираться в таких ситуациях. Сегодня мы немного обсудим, что это за способы. Когда и какой способ нужно использовать. И более детально рассмотрим один из инструментов: PerfView.

Читать далее

Что такое на самом деле креативное мышление, почему оно так нужно в IT и как его развить даже самым «некреативным»

Level of difficultyEasy
Reading time6 min
Views11K

Креативное мышление звучит как что-то из области творчества, или на крайний случай — менеджмента. Может показаться, что в IT ему не совсем место, и попытка его развить — пустая трата времени. Но на самом деле IT-специалисты прибегают к креативному мышлению куда чаще, чем привыкли думать. А могли бы еще чаще — и это принесло бы пользу всем.

Меня зовут Евгений Тараканов, я продюсер в Eschatology Entertainment. До этого был операционным директором в Wargaming и продактом. За время работы накопил много знаний про креативное мышление и выработал его у себя, на самом деле совсем некреативного человека. И сейчас хочу поделиться своим опытом.

Читать далее

Самая маленькая хеш-таблица в мире

Level of difficultyHard
Reading time17 min
Views12K

1 декабря я в очередной раз поучаствовал в Advent of Code, написав программу на Rust. Если интересно — код можно найти на GitHub. Тут мне хотелось бы рассказать о моём решении задачи, предлагавшейся во 2 день мероприятия, так как это решение, с одной стороны, сверх всякой меры оптимизировано, а с другой — демонстрирует кое-какие полезные приёмы. Чтобы не усложнять себе жизнь — мы рассмотрим лишь первую часть задачи, но те же приёмы можно применить и к её второй части.

Читать далее

Хочется лучше жить? Просто начни просить

Level of difficultyEasy
Reading time7 min
Views65K

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

Читать далее

Стартап в Соло. Часть 4: техническая реализация

Level of difficultyMedium
Reading time10 min
Views5K

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

Читать далее

Стохастический язык программирования на основе алгоритмов Маркова

Reading time13 min
Views28K

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →

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