Как стать автором
Обновить
11
0
Андрей @asjp

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

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

Fluent Generics in C#

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

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

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

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

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

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

Читать далее
Всего голосов 32: ↑32 и ↓0+32
Комментарии43

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

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


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

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

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

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

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

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

Вот как это могло бы быть.
Читать дальше →
Всего голосов 26: ↑16 и ↓10+16
Комментарии28

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

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

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

Читать далее
Всего голосов 20: ↑19 и ↓1+23
Комментарии4

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

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

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


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

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

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

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

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

Читать далее
Всего голосов 11: ↑9 и ↓2+11
Комментарии12

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 26: ↑17 и ↓9+12
Комментарии215

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 20: ↑14 и ↓6+9
Комментарии56

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

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

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

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

Вероятность клика 100%
Всего голосов 53: ↑53 и ↓0+53
Комментарии13

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

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

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

Читать далее
Всего голосов 72: ↑66 и ↓6+78
Комментарии70

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

Время на прочтение5 мин
Количество просмотров5.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: да нет да да да нет нет нет
Читать дальше →
Всего голосов 21: ↑19 и ↓2+31
Комментарии11

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

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

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

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

Читать далее
Всего голосов 62: ↑58 и ↓4+78
Комментарии77

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

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

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

Читать далее
Всего голосов 15: ↑13 и ↓2+14
Комментарии28

Алгоритм ECDSA

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

Алгоритм 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).

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

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

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

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

Читать далее
Всего голосов 15: ↑12 и ↓3+12
Комментарии2

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

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

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

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

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

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

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

Читать далее
Всего голосов 53: ↑42 и ↓11+43
Комментарии70

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

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

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

class UserController < ApplicationController

end

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

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

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

Читать далее
Всего голосов 8: ↑7 и ↓1+8
Комментарии1

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

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

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

Читать далее
Всего голосов 82: ↑45 и ↓37+21
Комментарии324
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность