По-моему статья неправильно названа, там пропущено слово "коммерческое".
Когда я (да и, думаю, многие) осваивал программирование, имея в распоряжении листок бумаги и раз в неделю, на 5-10 минут, доступ к микрокалькулятору где я мог проверить работу написанной программы - для меня главным был именно кодинг, а не всё что написано в статье.
Когда я, не имея никакой документации и даже не зная слова "ассемблер" пытался по дампу машинного кода понять, как работает игрушка и найти возможность поставить больше жизней, выписывая адреса всех цифр "05" в памяти компьютера в тетрадку, а затем по одной меняя их, каждый раз загружая игру заново - мне не нужно было договариваться о том, сколько времени займёт задача.
Когда я, доделывая демо к Funtop'98, провёл за компом трое суток с редкими перерывами на час-два сна и изредка на еду - я бы как минимум рассмеялся в лицо человеку, который бы предложил мне делать перерывы каждые полчаса.
Почему я делал всё это? Да просто потому что меня, блин, впирало от программировния так, как ни от чего другого. И любой, кто пришёл в профессию по этой причине, а не потому что это модно или здесь хорошо платят, меня понимает.
А штука, у которой основная функция — звонить вот не очень понятно кому нужна.
Мне нужна, например. Более того, желательно чтобы больше она ничего и не умела. Поэтому хожу с Nokia 6230i 2004-го года выпуска. Для остального есть хороший ноутбук и профессиональная фотокамера.
Головокружительный рывок в таких областях, как генная инженерия, регенеративная медицина и нанотехнологии, дает основание для самых радужных прогнозов. Некоторые эксперты убеждены, что человечество одолеет смерть к 2200 году, другие считают – к 2100-му. Курцвейл и ди Грей еще более оптимистичны. Они уверяют, что к 2050 году каждый обладатель здорового тела и солидного банковского счета получит отличный шанс дотянуть до бессмертия, вырывая у Костлявой по десять лет за раз: каждое десятилетие надо будет проходить в клинике курс обновления, который не только излечит болезни, но и регенерирует дрябнущие ткани, омолодит руки, глаза и мозги. До следующего курса – через десятилетие – доктора изобретут кучу новых лекарств, апгрейдов и гаджетов… Если Курцвейл и ди Грей правы, то вы уже можете столкнуться на улице с кем-нибудь потенциально бессмертным – по крайней мере, на Уоллстрит или Пятой авеню.
На самом деле они, конечно, останутся смертными. В отличие от Бога будущие сверхлюди не смогут выживать в войнах и катастрофах, а также возвращаться из загробного мира. Однако в отличие от нас, смертных, они не будут иметь срока годности. До тех пор пока их не разнесет на куски бомба или не переедет грузовик, они смогут жить неограниченно долго. Что, вероятно, сделает их самыми осторожными людьми в истории. Мы, смертные, ежедневно рискуем своими жизнями, так как знаем, что двум смертям не бывать, а одной не миновать. Мы совершаем восхождения в Гималаях, плаваем по морю и совершаем множество других отчаянных поступков, вроде перебегания дороги на красный свет или перекуса купленным на улице пирожком. Но если знаешь, что можешь жить вечно, тебе не взбредет в голову с вечностью шутить.
Может, в таком случае нам для начала поставить перед собой более скромные цели, например, удвоение средней продолжительности жизни? В XX веке мы почти удвоили среднюю продолжительность жизни – с сорока до семидесяти лет, так что в XXI веке по идее способны снова увеличить ее по крайней мере вдвое – до ста пятидесяти лет. Это далеко не бессмертие, но это повлечет за собой полную перестройку человеческого общества. Прежде всего станут иными структура семьи, браки, отношения родителей и детей. В наши дни супруги все еще клянутся быть вместе «пока не разлучит смерть», и огромная часть жизни отдается рождению и воспитанию детей. А теперь представьте себе женщину и мужчину, в распоряжении у которых 150 лет. Если они поженятся в сорок, то «смерть разлучит их» только через 110 лет. Реально ли ожидать, что их брак продлится 110 лет? Даже истые католики, пожалуй, такого не выдержат. Так что современная тенденция пережениваться, возможно, будет набирать размах. Произведя на свет двух детей в промежутке между сорока и пятьюдесятью, женщина и мужчина к 120 годам будут с трудом вспоминать тот крошечный отрезок своей долгой жизни, когда занимались воспитанием своих чад.
Трудно сказать, какой тип отношений сложится между родителями и детьми в таких условиях.
А профессиональная деятельность? Сейчас само собой разумеется, что вы приобретаете профессию в юности, а потом всю жизнь работаете в избранной области. Вы, естественно, узнаёте что-то и в сорок, и в пятьдесят, но жизнь обычно делится на два периода: период учебы и период работы. Если же вам отмерено 150 лет, то так не получится, особенно в мире, в который постоянно врываются новые технологии. У людей будет намного более длинный трудовой путь, и им придется постоянно переучиваться. Даже в девяносто лет.
Не удаляясь на покой в шестьдесят пять, пожилые, соответственно, не будут уступать дорогу молодым с их новаторскими идеями и чаяниями. Широко известно высказывание физика Макса Планка, заявившего, что наука развивается от похорон к похоронам. Он имел в виду, что новым теориям не вытеснить старые, пока не сменится поколение. Это верно не только по отношению к науке. Задумайтесь на минутку о себе. Как бы вы себя чувствовали – ученый вы, журналист, повар или футболист, – если бы вашему боссу перевалило за сто лет, он мыслил бы категориями эпохи королевы Виктории, а вам предстояло бы подчиняться ему еще пару десятилетий?
В политической сфере последствия могут быть еще более грустными. Что, если Путин будет у власти еще девяносто лет? Если бы люди жили до 150, то в 2016 году Сталин еще правил бы в Москве, бравый в свои 138, Председатель Мао в свои 123 был бы крепким мужчиной среднего возраста, а принцесса Елизавета сидела бы сложа руки в ожидании трона, еще занятого 121-летним Георгом VI. Ее сыну Чарльзу пришлось бы ждать своей очереди до 2076-го.
Постоянно. Мышь и trackpoint на клавиатуре выполняют одну и ту же функцию. Часть операций удобнее мышью, часть - через trackpoint, поскольку он прямо под пальцами.
На всякий случай скажу, что я полностью поддерживаю вашу точку зрения, просто решил проинформировать, что версия WordPress 5.8 это, по-сути "58-й релиз" т.к. WordPress не следует semver. Можно посмотреть историю релизов в Wiki, там видно, что после X.9 идёт X+1.0
Да, конечно, сейчас процессоры более энергоэффективны. У меня батарея держит примерно час-полтора, но я батарею не менял с момента покупки ноутбука, 7 лет назад.
В целом могли бы себе Dell Precision M4800 взять, он сейчас (б/у) как раз где-то столько и стоит. Из ваших пунктов только п.6 не подходит т.к. дискретная видеокарта там есть.
А так - клавиатура хорошая, экран IPS матовый и неплохой, память и диски меняются, батарея тоже, 4 USB 3, по два на каждой стороне, DisplayPort, Ethernet. У меня i7, но вроде есть модели и на i5. Служит уже почти 7 лет и, уверен, послужит ещё.
Сейчас работаю на Dell Precision, от новой модели решил отказаться т.к. они испоганили клавиатуру. Когда решусь на обновление - буду брать ThinkPad T series.
Да, тоже рассчитывал увидеть ThinkPad Keyboard with TrackPoint т.к. именно на ней сейчас работаю. В России правда не нашёл, пришлось из Штатов заказывать, но оно того явно стоило.
Попробовав описанный в статье подход в реальных проектах я подтверждаю, что писать подобным образом код несколько сложнее, но результат явно лучше.
Я пока не решился уйти от getter'ов, поскольку во множестве сценариев они упрощают код, не принуждая создавать конвертеры в DTO на каждый чих. С практической точки зрения бывает необходимо получить какое-то единичное значение из entity, например при построении запросов на выборку с условиями. Здесь условия могут быть очень разными, соответственно и поля могут потребоваться любые, а задействовать полное преобразование entity в DTO или даже в массив — дополнительное время, ведь большинство сделанной работы будет выкинуто. К тому же в случае массива мы теряем поддержку типов и autocomplete, если только не описывать shape возвращаемых данных через аннотации.
Избавление от setter'ов и переход на статические методы для создания + методы изменения внутреннего состояния объектов делают код более надёжным, однозначно.
Отдельно хочу отметить появление в этом случае проблемы свяанных entities. К примеру если у нас есть Product и Detail со связью 1:N через Product::$details, то очевидно, что для создания Detail нам нужно знать Product, а затем ещё как-то надо поместить новую entity в Product::$details.
Это приводит либо к необходимости:
либо иметь в Product метод, добавляющий Detail в Product::$details с вызовом $product->addDetail($instance) в Detail::create(). Работает, но возникает проблема если новую entity не надо помещать в коллекцию или если Product для этого Detail не определён вообще.
либо иметь setter метод в Detail, привязывающий Product при добавлении в коллекцию.
После экспериментов я остановился на следующей схеме: В Detail::create аргумент Product не передаётся, взамен этого добавляется метод:
/**
* @internal
*/
public function withProduct(Product $product): self
{
$this->product = $product;
return $this;
}
Метод отмечен как @internal через аннотации. К сожалению friend class в PHP не поддерживается, поэтому ограничение доступа на уровне соглашения, а не языка. В сам Product добавляется метод:
public function addDetail(Detail $detail)
{
$this->details->add($detail->withProduct($this));
}
Эта схема позволяет решить описанную выше проблему не усложняя код.
Помимо этого стоит отметить ещё один момент, не описанный в статье: коллекции. Очевидно, что getter для коллекции может вернуть Doctrine\ORM\PersistentCollection со всеми её возможностями по модификации её содержимого что возвращает нас к вопросу о запрете прямого изменения внутреннего состояния entity. Чтобы не допустить этого имеет смысл реализовывать такой getter примерно вот так:
public function getDetails(): Collection
{
return new ArrayCollection($this->details->toArray());
}
В таком случае возможности воздействовать на внутреннее состояние не через методы entity уже не останется.
Если вы не отменяли применение УСН в отношении вашего ИП то он никуда не делся. Зайдите в личный кабинет ИП, там видно какие у вас действуют системы налогообложения. Если УСН там фигурирует — то сдавать декларацию, даже нулевую, необходимо.
У меня тоже вся деятельность ИП попадает под патент и даже бухгалтер сказала что сдавать декларацию не нужно, однако налоговая посчитала иначе и влепила штраф.
Помимо этого ещё каждый год присылали письма с требованиями разъяснить "почему это у вас движение по счёту есть, а декларация нулевая?". Так что я для себя пока нашёл безопасную схему: патент на год, сдача нулевой декларации и в качестве приложения к ней — объяснительная что декларация нулевая т.к. патент номер такой-то. Пока работает.
Да, Elite… Сколько месяцев с утра до ночи было за ней проведено :) Правда сильно высоко я всё равно не поднялся т.к. предпочитал просто летать, а не воевать.
Кстати, думаю не так много людей здесь это застали в своё время, так что поделюсь: В 1997-м Raver/PHT взял для нашего спектрумовского журнала Scenergy интервью у Дэвида Брабена, а в 2000-м — у Яна Белла.
Оба интервью можно найти на ZXPress (Брабен, Белл), вдруг кому будет интересно. Так что ещё тогда мы официально узнали что Raxxla не существует :)
А когда Брабен вышел на Kickstarter с Elite: Dangerous — я, конечно, поучаствовал, но полученную в результате копию даже не стал скачивать, заплатил за лицензию той, спектрумовской Elite.
Отстранение от мира — не самоцель. На ранних этапах практики изоляция от мира помогает тем что убирает большинство отвлечений, это делает проще продвижение в самом начале, когда ум ещё полон беспокойства. На более поздних этапах отстранение происходит само собой, естественно, из-за постепенного угасания привязанностей.
К примеру у вас в раннем детстве наверняка была какая-нибудь любимая игрушка, друзья в садике и т.п. И расставшись с ними тогда вы бы серьёзно расстроились. Но с высокой долей вероятности сейчас вы уже не так привязаны к ним, вы переросли этот этап, у вас другие интересы, цели и т.д.
Здесь то же самое — по мере продвижения в практике всё больше и больше того что мы считаем привлекательным в мире перестаёт быть для практика таковыми и поэтому естественным образом происходит отказ от них.
По-моему статья неправильно названа, там пропущено слово "коммерческое".
Когда я (да и, думаю, многие) осваивал программирование, имея в распоряжении листок бумаги и раз в неделю, на 5-10 минут, доступ к микрокалькулятору где я мог проверить работу написанной программы - для меня главным был именно кодинг, а не всё что написано в статье.
Когда я, не имея никакой документации и даже не зная слова "ассемблер" пытался по дампу машинного кода понять, как работает игрушка и найти возможность поставить больше жизней, выписывая адреса всех цифр "05" в памяти компьютера в тетрадку, а затем по одной меняя их, каждый раз загружая игру заново - мне не нужно было договариваться о том, сколько времени займёт задача.
Когда я, доделывая демо к Funtop'98, провёл за компом трое суток с редкими перерывами на час-два сна и изредка на еду - я бы как минимум рассмеялся в лицо человеку, который бы предложил мне делать перерывы каждые полчаса.
Почему я делал всё это? Да просто потому что меня, блин, впирало от программировния так, как ни от чего другого. И любой, кто пришёл в профессию по этой причине, а не потому что это модно или здесь хорошо платят, меня понимает.
Мне нужна, например. Более того, желательно чтобы больше она ничего и не умела. Поэтому хожу с Nokia 6230i 2004-го года выпуска. Для остального есть хороший ноутбук и профессиональная фотокамера.
На Хабре есть совершенно прекрасная статья по этому поводу
Юваль Ной Харари, Homo Deus
Постоянно. Мышь и trackpoint на клавиатуре выполняют одну и ту же функцию. Часть операций удобнее мышью, часть - через trackpoint, поскольку он прямо под пальцами.
На всякий случай скажу, что я полностью поддерживаю вашу точку зрения, просто решил проинформировать, что версия WordPress 5.8 это, по-сути "58-й релиз" т.к. WordPress не следует semver. Можно посмотреть историю релизов в Wiki, там видно, что после X.9 идёт X+1.0
Да, конечно, сейчас процессоры более энергоэффективны. У меня батарея держит примерно час-полтора, но я батарею не менял с момента покупки ноутбука, 7 лет назад.
В целом могли бы себе Dell Precision M4800 взять, он сейчас (б/у) как раз где-то столько и стоит. Из ваших пунктов только п.6 не подходит т.к. дискретная видеокарта там есть.
А так - клавиатура хорошая, экран IPS матовый и неплохой, память и диски меняются, батарея тоже, 4 USB 3, по два на каждой стороне, DisplayPort, Ethernet. У меня i7, но вроде есть модели и на i5. Служит уже почти 7 лет и, уверен, послужит ещё.
Сейчас работаю на Dell Precision, от новой модели решил отказаться т.к. они испоганили клавиатуру. Когда решусь на обновление - буду брать ThinkPad T series.
Можно на ThinkPad P series посмотреть, там в топовой конфигурации вплоть до Xeon, 128Gb, 4Tb SSD и Quadro RTX, но недешёвое удовольствие конечно.
Да, тоже рассчитывал увидеть ThinkPad Keyboard with TrackPoint т.к. именно на ней сейчас работаю. В России правда не нашёл, пришлось из Штатов заказывать, но оно того явно стоило.
К примеру переключение между вариантами меню, которое в desktop варианте использует
hover
для вызова подменю.Попробовав описанный в статье подход в реальных проектах я подтверждаю, что писать подобным образом код несколько сложнее, но результат явно лучше.
Я пока не решился уйти от getter'ов, поскольку во множестве сценариев они упрощают код, не принуждая создавать конвертеры в DTO на каждый чих. С практической точки зрения бывает необходимо получить какое-то единичное значение из entity, например при построении запросов на выборку с условиями. Здесь условия могут быть очень разными, соответственно и поля могут потребоваться любые, а задействовать полное преобразование entity в DTO или даже в массив — дополнительное время, ведь большинство сделанной работы будет выкинуто. К тому же в случае массива мы теряем поддержку типов и autocomplete, если только не описывать shape возвращаемых данных через аннотации.
Избавление от setter'ов и переход на статические методы для создания + методы изменения внутреннего состояния объектов делают код более надёжным, однозначно.
Отдельно хочу отметить появление в этом случае проблемы свяанных entities. К примеру если у нас есть
Product
иDetail
со связью 1:N черезProduct::$details
, то очевидно, что для созданияDetail
нам нужно знатьProduct
, а затем ещё как-то надо поместить новую entity вProduct::$details
.Это приводит либо к необходимости:
Product
метод, добавляющийDetail
вProduct::$details
с вызовом$product->addDetail($instance)
вDetail::create()
. Работает, но возникает проблема если новую entity не надо помещать в коллекцию или еслиProduct
для этогоDetail
не определён вообще.Detail
, привязывающийProduct
при добавлении в коллекцию.После экспериментов я остановился на следующей схеме: В
Detail::create
аргументProduct
не передаётся, взамен этого добавляется метод:Метод отмечен как
@internal
через аннотации. К сожалению friend class в PHP не поддерживается, поэтому ограничение доступа на уровне соглашения, а не языка. В самProduct
добавляется метод:Эта схема позволяет решить описанную выше проблему не усложняя код.
Помимо этого стоит отметить ещё один момент, не описанный в статье: коллекции. Очевидно, что getter для коллекции может вернуть
Doctrine\ORM\PersistentCollection
со всеми её возможностями по модификации её содержимого что возвращает нас к вопросу о запрете прямого изменения внутреннего состояния entity. Чтобы не допустить этого имеет смысл реализовывать такой getter примерно вот так:В таком случае возможности воздействовать на внутреннее состояние не через методы entity уже не останется.
Если вы не отменяли применение УСН в отношении вашего ИП то он никуда не делся. Зайдите в личный кабинет ИП, там видно какие у вас действуют системы налогообложения. Если УСН там фигурирует — то сдавать декларацию, даже нулевую, необходимо.
У меня тоже вся деятельность ИП попадает под патент и даже бухгалтер сказала что сдавать декларацию не нужно, однако налоговая посчитала иначе и влепила штраф.
Помимо этого ещё каждый год присылали письма с требованиями разъяснить "почему это у вас движение по счёту есть, а декларация нулевая?". Так что я для себя пока нашёл безопасную схему: патент на год, сдача нулевой декларации и в качестве приложения к ней — объяснительная что декларация нулевая т.к. патент номер такой-то. Пока работает.
Всё-таки будет справедливо заметить что в PHP это нормальный
private
Сохранения много где были, хотя в Elite они были на удивление маленькими, 102 байта вроде
Да, Elite… Сколько месяцев с утра до ночи было за ней проведено :) Правда сильно высоко я всё равно не поднялся т.к. предпочитал просто летать, а не воевать.
Кстати, думаю не так много людей здесь это застали в своё время, так что поделюсь: В 1997-м Raver/PHT взял для нашего спектрумовского журнала Scenergy интервью у Дэвида Брабена, а в 2000-м — у Яна Белла.
Оба интервью можно найти на ZXPress (Брабен, Белл), вдруг кому будет интересно. Так что ещё тогда мы официально узнали что Raxxla не существует :)
А когда Брабен вышел на Kickstarter с Elite: Dangerous — я, конечно, поучаствовал, но полученную в результате копию даже не стал скачивать, заплатил за лицензию той, спектрумовской Elite.
Отправил в личку ещё несколько пропущенных подчёркиваний
Я делал проект с IE11 и grid'ами, в итоге пришёл к варианту генерации двух вариантов вёрстки на scss (для IE11 и для остальных), работает нормально.
Отстранение от мира — не самоцель. На ранних этапах практики изоляция от мира помогает тем что убирает большинство отвлечений, это делает проще продвижение в самом начале, когда ум ещё полон беспокойства. На более поздних этапах отстранение происходит само собой, естественно, из-за постепенного угасания привязанностей.
К примеру у вас в раннем детстве наверняка была какая-нибудь любимая игрушка, друзья в садике и т.п. И расставшись с ними тогда вы бы серьёзно расстроились. Но с высокой долей вероятности сейчас вы уже не так привязаны к ним, вы переросли этот этап, у вас другие интересы, цели и т.д.
Здесь то же самое — по мере продвижения в практике всё больше и больше того что мы считаем привлекательным в мире перестаёт быть для практика таковыми и поэтому естественным образом происходит отказ от них.