heap.tech
лаборатория велосипедов
×
26 октября 2018
В ходе разработки одного онлайн-сервиса мне нужно было организовать прием денег от населения с максимально большим количеством способов платежей и, главное, чтобы просто и быстро. Еще одним значимым фактором является то, что сервис работает не как юридическое лицо (или ИП), а как физическое. То есть физическое лицо будет принимать деньги от физических или юридических лиц. Такой вариант работы – временный, так как регистрировать ип или ооо накладно как по времени, так и по деньгам (юридические аспекты я опишу в следующей статье).

Суть задачи


- Разработать функционал приема платежей с использованием
- пластиковых карт visa/mastercard/мир
- платежных систем яндекс.деньги/webmoney/qiwi
- терминалов оплаты

- Зачисление средств должно проходить в течении 10 минут (максимум) после факта оплаты
- Платформа .Net core 2 – 2.1
09 июля 2018
Каждый сайт можно характеризовать по трем пунктам: удобный, полезный, быстрый. Первые две характеристики достаточно субъективные, и их достаточно сложно измерить. Но, в отличие от удобства и полезности, скорость работы сайта можно вполне точно измерить. Более того, скорость работы сайта имеет наибольший вес – если сайт крайне удобный и очень полезный, но медленно работает, реакция пользователя уже не будет такой медленной - он поспешит закрыть вкладку так быстро, как только может.
Еще скорость отклика, или работы сайта, сильно влияет на поисковую выдачу. На самом верху располагаются сайты, которые обрабатывают запросы быстрее, разумеется, при прочих равных условиях.
В итоге получается, что скорость работы сайты – очень критичный показатель, оказывающие наибольшее влияние и лояльность аудитории.
11 марта 2017
В прошлой статье я описывал реализацию OAuth протокола Twitter, которая оказалась наиболее сложной из всех. Сложность заключается в создании дополнительного запроса для получения request-токена, это нулевой этап twitter oauth-flow. Далее каждый запрос к API должен иметь заголовок, содержащий тело всего запроса в зашифрованном виде. И, наконец, все заголовки каждого запроса должны быть упорядочены по алфавиту, это относится и к заголовку с зашифрованным телом запроса, в нем тоже все должно быть отсортировано и только после зашифровано.

В этой статье я расскажу как добавить на сайт кнопку авторизации с помощью GitHub, и подводных камнях, о которых не пишут в этих ваших интернетах
03 марта 2017
Уже давно хотел, даже мечтал, разобраться с протоколом OAuth и, конечно, добавить на сайт кнопку входа через социальные сети: vk, fb, twitter, instagram и иже с ними. В этих интернетах полно гайдов, примеров и реализаций, как хороших, так и не очень. В первую очередь я захотел добавить вход через twitter, нашел пару примеров, но ни один из них не захотел нормально работать. Challenge accepted.

