Холиварофорум

Не все, что говорят на Холиварке — правда!

Вы не вошли.

Объявление

Холиварка празднует День Чтеца!
Ознакомиться с праздничными чтениями можно в соответствующем разделе

#151 2024-02-17 01:18:17

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

Сижу пришибленный. Работа идёт еле-еле. В голове пусто и тяжело.

Несколько лет назад, давно, я, остановившись на несколько минут, сделал фото памятника "Стена Скорби", жертвам политических репрессий.
Один из его фрагментов исписан словом "Помни" на множестве языков.
Тогда, в солнечный ясный день, у подножия стояла ваза с несколькими красными гвоздиками.

Теперь люди несут и несут цветы.

анон-левел-апер

#152 2024-02-20 23:21:49

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][работа]

На прошлой неделе был на собеседовании, начальный этап.
Вообще началось с того, что мне написала рекрутёр и сказала, мол, есть вакансия в хорошей компании. Я посмотрел - да это ж SDET. Меня вообще уже подзадолбали вакансии QA и SDET, замаскированные под вакансии инженеров-программистов.
Во-первых, тратишь время, вчитываясь в длинные параграфы обязанностей и квалификации.
Во-вторых, их трудно отсеять фильтрами.
Но я уже научился определять относительно быстро. Если в требованиях указан только язык программирования, то, скорее всего, это оно. Если сказано "тесно работать с командой программистов...", то 99%, что можно закрывать (уже довольно явно намекает). Туда же часто "быть адвокатом качества" в связке "искать баги в программном обеспечении и проверять, что они починены".

Я сказал об этом рекрутёру, но через какое-то время она позвонила снова, сказав, что поговорила с нанимающим менеджером и он сказал, что описание может быть сбивающим с толку. "Что там может сбивать с толку, когда никаких специфических именно для программиста умений там нет?", - подумал я, но ради тренировки по собеседованиям согласился.

Нанимающий менеджер был приятным собеседующим, хорошо рассказал про вакансию, про культуру в команде, ответил на все мои вопросы. Как я и ожидал, это вакансия SDET, так что ничего сбивающего с толку. Контракт на полгода, как я понял, у них много старого кода в тестовом фреймворке, который надо бы разгрести, переписать и прочитать. Первым вопросом ко мне было: "У тебя есть большаааая старая кодовая база, иногда код выглядит как пипец, как ты начнёшь разгребать?" Я ответил, мол, буду смотреть в код, буду запускать, буду разбираться, каким целям он должен служить, и так далее. А про себя подумал: "Нет, спасибо". Так-то некоторые задачи могут быть и интересными - у команды есть простенькие роботы, одна из задач - запрограммировать их так, чтобы они выполняли нужное действие, скажем, трогали экран (собственно, это все их функции). Но это лишь часть автотестов, да и ничего сложного в этом так-то нет, часто просто используешь уже существующую библиотеку и просто передаёшь координаты.

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

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

анон-левел-апер

Отредактировано (2024-03-08 07:58:56)

#153 2024-02-23 04:26:24

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][опенсорс проект]

Мои пулл реквесты уже несколько недель ждут, чтобы их одобрили  :blue:  Основной разработчик проекта и самые опытные контрибуторы пока работают над другими вещами типа деплоймента, CI и вообще нового интерфейса.
Я пока на перепутье: продолжать ли фиксить баги и делать свои фичи, используя опенсорсные библиотеки которые последний раз обновлялись два-три года назад или пока попробовать новый опенсорс проект.

Сейчас немного перепиливаю под себя один тоже опенсорсный продукт (React/TypeScript), может, даже выложу, когда будет готово, но основная цель - сделать так, чтобы лично мне на моём локальном деплойменте было удобно его использовать. Ну и знания/опыт.

анон-левел-апер

#154 2024-02-26 23:10:31

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти]

