Получи случайную криптовалюту за регистрацию!

Code&Travel

Логотип телеграм канала @code_and_travel — Code&Travel C
Логотип телеграм канала @code_and_travel — Code&Travel
Адрес канала: @code_and_travel
Категории: Технологии
Язык: Русский
Количество подписчиков: 1.24K
Описание канала:

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

Рейтинги и Отзывы

3.00

3 отзыва

Оценить канал code_and_travel и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

1

2 звезд

0

1 звезд

1


Последние сообщения 2

2022-06-21 09:49:00
Кто вы?
Anonymous Poll
26%
Будущий программист Frontend, только учусь
10%
Junior Frontend
23%
Middle или Senior Frontend (и далее)
15%
Программист, но не Frontend
17%
Из ИТ, но не программист
9%
Уже забил на программирование
2%
Никогда программированием и не интересовался
9%
В поиске работы с релокацией
3%
Digital nomad (текущий или будущий)
9%
Любитель путешествий
116 voters227 views06:49
Открыть/Комментировать
2022-06-21 09:49:00 Ребята, кто вы?!

Мой блог существует с ноября далекого 2018, и если вы успели подписаться на него тогда, чтобы выучить основы программирования, то, должно быть, сейчас уже работаете устойчивым Middle или Senior.

А, может, вы вообще подписались на него ради путешествий, ведь тогда он носил название "Code&Travel" (и, надеюсь, вернет его в скором времени).

Или вы попробовали свои силы в программировании, осознали, что это - не ваше, и статьи по ИТ-темам вам больше не нужны.

Или вы - тот самый "вечный студент", которые учится всегда по чуть-чуть.

Помогите мне осознать, какое количество ИТ-статей приемлемо в этом блоге и какого уровня сложности. Для этого прошу вас проголосовать ниже)
228 views06:49
Открыть/Комментировать
2022-06-17 09:45:00 Когда вы работаете на старте проекта, у вас зачастую нет полноценных макетов. И некоторые дизайнерские решения приходится придумывать самому. Например, дизайнер сдал свою работу и разместил только кнопку «Отправить» на форме, а вам заказчик говорит добавить ещё и кнопку «Отмена», придумав для неё дизайн самостоятельно. Понятное дело, что она должна отличаться по цвету от «Отправить».

Для подобных ситуаций, когда нужно самостоятельно (без дизайнера) подобрать второй цвет, который будет хорошо смотреться с первым, я использую сайт https://colorscheme.ru. Там, где написано «RGB», задаёте свой текущий цвет и в переключалке «Контраст»/«Триада»/«Моно» и др. видите те цвета, которые будут гармонировать с главным.

Рубрика #полезные_ресуры
148 views06:45
Открыть/Комментировать
2022-06-14 09:48:00 Россия и иностранные карты

Всем известно, что из России ушли VISA и Mastercard. Переводы по Swift почти не работают (зависит от банка и страны). И вот уже два месяца, как я решаю проблему оплату покупок зарубежом.

В конце апреля я отправилась в Турцию для того, чтобы открыть карту зарубежом. Для этого потребовалось изучить форум Винского вдоль и поперёк. Почему Турция? Казахстан и Армения в середине апреля начали массово ужесточать условия открытия счета без ВНЖ, шансы там были 50/50.

В Турции успех зависит от того, во сколько (чем раньше, тем лучше), когда (в начале месяца больше шансов) и в какое отделение ты придёшь. Впечатление, что даже в рамках одного банка каждое отделение принимает решение само, на каких условиях открывать счёт нерезиденту. Я отправилась в DenizBank в Анталье в районе Лара.

Квест начался с поиска авиабилетов Москва-Анталья. Они стоили 50 000 руб туда-обратно вместо привычных 15 тысяч. Проблему удалось решить, взяв горящий тур в шикарном отеле за те же деньги. Правда, лететь нужно было завтра утром.

Для открытия счета банк требует турецкий инн (получается онлайн за 5 мин по загранпаспорту), перевод заграна на турецкий с заверением от нотариуса (делается в 10 мин пешком от отделения) и 30 000 лир, что по тем временам составляло 180 000 руб. (сейчас - 115 000 руб). Снять их можно в банкомате с карты Мир. Правда, большинство аппаратов выдают не более 8000 руб. в сутки, поэтому побеспокоиться об этом стоит заранее. Можно отправить себе через Золотую корону и получить наличку на месте.

Со всем собранным приходите в отделение и подписываетесь кучу документов на турецком. И, вуаля - у вас есть именная физическая карта и онлайн-приложение банка. Зарегать доступ можно на российский Билайн (другим операторам не приходят турецкие смски). А потом потребуется активировать оплату онлайн-покупок через сайт банка с компа.

