Pull to refresh
11
0
Андрей @asjp

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

Send message

Fluent Generics in C#

Reading time8 min
Views20K

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

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

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

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

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

Читать далее
Total votes 32: ↑32 and ↓0+32
Comments43

Чему HR-ам стоит поучиться у PornHub и голливудских продюсеров

Reading time4 min
Views9.4K
image


Начал я тут разбираться с ТРИЗ и поспорил с приятелем, что некоторые (устаревшие) лайвхаки изобретательства из индустриальной эпохи отлично ложатся на текущие реалии. Выбрали область HR и приём ТРИЗ №13: принцип «Наоборот».

Мир найма ИТишников сходит с ума. С одной стороны ИТишники выпендриваются, с другой HR-ы пьют их кровушку литрами. То разработчики Амазон недовольны базовой компенсацией в 1 млн руб в мес и им поднимают ее до 2 млн руб/мес, то происходят увольнения тысяч сотрудников одним голосовым сообщением. Кто-то ухитряется покупать программистов по $50/час и перепродавать по $500/час. HR-ы не понимают разницу между Java и Java Script и затаскивают кандидата по глупым анкетам и тестовым задания. Мидлы получают по 30 предложений в неделю, а HR-у, чтобы нанять мидла, надо совершить 700 контактов.

ИТишникам уже платят просто за собеседование и дают 13-ю зарплату после подписания трудового договора, дают отпуск по уходу за домашними животными. А пики увольнений и «великие исходы» следуют волна за волной.

Допустим есть у нас перспективный Java разработчик, ему в LinkedIn в неделю приходит 20-30 новых сообщений от HR-ов. Как ему не потонуть в этом шквале приглашений на интервью и тестовых заданий, причем еще некоторые входящие даже не персонализированы?

Странно, что еще никто не додумался сделать удобную CRM, которая бы помогала именно ИТишнику справляться с наплывом информации и помогать не пропустить важное предложение.

И тут рождается идея (в духе ТРИЗ): перевернуть найм с ног на голову и дать разработчикам возможность самим управлять процессом трудоустройства. А что если не ИТишник должен заполнять анкеты и проходить интервью, а HR-ы?

Вот как это могло бы быть.
Читать дальше →
Total votes 26: ↑16 and ↓10+16
Comments28

Крипто-ETF курильщика: как инвесторы в Grayscale Trust потеряли 70%, в то время как крипта внутри выросла на 350%

Reading time6 min
Views4.2K

Американские инвесторы пытались инвестировать в крипту привычными для себя способами «через брокера», и в итоге получили существенные убытки – несмотря на взрывной рост самих криптовалют. Разбираемся, как так произошло, и какие выводы из этой ситуации могут извлечь российские инвесторы.

Читать далее
Total votes 20: ↑19 and ↓1+23
Comments4

Ложная философия Матрицы

Reading time7 min
Views59K

▍ Матрица и девяностые


90-е годы прошлого века, в культурном плане — стали подходящим завершением для всего столетия. Авторы говорили на темы технологического будущего более уверенно, превознося или ругая прогресс, идя нога в ногу с научным позитивизмом или же отрицая технологии, пускались в метафизические и эзотерические учения. Если присмотреться, то многие произведения той эпохи имеют мрачный, грязный тон. В музыке — Massive Attack и Nirvana пели о зависимостях и трудности жизни в бедности, в книгах Чак Паланник и Девид Фостер Уоллес — писали о потере личности в мире, состоящем из рекламы и развлечений. А в кинематографе доминировали мрачные боевики и фильмы ужасов, для которых тема технологий стала основной.
Читать дальше →
Total votes 101: ↑86 and ↓15+106
Comments151

Соглашения о вызовах

Reading time3 min
Views18K

Это стандартизированные методы реализации и вызова функций.

Соглашение о вызовах опредяют как функция вызывается, как функция управляет стеком и стековым кадром, как аргументы передаются в функцию, как функция возвращает значения.

Читать далее
Total votes 11: ↑9 and ↓2+11
Comments12

Бангалор: «кремниевое плато» и столица мирового аутсорсинга

Reading time7 min
Views14K

Где-то в нулевых годах в английском языке появился неологизм «to bangalore / bangalored». Интернет-словари вполне однозначно расшифровывают его значение: to outsource (an employee, position, or function) to India, especially to Bangalore. Речь идёт о практике, когда американские и европейские компании увольняли своих айтишников или отказывались от услуг местных подрядчиков из экономии, передавая IT-задачи на аутсорс в Индию.

В большинстве случаев при «убангалорении» географически заказ отправлялся именно в город Бангалор, столицу южноиндийского штата Карнатака, лежащий на юго-востоке плато Декан. Как и описанный в предыдущей статье китайский Чжунгуаньцунь, Бангалор претендует на звание «Кремниевой долины Азии». И уж точно является аналогом калифорнийской Долины для всего индийского субконтинента. Ну а за расположение на плато Декан его альтернативным и уникальным названием стало «кремниевое плато».
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments9

Apple и Google обязаны разрешить установку приложений со сторонних площадок в ЕС: что это значит для пользователя

Reading time5 min
Views31K