Вот ты знакомишься с опенсорс-проектом, видишь общую структуру, фронт и бэк, начинаешь разбираться в коде, дебажить и фиксить баги. Узнаёшь кусочек тут, кусочек там. При каком-то следующем баге ты уже примерно можешь представлять, что могло поломаться, где искать и у тебя предварительные предположения, как это можно починить.
Но вот при этом, когда ты можешь разобраться в существующем коде и что-то починить, у тебя всё равно далеко не сразу приходит понимание, как в общем и целом устроен и работает фреймворк/язык программирования.
И ты поневоле становишься "пакером". Вот тут приходят на помощь статьи по фреймворку/языку, и главное не полениться сразу же потратить время на понимание, каково общее место кусочка, который ты изучил, в большой мозаике. Лучше всего прочитать, разобраться, попробовать разные примеры самому, можно потом посмотреть видео, если есть, и записать/нарисовать диаграмму самому (разные виды запоминания и всё такое).
Так шаг за шагом создаётся ментальная карта этой области знаний. В идеале, наверное, когда столкнулся с чем-то новым, будет полезно набросать самые общие основы большой картины и понять, где место кусочка, который ты вот сейчас изучил, чтобы очертить себе границы и главные места.

[дыбр]
[фото]

На выходных ездили гулять в лес.
Прошли примерно десять километров с общим подъёмом 500 метров, видели водопады, океан, замшелые ветви и лесных великанов

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

анон-левел-апер

#155 2024-02-26 23:31:44

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

Фотографии шикарные, лес очень атмосферно выглядит. Представляю, насколько там свежий воздух

Отредактировано (2024-02-26 23:32:10)

#156 2024-02-27 01:05:55

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

Спасибо, анончик :) Да, воздух там отличный, ещё и пахнет чудесно

анон-левел-апер

#157 2024-02-29 20:58:59

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти]

Есть два варианта сделать нужную фичу: нажимаешь на кнопку или линку в браузере, и открывается ранее сохранённое рабочее пространство.
Это 1) простая HTML-страница со списком ссылок на все пространства (template в джанго-бэкенде), список пространств приходит с вью из бэкенда и 2) UI-контролы в одном из элементов фронтенда этого веб-приложения (источник списка всех пространств всё тот же - бэкенд).

В первом варианте в адресе указываешь URL фронтенд-сервера с параметром, значение которого = айди пространства, во втором варианте вешаешь обработчик на кнопку, который вызывает функцию из реакта (фронт), загружающую это пространство.

В чём были трудности анона?

Анон забыл, вообще, напрочь, что в ссылке можно указать адрес <a href="..." с нужным URL. Анон всё пытался сообразить, как же в HTML-файле в бэкенде вызвать функцию из реакт-компонента во фронтенде :facepalm:

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

[фехтование]

Вчера впервые умудрился забыть шлем  :facepalm: В итоге маэстра из-за требований безопасности работала со мной на поролоновых саблях (обычно для совсем новых студентов) =D Выполнять на них действия на клинке сложно, они короткие, гнутся, и сложновато держать игрушечную саблю как настоящую рапиру. Но это был интересный опыт, и хоть я почти весь урок казнил себя и был грустным, всё же удостоился пары похвал (после некоторого количества замечаний и исправлений).

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

анон-левел-апер

#158 2024-03-06 00:11:10

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][опенсорс проект]

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

Всё ещё мучаю второй опенсорс проект:

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

2) UI-контролы в одном из элементов фронтенда этого веб-приложения

