Pull to refresh
0
0
Send message

Немного практики функционального программирования в Swift для начинающих

Reading time34 min
Views99K


Я хотела бы представить концепцию Функционального Программирования новичкам самым простейшим образом, выделив некоторые его преимущества из множества остальных, которые реально позволят сделать код более читаемым и выразительным. Я подобрала для вас интересные демонстрационные примеры, которые находятся на Playground в Github.

Функциональное Программирование: Определение


Прежде всего, Функциональное Программирование — это не язык или синтаксис, а скорее всего — способ решения проблем путем разбиения сложных процессов на более простые и последующей их композиции. Как следует из названия "Функциональное программирование", единицей композиции для данного подхода является функция; и цель такой функции — избежать изменения состояния или значений за пределами своей области действия (scope).

В Мире Swift для этого есть все условия, ибо функции здесь являются такими же полноправными участниками процесса программирования, как и объекты, а проблема изменяемости (mutation) решается на уровне концепции value ТИПОВ (структур struct и перечислений enum), которые помогают управлять изменяемостью (mutation) и четко сообщают о том, как и когда это может произойти.

Однако Swift не является в полном смысле языком Функционального программирования, он не принуждает вас к Функциональному программированию, хотя и признает преимущества Функциональных подходов и находит способы встраивания их.

В этой статье мы сфокусируемся на использовании встроенных в Swift (то есть «из коробки») элементов Функционального программирования и понимании того, как можно их комфортно использовать в вашем приложении.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments18

Новая концепция диабета 2 типа: опасный, но обратимый

Reading time12 min
Views33K

Исторически сахарный диабет считался страшным заболеванием — в тяжёлых стадиях ему сопутствуют такие побочные эффекты, как слепота и гангрена конечностей. Большую часть истории диабета, известного ещё врачам Древней Греции как минимум 2500 лет назад, он считался неизлечимым. Терапия диабета уколами инсулина появилась только в XX веке: в следующем году исполнится 100 лет первому уколу инсулина, которым в 1922 году канадский доктор спас умиравшего от диабета 14-летнего мальчика. Однако инсулинотерапия — это лечение только для диабета 1 типа, при котором в организме человека нарушена выработка собственного инсулина. При более распространённом диабете 2 типа уколы инсулина — это не лечение, а симптоматическая терапия, которая только замедляет развитие болезни. Причины этого были открыты позже.

В XXI веке, благодаря развитию эндокринологии (науки о гормонах) представления о диабете 2 типа поменялись радикально. С одной стороны, список сопутствующих развитию диабета проблем только вырос и теперь включает сердечно-сосудистые заболевания, многие случаи рака и болезнь Альцгеймера. С другой — появившееся представление о пропущенном звене, их общем метаболическом корне — гормональном сбое, известном как инсулинорезистентность, привело к пониманию не только как диабет развивается, но и как это развитие остановить и обратить вспять, не доводя до инсулиновой иглы.
Симптоматику предиабета следует знать всем, кому за 30
Total votes 107: ↑98 and ↓9+89
Comments165

Использование UIViewPropertyAnimator для создание пользовательских анимаций

Reading time11 min
Views17K
Создание анимаций это здорово. Они являются важной частью iOS Human Interface Guidelines. Анимации помогают привлечь внимание пользователя к важным вещам или попросту делают приложение не таким скучным.

Существует несколько способов реализовать анимацию в iOS. Вероятно, самым популярным способом является использование UIView.animate(withDuration: animations:). Вы можете анимировать слой изображения с помощью CABasicAnimation. Кроме того, UIKit позволяет настроить кастомную анимацию для отображения контроллера с помощью UIViewControllerTransitioningDelegate.

В этой статье я хочу обсудить еще один захватывающий способ анимирования вьюшек — UIViewPropertyAnimator. Данный класс предоставляет гораздо больше функций управления, чем его предшественник UIView.animate. С его помощью можно создавать временные, интерактивные и прерываемые анимации. Кроме того, имеется возможность быстрой смены аниматора.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments1

Звуки для UI: подборка тематических ресурсов

