Все потоки
Поиск
Написать публикацию
Обновить
86.25

macOS *

Настольная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

История создания приложения по поиску нянь в Ирландии и электронного официанта

Время на прочтение3 мин
Количество просмотров4.4K
image

На летней стажировке в Европейской Инновационной Академии в Ницце студенты нашего вуза Айдар Ахметзянов и Игорь Шульган разработали мобильные приложения, через которые можно вызвать помощника для ухода за ребенком и заказать обед в ресторане.
Читать дальше →

Как перестать беспокоиться и победить Центр обновления Windows?

Время на прочтение6 мин
Количество просмотров26K
imageЭта статья рассказывает о новой функциональности Parallels Desktop 12, позволяющей контролировать установку обновлений и обслуживание Windows 10. Все помнят 1995 год, когда операционная система Windows приобрела рабочий стол со значками, панель задач и меню «Пуск». Более знаковый 1998 год помнят почему-то далеко не все — а ведь именно тогда в Windows появился Центр обновления. Теперь пользователи всегда имели на своих компьютерах самую актуальную и безопасную версию операционной системы.
Читать дальше →

Как герои игры OverWatch однажды облысели, а мы вернули им шевелюры

Время на прочтение5 мин
Количество просмотров14K
image
Одной из возможностей Parallels Desktop 12 для Mac является поддержка РС-игр. Существуют множество игр, доступных только для Windows и Xbox, и с помощью Parallels Desktop в эти игры можно играть на Mac без перезагрузки — внутри виртуальной машины. Можно ли считать, что проблема игр для PC на Mac полностью решена? Пока нет, но мы работаем над этим. В этой статье описаны несколько примеров того, как мы это делаем.
Читать дальше →

Dropbox на macOS использует приёмы malware, чтобы получить привилегии, которые ему не нужны

Время на прочтение5 мин
Количество просмотров46K

Если у вас установлен Dropbox, загляните в Системные настройкиЗащита и безопасностьКонфиденциальность.




TL;DR: Dropbox


  • Показывает фальшивое системное окно macOS, чтобы получить пароль пользователя
  • Добавляет себя в привилегированные процессы без обязательного для всех разрешения
  • Ставит в систему backdoor, чтобы восстановить разрешения, если их явно отберут
  • Эти разрешения толком не использует <irony/>
Подробности и как с этим бороться

Как увеличить жизнь батареи на Mac и другие функции Parallels Desktop 12

Время на прочтение8 мин
Количество просмотров17K
imageВ августе 2016 года появилась 12-я версия популярной во всем мире утилиты Parallels Desktop для Mac. В этой статье наши разработчики рассказывают об основных ее особенностях. Пишите в комментариях о том, чего бы вам хотелось узнать в техническом плане и мы учтем ваши пожелания в следующих материалах.
Читать дальше →

Workflow просмотра сериалов для Alfred

Время на прочтение5 мин
Количество просмотров18K

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


Для тех кто не знает что такое Alfred

Alfred — это Spotlight на стероидах. Умеет чуть более чем всё что умеет Spotlight, плюс, начиная со второй версии, поддерживает написание, а так же использование написанных другими людьми, так называемых, workflows. То бишь, расширений функциональности самописными скриптами. Для их написания поддерживается несколько скриптовых языков:


  • bash
  • zsh
  • php
  • ruby
  • python
  • perl
  • osascript
  • javascript

Речь в этой статье пойдет об одном из таких расширений.


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


Красота, не правда ли?

Под катом пара бонусов для любителей сериалов

Cериалокачалка на python3 с поддержкой расширений

Время на прочтение5 мин
Количество просмотров25K

В качестве вступления стоит сказать что я пользуюсь macOS и потому некоторые части:


  • Автозапуск (launchd)
  • Формат конфигурационных файлов (plist)
  • Программа, используемая для уведомлений (terminal-notifier)

будут специфичны для этой ОС. Однако, если Вас заинтересует проект, думаю, поменять пару путей и слегка поправить несколько функций, чтобы заставить этот код работать с Вашей системой уведомлений, yaml'ом и, допустим, кроном, не составит труда.


Итак, к делу.


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

Читать дальше →

Platypus и Packages. Создаём и устанавливаем программы на macOS

Время на прочтение4 мин
Количество просмотров11K


Очень часто бывает необходимо собрать код, написанный на Python, в приложение для Windows, Linux или OS X. Да, для этого действительно существует множество пакетов, таких как кросс-платформенные cx_Freeze и PyInstaller, а также обособленных py2exe и py2app. Но для macOS существует возможность избежать возни с созданием установочного файла.
Читать дальше →

Расширяем фреймворк Kivy пакетом XPopup (Часть 2-я)