Это React + TypeScript, и в основном компоненте есть методы для загрузки данных и переменная состояния для общей сцены, которая и вмещает в себя рабочее пространство.
Я же хочу сделать загрузку пространства в отдельном компоненте. Я попробовал использовать ту же функцию-утилиту, которая используется в одном из методов главного компонента, и понял, что без переменной состояния общей сцены (часть главного компонента) она как следует не работает (это пока моё предположение, надо 100% подтвердить).
Пару дней у меня заняло разобраться (относительно, лол) в методах и функциях, которые вызывают другие методы и функции, а те другие, а те другие, и так далее. Я видел несколько новых типов, над которыми пришлось пораскинуть мозгами - что они значат, для чего они вообще :smoke:
Проект немаленький, и у меня, если честно, пару раз кипел мозг. Я до конца пока не разобрался, можно ли вообще сделать загрузку пространства в отдельном компоненте и что для этого нужно. И если нет, то почему. Сложно, сложно! Особенно идти от частного к общему. Трудновато сходу быстро понять структуру и связи в таком проекте.

[левел-ап]
[спорт]

Со второй половины января я снова стал бегать по 2-3 раза в неделю. VO2 max (кардио фитнесс, сколько кислорода потребляет организм во время тренировки) с 40.7, что выше среднего, упал до 37.6 - 37.8 в феврале  :sadcat:
В ноябре-декабре я болел, тест не показал ковид, но чувствовал я себя пару-тройку недель разбитым и усталым. Ещё и сил и энергии совсем не было, так что весь спорт, кроме фехтования, я забросил. И, скажу честно, мне было очень сложно выгонять себя бегать и ходить в серую хмарь, когда небо затянуто тучами, ветер холодный, и общее ощущение можно описать как "зябко". И когда на улице ещё нет ливня. А рыжий котик у соседей на окне спит так сладко, как умеют только котики, и от этого выходить на улицу хочется ещё меньше  =D
Но у меня отросла отсохшая в декабре сила воли, и я снова регулярно бегаю и хожу быстрым шагом.

анон-левел-апер

Отредактировано (2024-03-06 00:13:34)

#159 2024-03-07 22:47:56

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап][дыбр]

Недавно что-то пришла мысль, что я впустую тратил время, когда работал SDET. Я приуныл. Но потом начал развивать эту мысль, и ответом на вопрос "Почему?" было "Это не то, чем я хочу заниматься сейчас" и "Эта работа дала мне недостаточно опыта, чтобы быстро и легко поменять её на другую".
Тут моё уныние слегка скукожилось  =D
Да, сейчас я хочу заниматься другим, и это нормально - поменять род занятий, когда хочется, и вот я уже занимаюсь другим. 
Опыт - 1) Очевидно, что при смене деятельности ты переучиваешься и приобретаешь новые опыт и знания 2) Всё же некоторый полезный опыт я таки приобрёл (вместе с зарплатой, хех).

Единственное, что может быть рассмотрено как потраченное время - то, что мне далеко не всегда нравилась моя работа. И я жалею, что не сменил её раньше. Но, как говорят, весь этот опыт привёл тебя в то место, где ты сейчас. И ты уже знаешь лучше, что ты хочешь и чего не хочешь.
Мог ли я поменять работу раньше? Наверное, мог. Делал ли я что-то для этого? Делал. Достаточно, сделал ли я вообще всё, что было в моих силах? Не знаю  =D
Но я могу сделать сегодня всё, что в моих силах. И завтра. Так зачем смотреть в прошлое и сожалеть, когда сегодня можно работать ради завтра и послезавтра и множества других дней?

И вот немного хочулий могулий магнолий, чтобы отвлечься и не ныть из-за серой и зябкой ранней весны

Дождливо
Затесались камелии
Ощущения под цветущим деревом  :rainbow:
Как будто немного другие  :think:
По выходным обычно выходит солнце, и это очень радует

анон-левел-апер

Отредактировано (2024-03-07 22:53:21)

#160 2024-03-08 07:57:17

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][опенсорс проект]

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

