Вы не вошли.
Холиварка празднует День Чтеца!
Ознакомиться с праздничными чтениями можно в соответствующем разделе
Сижу пришибленный. Работа идёт еле-еле. В голове пусто и тяжело.
Несколько лет назад, давно, я, остановившись на несколько минут, сделал фото памятника "Стена Скорби", жертвам политических репрессий.
Один из его фрагментов исписан словом "Помни" на множестве языков.
Тогда, в солнечный ясный день, у подножия стояла ваза с несколькими красными гвоздиками.
Теперь люди несут и несут цветы.
анон-левел-апер
[левел-ап]
[айти][работа]
На прошлой неделе был на собеседовании, начальный этап.
Вообще началось с того, что мне написала рекрутёр и сказала, мол, есть вакансия в хорошей компании. Я посмотрел - да это ж SDET. Меня вообще уже подзадолбали вакансии QA и SDET, замаскированные под вакансии инженеров-программистов.
Во-первых, тратишь время, вчитываясь в длинные параграфы обязанностей и квалификации.
Во-вторых, их трудно отсеять фильтрами.
Но я уже научился определять относительно быстро. Если в требованиях указан только язык программирования, то, скорее всего, это оно. Если сказано "тесно работать с командой программистов...", то 99%, что можно закрывать (уже довольно явно намекает). Туда же часто "быть адвокатом качества" в связке "искать баги в программном обеспечении и проверять, что они починены".
Я сказал об этом рекрутёру, но через какое-то время она позвонила снова, сказав, что поговорила с нанимающим менеджером и он сказал, что описание может быть сбивающим с толку. "Что там может сбивать с толку, когда никаких специфических именно для программиста умений там нет?", - подумал я, но ради тренировки по собеседованиям согласился.
Нанимающий менеджер был приятным собеседующим, хорошо рассказал про вакансию, про культуру в команде, ответил на все мои вопросы. Как я и ожидал, это вакансия SDET, так что ничего сбивающего с толку. Контракт на полгода, как я понял, у них много старого кода в тестовом фреймворке, который надо бы разгрести, переписать и прочитать. Первым вопросом ко мне было: "У тебя есть большаааая старая кодовая база, иногда код выглядит как пипец, как ты начнёшь разгребать?" Я ответил, мол, буду смотреть в код, буду запускать, буду разбираться, каким целям он должен служить, и так далее. А про себя подумал: "Нет, спасибо". Так-то некоторые задачи могут быть и интересными - у команды есть простенькие роботы, одна из задач - запрограммировать их так, чтобы они выполняли нужное действие, скажем, трогали экран (собственно, это все их функции). Но это лишь часть автотестов, да и ничего сложного в этом так-то нет, часто просто используешь уже существующую библиотеку и просто передаёшь координаты.
Проблема с SDET обычно в том, что после какого-то уровня (обычно это миддл, реже сеньор), по моему опыту, расти технически уже особо некуда, и ты просто занимаешься одним и тем же.
Пообщались хорошо, тренировка удалась. После собеседования я написал рекрутёру, что это не то, что я ищу, поблагодарив за её время и усилия.
анон-левел-апер
Отредактировано (2024-03-08 07:58:56)
[левел-ап]
[айти][опенсорс проект]
Мои пулл реквесты уже несколько недель ждут, чтобы их одобрили Основной разработчик проекта и самые опытные контрибуторы пока работают над другими вещами типа деплоймента, CI и вообще нового интерфейса.
Я пока на перепутье: продолжать ли фиксить баги и делать свои фичи, используя опенсорсные библиотеки которые последний раз обновлялись два-три года назад или пока попробовать новый опенсорс проект.
Сейчас немного перепиливаю под себя один тоже опенсорсный продукт (React/TypeScript), может, даже выложу, когда будет готово, но основная цель - сделать так, чтобы лично мне на моём локальном деплойменте было удобно его использовать. Ну и знания/опыт.
анон-левел-апер
[левел-ап]
[айти]
Вот ты знакомишься с опенсорс-проектом, видишь общую структуру, фронт и бэк, начинаешь разбираться в коде, дебажить и фиксить баги. Узнаёшь кусочек тут, кусочек там. При каком-то следующем баге ты уже примерно можешь представлять, что могло поломаться, где искать и у тебя предварительные предположения, как это можно починить.
Но вот при этом, когда ты можешь разобраться в существующем коде и что-то починить, у тебя всё равно далеко не сразу приходит понимание, как в общем и целом устроен и работает фреймворк/язык программирования.
И ты поневоле становишься "пакером". Вот тут приходят на помощь статьи по фреймворку/языку, и главное не полениться сразу же потратить время на понимание, каково общее место кусочка, который ты изучил, в большой мозаике. Лучше всего прочитать, разобраться, попробовать разные примеры самому, можно потом посмотреть видео, если есть, и записать/нарисовать диаграмму самому (разные виды запоминания и всё такое).
Так шаг за шагом создаётся ментальная карта этой области знаний. В идеале, наверное, когда столкнулся с чем-то новым, будет полезно набросать самые общие основы большой картины и понять, где место кусочка, который ты вот сейчас изучил, чтобы очертить себе границы и главные места.
[дыбр]
[фото]
На выходных ездили гулять в лес.
Прошли примерно десять километров с общим подъёмом 500 метров, видели водопады, океан, замшелые ветви и лесных великанов
анон-левел-апер
Фотографии шикарные, лес очень атмосферно выглядит. Представляю, насколько там свежий воздух
Отредактировано (2024-02-26 23:32:10)
Спасибо, анончик Да, воздух там отличный, ещё и пахнет чудесно
анон-левел-апер
[левел-ап]
[айти]
Есть два варианта сделать нужную фичу: нажимаешь на кнопку или линку в браузере, и открывается ранее сохранённое рабочее пространство.
Это 1) простая HTML-страница со списком ссылок на все пространства (template в джанго-бэкенде), список пространств приходит с вью из бэкенда и 2) UI-контролы в одном из элементов фронтенда этого веб-приложения (источник списка всех пространств всё тот же - бэкенд).
В первом варианте в адресе указываешь URL фронтенд-сервера с параметром, значение которого = айди пространства, во втором варианте вешаешь обработчик на кнопку, который вызывает функцию из реакта (фронт), загружающую это пространство.
В чём были трудности анона?
Анон забыл, вообще, напрочь, что в ссылке можно указать адрес <a href="..." с нужным URL. Анон всё пытался сообразить, как же в HTML-файле в бэкенде вызвать функцию из реакт-компонента во фронтенде
Как так вообще работает мозг, что иногда вообще забывает и не доходит до таких элементарных вещей?.. потому что ты не пользовался этим знанием, анон?
[фехтование]
Вчера впервые умудрился забыть шлем В итоге маэстра из-за требований безопасности работала со мной на поролоновых саблях (обычно для совсем новых студентов) Выполнять на них действия на клинке сложно, они короткие, гнутся, и сложновато держать игрушечную саблю как настоящую рапиру. Но это был интересный опыт, и хоть я почти весь урок казнил себя и был грустным, всё же удостоился пары похвал (после некоторого количества замечаний и исправлений).
После урока я планировал пофехтовать с Бейзадом, но из-за шлема, точнее, его отсутствия, он просто дал мне урок - продолжение всех действий на клинке (всего их девять, если не брать разновидности) с рапирой и базовые атаки с саблей.
Сабля мне пока кажется сложнее, в основном из-за изменения положения кисти и тонкостей рубящих атак (и положения руки с оружием перед выполнением атаки), особенно в зависимости от того, какую сторону противника ты атакуешь (бок, flank), внутреннюю или внешнюю.
Но под конец урока я уже выполняла атаки правильно
анон-левел-апер
[левел-ап]
[айти][опенсорс проект]
Один из моих пулл реквестов с фиксом бага наконец заехал в репу!
Другой, где я добавил возможность создавать сущности не только с контентом строго определённого типа, а с контентом разных типов, создатель проекта перевёл в драфт. Он написал, что над этим реквестом надо ещё пора поработать, но он бы хотел иметь такую фичу, так что оставит на будущее.
Всё ещё мучаю второй опенсорс проект:
нажимаешь на кнопку или линку в браузере, и открывается ранее сохранённое рабочее пространство.
2) UI-контролы в одном из элементов фронтенда этого веб-приложения
Это React + TypeScript, и в основном компоненте есть методы для загрузки данных и переменная состояния для общей сцены, которая и вмещает в себя рабочее пространство.
Я же хочу сделать загрузку пространства в отдельном компоненте. Я попробовал использовать ту же функцию-утилиту, которая используется в одном из методов главного компонента, и понял, что без переменной состояния общей сцены (часть главного компонента) она как следует не работает (это пока моё предположение, надо 100% подтвердить).
Пару дней у меня заняло разобраться (относительно, лол) в методах и функциях, которые вызывают другие методы и функции, а те другие, а те другие, и так далее. Я видел несколько новых типов, над которыми пришлось пораскинуть мозгами - что они значат, для чего они вообще
Проект немаленький, и у меня, если честно, пару раз кипел мозг. Я до конца пока не разобрался, можно ли вообще сделать загрузку пространства в отдельном компоненте и что для этого нужно. И если нет, то почему. Сложно, сложно! Особенно идти от частного к общему. Трудновато сходу быстро понять структуру и связи в таком проекте.
[левел-ап]
[спорт]
Со второй половины января я снова стал бегать по 2-3 раза в неделю. VO2 max (кардио фитнесс, сколько кислорода потребляет организм во время тренировки) с 40.7, что выше среднего, упал до 37.6 - 37.8 в феврале
В ноябре-декабре я болел, тест не показал ковид, но чувствовал я себя пару-тройку недель разбитым и усталым. Ещё и сил и энергии совсем не было, так что весь спорт, кроме фехтования, я забросил. И, скажу честно, мне было очень сложно выгонять себя бегать и ходить в серую хмарь, когда небо затянуто тучами, ветер холодный, и общее ощущение можно описать как "зябко". И когда на улице ещё нет ливня. А рыжий котик у соседей на окне спит так сладко, как умеют только котики, и от этого выходить на улицу хочется ещё меньше
Но у меня отросла отсохшая в декабре сила воли, и я снова регулярно бегаю и хожу быстрым шагом.
анон-левел-апер
Отредактировано (2024-03-06 00:13:34)
[левел-ап][дыбр]
Недавно что-то пришла мысль, что я впустую тратил время, когда работал SDET. Я приуныл. Но потом начал развивать эту мысль, и ответом на вопрос "Почему?" было "Это не то, чем я хочу заниматься сейчас" и "Эта работа дала мне недостаточно опыта, чтобы быстро и легко поменять её на другую".
Тут моё уныние слегка скукожилось
Да, сейчас я хочу заниматься другим, и это нормально - поменять род занятий, когда хочется, и вот я уже занимаюсь другим.
Опыт - 1) Очевидно, что при смене деятельности ты переучиваешься и приобретаешь новые опыт и знания 2) Всё же некоторый полезный опыт я таки приобрёл (вместе с зарплатой, хех).
Единственное, что может быть рассмотрено как потраченное время - то, что мне далеко не всегда нравилась моя работа. И я жалею, что не сменил её раньше. Но, как говорят, весь этот опыт привёл тебя в то место, где ты сейчас. И ты уже знаешь лучше, что ты хочешь и чего не хочешь.
Мог ли я поменять работу раньше? Наверное, мог. Делал ли я что-то для этого? Делал. Достаточно, сделал ли я вообще всё, что было в моих силах? Не знаю
Но я могу сделать сегодня всё, что в моих силах. И завтра. Так зачем смотреть в прошлое и сожалеть, когда сегодня можно работать ради завтра и послезавтра и множества других дней?
И вот немного хочулий могулий магнолий, чтобы отвлечься и не ныть из-за серой и зябкой ранней весны
анон-левел-апер
Отредактировано (2024-03-07 22:53:21)
[левел-ап]
[айти][опенсорс проект]
Я понял, что применял не совсем верный метод ознакомления с кодом проекта. Это было неправильное "от частного к общему".
Нашёл функцию, по идее похожую на нужную мне, и начал разбираться, как она работает в общей картине основного большого компонента приложения, и как работает сам этот компонент. Стало сложно и абстрактно, застрял.
Надо было начать с Inspect элемента в UI (совсем рядом с которым я ещё позже и разместил мои контролы для загрузки, потому что они выполняют очень похожие действия), который точно делает то, что мне надо, просто с другим типом входных данных (файл, а не ответ бэкенда на мой запрос), найти его в коде, где декларируется, где и как используется и понять, как он загружает рабочее пространство из файла (и можно ли так же загрузить пространство из бэкенда).
И ведь я даже начал это делать на прошлой неделе, но вместо того, чтобы полностью пройти этот путь, я бросил его и взял и перескочил на другой
Вот это был бы более рабочий подход "от частного к общему".
Консистентность - это порой то, чего мне не хватает в моём левел-апе((
В итоге я выяснил, что в функции, которая делает именно то, что мне нужно, используется такой объект, который манипулирует общим состоянием через свои внутренние функции, и эти функции не принимают параметры извне. И использует эти объекты в моём компоненте некий менеджер, который имеет доступ к состоянию общего большого компонента (речь про его состояние, когда загружаем рабочее пространство).
Мне нужно передавать айди рабочего пространства в запросе к бэкенду для загрузки этого пространства (по нажатию на контрол с айди), так что вариант, где я не могу явно передать параметр, не подойдёт.
С загрузкой тех же данных из файла это сделано без явной передачи параметров типа имени файла, там используется функция, обрабатывающая выбор и открытие файла, который вот юзер открыл, она сама знает какой лол
В итоге мой следующий шаг - разобраться, как в Реакте используется useContext и как менеджер в моём компоненте работает с общим состоянием.
анон-левел-апер
Отредактировано (2024-03-08 08:01:24)
[левел-ап]
[айти][опенсорс проект]
Итак, я разобрался, что такое useContext в Реакте, для чего он нужен, и как менеджер в моём компоненте работает с общим состоянием. Менеджер в данном случае - инстанс класса, который в конструкторе принимает состояние рабочего пространства, его элементы и функцию, которая обновляет рабочее пространство (после загрузки другого, сохранённого пространства, например) И этот инстанс, хранящий в себе нужное состояние и элементы, передаётся с помощью useContext в компонент ниже самого основного компонента, вот как там происходит обновление общего состояния.
Правда, эта функция, которая обновляет пространство, принимает аргумент кастомного типа, но я разобрался и увидел, что этот тип представляет собой объект вида {состояниеПространства, списокЭлементов, ... }, так что можно создать такого вида объект из тела респонса запроса к бэкенду.
Разобраться было непросто, я и сейчас не до конца уверен, что разобарлся как следует, но теперь у меня есть ниточка, и я хочу проверить, правильно ли моё предположение. Вообще это очень классное чувство, когда думаешь, что нашёл путь решения проблемы, казавшейся неприступной.
анон-левел-апер
[левел-ап]
[айти][опенсорс проект]
Сделал! Заработало!
Теперь сохранённые рабочие пространства загружаются через реквест к бэкенду при нажатии на кнопку с айдишником в браузере!
И я узнал про ещё одну классную вещь в Реакте
Остались задачи поменьше и деплоймент на мой локальный сервер в докер-контейнере. Но сейчас я немного отдохну и поеду на фехтовач.
анон-левел-апер
[дыбр]
В выходные съездили в Сан Франциско, погуляли по крутым улицам, поглазели на викторианские домики и зашли в магазин со всяческой утварью для приготовления кофе. Купили большой френч пресс (чтобы кофе из него хватало на двоих), посмотрели на всевозможные чайники, фильтры, хитрые стаканы с соломинками. В дальней части шла лекция, и народ слушал очень увлечённо. Совсем недавно заказали в этом же магазине кофемолку, она нам понравилась, и вот мы решили заехать в сам магазин и посмотреть всё вживую.
Кофемолка кстати очень милая и стильная, напоминает здание в стиле конструктивизма
Вместе с кофемолкой заказали вкусный бескофеиновый кофе в зёрнах, вот и заценили. Свежеобжаренный и свежепомолотый, он очень понравился. Привкус орехов, лёгкая кислинка, немного дымное послевкусие. До этого мы покупали кофе свежей тёмной обжарки, мололи его в магазине же и заваривали в кемексе. Но по сравнению с этим новым кофе он как будто пережжённый. И в кемексе пока не получилось сделать так же вкусно, как во френч прессе.
С бескофеиновым кофе, как я понимаю, это сложнее, потому что надо ещё найти хороший бескофеиновый, ну вот вроде повезло. Обычный, с кофеином, мы тоже пьём, но только утром и не слишком много. А так как кофе любим, то весь остальной день принадлежит бескофеиновому))
Мне нравится атмосфера в некоторых районах Сан Франциско: ты поднимаешься по холму всё вверх и вверх, и кажется, что это уже совсем-совсем край земли, а дальше только голубое небо и солнце. И безмятежная тишина вокруг. Но вот ты, наконец, поднялся, и тебе открывается улица с нарядными светлыми домиками и цветущими суккулентами.
Ещё съездили рано утром погулять в один из местных парков: холмы (пока ещё зелёные), оранжевые маки, люпины, зеркальная гладь залива, болота внизу с множеством замощенных досками тропинок. И птицы! Цапли, кулики, канадские гуси, дикие индюки и множество других
В визитор центре очень интересная постоянная экспозиция, посвящённая местным индейцам: история, карта, где какие племена жили, диорама, предметы быта, плакаты-статьи, маленькая доска с фразами на их языке и их значением на английском. Снаружи был стол, где джентльмен, принадлежащий к одному из плёмен (охлоны), очень увлекательно рассказывал и показывал (на столе было много предметов), как жили его предки, как жил он сам в детстве, как индейцы живут сейчас. Они проделали значительную работу (и продолжают) по сохранению языка, традиций и культуры.
анон-левел-апер
[левел-ап]
[айти][опенсорс проект]
Начал работать над деплойментом.
Хочу два контейнера, один для фронта, другой для бэка. И реверс-прокси перед бэком.
Сложно, когда прошлый раз ты трогал докер несколько лет назад -_-
Сначала я начал разбираться с nginx, хочу использовать его. Для разминки надо было поставить и настроить его, сделать так, чтобы отдавал статические файлы из моего фронта.
Ну что ж, я затупил с тем, откуда их брать и как их делать.
В моей голове упорно крутилось слово bundle, и я начал искать по нему, разбираться, как сделать его из реакт-приложения. Начал изучать приложения, которые берут и делают тебе его из твоего проекта.
В какой-то момент я понял, что зашёл в тупик, и пошёл с вопросом к мужу.
Оказалось, можно просто сделать билд через yarn build, взять файлы из директории build и готово
Как я мог узнать про это сам, начни я копать в другом направлении?
Зайти в Dockerfile проекта и посмотреть, что там за команды для сборки (пусть build:something), а потом зайти в package.json и посмотреть там в scripts значение ключа build:something, какие команды выполняются для этой команды.
Просто использовать команду.
ВСЁ.
Тяжело, когда ты не знаешь и не догадываешься, что делать, чтобы достичь цели.
Это как стоять на земле и смотреть на парящий островок, куда тебе надо бы забраться, но вот только ты не видишь ничего между собой и этим островком, только пустоту, за которую не ухватишься.
А потом, когда уже знаешь подходы и инструменты, то в руках словно появляется лестница или альпинистское снаряжение, хех.
Сейчас у меня есть контейнер с фронтом.
Разобрался, как создать для него Докерфайл, взять образы node и nginx, скопировать код фронта в контейнер, сделать билд и положить артефакты в корень nginx, чтобы когда откроешь адрес в браузере, там открылось твоё приложение.
Также есть контейнер с бэком.
Разобрался с Докерфайлом для него, взял образ питона, выставил пару переменных среды, скопировал в контейнер файл requirements.txt и поставил зависимости, скопировал код и запустил Джанго сервер
Также использую docker compose, чтобы удобно работать с несколькими контейнерами. Прописал настройки в docker-compose.yml, для фронта и бэка отдельные сервисы. Базу данных оставил в том же контейнере, что и бэк, у меня маленькое приложение чисто для себя.
Расстраивает, что простые по идее вещи порой занимают столько времени
Осталось разобраться, как спрятать бэк за реверс-прокси, и чуть поменять UI во фронте.
анон-левел-апер
[левел-ап]
[айти][опенсорс проект]
Искал, как запилить реверс-прокси для веб-приложением в докере.
Первые результаты выдачи - статьи с примерами, где даны конфиги. Я читаю конфиги nginx'а, который выкладывают авторы, и я не понимаю, что означает... примерно всё. Зачем нужен блок upstream, для чего нужно поле location и что происходит с его значением, почему в конфиге несколько блоков server.
И авторы не объясняют это в своих статьях. Мол, скопируйте к себе, потом выполните эти вот команды, и у вас должно заработать, а на экране появятся вот такие строчки. Вуаля, вы великолепны!
ПОЧЕМУ.
КАК.
ЗАЧЕМ.
Как же меня бомбит
Я не хочу тупо копипастить, я хочу понять, что в конфиге что означает, и почему конфиг составлен именно так.
Ненавижу такие говно-статьи с говно-контентом, а поди ж ты, первые в выдаче
Моей ошибкой в методе поиска информации было то, что за конкретными объяснениями я не пошёл на официальный сайт nginx и не посмотрел beginner's guide. Вообще, это стоит сделать привычкой - идит и читать официальные доки, если есть - начинать со гайдов для начинающих.
Возможно, авторы статей предполагают, что их читатели и так уже все знают, поэтому не нужно объяснять, что и почему Но я встретил большой свежий тред на реддите, где люди бомбились по примерно такому же поводу, так что не самое удачное предположение, а для начинающих, кто хочет разобраться, эти статьи практически бесполезны, давая лишь общее направление.
Вчера расстроился из-за этого, чувствуя себя тупым.
Сегодня морально полегче, но с утра болит голова, и эмоционально я как-то всё ещё близок к донышку. Хочется поискать утешения в любимых книгах и музыке (как разберусь в конфиге лол). Что хорошо, сегодня будет фехтовач, он-то меня наверняка вытащит из уныния.
анон-левел-апер
[левел-ап]
[айти][iOS]
Закончил с предыдущим проектом (напишу отдельно) и начал новый!
И не просто проект, а ещё и курс по совершенно новой и классной вещи - языку Swift и разработке приложений под iOS.
Начал с позапрошлого понедельника, и это просто восторг! Курс (книга в Apple Books) замечательный: очень понятный, подробный, написанный отличным языком. После каждой главы - лабы, как раз на границе лёгкого и челленджа. Мне показалось очень ценным то, что ты сразу закрепляешьзнания лабами, что и в самих главах есть маленькие примеры, и что ТАМ ВСЁ ПОНЯТНО, не надо ломать голову над непонятным концептом или примером, к которому просто нет объяснений.
Обожаю осваивать новое и интересное, а когда ещё и всё систематизировано, продумано и толково сделано, то вообще восторг Ну и когда задания как раз на границе возможностей и интереса: ты можешь сделать эту классную вещь, используя то, что ты узнал, чему научился и чуточку подумав (и не застрять надолго, лол, потому что про какую-то неочевидную вещь просто не упомянули)
Неделю я осваивал основы swift и Xcode, делал лабы и проходил руководство, как делать своё приложение - идея, дизайн, прототип, руководства Apple по дизайну
А потом начал делать своё первое приложение, и вот тут дорога пошла в горку
Идея очень простая, получить на умных часах текущий пульс и послать юзеру сигнал, если пульс выше или ниже заданной границы.
Что сделал анон-левел-апер? Вместо того, чтобы действовать уровень выше себя прежнего, он действовал как старая версия себя: вместо того, чтобы просто сделать самое простейшее Hello World и убедиться, что оно запускается, он начал разбираться, как снимать пульс и набросал код, который к концу дня ни разу не пробовал запустить Потому что интересно, дай-ка разберусь в этом, а потом в том, дай-ка кодец примерный набросаю, совсем немного, опа, уже 6 вечера
Я убеждаюсь, что некоторые важные вещи, которые вроде и кажутся интуитивными и очевидными, на самом деле надо записывать и держать под рукой, чтобы знать, как правильно жить разумнее делать проект.
Лабы были интересными и понятными. А вот Observed/Observable объекты и публикуемые проперти ощущались как хороший такой скачок в глубину, когда я начал разбираться, как делать реальное приложение.
Забавно вышло с тем, как я искал, где же в приложении должна быть логика. Пытался найти, как привязать вью к контроллеру, предполагая, что именно так надо делать (MVC, все дела). Предположение оказалось неверным, вью к контроллеру уже не привязывают Из MVC убрали C, и теперь swiftUI напоминает тот же Реакт.
К счастью, в доках и обсуждениях всё было объяснено весьма понятно, и разобраться, как запустить приложение и сделать что-то простое, оказалось не слишком сложно.
Дело идёт быстро, и чуть больше, чем за неделю у меня уже есть минимально готовый продукт, сегодня вечером как раз ходил (точнее, бегал) его тестировать - работает ли всё, как нужно, насколько удобно и приятно им пользоваться. И я доволен!
Конечно, остаются вещи, которые буду менять/улучшать потом, но сейчас самый основной функционал, ради которого и пишется приложение, работает. Дальше дело за отзывами самых первых пользователей.
Хоть и времени прошло совсем немного, но мне уже очень нравится разработка под iOS, подозреваю, из-за того, как сделана среда разработки и как УДОБНО Ты можешь мгновенно видеть свою работу на экране симулятора девайса в превью, смотреть на изменения в UI не запуская код, и вот это просто отлично закрывает этот промежуток абстракции между твоим кодом и тем, как выглядит результат его работы. Не надо держать в голове и представлять, можно просто посмотреть и потыкать курсором Это значительно помогает. А если говорить о приложении для телефона, а не для часов, там ещё удобнее, и возможность в редакторе тащить линию от условной кнопки на экране в код, чтобы описать логику её работы, то для меня это божественно: меньше слоёв абстракции, больше наглядного взаимодействия с объектами реального мира
Хех, узнал кстати недавно от мужа, что такой концепт софта называется WYSIWYG (what you see is what you get), и жалею, что не попробовал раньше. Но как снова буду делать что-то на Реакте, обязательно попробую :3 Это неплохо так облегчает и ускоряет работу
Взял за привычку не бояться потратить «слишком много» времени и внимательно прочитать доки, пока не станет совсем понятно (в книге это указано именно как правильная практика - прочитать доки, разобраться в большой картине и понять, что к чему), и это ощущается тоже классно - обычно после них на многие вопросы появляются ответы, с ментальной карты исчезают белые пятна. Да и здорово они написаны, хоть я бы и не отказался от большего количества примеров
анон-левел-апер
[левел-ап]
[айти][iOS]
Конечно, по мере работы с iOS средой разработки, розовые очки понемногу выцветают Пока что основная моя претензия - это что в хорошей теоретической документации порой не хватает примеров.
Ещё неудобства могут доставить некоторые не совсем очевидные вещи. Например, есть аргумент типа словарь, где ключи - строки, значение может быть любым. Выглядит это как [String:Any]. И он должен таким быть в определённых местах. Вот я решил отрефакторить немного код, написал Int вместо Any, потому что я же целое число передаю! В итоге у меня поломалось то, что работало, а я какое-то время не мог понять, почему В итоге нашёл мельком упомянутое, что мол, в именно таких случаях должно быть [String: Any]. Не знаю, может я не прочитал в доках про это, а если и прочитал, то не понял а если и понял, то не так лол
Ещё сегодня от Xcode постоянно отваливались мои часы, физический девайс, так что запускать и дебажить на них приложение было нелегко. Нашёл большой свежий тред, где народ жаловался на это, кто-то предлагал решения, но помогали они далеко не всем. В итоге я ребутнул комп, и всё снова заработало
В треде бомбились в адрес разработчиков инструментов для разработчиков, мол, ну Эппл, ну что же ты, ну мы уже привыкли, у нас высокие ожидания от тебя! Та же реакция у многих и на доки тоже, да. Не знаю, насколько большая команда занимается этими девелоперскими тулами, но подозреваю, что ресурсов у них на некоторые вещи не хватает, потому что зерно истины в жалобах на форумах есть.
Но мне всё равно нравится этими инструментами пользоваться. Запилил приложение-компаньон для телефона, очень простое. Сейчас обновляю основное приложение. Было бы здорово отправить его в app store, конечно. Но для начала надо бы дать попользоваться юзерам, кто потестировал бы его, получить фидбек. А для распространения своего приложения до отправки в app store тоже ппц много опций, в которых я пока тоже не до конца разобрался.
[Спорт]
Так вышло, что в iOS я углубился с увлечением, и прогулки стал пропускать. Мне жалко тратить утреннее время на них, если честно. Зато хотя бы не отказался от бега. Сейчас всё цветёт, волшебно пахнет, и дни стали длиннее, так что бегаю и наслаждаюсь золотым часом. И VO2max даже немного пошёл вверх, но как-то медленно, мотыляется около 38, падая до 37.7 порой. Всё же стараюсь не пропускать физические тренировки (включая фехтовач). По выходным выбираемся походим по горам и лесу, всё хлеб, но лучше вставать очень рано, иначе на тропинках сплошные люди и никакой тишины
анон-левел-апер