Гибкий сетевой слой в iOS-приложении

Практически любое мобильное приложение взаимодействует с серверами через их API. Перед разработчиком в таком случае стоит задача реализовать сетевой слой своего приложения. Провайдеры того или иного API разрабатывают его интерфейс, зачастую, одинаково, но бывает и так, что API имеет свою специфику. Например, API Вконтакте при какой-либо ошибке в обращении к их методам не отображает это в статус коде ответа, а отображает это в самом теле ответа как JSON по ключу «error»: то есть, во-первых, вы не поймете по статус коду прошел ли запрос удачно, а во-вторых, не узнаете, какая произошла ошибка пока не измените логику обработки ответа. Таким образом, перед разработчиком лежит задача реализации достаточно гибкого слоя, контроль над которым можно осуществлять на разных этапах работы с сервером.

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

Вот как это будет выглядеть в итоге:

import UIKit

class ViewController: UIViewController {

    let service: WallPostable = BasicWallAPI()
    
    @IBOutlet weak var textField: UITextField!

    @IBAction func postAction() {
        service.postWall(with: textField.text!)
    }
}

Читать дальше →
Гибкий сетевой слой в iOS-приложении
Source: habrahabr

Пост №3411425

Автор: jewreddoor

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3411425″ }, «headline»: «анимация :: логин :: пароль :: гиф анимация (гифки — ПРИКОЛЬНЫЕ gif анимашки)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C-4326465.gif», «height»: 458, «width»: 460 }, «datePublished»: «2018-02-23T18:30:03+03:00», «dateModified»: «2018-02-23T18:30:03+03:00», «author»: { «@type»: «Person», «name»: «jewreddoor» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3411425
Source: Joyreactor

Пост №3411422

Автор: Ali-dgi

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3411422″ }, «headline»: «суперсемейка :: арт барышня (арт девушка, art барышня, art девушка,) :: Shädman (TheRealShadman, Shädbase) :: Pixar :: Мультфильмы :: artist :: art (арт)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/Sh%C3%A4dman-artist-%D0%B0%D1%80%D1%82-%D0%B1%D0%B0%D1%80%D1%8B%D1%88%D0%BD%D1%8F-art-4326462.jpeg», «height»: 1458, «width»: 1200 }, «datePublished»: «2018-02-23T18:29:00+03:00», «dateModified»: «2018-02-23T18:29:00+03:00», «author»: { «@type»: «Person», «name»: «Ali-dgi» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3411422
Source: Joyreactor

Пост №3411390

Автор: SoBoJId

Хэй, девоньки, с Международным Женским Днём вас всех! Тьфу, не та методичка.Пока мы все ждём что Вождь нам приготовит на 23 февраля, у нас тут очередная раздача ключей от Mishvanda.Первым 10(или больше) отписавшимся в теме (только основная ветка — коммент под комментом не считается) достанется какой-нибудь ключ для стима. Проверяйте личку, она закрыта по умолчанию — в открытый доступ кидать не буду, отдам следующему.Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3411390″ }, «headline»: «Хэй, девоньки, с Международным Женским Днём вас всех! / Steam халява :: Steam (Стим) :: Игры», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/Steam%C2%A0%D1%85%D0%B0%D0%BB%D1%8F%D0%B2%D0%B0-Steam-%D0%98%D0%B3%D1%80%D1%8B-4326428.jpeg», «height»: 215, «width»: 460 }, «datePublished»: «2018-02-23T18:09:14+03:00», «dateModified»: «2018-02-23T18:09:14+03:00», «author»: { «@type»: «Person», «name»: «SoBoJId» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «Тьфу, не та методичка. Пока мы все ждём что Вождь нам приготовит на 23 февраля, у нас тут очередная раздача ключей от Mishvanda. Первым 10(или больше) отписавшимся в теме (только основная ветка — коммент под комментом не считается) достанется какой-нибудь ключ для стима. Проверяйте личку, она закры» }
Комментировать 
Пост №3411390
Source: Joyreactor

Linux в одном файле для Macbook

TL;DR Можно уместить полноценный Linux Live дистрибутив в один файл, если вкомпилировать в ядро initramfs с корневой файловой системой. Компьютеры с UEFI умеют загружать такой файл напрямую, без помощи загрузчика типа GRUB. У меня получилось уместить дистрибутив с программами aircrack-ng, reaver и драйверами для WiFi карт в файл размером 20 мегабайт (наверняка можно еще меньше).