Надо было начать с Inspect элемента в UI (совсем рядом с которым я ещё позже и разместил мои контролы для загрузки, потому что они выполняют очень похожие действия), который точно делает то, что мне надо, просто с другим типом входных данных (файл, а не ответ бэкенда на мой запрос), найти его в коде, где декларируется, где и как используется и понять, как он загружает рабочее пространство из файла (и можно ли так же загрузить пространство из бэкенда).
И ведь я даже начал это делать на прошлой неделе, но вместо того, чтобы полностью пройти этот путь, я бросил его и взял и перескочил на другой  :facepalm: 
Вот это был бы более рабочий подход "от частного к общему".
Консистентность - это порой то, чего мне не хватает в моём левел-апе((

В итоге я выяснил, что в функции, которая делает именно то, что мне нужно, используется такой объект, который манипулирует общим состоянием через свои внутренние функции, и эти функции не принимают параметры извне. И использует эти объекты в моём компоненте некий менеджер, который имеет доступ к состоянию общего большого компонента (речь про его состояние, когда загружаем рабочее пространство).
Мне нужно передавать айди рабочего пространства в запросе к бэкенду для загрузки этого пространства (по нажатию на контрол с айди), так что вариант, где я не могу явно передать параметр, не подойдёт.
С загрузкой тех же данных из файла это сделано без явной передачи параметров типа имени файла, там используется функция, обрабатывающая выбор и открытие файла, который вот юзер открыл, она сама знает какой лол  =D

В итоге мой следующий шаг - разобраться, как в Реакте используется useContext и как менеджер в моём компоненте работает с общим состоянием.

анон-левел-апер

Отредактировано (2024-03-08 08:01:24)

#161 2024-03-15 21:31:01

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][опенсорс проект]


Итак, я разобрался, что такое useContext в Реакте, для чего он нужен, и как менеджер в моём компоненте работает с общим состоянием. Менеджер в данном случае - инстанс класса, который в конструкторе принимает состояние рабочего пространства, его элементы и функцию, которая обновляет рабочее пространство (после загрузки другого, сохранённого пространства, например)  :chearleader: И этот инстанс, хранящий в себе нужное состояние и элементы, передаётся с помощью useContext в компонент ниже самого основного компонента, вот как там происходит обновление общего состояния.

Правда, эта функция, которая обновляет пространство, принимает аргумент кастомного типа, но я разобрался и увидел, что этот тип представляет собой объект вида {состояниеПространства, списокЭлементов, ... }, так что можно создать такого вида объект из тела респонса запроса к бэкенду.

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

анон-левел-апер

#162 2024-03-16 02:32:14

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][опенсорс проект]

Сделал! Заработало!  :rainbow:
Теперь сохранённые рабочие пространства загружаются через реквест к бэкенду при нажатии на кнопку с айдишником в браузере!
И я узнал про ещё одну классную вещь в Реакте  :love:

Остались задачи поменьше и деплоймент на мой локальный сервер в докер-контейнере. Но сейчас я немного отдохну и поеду на фехтовач.

анон-левел-апер

#163 2024-03-19 01:36:06

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[дыбр]

В выходные съездили в Сан Франциско, погуляли по крутым улицам, поглазели на викторианские домики и зашли в магазин со всяческой утварью для приготовления кофе. Купили большой френч пресс (чтобы кофе из него хватало на двоих), посмотрели на всевозможные чайники, фильтры, хитрые стаканы с соломинками. В дальней части шла лекция, и народ слушал очень увлечённо. Совсем недавно заказали в этом же магазине кофемолку, она нам понравилась, и вот мы решили заехать в сам магазин и посмотреть всё вживую.
Кофемолка кстати очень милая и стильная, напоминает здание в стиле конструктивизма  =D

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

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

Ещё съездили рано утром погулять в один из местных парков: холмы (пока ещё зелёные), оранжевые маки, люпины, зеркальная гладь залива, болота внизу с множеством замощенных досками тропинок. И птицы! Цапли, кулики, канадские гуси, дикие индюки и множество других :love: 

