Как стать автором
Обновить
-1
0

Пользователь

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

Что не показывает аналитика в Тинькофф Инвестициях. Подробно разбираем свой портфель

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

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

Текущая аналитика брокера показывает только открытые позиции, а профиль в "пульсе" подсчитывает лишь общий процент, без конкретики. Это не дает возможность увидеть «настоящую» картину своего портфеля.

К примеру, покупаем 1 акцию по 1000, после падения до 900 усредняем еще одной акцией. Затем при отскоке до 950 продаем 1 акцию. В итоге оставшаяся акция в портфеле "горит зеленым" (образуется плюс +50 по правилу fifo), хотя фактический результат бумаги на данный момент будет 0 (без учета комиссий). Такое отображение бумаг в приложении может сбить с толку, и привести к неправильным решениям и большим потерям, при совершении множества сделок.

Идея вести дневник сделок в excel, или периодически копаться в налоговом/брокерском отчете, мне не понравилась. Зато приглянулась мысль - обрабатывать данные полученные из официального API.

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

В статье я продемонстрирую, как пользоваться созданным инструментом, и какие задачи решаются. Подсвечу некоторые особенности данных полученных из API.

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

Как DRYить модели

Время на прочтение5 мин
Количество просмотров17K
В большинстве рельсовых проектов основная концентрация кода приходится на модели. Все наверняка читали про Slim controllers & fat models и стараются впихать в модели как можно больше, а в контроллеры как можно меньше. Что ж, это похвально, однако в стремлении утолстить модели многие часто забывают про принцип DRY — don't (fucking) repeat yourself.

Я тут постараюсь вкратце расписать, как в районе моделей и рыбку съесть, и про DRY не забыть.

Читать дальше →
Всего голосов 64: ↑60 и ↓4+56
Комментарии22

Пишем простейший GitHub Action на TypeScript

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

Недавно я решил немного привести в порядок несколько своих .NET pet-проектов на GitHub, настроить для них нормальный CI/CD через GitHub Actions и вынести всё в отдельный репозиторий, чтобы все скрипты лежали в одном месте. Для этого пришлось как следует изучить документацию, примеры и существующие GitHub Actions, выложенные в Marketplace.

В данной статье я решил собрать самую основную информацию, которая нужна для того, чтобы написать простейший GitHub Action с использованием TypeScript.

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

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

Классические алгоритмы генерации лабиринтов. Часть 2: погружение в случайность

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


Предисловие


Первая часть

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

В этой части мы поговорим о том, что же такое случайная и псевдослучайная генерации, какие алгоритмы могут дать нам равновероятно ничем не похожие друг на друга лабиринты и в чем их минусы. Героями нашего сегодняшнего приключения станут алгоритм Уилсона и алгоритм Олдоса-Бродера для создания случайного остовного дерева (Uniform Spanning Tree). ОСТОРОЖНО ТРАФИК.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии25

Классические алгоритмы генерации лабиринтов. Часть 1: вступление

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


Предисловие


На написание статьи меня сподвигло практически полное отсутствие материалов на русском языке про алгоритмы генерации лабиринтов. На Хабре, из того, что вообще есть по теме, можно отметить две статьи: раз и два. Ценность и пользу из которых несет лишь вторая. В первой – просто перевод формального алгоритма и небольшое его пояснение. Что, конечно, неплохо, но очень скудно и не вызывает желания изучать тему дальше.

Если моя статья Вам понравится, я продолжу писать о различных алгоритмах. Мы рассмотрим два самых примитивных и простых случая – генерация двоичного дерева и Сайдвиндер, который, по своей сути, просто чуть измененная версия двоичного дерева с одним заметным плюсом. ОСТОРОЖНО ТРАФИК.
Читать дальше →
Всего голосов 68: ↑68 и ↓0+68
Комментарии35

Тестирование API с использованием Postman и Excel

Время на прочтение4 мин
Количество просмотров49K
Всем привет, я руководитель отдела тестирования, и недавно по работе появилась задача на тестирование API. Для ее решения освоил новый для меня инструмент Postman и JavaScript.

Первоначально на каждый API я писал свои коллекции и готовил тестовые данные в JSON формате. Это достаточно удобно, но при большом количестве тестов и коллекций поддерживать это становится накладно. Да и проводить валидацию данных в JSON не удобно.

Для решения этих проблем я написал макрос для Excel и коллекцию в Postman. Теперь в Postman у меня одна коллекция на все API и стандартный набор функций для обработки входящих данных и валидации возвращаемых результатов. Мне удалось перенести управление тестовыми данными и последовательность выполнения запросов в Excel.

