All streams
Search
Write a publication
Pull to refresh
6
0
Виталий Сергеев @enkryptor

Разработчик

Send message

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

Какую-то конкретику по тексту можете привести в пример? А то получилось "по статье ничего не скажу, но автор дурак".

«НЛО прилетело и оставило это здесь»

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

Действительно, формальных принципов чистого кода нет и не может быть, так как подход к написанию кода зависит от огромного количества факторов — парадигма, архитектура, принятые в языке идиомы, выбранные конвенции, да и просто размер продукта. В конечном итоге единственный рабочий критерий — это упомянутое Р. Мартином wtf/min.

Но отсутствие единых чётко формулируемых принципов хорошего кода не означает отсутствие самого хорошего кода. Тут как с литературой — нельзя создать "список принципов хорошего писателя", прочитав который любой мало-мальски грамотный человек превратится в Достоевского. Так и тут со всеми этими SOLID, DRY, GRASP, LoD, SoC и прочего, что новички часто зубрят, но не умеют применять.

Это распределённый, масштабируемый способ варить кофе.

Не раскрыта тема, чем Nuitka лучше PyInstaller.

Автор умеет заинтриговать! Ну и как по-английски правильнее сказать"бесоёбить"?

суд это лотерея, расходы на юристов, расходы личного времени и нервов

Почему суд это лотерея? Никаких внятных аргументов в статье я не увидел.

Суд это действенный путь урегулирования конфликта между работником и работодателем, если договориться не удалось. В РФ суд обычно оказывается на стороне работника. Именно поэтому крупные работодатели стараются не доводить дело до суда, готовы выплачивать компенсации и т.п. Даже тот же пример с Сысоевым это подтверждает – ничего Рамблер у него не отсудил, дело прекращено.

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

Абсурдные ситуации тоже бывают. Сам видел, как человек не явился на заседание по повестке, а потом начал удивляться, почему это решение вынесли не в его пользу. Но при грамотном подходе суды работают и позволяют решать спорные ситуации законным путём. Представление о поголовной неэффективности и бессмысленности российских судов – это что-то из баек 90-х или спекулятивных роликов на ютубе, но никак не реальной судебной практики.

А что контора делала с сотрудниками, которые не увольнялись, но и работали по минимуму "на отвали"?

Оператор materialize() можно использовать для реализации показа лоадера/ошибки. Например, есть Observable, значение которого нужно отобразить в интерфейсе. Обычно в разметке это выглядит как {{ source$ | async }}

Но значение подгружается динамически с сервера, загрузка требует времени и может завершиться неуспешно. Хотелось бы показывать какой-то индикатор загрузки (спиннер или надпись "loading...").

Для решения этой задачи можно сделать {{ source$ | async as value else loadingTemplate }}, но проблема такого решения в том, что при получении ошибки пользователю будет показан бесконечный лоадер.

Хотелось бы останавливать лоадер и показывать ошибку если загрузка не удалась. Для обработки этих случаев идеально подходит объект Notification, который возвращает materialize()

Со стороны потребителя это может выглядеть и как кастомный аналог пайпа async, и как отдельный источник sourceStatus$, и как прямой байндинг на поля Notification.

Пример:
<ng-container source$ | async as notification else loading>
<span *ngIf="notification.hasValue">notification.value</span>
<span *ngIf="notification.kind === 'E'" class="error">Error: {{ notification.error }}</span>
</ng-container>
<ng-template #loading>
<span>Loading...</span>
</ng-template>

Боброва уже разблокировали. Как он сам дальше пишет в твиттере, блокировка была связана с его предыдущим работодателем.

Посмотрите на вопрос с другой стороны — если интерфейсы можно не использовать, зачем они вообще?

То есть под "натягиванием совы C# на глобус Питона" вы имели в виду не конкретно данную статью, а вообще классы в Питоне?

А состояние объекта как храните? В глобальных переменных внутри модуля?

А почему пустой цикл приводил к уменьшению количества ссылок?

Без пирамидообразной иллюстрации статья выглядит неполной.

Вот мой .push() в список фактических ошибок в вопросах. Точнее, в данном случае ошибка в ответе:

В JavaScript это поведение называется приведением типов. Если хотя бы один из операндов является строкой, второй также будет преобразован в строку.

Совсем наоборот, операнды арифметических выражений в JS как раз приводятся к числу. Можете проверить сами:

"3" - 2 // 1
3 * "2" // 6
"2" ** "3" // 8

Исключением является оператор +. Он используется как для сложения, так и для конкатенации строк. Если хотя бы один операнд не является числом, операция интерпретируется как конкатенация и оба значения приводятся к строке:

1 + {} // "1[object Object]"

Как видите, при этом совсем не обязательно, чтобы "один из операндов являлся строкой".

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

Могу добавить, что робот уже сейчас может найти применение в промышленности в плане информационного моделирования зданий, т.н. BIM. На протяжении всего жизненного цикла завода — начиная от постройки завода и заканчивая утилизацией — требуется строить его трёхмерную модель, чтобы отслеживать соответствие документации. Сейчас для этого используются специально обученные мужики со спец. оборудованием, но в процессе эксплуатации завода мониторинг нужен круглые сутки, так что использование робота как раз может позволить это автоматизировать.

Что Земля на самом деле плоская?

Нельзя поддержать чужой бан. Например, спамера забанили на 15 минут, а я хочу минимум на день. При попытке забанить кого-то кого уже успели забанить получаем ошибку "user already blocked".

Можно конечно подождать 15 минут и забанить повторно, но было бы логично если бы это делал бот. Никто не будет сидеть с таймером и выжидать нужный момент.

Такое ограничение приводит к тому, что даются только короткие баны, так как на длинные будет жалко своих кровных (вот ещё тратить с таким трудом накопленное время на всяких спамеров). Другое дело, если каждый скинется по 5 минут, никому жалко не будет. Аналогичная ситуация с разбанами.

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity