• Где найти работу по удаленке в 40+ лет?

    opium
    @opium
    Просто люблю качественно работать
    никак
    работа не привязана все таки к возрасту если вы конечно не совсем уж старый пердун
    навыки
    Ответ написан
    Комментировать
  • Стоит ли работать программистом?

    opium
    @opium
    Просто люблю качественно работать
    ждать вас будет средняя зп программиста в 10 тысяч долларов сша.
    pumainthailand.com/kuda-podatsya-ili-kakie-zarplat...
    Ответ написан
    3 комментария
  • Место работы для студента: как сделать правильный выбор?

    Самый нормальный путь - фриланс. В твоём случае желательно найти удалёнку в команде. Сделай ставку 5$ в час - нарасхват будешь, найдёшь удалёнку без проблем. Там тебя особо не обучат (т.к. большую часть придётся самому изучить), самое главное ты получишь опыт работы в команде и с командными тулзами (ака Jira, Git, Trello и тд),

    И при этом не придётся никуда переезжать и работать фулл-тайм, учись и работай через интернет в своём городе спокойно под мамкиным крылом.

    А при нехитром подсчёте работая 20 часов в неделю по 5 баксов в час получаем 6 000 рублей в неделю или 25 000 рублей в месяц - пусть все работодатели с их нелепыми предложениями идут лесом:
    1) 6000 в месяц платить разработчику, даже на неполный рабочий день - так делают только жлобы и неудачники (успешные компании могут себе позволить платить нормально, ваш кэп), я бы не стал работать с такими людьми
    2) прогрессивная зарплата, увеличивающаяся каждый месяц на 2000 и достигающая в оконцове аж целых 10 тыщ - голимое унижение. Грузчики сейчас больше получают и сантехники
    3) 21 000 рублей за фуллтайм - это 2 доллара в час. Несчастные 2 доллара, за такие деньги даже индусы и китайцы сейчас не работают. Пусть идут тоже лесом

    И кстати совет всем юнцам - никто не обязан в офисе вас обучать, что за наивные розовые мечты, мужики работать пришли и/или потрещать за жизнь, лишь единицы будут блестать энтузиазмом и заниматься обучением зелёных (которые нахватав знаний в итоге сбегают как правило где больше платят, поэтому никто за вас и не берётся, т.к. нет в этом никакого практического смысла). К тому же в наш век google и stackoverflow как-то считается западло разжовывать все нюансы вёрстки и программирования в живую на рабочем месте, всё есть в электронном варианте - научись только пользоваться.
    Ответ написан
    1 комментарий
  • Как новичку найти клиентов на upwork и на что рассчитывать?

    Punkie
    @Punkie
    Почитайте блог: jff.name . В своё время он мне очень помог. И автор у него отзывчивый - всегда подскажет.
    Ответ написан
    1 комментарий
  • Как людям удается столько зарабатывать на фрилансе?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Внесу свою небольшую лепту.

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

    Во-вторых, на фриланс биржах жуткий демпинг. Так что первые два месяца скорее всего придётся поработать на зп дворника. Вооще, сейчас фриланс сообщество относительно стабильно именно из-за высокого входного порога. Первые серьёзные деньги раньше второго месяца увидеть очень сложно. Здесь придётся работать на престиж, то есть зарабатывать контакты. Очень часто бывает, что довольный клиент вернётся, а бывает даже не уходит - оставляет проект на сопровождение. Причём делать скорее всего ничего не придётся, а лишняя копейка никогда не помешает. Набрав 10-15 проектов на сопровождение можно вообще не работать и получать пару зарплат дворника.

    В-третьих, время, требуемое на проект, что вы привели, это не средней руки вэб-мастера. Это начинающего вэб-мастера. К тому же вэб-мастера вымирают как вид. Идеально, когда со временем вы специализируетесь на чём-нибудь узком - разработка дизайна, вёрстка с дизайна или программирование бэк-энда, найдя других надёжных дизайнеров или даже скооперировавшись в вэб-студию. Многие "фрилансеры" есть никто иные, как клиент-менеджеры вэб-студий. То есть менеджер формирует ТЗ - пара часов (или дней) общения в скайпе, передаёт дизайнеру, который формирует дизайн - ещё пара часов (или дней), а верстальщик с программистом верстают и программируют - последние пара часов (или дней) =) По моему очевидно, что специализируясь на узком профиле можно значительно ускорить свою работу: знакомство с инструментами, доскональное знание области, проще следить за трендами... Когда знаешь, что делаешь, количество работы можно свести к минимому, к тому же постоянное использование уже готовых наработок...

    Впрочем, постоянный поток заказов, сформированный круг знакомых как заказчиков, так и фрилансеров, узкая специализация... Это всё хорошо и классно. Но часто не хватает одного - дисциплины. Обустроить свой рабочий день таким образом, чтобы минимально отвлекасться и действительно выполнять свою работу быстро, действительно нагружать себя по максимому. Такое даётся далеко не каждому. Но таким ни демпинг не почём, ни кризис. Заказы будут всегда, они сами будут приходить, тогда как высокая дисциплина позволит выполнять их быстро.
    Ответ написан
    6 комментариев
  • Какие методики тестирования мобильных приложений существуют?

    voidnugget
    @voidnugget
    Программист-прагматик
    Приёмочное тестирование (e2e) обычно выполняют через Selenium, а конкретно Appium. Стараюсь что бы одни и те же тесты можно было использовать для тестирования и в iOS и в Android. Функциональное тестирование под Android немного отличается - там есть возможность прогонять тесты прямо в виртуальной машине через Robolectric, обычно так тестируют сервисы в андроиде. Для тестирования в iOS я обычно использую Cedar или Slephnir
    Ответ написан
    4 комментария
  • Почему конфликтует функция?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Коротко: ObjC не поддерживает перегрузку методов, поэтому необходимо использовать различные имена для методов.

    Подробнее: Когда вы наследуете что-то от класса написанного на ObjC (в вашем случае это наверное UIViewController), класс автоматически становится совместимым с ObjC. Соответсвенно появляется 2 различных метода с одним и тем же селектором. Что плохо и вызывает ошибку компиляции.

    Возможные выходы из проблемы:
    1) Просто переименовать второй метод.
    2) (Если это всё таки UIViewController) Вынести логику приложения из её контроллера в модель. Соответсвенно создать класс, который будет производить все вычисления и не наследовать ничего от ObjC.

    ЗЫ Поэтому я считаю, что учить swift без objc бесполезно. Вам все равно приходиться писать с логикой objc, только словами свифта.
    Ответ написан
    1 комментарий
  • Как пользователю добавить фото?

    @lyeskin
    Повесьте на клик по UIImageView открытие контроллера ImagePicker. Можно перед открытием контролера предложить пользователю сделать выбор камера/фото , если Вам нужна возможность брать фотки с камеры.
    Ответ написан
    2 комментария
  • Фриланс или офис для веб-дизайнера?

    Фриланс тот же опыт, только зарплата больше.
    Если нужен социум, то офис может дать не тех людей, лучше поискать в другом месте - конференции например. В офисе работают не предприимчивые люди, а начальники как правило козлы. Имхо.

    И ещё. Зарплата дизайнера 30 тысяч рублей в месяц, при этом в топовой студии? Это же фейспалм какой-то. Нормальный дизайнер сейчас, учитывая курс валюты, зарабатывает 30 тысяч рублей в неделю на апворке. Если проблемы с английским языком и так охото работать в России, то проще выучиться на сантехника, в месяц будет выходить ито больше, чем жалкие 30 тысяч
    Ответ написан
    3 комментария
  • Фриланс и налоги, стоит ли платить?

    Если следовать в полной мере закону, то да, нужно.

    Если следовать политическо-экономической ситуации, то есть 2 варианта.

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

    Второй, вы не отстаиваете свою гражданскую позицию (не ваше всё это), то есть 2 пункта.

    Пункт а: 6% с 90кРуб это 5,4кРуб утерянной полугодовалой выгоды для государства. Зарплата и время потраченное на "восстановление справедливости" превысят уже за первую неделю эту сумму. Так что никто не будет заморачиваться.

    Пункт б: 6% с 90кРуб в месяц - это уже становится интереснее. Так что тут рекомендую всё таки стать юридическим лицом. К тому же налог платится с прибыли, а не оборота. (Грубо: прибыль = оборот - расходы)
    То есть (в зависимости от юридического статуса: ИП, ООО...) можно вычесть, съём помещения, счёта за интернет (электричество, телефон...), покупка для работы телефона (компьютера, мышки...), подрядить другого фрилансера для отдельной функции.
    И налог в таком случае платится с остатка.
    Ответ написан
    2 комментария
  • Где в Москве можно нормально работать фрилансеру?

    Работал месяца три в библиотеке в читальном зале - вполне нормально. Я даже какие-то книги брал первое время, что бы не палиться.
    Ответ написан
    1 комментарий
  • Как правильно организовать Git репозиторий?

    Изучите gitflow.
    Скорее всего эта методика будет для вас избыточна, но основные приемы вроде: "отдельная ветка на каждую задачу" или "стабильный мастер + develop для разработки" определенно пойдут на пользу.
    Ответ написан
    2 комментария
  • В чем делать прототипы интерфейса?

    @byordbureau
    большая часть предложеных вариантов не отвечает требованиям - интерактивность.
    если мы говорим о мобайл - бальзамик не объясняет програмисту механику взаимодействия (анимация) пользователь -> интерфейс.
    На данный момент правильным решением является:
    1. origami facebook
    2. invision

    Преимущество - возможность показать всем участникам разработки (без лишних жестов) как именно работает интерфейс.
    В ближайшем будующем: "бумажное" (постраничное) протоипирование без анимации будет отмирать.
    Ответ написан
    3 комментария
  • Как вывести изображение с камеры на несколько разных UIView?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Создаем видео сессию, становимся делегатом: и потом получаем картинку из семпла. С этой картинкой потом можете работать как вам угодно.
    - (void)prepareForReceiving {
    // create session
        _session = [AVCaptureSession new];
    //set image quality
        if ([_session canSetSessionPreset: <your quality>]) {
            [_session setSessionPreset: <your quality>];
        }
        _device = [AVCaptureDevice defaultDeviceWithMediaType: <your media type>];
        NSError *err = nil;
        
    // add default input for your media type
        AVCaptureDeviceInput *inpt = [AVCaptureDeviceInput deviceInputWithDevice:_device error:&err];
        if (inpt) {
            [_session addInput:inpt];
        } else {
            NSLog(@"Can't add input, cauz ---> %@",[err description]);
        }
        
    // create output
        _vdo = [AVCaptureVideoDataOutput new];
        NSDictionary *newSettings = @{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
        _vdo.videoSettings = newSettings;
        dispatch_queue_t queue = dispatch_queue_create("newQueue", NULL);
        [_vdo setSampleBufferDelegate:self queue:queue];
        
        if ([_session canAddOutput:_vdo]) {
            [_session addOutput:_vdo];
        }
        NSLog(@"Start video session");
        [_session startRunning];
    }
    
    - (void)captureOutput:(AVCaptureOutput *)captureOutput
    didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
           fromConnection:(AVCaptureConnection *)connection {
        
    // create image from sampleBuffer
        CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
        CVPixelBufferLockBaseAddress(imageBuffer, 0);
        void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer);
        size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
        size_t width = CVPixelBufferGetWidth(imageBuffer);
        size_t height = CVPixelBufferGetHeight(imageBuffer);
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8,
                                                     bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
        CGImageRef quartzImage = CGBitmapContextCreateImage(context);
        UIImage *image = [[UIImage alloc] initWithCGImage:quartzImage
                                                    scale:1.0f
                                              orientation:UIImageOrientationRight];
        CGImageRelease(quartzImage);
        CVPixelBufferUnlockBaseAddress(imageBuffer,0);
        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);
        
        // image = profit!
    }
    Ответ написан
    3 комментария
  • Нужен ли антивирус для LINUX, какой выбрать?

    2ord
    @2ord
    tl;dr
    Ошибочно думать, что Линукс полностью защищён от вредоносного ПО. Есть много примеров заражения различных сетевых инфрастурктур и эксплуатации Linux систем.

    Залог безопасности любой ОС - это своевременные обновления её компонентов и установленного на ней ПО, устраняющие в них уязвимости.

    С точки зрения подключения компьютера к сети, межсетевой экран (файрвол) призван защищать систему от несанкционированного доступа на уровне сетевых портов и протоколов. Если общение ПО на компьютере с внешним миром санкционировано межсетевым экраном на уровне протоколов, то ничего не препятствует удалённому ПО попытаться проэксплуатировать уязвимости на установленном ПО. И если какая-то дыра будет найдена, то троян установится без ведома пользователя и сможет выполнять вредоносные функции: стать "солдатом" в армии ботов, похищать данные и т.д.

    Может я и не прав, но насколько мне известно, антивирус в Линуксе не имеет полномочий вмешиваться в работу работающего ПО, он выполняет чисто функции ручного сканирования файлов на наличие заразы, скажем, при открытии писем в почтовом клиенте.
    Таким образом, основную функцию защиты системы выполняют ядро Линукса - с точки зрения доступа к участкам памяти и запуска процессов.

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

    Что должен делать рядовой пользователь Линукс?
    1. Устанавливать дистрибутивы Линукса только с ISO образов, загруженных с официальных сайтов. Обзор известных дистрибутивов находится на сайте http://distrowatch.com
    2. Не игнорировать предложения системы обновить установленное ПО, а делать обновление как можно скорее.
    3. Устанавливать ПО только через пакетный менеджер системы (Synaptic и т.д., зависит от дистрибутива).
    4. Устанавливать ПО через исходники не рекомендуется по той причине, что эта процедура чревата проблемами как со сборкой нужных пакетов, так и в плане безопасности. Во-первых, установка в штатном пакетном менеджере делается через проверенные источники-репозитории. Во-вторых, любые исправления уязвимостей приходят только через штатную систему обновления в виде оповещения. А собранные пакеты с исходников нужно пересобирать и устанавливать с появлением каждой уязвимости. Любое замедление ставит риск эксплуатации системы.
    Ответ написан
    7 комментариев
  • Какой использовать алгоритм сортировки, если требуется сложность не более O(n) и максимальная производительность?

    @bromzh
    Drugs-driven development
    Во-первых, есть строгое доказательство, что сортировка произвольного массива не может быть выполнена быстрее, чем за O(n*log(n)) операций (log тут по основанию 2).
    Во-вторых, у сортировок есть много параметров: время в лучшем/худшем/среднем случае, доп. память, стабильность.
    QuickSort имеет время O(n log n) в среднем и лучшем, а в худшем - за O(n^2). Ещё она нестабильная и требует O(n) памяти. В обычных условиях это устраивает, но худший случай в ней - её слабое место.
    Есть модификации быстрой сортировки, позволяющие уменьшить время худшего случая до O(n log n).
    В языках программирования встроенные сортировки - это обычно либо быстрая сортировка с улучшениями, либо какая-нибудь стабильная сортировка, какой-нибудь merge sort.

    Так что либо бери родную, либо пиши сам. Самая простая модификация быстрой сортировки, при которой худшее время станет O(n log n) - это сделать случайный выбор опорного элемента.

    Ну и читай https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D...
    Ответ написан
    3 комментария
  • На сколько реально выучить SWIFT если никогда не учил программирование?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    comics1.jpg
    Ответ написан
    Комментировать