Reading time3 min
Views21K
Рассказываем о площадках, где можно найти и скачать аудиосемплы для озвучки пользовательского интерфейса. Подборка пригодится тем, кто разрабатывает приложения или игры.

Другие наши подборки:


Total votes 26: ↑25 and ↓1+24
Comments2

Собеседование: Swift. Вопросы и ответы

Reading time13 min
Views59K
Языку программирования Swift всего четыре года, но он уже становится основным языком разработки для iOS. Развиваясь до версии 5.0, Swift превратился в сложный и мощный язык, отвечающий как объектно-ориентированной, так и функциональной парадигме. И с каждым новым релизом в нем добавляется еще больше возможностей.

Но насколько хорошо вы на самом деле знаете Swift? В этой статье вы найдете примеры вопросов для собеседования по Swift.

Вы можете использовать эти вопросы для интервьюирования кандидатов, чтобы проверить их знания или вы можете проверить свои собственные. Если вы не знаете ответа, не переживайте: к каждому вопросу есть ответ.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments19

Музыка для программиста

Reading time6 min
Views48K
Я захожу в офис, поднимаюсь на третий этаж, подхожу к Жене, который выглядит, как зайчик-лапушка. Чтобы меня услышать, он достает наушник из уха, а я слышу, как из маленького динамика разносится какой-то дикий рёв и пронизывающий до костей ор! Ох, внешность, как же ты бываешь обманчива…

Если осмотреться по сторонам, можно увидеть, что большинство людей у нас сидит в наушниках. Мне стало интересно, что и зачем слушают наши разработчики, и не мешает ли им это работать.


Читать дальше →
Total votes 38: ↑31 and ↓7+24
Comments81

22 сайта для программиста, которые помогут заговорить на английском

Reading time3 min
Views126K
Хабр, привет!

Сделал подборку из 22-х сайтов для изучения английского языка.
Подборка поможет изучить английский легко, без зубрежки и учебников.

Приступим!

Учить лексику


Плагины, мобильные приложения и сайты, которые помогут перевести и запомнить незнакомые термины с русского на английский и обратно.

ЛеоПереводчик

С этим плагином удобно переписываться с коллегами. Он автоматически переводит непонятные слова и выражения. Незаменимый инструмент, когда нет времени на доскональные переводы и нужен срочный ответ.
Читать дальше →
Total votes 45: ↑39 and ↓6+33
Comments13

Структуры данных с примерами на языке Swift. Часть первая: связаный список

Reading time3 min
Views19K

Предисловие


Кто из iOS разработчиков не мечтал о работе в престижном месте вроде Yandex или Avito. К сожалению, про мечты на собеседованиях спрашивает только hr, а вот интервьюеры из числа разработчиков задают вопросы немного другого характера. Чем отличается reference type от value type или bounds от frame? Вопросы, который каждый из нас слышал не раз на собеседованиях. Если ваше интервью начинается с вопроса про отличия значимого и ссылочного типов или в духе “расскажите ка нам про SOLID”, то вы явно на пути трудоустройства в ООО “Так себе перспективы“.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments28

О простых вещах-сложно. Письмо химика 3D-печатнику. Растворители для пластмасс и защита от них

Reading time15 min
Views98K
DIY посвящается...

Одним из наиболее часто задаваемых вопросов в моей консультационной практике являются вопросы связанные с растворением/склейкой пластмасс с помощью всевозможных органических растворителей. В последнее время произошел настоящий всплеск интереса к химии высокомолекулярных соединений, связанный с появлением доступных 3D принтеров и необходимостью ориентироваться в «чернилах» для них (т.е. полимерных нитях-филаментах). Лишний раз убеждаюсь в том, что ни один, даже самый продвинутый «музей науки» с эффектным шоу не может так заставить IT-шника интересоваться пластмассами, как собственный 3D-принтер. Так что, читатель, если тебе хоть раз приходилось думать чем склеить пластмассу, которую не клеил default-ный суперклей, если мучали сомнения по поводу растворения поддержек свежеотпечатанной детали, да и просто интересно, чем можно отмыть клей от магазинного ценника на подарке — прошу под кат. Также настоятельно рекомендую страницу отправить в закладки не только тем, кто часто занимается склеиванием пластмасс, но и всем тем, кому часто приходится работать с различными растворителями/разбавителями. Делалось для себя — подарено Хабру!