На днях на многих технологических СМИ буквально прогремела новость — Европейский Союз принял два новых закона, которые регулируют деятельность крупных технологических компаний. В новости на Хабре говорится о том, что эти два закона будут иметь далекоидущие последствия для таких крупных корпораций, как Apple и Google. В частности, им придется разрешить установку приложений пользователями из сторонних каталогов.

Но влияние этих двух законов, на самом деле, шире, чем можно было бы подумать. Давайте посмотрим, что они означают для индустрии. Разбираемся под катом.
Читать дальше →
Total votes 62: ↑60 and ↓2+75
Comments232

Ну и для чего типичному программисту мышцы?

Reading time6 min
Views38K

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

Читать далее
Total votes 26: ↑17 and ↓9+12
Comments215

О корпоративных ценностях. Game Insight просит вернуть технику за свой счет. Ликвидатор передаст? Требование для всех

Reading time7 min
Views15K

Корпоративные ценности — это очень важно! «Речь идёт о том, чтобы заботиться о нашей компании и друг о друге», — так Марк Цукерберг сформулировал три ценности «Meta, meta-матросы, я». Но будет ли один из богатейших людей планеты действительно поддерживать своих коллег? По нашим данным, компания Meta в ближайшее время (август 2022) планирует сокращать издержки из-за снижения прибыли. Цукерберг решил повысить показатели производительности и избавиться от тех «матросов», которые «не должны быть здесь». Менеджерам компании поступило указание: не объявляя сокращений, уволить 10-15% сотрудников под предлогом net negative. Как видим, принципы работают, но только в одну сторону — в сторону Марка Цукерберга и его рейтинга Forbes.

Корпоративный принцип заботы о себе, других и компании регулярно вбивается в головы сотрудников Game Insight. Бывший CEO компании Анатолий Ропотов (или теперь Анатолийc Ропотовс?) считает своей главной обязанностью заботу о продуктовых командах. 

Ну что же, забота Game Insight прям очень качественная. У российского филиала нет денег даже на то, чтобы выплатить текущие долги по зарплате, не говоря уже о компенсациях при сокращении. Но при этом компания просит вернуть технику за свой счёт! Это 11 Цукербергов из 10 за следование корпоративным ценностям.

Но неужели это сойдёт компании с рук? Как в случае с Meta, так и в случае с Game Insight, единственная причина, почему компании настолько лицемерны, — это потому, что мы позволяем им так себя вести. Пока мы разобщены и каждый просто делает свою работу, компании пудрят нам мозги и пытаются выжать максимум из своих сотрудников. Иначе зачем все эти ценности? На практике, когда сотрудники нуждаются в компании, она с лёгкостью от них отказывается. А когда собственники компании нуждаются в сотрудниках, чтобы подняться как можно выше в рейтинге Forbes, вот тогда и достаются транспаранты, красные флаги и трудовые лозунги: мы все делаем общее дело, вот вам корпоративные ценности о заботе, мы в одной лодке! 

Читать далее
Total votes 47: ↑35 and ↓12+32
Comments21

Могут ли компьютеры изобретать? Создаем аналог ТРИЗ на нейронных сетях архитектуры Трансформер

Reading time19 min
Views8.3K

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

Читать далее
Total votes 20: ↑14 and ↓6+9
Comments56

Самоуверенные нейросети

Reading time7 min
Views16K

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

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

Вероятность клика 100%
Total votes 53: ↑53 and ↓0+53
Comments13

Мои вопросы работодателю, когда подаюсь на разработчика

Reading time9 min
Views88K

За последние 10 лет я поменял 3 работы, прособеседовался с 10+ компаний на позицию разработчика (software engineer) и вел переписку с HR/рекрутерами из нескольких десятков фирм. По ходу дела заметил, что вопросы, которые я задаю на собеседовании с менеджером/командой или с HR, повторяются, и решил их структурировать. Некоторые из них являются общими, и их может задать кандидат на почти любую вакансию; другие касаются только вакансий для программистов. В этой статье поделюсь с вами наиболее типичными и важными вопросами, которые, на мой взгляд, может задать соискатель потенциальному работодателю.

Читать далее
Total votes 72: ↑66 and ↓6+78
Comments70

Сравнение реализаций БПФ для .NET

Reading time5 min
Views5.6K

В этой небольшой статье мы сравним следующие реализации быстрого преобразования Фурье (БПФ) для платформы .NET:
  Accord Exocortex Math.NET NWaves NAudio Lomont DSPLib FFTW
Версия: 3.8.0 1.2 5.0 0.9.6 2.1 1.1 (2017) 3.3.9
Лицензия: LGPL BSD MIT MIT MIT - MIT GPL
Сборки: 3 1 1 1 1 - - 1+1
Размер: 3.6 MB - 1.6 MB 0.3 MB 0.2 MB - - 2.3 MB
NuGet: да нет да да да нет нет нет
Читать дальше →
Total votes 21: ↑19 and ↓2+31
Comments11

Как у «Вояджера-1» телеметрия сломалась, и что бы это значило

Reading time6 min
Views24K

