Pull to refresh
160
-4
Антон Д @atd

Самоуверенный пользователь ПК

Send message

Блеск и нищета std::format

Level of difficultyMedium
Reading time9 min
Views6K

Сравнительно недавно в stdlib плюсов появилось форматирование строк «как в питоне», а точнее, как в библиотеке fmt. И я, как смелый и отчаянный, решил этим воспользоваться. Возможно, аксакалы и настоящие разработчики скажут, что я всё делаю не так, и вообще не то, но я буду рад такой критике, если она поможет легче жить ;)

Читать далее
Total votes 29: ↑27 and ↓2+25
Comments31

10-Gbit сеть на ноутбуке

Level of difficultyEasy
Reading time4 min
Views7.1K

10-гигабитной локалкой уже никого не удивишь, много лет такое железо доступно на еБее и даже на местных сайтах бесплатных объявлений по совсем бросовым ценам. Дома я уже всё что можно было перевёл на 10G и не у дел остались только ноутбуки...

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

Измеряем скорость света в домашних условиях

Level of difficultyEasy
Reading time4 min
Views6.6K

...или как измерить задержки вашего HFT‑сетапа не привлекая санитаров.

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

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

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

Шпаргалка по SIMD-инструкциям, теперь и для .NET Core

Reading time2 min
Views6.6K
Ни для кого не секрет, что в дотнет завезли интринсики. Я писал об этом и до того, как они появились и после. Плюс ещё посты на Хабре, например этот. И всё, казалось бы, замечательно, если бы не одно «но»: называются эти интринсики по-дотнетовски, а совсем не так как в ассемблере или C++.

Из-за этого трудно воспользоваться уже готовым векторизованным кодом, просто портировав его с плюсов. Так же тяжело будет и с адаптацией найденных на stackoverflow ответов и примеров )) Ведь для каждого вызова надо найти новое дотнетное название. А сделать это не так легко — если в MSDN искать называние плюсового интринсика, то найдутся только плюсовые статьи, и, может быть, где-то в самом конце то, что нам нужно.

Когда мне приходилось писать SIMD-код на плюсах, я пользовался очень хорошим ресурсом — officedaytime, где кратко и наглядно представлены все основные инструкции для x86-платформы. Я решил, что неплохо было бы заполучить такую шпаргалку и для дотнета.



Итак, не буду лить много воды, вот эта страница, адаптированная под netcore.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments6

Собираем игру «Змейка» на макетной плате. Часть 2: «векторный» дисплей

Reading time5 min
Views5.8K
В первой части мы собрали автомат с логикой игры. Точнее, не всей игры, а только движения самой змеи. В этой, заключительной, части мы разберёмся с подключением экрана и закончим всю схему целиком.


Большое разрешение — по клику
Total votes 45: ↑45 and ↓0+45
Comments16

Собираем игру «Змейка» на макетной плате. Часть 1: конечные автоматы

Reading time6 min
Views10K
На досуге мы с сыном изучаем цифровую электронику. Недавно мы дошли до главы про конечные автоматы. На эту тему полно типичных задач, вроде семафора или торгового автомата. Но они все унылые и слишком простые, а некоторые вообще, честно скажем, притянуты за уши. После изучения простых примеров захотелось сделать что-то более интересное и сложное. На глаза попала классическая игра «змейка» (сын играл в неё на телефоне), и я предложил сделать её на конечных автоматах. Ведь состояние игры вполне конечное (особенно, если ограничиться небольшим полем), а из входов только 4 кнопки. И вот что у нас получилось.

Собрать змейку без ардуино, регистрации и смс
Total votes 49: ↑49 and ↓0+49
Comments24

.NET Core: интринсики x86_64 на виртуальных машинах

Reading time4 min
Views5.9K
Мы живём в эпоху доминирования архитектуры x86. Все x86-совместимые процессоры похожи, но и все при этом немного отличаются. И не только производителем, частотой и количеством ядер.

Архитектура 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 запутало нас ещё сильнее с тем, что между «разрешёнными» наборами есть ещё и какие-то зависимости.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments1

Расширенные инструкции процессора в .NET или «C# Intrinsics»