Читать дальше →
Total votes 115: ↑114 and ↓1+113
Comments194

Как научиться учиться

Reading time5 min
Views14K
Привет, Хабр! Представляю вашему вниманию перевод статьи «HOW TO LEARN HOW TO LEARN».

Заметки и наблюдения о том, как лучше организовать свой учебный процесс.

Мы, IT-шники, обречены на постоянное обучение до конца жизни.

Еще 10-15 лет назад знания Java и JSP-серверлетов было достаточным для статуса востребованного специалиста. Когда мобильная разработка стала популярной, можно было освоить Objective-C и выучить Cocoa Touch. Теперь все помешаны на React, и современный JavaScript – это уже не тот JavaScript, каким он был 3 года назад. JavaScript того времени – это древний язык сейчас. C C++ все перешли на Go, а теперь переходят на Rust? А как насчет Haskell и Elexir?
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments13

Советы для тех, кто решил стать iOS-разработчиком

Reading time12 min
Views82K


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

Коротко обо мне: мне 43, я Женщина и iOS-разработчик. Сейчас у меня одна из самых востребованных специальностей на рынке, поиск работы составляет в среднем от 2 дней до 2 недель.
Total votes 43: ↑30 and ↓13+17
Comments75

Как научить людей использовать Git

Reading time3 min
Views139K
По работе приходится участвовать в разных проектах, поэтому я хорошо знаю, как работают все мои коллеги. Помню, что компания начала использовать Git буквально за пару недель до моего прихода. На мониторах разработчиков кругом висели наклейки с напоминанием: сначала add, потом коммит, затем пуш.


Они не знали, зачем. Программистам просто сказали строго следовать инструкции, иначе беда. Но проблемы возникали так часто, что я решила провести семинар по Git.
Читать дальше →
Total votes 77: ↑69 and ↓8+61
Comments384

Куда деваются программисты после 40

Reading time16 min
Views167K


— Вам уже 45? Но у нас коллектив очень молодой. Вы уверены, что хотели бы у нас работать?
— Да, конечно! Я много наслышан о вашей компании. Это мечта всей моей жизни!
— Ну ладно. Вот вам простой вопросик. Что означает буква L в аббревиатуре SOLID?
— Liskov Substitution Principle.
Читать дальше →
Total votes 136: ↑105 and ↓31+74
Comments1044

Научные способы улучшить внимание: ноотропы, нейроинтерфейсы и электростимуляция

Reading time28 min
Views101K
Как усилить концентрацию внимания? Для этого существует много бытовых советов, например, использовать наушники с шумоподавлением, выработать привычку работать под музыку одного стиля, блокировать сайты, на которые чаще всего отвлекаешься, ложиться по будильнику, заниматься спортом и класть все важные вещи в нужные места.

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

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


Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments132

Apple Wallet. Что это такое и как интегрировать в него свою карту

Reading time8 min
Views64K

Принято считать, что Wallet – не самый популярный сервис в СНГ. Но уже во втором проекте подряд заказчик ставит задачу «Сделать интеграцию с Wallet». Поэтому я решил написать эту статью, чтобы рассказать о сервисе в целом и показать, как интегрировать в него свой продукт.


Что такое Wallet? Он позволяет держать в телефоне различного вида карты (билеты, скидочные карты и т.п.), облегчая жизнь пользователям продукта. Более того, есть возможность актуализировать информацию о карте посредством push-уведомлений, но это тема для отдельной статьи. Но если у вас есть карта/билет/абонемент, которые можно интегрировать в телефон, то для этого есть решение! Как это сделать – читайте ниже.

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments13

Открытый курс машинного обучения. Тема 1. Первичный анализ данных с Pandas

Level of difficultyEasy
Reading time15 min
Views1M