Дикие индюки на холме
Маки (пока не проснулись)
Залив Сан Франциско (и цапли в воде)
Водное зеркало в болоте

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

Диорама с жизнью племени
Корзины и фотография женщин с украшениями
Часть стола с артефактами
Фразы на чоченьо и их перевод

анон-левел-апер

#164 2024-04-03 02:47:18

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][опенсорс проект]

Начал работать над деплойментом.

Хочу два контейнера, один для фронта, другой для бэка. И реверс-прокси перед бэком.

Сложно, когда прошлый раз ты трогал докер несколько лет назад -_-

Сначала я начал разбираться с nginx, хочу использовать его. Для разминки надо было поставить и настроить его, сделать так, чтобы отдавал статические файлы из моего фронта.
Ну что ж, я затупил с тем, откуда их брать и как их делать.

В моей голове упорно крутилось слово bundle, и я начал искать по нему, разбираться, как сделать его из реакт-приложения. Начал изучать приложения, которые берут и делают тебе его из твоего проекта.
В какой-то момент я понял, что зашёл в тупик, и пошёл с вопросом к мужу.
Оказалось, можно просто сделать билд через yarn build, взять файлы из директории build и готово  :dontknow:
Как я мог узнать про это сам, начни я копать в другом направлении?
Зайти в Dockerfile проекта и посмотреть, что там за команды для сборки (пусть build:something), а потом зайти в package.json и посмотреть там в scripts значение ключа build:something, какие команды выполняются для этой команды.
Просто использовать команду.
ВСЁ.

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

Сейчас у меня есть контейнер с фронтом.
Разобрался, как создать для него Докерфайл, взять образы node и nginx, скопировать код фронта в контейнер, сделать билд и положить артефакты в корень nginx, чтобы когда откроешь адрес в браузере, там открылось твоё приложение.

Также есть контейнер с бэком.
Разобрался с Докерфайлом для него, взял образ питона, выставил пару переменных среды, скопировал в контейнер файл requirements.txt и поставил зависимости, скопировал код и запустил Джанго сервер  :chearleader:

Также использую docker compose, чтобы удобно работать с несколькими контейнерами. Прописал настройки в docker-compose.yml, для фронта и бэка отдельные сервисы. Базу данных оставил в том же контейнере, что и бэк, у меня маленькое приложение чисто для себя.

Расстраивает, что простые по идее вещи порой занимают столько времени  :sadcat:

Осталось разобраться, как спрятать бэк за реверс-прокси, и чуть поменять UI во фронте.

анон-левел-апер

#165 2024-04-03 21:17:33

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][опенсорс проект]

Искал, как запилить реверс-прокси для веб-приложением в докере.

Первые результаты выдачи - статьи с примерами, где даны конфиги. Я читаю конфиги nginx'а, который выкладывают авторы, и я не понимаю, что означает... примерно всё. Зачем нужен блок upstream, для чего нужно поле location и что происходит с его значением, почему в конфиге несколько блоков server.

И авторы не объясняют это в своих статьях. Мол, скопируйте к себе, потом выполните эти вот команды, и у вас должно заработать, а на экране появятся вот такие строчки. Вуаля, вы великолепны!

ПОЧЕМУ.
КАК.
ЗАЧЕМ.
Как же меня бомбит  :fury:
Я не хочу тупо копипастить, я хочу понять, что в конфиге что означает, и почему конфиг составлен именно так.
Ненавижу такие говно-статьи с говно-контентом, а поди ж ты, первые в выдаче  :facepalm:

Моей ошибкой в методе поиска информации было то, что за конкретными объяснениями я не пошёл на официальный сайт nginx и не посмотрел beginner's guide. Вообще, это стоит сделать привычкой - идит и читать официальные доки, если есть - начинать со гайдов для начинающих.

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

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

анон-левел-апер

#166 2024-04-24 07:59:08

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][iOS]

