All streams
Search
Write a publication
Pull to refresh
4
0
Алексей Траньков @trankov

Написал свою первую программу в 1986 году

Send message

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

Безотносительно злободневной новостной повестки — это просто ещё один повод всегда помнить, что завязывая бизнес-процессы на третью сторону, ты несёшь риски. Это само по себе не хорошо и не плохо, бизнес это по определению деятельность в условиях тех или иных рисков. Проблемы случаются не от их наличия, а от их неправильной оценки. Каждый раз, когда кто-то говорит "Ну не будут же они...", стоит хотя бы 5 минут потратить на обсуждение вопроса "А что мы будем делать, если будут?" Это не значит, что надо заранее перестраховываться и тратить ресурсы на защиту от маловероятных рисков. Но план действий на этот случай надо иметь всегда. "Что мы будем делать, если отключат Гитхаб?" Большинство вместо того, чтобы потратить 5 минут на план Б, потратит их на поиск объяснений, почему это маловероятно. А тратить их надо на планирование того, кто и что в этот момент должен сделать, чтобы процессы не встали. Время и усилия будут потрачены одинаковые, а результат будет принципиально иной.

Перепутать Урал с Уральским Федеральным округом было ошибкой, сейчас вас заклюют) Много уральских городов не входят в УрФО, при этом туда входит, например, Тюмень, которая уже не Урал, а Сибирь.

Ну, на самом деле в Enum уже заложен такой функционал, и это даже описано в стандартной документации.

from enum import Enum


class Color(Enum):
    RED = 'red', (255, 0, 0), 'красный'
    GREEN = 'green', (0, 255, 0), 'зелёный'
    BLUE = 'blue', (0, 0, 255), 'синий'

    def __init__(self, en, rgb, ru):
        self.en = en
        self.rgb = rgb
        self.ru = ru

Ну и потом вызываете:

>>> Color.RED.en, Color.GREEN.rgb, Color.BLUE.ru
('red', (0, 255, 0), 'синий')

Аналогично, похожая возможность существует при комбинации с dataclass:

from dataclasses import dataclass
from enum import Enum


@dataclass
class ColorMixin:
    en: str
    rgb: tuple  # Тут можно заменить на нужный вам тип
    ru: str


class Color(ColorMixin, Enum):
    RED = 'red', (255, 0, 0), 'красный'
    GREEN = 'green', (0, 255, 0), 'зелёный'
    BLUE = 'blue', (0, 0, 255), 'синий'

Работает точно так же, только ещё и типизацию проверяет, если нужно.

Если потом всё равно телевидение изобретут, зачем тогда радио заниматься.

Ну да, если что-то не успеешь, можно будет у Бога второй раз попросить жизнь прожить)

Я так даже снял себе офис (не Москва, не центр, поэтому можно было найти за вменяемый прайс). И понял, что большую часть времени просто не хожу в него. Ну и свернул это дело (но я как ИП работаю).

Я мог неверно понять автора, но разве речь не про:

def foo(var: int, checks: list[Callable] = list()):
	for check in checks:
		check(var)

Это всё равно, что в 1823 году что-то там предсказывать, ссылаясь на опыт 1745 года. Или в 1923 ванговать что-то на основе событий 1845 года. Мир давно другой.

Простейший случай, когда подход 1to1 оправдан, это когда

  1. Данных в записи много (много колонок)

  2. Данные разнородные (относятся к разным бизнес-интересам)

  3. Данные пишутся один раз, почти не апдейтятся, но очень часто читаются

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

В общем, идти надо не только от сферического кода в вакууме, но и от бизнес-задачи. Тогда внезапно становится понятно, зачем бывают нужны таблицы 1 к 1.

Они не Пупа и Лупа. Они Пупу и Лупу. Именно поэтому Пупу получает не зарплату, а то, что он получает. Потому что фамилии эти не склоняются. Потому что это молдавские фамилии.

А за статью спасибо, статья правильная. Генераторы начинающим часто кажутся сложнее, чем они есть. Зато когда их распробуешь, потом невозможно отказаться.

Люди часто вообще не понимают, какую роль в их судьбе сыграл этот человек своим подвижничеством. В судьбе буквально каждого жителя на территории бывшего СССР. Общество благодаря ему сделало рывок во внедрении повальной компьютерной грамотности, причём очень вовремя, успели в последний вагон. И вот какой результат теперь имеем. Ему памятник в центре Москвы надо поставить, и всей команде его.

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

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

Ну где ещё такое можно написать, например?

{
  True: function1,
  False: function2,
}[Object1.find(conditions=(1, 2, 3)).exist](args, kwargs)

Точечная нотация — это возможно, если вы уверены, что все ключи 1) имеют тип str и 2) не совпадают со свойствами и методами класса dict. Но для этого не нужна библиотека, так как всё решается простой обёрткой с __getattr__. Однако, если указанные выше условия удовлетворяются, вам проще использовать dataclass или named tuple.

Вы ссылаетесь на личный опыт (как и многие, вспоминая о тех временах). Логичнее всё-таки смотреть на статистику. И уж точно не привлекать в качестве источника Лурк.

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

Дизайнер Артемий Лебедев уже в раннем ЖЖ стал одной из самых заметных и скандальных фигур

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

Ещё можно добавить, что у первого русского пользователя Линкера был ЖЖ номер 666, а зарегался он потому, что думал что это форум по какой-то там забыл название ОС.

В целом же закат ЖЖ произошёл не из-за технологий или команды управления, со всем этим он мог бы жить. Его постигла знаменитая максима Фицпатрика: "Сервис перестаёт быть модным, когда там регистрируется твоя мама". Когда критическая масса обычных россиян-украинцев-белорусов окончательно подавила собой старое ядро количеством, в топы вышел ориентированный на них контент: всякие фотоблоги, приколы, богатые соски и прочий инфомусор, включая Варламова того же. А элита тщеславна и хочет популярности. Поняв, что конкурировать с контентом для даунов бессмысленно, все властители дум медленно перетекли на Фейсбук (а когда тот начал цензурные безумства, то в Телеграм). А ЖЖ захлебнулся в трэш-контенте, не выдержав конкуренции с профессиональными аггрегаторами трэш-контента.

А настройки для тестирования?

На Маке чтение из файла конфигураций по умолчанию не работает. Надо или устанавливать переменную окружения, или алиасить что-то вроде

ptpython --config-file ~/.config/ptpython/config.py

Information

Rating
Does not participate
Location
Пермь, Пермский край, Россия
Date of birth
Registered
Activity

Specialization

Chief Product Officer (CPO)
From 3,000,000 ₽