Первое, что я сделал - залез на офф сайт в раздел для разработчиков, там нашел интересующий раздел - oauth. Вроде бы понятно написано, но как-то не очень. Кажется, что писали на скорую руку для тех, кто уже знает, что такое oauth и как работает. В итоге пришлось экспериментировать и додумывать самому.
22 января 2017
Рано или поздно у любого человека возникает вопрос о смене места работы. В этом нет ничего зазорного - логика большинства компаний, в этой стране, сводится к тому, что выращивать кадры не торт, проще взять вот этого парня с классной улыбкой и подвешенным языком. И пускай, что разговорчивый парень свинтит через 3 месяца, а Вася работает уже 5 лет, знает все бизнес-процессы от и до, и хочет нового горизонта задач.
В этой статье речь пойдет о актуальных тенденциях проведения собеседований и мейн-стриме вопросов, задаваемых повально.
21 января 2017
Какие принципы ООП вы знаете ? Это коронный вопрос, с которого начинается каждое собеседование IT-специалиста. Иногда вопрос усложняют, например, так – «любезный, расскажите мне, обычному человеку, далекому от программирования, что означает каждый из принципов так, чтобы я понял суть и стал богом программирования». Если вам задали такой вопрос, радуйтесь - есть шанс самоутвердиться морально раздавив интервьюера знаниями и опытом.
Ссылки на предыдущие уроки выживания
Массивы, коллекции, перечисления, foreach
Упаковка и распаковка (boxing, unboxing)
Принципы SOLID (СОЛИД)
13 декабря 2016
На собеседованиях любят задавать вопросы на тему как работают коллекции, про итераторы, индексаторы и вообще, какие типы можно использовать в цикле foreach. Практическая ценность таки вопросов стремится к 0 и они, на мой взгляд, задаются в двух случаях: чтобы проверить, насколько кандидат может логически рассуждать или завалить его. Увы, второй вариант встречается чаще, но мы то знаем, что на собеседованиях обычно спрашивают то, что узнали вчера.
Почему ценность этих знаний столь мала? Да просто - на практике необходимость реализации собственных коллекций, перечислений или массивов возникает чуть реже, чем никогда. В .Net уже реализовано все, что нужно для работы и даже больше – универсальные коллекции, перечисления, словари, хеш-таблицы, стек, да тысячи их.
В этой статье я опишу основные принципы коллекций и массивов в .Net с оглядкой на типовые вопросы на собеседовании. Это позволит поставить собеседующего в тупик и разорвать его нежные шаблоны в клочья.
21 ноября 2016
Пару месяцев назад я опубликовал статью о грядущих нововведениях в c# 7, какие-то вещи удалось рассмотреть достаточно детально, а по поводу других осталось больше вопросов, чем ответов. В этой статье я еще раз хочу сфокусироваться на новых фишках языка, благо на прошлой недели была трансляция connect() от MS.
Connect(); это такой meet-up для разработчиков, основной посыл - рассказать о новшествах в технологическом стеке Microsoft сообществу. Естественно меня заинтересовал блок о новых фичах в c# 7. Да, большинство из них я уже упоминал в прошлой статье, но есть и новые, о которых я ничего не слышал. Например деконструкторы. Еще более пристально удалось взглянуть на сопоставление с образом (pattern matching).
03 ноября 2016
Это вторая статья из цикла выживания на собеседованиях для IT-специалистов. На подавляющем большинстве собеседований, на которых мне посчастливилось побывать, мне задавали вопросы о том, знаю ли я что такое boxing и unboxing. Иногда беседа плавно перетекала в допрос с пристрастием о циклах. Еще реже вопросы о циклах перетекали в плоскость индексаторов и создания собственных коллекций. И наконец, самые стойкие рекрутеры, спрашивали про синтаксический сахар. В этой статье я опишу максимально подробно процесс боксинга и анбоксинга, немного затрону циклы. Про то, как устроены индексаторы, энумераторы, создание собственных коллекций я обязательно расскажу в будущих статьях, вопросы подобного типа совсем не редкость.
23 сентября 2016
Мир устроен так, что если, кто-то придумал какую-то идею, пусть бредовую, но с крутым заголовком и подкрепленную мощным, но бредовым, исследованием - то каждый стремится поскорее скопирастить её. Одними из самых ярких представителей умелой копирастии - рекрутинг спецов. Поэтому опытный специалист, услышав вопрос типа "почему мы должны нанять именно вас ?", или задачи "почему люки круглые", "сколько нужно поездов, чтобы люди ждали поезда не более трех минут" или "сколько мячиков для гольфа уместятся в одном автобусе" выходит в окно просит перейти к более значимым вопросам. Все эти вопросы и ответы изжеваны овер9000 раз и рассматривать их смысла нет.
В этой статье я сделаю акцент на вопросе "Что такое принципы SOLID ?", он задается в 8 из 10 компаний. Но мы то знаем, что обычно на собеседованиях спрашивают то, что выучили вчера.
24 августа 2016
С момента прошлой публикации прошло чуть менее, чем два месяца. Но за это время бот резко изменился и дошел до состояния stable. Я переработал огромную кучу кода, добавил новые крутые фишки, отладил тонкие места и бился над улучшением производительности. Именно на нее я убил порядка 30 процентов всех сил и времени. Зато теперь бот работает и делает это шустро и стабильно.
Но самое главное - мне удалось прикоснуться к конкурсу. Поверхностно. Мельком. Но всеже )

Подробнее внутри
07 июля 2016
В прошлой статье я описал свою идею бота под платформу мессенджера telegram, целью которого помогать в изучении иностранных языков. В этой статье я хочу описать то, что было сделано и поделиться успехами. С момента написания первой части статьи прошло около двух месяцев, поэтому материала достаточно.
На текущий момент, а сегодня утром было прохладное 7 июля 2016 года, готов сам бот и интерфейс для управления его знаниями.

Поехали!
28 апреля 2016
Уже достаточно давно занимаюсь английским, ну как занимаюсь, скажем посещаю курсы. Каждый раз после занятий выхожу с мыслями ну всё, настало мое время – сделаю всю домашку, повторю грамматику прошлых лекций и вызубрю новые слова. Но благодаря лени, интернету и котикам я делаю дома чуть больше, чем ничего. Плюсом ко всему зубрить домашку это скукота, а качать темного эльфа 80-левела гораздо интереснее.

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

Что нужно? Да всего ничего - накидать простенькое приложение под iOS \ Android, которое сможет хранить некоторую базу слов и каждый раз напоминать о том, что ученье - свет. Но опять же лень - приложение пусть и простое, но для его работы нужно создать over9000 других вещей. Например, хранилище слов, интерфейс для их добавления, сервис тосующий слова, сервис отправки выбранных слов на приложение, обработчик ответов и чата в целом, наконец, приложение, хотя-бы под одну платформу и, понятное дело, свой протокол передачи данных с гипертекстом и заголовками (очевидно, что http-транспорт с websoket, rest или еще чего).

Уже начал что-то делать, сходил за чебупелями на месяц, набросал требования, спецификации, ну и продумал кое-какие механизмы и, кажется даже, успел что-то накропал
22 мая 2016
Недавно решал задачу с нотами и поэтессами веб-формой и полем для ввода (textarea). Нужно ограничивать количество введенных символов в текстовое поле в зависимости от условий. Например один пользователь может написать 1000 символов, другой только 100, а третий вообще без ограничений. Плюс должно быть окошечко, которое отображает кол-во уже введенных и кол-во символов, которое можно еще ввести.
Все как обычно, лейбл, текстареа, форма, кнопка, овер9000 раз такое делал, пара минут и готово. Проверяю. Ввел 100 символов (допустимый предел кол-ва символов), нажимаю submit. Ну вроде бы все ок, работает. Данные пришли на сервер, опять проверяю кол-во символов и БАЦ! Длинна полученной строки равна 116 символам!
- Кодировки, фронтенд 8-битный utf, бекенд 32 ? Не может быть, какая разница сколько бит на символ, считаю именно символы.
- В текстовое поле дописывается что-то при пост-запросе ? Опять нет
12 апреля 2016
Неделю назад, если точнее, то первого апреля с 30 по 31 марта сего года, состоялась презентация новых фишек компилятора c# и самой студии. Презентация прошла весело и без факапов. Во многом благодаря отличным ведущим (Torgersen и Campbell).

Количественный и качественный объем нововведений меня очень обрадовал, язык активно развивается, впитывая в себя крутые фичи. Более того, разработчики майрософт прислушиваются к dev-комьюнити и запиливают наиболее востребованные штуки. И, похоже, что с этим они отлично справляются, так держать!

Итак, светлое будущее уже здесь!
29 марта 2016
Уверен, что почти каждый администратор ресурса в какой-то момент понимал, что ему необходимо оперативное оповещение пользователей. Оповещение по емейл это круто, но когда нужна оперативность - вариант не подходит. Еще можно отправлять сообщения на вайбер, ватсап, телеграм, скайп, аську, вконтакте и еще овер 9000 мессенджеров. К тому-же кто-то пользуется вайбером, кто-то скайпом, а параноик Василий вообще сидит в ТОХ. Поэтому функционал оперативных сообщение через мессенджеры для конкретного пользователя - нереально. Самый простой и лучший вариант это СМС-оповещения. Сейчас у каждого школьника, старше первого класса, есть айфон.

