Моя личная история трейдинга, все совпадения случайны.
Я начал свою карьеру в HFT в австралийском филиале одной из крупнейших американских трейдерских компаний в качестве программиста на C++. В первый день меня встретил офис с огромными окнами с видом на сиднейскую гавань, на одном из которых было написано фломастером “< 2ms”. Это было главной задачей для дюжины разработчиков, но, пока что, не для меня. Итак…
Разработчик
Про рынок ИТ в России по-честному
Дисклеймер 1. Ни ссылок, ни имен, ни пруфов не будет. Как известно, в Интернете можно найти подтверждение или опровержение любому тезису, поэтому не вижу большого в том смысла, покуда это не диссертация, а мнение. Моя цель — предоставить другую точку зрения, основанную
Дисклеймер 2. В статье приводится собирательный образ. Вряд ли стоит ожидать, что есть стопроцентное совпадение хотя бы с одной компанией. Те или иные черты могут встречаться там или здесь; важно не то, что есть какие-то конкретные компании с этими проблемами. Важно то, что сами по себе проблемы существуют, и о них надо говорить.
Как я начал бояться и разлюбил Windows 10
Lego выпустила специальные тапочки, чтобы избавить пользователей от боли. А что сделал ты, Microsoft?
На обновлении Windows 10 (сейчас у меня сборка 1803) каждый раз замирает сердце — что поломается на этот раз. Дабы поделиться болью и лечением, я собрал самые частые обращения от людей за последние пару месяцев. В копилке: прекращение доступа на серверы, сбой работы приложений и откровенно странные глюки.
А в это время
– Нет, так дело не пойдет! – почти кричал взбешенный Анатолий Викторович. – Я не понимаю, за что плачу такие – заметьте, не малые – деньги! Чем программисты лучше других? Они что, какие-то особенные?
– У них высокая творческая составляющая в работе, как я понимаю. – как могла спокойнее произнесла Татьяна Владимировна. – Поэтому сложно измерять их работу, как процесс.
– Вот этими сказками я уже сыт по горло, про таинство творческих профессий! Слава Богу, у нас еще дизайнеров нет…
Маржинальный торговый робот на криптовалютной бирже BitMEX
Всем доброго времени суток!
Меня зовут Илья и сегодня я хочу вам немного рассказать о своем хобби — криптовалютном алго-трейдинге. Скоро будет год, как меня настигла мысль написать торгового робота, который бы минимизировал человеческий фактор торговли (торгующие люди наверняка знают, что такое каждые пять минут обновлять баланс и зачастую делать какие-то поспешные, и потому неверные, торговые решения). Потому было решено переложить все на робота, удалить приложения по просмотру курсов с телефона и начать спать спокойно. Потратив много времени на написание чего-то более или менее работающего, хочу дать читателю маленькое overview, с чего стоит начинать на этом веселом (и нервном) поприще, как алготрейдинг. Этот гайд не является призывом начинать торговлю, не содержит советов по инвестированию, преследуются исключительно образовательные цели.
Откровения аварийного инженера
![image](https://habrastorage.org/getpro/habr/post_images/82c/a9e/f3a/82ca9ef3ac2cfd241ab90aa8f4ce4017.png)
Или как сэкономить 15% и более от бюджета на разработку
Я профессионально работаю с Unreal Engine уже более 9 лет. За это время я освоил множество специальностей и занимал разные должности в разработке игр: от разработчика-«пехотинца» до менеджера больших команд разработчиков игр и даже консультировал инвесторов игровых компаний.
В последнее время я работаю на себя, но время от времени предлагаю экстренные услуги «тушения пожаров» своим клиентам, которые находили меня по сарафанному радио. Сложно объяснить, в чём конкретно заключаются эти услуги, но больше всего они похожи на работу аварийного сантехника. Вы точно не захотите оказаться в такой ситуации, когда приходится его вызывать.
Если у игровой компании в Лос-Анджелесе появляется проблема с Unreal Engine 4, которую никто не может решить, в конце концов звонят мне. Я пишу эту статью, чтобы объяснить, почему мне звонят, как избежать необходимости таких звонков, и что я обычно делаю, получив такой звонок.
Большинство проблем разработки игр хорошо понятно тем, кто находится «в траншеях», но эти проблемы пролетают над головами менеджеров и руководства. Кроме того, похоже, подобные статьи читают только люди из траншей на передовой, а не те, кому они действительно необходимы.
Мифы о кэше процессора, в которые верят программисты
Вы можете удивиться: зачем же разработчику ПО думать о механизме кэширования в CPU? Отвечу. С одной стороны, многие понятия из концепции когерентности кэша непосредственно применимы в распределённых системах и на уровнях изоляции СУБД. Например, представление реализации когерентности в аппаратных кэшах помогает лучше понять разницу в моделях согласованности (консистентности) — отличие строгой согласованности (strong consistency) от согласованности в конечном счёте (eventual consistency). У вас могут появиться новые идеи, как лучше обеспечить согласованность в распределённых системах, используя исследования и принципы из аппаратного обеспечения.
С другой стороны, неправильные представления о кэшах часто приводят к ложным утверждениям, особенно когда речь идёт о параллелизме и состоянии гонки. Например, часто говорят о трудности параллельного программирования, потому что «у разных ядер в кэшах могут быть разные/устаревшие значения». Или что квалификатор volatile в языках вроде Java нужен, чтобы «предотвратить локальное кэширование общих данных» и принудительно «читать/записывать только в основную память».
TeamLead — наше все: самые популярные доклады с HighLoad++ 2017. Часть 1
Для этого обзора мы выбрали восемь наиболее популярных выступлений.
![](https://habrastorage.org/webt/hv/or/de/hvordetz_eitzusulqqgpug_nfi.jpeg)
40-летний таксист из Тамбова стал программистом
![](https://habrastorage.org/webt/dp/fc/dw/dpfcdw9colk0qcxwdvncxfaagc4.jpeg)
Здравствуйте! Меня зовут Игорь, сейчас мне 45 лет, и я старший программист в IT-компании среднего размера. Хочу рассказать вам мою историю про то, как я стал программистом 5 лет назад. Родился я в Тамбове в 1972 году, отучился в обычной школе, а потом течением жизни занесло меня в медицинский колледж, который я по семейным обстоятельствам не закончил. К тому времени СССР развалился, пришлось срочно искать источники дохода, и я начал работать в таксопарке. Таксистом я проработал 90-е, 2000-е и начало 10-х, к тому времени женился, обзавелся тремя детьми и таксовал уже на личной машине, а не на машине таксопарка. Таксовать с каждым годом было все труднее из-за демпинга и конкуренции. Перепробовал все таксопарки и агрегаторы, работать приходилось по 11 часов в день, а в месяц чистыми получал 45 тысяч, из которых сам тратился на бензин и автосервисы, оплачивал ДТП. К этому добавим и ненадежных клиентов, которые отменяли вызов и отказывались за него платить.
[DotNetBook] Реализация IDisposable: правильное использование
![](https://habrastorage.org/webt/vh/7j/tq/vh7jtqhzbne4h3rjhprca2pruhu.png)
Disposing (Disposable Design Principle)
Сейчас, наверное, практически любой программист, который разрабатывает на платформе .NET, скажет, что ничего проще этого паттерна нет. Что это известный из известнейших шаблонов, которые применяются на платформе. Однако даже в самой простой и известнейшей проблемной области всегда найдется второе дно, а за ним еще ряд скрытых кармашков, в которые вы никогда не заглядывали. Однако, как для тех, кто смотрит тему впервые, так и для всех прочих (просто для того, чтобы каждый из вас вспомнил основы (не пропускайте эти абзацы (я слежу!))) — опишем все от самого начала и до самого конца.
IDisposable
Если спросить, что такое IDisposable, вы наверняка ответите что это
public interface IDisposable
{
void Dispose();
}
Для чего же создан интерфейс? Ведь если у нас есть умный Garbage Collector, который за нас чистит всю память, делает так, чтобы мы вообще не задумывались о том, как чистить память, то становится не совсем понятно, зачем ее вообще чистить. Однако есть нюансы.
Примечание
Глава, опубликованная на Хабре не обновляется и возможно, уже несколько устарела. А потому, прошу обратиться за более свежим текстом к оригиналу:
CLR Book: GitHub, оглавление
CLR Book: GitHub, глава
Релиз 0.5.2 книги, PDF: GitHub Release
![](https://habrastorage.org/getpro/habr/post_images/97f/1d3/cf0/97f1d3cf0e2a6bf007066eb60a789c31.png)
Concurrency паттерны в Rust из Java
Под катом находятся заметки, в которых расписано, как реализовать в Rust хитрые concurrency паттерны, которые я с легкостью пишу в Java, и в чем различие в подходах к concurrency у этих языков. Статья будет полезна и тем, кто переходит на Rust из C#, ведь у него аналогичная модель памяти.
Истинная реализация нейросети с нуля на языке программирования C#
Здравствуй, Хабр! Данная статья предназначена для тех, кто приблизительно шарит в математических принципах работы нейронных сетей и в их сути вообще, поэтому советую ознакомиться с этим перед прочтением. Хоть как-то понять, что происходит можно сначала здесь, потом тут.
Недавно мне пришлось сделать нейросеть для распознавания рукописных цифр(сегодня будет не совсем её код) в рамках школьного проекта, и, естественно, я начал разбираться в этой теме. Посмотрев приблизительно достаточно об этом в интернете, я понял чуть более, чем ничего. Но неожиданно(как это обычно бывает) получилось наткнуться на книгу Саймона Хайкина(не знаю почему раньше не загуглил). И тогда началось потное вкуривание матчасти нейросетей, состоящее из одного матана.
Microsoft не изолировала Windows Defender в песочнице, так что это сделал я
В качестве PoC (proof-of-concept) я изолировал Windows Defender, а сейчас выкладываю свой код в открытый доступ как Flying Sandbox Monster. Основа Flying Sandbox Monster — это AppJailLauncher-rs, фреймворк на Rust для помещения ненадёжных приложений в AppContainers. Он также позволяет вынести I/O приложения за TCP-сервер, чтобы приложение в песочнице работало на полностью другой машине. Это дополнительный уровень изоляции.
В статье я опишу процесс и результаты создания этого инструмента, а также выскажу свои мысли о Rust на Windows.
Пишем Telegram-бота на Rust, который будет запускать код на… Rust?
Доброй ночи! Сегодня хотелось бы кратко рассказать о том, как написать Telegram-бота на Rust, который будет запускать код на Rust. У статьи нет цели произвести полное погружение в API telegram_bot, Serde, Telegram или в нюансы разработки на Rust. Она скорее носит ознакомительный характер. Числа Пеано с помощью системы типов складывать не будем.
Мониторинг работы windows-службы с помощью Zidium
Зачем мониторинг?
Сначала о том, что такое мониторинг и зачем вообще он нужен. Был у меня заказ на приложение, которое должно собирать данные с нескольких систем, выполнять аналитику, и отправлять данные в систему отчётов. Приложение я реализовал в виде windows-службы, развернул на хостинге. Заказчик передал дальнейшее сопровождение службы мне на аутсорс, то есть я отвечаю за её работоспособность и за исправление ошибок.
Но возник вопрос — как мне отслеживать возможные проблемы со службой?
Что, если служба остановится из-за внутренней ошибки или зависнет? Я об этом не узнаю, пока заказчик не предъявит мне претензию, что данные несколько дней не обновлялись. Кроме того, мне нужны данные о случающихся ошибках, логи для анализа и т.п.
Конкурентность: Кооперативность
Я продолжаю свой небольшой цикл статей относительно средств организации и реализации конкурентных вычислений.
В прошлой статье мы посмотрели на абстракцию потоков, позволяющую делать вид, что код функций выполняется одновременно и непрерывно.
В этой мы посмотрим на ещё две модели, одна из которых не делает такого вида, а вторая смотрит на конкурентные вычисления с более абстрактной стороны.
- Параллелизм (часть 1)
- Кооперативность (часть 2, текущая)
- Асинхронность (часть 3)
Конкурентность: Параллелизм
В этой статье мне хотелось бы задокументировать всё, что я знаю о том, какие средства можно использовать для эффективного использования вычислительных ресурсов систем и/или удобства разработки.
И, надеюсь, кому-нибудь это может оказаться полезно, ибо кто-нибудь может чего-нибудь не знать, или, наоборот, окажется полезно мне, если кто-нибудь покажет что-нибудь ещё/укажет на изъяны в моих знаниях.
- Параллелизм (часть 1, текущая)
- Кооперативность (часть 2)
- Асинхронность (часть 3)
Как платить программистам меньше
«Производительность – это фича». Интервью с Марко Чеккони, Stack Overflow
![](https://habrastorage.org/files/ac1/2f4/632/ac12f46328c8499fbbff8b74231f7dd1.png)
На протяжении многих лет одним из главных вопросов, связанных с приложениями на .NET, был вопрос производительности. Одна из самых первых статей на эту тему датирована еще 2001-м годом.
Тема не теряла актуальности более 10 лет, и в 2011 люди все еще задают вопросы в поисках лучшего инструмента для профилировки.
О том, что все это значит для современной .NET-разработки и какие инструменты для обеспечения максимальной производительности использует крупнейшее сообщество разработчиков в мире, мы решили поговорить с перфоманс-инженером Stack Overflow Марко Чеккони.
![](https://habrastorage.org/files/d28/561/2a9/d285612a93d14c8fa7af72796fd1e28d.jpeg)
– Вы работаете в Stack Overflow, можете назвать основные «болевые точки» вашего проекта с точки зрения производительности?
– Их две: с одной стороны, нам надо быть очень-очень аккуратными при инстанцировании объектов и в работе со сборкой мусора, а с другой, нам нужно не меньше внимания уделять тому, как мы используем SQL-сервер, пишем SQL-запросы, строим таблицы и т.п.
На данный момент это два основных аспекта, которым мы уделяем максимальное внимание, и которые больше всего влияют на производительность.
– Ваше решение построено полностью на С#, или есть части на других языках, типа C++, Java, Python или других?
ZeroNet — По настоящему распределенная сеть: Социальная сеть,Wiki движок (изменения за полгода)
В этом выпуске:
- Какие изменения были в ядре
- ZeroWiki — распределенная википедия
- Распределенная соц-сеть (больше похожа на твиттер, но без ограничения символов)
- Локализация+русификация и пусть никто не уйдёт обиженным
- Сборки сети для удобной установки в один клик
- Что не хватает сети?
- Что будет дальше
Information
- Rating
- Does not participate
- Location
- Cary, North Carolina, США
- Registered
- Activity