Время на прочтение8 мин
Количество просмотров7.2K
Продолжаем скрещивать змей и птиц (или — цирк и фрукт, кому как больше нравится). В предыдущей статье мы научились создавать уведомления, теперь перейдем к не менее востребованным форточкам: формы ввода данных и файловые навигаторы.

Формы ввода данных


Началось с простейшей потребности сделать аналог InputBox'a — окна с полем ввода для текста. В результате этой «простейшей потребности» на свет появилось еще пара полезных плюшек и базовый класс для создания UI-форм.
Читать дальше →

Расширяем фреймворк Kivy пакетом XPopup (Часть 1-я)

Время на прочтение5 мин
Количество просмотров15K

Эти забавные зверушки


Не так давно передо мной встала задача в сжатые сра сроки написать работающий прототип GUI-приложения, которое без лишней строки кода хорошо дружило бы как с Windows, так и с OS X. Выбор пал на змеиный фреймворк Kivy, который с легкостью решал вышесказанное. А также, в базовой комплектации имел весь необходимый инструментарий для реализации приложения.

Ну… почти весь. Под катом расскажу что не так и как это побороть.
Читать дальше →

SimSim, откройся

Время на прочтение5 мин
Количество просмотров6.3K
imageПривет!

Многие из вас пишут под iOS. Практически у любого разработчика рано или поздно возникает нужда поковыряться во внутренностях своего приложения на уровне файлов — посмотреть, корректно ли распаковался какой-нибудь бандл, не полетела ли база. Самые настырные пользуются приложением SimPholders.

Мы с коллегами какое-то время эксплуатировали вышеупомянутое творение, а потом утомились и перестали.
Читать дальше →

Отчет с Moscow CocoaHeads Meetup 29 апреля

Время на прочтение1 мин
Количество просмотров4.2K


29 апреля в нашем офисе прошёл очередной митап Moscow CocoaHeads, посвящённый актуальным вопросам iOS- и OS X-разработки. Предлагаем всем желающим ознакомиться с видеозаписями и презентациями прозвучавших на митапе докладов.
Читать дальше →

Ближайшие события

Масштабирование iOS-приложений: Как это делал Рамблер?

Время на прочтение8 мин
Количество просмотров8.4K
Сегодня наш собеседник — Егор Толстой, руководитель отдела iOS-разработки в Rambler&Co, организатор и постоянный спикер практически-раз-в-двухмесячного митапа Rambler.iOS. Помимо работы над такими приложениями, как Рамблер.Почта, Рамблер.Новости и LiveJournal, много времени уделяет opensource проектам, в частности Typhoon — уже около года является активным участником сообщества и одним из основных контрибьюторов. В общем, нам вновь есть, о чём поговорить.


Читать дальше →

Встраиваем pre-built dylib в приложение

Время на прочтение4 мин
Количество просмотров9.3K

Перед началом майских праздников я провел 5 плотных дней за написанием приложения под iOS и Mac для конкурса. Разработка шла планомерно, к последнему дню работа приложения меня начала более-менее удовлетворять. Я решил отложить отправление на утро самого последнего дня, чтобы сделать это со свежой головой (там нужно было еще приложить текстовое описание). Утром, за несколько часов до поезда в отпуск, я сел и со спокойной душой сделал финальную обкатку основного функционала. И тут мне показалось хорошей идеей потестить, как будет вести себя приложение на абсолютно другой машине, на которой не велась разработка. Я архивирую свое приложение, перекидываю его на другой Mac и… оно не запускается. С супер-информативной ошибкой "Image not found" и путём явно указывающим на проблему с dylib. Итак: 3 часа до поезда и не запускающиеся по непонятным причинам приложение. Почему это произошло, как этого можно было бы избежать и как я справился с этой проблемой — обо всём этом под катом.

Читать дальше →

RxSwift: работа с GUI

Время на прочтение26 мин
Количество просмотров63K


Моя первая статья по RxSwift покрывала практически все базовые операторы, без знаний которых соваться в разработку не имело особого смысла. Но это всего лишь алфавит функционального программирования. Для того чтобы писать полноценные программы необходимо понять основные принципы при работе с GUI.

В основном для проработки материала используются стандартные примеры из RxExample, но для прояснения отдельных моментов была создана песочница UIExplanation и дополнительный пример в RxExample
Весь код можно найти здесь github.com/sparklone/RxSwift

При работе с UI элементами в Rx есть основные потребности:
1) понять какие подводные камни нас ожидают в принципе и зачем нужен Driver
2) научиться делать привязку UI к Observable, чтобы элементы Observable меняли состояние свойства/свойств UI элемента. Это решается с помощью UIBindingObserver
3) научиться переводить паттерн target-action на рельсы Rx. Это делается с помощью ControlEvent
4) сделать двустороннюю привязку к свойствам UI элемента. Это делается с помощью ControlProperty
5) т.к. зачастую у UI элементов delegate/dataSource предполагаются в единственном числе, — ввели класс DelegateProxy, который позволяет одновременно использовать как обычный делегат, так и Rx последовательности.