Reading time6 min
Views17K
В шахматных программах широко используются «битовые доски» (битборды 1, 2) для представления фигур на доске. А так же и для других игр на той же доске 8×8, и даже для карточных игр. С битбордами часто проводят различные операции, например, найти первый установленный бит или посчитать количество установленных битов. Для этих операций придумано много «хитрых» алгоритмов, а на современных процессорах некоторые из этих операций доступны в расширенном наборе инструкций. Например, popcnt, доступный в SSE4.2 ABM. Также есть пара инструкций bsf/bsr, которые доступны уже давно, но из JIT-компилятора к ним нет никакого доступа.
Конечно, всё серьёзные шахматные программы пишут на C++, но для прототипирования каких-нибудь алгоритмов хочется использовать C#, потому что я с ним лучше знаком и у меня меньше шансов выстрелить себе в ногу. Но производительность тоже не хочется терять просто так, в C/C++ интересующие нас инструкции доступны так называемые встроенные функции. Я попробовал сделать подобное решение и для C#.
Читать далее
Total votes 32: ↑31 and ↓1+30
Comments10

Отладка Node.js в Visual Studio

Reading time4 min
Views25K
Мне нравится Node.js, но совсем недавно я начал использовать её на серьёзных проектах. При этом я продолжил пользоваться моей любимой средой разработки*. И если для простых скриптов достаточно просто редактора, то для серьёзной разработки нужны серьёзные инструменты, в частности, дебаггер. Ничего готового для студии найти не удалось, поэтому я взял и за пару выходных сделал его сам:
image
Читать дальше →
Total votes 106: ↑95 and ↓11+84
Comments23

Мышка кликера

Reading time2 min
Views42K
— А нет ли у тебя скрипта, который две тыщи раз кликнет по кнопке «добавить»? — спросил меня наш Инженер по тестированию.
— Нет… —сказал я, — но что-нибудь придумаем.

Писать скрипт — это как-то скучно и неспортивно. Поэтому я решил сделать мышь. Но не простую, а прокачанную:

Читать дальше →
Total votes 214: ↑208 and ↓6+202
Comments87

Вынеси мусор!

Reading time5 min
Views4.6K
Речь пойдёт о сборке мусора и утечках памяти в разных браузерах.

В общем и целом эта тема уже много обсуждалась, я хочу рассмотреть один интересный случай c замыканиями.
Если вам интересна эта тема, добро пожаловать под кат...
Total votes 97: ↑89 and ↓8+81
Comments39

Silverlight и кодировки

Reading time3 min
Views1.9K

Silverlight довольно удобен тем, что предоставляет почти «полноценный» .net в клиентских приложениях. Если бы не это «почти», то всё было бы замечательно. Недавно мне понадобилась необходимость использовать одну .net-библиотеку. Я начал с того, что переставил настройки проекта на silverlight и добавил её к основному проекту. Приложение откомпилировалось и я уже обрадовался, что вот так легко можно использовать уже имеющиеся наработки, но радоваться было рано...

Читать дальше →
Total votes 31: ↑18 and ↓13+5
Comments38

Обфускаторы (и деобфускаторы) для .NET §0

Reading time3 min
Views21K
Ни для кого не секрет, что из скомпилированных сборок (exe и dll) для платформы .NET может быть легко восстановлен код на языках высокого уровня (C#, VB.net). Это означает не только то, что если в программе имеется система лицензирования, то она может быть легко снята; но и то, что ваш исходный код могут скопировать, например, нечистые на руку конкуренты. Чтобы обезопасить себя от подобных угроз большинство разработчиков коммерческого софта используют разного рода обфускаторы.
Читать дальше →
Total votes 41: ↑27 and ↓14+13
Comments30

NotCaptcha is not a captcha

Reading time3 min
Views2.9K
Недавно в топике habrahabr.ru/blogs/spam/74007 было рассказано о новом виде капчи.

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

В одном из комментариев было замечено, что по одному и тому же url показываются хоть и разные картинки, но с одинаковым верным ответом. Это навело на мысль о том, что где-то в алгоритме была допущена ошибка.
Как же обойти эту капчу без распознавания...
Total votes 81: ↑71 and ↓10+61
Comments21

Information

Rating
Does not participate
Location
Россия
Registered
Activity