Правда, через какое-то время вы обнаруживаете подставу. По турецким законам запрещены платежи более чем на 50$ (примерно) на сайтах без 3D-secure (когда вам не приходит смска для подтверждения). Т.е. на Booking и некоторых авиалиниях вы ничего забронить не сможете. Снимать можно не более 300$ в день, а с лимитами на онлайн-платежи даже с 3D-secure вообще ничего не понятно. Так, есть один очень тупой баг. У вас в приложении есть счёт в баксах (предположим на 2000$) и счёт в лирах. Вы ставите лимит, что тратить можете по 2000 баксов в день. А банк считает, что вы этот лимит установили в лирах, и позволяет тратить вам всего 2000 лир (116$). Итого, купить ничего крупного не представляется возможным.

Учитывая странную работоспособность турецкой карты, в начале июня я отправилась в Беларусь. Да, есть риск, что и белорусские банки отключат от Swift. Но мне главное, чтобы карта продержалась ближайших полтора месяца.

С открытием белорусской карты вообще все отлично: требуется только ваш загран. Да, в каких-то банках нужно вносить депозит для получения физической карты (около 300$), но мне было достаточно виртуальной неименной в валюте в Приор банке. Отправилась в отделение на конечной станции место - никого не было, процесс занял 7 минут. Оплата проходит везде. Интернет-банк намного качественнее турецкого. Пополнять можно через QIWI без Swift. Курс выходит вполне приемлемый: 66 рублей за бакс при 56 официальных.

А для всего остального, как говорится, существует UnionPay. Третья карта, которую я оформила. Московская область, банк Солидарность, евровалюта (не кобейдж, без мир). Платишь всего 20€ за обслуживание в год. Оплата проходит на всех сайтах, которые поддерживают UnionPay (на ошибку ещё ни разу не натыкалась). Зарубежом с неё можно снимать наличку без ограничений с комиссией около 3%, надо только заранее посмотреть на сайтах, в каких именно банкоматах (далеко не везде работает, но в крупных городах без денег не останетесь).

Вот такая новая действительность: хочешь съездить в далекую заграницу - имей карты иностранных банков.
230 views06:48
Открыть/Комментировать
2022-06-10 09:46:00 Английский язык. План

Весь май я активно занималась изучением английского. У меня стояло уделять этому 3-4 часа в день. При этом я наконец-то достигла работающей методики: заниматься английским не ради скорейшего окончания учебника или набора n-нного количества зазубренных слов, а по часам.

Все знают избитую фразу: 10 000 часов - и ты становишься мастером нового дела. Не надо гуглить «как быстрее выучить английский», думать, что если дошел до конца учебника, то знаешь все. Мне помогло лишь отношение к английскому как к набору количества «летных часов».

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

У меня был сформирован список на каждое настроение и сферу обучения (аудирование/разговоры и т.д.). Поделюсь им:

- В рамках учебника я использовала BBCLearningEnglish, мой курс назывался «Towards Advanced», но там есть и другие. Тут грамматика, аудио, новые слова, фразовые глаголы, произношение в каждом из юнитов.

- SkyEng, но я на нем занимаюсь уже 5 лет (273 урока мне показывает система). Помимо занятий с преподом мне на нем нравится делать ДЗ. Здесь должна быть моя реферальная ссылка на 3 бесплатных урока каждому.

- SkyEng словарь, все новые слова добавляю туда, и в этом же приложению играюсь с ними, чтобы выучить.

- В качестве разговорного клуба выбрала HeyLadies онлайн. Каждые 2-3 часа групповой созвон, на который ты можешь присоединиться. Каждые 2 недели - новая общая тема, из которой уже берутся подтемы (например, в мае была «путешествие», сейчас - «еда»). Клуб только для девушек (сорри)), удалось оплатить через российский UnionPay.

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

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

- Подписалась на разные YouTube каналы на английском на интересные для себя тематики. Но здесь для меня важно, чтобы человек много говорил (была лекция-имени-себя), а не показывал влог. Наибольший челлендж - слушать британцев. Понимать фильмы на английском для меня - unreal.

- Подключила несколько подкастов в приложении Apple (Ted talks, что-то про work-life balance и еще несколько по программированию). В Ted talks темы реально интересные, оставляют послевкусие, есть, над чем поразмыслить. ИТ - много понятных слов, но спикеры (коренные американцы) говорят настолько быстро, что твой мозг просто взрывается. Если выдерживаешь и понимаешь все, сразу несколько баллов к своему уровню английского прибавляешь.