Закончил с предыдущим проектом (напишу отдельно) и начал новый!  :rainbow:
И не просто проект, а ещё и курс по совершенно новой и классной вещи - языку Swift и разработке приложений под iOS.

Начал с позапрошлого понедельника, и это просто восторг! Курс (книга в Apple Books) замечательный: очень понятный, подробный, написанный отличным языком. После каждой главы - лабы, как раз на границе лёгкого и челленджа. Мне показалось очень ценным то, что ты сразу закрепляешьзнания лабами, что и в самих главах есть маленькие примеры, и что ТАМ ВСЁ ПОНЯТНО, не надо ломать голову над непонятным концептом или примером, к которому просто нет объяснений.

Обожаю осваивать новое и интересное, а когда ещё и всё систематизировано, продумано и толково сделано, то вообще восторг  :heart: Ну и когда задания как раз на границе возможностей и интереса: ты можешь сделать эту классную вещь, используя то, что ты узнал, чему научился и чуточку подумав (и не застрять надолго, лол, потому что про какую-то неочевидную вещь просто не упомянули)


Неделю я осваивал основы swift и Xcode, делал лабы и проходил руководство, как делать своё приложение - идея, дизайн, прототип, руководства Apple по дизайну  :love:
А потом начал делать своё первое приложение, и вот тут дорога пошла в горку  =D 

Идея очень простая, получить на умных часах текущий пульс и послать юзеру сигнал, если пульс выше или ниже заданной границы.
Что сделал анон-левел-апер? Вместо того, чтобы действовать уровень выше себя прежнего, он действовал как старая версия себя: вместо того, чтобы просто сделать самое простейшее Hello World и убедиться, что оно запускается, он начал разбираться, как снимать пульс и набросал код, который к концу дня ни разу не пробовал запустить  ;D  :facepalm: Потому что интересно, дай-ка разберусь в этом, а потом в том, дай-ка кодец примерный набросаю, совсем немного, опа, уже 6 вечера  :bu:
Я убеждаюсь, что некоторые важные вещи, которые вроде и кажутся интуитивными и очевидными, на самом деле надо записывать и держать под рукой, чтобы знать, как правильно жить разумнее делать проект. 

Лабы были интересными и понятными. А вот Observed/Observable объекты и публикуемые проперти ощущались как хороший такой скачок в глубину, когда я начал разбираться, как делать реальное приложение.
Забавно вышло с тем, как я искал, где же в приложении должна быть логика. Пытался найти, как привязать вью к контроллеру, предполагая, что именно так надо делать (MVC, все дела). Предположение оказалось неверным, вью к контроллеру уже не привязывают  :old: Из MVC убрали C, и теперь swiftUI напоминает тот же Реакт.
К счастью, в доках и обсуждениях всё было объяснено весьма понятно, и разобраться, как запустить приложение и сделать что-то простое, оказалось не слишком сложно.


Дело идёт быстро, и чуть больше, чем за неделю у меня уже есть минимально готовый продукт, сегодня вечером как раз ходил (точнее, бегал) его тестировать - работает ли всё, как нужно, насколько удобно и приятно им пользоваться. И я доволен!  :rainbow:
Конечно, остаются вещи, которые буду менять/улучшать потом, но сейчас самый основной функционал, ради которого и пишется приложение, работает. Дальше дело за отзывами самых первых пользователей.


Хоть и времени прошло совсем немного, но мне уже очень нравится разработка под iOS, подозреваю, из-за того, как сделана среда разработки и как УДОБНО  :heart: Ты можешь мгновенно видеть свою работу на экране симулятора девайса в превью, смотреть на изменения в UI не запуская код, и вот это просто отлично закрывает этот промежуток абстракции между твоим кодом и тем, как выглядит результат его работы. Не надо держать в голове и представлять, можно просто посмотреть и потыкать курсором  :chearleader:  Это значительно помогает. А если говорить о приложении для телефона, а не для часов, там ещё удобнее, и возможность в редакторе тащить линию от условной кнопки на экране в код, чтобы описать логику её работы, то для меня это божественно: меньше слоёв абстракции, больше наглядного взаимодействия с объектами реального мира  :heart: 
Хех, узнал кстати недавно от мужа, что такой концепт софта называется WYSIWYG (what you see is what you get), и жалею, что не попробовал раньше. Но как снова буду делать что-то на Реакте, обязательно попробую :3 Это неплохо так облегчает и ускоряет работу

