• Как передать данные между ios приложениями?

    alexyat
    @alexyat
    iOS Developer
    Все достаточно просто, приложение которе передает данные должно создать
    UIDocumentInteractionController;

    UIDocumentInteractionController *_controller;
    
    if(!_controller)
                _controller = [[UIDocumentInteractionController alloc]init];
            _controller.delegate = self;
            NSURL *documentURL = @"тут должен быть урл в файловой системе, в который записаны данные которые нужно передать";
            _controller.URL = documentURL;
            if(![_controller presentOpenInMenuFromRect:cell.frame inView:self animated:YES])
            {
                NSLog(@"can't open in another app");
            }
            else
                NSLog(@"Open in another app");
    
    // ну и делигат методы
    
    - (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {
        
        return  self;// это вьюв контроллер в котором будет всплывающее меню с выбором аппа который будет открывать.
    }
    
    - (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application {
        
        NSLog(@"Starting to send this puppy to %@", application);
    }
    
    - (void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application {
        
        NSLog(@"We're done sending the document.");
    }


    в принимающем аппе нужно в Info.plist добавить Exported Type UTIs, и добавить при запуске аппа обработку launchOptions

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


    что-то типа вот такого

    NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
    NSData* data = [NSData dataWithContentsOfURL:url];


    и делать уже что угодно с этой NSData, преобразовывать в то что вам нужно.

    подробнее как добавить вашему аппу возможность открывать файлы написано тут главное чтобы файл который вы создали в первом аппе был с тем же расширением которое вы зарегистрируете во втором.
    Ответ написан
    2 комментария
  • Сайт + ios приложение, как организовать?

    Parse.com. Но надо учитывать, что это "хранение персональных данных на серверах за пределами РФ" со всеми вытекающими после 1 сентября возможными последствиями.
    Ответ написан
    2 комментария
  • Сайт + ios приложение, как организовать?

    @rinatoptimus
    На какой CMS ваш сайт? Вот здесь урок парсера новостей с блога на Wordpress. Вдруг как-то поможет.
    Ответ написан
    4 комментария
  • Какие ЯП будут более востребованными через 10-15 лет?

    mrRontgen
    @mrRontgen
    Scala lover.
    Изучай алгоритмы и структуры данных. Они будут жить вечно! А когда понадобиться, то применишь эти знания на любом ЯП (возможно даже на новом), и цены тебе не будет!
    Ответ написан
    Комментировать
  • Как восстановить знания по C++ на сегодняшний день?

    mmatrosov
    @mmatrosov
    C++ jedi
    По поводу книг добавлю "A tour of C++" от Страуструпа. Подкупает своей компактностью - этакий ликбез для С++-программистов. Из минусов то, что там в кучу С++98 и С++11. Ещё "Overview of the New C++ (C++11/14)" от Мейерса. Это презентационные материалы с его тренинга именно по С++11/14, я там был, отличный тренинг. Из минусов - это всё же слайды презентации, какие-то моменты могут быть не понятны без докладчика. Далее, поскольку у Вас уже есть опыт, вполне подойдёт выделить список тем и разботать каждую в отдельности по статьям, записям с конференций, вопросам на SO (или Тостере :) ).

    Что именно читать - не так важно, найдёте сами. Чем мне действительно хотелось бы поделиться, так это мыслями по поводу С++11/14 (будем для краткости называть его С++14, т.к. стандарт уже одобрен). Это не просто "новые фишки в С++". Это качественно новый язык. Разница в стилях кодирования между С++14 и С++98 можно сравнить с разницей между С++98 и С. Не такая радикальная, но сравнимая. Возможности С++14 коснулись практически всех аспектов кода. Я позволю себе выделить наиболее значимые, на мой взгляд, изменения, значимые именно для "рядового" программиста, который не пишет буст и не оптимизирует компиляторы:
    • Семантика перемещения*. Контейнеры STL теперь можно возвращать из функции по значению. Строки можно эффективно конкатенировать оператором сложения. Это прекрасно читается.
    • Лямбда-функции. Алгоритмами STL можно, наконец, спокойно пользоваться и не бояться вызвать демонов описанием очередного внешнего шаблонного класса-функтора. Логика работы алгоритма теперь указывается ровно там, где он используется.
    • auto. Казалось бы, это мелочь. Но теперь имя типов итераторов STL не занимает кучу места в программе (ещё очко в пользу STL). Многие конструкции стали более компактными и ушло ненужное дублирование имени типа (принцип DRY!)
    • STL + стандартная библиотека. В С++ чудовищная скудная стандартная библиотека, особенно по сравнению с C#. Но STL, как одна из основных её частей, шагнула вперёд, и не только за счёт других фишек, благодаря которым стало удобно пользоваться тем, что уже было. В ней появились std::unordered_map (хэш-таблицы), std::array и std::tuple - очень полезные в определённых случаях контейнеры. Также добавился ряд полезных алгоритмов (см. доки к заголовочному файлу <algorithm>). А вы знали, что в С++11 есть класс std::Hash, который позволяет считать хэш от произвольных стандартных типов, включая std::string?
    • std::function. Мало того, что класс предоставляет механизм универсальных колбэков, он позволяет элегантно написать и легко использовать классы типа ScopeGuard (Страуструп называет его finally). Это даёт новый виток развития парадигме RAII, ключевой и уникальной для С++. Ранее для этих целей использовался кривоватый BOOST_SCOPE_EXIT.
    • std::unique_ptr. Благодаря семантике перемещения оказалось возможным создать эффективный умный указатель с монопольным владением объектом. У нас уже был boost::shared_ptr, так что std::shared_ptr не стал таким прорывом.

    * Не путать семантику перемещения с r-value references. Последние взрывают мозг. Но это не более чем механизм для реализации семантики перемещения и точной передачи (perfect forwarding). И тем и другим можно прекрасно пользоваться, не заглядывая под капот и не убиваясь в попытках понять, как именно работает эта магия.

    По поводу выбора версии Visual Studio. Если есть возможность, лучше использовать VS2013. В ней добавлены такие замечательные и очень полезные возможности С++14, как списки инициализации и инициализация членов класса прямо в месте объявления. В VS2012 этого нет, а по сравнению с VS2010 из интересного в ней появились только range-based циклы, но они не настолько круты. Полный список отличий в MSDN.

    В С++14 ещё много, реально МНОГО нового, по сравнению с С++98. Но большая часть либо просто заимствована из boost, так что так или иначе народ этим уже пользовался, либо достаточна специфична. Я постарался выделить именно принципиально новые моменты, которые меняют стиль написания кода. И код на С++14 смотрится гораздо компактнее и понятнее, чем на С++98. Да пребудет с вами С++14. Я кончил. Спасибо.
    Ответ написан
    Комментировать
  • Где можно найти хороший задачник по C++?

    AnnTHony
    @AnnTHony
    Интроверт
    Посмтотрите на эту книгу
    Ответ написан
    Комментировать
  • Почему программа не работает вне Qt Creator?

    EXL
    @EXL
    Энтузиаст
    Я вижу несколько способов разрешения зависимостей.
    Во-первых, можно собрать libcurl и libjansson статически и прилинковать к вашему приложению.
    Во-вторых, помимо статических libcurl и libjansson можно собрать сам Qt тоже в статику и прилинковать к вашему приложению. На выходе вы получите исполнительный файл большого размера (размер можно урезать с помощью утилиты upx), который будет запускаться во всех современных дистрибутивах GNU/Linux, где есть иксы.
    В-третьих, самый рациональный способ - собрать DEB- или RPM-пакет, в котором в зависимостях прописать пакеты libcurl3(4), libjansson4, и необходимые модули с qt4(5).

    Ну а запустить сам бинарь просто. У вас в Qt Creator'е есть переменная окружения LD_LIBRARY_PATH. Просто скопируйте в терминал её значение перед запуском программы:
    LD_LIBRARY_PATH="/opt/QtSDKs/Qt5.3.1/5.3/gcc_64/lib:/opt/QtSDKs/Qt5.3.1/5.3/gcc_64/lib:/home/user/projects/jansson/lib:$LD_LIBRARY_PATH" ./my_cool_app


    Curl у вас, похоже, собран статически. Попробуйте собрать jansson тоже в статику. Тогда ошибки error while loading shared libraries: libjansson.so.4: cannot open shared object file: No such file or directory вы не получите.
    Ответ написан
    Комментировать
  • Спортивное программирование, с чего начать?

    @lookid
    Вся сложность в том, что вы можете прекрасно знать алгоритмы и структуры данных, но задачки решать будете не в силах. Попробуйте порешать Р. Грэхем, Д. Кнут, О. Паташник - Конкретная маетматика. Основной нюанс в том, что классические алгоритмы практически не применимы в олимпиадных задачках. И дело не в том, что они не работают или работают.
    Ответ написан
    Комментировать
  • Спортивное программирование, с чего начать?

    @Perzh
    У нас в универе был кружок по олимпиадному программированию. Было весело, хоть я и не соответствовал уровню. Наверно и вам стоит попробовать =)
    Ответ написан
    Комментировать
  • Спортивное программирование, с чего начать?

    z17
    @z17
    Java, PHP
    acm.timus.ru
    тут советую, задачи от самых простых к самым сложным. Хотя codeforces не пробовал, может там сложность такая же
    Ответ написан
    Комментировать
  • Спортивное программирование, с чего начать?

    @vdem
    Дональд Кнут, "Искусство программирования" :)
    Ответ написан
    3 комментария
  • Где посмотреть видео про использование Git?

    FanKiLL
    @FanKiLL
    Есть переведённые курсы от lynda.com про git - если вам именно на русском надо
    rutracker.org/forum/viewtopic.php?t=4782388

    Но лучше в оригинале смотреть
    rutracker.org/forum/viewtopic.php?t=4178341

    Я вам ничего не давал и меня тут вообще не было.
    Ответ написан
    Комментировать
  • Где посмотреть видео про использование Git?

    isa424
    @isa424
    Ответ написан
    Комментировать
  • Где посмотреть видео про использование Git?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    thatskriptkid
    @thatskriptkid
    1) Поставь Gentoo GNU/Linux. Постарайся сделать ее "дружелюбной" для себя.
    2) Выучи подмножество английского, необходимого для понимания технических текстов.
    3) Начни с изучения основ языка программирования С. Синтаксис, основные функции.
    4) Реализуй простые алгоритмы. Напиши несколько видов сортировок. Осознай их плюсы и минусы. Это даст начало развитию алгоритмического мышления. Ознакомься с таким понятием как рекурсия.
    5) Поставь себе простенькую задачу. Не ищи их в гугле, постарайся сам придумать. Придумав, реализуй ее без всяких книжек и туториалов, используя только www.gnu.org/software/libc/manual/pdf/libc.pdf и мозг. (например я делал сниффер и клиент-серверное приложение, использующее в роли протокола - TLS 1.2)

    Такой путь я проходил сам. Раньше я сидел постоянно на винде и не видел даже в глаза GNU/Linux. И я сразу начал знакомство с Gentoo. Не бойся. Пол года помучаешься, зато знать будешь больше чем Убунтушник за 2-3 года пользования Ubuntu. Сможешь уже нормально мыслить. К тому же программировать на С под GNU/Linux одно удовольствие. На все мои пункты у тебя уйдет около 8 месяцев - 1 год, но это того стоит. И главное всегда помни, что любой язык программирования это не сама цель, а лишь средство, инструмент. Это чисто мое имхо)
    Ответ написан
    2 комментария
  • Где найти интересные задачи по с++ разного уровня?

    С. Прата. Язык программирования C++. Лекции и упражнения.
    Ответ написан
    Комментировать
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

    Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!

    Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
    Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.

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

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий
  • Каков правильный путь изучения SQL?

    @andreyqin
    Теория - Грабер + www.sql-tutorial.ru
    Практика - sql-ex.ru
    Ответ написан
    Комментировать
  • Каков правильный путь изучения SQL?

    xSkyFoXx
    @xSkyFoXx
    Я пробовал всё вышеперечисленные в других ответах, но как-то книги не давали достаточно практики. В конечном итоге полное погружение и скачёк из теории в практические навыки с последующим постоянным применением в работе мне дал вот этот (уже ставший легендарным) курс: https://class.stanford.edu/courses/Engineering/db/... (курс регулярно повторяется, доступен для изучения в собственном темпе и есть в записи на трекерах).
    После него берёте любую более-менее адекватную книгу по специфике MS SQL и считаете навык у Вас в кармане.
    Ответ написан
    1 комментарий