Рассмотрим каждую потребность отдельно
Читать дальше →

Приглашаем на Moscow CocoaHeads Meetup 29 апреля

Время на прочтение2 мин
Количество просмотров2.5K


29 апреля приглашаем iOS и OS X-разработчиков и дизайнеров интерфейсов на очередную встречу сообщества CocoaHeads, которая пройдёт в московском офисе Mail.Ru Group. В программе встречи — 3 доклада от экспертов, свободное общение и круглый стол. Темы докладов ждут вас под катом.
Читать дальше →

Как это сделано: мобильный кроссплатформенный движок

Время на прочтение6 мин
Количество просмотров23K
Для вас подготовил серию статей о мобильном геймдеве, основанную на полученном опыте и пройдённых граблях. В первой статье речь пойдёт о создании собственного кроссплатформенного движка для мобильных игр. По правде говоря не только мобильных, и не только игр.

Читать дальше →

Эксперименты с malloc

Время на прочтение12 мин
Количество просмотров37K
image

Как известно, в современных архитектурах x86(_64) и ARM виртуальная память процесса линейна и непрерывна, ибо, к счастью, прошли времена char near* и int huge*. Виртуальная память поделена на страницы, типичный размер которых 4 KiB, и по умолчанию они не отображены на физическую память (mapping), так что работать с ними не получится. Чтобы посмотреть текущие отображённые интервалы адресов у процесса, в Linux смотрим /proc/<pid>/maps, в OS X vmmap <pid>. У каждого интервала адресов есть три вида защиты: от исполнения, от записи и от чтения. Как видно, самый первый интервал, начинающийся с load address (соответствующий сегменту .text у ELF в Linux, __TEXT у Mach-O в OS X), доступен на чтение и исполнение — очень логично. Ещё можно увидеть, что стек по сути ничем не отличается от других интервалов, и можно быстро вычислить его размер, вычтя из конечного адреса начальный. Отображение страниц выполняется с помощью mmap/munmap, а защита меняется с помощью mprotect. Ещё существуют brk/sbrk, deprecated древние пережитки прошлого, которые изменяют размер одного-единственного интервала «данных» и в современных системах эмулируются mmap’ом.

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

  • оптимально управляет уже выделенной памятью;
  • значительно уменьшает количество обращений к ядру (ведь mmap / sbrk — это syscall);
  • вообще абстрагирует программиста от виртуальной памяти, так что многие пользуются malloc’ом, вообще не подозревая о существовании страниц, таблиц трансляции и т. п.

Довольно теории! Будем щупать malloc на практике. Проведём три эксперимента. Работа будет возможна на POSIX-совместимых операционках, в частности была проверена работа на Linux и на OS X.
Читать дальше →

RxSwift шпаргалка по операторам (+ PDF)

Время на прочтение41 мин
Количество просмотров140K


Заинтересовавшись темой функционального программирования я встал на распутье, — какой фреймворк выбрать для ознакомления. ReactiveCocoa — ветеран в iOS кругах, по нему вдоволь информации. Но он вырос с Objective-C, и хотя это не является проблемой, но все же в данный момент я в основном пишу именно на Swift, — хотелось бы взять решение изначально спроектированное с учетом всех плюшек языка. RxSwift же порт Reactive Extensions, имеющего долгую историю, но сам порт свежий и написанный именно под Swift. На нем я и решил остановиться.
Но специфика документации по RxSwift в том, что описание всех команд ведет на reactivex.io, а там в основном дается общая информация, руки у разработчиков не дошли еще сделать документацию именно для RxSwift, что не всегда удобно. Некоторые команды имеют тонкости в реализации, есть те, о которых в общей документации нет ничего кроме упоминания.
Прочитав все главы вики с RxSwift гитхаба, я сразу решил поразбираться с официальными примерами, тут то и стало ясно, что с RX такое не пройдет, нужно хорошо понимать основы, иначе будешь как мартышка с копипастом гранатой. Я начал разбирать самые сложные для понимания команды, потом те, что вроде понятны, но задав себе вопросы по ним я понял, что лишь догадываюсь на то как верно ответить, но не уверен.
В общем ничтоже сумняшеся я решил проработать все операторы RxSwift. Лучший способ что то понять в программировании — запустить код и посмотреть как он отработает. Затем учитывая специфику реактивного программирования — очень полезны схемы, ну и краткое описание на русском. Закончив сегодня работу, я подумал, что грех не поделиться результатами с тем, кто лишь присматривается к теме реактивного программирования.
Много картинок и текста под катом, очень много!
Читать дальше →

Вклад авторов