Основные преимущества

  • Работает на любых компьютерах с UEFI — один и тот же файл будет работать на PC и Mac.
  • Не требует установки — достаточно скопировать один файл на EFI раздел диска и указать в переменных NVRAM путь к этому файлу.
  • Не нужно устанавливать загрузчики GRUB, rEFInd — ядро Linux собранное с поддержкой EFI Stub можно грузить напрямую без промежуточного загрузчика.
  • Не нужны USB-флешки — скопированный на раздел EFI дистрибутив остается там навсегда и его можно будет загрузить в любой момент. Он не занимает места на разделе основной системы, так как раздел EFI не используется в ОС.
  • Не изменяет процесс загрузки — на компьютерах Mac можно загрузить такое ядро один раз. Следующая перезагрузка macOS как обычно. Никаких следов Linux в очередности загрузки не останется
  • Совместимо с шифрованием диска FileVault и т.д. — файл копируется на EFI System Partition, специальный зарезервированный раздел диска. В компьютерах Mac его размер около 200 мегабайт. Он выделен под Boot Camp и обычно не используется

Читать дальше →
Linux в одном файле для Macbook
Source: habrahabr

VLC 3.0 Vetinari

Неплохо начался и продолжается год для Linux в качестве рабочей станции. Вслед за третьим Wine, настало очередь популярнейшего медиаплеера VLC. После длительного и напряженного цикла разработки VideoLAN анонсировала выпуск видеоплеера с открытым исходным кодом VLC 3.0.0 озаглавленного Vetinari. Новая версия доступна для платформ Linux, *BSD, Mac, IOS, Windows и Android. В новой версии появилось множество современных возможностей: поддержка iPhone X, звука 3D, HDR видео, а также проигрывание видео с оборотом 360 градусов.

VLC X-Box

Среди самых заметных новшеств следует назвать поддержу видео высокой четкости 4k / 8k, видео 10-бит, проброс HD аудио кодеков, меню BD-J BluRay Java, поддержка NAS устройств, Google Chromecast и FTP, SFTP, SMB подключений.

Читать дальше →
VLC 3.0 Vetinari
Source: habrahabr

VLC 3.0.0 Vetinari

После длительного и напряженного цикла разработки VideoLAN анонсировала выпуск видеоплеера с открытым исходным кодом VLC 3.0. Наиболее значительное обновление популярнейшего медиаплеера VLC 3.0 и первая версия новой ветки Vetinari прилетело к нам в первой декаде февраля и стало доступным для платформ Linux, *BSD, Mac, IOS, Windows и Android. В новой версии появилось множество современных возможностей: поддержка iPhone X, звука 3D, HDR видео, а также проигрывание видео с оборотом 360 градусов.

VLC X-Box

Среди самых заметных новшеств следует назвать поддержу видео высокой четкости 4k / 8k, видео 10-бит, проброс HD аудио кодеков, меню BD-J BluRay Java, поддержка NAS устройств, Google Chromecast и FTP, SFTP, SMB подключений.

Читать дальше →
VLC 3.0.0 Vetinari
Source: habrahabr

«Бука» объяснила отсутствие мата в локализации Kingdom Come

Компания «Бука» выступила отечественным локализатором исторической ролевой игры Kingdom Come: Deliverance, главного хита начала 2018 года. Успех RPG с открытым миром объясняется целым рядом причин, однако […]
«Бука» объяснила отсутствие мата в локализации Kingdom Come
Source: 4pda

Пост №3411360

Автор: vino

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3411360″ }, «headline»: «I'll Save Her for Myself / coub :: benny hill», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/coub-benny-hill-4326390.jpeg», «height»: 958, «width»: 1280 }, «datePublished»: «2018-02-23T17:46:36+03:00», «dateModified»: «2018-02-23T17:46:36+03:00», «author»: { «@type»: «Person», «name»: «vino» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3411360
Source: Joyreactor

Гипервизоры. Что же это?

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

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

О преимуществах виртуализации и облачных вычислений уже сказано много слов и написано огромное количество статей, настолько много, что кажется будто эта технология уже устарела в быстро развивающемся мире ИТ инфраструктуры. Однако, все же стоит выбросить такие мысли из головы, ведь технология гипервизоров как раз может помочь в стимулировании инноваций в мире облачных вычислений.
Читать дальше →
Гипервизоры. Что же это?
Source: habrahabr