очень полезный материал снова о базовых вещах с памятью
программист — это впервую очередь не заложник своей платформы. И изучая иос не нужно забывать, что этот мир яблок не отдельный остров, который далек от компьютерных наук. А лишь абстракция над общим устройством компьютеров
https://youtu.be/TajLTcjBgIg
программист — это впервую очередь не заложник своей платформы. И изучая иос не нужно забывать, что этот мир яблок не отдельный остров, который далек от компьютерных наук. А лишь абстракция над общим устройством компьютеров
https://youtu.be/TajLTcjBgIg
YouTube
Лекция 3. Работа с памятью, выполнение программ (Программирование на C++, часть 1)
https://compscicenter.ru/
Лекция №3 в курсе "Программирование на C++, часть " (осень 2018).
Преподаватель курса: Валерий Михайлович Лесин
Лекция №3 в курсе "Программирование на C++, часть " (осень 2018).
Преподаватель курса: Валерий Михайлович Лесин
👍5🔥4
HTTP - протокол прикладного уровня, который используется для передачи данных.
Основной http является клиент-сервер.
Каждое HTTP сообщение состоих из трех частей, которые передаются в указанном порядке
1. стартовая строка - определяет тип сообщения
2. заголовки - характерезуют тело сообщения, параметры передачи и прочие сведения
3. тело сообщения - непосредственно данные сообщения
Методы HTTP запросов:
get - используется для запроса содержимого указанного ресурса.
head - аналогичен запросу get, за исключением того, что в ответете сервера отсутствует тело
post - применяется для передачи данных заданому ресурсу
put - применяется для загрузки содержимого запроса
patch - аналогично put, но только применяется к фрагменту ресурса
delete - удаляет указанный ресурс
trace - возвращает полученный запрос
connect - преобразует соединение запроса в прозрачный TCP/IP-туннель
Основной http является клиент-сервер.
Каждое HTTP сообщение состоих из трех частей, которые передаются в указанном порядке
1. стартовая строка - определяет тип сообщения
2. заголовки - характерезуют тело сообщения, параметры передачи и прочие сведения
3. тело сообщения - непосредственно данные сообщения
Методы HTTP запросов:
get - используется для запроса содержимого указанного ресурса.
head - аналогичен запросу get, за исключением того, что в ответете сервера отсутствует тело
post - применяется для передачи данных заданому ресурсу
put - применяется для загрузки содержимого запроса
patch - аналогично put, но только применяется к фрагменту ресурса
delete - удаляет указанный ресурс
trace - возвращает полученный запрос
connect - преобразует соединение запроса в прозрачный TCP/IP-туннель
👍12
Функция stride()
Если нам нужно в массиве пройтись по значением с определенным шагом, стоит воспользоваться функцией stride(). Первый аргумент - начальное число. Второй аргумент - до какого числа идет перемещение. Третий аргумент - шаг перемещения. Он может быть как положительным, так и отрицательным.
Если нам нужно в массиве пройтись по значением с определенным шагом, стоит воспользоваться функцией stride(). Первый аргумент - начальное число. Второй аргумент - до какого числа идет перемещение. Третий аргумент - шаг перемещения. Он может быть как положительным, так и отрицательным.
👍15😱1
Optional Binding
Optional Binding позволяет проверить, содержит ли опционал .some-значение. Если содержит, извлекает его и предоставляет к нему доступ с помощью локальной переменной (обычно константной). Optional Binding работает в контексте конструкций if, while и guard. Если опционал в состоянии nil, запускается блок else.
Optional Binding позволяет проверить, содержит ли опционал .some-значение. Если содержит, извлекает его и предоставляет к нему доступ с помощью локальной переменной (обычно константной). Optional Binding работает в контексте конструкций if, while и guard. Если опционал в состоянии nil, запускается блок else.
👍7
Для чего нужны closures (замыкания) в Swift и как с ними работать?
📖 Замыкания - это мощная концепция, которая позволяет использовать множество различных шаблонов программирования.
Однако для многих начинающих программистов closures могут быть сложными в понимании и дальнейшем использовании.
Это особенно верно, когда замыкания используются в асинхронном контексте.
Например, когда они используются в качестве completion handlers или передаются в приложении, чтобы их можно было вызвать позже.
В своём посте автор объясняет, что такое замыкания в Swift, как они работают и, самое главное, показывает различные примеры замыканий с возрастающей сложностью.
В этой заметки автор обещает объяснить всё, что необходимо знать для эффективного использования замыканий в приложении.
📖 Замыкания - это мощная концепция, которая позволяет использовать множество различных шаблонов программирования.
Однако для многих начинающих программистов closures могут быть сложными в понимании и дальнейшем использовании.
Это особенно верно, когда замыкания используются в асинхронном контексте.
Например, когда они используются в качестве completion handlers или передаются в приложении, чтобы их можно было вызвать позже.
В своём посте автор объясняет, что такое замыкания в Swift, как они работают и, самое главное, показывает различные примеры замыканий с возрастающей сложностью.
В этой заметки автор обещает объяснить всё, что необходимо знать для эффективного использования замыканий в приложении.
👍11
Параметры In-Out
В Swift аргументы функции – константы. В результате этого невозможно изменить значение параметра, которое передается в функцию. Параметр in-out позволяет функции переназначить значение переменной. Для этого параметр помечается inout, используется & при передаче параметра в вызов функции.
В Swift аргументы функции – константы. В результате этого невозможно изменить значение параметра, которое передается в функцию. Параметр in-out позволяет функции переназначить значение переменной. Для этого параметр помечается inout, используется & при передаче параметра в вызов функции.
🔥14👍1
Проверяем, сколько раз символ встречается в строке
Если вам надо выяснить, сколько раз в строке встречается символ, то смотрите видео ниже. В нем рассматривают два способа решения такой задачи.
👀Смотреть видео
Если вам надо выяснить, сколько раз в строке встречается символ, то смотрите видео ниже. В нем рассматривают два способа решения такой задачи.
👀Смотреть видео
👍9
Вариативные параметры
Вариативный параметр принимает ноль или более значений определенного типа. Он обозначается тремя последовательными точками, после типа данных параметра в декларации функции. Данный метод – хорошая альтернатива, когда для работы нам нужно только одно значение. Swift может конвертировать одно значение в набор переменных.
Вариативный параметр принимает ноль или более значений определенного типа. Он обозначается тремя последовательными точками, после типа данных параметра в декларации функции. Данный метод – хорошая альтернатива, когда для работы нам нужно только одно значение. Swift может конвертировать одно значение в набор переменных.
👍8🤯2
Grand Central Dispatch
Dispatch, больше известный как GCD – фреймворк, содержащий в себе языковые конструкции, позволяющие нам комфортно и достаточно просто управлять потоками, задачами для выполнения и ресурсами, которые нам необходимо захватить. GCD работает на системном уровне, таким образом он может удовлетворить потребности всех запущенных приложений на девайсе, при этом управляя ресурсами эффективно.
GCD реализован на языке C, поэтому фактически является низкоуровневым фреймворком.
Queue
Queue (очередь) – является основным примитивом GCD. Очередь представляет собой сущность, выполняющую задачи, поступающие на вход, на одном или множестве потоков. Представьте себе очередь на кассу в любом продуктовом магазине. В данном случае касса, которая вас обслужит – это поток, вы – сама задача, а все вместе – очередь.
Очередь работает по принципу FIFO, таким образом первая задача на очереди будет первой направлена на выполнение на потоке.
Dispatch, больше известный как GCD – фреймворк, содержащий в себе языковые конструкции, позволяющие нам комфортно и достаточно просто управлять потоками, задачами для выполнения и ресурсами, которые нам необходимо захватить. GCD работает на системном уровне, таким образом он может удовлетворить потребности всех запущенных приложений на девайсе, при этом управляя ресурсами эффективно.
GCD реализован на языке C, поэтому фактически является низкоуровневым фреймворком.
Queue
Queue (очередь) – является основным примитивом GCD. Очередь представляет собой сущность, выполняющую задачи, поступающие на вход, на одном или множестве потоков. Представьте себе очередь на кассу в любом продуктовом магазине. В данном случае касса, которая вас обслужит – это поток, вы – сама задача, а все вместе – очередь.
Очередь работает по принципу FIFO, таким образом первая задача на очереди будет первой направлена на выполнение на потоке.
👍9🔥2
Есть много споров антипаттер ли одиночка или нет. Юзать его — ваша ответственность. Критично же юзать и не знать какие риски на себя берешь. Поэтому вкратце:
1. Синглтон нарушает SRP (Single Responsibility Principle) — класс синглтона, помимо того чтобы выполнять свои непосредственные обязанности, занимается еще и контролированием количества своих экземпляров.
2. Глобальное состояние. Про вред глобальных переменных вроде бы уже все знают, но тут та же самая проблема. Когда мы получаем доступ к экземпляру класса, мы не знаем текущее состояние этого класса, и кто и когда его менял, и это состояние может быть вовсе не таким, как ожидается.
есть неплохая статья, которая описывает все риски использования синглотона и его альтернативы
https://habr.com/ru/company/vk/blog/334078/
1. Синглтон нарушает SRP (Single Responsibility Principle) — класс синглтона, помимо того чтобы выполнять свои непосредственные обязанности, занимается еще и контролированием количества своих экземпляров.
2. Глобальное состояние. Про вред глобальных переменных вроде бы уже все знают, но тут та же самая проблема. Когда мы получаем доступ к экземпляру класса, мы не знаем текущее состояние этого класса, и кто и когда его менял, и это состояние может быть вовсе не таким, как ожидается.
есть неплохая статья, которая описывает все риски использования синглотона и его альтернативы
https://habr.com/ru/company/vk/blog/334078/
🔥6
Вариативные параметры
Вариативный параметр принимает ноль или более значений определенного типа. Он обозначается тремя последовательными точками, после типа данных параметра в декларации функции. Данный метод – хорошая альтернатива, когда для работы нам нужно только одно значение. Swift может конвертировать одно значение в набор переменных.
Вариативный параметр принимает ноль или более значений определенного типа. Он обозначается тремя последовательными точками, после типа данных параметра в декларации функции. Данный метод – хорошая альтернатива, когда для работы нам нужно только одно значение. Swift может конвертировать одно значение в набор переменных.
👍8
Clean Architecture и MVVM в iOS: пример реализации проекта
При разработке программного обеспечения важно использовать не только паттерны проектирования, но и архитектурные паттерны.
Как мы видим на графике Clean Architecture, у нас есть различные слои в приложении. Главное правило — не иметь зависимостей от внутренних слоев к внешним. Стрелки, указывающие снаружи внутрь, это правило зависимостей. Зависимости могут быть только от внешнего слоя внутрь.
📖 В этой статье на рабочем примере проекта показывается, как архитектурные паттерны MVVM и Clean Architecture могут быть применены в приложении для iOS.
🛠 Проект на Github, который может быть использован в качестве шаблона.
При разработке программного обеспечения важно использовать не только паттерны проектирования, но и архитектурные паттерны.
Как мы видим на графике Clean Architecture, у нас есть различные слои в приложении. Главное правило — не иметь зависимостей от внутренних слоев к внешним. Стрелки, указывающие снаружи внутрь, это правило зависимостей. Зависимости могут быть только от внешнего слоя внутрь.
📖 В этой статье на рабочем примере проекта показывается, как архитектурные паттерны MVVM и Clean Architecture могут быть применены в приложении для iOS.
🛠 Проект на Github, который может быть использован в качестве шаблона.
🔥8
Крутая статья про Архитектуры.
Каждый из нас всегда хоть раз задумывался, а по какой архитектуре я буду писать своё приложение? Каких принципов я буду придерживаться?
Держите, архитекторы.
https://habr.com/ru/company/badoo/blog/281162/
Каждый из нас всегда хоть раз задумывался, а по какой архитектуре я буду писать своё приложение? Каких принципов я буду придерживаться?
Держите, архитекторы.
https://habr.com/ru/company/badoo/blog/281162/
Хабр
Архитектурные паттерны в iOS
Введение в MVP, MVC, MVVM и VIPER. Что между ними общего и в чем разница. Делаете все по MVC, а получается некрасиво? Сомневаетесь, переходить ли на MVVM? Слыша...
👍12