За 15 лет привыкаешь что мир программирования это не розовые пони, и часто тратить две недели на рефакторинг куска говна чтоб реализовать хотелку бизнеса слишком долго/дорого. И с чего бы это код вызывал какие-то чувства. Это просто работа.
Ладно если пишешь на одном языке, а если их три и это только повседневные. Типа java, kotlin, typescript. И мучительно вспоминаешь уже завезли в java elvis или все еще страдаем.
Я программирую уже лет 15, примерно с марта оплатил подписку на ChatGPT 4.0. Это просто охрененный инструмент который до сих пор многие недооценивают. Я использую его каждый день на работе и до сих пор нахожу ему все новые и новые применения. Вот лишь небольшой список того, что он умеет делать на уровне "production ready"
генерация тестов
генерация кода согласно вводных
анализ и пояснение написанного кода
анализ фрагментов архитектуры
обсуждение вариантов реализации с аргументацией за и против
составление UML диаграмм
Единственный момент который нужно держать в голове, что он не сделает за вас всю работу. Он в душе не знает про ваши критерии качества. Но если вы можете пояснить почему сгенерированный код вас не устраивает и как вы хотите - он перепишет за считанные секунды. Если вы научитесь использовать этот инструмент, чат подымает вас на следующую ступеньку. По качеству взаимодействия ChatGPT уже превосходит среднестатического мидла.
ВАЖНО! Чат 3.5 это полнейший шлак, с ним невозможно работать.
Пример
Запрос
можешь пояснить что делает функция
export function enrichObject(object: any, propertyName: string, formula: string, defaultValue?: string) {
if (formula.trim() === "")
return
let evaluation = formula
let match = evaluation.match("([a-zA-Z][\\w]*)");
while (match) {
const value = object[match[1]]
if (value == null) {
object[propertyName] = undefined
return
}
evaluation = evaluation.replace(new RegExp("([a-zA-Z]\\w*)"), value)
console.debug(`${value} - ${evaluation}`)
match = evaluation.match("([a-zA-Z][\\w]*)");
}
try {
// eslint-disable-next-line no-new-func
const result: number = Function("\"use strict\";return (" + evaluation + ")")();
object[propertyName] = Number.isFinite(result) ? result : Number(defaultValue);
} catch (e) {
console.warn(`Формула для свойства ${propertyName} задана неверно. Пожалуйста проверьте выражение: ${formula}`)
}
}
Ответ
Эта функция, `enrichObject`, принимает на вход четыре параметра:
1. `object`: объект для обогащения,
2. `propertyName`: свойство объекта, которое будет обновлено,
3. `formula`: строка, которую мы хотим вычислить и установить в качестве значения свойства объекта,
4. `defaultValue`: необязательное значение по умолчанию, которое будет использоваться, если формула выдаст бесконечное значение.
Функция работает следующим образом:
- Она проверяет, если `formula` является пустой строкой, и если это так, то функция ничего не делает и просто возвращает управление.
- Затем она начинает процесс подстановки значений переменных, найденных в `formula`, используя значения этих переменных из `object`.
- В процессе подстановки, если функция обнаруживает, что какое-то значение равно `null`, то она устанавливает свойство объекта, определенное `propertyName`, в `undefined` и возвращает управление.
- После того как все подстановки выполнены, функция пытается вычислить получившееся выражение. Если вычисление происходит успешно, она устанавливает свойство объекта `propertyName` в вычисленное значение. Если результат вычисления является бесконечностью, то она устанавливает `propertyName` в `defaultValue`. Если при вычислении происходит ошибка, она выводит предупреждение в консоль.
Таким образом, эта функция используется для динамического вычисления выражения, указанного в `formula`, и обновления свойства `propertyName` объекта на основе этого вычисления. Все переменные в `formula` должны существовать в `object`.
Запрос
я хочу изменить эту функцию таким образом, чтобы источник свойств и объект для обогащения были двумя разными параметрами
Ответ
Для изменения функции enrichObject таким образом, чтобы источник свойств и объект для обогащения были двумя разными параметрами, вы можете просто добавить еще один параметр функции. Давайте назовем его sourceObject.
Функция тогда будет выглядеть так:
export function enrichObject(object: any, sourceObject: any, propertyName: string, formula: string, defaultValue?: string) {
if (formula.trim() === "")
return
let evaluation = formula
let match = evaluation.match("([a-zA-Z][\\w]*)");
while (match) {
const value = sourceObject[match[1]]
if (value == null) {
object[propertyName] = undefined
return
}
evaluation = evaluation.replace(new RegExp("([a-zA-Z]\\w*)"), value)
console.debug(`${value} - ${evaluation}`)
match = evaluation.match("([a-zA-Z][\\w]*)");
}
try {
// eslint-disable-next-line no-new-func
const result: number = Function("\"use strict\";return (" + evaluation + ")")();
object[propertyName] = Number.isFinite(result) ? result : Number(defaultValue);
} catch (e) {
console.warn(`Формула для свойства ${propertyName} задана неверно. Пожалуйста проверьте выражение: ${formula}`)
}
}
Теперь функция enrichObject принимает два разных объекта: object (объект для обогащения) и sourceObject (источник свойств). Значения переменных для подстановки берутся из sourceObject, а обновленное свойство записывается в object.
Вы можете принести свой код и спокойно пообсуждать его. Какая разница за что "цепляться". По своему опыту такие собеседования очень комфортные как для соискателя так и для собеседующего и дают не меньше информации. Традиционно это выглядит так: "наш джун написал вот такой код, что вы думаете на этот счет".
Отлично сказано про "Сеньор мышление", только к сожалению я видел очень мало разработчиков, позиционирующих себя как сеньоры и думающие так. Куда чаще "надо больше оверинжениринга и модных технологий".
Грамотный юрист должен понять задачи и возможные риски каждого участника (не только своего клиента), оценить их и найти тот единственный вариант партнерства, который устроит всех.
Как правило существует много больше одного варианта партнерства, приемлемого для сторон. И уж точно юрист одной стороны не является царем и богом чтобы за "всех" решать.
Ровно это в статье и написано. Хотят бороться давно но боятся оттока клиентов. Похоже сейчас математика прогнозов складывается им в плюс ну или кому-то из топов надо закрыть KPI
Запрет одновременного воспроизведения с разных устройств например. Digital fingerprint. Ограничение числа переключений между устройствами к примеру 20 раз в сутки.
Тут же нет цели поймать всех, просто сделать современное использование настолько неудобным чтобы платили за отдельный аккаунт.
Есть небольшое отличие метров от метров кубических, 1 млн литров = 1000 м3, если 25 метров высота то диаметр чуть больше 7 метров как раз дает озвученный объем
Позже он говорил, что он использовал 103 статьи из советских газет и технических журналов, 4 отчета различных делегаций, 11 отчетов вернувшихся из СССР военнопленных и около 25 фотографий местности. Эти цифры могут быть заниженными, в том смысле, что он, возможно, запрашивал только самые важные сведения, но это показывает, какое огромное количество деталей ему нужно было собрать воедино для достижения цели.
Вы рассматриваете задачу с точки зрения выполнения проекта. Здесь сам "проект" - реорганизация. Сортировка сотрудников с кем можно работать а кого на улицу. Вариант скинуть команде/командам напрямую какую-нибудь таску с коротким сроком минуя всю иерархию вполне себе рабочий метод. Ведь если вспомнить как все любят аджайл то там есть замечательное предварительное условие - "команда мотивированных профессионалов". Вот такие команды справятся лучше чем немотивированные или балаболы. При этом нужно держать в голове что "реорганизация" это проект крайне редкий и не надо экстраполировать его на регулярную деятельность.
В случае устоявшейся иерархии, соблюдать цепочку управления это гарантированный способ оставить все как есть. Я так понимаю что такую цель Маск не ставит. Да и цепочки уже нет в прежнем виде. Весь топ менеджмент пошел на мороз со своими золотыми парашютами.
То есть чувак взялся решать проблему даже не изучив её. Мне кажется это очень дорогой урок. Мне кажется это была не шутка а проверка на дурака и чел ее не прошел.
Для меня не иметь собственного рабочего места это огромный минус. Рабочее место это контекст. Очищать и восстанавливать его каждый день - так себе идея.
За 15 лет привыкаешь что мир программирования это не розовые пони, и часто тратить две недели на рефакторинг куска говна чтоб реализовать хотелку бизнеса слишком долго/дорого. И с чего бы это код вызывал какие-то чувства. Это просто работа.
Ладно если пишешь на одном языке, а если их три и это только повседневные. Типа java, kotlin, typescript. И мучительно вспоминаешь уже завезли в java elvis или все еще страдаем.
Я программирую уже лет 15, примерно с марта оплатил подписку на ChatGPT 4.0. Это просто охрененный инструмент который до сих пор многие недооценивают. Я использую его каждый день на работе и до сих пор нахожу ему все новые и новые применения. Вот лишь небольшой список того, что он умеет делать на уровне "production ready"
генерация тестов
генерация кода согласно вводных
анализ и пояснение написанного кода
анализ фрагментов архитектуры
обсуждение вариантов реализации с аргументацией за и против
составление UML диаграмм
Единственный момент который нужно держать в голове, что он не сделает за вас всю работу. Он в душе не знает про ваши критерии качества. Но если вы можете пояснить почему сгенерированный код вас не устраивает и как вы хотите - он перепишет за считанные секунды. Если вы научитесь использовать этот инструмент, чат подымает вас на следующую ступеньку. По качеству взаимодействия ChatGPT уже превосходит среднестатического мидла.
ВАЖНО! Чат 3.5 это полнейший шлак, с ним невозможно работать.
Пример
Запрос
можешь пояснить что делает функция
Ответ
Эта функция, `enrichObject`, принимает на вход четыре параметра:
1. `object`: объект для обогащения,
2. `propertyName`: свойство объекта, которое будет обновлено,
3. `formula`: строка, которую мы хотим вычислить и установить в качестве значения свойства объекта,
4. `defaultValue`: необязательное значение по умолчанию, которое будет использоваться, если формула выдаст бесконечное значение.
Функция работает следующим образом:
- Она проверяет, если `formula` является пустой строкой, и если это так, то функция ничего не делает и просто возвращает управление.
- Затем она начинает процесс подстановки значений переменных, найденных в `formula`, используя значения этих переменных из `object`.
- В процессе подстановки, если функция обнаруживает, что какое-то значение равно `null`, то она устанавливает свойство объекта, определенное `propertyName`, в `undefined` и возвращает управление.
- После того как все подстановки выполнены, функция пытается вычислить получившееся выражение. Если вычисление происходит успешно, она устанавливает свойство объекта `propertyName` в вычисленное значение. Если результат вычисления является бесконечностью, то она устанавливает `propertyName` в `defaultValue`. Если при вычислении происходит ошибка, она выводит предупреждение в консоль.
Таким образом, эта функция используется для динамического вычисления выражения, указанного в `formula`, и обновления свойства `propertyName` объекта на основе этого вычисления. Все переменные в `formula` должны существовать в `object`.
Запрос
я хочу изменить эту функцию таким образом, чтобы источник свойств и объект для обогащения были двумя разными параметрами
Ответ
Для изменения функции enrichObject таким образом, чтобы источник свойств и объект для обогащения были двумя разными параметрами, вы можете просто добавить еще один параметр функции. Давайте назовем его sourceObject.
Функция тогда будет выглядеть так:
Теперь функция enrichObject принимает два разных объекта: object (объект для обогащения) и sourceObject (источник свойств). Значения переменных для подстановки берутся из sourceObject, а обновленное свойство записывается в object.
Вы можете принести свой код и спокойно пообсуждать его. Какая разница за что "цепляться". По своему опыту такие собеседования очень комфортные как для соискателя так и для собеседующего и дают не меньше информации. Традиционно это выглядит так: "наш джун написал вот такой код, что вы думаете на этот счет".
Удачи вам найти желающих такое задание сделать.
Отлично сказано про "Сеньор мышление", только к сожалению я видел очень мало разработчиков, позиционирующих себя как сеньоры и думающие так. Куда чаще "надо больше оверинжениринга и модных технологий".
Как правило существует много больше одного варианта партнерства, приемлемого для сторон. И уж точно юрист одной стороны не является царем и богом чтобы за "всех" решать.
Ровно это в статье и написано. Хотят бороться давно но боятся оттока клиентов. Похоже сейчас математика прогнозов складывается им в плюс ну или кому-то из топов надо закрыть KPI
Запрет одновременного воспроизведения с разных устройств например. Digital fingerprint. Ограничение числа переключений между устройствами к примеру 20 раз в сутки.
Тут же нет цели поймать всех, просто сделать современное использование настолько неудобным чтобы платили за отдельный аккаунт.
Есть небольшое отличие метров от метров кубических, 1 млн литров = 1000 м3, если 25 метров высота то диаметр чуть больше 7 метров как раз дает озвученный объем
Позже он говорил, что он использовал 103 статьи из советских газет и технических журналов, 4 отчета различных делегаций, 11 отчетов вернувшихся из СССР военнопленных и около 25 фотографий местности. Эти цифры могут быть заниженными, в том смысле, что он, возможно, запрашивал только самые важные сведения, но это показывает, какое огромное количество деталей ему нужно было собрать воедино для достижения цели.
Вы рассматриваете задачу с точки зрения выполнения проекта. Здесь сам "проект" - реорганизация. Сортировка сотрудников с кем можно работать а кого на улицу. Вариант скинуть команде/командам напрямую какую-нибудь таску с коротким сроком минуя всю иерархию вполне себе рабочий метод. Ведь если вспомнить как все любят аджайл то там есть замечательное предварительное условие - "команда мотивированных профессионалов". Вот такие команды справятся лучше чем немотивированные или балаболы. При этом нужно держать в голове что "реорганизация" это проект крайне редкий и не надо экстраполировать его на регулярную деятельность.
Бинарная логика такая бинарная...
Если топ ловит случайного, значит его руководителю нужно подумать о компетенции подчиненного.
В случае устоявшейся иерархии, соблюдать цепочку управления это гарантированный способ оставить все как есть. Я так понимаю что такую цель Маск не ставит. Да и цепочки уже нет в прежнем виде. Весь топ менеджмент пошел на мороз со своими золотыми парашютами.
навеяло habr.com/ru/news/t/679112
Для меня не иметь собственного рабочего места это огромный минус. Рабочее место это контекст. Очищать и восстанавливать его каждый день - так себе идея.