Что было


1. JSON с данными


Раньше тестовый набор хранился в таком виде
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии37

Как проводить код-ревью

Время на прочтение18 мин
Количество просмотров52K
Из документации Google's Engineering Practices

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


См. также Руководство автора CL, в котором даются подробные советы разработчикам, чьи коммиты проходят ревью.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии17

Чему я научился у ведущего программиста

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

Год назад я начал работать на полную ставку в Bloomberg. И тогда же задумал написать эту статью. Я думал, что буду полон идей, которые смогу выплеснуть на бумагу, когда придёт время. Но уже через месяц понял, что всё будет не так просто: я уже начал забывать то, чему научился. Либо знания настолько хорошо усвоились, что мой разум заставил меня поверить, будто я всегда это знал, либо они просто вылетели у меня из головы.1

Это одна из причин, по которой я начал вести дневник. Каждый день, попадая в интересные ситуации, я описывал их. И всё благодаря тому, что я сидел рядом с ведущим программистом. Я мог вблизи наблюдать за его работой, и видел, насколько она отличается от того, что сделал бы я. Мы много программировали вместе, что ещё больше облегчало мои наблюдения. Более того, в нашей команде не осуждается «подглядывание» за людьми, пишущими код. Когда мне казалось, что происходит что-то интересное, я поворачивался и смотрел. Благодаря постоянным вставаниям я всегда был в курсе происходящего.

Я год просидел рядом с ведущим программистом. Вот чему я научился.
Всего голосов 86: ↑80 и ↓6+74
Комментарии37

Блокировки в PostgreSQL: 3. Блокировки других объектов

Время на прочтение15 мин
Количество просмотров26K
Мы уже поговорили о некоторых блокировках на уровне объектов (в частности — о блокировках отношений), а также о блокировках на уровне строк, их связи с блокировками объектов и об очереди ожидания, не всегда честной.

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

Взаимоблокировки


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

Визуально взаимоблокировку удобно представлять, построив граф ожиданий. Для этого мы убираем конкретные ресурсы и оставляем только транзакции, отмечая, какая транзакция какую ожидает. Если в графе есть контур (из вершины можно по стрелкам добраться до нее же самой) — это взаимоблокировка.


Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии11

Закон Паркинсона и как его нарушить

Время на прочтение2 мин
Количество просмотров28K
«Работа заполняет время, отпущенное на неё».
Закон Паркинсона

Если ты не британский чиновник образца 1958 года, не надо следовать этому закону. Никакая работа не обязана занимать всё отведённое на неё время.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии12

Доступное объяснение алгоритма коллапса волновой функции

Время на прочтение9 мин
Количество просмотров34K
Алгоритм коллапса волновой функции (Wavefunction Collapse Algorithm) учит компьютер импровизировать. На входе он получает архетипичные данные и создаёт процедурно генерируемые данные, похожие на исходные.


(Источник)

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


(Источник)

Коллапс волновой функции — это очень независимо мыслящий алгоритм, не требующий практически никакой помощи или инструкций извне. Вам нужен только пример стиля, которого нужно достичь, а всё остальное он сделает сам. Несмотря на свою самодостаточность, он на удивление прост. Он не использует никаких нейронных сетей, случайных лесов или чего-то другого, похожего на машинное обучение. Если разобраться с идеей, он станет для вас очень понятным и интуитивным.

Большинство реализаций и объяснений коллапса волновой функции — это полная, оптимизированная по скорости версия алгоритма. Разумеется, все они важны и необходимы, но в них сложно разобраться с нуля. В этом посте я буду объяснять всё понятным я простым языком, сосредоточившись на версии Wavefunction с ограничениями, которую я назвал Even Simpler Tiled Model. Кроме того, я выложил пример реализации ESTM на Github. Код в нём неэффективный и медленный, но очень хорошо читаемый и подробно прокомментирован. Как только вы разберётесь в технологии, лежащей в основе ESTM, то станете ближе к пониманию более сложных версий алгоритма. Если хотите понять алгоритм коллапса волновой функции, то эта статья будет хорошим началом.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии19

Как дойти до Северного полюса от дрейфующей базы Барнео

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

Выброска группы на льдину.

Это пост по запросу Palomnik и тех, кто его поддержал — «Как добраться до Северного полюса на лыжах» после истории про собак, которых выводили для северных условий.