Взял за привычку не бояться потратить «слишком много» времени и внимательно прочитать доки, пока не станет совсем понятно (в книге это указано именно как правильная практика - прочитать доки, разобраться в большой картине и понять, что к чему), и это ощущается тоже классно - обычно после них на многие вопросы появляются ответы, с ментальной карты исчезают белые пятна. Да и здорово они написаны, хоть я бы и не отказался от большего количества примеров  =D 

анон-левел-апер

#167 Вчера 08:40:25

Анон

Re: Вращаем бинарные деревья[айти][левел-ап][фехтование][дыбр][yes com]

[левел-ап]
[айти][iOS]

Конечно, по мере работы с iOS средой разработки, розовые очки понемногу выцветают  =D Пока что основная моя претензия - это что в хорошей теоретической документации порой не хватает примеров.

Ещё неудобства могут доставить некоторые не совсем очевидные вещи. Например, есть аргумент типа словарь, где ключи - строки, значение может быть любым. Выглядит это как [String:Any]. И он должен таким быть в определённых местах. Вот я решил отрефакторить немного код, написал Int вместо Any, потому что я же целое число передаю! В итоге у меня поломалось то, что работало, а я какое-то время не мог понять, почему  :sadcat: В итоге нашёл мельком упомянутое, что мол, в именно таких случаях должно быть [String: Any]. Не знаю, может я не прочитал в доках про это, а если и прочитал, то не понял а если и понял, то не так лол

Ещё сегодня от Xcode постоянно отваливались мои часы, физический девайс, так что запускать и дебажить на них приложение было нелегко. Нашёл большой свежий тред, где народ жаловался на это, кто-то предлагал решения, но помогали они далеко не всем. В итоге я ребутнул комп, и всё снова заработало =D
В треде бомбились в адрес разработчиков инструментов для разработчиков, мол, ну Эппл, ну что же ты, ну мы уже привыкли, у нас высокие ожидания от тебя! Та же реакция у многих и на доки тоже, да. Не знаю, насколько большая команда занимается этими девелоперскими тулами, но подозреваю, что ресурсов у них на некоторые вещи не хватает, потому что зерно истины в жалобах на форумах есть.
Но мне всё равно нравится этими инструментами пользоваться. Запилил приложение-компаньон для телефона, очень простое. Сейчас обновляю основное приложение. Было бы здорово отправить его в app store, конечно. Но для начала надо бы дать попользоваться юзерам, кто потестировал бы его, получить фидбек. А для распространения своего приложения до отправки в app store тоже ппц много опций, в которых я пока тоже не до конца разобрался.

[Спорт]

Так вышло, что в iOS я углубился с увлечением, и прогулки стал пропускать. Мне жалко тратить утреннее время на них, если честно. Зато хотя бы не отказался от бега. Сейчас всё цветёт, волшебно пахнет, и дни стали длиннее, так что бегаю и наслаждаюсь золотым часом. И VO2max даже немного пошёл вверх, но как-то медленно, мотыляется около 38, падая до 37.7 порой. Всё же стараюсь не пропускать физические тренировки (включая фехтовач). По выходным выбираемся походим по горам и лесу, всё хлеб, но лучше вставать очень рано, иначе на тропинках сплошные люди и никакой тишины  :heh:

анон-левел-апер

Подвал форума

Основано на FluxBB, с модификациями Visman
Доработано специально для Холиварофорума