- В рамках Reading читала на английском все, что меня интересует (эта сфера у меня не страдает) + готовилась к разговорным темам в HeyLadies (там еще заранее нужно просмотреть видео или прочитать статью перед встречей).

Итого 5 сфер изучения языка: 4 стандартных (reading, speaking, writing, listening) + слова. Из них сложнее всего мне дается последняя. Задача: попасть с уровня Upper-Intermediate на Advanced.

Из того, что не зашло:

- Групповые занятия с преподавателем (попадаются ученики с более слабым уровнем, мне становится скучно)
- Языковые разговорные клубы с русскоязычными (все и так понятно, никакого челленджа для себя нет)
- Специализированные подкасты/YouTube на определенную тематику (история, культура и т.д.). Много непонятных слов - сразу теряюсь.

Надеюсь, мой опыт был для вас полезным)
187 views06:46
Открыть/Комментировать
2022-06-07 09:30:00 Что дальше?

Будущее размыто, прошлое потеряно. Остаётся только быть в настоящем?

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

Осмысление случившегося в контексте личной жизни привело меня к трём главным выводам:

1. Не класть все яблоки в одну корзину. Этот вывод мне был известен еще со школы, и с той самой поры я только и занимаюсь диверсификацией рисков. У меня практически никогда нет одной работы и всегда их несколько на случай, если что-то случится с одной из них. Разные хобби и способы заработка денег: программирование, котирующееся по всему миру, возможность работать локальным гидом на случай отключения интернета, 5-ти летний опыт препода в сфере образования. Я всегда получала деньги от разных источников: как внутри России, так и из-за рубежа. Хранила их в 5-ти разных банках, 3-х валютах и в других способах накопления. И, оказалось, даже у меня риски были недостаточно распределены. Санкции ударили по всему, к чему я была причастна (пожалуй, кроме экскурсоведения, но здесь уже сама «операция» подорвала мое желание интересоваться историей России).

Теперь стала ещё жёстче подходить к вопросу диверсификации всего, к чему причастна, создавать 3-4 уровня подстраховки и минимизировать риски всего, чтобы не потерять.

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

Теперь я выбираю лишь максимально подстраиваться под возникающие обстоятельства и мои самые далекие планы - это следующая неделя. Я без понятия, когда будет у меня отпуск, нужно уезжать из России (когда? куда?) или нет. Я просто наслаждаюсь (насколько возможно) жизнью в неопределённости. Прикольно осознавать, что тебя в любой момент может развернуть в ту или иную сторону. Ты не знаешь, когда закончится работа (под гнетом санкций), когда подвернётся что-то новое, что ещё удручающего из новостей свалится на твои плечи. И ты даже этого никогда не предугадаешь, как бы не старался. Да, я готовлю запасной план на крайний случай, но он пока ещё запасной, а не основной.

3. У меня абсолютно пропал интерес к истории России (далекие друг от друга вещи, но все же). Два предыдущих года я активно посвящала себя экскурсоведению, была весьма патриотичная и восхищалась Российской Империей, даже хотела завести свой блог по интересным местам города и стать аккредитованным гидом в этом году. По 2-3 раза в неделю я ходила на различные экскурсии/лекции/музеи, пачками поглощала исторические подкасты и книги, копалась в архивах в библиотеке. Теперь я как будто обнулилась. То, чем я раньше восхищалась, потеряно. Да, я продолжаю что-то иногда слушать или посещать ради хобби или фана, но это просто 10% от добываемой ранее информации.

В общем, настроение и подход к жизни у меня сейчас напоминает фразу «бери, пока дают». Ведь завтра уже этих ресурсов (денег/друзей/возможности поехать заграницу) уже может не быть. И строить каких-либо планов (а тем более, планировать новую жизнь на новом или старом месте) нет никакого желания.
202 views06:30
Открыть/Комментировать
2022-06-02 09:35:00 Самый тупой баг

Это баг, над которым я буду угорать еще долго. Я потратила на него 8 часов. Привлекла дополнительного эксперта, чтобы найти причину. И когда обнаружила ее в итоге, не могла остановиться от смеха 10 минут.

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

Так вот, есть задача. У вас есть таблица с данными и кнопка «удалить запись» в каждой строке таблицы. Представьте себе таблицу ваших трат за месяц. В ячейках указаны характеристики каждой траты (на что пошли деньги, сумма, категория и др.). И в последней ячейке у каждой траты кнопка «Удалить».

Вы выбираете трату «апельсины 0.5 кг» и нажимаете кнопку «Удалить». А удаляется почему-то трата «консультация у врача». При этом трата «апельсины 0.5 кг» остается. И так со всеми тратами: удаляется не то, что нужно. Однако, иногда везет и удаляется, что нужно, причина везения не ясна. В чем же дело!?