Лыжные экспедиции (а также на собаках и прочие) стартуют с российской дрейфующей базы Барнео. Фактически каждый год она строится заново на три недели в апреле, пока позволяет погода, на 89-й параллели северной широты. Выбирается подходящая крупная льдина, на ней берутся пробы для определения прочности и толщины льда, затем туда сбрасываются с самолёта люди и техника для расчистки взлётной полосы и всё необходимое для строительства базы из каркасных и надувных палаток.

На три недели Барнео становится туристическим и научным центром (здесь проводятся арктические исследования) и аэродромом для «Чебурашек» — Ан-74. Именно этот транспортник используется для взлёта в условиях до -60 °C с галечных и ледовых необорудованных аэродромов. На самой базе есть вертолёты Ми-8, которые позволяют забрасывать группы путешественников на маршруты и возвращать их на Барнео из точки Северного полюса. Связь базы с большой землёй — только через рейсы Ан-74.

Поскольку в регионе нет других более близких к полюсу баз (ближайшие точки старта — острова Шпицбергена, российский мыс Арктический в архипелаге Северная Земля, северная оконечность Канады, север Гренландии), на Барнео собирается около сотни человек из разных стран. Большинство приезжают, чтобы под руководством гидов пройти на лыжах от последнего градуса широты до Северного полюса — это 100-110 км. То есть можно заказать такой коммерческий поход.
Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии32

Структурирование React-приложений

Время на прочтение16 мин
Количество просмотров65K
Материал, перевод которого мы сегодня публикуем, раскрывает подходы, применяемые его автором при структурировании React-приложений. В частности, речь здесь пойдёт об используемой структуре папок, об именовании сущностей, о местах, где располагаются файлы тестов, и о других подобных вещах.

Одна из наиболее приятных возможностей React заключается в том, что эта библиотека не принуждает разработчика к строгому соблюдению неких соглашений, касающихся структуры проекта. Многое в этом плане остаётся на усмотрение программиста. Этот подход отличается от того, который, скажем, принят во фреймворках Ember.js или Angular. Они дают разработчикам больше стандартных возможностей. В этих фреймворках предусмотрены и соглашения, касающиеся структуры проектов, и правила именования файлов и компонентов.



Лично мне нравится подход, принятый в React. Дело в том, что я предпочитаю контролировать что-либо сам, не полагаясь на некие «соглашения». Однако много плюсов есть и у того подхода к структурированию проектов, который предлагает тот же Angular. Выбор между свободой и более или менее жёсткими правилами сводится к тому, что именно ближе вам и вашей команде.

За годы работы с React я испробовал множество различных способов структурирования приложений. Некоторые из применённых мной идей оказались более удачными, чем другие. Поэтому здесь я собираюсь рассказать обо всём том, что хорошо показало себя на практике. Я надеюсь, что вы найдёте здесь что-то такое, что пригодится и вам.
Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии13

Биотехнологии омоложения реальны и неизбежны

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

Что такое старение? Мы можем определить его как процесс накопления молекулярных и клеточных повреждений, являющихся следствием нормального метаболизма. В то время как исследователи всё ещё плохо понимают, как метаболические процессы вызывают накопление повреждений, и как накопленные повреждения вызывают патологии, сами повреждения – структурные различия между старой и молодой тканью – классифицированы и изучены очень хорошо. Исправляя повреждения и восстанавливая прежнее – неповреждённое – юное состояние организма, мы реально омолодим его! Звучит очень многообещающе, и так оно и есть. И для некоторых видов повреждений (например, для сенесцентных клеток) показано, что оно работает!

Сегодня в нашей виртуальной студии где-то между холодным дождливым Санкт-Петербургом и тёплым солнечным Маунтайн Вью мы вновь встречаем Обри де Грея. Для тех из вас, кто не знаком с ним, ниже краткая информация.
Читать дальше →
Всего голосов 39: ↑25 и ↓14+11
Комментарии21

Трой Хант: 10 личных финансовых уроков для профессионалов в информационных технологиях

Время на прочтение33 мин
Количество просмотров7.3K
Предисловие к русскому переводу

Трой Хант, эксперт по кибер-безопасности, региональный директор Microsoft в 2016 году, основатель такого ресурса как Have I Been Pwned?, курсов Pluralsight. Его статья «10 личных финансовых урока для профессионалов в информационных технологиях» срезонировала с моими взглядами. Тем более, что незадолго до ее написания я начал работать в ИТ-сфере в качестве специалиста по тестированию ПО, и тезисы в статье с большой степенью точности формулируют мои собственные представления и взгляды. Поэтому мне захотелось перевести эту статью, во-первых, для себя, а во-вторых, для людей, которые также хотят жить, не отказывая себе в том, что для них важно.

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

Далее и ниже перевод оригинальной статьи Троя.

