All streams
Search
Write a publication
Pull to refresh
11
0.6
Send message

С формиком понятно, а yup-то чем плох?

Каждый раз, когда речь заходит об алгоритмических задачах, начинается визг в духе "какое отношение это имеет к реальным задачам?!?!". Почему? Как вы себе это объясняете, когда возмущаетесь?) Вам кто-то перед собеседованием обещал лайвкодинг исключительно с типичными задачами из жизни фронта? А вдруг и правда придётся иногда писать какие-то непростые алгоритмы?

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

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

Честно, трудно представить себе человека, который хотя бы с 1+ годом опыта не способен выполнить приведённую в материале задачку за 10 минут. И поводы гореть могут быть только у тех, кто на подобном зафакапился)

Только не "дети ленивые", а "люди ленивые". Ленивый в учёбе ребёнок это безусловно следствие лени родителей в том, чтобы элементарно заниматься его развитием. И заслуга учителей, конечно. Подобное исправимо, ребёнка хотя бы можно заставить мало мальски учиться, пусть это и не самый лучший вариант. И заинтересовать ребёнка конкретным предметом тоже, надеюсь, никогда не поздно, если очень захотеть. А вот взрослого заставить напрягать мозги, когда нужно быстренько умножить 25 на 15, уже никто не заставит. А если этот взрослый ещё ребёнку говорит "да нафиг тебе математика, есть же калькулятор" - остаётся только грустить.

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

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

Так что дело не в "мне это не надо". И даже не в математике как таковой) и предположу, что не в том, что кто-то умный, а кто-то не очень. На мой взгляд дело в том, что человек слишком ленив, чтобы лишний раз запустить мыслительный процесс для освоения чего-то нового. В школьной математике нет ничего такого, чего не может освоить средний ученик. Не любить и грезить этим, нет! Просто освоить. Плюс это первый предмет, который учит ребёнка логически мыслить: "у Пети было 10 яблок" и всё такое. А отупевший на дистанции мозг всего лишь последствия подобной лени. Этот самый мозг, как и тело в целом, нужно поддерживать в тонусе, а позиция вида "зачем считать в уме, у меня же есть калькулятор" как раз лишает его возможности лишний раз приложить усилие.

И ведь так говорят взрослые люди, +- мои и ваши ровесники! А теперь представьте уровень логического мышления человека, который уже в школе всё делал не с помощью своего мозга, а с помощью подсказок чат-бота. То есть в самые благоприятные для развития мозга времена новые нейронные связи толком не строились, привычка думать самостоятельно толком не сформировалась. Зачем? Есть же некий инструмент, который подумает за меня. Прямо как калькулятор, когда нужно посчитать что-то довольно простое

Удручает даже доставание телефона с последующим включением калькулятора для операции в духе 700/5 - периодически встречаю что-то подобное. А решение всех базовых задач исключительно с помощью ИИ, не желая хоть немного напрячь мозг, удручает кратно сильнее)

const Display = React.memo(function Display({ data }) {
  console.log('Рендер Display');
  return <div>{data.value}</div>;
});

function App() {
  const [count, setCount] = React.useState(0);
  const data = React.useMemo(() => ({ value: 'Статичный текст' }), []);

  return (
    <div>
      <Display data={data} />
      <button onClick={() => setCount(count + 1)}>Увеличить</button>
    </div>
  );
}

А здесь useMemo чтобы что? Чтобы на каждый рендер была проверка пустого массива зависимостей? Почему не в реф?

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

Да камон, с 21 года этот товарищ пишет про ИИ - очевидно же, что есть предвзятость в этом вопросе. Ну и как дела, за 4 года заменили ИИ/нейросети программистов?) тот же вопрос к тем, кто всё это время строчит комменты о том, что вот уж теперь-то точно программисты не нужны)

Обычно я предпочитаю дожидаться реальных результатов тестирования. Однако презентация с последнего дня рождественского мероприятия OpenAI сломала все барьеры.

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

Вот вы вроде выше про спорт правильные вещи писали, а дальше начали бредить) сгребли в одну кучу эргономичные девайсы и механику(какая здесь связь?), причём аргументы исключительно не по делу

Сплиты/вертикальные мыши не сделают ни код лучше, ни здоровья не добавят.

Просто вера во все это (и ещё в тип свичей и как их смазывать) кск в Святой Грааль меня всегда забавляла.

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

А вот валик под запястье, например, разгрузит руки и не даст развиться одному очень опасному недугу

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

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

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

Очень крутое погружение в тему) прям лайк. я тоже усомнился и побежал проксировать useCallback, чтобы убедиться, что ещё до вызова самого useCallback анонимная функция уже существует в массиве аргументов apply. Так и есть)

Я рекомендовал бы вам прочитать статью про работу AST (на ней работает большинство современных js-фреймворков, типа React, Vue, Svelte и другие)