Для диагностики бага важно, что ваша таблица «Траты» использует таблицу из ui-kit. В нее нужно передать заранее сформированные данные.

const dataForTable = dataFromBackend.map((item) => ({
id: item.id,
cells: getTableCellsInfo(item),
}));

При удалении элемента таблицы вы заново загружаете всю таблицу (запрашиваете информацию с backend). И в результате дебаггинга обнаруживается, что запрос на backend для удаления отправляется верный, а в новой таблице (которая пришла после удаления элемента) отсутствует не тот элемент, что вы удалили. И проблема 100% на вашей стороне, а не на стороне backend. Магия!

На самом деле, баг весьма популярен, если вы забыли указать key в функции map, когда формировали данные для таблицы. Напомню, как она выглядит:

todos.map((todo) => (

));
}

React просто не знает, элемент с каким id вы удалили, считает его по порядковому номеру, а поскольку с backend данные таблицы приходят без сортировки и каждый раз разные, баг и возникает. Попытка отсортировать данные с backend не увенчалась успехом. Предположим, вы удаляете элемент из середины: 3-ий. Тогда следующий за ним, 4-ый, уже перестает быть таковым и становится 3-им. И у вас опять все на фронте едет.

Об этой проблеме было описано здесь и объяснено, почему нехорошо использовать порядковые индексы в качестве key вместо id.

Вот так делать не надо:

todos.map((todo, index) => (

));
}

А вот так - пожалуйста:

todos.map((todo) => (

));

Но меня-то эта проблема не касается! Здесь четко указано, какой id с какой ячейкой таблицы соотносить:

const dataForTable = dataFromBackend.map((item) => ({
id: item.id,
cells: getTableCellsInfo(item),
}));

Но… нет.

Оказывается, как-то раз один разработчик делал рефакторинг компонента таблицы в ui-kit. И именно в ui-kit и используется функция map, о которой говорилось выше. Раньше логика компонента таблицы выглядела так:

todos.map((todo) => (

));

И много где еще внутри компонента использовалось todo.rowId. А потом разработчик решил порефакторить и поменял todo.rowId на todo.id. Только вот в половине кода забыл (видимо, отошел по делам). В том числе в месте, связанном с функцией map.

Т.е. теперь внутри компонента ui-kit код попеременно обращается, то к todo.id, то к todo.rowId. И для работоспособности кода нужно передавать оба идентификатора: и id, и rowId.

Т.е. теперь уже ваш говнокод будет выглядеть так:

const dataForTable = dataFromBackend.map((item) => ({
id: item.id,
rowId: item.id,
cells: getTableCellsInfo(item),
}));

Шикарно…

P. S.: редактировать ui-kit самостоятельно прав нет.

Парам-парам-пам. Конец.
245 views06:35
Открыть/Комментировать
2022-05-26 09:32:00 Внедряю рубрику #полезные_ресуры.

Зачастую на собеседованиях работодатели просят решить практическую задачку. Пройти испытание life coding, как говорят (чтобы проверить, как работаем ваш ум и как быстро вы соображаете). Подготовится к этому этапу поможет ресурс https://www.hackerrank.com/, там даже есть специальный preparation kit (набор задач для подготовки) для тех, кто готовится к собеседованиям за 1 неделю, 1 месяц или 3 месяца.

Причем не обязательно готовится к должности Frontend-разработчика, для программистов Java, Python, machine learning задачки тоже найдутся.

В общем, берите на заметку, вдруг пригодится :).
197 views06:32
Открыть/Комментировать
2022-05-23 09:35:00 ​В прошлую пятницу мы в «Открытии» праздновали 5 лет с момента запуска Бизнес-портала. На этом проекте я ещё дольше: 5.5 лет без перерыва. На меня повеяло ностальгией. Хочу поделиться ей с вами.

Помню свой первый день, когда я приехала в Московский офис компании. Был январь 2017, было солнечно, и я впервые оказалась в этой части Москвы (и заблудилась =)). Я работала на компанию удаленно из Петербурга, и цель командировки была в личном знакомстве с коллегами. Сейчас эти чувства знакомы многим: месяцы вы видите лишь аватарки друг друга и слышите голос, а потом в один прекрасный момент на первом оффлайн сборе пытаетесь понять, кто есть кто.

Помню, как я офигела от вида офиса, в котором мне предстоит работать. До этого я сидела в дешёвом офисе класса С с 20-летней мебелью и со страшной кухней и приятно поразилась, что условия работы могут быть совсем иными. Это уже потом я узнала, что у ИТ-компаний помещения для работы могут быть ещё круче (класс А+, выход на террасу, включённый фитнес-зал, бесплатные обеды и др.).

