Pull to refresh
48
0.1
Степанченко Александр@kellas

Full stack web developer

Send message

https://electric-sql.com/blog/2024/11/21/local-first-with-your-existing-api

То что вы описали я наблюдал и в разработке без ИИ.

На счёт того что "пропали споры об архитектуре" может оно и к лучшему, знаете у нас в какой-то момент они тоже пропали ещё до распространения ИИ, то ли зрелость то ли выгорание))

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

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

Никто не деградирует, скорее наоборот, прост "мыслетопливо"(по Дорофееву) тратится на другие вещи и эти перемены можно даже назвать развитием.

Ой, да вы и фронтенд как попало делаете)

На самом деле это очень странно - тащить на android типа нативный UI из iOS . Это примерно то же самое что в iOS клиенте сделать material ui. Приложение выглядит чужеродно. И всё равно это не liquid glass, к которому тоже неоднозначное отношение к пользователей iOS, а пародия на него.

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

Лучше многих других приложений но тем не менее есть серьезные и не очень недостатки которые бросаются в глаза.
- не работает нативная кнопка телеграм "назад" а так же жест/свайп назад, по привычке хочешь вернуться на экран назад - в итоге закрываешь приложение. Это почти что рефлекс, ваша кастомная кнопка "назад" не решает проблемы.
полагаю с самого начала не заложили нормальный url-роутинг теперь придётся кучу всего переделывать.

- пропишите * { -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none; - а то все кнопки при тапах мигают . и user-select: none - сейчас далеко не во всех нужных местах + желательно *, *::after, *::before {-webkit-user-drag: none; -webkit-app-region: no-drag;}

Ощущение "как нативное" из-за всего этого отсутствует.

Плюс вам за Indexeddb, :active { transform: scale(... на кнопках , вибро отклик и анимации появления элементов на странице.

ну и по мелочи:
- стоит включить disableVerticalSwipes, и Fullscreen вам точно нужен?

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


Прорекламирую заодно свой слайдер - https://github.com/alexstep/swipe-slider возможно вам для раздела с календарем подойдёт

Да, согласен, телодвижений приходится совершать больше.

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

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

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

Я советую только лишь избавиться в вашем коде от .forEach по коллбэкам и использовать нативный event emmiter, остальное(proxy/weakref) оставить как есть, а пример кода который я прислал - он вообще совсем другой и я хотел им показать только то как используется eventTarget

Принципиальное отличие в том, что когда ты используешь встроенный API событий (EventTarget, addEventListener, dispatchEvent, CustomEvent), ты работаешь через движок браузера, а не через JS-слой. Память под обработчики выделяется внутри C++ части движка, сборщик мусора освободит обработчик автоматически, если emitter или handler больше не достижимы из кода. Даже если ты не вызовешь removeEventListener, при уничтожении самого EventTarget вся его таблица слушателей уничтожается целиком. А это значит что никаких утечек при удалении стора/компонента.

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

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

на уровне стора диспатчим

function createStore(initial = {}) {
  const state = structuredClone(initial);
  const emitter = new EventTarget();

  function set(partial) {
    Object.assign(state, partial);
    emitter.dispatchEvent(new CustomEvent('change', { detail: state }));
  }

  function subscribe(listener) {
    const handler = e => listener(e.detail);
    emitter.addEventListener('change', handler);
    listener(state); // вызвать сразу
    return () => emitter.removeEventListener('change', handler);
  }
  return { get: () => state, set, subscribe };
}

подписываемся на стор
subscribe возвращает функцию для отписки

Думаю лучше использовать Event чтобы не морочиться с хранением слушателей

откликнулся уже на 700+ вакансий (и это не шутка). Но дело в том, что на одну позицию приходится по 300–1000 откликов

Вы же не можете работать сразу в 700 компаниях верно, но тем не менее 700 откликов сгенерировали только вы один, 699 из которых "сгорят" как только вы найдете 1 работу, так что то что на какие-то вакансии по 1000 откликов ничего вообще не значит, потому что каждый из этой тысячи отправил отклик ещё на сотни других позиций, итого каков шанс что будет выбрана именно эта? это как в тиндере - иллюзия популярности и выбора )

Идея статьи отличная, а инструкция которая вроде как должна быть простой - усложнена.

Докер ставится одной командой - curl https://get.docker.com | sh

а в docker-compose.yml используем valian/docker-nginx-auto-ssl

services:
  nginx:
    image: valian/docker-nginx-auto-ssl
    environment:
      ALLOWED_DOMAINS: '*'
    volumes:
      - ./site:/var/www/default
      - ./.cache/nginx/ssl:/etc/resty-auto-ssl
      # - ./openresty.conf:/usr/local/openresty/nginx/conf/server-proxy.conf
    # network_mode: host
    ports:
      - 443:443
      - 80:80
    restart: always
    logging:
      driver: json-file
      options:
        max-file: '3'

и можно не думать про обновление сертификатов

Попробуйте calendar0bot в телеграм , сэкономите кучу времени на внесении событий

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

Делаете в ней топик "купить"

Каждое сообщение - отдельный товар

Двойной тап по сообщению чтобы поставить реакцию и отметить как выполненное / купленное

Вы как-то упустили момент что эти "волки" далее вполне успешно работают. Их не увольняют. И растут так же со временем.

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

Для ленивой инициализации лучше динамический импорт файла с компонентом использовать.

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

Понятие токсичности сейчас очень сильно размылось и используется вместо "не нравится"...

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

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

Это чаще всего человек с реально хорошими софт-скилами, и про таких людей не говорят "да он токсик", а скорее скажут "черт возьми а он прав!"

там обращение к document идет не в contructor класса, а начиная с connectedCallback - который вызовется только после загрузки dom

короче можно писать прям так

import './sub-component'

customElements.define('my-component', class extends HTMLElement { 
connectedCallback(){
  this.innerHTML = '<sub-component></sub-component>'
}
})


и не морочится с порядком их регистрации
весь index.js из статьи - просто лишний код

1
23 ...

Information

Rating
3,247-th
Location
Калининград (Кенигсберг), Калининградская обл., Россия
Date of birth
Registered
Activity