Тоже странное заявление, ведь AST используется в самих языках программирования) в том числе в JS. Очевидно, что всё, что написано на таком языке, на этапе парсинга превратится в AST. При чём тут фрейвморки - остаётся только гадать)

Простите, но вы не правы. Ваши доводы логичны, но вы упускаете одну важную деталь, из-за чего все ваши выводы неверны

Да нет, скорее вы упорно не хотите понимать, как работает javascript) jsx или нет - это всё ещё JS. и в моём мире функция useCallback с входными аргументами X и Y(где X анонимная функция и Y массив зависимостей) в момент вызова уже получает на вход два этих аргумента. То есть она не может вызваться только со вторым аргументом, а когда тот не прошёл проверку сказать "ну лааадно, давайте сюда первый, запишу его вместо старой функции". Понимаете? Как только useCallback был вызван, он уже получил на вход всё необходимое, в том числе новую анонимную функцию, на каждый рендер. Достаточно заглянуть в исходники;)

Достаточно простое доказательство этого - это новая версия React, в которой, как пообещали разработчики, useCallback писать не потребуется, ко функциям внутри компонента будет автоматически применяться мемоизация на основании анализа кода компилятором.

Доказательство простите чего? Того, что анонимная функция не будет создаваться каждый раз? Не вижу связи абсолютно. Если вы не читали о том, как это будет работать - оно просто само будет решать, что обернуть в useCallback(или в прочие мемоизации), а что нет. Не представляю, как это может что-либо доказывать)

При последующих рендерах React будет:

  • проверять, изменились ли значения в массиве зависимостей;

  • если ничего не изменилось, он возвращает тот же экземпляр функции, что и при предыдущем рендере;

  • если что-то изменилось, React создает новый экземпляр функции и возвращает его.

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

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

ни дать, ни взять - всё по делу)

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

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

Я это всё к тому, что удобное рабочее место - это замечательно, бесспорно. Но оно лишь немного замедлит скорость роста количества проблем со спиной) А решить вы их сможете только движением

где живые примеры? есть код - хотелось бы перейти по ссылке и увидеть, как это работает) обычно делают так. по теме советую почитать ещё вот этот материал https://habr.com/ru/articles/829220/

Я wp и php не использовал, но вам точно обязательно сначала брать ссылку на трек в стриминговых сервисах(видимо) через php, класть её в атрибут href, а потом искать все ссылки через document.getElementById(), чтобы в них проверить отличие href от пустой строки? Будто бы где-то по дороге можно было было создать к примеру словарь по тем же id стримингов, с boolean флагами о том, была ли получена ссылка или пустая строка.

Скрытый текст
if(document.getElementById("streaming-link-amazon").getAttribute("href")!=="") {
	document.getElementById("streaming-link-amazon").style.display = "inline-block";
}
if(document.getElementById("streaming-link-vk-music").getAttribute("href")!=="") {
	document.getElementById("streaming-link-vk-music").style.display = "inline-block";
}
if(document.getElementById("streaming-link-ya-music").getAttribute("href")!=="") {
	document.getElementById("streaming-link-ya-music").style.display = "inline-block";
}
if(document.getElementById("streaming-link-soundcloud").getAttribute("href")!=="") {
	document.getElementById("streaming-link-soundcloud").style.display = "inline-block";
}
if(document.getElementById("streaming-link-bandcamp").getAttribute("href")!=="") {
	document.getElementById("streaming-link-bandcamp").style.display = "inline-block";
}
if(document.getElementById("streaming-link-beatport").getAttribute("href")!=="") {
	document.getElementById("streaming-link-beatport").style.display = "inline-block";
}
if(document.getElementById("streaming-link-apple-music").getAttribute("href")!=="") {
	document.getElementById("streaming-link-apple-music").style.display = "inline-block";
}
if(document.getElementById("streaming-link-spotify").getAttribute("href")!=="") {
	document.getElementById("streaming-link-spotify").style.display = "inline-block";
}
if(document.getElementById("streaming-link-youtube").getAttribute("href")!=="") {
	document.getElementById("streaming-link-youtube").style.display = "inline-block";
}
if(document.getElementById("streaming-link-deezer").getAttribute("href")!=="") {
	document.getElementById("streaming-link-deezer").style.display = "inline-block";
}
if(document.getElementById("streaming-link-promo-dj").getAttribute("href")!=="") {
	document.getElementById("streaming-link-promo-dj").style.display = "inline-block";
}

Ну и само собой вот такого быть не должно, можно же вынести все id в массив(или document.getElementsByClassName() в вашем случае прекрасно сработает), пройтись по нему циклом и выполнить все те совершенно одинаковые проверки и операции. Зачем копипастить код, что случилось с DRY? Кстати подход массив + цикл позволил бы вам и сами ссылки таким же образом отрисовать

Information

Rating
1,810-th
Registered
Activity

Specialization

Frontend Developer
Senior
JavaScript
React
HTML
CSS
Adaptive layout
SCSS
TypeScript
Redux
Webpack
Vite