Открытый курс машинного обучения mlcourse.ai сообщества OpenDataScience – это сбалансированный по теории и практике курс, дающий как знания, так и навыки (необходимые, но не достаточные) машинного обучения уровня Junior Data Scientist. Нечасто встретите и подробное описание математики, стоящей за используемыми алгоритмами, и соревнования Kaggle Inclass, и примеры бизнес-применения машинного обучения в одном курсе. С 2017 по 2019 годы Юрий Кашницкий yorko и большая команда ODS проводили живые запуски курса дважды в год – с домашними заданиями, соревнованиями и общим рейтингом учаcтников (имена героев запечатлены тут). Сейчас курс в режиме самостоятельного прохождения.

Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments61

Вам следует задуматься о часах практики

Reading time4 min
Views14K
Если вы музыкант или знаете кого-то из музыкантов, то вам знакомы такие понятия как «практика» и «репетиция». Они имеют совершенно разное значение.

Большинство музыкантов имеют «священные» часы практики. Они делают это не для артистов, группы или кого-то еще. Это время для того, чтобы сесть и сосредоточиться на технике, песне, которую они хотят изучить, или на том, что их сердце желает.


Читать дальше →
Total votes 25: ↑18 and ↓7+11
Comments11

Контроль над ситуацией делает тебя счастливым

Reading time6 min
Views5.8K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Controlling Your Environment Makes You Happy» автора Джоэля Спольски.

Об авторе: Джоэль Спольски, совладелец Trello, Fog Creek Software и глава Stack Overflow

image

Большинство разработчиков С++ терпеть не могут программирование пользовательского интерфейса. Это удивительно, так как я считаю UI-программирование до смешного простым, понятным и увлекательным.

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

Думаю, разработчики боятся UI-программирования из-за страха перед UI-дизайном. В их понимании UI-дизайн похож на графический дизайн — загадочный процесс, подвластный только творческим «total-black-look» личностям со странным пирсингом, которые поглощают латте и создают приятные глазу штуки. Программисты же видят себя логиками-аналитиками: хороши в аргументации, в творчестве — нули. Посему уверены, что дизайн интерфейсов не для них.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments9

Лекции Техносферы. Нейронные сети в машинном обучении

Reading time3 min
Views32K


Представляем вашему вниманию очередную порцию лекций Техносферы. На курсе изучается использование нейросетевых алгоритмов в различных отраслях, а также отрабатываются все изученные методы на практических задачах. Вы познакомитесь как с классическими, так и с недавно предложенными, но уже зарекомендовавшими себя нейросетевыми алгоритмами. Так как курс ориентирован на практику, вы получите опыт реализации классификаторов изображений, системы переноса стиля и генерации изображений при помощи GAN. Вы научитесь реализовать нейронные сети как с нуля, так и на основе библиотеке PyTorch. Узнаете, как сделать своего чат-бота, как обучать нейросеть играть в компьютерную игру и генерировать человеческие лица. Вы также получите опыт чтения научных статей и самостоятельного проведения научного исследования.

Total votes 55: ↑54 and ↓1+53
Comments6

Concurrency в Swift 3 и 4. Operation и OperationQueue

Reading time31 min
Views79K



Если вы хотите добиться UI отзывчивости вашего iOS приложения, выполняя такие затратные по времени куски кода, как загрузка данных из сети или обработка изображений, то вам нужно использовать продвинутые паттерны, связанные с многопоточностью (сoncurrency), иначе работа вашего пользовательского интерфейса (UI) начнет сильно замедляться и даже может привести к полной его «заморозке». Вам нужно убрать ресурсо-затратные задачи с main thread (главного потока), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (UI).

В текущей версии Swift 3 и ближайшей Swift 4 (осень 2017) это можно сделать двумя способами, которые пока не связаны с встроенными языковыми конструкциями Swift, начало реализации которых будет только в Swift 5 (конец 2018).

Один из них использует GCD (Grand Central Dispatch) и ему посвящена предыдущая статья. В этой статье мы покажем, как достичь отзывчивости UI в iOS приложениях с помощью таких абстрактных понятий, как операция Operation и очередь операций OperationQueue. Мы также покажем в чем различие этих двух подходов и какой из них в каких ситуациях лучше использовать.

Код для этой статьи можно посмотреть на Github.
Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments9
1

Information

Rating
Does not participate
Registered
Activity