Сегодня начну с воспоминаний. Один из моих первых научно-популярных переводов в «хаброформате» вышел в начале 2014 года на сайте dev.by (сейчас https://devby.io/); назывался он «Марсокод, или как создавалось ПО для марсохода Curiosity». Суть этого интереснейшего текста заключается в том, какой неимоверный уровень надежности, долговечности, автономности и интеграции харда и софта должен достигаться при программировании космических аппаратов. Примерно год спустя я получил в работу книгу «Pale Blue Dot» Карла Сагана, вышедшую в издательстве «Альпина Нон-Фикшн» под названием «Голубая точка. Космическое будущее человечества». Эту книгу я до сих пор считаю шедевром моей переводческой работы, хотя, в литредактуре «Альпины» она выглядит существенно лучше, чем в моем черновике. Книга названа так по знаменитой фотографии, сделанной с борта «Вояджера-1»  14 февраля 1990 года, когда этот аппарат находился в районе Сатурна.

В своей книге Саган уделяет «Вояджерам» больше внимания, чем каким-либо иным космическим аппаратам, посвящая им целую главу и несколько отступлений, в том числе, весьма лирических. Но вообще в этом рассказе (глава 8, «Триумф Вояджеров») подчеркивается все та же инженерная прозорливость и смекалка, которыми гордятся авторы ПО к «Curiosity». В последнее время интерес к «Вояджерам» вновь возрос, поскольку в телеметрии «Вояджера-1» стали возникать аномалии, а сами зонды, разменявшие 45-летний юбилей, близки к отключению.

Читать далее
Total votes 62: ↑58 and ↓4+78
Comments77

Сбывшиеся мечты: о чём писали фантасты и что воплотилось в реальность

Reading time5 min
Views8.1K

Люди мечтали всегда. Кому-то хотелось простых человеческих радостей, а кто-то представлял, что через сотню лет мир изменится кардинально — появятся новые технологии, сильно меняющие привычный уклад жизни. А некоторые, чаще писатели и футуристы, с удивительной точностью смогли многие изменения предсказать. Какие «штуки из книжек» стали привычными деталями нашей жизни?

Читать далее
Total votes 15: ↑13 and ↓2+14
Comments28

Алгоритм ECDSA

Reading time5 min
Views15K

Алгоритм ECDSA (Elliptic Curve Digital Signature Algorithm) — это реализация схемы цифровой подписи, основанная на использовании эллиптических кривых и модульной арифметики.

Мы оставим подробный разбор всех тонкостей этого алгоритма и соответствующей математической теории для будущих статей. Здесь же просто покажем основные идеи, за счет которых в ECDSA реализуются алгоритмы KeyGen, Sig и Ver.

Модульную арифметику пока полностью оставим в стороне. Эта тема несложная, но требует подробного рассмотрения. Поговорим сейчас только об эллиптических кривых — для начала нам этого будет достаточно.

Эллиптическая кривая в ECDSA — это линия на плоскости, задаваемая уравнением y²=x³+a∙x+b, где a и b — такие числа, что 4∙a³+27∙b²≠0. Например, Bitcoin и Ethereum используют кривую y²=x³+7 (рис. 1).

Читать далее
Total votes 11: ↑7 and ↓4+7
Comments4

Проверка проекта Orleans статическим анализатором PVS-Studio

Reading time11 min
Views1.9K

Orleans – кроссплатформенный фреймворк для создания масштабируемых облачных приложений. Это ПО разработано компанией Microsoft, проекты которой не раз проверялись анализатором PVS-Studio. Посмотрим, сколько подозрительных мест удастся найти в этот раз.

Читать далее
Total votes 15: ↑12 and ↓3+12
Comments2

Давай, пока мама не видит?

Reading time4 min
Views53K

Рынок разработки продуктов и сервисов в мире 1С – весьма странный. Как минимум потому, что, рискну предположить, 80% из вас не знали о его существовании. Но он есть.

Устроен просто. Почти всё, что не стыдно назвать «продукт» или «сервис», разрабатывает сама фирма 1С. Остальное – или партнёры (компании разного размера), или одиночки (не важно, какого юридического и налогового статуса).

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

Однако недавно… Нет, не повеяло свежим ветерком надежды. Появилась забавная дичь.

Кратенько расскажу.

Читать далее
Total votes 53: ↑42 and ↓11+43
Comments70

Как заставить интерпретатор Ruby выполнить программу, написанную на естественном языке

Reading time14 min
Views2.4K

Многие языки программирования позиционируют себя как почти естественные. Ruby не отстает: язык для людей и всё такое. Однако, первый же гайд по Rails (да, Ruby это всё еще Rails) предложит вам что–то такое:

class UserController < ApplicationController

end

То есть это вот абсолютно естественный английский текст, правда? Кажется, нас обманули: было бы здорово писать код на полностью естественном языке, например таком:

assign variable a value 1 assign variable b value 2 sum a with b

Давайте попробуем запустить эту программу!

Читать далее
Total votes 8: ↑7 and ↓1+8
Comments1

Почему не нужно идти в айти — демотиватор

Reading time5 min
Views93K

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

Читать далее
Total votes 82: ↑45 and ↓37+21
Comments324
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity