Архив за 08 декабря 2014 - 6

Плёнка с «нанопупырышками» превращает почти любую поверхность в тачскрин - 1Финский стартап Canatu разработал гибкую электропроводящую плёнку-тачскрин, которая может привести к появлению принципиально новых мобильных гаджетов произвольной формы.

Представьте, что ваш смартфон сгибается и складывается, словно лист бумаги. Если сделать экран из такой плёнки, то у дизайнеров откроется огромное поле для реализации самых сумасшедших идей.

Можно прикреплять тачскрин на различные элементы искривлённой формы. Скажем, на приборную панель автомобиля или на руль велосипеда, или на провод от наушников. Так реализуются новые интерфейсы управления. Команды подаются прикосновением к проводу или к рулю.

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

Мы вводим ещё один способ доставки вопросов: с помощью «Усиленной подписки» на теги. Если вы усиленно подпишетесь на тег, то будете получать на свой email все новые вопросы по этому тегу. Эту подиску в любой момет времени можно отменить прямо из очередного письма-уведомления.

Подобная усиленная подписка очень пригодится для узко-специализированных тегов, по которым на «Тостере» мало вопросов, однако при этом, данная тема вас очень интересует, и вы не хотите пропускать ни одного редкого вопороса по ней.

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

Тостер. Усиленная подписка на теги: получайте мгновенные email-уведомления обо всех новых вопросах по любому тегу - 1
Читать полностью »

Только вчера мы узнали немного подробностей о первом смартфоне LG, работающем под управлением FireFox OS, как сегодня в Сети появились некоторые характеристики модели L25.

LG L25 FireFox OS

Читать полностью »

Некоторое время назад в сети появились жалобы покупателей, уверявших, что они получили восстановленные смартфоны OnePlus OneЧитать полностью »

Tele2 запустил акцию "Сезон охоты" - предлагает пользователям изучить детализацию по своему номеру, поймать оператора на нечестности и сообщить об этом в Tele2. 
На сайте кампании с говорящим названием zahvost.ru можно выбрать одного из четырех операторов - "Билайн", "Мегафон", МТС и Tele2. 
Пожаловаться Tele2 предлагает на пять основных нечестностей операторов:
- Медвежья услуга - ненужная услуга, подключенная оператором без спроса

Компания Samsung обратилась в суд с просьбой пересмотреть сумму, которую корейский гигант обязан выплатить Apple за нарушение патентов и копирование идей. Напомним, в прошлом году суд обязал Samsung выплатить около 930 млн долларов в пользу Apple.

Основная причина подачи очередной апелляции в том, что указанная выше сумма высчитывалась из общего дохода Samsung в сегменте смартфонов. Адвокаты компании считают это несправедливым.

Читать полностью »

В России сети 4G строятся быстрее, чем в своё время сети предыдущего поколения. Годовой статистики пока нет, но за первые шесть месяцев 2014-го число базовых станций 4G выросло на 75%. Увеличивается и число абонентов, пользующихся LTE-сетями, сейчас их более 3 миллионов. Как следствие, количество LTE-устройств на российском рынке (и спрос на них) растёт. В конце лета в России появился первый бюджетный LTE-смартфон с 4-ядерным процессором – Highscreen Spider. Спустя несколько месяцев модель не потеряла своей актуальности (контраргументы принимаются и приветствуются), поэтому сегодня я расскажу о ней подробнее.

Недорого и с LTE. Обзор смартфона Highscreen Spider - 1
Читать полностью »

Все справедливо считают, что конструкция ORDER BY расходует ресурсы на проведение сортировки результата и в итоге мы должны получить результат несколько позже. Всегда ли это так?..
Читать полностью »

Перейдя в Java и Android из мира C# .NET так и хочется притащить в чужой монастырь свой устав. В данном случае речь пойдет о декларативных состояниях интерфейса (Visual States). Начнем сразу с простой проблемки: у нас есть вьюшка, на которой отображается профиль какого-то пользователя, но, в зависимости от роли текущего пользователя, эта вьюшка может чуть-чуть отличаться. Допустим, у нас есть три роли: guest, member и moderator, и состояния этой вьюшки будут выглядеть следующим образом:

Описание состояний интерфейса в XML вместо кода для Android - 1Читать полностью »

Это перевод статьи Tony DiPasquale «Efficient JSON in Swift with Functional Concepts».

Предисловие переводчика.

Передо мной была поставлена задача: закачать данные в формате JSON с Flickr.com о 100 топ местах, в которых сделаны фотографии на данный момент, в массив моделей:

//------ Массив моделей Places
struct Places {   
    var places : [Place]
}

//-----Модель Place
struct Place {

    let placeURL: NSURL
    let timeZone: String
    let photoCount : Int
    let content : String
    
}

Кроме чисто прагматической задачи, мне хотелось посмотреть как в Swift работает «вывод типа из контекста» (type Inference), какие возможности Swift в функциональном программировании, и я выбрала для парсинга JSON алгоритмы из статьи Tony DiPasquale «Efficient JSON in Swift with Functional Concepts and Generics», в которой он «протягивает» generic тип Result<A> для обработки ошибок по всей цепочке преобразований: от запроса в сеть до размещения данных в массив Моделей для последующего представления в UITableViewController.
Чтобы посмотреть как Swift работает «в связке» с Objective-C, для считывания данных с Flickr.com использовался Flickr API, представленный в курсе Стэнфордского Университета «Stanford CS 193P iOS 7», написанный на Objective-C.
В результате помимо небольшого расширения Моделей:

extension Place: JSONDecodable {
    static func create(placeURL: String)(timeZone: String)(photoCount: String)(content: String) -> Place {
        return Place(placeURL: toURL(placeURL), timeZone: timeZone, photoCount: photoCount.toInt() ?? 0, content: content)
    }
    static func decode(json: JSON) -> Place? {
        return _JSONParse(json) >>> { d in
            Place.create
                <^> d <| "place_url"
                <*> d <| "timezone"
                <*> d <| "photo_count"
                <*> d <| "_content"
        }
    }
}

extension Places: JSONDecodable { 
    static func create(places: [Place]) -> Places {
        return Places(places: places)
    }
    static func decode(json: JSON) -> Places? {
        return _JSONParse(json) >>> { d in
            Places.create
                <^> d <| "places" <| "place"
            
        }
    }
}

мне самостоятельно пришлось написать только три строчки кода:
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js