@bobzer А, ну это - да :) Я ж приводил общий пример для иллюстрации, так сказать, ибо автор вопроса, похоже, не совсем представляет себе разницу между объектами и значениями. Так, конечно, проще и правильнее. Именно так оно и реализовано в StringUtils. Только тогда пришлось бы еще объяснять про порядок выполнения операций и т.д., а это уже совсем другая история... короче, сейчас поправлю :)
@bobzer Эта проверка нужна обязательно. Если name null, любая попытка выполнить name.xyz() приведет к NullPointerException. name, в свою очередь, может быть null, если пользователь в ответ на запрос введет Ctrl+D (=EndOfStream).
@saratovdae Сам функционал "исторический", пошел с тех времен, когда к ящикам ходили по UUCP и, позже, по POP3. Тогда "отправленные" - это была просто локальная папка. С приходом IMAP она просто "переместилась" на сервер, но наполняется, в большинстве случаев, по прежнему мэйлером. На стороне провайдера это происходит, когда к ящикам доступаются через вебморду (а как же иначе в этом случае?), и исключительно редко - автоматически через SMTP сервер. Хотя теоретически это, разумеется, возможно.
Я имел ввиду, что это МОГЛО ускорить процесс, но, разумеется, не обязательно - они стареют и сами по себе. У меня даже на более дорогих ноутах (Dell, Lenovo) было макс. 3 года - потом наблюдался описанный эфект "неожиданного" ухудшения, за которым следовали проблемы, вызванные тем, что батарейка своей "зарядкой", фактически, настолько сажала питание, что ноуты отказывались стабильно стартовать.
@TARAKANhoy Ну, если около 100 файлов, то переживать не о чем!
А вот если бы были сотни тысяч, то производительность могла бы проседать на попытке открытия файла, т.к. это подразумевает сначала поиск файла по имени. Если файловая система строит внутреннее бинарное дерево (HTree в случае с Ext3), то это еще приемлемо, а если нет, то поиск линейный со всеми вытекающими. Тогда (если нет возможности повлиять на ФС, например, на хостинге) нужно бы было создавать свою структуру подпапок со сбалансированным наполнением файлами и/или хранить имена в БД, где и искать файл еще до попытки к нему доступаться. Но это все - просто в качестве идеи о том, что оптимизация возможна на разных, не всегда очевидных уровнях.
Замечательно :) А теперь, пока эйфория еще не прошла, задумайтесь над тем, что произойдет, когда в папке накопится очень много файлов... особенно, если на сервере файловая система Ext3 и в ней, по какой-либо причине, не установлен флаг dir_index.
И еще над тем, что, может быть, в API Vimeo есть возможность получить в одном запросе сразу список данных нескольких видео. Я понятия не имею, так ли это, но если такая возможность есть, пользователи, запрашивающие страницу, на которой все файлы "новые", наверняка скажут спасибо.
Sennheiser, вероятно, тоже экономит на материалах дешевых линеек. Я, конечно, не экспериментировал, но рискну предположить, что мои студийные HD 598 продержались бы подольше :)
@TerminusMKB Да нет, конечно же, не причина :) То, что Вы описываете, вообще, какая-то жесть запредельня. Но, с другой стороны, PG настолько распространен в продакшн, что трудно поверить в наличие доселе невыявленного бага такого уровня. Просто в качестве идеи: не самосборная ли версия PG / ОС / каких-нибудь библиотек? (У меня давным-давно был похожий мозголомательный косяк с Oracle, допиленным под CentOS... полнотекстовый индекс выдавал "среднюю температуру по больнице". Там все дело оказалось в динамически слинкованном парсере PDF, на который на трезвую голову даже подумать было невозможно. )
@TerminusMKB Честно говоря, если только INSERT не происходят в несколько потоков / конкурирующих транзакций, то непонятно, зачем городить огород с констрэйнтами. В 99% случаев происходит двойная работа (key violation, за которым, очевидно, следует UPDATE).
Проиндексируйте RemoteId (лучше всего, как ПК), делайте первым UPDATE по этому ключу и только если он затронул 0 записей (т.е. ключ реально "новый"), делайте INSERT.
Да это функционал nmap. В рамках "slow comprehensive scan" он пытается по таймингу ответов на разные запросы определить ОС, сравнивая с базой сигнатур (вот тут подробнее.)
По сигнатуре тайминга. С вероятностью 89% это "Orange Livebox wireless DSL router | Sagem F@st 34 | 3304 DSL router". Но это не очень надежно, т.к. параллельно сканированию бежал основной тест.
Вообще-то, "черным по черному" поисковики не индексируют уже последние лет десять... Но это и не нужно. Вполне достаточно поместить мало-мальски уникальную строку в индексируемом (причем, не обязательно - видимом) коде.
Вот, просто чтоб продемонстрировать принцип... Я открыл HTML Хабра и от балды выбрал строку, которую даже с натяжкой сложно назвать уникальной. И пожалуйста - взгляните, что Гугл выдает на первом месте. Это, конечно, не клон... но даже это удивительное "совпадение" уже наводит на некоторые мысли :)
Как конкретно сформулировано, ЧТО именно нужно сделать? (Про про ограничение в минимум два "подходящих" протокола понятно, но в чем суть самого задания?) Чтоб не оказалось, что Вы начинаете городить огород, отталкиваясь от каких-то частностей (стримы, сокеты и т.д.), не видя за деревьями леса, т.е. собственно сути задания :)
@turundaev Боюсь, мне вряд ли удалось бы сделать адекватное по цене предложение :) Разместите на фрилансе. С такими документацией и SDK это, по идее, любой толковый студент за пару дней запилит... разумеется, при наличии внятного ТЗ.
Замечательно... только в чем тогда заключается вопрос? Вот тут лежат драйвера на любой вкус и цвет. А конкретно тут - подробнейший пример под Андроид (на Java). Там и протокол, и управление LCD... короче, только что кофе сам не варит. Берите и используйте! Если возникнут конкретные вопросы - обращайтесь.
P.S. Эх, если бы все производители предоставляли такую инфу по своим железякам :)