• Можно ли заменить SSD MacBook Pro 13 2017?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ссд проприетарный, поменять ну только через эпл если есть программы замены.
    в целом они не разборные, ремонт никак не производится сертифицированных ремонтных центров нет, только в эпл отдавать, все остальное на свой страх и риск.
    В эпл просто всю комплектуху меняют целиком, в не зависимости от причины поломки.
    Ответ написан
    Комментировать
  • Как организовать Core data без tableview?

    Waka_Waka
    @Waka_Waka
    IOS Developer
    Это очень просто сделать.
    Первым делом нужно подключить Core Data в класс, в котором вы собираетесь что-либо реализовать с использованием Core Data.
    Делается это так:
    -(NSManagedObjectContext *)managedObjectContext{
        NSManagedObjectContext *context = nil;
        id delegate = [[UIApplication sharedApplication]delegate];
        if ([delegate performSelector:@selector(managedObjectContext)]) {
            context = [delegate managedObjectContext];
        }
        return context;
    }

    Мы используем тут класс AppDelegate, потому что Core Data инициализируется именно там.

    Предположим, что у нас есть сущность "Human", в которой есть три поля: firstName, lastName и phoneNumber.

    Запись этих данных в CoreData будет выглядеть так:
    NSManagedObjectContext *context = [self managedObjectContext]; 
        Humans *newHuman = [NSEntityDescription insertNewObjectForEntityForName:@"Humans"
                                                         inManagedObjectContext:[self managedObjectContext]];
        if (newHuman != nil) {
            newHuman.firstName = self.firstNameField.text;
            newHuman.lasteName = self.lastNameField.text;
            newHuman.phoneNamber = self.phoneNumberField.text;
    }
    
    NSError *savingError = nil;
    
    if (![context save:&savingError]) {
    NSLog(@"Eroor");
    }


    Получение данных из CoreData будет выглядеть так:
    NSManagedObjectContext *context = [self managedObjectContext];
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init]; 
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"Humans" inManagedObjectContext:context]; 
        [fetchRequest setEntity:entity];
        
        NSMutableArray *array = [context executeFetchRequest:fetchRequest error:nil]; //Массив можно определить и в другом месте
    
    NSManagedObject *newCell = [self.array objectAtIndex:0]; //Тут надо указать какой-либо индекс (обычно в tableview используется indexPatch.row). Можно так же быстрым перебором получить все.
    
    //И записываем в переменные
    NSString *name = [newCell valueForKey:@"firstName"];
    NSString *lastName = [newCell valueForKey:@"lasteName"];
    NSString *phoneNum = [newCell valueForKey:@"phoneNamber"];


    Вот так все просто))
    Ответ написан
    Комментировать
  • В каких случаях отменнее применять SQLite, а в каких Core Data?

    kaspartus
    @kaspartus
    Я бы в начальный уровень знания Core Data включил:
    - Знание основных элементов Core Data стека
    - Знание возможностей фреймвока(писать, например, можно не только в базу)
    - Умение писать/читать
    - Работа с простейшими свзяками

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

    Потом советую прочесть про NSFetchedResultsController, но в начале лучше почитать примеры без них.

    А так есть книжка "Pro Core Data for iOS", на хабре даже есть перевод первых 4 глав: habrahabr.ru/post/198242
    Ответ написан
    Комментировать
  • Как называется этот элемент в swift?

    SnapSh0t
    @SnapSh0t
    iOS-Developer
    1*nUOQv3AjroYhqdfnMTj-pA.jpeg
    Alert
    1*Apo2oPX3FytJSikiNQEX-Q.jpeg
    func showSimpleAlert() {
            let alert = UIAlertController(title: "Sign out?", message: "You can always access your content by signing back in",         preferredStyle: UIAlertControllerStyle.alert)
    
            alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.default, handler: { _ in
                //Cancel Action
            }))
            alert.addAction(UIAlertAction(title: "Sign out",
                                          style: UIAlertActionStyle.default,
                                          handler: {(_: UIAlertAction!) in
                                            //Sign out action
            }))
            self.present(alert, animated: true, completion: nil)
        }

    ActionSheet
    1*jGNiuYQJkck_Nvv3Ir06fg.jpeg
    func showSimpleActionSheet(controller: UIViewController) {
            let alert = UIAlertController(title: "Title", message: "Please Select an Option", preferredStyle: .actionSheet)
            alert.addAction(UIAlertAction(title: "Approve", style: .default, handler: { (_) in
                print("User click Approve button")
            }))
    
            alert.addAction(UIAlertAction(title: "Edit", style: .default, handler: { (_) in
                print("User click Edit button")
            }))
    
            alert.addAction(UIAlertAction(title: "Delete", style: .destructive, handler: { (_) in
                print("User click Delete button")
            }))
    
            alert.addAction(UIAlertAction(title: "Dismiss", style: .cancel, handler: { (_) in
                print("User click Dismiss button")
            }))
    
            self.present(alert, animated: true, completion: {
                print("completion block")
            })
        }
    Ответ написан
    Комментировать
  • Какие есть готовые решения онлайн покупки билетов на мероприятия?

    GailWynand
    @GailWynand
    Интересуюсь ИТ, биржевой торговлей, стартапами
    Неоднократно использовал этот ticketforevent.com/ru
    Ответ написан
    1 комментарий
  • Есть ли курсы/видео по верстке адаптивного сайта без bootstrap?

    thehighhomie
    @thehighhomie
    хочешь выберу время и пару часов уделю, покажу как верстать все самому
    Ответ написан
    Комментировать
  • Украли macbook какие данные видит интернет провайдер?

    buycisco
    @buycisco
    Buycisco.ru
    В реальности это все пыль. Если украли ноут и полностью его сотрут - можешь забыть. Даже если в iCloud заблокируешь его. Какой ноут? Ставили Утилиту пароля прошивки?
    Ответ написан
    Комментировать
  • Apache ActiveMQ vs RabbitMQ (or other)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Мы остановились на RabbitMQ и проблем с оным пока не наблюдалось.
    По поводу сравнений и прочего, можно почитать например Тут. Там пишут что релизы ActiveMQ страдают от багов что весьма грустно на продакшене.
    Ответ написан
    1 комментарий
  • Как правильно работать с каналами RabbitMQ?

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

    В вашем случае, есть вероятность, что в момент создания Channel очередь пересоздается и теряются все сообщения, т.е:
    $channel->queue_declare('hello', false, false, false, false);
    Ответ написан
    Комментировать
  • Отказоустойчивый сервер очередей?

    perminovma
    @perminovma
    А разве устойчивые очереди (durable=True) в RabbitMQ это не то, что вы хотите?
    Ответ написан
    2 комментария
  • Как опубликовать множество сообщений в rabbitmq?

    пример на Perl
    чуть подредактировать, убрав все "$ch->consume...", вызывать publish в цикле.

    нашел на пыхе используется php-amqp:
    <?php
        $connection = new AMQPConnection(['host'=> '127.0.0.1', 'port' => '5672', 'login' => '', 'password' => '', 'vhost' => 'ejebberd', 'connect_timeout' => 10]);
        $connection->connect();
        $channel = new AMQPChannel($connection);
    
        $exchangename = IPhonParameters::$rabbit_EXCHANGE;
        $queue = 'ejabberd';
        $routing_key = 'ejabberd';
    
        $exchange = new AMQPExchange($channel);
        $exchange->setName($exchangename);
        $exchange->setType(AMQP_EX_TYPE_DIRECT);
        $exchange->setFlags(AMQP_DURABLE);
        $exchange->declareExchange();
    
        $q = new AMQPQueue($channel);
        $q->setName($queue);
        $q->setFlags(AMQP_DURABLE);
        $q->declareQueue();
        $q->bind($exchangename, $routing_key);
    
        for ($i = 1001; $i < 3001 ; $i++) {
            $aaa = sprintf('%04d', $i);
            $a_body = [
                'server' => 'default'
                , 'domain' => 'test.com'
                , 'action' => 'add'
                , 'login' => 'test'.$aaa
                , 'password' => 'test'.$aaa
            ];
            $msg_body = json_encode($a_body, JSON_UNESCAPED_UNICODE);
            $exchange->publish($msg_body, $routing_key, AMQP_NOPARAM, ['content_type' => 'text/javascript', 'delivery_mode' => 2]);
        }
    
        $connection->disconnect();
    ?>
    Ответ написан
    2 комментария
  • Как добавить задание в начало очереди RabbitMQ?

    fornit1917
    @fornit1917
    Ответ написан
    Комментировать
  • Разъяснения по работе RabbitMQ?

    iqw
    @iqw
    Serior Software Engineer
    1. Трактовка немного неверна, в кролике нету воркеров-задач, это из gearman. Там есть сообщения, обменники, очереди, консюмеры и продюсеры. Сообщения это не всегда задача, это может быть поток данных с другого приложения (не имеющего доступ к СУБД) для сохранения. В зависимости от технологий, которые Вы используете консюмеры выглядят немного по разному, например в php - действительно надо запускать каждый консюмер в 1 процессе (комманда), в java - можно запустить 1 процесс, который будет консюмить очередь и передавать сообщения в треды для обработки паралельно (вместо нескольких процессов). Разрулить ситуацию с поддержанием в запущенном состоянии нескольких комманд-консюмеров (в несколько процессов каждая) можно очень просто - supervisord. Это линуксовый софт, который конфигаеться на запуск определенной консольной команды и на количество ее инстансов, и следит за всеми. Выходит что у вас на каждый тип консюмера будет только по 1 supervisord конфигу, остальную работу по поддержанию в запущенном состоянии выполнит он. (Естесственно, если речь идет о пхп - надо хорошенько подебажить код консюмеров, чтобы избежать memory-leaks).

    2. Зависит от мощностей сервера, нормальная практика - 1 реббит сервер для нескольких проектов, который позже сможет перерости в кластер (на определенных нагрузках), но и на машину с сайтами можно попробовать его насетапать и использовать как Вы и думали - с префиксами.

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

    P.S. Я только когда дописал ответ увидел что вопрос 2016 года, так что извините, если тема уже не актуальна)
    Ответ написан
    Комментировать
  • Как научится четко понимать где модульное тестирование, а где функциональное?

    sim3x
    @sim3x
    Функциональное тестирование - тестированием черным ящиком. Тест и его писатель, могут ничего не знать об внутренностях

    Модульное тестирование - писатель знает, что за связку модулей он тестирует. Частично может обращаться к функционалу модулей
    Ответ написан
    Комментировать
  • Как сделать протухание сообщений в очереди RabbitMQ?

    @yarkin
    Задать время жизни можно с помощью www.rabbitmq.com/ttl.html (самое простое повесить политику).
    Чтобы протухшее сообщение не просто удалилось, а попало в другую очередь можно воспользоваться этим www.rabbitmq.com/dlx.html
    Ответ написан
    Комментировать
  • RABBITMQ Как сделать так что бы все получатели получили сообщение?

    qonand
    @qonand
    Software Engineer
    Подобные задачи решаються с помощью выделения отдельной очереди на каждый консьюмер. Т.е. каждый получатель слушает свою очередь. При этом очереди должны быть объеденены в обменнике типа fanout
    Ответ написан
    Комментировать
  • RabbitMQ, как связаться с другой машиной?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    По умолчанию RabbitMQ имеет только одного пользователя - guest, которому разрешено всё, но только при запросах с localhost. Простой, но небезопасный способ - убрать guest из loopback_users. Более разумный вариант - завести пользователя с паролем и явно назначенными правами.
    Ответ написан
    3 комментария