Архив за 13 апреля 2018 - 4

Генерация кода в рантайме — очень мощная и хорошо изученная техника, но многие разработчики все еще неохотно её используют. Обычно изучение Expression Trees начинают с какого-нибудь простого примера типа создания предиката (фильтра) или математического выражения. Но не Expression Trees единым жив .NET-разработчик. Совсем недавно появилась возможность генерировать код, используя сам компилятор — это делается с помощью API библиотек Roslyn/CodeAnalisys, предоставляющих, кроме всего прочего, еще и парсинг, обход и генерацию исходников.

Эта статья основана на докладе Raffaele Rialdi (Twitter: @raffaeler) на конференции DotNext 2017 Moscow. Вместе с Рафаэлем мы проанализируем реальные способы использования кодогенерации. В отдельных случаях они позволяют очень сильно улучшить производительность приложения, что в свою очередь приводит нас к дилемме — если сгенерированный код так полезен и мы собираемся его часто использовать, то как же отлаживать этот код? Это один из фундаментальных вопросов, возникающих в реальных проектах.

Рафаэль — практикующий архитектор, консультант и спикер, имеющий MVP в категории Developer Security начиная с 2003 года, который прямо сейчас занимается бэкендами enterprise-проектов, специализируясь на генерации кода и кроссплатформенной разработки для C# и C++.

Читать полностью »

Оказавшись перед трудным выбором, стоит доверять интуиции или тщательно просчитать все сопутствующие риски?

Когда вероятность встречается с реальностью: три задачки на теорию вероятностей - 1

Для людей с научным складом ума естественно пытаться применять рациональные методы для оценки рисков повседневной жизни. К примеру, надо ли делать прививку от гриппа, если вам нет 40 лет и вы здоровы? Нужно ли выпрыгивать из самолёта (с парашютом)? Благородная цель, применение логики для оценки рисков, однако, сталкивается с двумя препятствиями. Во-первых, в отсутствии определённости мы обычно принимаем решения на основании комбинации из интуиции и целесообразности, и довольно часто это срабатывает. Во-вторых, нас постоянно атакует множество всё время изменяющихся случайных событий. "Как случайность управляет нашей жизнью" – такой подзаголовок был у весьма поучительного бестселлера Леонарда Млодинова. Эти постоянные тычки от случайных сил красочно продемонстрированы в этом отрывке, перефразированном из гораздо более длинной детской сказки 1964 года под названием "К счастью" Реми Чарлипа, который вдохновил нашу первую задачу.
Читать полностью »

Введение

Я уже писал подобную статью, но она была очень не полной и не снабженной примерами, поэтому я решил взять вторую попытку и попытаться раскрыть данный вопрос наиболее полно!

В данной статье, не будут рассматриваться все тонкости разработки на фреймворках, поскольку это не возможно уложить в рамках одной статьи. Однако, можно достаточно подробно разъяснить те нюансы, которые помогут в выборе для изучения или реализации конкретного проекта. Сравнивать будет Yii2 и Laravel. Я понимаю, что это достаточно холиварная тема, результат которой обычно гласит, что каждый хорош по своему. Я, как человек работавший с обеими, попробую разъяснить свой подход к выбору фреймворка, и постараюсь наиболее объективно показать их минусы и плюсы.
Читать полностью »

Неисчислимое: в поисках конечного числа - 1

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

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

В XX в. стала отчетливо проступать другая проблема. С бесконечностью мы можем разобраться при помощи одного символа (∞), но что делать с числами, которые меньше бесконечности, но при этом невообразимо огромны?

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

Добро пожаловать в кроличью нору без дна.
Читать полностью »

Секционирование в PostgreSQL 10 и не только - 1

У многих достижений версии PostgreSQL 10 прописка в разделе Секционирование (Partitioning). И это справедливо: очевидно, что при переходе от 9.6 к 10 произошел мощный технологический скачок. В предыдущих версиях секции строили и управляли ими, теми средствами, что уже имелись: механизмом наследования со всеми его ограничениями и неудобствами.

В версии 10 перешли к более специализированным механизмам и более привычному (в том числе для пользователей Oracle, а с этим приходится считаться) синтаксису. Этот скачок при переходе от 10 к версии 11 должен был подкрепиться важными дополнениями, которые должны расширить функциональность и улучшить производительность операций, использующих секционирование. Но из итогов последнего комитфеста (он закончился 8 апреля) видно, что не все задуманное удалось довести до рабочего состояния, а значит не все попадет в версию 11.

К тому же последние пару лет параллельно велись разработки модуля pg_pathman в Postgres Professional. Некоторые важные возможности пересеклись, некоторые остались уникальны для PostgreSQL и pg_pathman (который работает с ванильной версией, то есть PostgreSQL 10 + pg_pathman дает уже вполне впечатляющую сумму функциональности). Об этом будет отдельная статья. Замечания, относящиеся к версии 11 и к pg_pathman для удобства выделены курсивом.

Эта статья представляет собой переработанные и дополненные фрагменты книжки Nouveaulités de PostgreSQL 10. (с) Dalibo, перевод с французского Игоря Лёвшина (оригинал). Примеры из книги проверены, иногда адаптированы и локализованы для большей наглядности.

Читать полностью »

Эта статья для тех, кто готовится искать работу и, возможно, тревожится о том, что в топовые компании без диплома Стэнфордского университета по информатике не пробьешься. Вам наверняка говорили, что вас никто не возьмет в Facebook или Microsoft. Но я хочу вам сказать, что это вполне возможно. Вот моя история о том, как мне удалось получить работу своей мечты в Twitter.

Как попасть в Microsoft, Amazon или Twitter без диплома престижного колледжа - 1

Что вы найдете в этой статье:

  • Кое-что из моей биографии
  • Рассказ о том, как меня пригласили на собеседования топовые IT компании мира: Facebook Google, Amazon, LinkedIn, Microsoft, Twitter, Pinterest, Snapchat и другие
  • Рассказ о том, как я получил несколько предложений о работе на должности программиста
  • Уроки, которые я вынес из этого опыта

Читать полностью »

Эта статья рассказывает, как сгенерировать видеосигнал на FPGA, используя в качестве примера игру FizzBuzz. Генерировать видео оказалась проще, чем я ожидал — проще, чем предыдущая задача с последовательным выводом FizzBuzz на FPGA. Я немного увлёкся проектом, поэтому добавил анимацию, разноцветный текст и гигантские прыгающие слова на экране.

Решение FizzBuzz на FPGA с генерацией видео - 1
FizzBuzz на плате FPGA. Плата генерирует прямой видеосигнал VGA с анимацией слов “Fizz” и “Buzz”

Если Вы не знакомы с задачей FizzBuzz, то она заключается в написании программы, которая печатает числа от 1 до 100, где кратные трём заменяются словом Fizz, кратные пяти — словом Buzz, а кратные пятнадцати — FizzBuzz. Поскольку FizzBuzz реализуется в нескольких строчках кода, эту задачу дают на собеседованиях, чтобы отсеять совсем не умеющих программировать. Но на FPGA решение гораздо сложнее.
Читать полностью »

Удалось сегодня первым побывать в обновленном «Космосе», и как человек бывавший там и год и 20 лет назад не могу не поделиться впечатлениями!

image

Главное впечатление — масштаб. С открытием «космоса» мы получили огромный музей, даже не знаю с чем сравнить в Москве. И речь не просто о гигантских размерах, весь музей построен вокруг идеи масштабного пространства — половина экспонатов просто размещены в воздухе, причем павильон довольно высокий, метров 50 и парящие в три слоя аппараты создают довольно сильное впечатление эпичности. Вторая половина — полноразмерные копии, например макет станции мир на котором проходили тренировки космонавтов. Поедете снимать — обязательно возьмите широкоугольный объектив!

image

Читать полностью »

Компания ASRock готовит к выпуску материнские платы Fatal1ty X470 Gaming K4 и X470 Master SLI. Несмотря на разные названия, модели максимально унифицированы, а различия касаются только второстепенных возможностей, никак не влияющих на функциональность. К примеру, в Fatal1ty X470 Gaming K4 есть подсветка кожуха, накрывающего интерфейсные разъемы и элементы звуковой подсистемы, а в X470 Master SLI подсвечивается только чипсет. Другое заметное отличие касается звуковой подсистемы: в Fatal1ty X470 Gaming K4 она построена на кодеке ALC1220, а в X470 Master SLI используется кодек ALC892.

Читать полностью »

От корутин до ARKit: всё, о чём можно будет узнать на Mobius 2018 Piter - 1

 
Когда в декабре мы анонсировали новый петербургский Mobius, нам самим были известны имена лишь нескольких спикеров. А теперь, когда до конференции осталась лишь неделя, рассказываем как следует о докладах, которые на ней можно будет услышать: от рассказа о мультиплатформенном использовании Kotlin до «секретного» кейноута Йонатана Левина. Если до сих пор не определились, идти ли — вот что поможет решить!

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js