Февраль 2017. Мне предлагают пару месяцев поработать с территории заказчика, в Москве, и я радостно соглашаюсь. До сих пор помню свои чувства, когда я еду в поезде Петербург-Москва с полным пониманием того, что теперь меня ждёт новая жизнь. Я знала, что даже если не буду актуальна на этом проекте, обратно уже не вернусь. 5 долгих лет я мечтала съехать от родителей подальше.

7 марта. В офисе компании устраивают настоящий концерт, приглашают музыкальную группу для выступлений. Я никогда не была на таких корпоративах! Всю свою рабочую деятельность я была фрилансером, скитающимся по разным рабочим местам и заказчикам, и работа в крупной компании для меня в диковинку.

Май 2017. Мы, наконец-то, выкатываем на прод первую версию проекта. Мы делали ее 7 месяцев. Я видела самые-самые первые макеты (представьте себе «тёмную тему» с контрастным текстом всех цветов радуги), помню самые первые Демо. Демо - это демонстрации того, что команда (а внутри проекта их несколько, команды делятся по функционалу) успела сделать за определенный промежуток времени, на тот момент за неделю. В центр стола ставится ноутбук, один человек тыкает на нем кнопки и рассказывает, а все остальные 20 стоят кружком и пытаются разглядеть, что же на экране написано. Это уже потом Демо переехало в отдельный конференц-зал…

Я была третьим фронтенд-разработчиком в команде. Сейчас нас 25. За эти 5 лет Бизнес-Портал вырос колоссально. На момент старта у нас не было ни одного реального клиента. Теперь их более полумиллиона. Когда я присоединялась к этому проекту, я гуглила, что это вообще за неизвестный банк с тремя отделениями в Петербурге. Сейчас о банке «Открытие» знают все.

И тут хочется включить фанфары и рассказать, какие мы замечательные и крутые и как много новых свершений нас ждёт впереди. Только неизвестно, что за будущее нам уготовано. Ходят слухи, что ВТБ хочет присоединять к себе Открытие. А это значит, что все разработанное за 5 лет полетит в тот же мусорный ящик, что и проект в предыдущем посте.

P. S. На фото офис в первый день моей встречи с ним.
231 views06:35
Открыть/Комментировать
2022-05-16 09:47:00 Привет! Давненько меня тут не было. Дело в том, что с сентября я взяла дополнительный проект, занявший все мое свободное время. И вот сейчас, под влиянием санкций, он неожиданно кончился. Пришло время поделиться, что было до.

Мой проект был связан с интеграций площадок Amazon и eBay. Он помогал предпринимателям из России продавать свои товары и должен был выпуститься в прод в марте. Обидно осознавать, что проект, на который ты потратила 9 месяцев своей жизни, вместо прода улетит в мусорный ящик.

В марте-апреле мы обходили санкции как могли. Они накладывались как со стороны американских площадок, так и со стороны России, и надо было технически крутиться между ними. Из примеров: после успешной авторизации eBay принимал только https-урлы (повышенная безопасность по сравнению с http), а у моего проекта лицензию на https отозвали. Но даже это удалось решить, а таких моментов в марте было десятки. Ты каждый день осознаешь конец проекта, а потом он воскресает вновь.

Почему мы продолжали делать проект даже после наложения санкций? Заказчик требовал. Договор был заключён давно, и сдавать в марте его было необходимо по ТЗ. Это тут случай, когда к тебе нудно придираются по всем пунктам годичной давности, даже если они уже никому не нужны.

В начале марта Amazon прекратил сотрудничество с Россией. А нам нужно было показывать интеграцию с ним. Пришлось плясать танцы с бубнами. Ради демонстрации возможни совершать действия на торговых площадках нам пришлось разработать собственный Amazon и eBay. Это, конечно же, растянуло сроки проекта.

Но не только санкции мешали сдать проект: лажали и мы сами. Сроки реализации функционала были крайне сжаты, и, как это обычно и бывает, основная разработка пришлась на конец дедлайна. Объем работы перед демонстраций был нереальный, мы затыкали дырки в функционале как могли. Но их все равно находили и отправляли на пересдачу. И так 5 раз.

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

Единственное, чему я рада на этом проекте - он мне значительно прокачал навыки программирования. Таких нестандартных задач у меня в других местах не было. Надеюсь, это неплохо: хороший опыт программирования отнюдь не помешает в новых реалиях.
324 views06:47
Открыть/Комментировать