Значит нужно прикручивать отправку СМС на любимый портал. Цель такого функционала может быть любой, от паролей по СМС, оповещений или поздравлений до спама грандиозных рекламных кампаний.
18 марта 2016
В двух предыдущих статьях я рассказывал что такое алгоритмы и привел примеры реализации двух алгоритмов сортировки: сортировка пузырьком с сортировка выбором (перебором). Это простые алгоритмы, но вместе с тем они работают достаточно быстро, хотя алгоритм сортировки выбором в любом случае имеет одно и тоже количество сравнений и перестановок.

В этой статье я хочу рассмотреть алгоритм сортировки вставкой (insertion sorting). Числа постоянно вставляются в начало (или в конец, если сортировка по убыванию), сдвигая остальные ячейки на одну.

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

Пришло время двигаться вперед, в этой статье речь пойдет о сортировке массива выбором (или перебором, как больше нравиться).
16 февраля 2016
Каждый программист должен изобрести собственный велосипед или хотя-бы добавить костыль в чужой и, естественно, назвать это идеальным кодом.
Если рассматривать велосипед как средство передвижения, а каждого программиста как проектировщика - то каждый проектировщик хочет сделать свой велосипед круче, чем у других. Он будет стремиться сделать более эргономичную раму, удобное сиденье трещотку на спицы, чтобы как мопед звучал и т.д. Но сам принцип работы велосипеда, основные узлы, например, колесо, подшипники, принцип работы переключателя скоростей, тормоза - неизменны. Это базовые принципы, они были изобретены и отлажены такими-же мастерами велостроения задолго до появления нашего программиста-проектировщика, поэтому необходимости придумывать круглое колесо и цепную передачу у него нет.
Тоже и в программировании - есть базовые фичи, облегчающие жизнь при создании новой программы. Это может быть выборка чего-то из чего-то, поиск и исключение дубликатов, сортировка, группировка, сборка мусора и т.д. Все эти фичи позволяют упростить создание программы, но редко кто задумывается, а как именно работает, например, сортировка массива в прямом или обратном порядке.
27 января 2016
За свою бытность в качестве разработчика овер9000 раз я слышал вопрос «как стать программистом». Слышал его от совершенно разных людей. Правда, вопрос не всегда звучал в точности так, как в заголовке. Обычно диалог тактично – по-пацански подводится к основному вопросу трудоустройства на ЗП минимум в 3 зарплаты в макдональдсе и главное сразу.
- Я не знаю, кем хочу работать, но ЗП точно хочу большую. А ты кем работаешь, программистом ? Слушай, я тоже хочу, вашей компании нужны программисты ?
Отвечаешь, что да, нужны, и не только нам, а еще и многим другим компаниям тоже нужны. Не успев договорить, получаешь ответ – «берите меня, я ничего не знаю, но платите мне и я научусь, там учиться то нечему». Если кинуть фразу «а может лучше сначала что-то поучить, а потом приходить устраиваться» то, поздравляю, у %username% появится кровный враг. Плохой, плохой %username%, не взял к себе на работу за глаза, а еще друг называется!
Это нормальная практика, дожившая до нас со времен совка. Но даже тогда, людей с улицы просто так не назначали инженерами или конструкторами. Правда это уже не важно, вас захейтили и потерли из друзей в уютненьком.
21 января 2016
В прошлой статье я рассказал о том, что такое системы счисления, побитовые операторы и какими они бывают. Статья получилась достаточно емкой, но не было главного – для чего, как и где это все можно использовать. Во второй части статьи я заполню этот пробел примерами использования. Даешь больше примеров! Примеры я постарался привести не академические, то есть, применимые в больших и не очень проектах.

Поехали!
вперед