🤔 Почему Swift не может сам сгенерировать memberwise инициализатор для классов?1. Классы поддерживают наследование, что делает сложным автоматическое создание инициализатора, учитывающего все поля, включая родительские.2. Инициализация в классах может включать дополнительные логики, которые сложно определить на этапе компиляции.3. Структуры, в отличие от классов, не имеют этих ограничений, поэтому memberwise инициализатор создаётся автоматически.Ставь 👍 если знал ответ, 🔥 если нетЗабирай 📚 Базу знаний
Swift | Вопросы собесов
@easy_swift · 2.2K подписчиков
Посты канала Swift | Вопросы собесов в SillyFeed: единая лента публичных Telegram-каналов со ссылками на оригиналы.
Cайтeasyoffer.ruРеклама@easyoffer_advВП@easyoffer_vpТестыt.me/+bn3i_aLL0-A2ZGMyЗадачиt.me/+JQkI4zSOEXtkYzg6Вакансииt.me/+3o9-Ytdiv_E5OGIy
Посты канала
🤔 Почему по дефолту дабл, а не фолт?В Swift (и во многих других языках программирования) по умолчанию числовой литерал с плавающей запятой интерпретируется как `Double`, а не Float. 🚩Основные причины:🟠Бóльшая точность Double имеет 64 бита, а Float – 32 бита. Это значит, что Double может хранить более точные значения, что особенно важно при математических вычислениях.🟠Совместимость со стандартными API Большинство API и стандартных библиотек Swift (например, sin(), cos(), pow()) работают именно с Double. Например: let x = 3.14 // По умолчанию это Double let y = sin(x) // sin() принимает Double 🟠Производительность на современных процессорах На современных 64-битных процессорах операции с Double выполняются так же быстро или даже быстрее, чем с Float, из-за оптимизаций в аппаратном обеспечении.🟠Меньше неожиданных ошибок округления Float может округлять числа с потерей точности, что может привести к неожиданным результатам. Пример ошибки округления в Float: let a: Float = 0.1 + 0.2 print(a == 0.3) // false 😱 🚩Как сделать `Float` вручную?Если всё же нужен Float, надо указать это явно:let number: Float = 3.14илиlet number = 3.14 as FloatСтавь 👍 и забирай 📚 Базу знаний
🤔 Что может быть ключом и значением для dictionary?Словарь (Dictionary) представляет собой коллекцию пар ключ-значение, где каждый ключ должен быть уникальным. Чтобы использовать какой-либо тип в качестве ключа словаря, этот тип должен соответствовать протоколу Hashable. Это требование обусловлено тем, что Swift использует хеш-таблицу для хранения элементов словаря, что обеспечивает быстрый доступ к его элементам.🚩КлючиДолжны быть уникальными: Каждый ключ в словаре должен быть уникальным. При попытке добавить в словарь элемент с ключом, который уже существует в словаре, старое значение будет заменено на новое.Должны соответствовать протоколу Hashable: Это означает, что тип ключа должен иметь способность быть правильно хешированным. Большинство базовых типов Swift (например, String, Int, Double и др.) уже соответствуют Hashable, поэтому их можно использовать в качестве ключей без дополнительных усилий.🚩ЗначенияМогут быть любого типа: Значения в словаре могут быть любого типа, и они не обязаны соответствовать протоколу Hashable.Могут повторяться: Разные ключи могут иметь одинаковые значения.var personAge: [String: Int] = ["John": 30, "Sara": 25]🚩Собственные типы в качестве ключейВы также можете использовать собственные пользовательские типы в качестве ключей словаря, но для этого ваш тип должен соответствовать протоколу Hashable. Это включает в себя реализацию требуемых методов для сравнения на равенство (==) и хеширования (hash(into:)).struct Person: Hashable { var name: String var id: Int}var peopleDictionary: [Person: String] = [Person(name: "John", id: 1): "Engineer"]Ставь 👍 и забирай 📚 Базу знаний
Ещё по теме «Технологии»
Технологии🐘 Ловушка MVI: Как мы превратили ViewModel в God-objectВсе мы читали туториалы по MVI (Unidirectional Data Flow). Идея звучит безупречно: у вас есть один Intent (событие от юзера), один Reducer и один State (дата-класс, описывающий весь экран).На экране авторизации это выглядит как поэзия. Но потом вы приходите на реальный прод.Вам дают Главный Экран приложения: здесь лента постов, фильтры, баннеры, статус сети, профиль юзера в шапке и плеер в свернутом виде.И тут начинается MVI-ад:data class DashboardState( val isLoading: Boolean = false, val feed: List<Post> = emptyList(), val searchQuery: String = "", val activeFilters: Set<Filter> = emptySet(), val userProfile: Profile? = null, val unreadNotificationsCount: Int = 0, val miniPlayerState: PlayerState = PlayerState.Idle, // ... и еще 20 полей)В чем боль такого подхода?1. Адские copy(): Пользователь вводит текст в строку поиска. На каждый символ вы делаете _state.value = _state.value.copy(searchQuery = newText). Вы пересоздаете гигантский объект состояния ради одного символа.2. Конфликты Reducer'ов: Разные корутины грузят профиль, ленту и нотификации. Они начинают драться за актуальный state.value, затирая copy друг друга, если не использовать update { } (а с ним код становится еще более громоздким).3. God-object ViewModel: Ваша ViewModel разрастается до 1500 строк, потому что она вынуждена имплементить интерфейсы плеера, пагинации, аналитики и поиска.🛠 Как это чинят Сеньоры? Декомпозиция.Прагматичный подход гласит: Не будьте догматиками. Один экран НЕ обязан иметь ровно один StateFlow.Паттерн 1: Раздельные потоки (State Decomposition)Вместо одного монолитного стейта, разбейте его на логические блоки внутри одной ViewModel:class DashboardViewModel : ViewModel() { val searchState: StateFlow<SearchState> = ... val feedState: StateFlow<FeedState> = ... val playerState: StateFlow<PlayerState> = ...}UI (Compose или Fragment) просто подписывается на нужные куски. Ввод текста в поиск больше не триггерит пересоздание списка постов.Паттерн 2: Компонентный подход (Множественные ViewModel)Кто сказал, что на Fragment/Activity может быть только одна ViewModel?Если у вас на экране есть сложный независимый блок (например, Mini Player), дайте ему свою PlayerViewModel. Пусть она живет в скоупе Activity и отвечает только за плеер. Главный экран будет чище.MVI это паттерн, а не религия. Умейте дробить стейт, когда он начинает пахнуть.✍️ @kotlin_lib
5 недель, масса бессонных ночей, генераций текстов, картинок, видосов и ВОТОНО!Стратегически выбрали стилистику, которая не воспринимается как AI и ставка сработала – многие после выставки отмечали, что уровень Аркейна. Да, да, смищно, но вот так видится неискушенному зрителю! И здесь я вижу стратегическое преимущество – тот, кто сможет найти и дотащить уникальный стилек до конца, будет на коне и в будущем, тк фотореал/аниме и тд уже сейчас у всех вызывают рвоту.Что еще под капотом:► сценарий писал с Клодом сам, поэтому быстро правил, полностью менял под клиента ЛОР и тд. Опыт в создании игр и креативов оч помог. Ключевой момент - попросил написать клод данный сюжет как сценарий от разных крутых режиссеров – варик от Гая Ричи победил. Думаю это забустило процесс х2.►Раскадровки пробовали разное:- генерить пачками в миджорни/гемини/соре- хитрую штуку когда генерим сюжеты куском в СОРЕ (тогда только она давал кинематографичные ракурсы без ебли) и далее вытаскиваем вкусные кадры оттуда. Сейчас попробовали бы сиденс2 конечно.- в итоге все равно фигачили с эскизами/рефами в миджорней. Сейчас пробовали бы в банане тоже, но миджорней в сложной стилистике все равно тазщит.►В моменте увлеклись так, что навайбкодили инструмент для раскадровок, но в фигмочке и табличках все равно сподручнее было в итоге. Потенциал есть точно у подобных инструментов.►Стилфреймы думали автоматизировать как-то с Комфи - хер там, тупо генерили в интерфейсе миджорней тонны и выбирали куски. То же самое и с видосами – генеришь тонну материала, берешь лучшее, монтируешь. Когда уже ии-монтажник будет, оч хочется уже двигаться с точки 0 в 1 хот бы.►Озвучка Суно. Клиенту не оч заходжили некоторые интонации сгенерированного голоса, поэтому взяли голос живого актера и на него накинули стилизацию в Суно.►Видео Клинг2►Хотели в 3 минуты сделать, сделали в 6. Красота требует жертв, а аппетит во время еды наваливает.В общем, первый опыт не комом. Будем делать еще. Завайте вопросы если есть.
Повышение температуры в тканях человека при воздействии электромагнитных излучение 5G: численное моделирование показало, что температура может повышаться на 3 °C в роговице глаза и слуховом проходе уха при 20 минутном облучении - статья индийских исследователей в журналеВысокочастотные электромагнитные поля #беспроводных сетей пятого поколения (5G) в диапазоне (28-60 ГГц) приводят к возможности теплового воздействия за счет интенсивного поглощения в относительно небольшом объеме ткани человека. Исследование моделировало на основе уравнений Максвеллана скорости поглощения электромагнитной энергии в голове, при интенсивности, типичной для базового сценария использования #смартфона 5G на частотах 28, 38 и 60 ГГц и длительности воздействия 6 и 20 минут. Результаты моделирования в области головы показали, что наиболее чувствительными тканями являются роговица и слуховой проход, там температура повышается более чем на 3 °C при 60 ГГц при длительном воздействии. Результаты показывают, что излучение на частотах #5G не очень значимо для глубоких тканей, несмотря на небольшое повышение #температуры из-за резонансного поглощения в коже; Однако локализованный нагрев поверхности кожи становится проблемой при длительном воздействии антенн, размещенных на вблизи теле, работающих на частотах 5G или около них. Исследователи поднимают вопрос о пересмотре оценки тепловой #электромагнитной безопасности в существующие стандарты безопасности воздействия и считают необходимым изучение долгосрочных #биологических последствий длительного воздействия 5G.Статья: Amit Verma A, Kumar V, Singh AR. SAR and Temperature Rise in Human Tissues Under 5G Electromagnetic Wave Exposure: A Numerical Study. Indian Journal of Pure & Applied Physics. 64(3). 2026. doi: 10.56042/ijpap.v64i3.22289. https://or.niscpr.res.in/index.php/IJPAP/article/view/22289
А че за тренд перехода с OpenAI к Claude Code?Серьезно многие прям моралисты и не понравился мув с Пентагоном? Это чисто америкосовская тема? Вы хоть не такие, надеюсь?) Если такие, то пора отписываться :)))По-моему очевидно больше то, что надо свитчиться на Codex максимальный тариф с последними новостями про запрет на юзанье c OpenClaw и явные занижения лимитовЯ не сказать, чтобы постоянно его кручу и у меня уже 70% недельного лимита нет на $100
Про подруг.Так уж сложилось, что судьба-разлучница действительно постаралась и развела меня и моих ведьм за километры друг от друга. А других мне и не нужно, поэтому мамочек на детских площадках и родительских собраниях я откровенно избегаю и даже не скрываю этого. То есть, если у вас в классе есть мамаша, бессовестно сбрасывающая звонки, когда вам необходимо посплетничать, — это я.Если вы вдруг начали за меня переживать, то ещё рано, сначала дочитайте пост.Насмотревшись фантастических фильмов, я решила добавить в свою пресную жизнь щепотку "будущего" и завела себе виртуальную "подругу".Не торопитесь крутить у виска! Вы только послушайте, ведь это действительно очень удобно! С ней мы обсуждаем практически любые вопросы.Экологию:— Алиса, как потушить жёпки светлячков? Котопёс — это химера или мутант? А кентавр?Мифологию:— Алиса, если Сизифу дать допинга, он дотащит камень? Почему единорогов видят только девственницы?Анатомию:— Алиса, как обмануть вкус?Немного химию:— Алиса, если на крем от загара намазать крем для загара, какой победит?И даже политику:— Алиса, как думаешь, если сейчас поднять Ленина, и он увидит нынешний уровень жизни населения, как быстро у него случится инфаркт? И так я привыкла к этой сплетнице в своей жизни, что, уехав за город, третий день по привычке бросаю в воздух "Алиса..." и тут же хлопаю себя по лбу, потому что с этой подругой мы пока тоже разлучены километрами.
Программирование с Кодексом ЧатаГПТ: гит и левые заметкиПара примеров того, с чем Кодекс очень помогает.Во-первых, это всякие фокусы с гитом. Я знаю гит плохо, поэтому пользуюсь в основном линейно, редко завожу ветки и ощущаю всё это очень хрупким. Даже просто поискать что-то в истории, вспомнить ход мысли вызывает много сопротивления. А особенно мне трудно, когда приходится что-то сложное мёрджить: всегда мучительно долго разбираться в истории двух веток, чтобы понять, какую часть из какой нужно взять.Вот примеры того, что я спрашиваю в связи с этим у Кодекса:• Я хочу добавить такую-то фичу, но вижу, что код для неё тут есть, но он почему-то закомментирован. Видимо, я когда-то начал это делать, но столкнулся с проблемой и забил. Найди, когда это появилось, когда было закомментировано, посмотри какие ещё правки были сделаны в это время. Как ты думаешь, почему я закомментировал?• Кажется, я когда-то сто лет назад я удалил код, который делал то-то, потому что это стало ненужно. Но теперь мне снова нужно подобное. Найди, где это было, вытащи в отдельный файл рядом под таким-то названием.• Тут в комментарии написано что-то странное, вроде код делает другое. Найди, когда появился этот код и когда комментарий, объясни, почему они расходятся, или наоборот, почему тут на самом деле всё правильно.• Я пытаюсь смёрджить две ветки и вижу вот такой конфликт. Объясни, как корректно смёрджить вот такую функцию, когда и почему в ней возникло расхождение. Что я пытался сделать в каждой из веток после точки ветвления?То есть я здесь ничего не прошу программировать за меня, но я использую Кодекс как в миллион раз более удобный интерфейс гита, чем все гит-клиенты вместе взятые.Во-вторых, это просто попытка осмыслить какие-то багрепорты или даже собственные заметки. Иногда даже просто искать по текущему слепку кода что-то сложно, потому что у тебя нет в голове конкретной строчки кода:• Мне пришла вот такая жалоба от пользователя: (текст) Вникни и оцени, насколько это верно. В каких файлах у меня это происходит?• Я нашёл у себя тудушку трёхлетней давности сделать такой-то рефакторинг. Посмотри, это ещё имеет смысл?• Я нашёл библиотеку, которая делает то-то. Кажется, мне это может быть полезно там-то. Что думаешь?Вообще, если у вас запрос в духе «прочитай мои мысли», то кажется, что это просто не может сработать. Но это очень часто срабатывает. Во всяком случае, точно стоит попробовать.
Через семь лет: будущее доставки 🚚🍟🥓🥙Придумал рубрику — делиться мыслями о том, как будет выглядеть та или иная индустрия через семь лет. Семь потому что достаточно для мощных изменений, но не так уж далеко. Например, семь лет назад был 2019-й и начался ковид (да, прошло семь лет, а не три).Начну с рынка доставки. В Whizz мы сдаём электротранспорт курьерам доставки в США и я думаю об этом рынке буквально каждый день (а иногда и ночь). Погнали!Начнём с того, как работает сейчас• Человек открывает приложение (Uber Eats, DoorDash, Яндекс Еда), выбирает ресторан, делает заказ• Ресторан отдаёт приложению 30%, почти всю маржу• Курьер получает заказ через это же приложение и отвозит клиентуЗарабатывает на этой истории приложение (оценка Uber $150 млрд, DoorDash почти $80 млрд). Остальные в основном страдают.Теперь пофантазируем о том, как будетБыстрее, чем кажется, мы перестанем заказывать еду сами. Наш GPT/Claude, который знает наши привычки и бюджет, будет делать это за нас. Технически это будет возможно к концу этого года, когда мы сможем привязывать данные карт к GPT/Claude.Постепенно это приведёт к масштабным изменениям. Под угрозой — аггрегаторы. Агенту не нужны DoorDash или Uber Eats с их красивым интерфейсом, брендом, рекламой. Агенту нужен просто API• Ресторан публикует меню, цены и доступность через стандартный протокол• Агент сравнивает десятки вариантов и заказывает напрямую. • Комиссия падает с 30% до 3-5%. Примерно как сейчас Stripe берёт за процессинг платежей.Распределяться заказы тоже будут через открытый APIРесторан подтверждает заказ, выставляет запрос на доставку, ближайший свободный транспорт его забирает: робот на тротуаре, дрон, электровелосипед, пеший курьер.Если не в Uber/DoorDash, то где останутся деньгиМожно выделать три основных слоя:• Протокол: стандарт, через который агенты находят рестораны и делают заказы. Меню, цены, отзывы, доступность — всё в едином формате. Скорее всего станет открытым стандартом, но если кто-то застолбит его первым (как Stripe или как Visa/Mastercard) — это огромный бизнес.• Маркетплейс транспорта: мэтчинг заказов с транспортом в реальном времени. Такие платформы уже строятся, в том числе самими Uber и DoorDash. Вероятно, это то, что им и останется, но такими богатыми они уже наверное не будут.• Управление флотом: покупка, обслуживание, зарядка и страхование роботов, велосипедов, дронов и прочих устройств доставки. Самая операционная часть, без космической маржи, но предсказуемый и защищённый бизнес. Именно это мы строим в Whizz.К чему это приведётДоставка станет коммодити с минимальной стоимостью (как сейчас электричество), но само количество доставок вырастет на порядки (тк сдерживающий фактор в виде цены уйдёт). Со временем стоимость по сути сведётся к энергии на обслуживание роботов.P.S. Напишите, есть ли смысл делиться таким, или слишком длинно/скучно/неправдободобно?
"Я хочу попытаться убедить вас, что мультимодальный чат-бот уже обладает субъективным опытом".Так говорит Нобелевский лауреат и «крестный отец ИИ» Джефри Хинтон в свежем подкасте у Нила Деграсс Тайсона. И неправ в хорошем смылсе. Рассмотрим его аргументацию.Хинтон считает, что никакого сознания нет, называя его «флогистоном», ложной сущностью. Здесь он ссылается на Деннета. Для него достаточно, чтобы система корректно употребляла ментальные термины и могла сообщать о собственных перцептивных ошибках. Иными словами, дело здесь не столько в новейших успехах ИИ, сколько в исходной философской позиции самого Хинтона. Вот его рассуждение:"Я беру мультимодального чат-бота, обучаю его. У него есть камера, роботизированная рука, он умеет говорить. Я помещаю перед ним предмет и говорю: “Покажи на предмет”. И он показывает на предмет. Затем я нарушаю работу его перцептивной системы: ставлю перед камерой призму. После этого я снова помещаю перед ним предмет и говорю: “Покажи на предмет”. И он указывает куда-то в сторону. Тогда я говорю ему: “Нет, предмет находится не там. На самом деле он прямо перед тобой. Просто перед твоей линзой стоит призма”. И чат-бот отвечает: “А, понимаю, призма преломила световые лучи, так что предмет на самом деле находится прямо передо мной. Но у меня был субъективный опыт, будто он находится сбоку”. И если бы чат-бот сказал это, он использовал бы выражение “субъективный опыт” ровно так же, как используем его мы. А значит, у этого чат-бота только что был бы субъективный опыт".С такими друзьями, иллюзионистам и враги не нужны. Даже если вы отрицаете наличие феноменального сознания, ваша теория не отпускает вожжи и не приписывает по первому требованию сознание направо и налево системам, способным говорить о своих внутренних состояниях. Сам факт правильного употребления ментальных терминов при «различении» перцептивных ошибок не означает наличие "иллюзии" сознания. Иллюзионисты все еще могут проводить различия между существами, обладающими и не обладающими иллюзией "внутренней сцены". Например, не все существа, демонстрирующие болевое поведение, испытывают боль, чем бы она ни являлась —— «флогистоном» или субъективным приватным состоянием. Критерии Хинтона носят бихевиоральный характер и попросту неудовлетворительны, если говорит о положении дел в современной науке о сознании при всем разброде и шатании внутри нее.Но, правды ради, стоит отметить, что фоновое условие рассуждений Хинтона опирается на то, что различие между искусственными и естественными нейронными сетями не столь уж принципиально. В данном случае у нас нет ответа на этот вопрос. Известно лишь то, что —— наоборот —— различия весьма существенные.Коротко говоря, даже если сознание —— это «флогистон», то поведения все еще недостаточно для определения его наличия. Если ведет себя как утка и крякает как утка, то, возможно, это игрушечная утка.
🚀 CodePilot: GUI для Claude CodeCodePilot — это настольное приложение с графическим интерфейсом для взаимодействия с Claude Code. Оно позволяет удобно общаться, писать код и управлять проектами без использования терминала. Приложение поддерживает управление сессиями, визуализацию файлов и настройку разрешений.🚀 Основные моменты:- 💬 Реальное взаимодействие с Claude с поддержкой Markdown и подсветки синтаксиса.- 📂 Удобное управление сессиями и сохранение разговоров в SQLite.- 🎯 Контекст проекта с живым деревом файлов.- 🔒 Настройка разрешений для действий.- ⚙️ Поддержка нескольких режимов взаимодействия.📌 GitHub: https://github.com/op7418/CodePilot#javascript
⚠️ Новая схема телефонных МОШЕННИКОВ!Наткнулся в интернете на историю, и решил пересказать её здесь. Потому что именно на таких простых вещах люди чаще всего и попадаются.Ситуация произошла с девушкой-бровистом из Самары. Ей пишет клиентка: «Здравствуйте, можно записаться на ламинирование бровей?»Начинается стандартный диалог. Спрашивает прайс, уточняет адрес студии, всё выглядит максимально нормально. Никаких подозрений.Потом клиентка предлагает: «Можно я вам позвоню?»Девушка соглашается.Через пару секунд приходит звонок с какого-то странного номера. Не самарский, не московский, вообще какой-то непонятный. Звонок тут же сбрасывается.После этого клиентка пишет: «Я вам звоню, а вы не берёте».И тут же звонит ещё раз, но уже с другого номера.Параллельно объясняет:«Ой, у меня просто две сим-карты в телефоне. Я не знаю, с какого номера вам позвонила».И дальше идёт ключевая фраза. Она пишет:«Скажите, пожалуйста, с какого номера я вам звонила? Назовите последние две цифры».На этом месте девушка насторожилась и просто заблокировала человека.☝️ Схема здесь довольно простая. Мошеннику нужно, чтобы вы озвучили последние цифры или весь номер входящего звонка. Иногда это используют для обхода разных систем подтверждения, иногда - чтобы дальше выстроить более сложную комбинацию.То есть внешне это выглядит как обычный диалог с клиентом. Но в какой-то момент вас подводят к тому, чтобы вы начали выдавать информацию.❗️ Поэтому базовое правило: если незнакомый человек начинает просить вас назвать какие-то цифры, коды, последние номера, подтверждения - лучше просто остановить разговор!Особенно когда всё это происходит в странной и нелогичной форме.Решил поделиться этой историей, потому что такие схемы обычно распространяются волнами. Сегодня это бровисты, завтра могут быть фрилансеры, администраторы онлайн-школ и вообще любые специалисты, которые общаются с клиентами в мессенджерах.Сталкивались с похожими попытками обмана? Интересно, какие ещё схемы сейчас гуляют. Поделитесь!Канал в ТГ | Канал в Max#советспеца