31 декабря 2018 года
Терпение.
Бережливость.
Жертвование.
Если отсеять шелуху, что эти три слова будут иметь общего? Общее – это выбор.
Деньги – это не образ мыслей.
Деньги – это не счастье.
Деньги, по своей сути, мера выбора человека.

Это видео часть открытого монолога серий Ozark, и когда я впервые услышал его, я тут же остановил его и запостил у себя в блоге. Этот пост зрел много лет, я начал делать наброски около 5 лет назад. Я накидывал в него маленькие кусочки год за годом, но не заканчивал его, потому что просто момент был не подходящий. Пост был окончательно оформлен после обдумывания реакции на следующий твит:
Всего голосов 17: ↑14 и ↓3+11
Комментарии12

Чтение на лето: книги для технарей

Время на прочтение5 мин
Количество просмотров56K
Мы собрали книги, которые рекомендуют своим коллегам по цеху резиденты Hacker News. Здесь нет справочников или руководств по программированию, зато есть любопытные издания о криптографии и теоретической информатике, об основателях IT-компаний, есть и научная фантастика, написанная разработчиками и о разработчиках — как раз то, что можно взять в отпуск.

Читать дальше →
Всего голосов 28: ↑23 и ↓5+18
Комментарии15

Введение в ECMAScript 6 (ES-2015)

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

Введение в ES6



Оглавление
1. Template literals
2. let and const
3. Arrow function expressions
4. For...of
5. Computed property names
6. Object.assign()
7. Rest parameters
8. Default parameters
9. Destructuring assignment
10. Map
11. Set
12. Classes
13. Promise
14. Iterators
15. Generators
16. Sumbol

Template literals (Template strings)


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

Шаблонные литералы заключены в обратные кавычки (` `) вместо двойных или одинарных. Они могут содержать подстановки, обозначаемые знаком доллара и фигурными скобками (${выражение}). Выражения в подстановках и текст между ними передаются в функцию. По умолчанию функция просто объединяет все части в строку. Если перед строкой есть выражение (здесь это tag), то шаблонная строка называется «теговым шаблоном». В этом случае, теговое выражение (обычно функция) вызывается с обработанным шаблонным литералом, который вы можете изменить перед выводом. Для экранирования обратной кавычки в шаблонных литералах указывается обратный слэш \.
Читать дальше →
Всего голосов 35: ↑25 и ↓10+15
Комментарии35

Как онлайн-турнир может отбить желание «доделать на следующей неделе»

Время на прочтение5 мин
Количество просмотров3.7K
Всем привет! Я хочу рассказать об онлайн-соревновании для проектов и стартапов, где я играю уже третий месяц с Loresome в качестве проекта. Это время было самым продуктивным и сфокусированным не только в жизни проекта, но и, наверное, вообще в моей жизни.

Краткое изложение статьи для тех, кому некогда: Pioneer — это онлайн-турнир похожий на хакатон, который никогда не кончается; вы пилите свой проект, каждую неделю пишете отчет размером в 280 символов, голосуете за других участников, получаете фидбек и заряд мотивации, общаетесь с другими игроками со всего мира в тематических чатах. Финалистов награждают различными бонусами и потенциальными инвесторами.

image
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии4

Датчик температуры и влажности на ардуино с отправкой и отрисовкой графика (Часть1)

Время на прочтение5 мин
Количество просмотров13K
Основной задачей проекта является мониторинг температуры в теплице удаленной от дома на 11-15 метров. Без возможности организации прокладки UTP и питания до нее.
Читать дальше →
Всего голосов 20: ↑15 и ↓5+10
Комментарии26

Генерация подземелий в Diablo 1

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

Diablo 1 — это классический roguelike 1996 года в жанре hack and slash. Это была одна из первых успешных попыток познакомить широкие массы с roguelike, которые до этого имели нишевую графику в виде ASCII-арта. Игра породила несколько сиквелов и множество имитаций. Она известна своей тёмной, мрачной атмосферой, сгущающейся по мере спуска игрока в подземелья, располагающиеся под городом Тристрам. Это была одна из первых для меня игр с процедурной генерацией карт, и возможность генерации столь правдоподобных уровней просто потрясла меня.

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

Благодарю Дэвида Бревика и команду Blizard North за создание такой потрясающей игры, а также galaxyhaxz и команду Devilution за их удивительную работу по восстановлению читаемого исходного кода проекта.
Читать дальше →
Всего голосов 75: ↑75 и ↓0+75
Комментарии29
1
23 ...

Информация

В рейтинге
5 053-й
Зарегистрирован
Активность