Сравнительно недавно в stdlib плюсов появилось форматирование строк «как в питоне», а точнее, как в библиотеке fmt. И я, как смелый и отчаянный, решил этим воспользоваться. Возможно, аксакалы и настоящие разработчики скажут, что я всё делаю не так, и вообще не то, но я буду рад такой критике, если она поможет легче жить ;)
Самоуверенный пользователь ПК
10-Gbit сеть на ноутбуке
10-гигабитной локалкой уже никого не удивишь, много лет такое железо доступно на еБее и даже на местных сайтах бесплатных объявлений по совсем бросовым ценам. Дома я уже всё что можно было перевёл на 10G и не у дел остались только ноутбуки...
Измеряем скорость света в домашних условиях
...или как измерить задержки вашего HFT‑сетапа не привлекая санитаров.
Эта статья является развернутым ответом на комментарий. Дело в том, что во многих статьях любят показать модное оборудование за триллиарды долларов, или выпендриться какими‑то крутыми новинками.
Я хочу показать, что всё это можно сделать из говна и палок дешёвых старых компонентов. И ответить на несколько типичных вопросов, первый из которых, сколько времени задержки добавляет лишняя длина кабеля. В биржевой инфраструктуре обычно используется 10G сеть, и для любых нетривиальных расстояний (более 3м, за пределы стойки) это будет оптика. Итак, мы будем измерять скорость света в оптическом кабеле, то есть в стекле.
Популярные заблуждения о C#
Эта статья является развёрнутым комментарием к другой статье. Обычно я прохожу мимо, но сейчас меня почему-то задело.
Шпаргалка по SIMD-инструкциям, теперь и для .NET Core
Из-за этого трудно воспользоваться уже готовым векторизованным кодом, просто портировав его с плюсов. Так же тяжело будет и с адаптацией найденных на stackoverflow ответов и примеров )) Ведь для каждого вызова надо найти новое дотнетное название. А сделать это не так легко — если в MSDN искать называние плюсового интринсика, то найдутся только плюсовые статьи, и, может быть, где-то в самом конце то, что нам нужно.
Когда мне приходилось писать SIMD-код на плюсах, я пользовался очень хорошим ресурсом — officedaytime, где кратко и наглядно представлены все основные инструкции для x86-платформы. Я решил, что неплохо было бы заполучить такую шпаргалку и для дотнета.
Итак, не буду лить много воды, вот эта страница, адаптированная под netcore.
Собираем игру «Змейка» на макетной плате. Часть 2: «векторный» дисплей
Большое разрешение — по клику
Собираем игру «Змейка» на макетной плате. Часть 1: конечные автоматы
.NET Core: интринсики x86_64 на виртуальных машинах
Архитектура x86 за время своего существования (и популярности) пережила много крупных апдейтов (например, расширение до 64 бит — x86_64) и добавлений «расширенных наборов инструкций». К этому приходится подстраиваться и компиляторам, которые по-умолчанию генерируют максимально общий для всех процессоров код. Но среди расширенных инструкций есть много интересного и полезного. Например, в шахматных программах часто используются инструкции для работы с битами: POPCNT, BSF/BSR (или более свежие аналоги TZCNT/LZCNT), PDEP, BSWAP и т.д.
В компиляторах C и C++ явный доступ к таким инструкциям реализован через «присущие (intrinsic) данному процессору функции». пример1 пример2
Для .NET и C# такого удобного доступа не существовало, поэтому когда-то давно я сделал свою обёртку, которая предоставляла эмуляцию таких функций, но если CPU их поддерживал, то заменяла их вызов прямо в вызывающем коде. Благо, большинство нужных мне интринсиков помещались в 5 байт опкода CALL. Подробности можно почитать на хабре по этой ссылке.
С тех пор прошло много лет, в .NET нормальных интринсиков так и не появилось. Но вышел .NET Core, в котором ситуацию исправили. Сначала появились векторные инструкции, в потом и почти весь* набор System.Runtime.Intrinsics.X86.
* — нет «устаревших» BSF и BSR
И всё вроде-бы стало хорошо и удобно. Если не считать того, что определение поддержки каждого набора инструкций всегда было запутанным (какие-то включаются сразу наборами, для каких-то есть отдельные флаги). Так .NET Core запутало нас ещё сильнее с тем, что между «разрешёнными» наборами есть ещё и какие-то зависимости.
Расширенные инструкции процессора в .NET или «C# Intrinsics»
Конечно, всё серьёзные шахматные программы пишут на C++, но для прототипирования каких-нибудь алгоритмов хочется использовать C#, потому что я с ним лучше знаком и у меня меньше шансов выстрелить себе в ногу. Но производительность тоже не хочется терять просто так, в C/C++ интересующие нас инструкции доступны так называемые встроенные функции. Я попробовал сделать подобное решение и для C#.
Отладка Node.js в Visual Studio
Мышка кликера
— Нет… —сказал я, — но что-нибудь придумаем.
Писать скрипт — это как-то скучно и неспортивно. Поэтому я решил сделать мышь. Но не простую, а прокачанную:
Вынеси мусор!
В общем и целом эта тема уже много обсуждалась, я хочу рассмотреть один интересный случай c замыканиями.
Silverlight и кодировки
Silverlight довольно удобен тем, что предоставляет почти «полноценный» .net в клиентских приложениях. Если бы не это «почти», то всё было бы замечательно. Недавно мне понадобилась необходимость использовать одну .net-библиотеку. Я начал с того, что переставил настройки проекта на silverlight и добавил её к основному проекту. Приложение откомпилировалось и я уже обрадовался, что вот так легко можно использовать уже имеющиеся наработки, но радоваться было рано...
Обфускаторы (и деобфускаторы) для .NET §0
NotCaptcha is not a captcha
Капча конечно интересная, хоть и спорная, что вызвало много комментариев о том, насколько это удобно для пользователя, и насколько её легко сломать теоретически.
В одном из комментариев было замечено, что по одному и тому же url показываются хоть и разные картинки, но с одинаковым верным ответом. Это навело на мысль о том, что где-то в алгоритме была допущена ошибка.
Information
- Rating
- Does not participate
- Location
- Россия
- Registered
- Activity