гуглексное
19.02.15 18:23 // оригинал
Почему-то в истории Яндекс vs Google упирают на аналогию с Microsoft - как стало здорово, когда MS заставили выпилить IE как браузер по умолчанию, создав здоровую конкуренцию. Забавно, что ситуация сейчас на самом-то деле совершенно противоположная. MS долгое время упирала на то, что IE - неотъемлемая часть системы, и без него ну просто никак, а атакующие MS кричали: не-не-не, вы уж обойдитесь без него. Сейчас же Google говорит - да пожалуйста, берите Андроид, но без Google Mobile Services, которые не являются неотъемлемой частью системы. Ну а Яндекс кричит: не-не-не, нам без GMS никак не обойтись, вы уж извольте считать их частью системы (ну хотя бы Маркет, нам больше и не нужно, да).
сервернотекучее
15.02.15 14:08 // оригинал
Утром в среду сервер вдруг решил уйти в себя, отрапортовав в логах о закончившихся файловых дескрипторах (их там 1536 на всю виртуалку). Лог в панели менеджера VDS показал, что действительно за последние сутки их уровень вдруг стал медленно, но верно расти с привычных 30-40%, добираясь в итоге до сотни. В настройках, естественно, перед этим ничего не менялось. Перезагрузил, воткнул мониторинг kern.openfiles с принудительным ребутом в случае приближения к критическому уровню. Уровень этот наступил под следующее утро. Воткнул разбор результатов procstat -af (в этой виртуалке более приличные варианты не срабатывают), чтобы видеть, какой процесс сколько отжирает, подкрутил аппетиты апача, nginx, mysql, стал смотреть. Картина забавная - сразу после перезагрузки сумма выдачи procstat слегка опережает kern.openfiles, по мере работы оба значения постепенно растут и выравниваются, подбираются к тем самым 30-40%, после чего kern.openfiles начинает уходить в отрыв, постепенно добираясь до лимита.
Стал всерьез задумываться о принудительном ребуте в 5 утра (некрасиво, да, но лучше, чем ребут на пике дневной посещаемости), но после следующего ребута все внезапно рассосалось, столь же необъяснимо, как и началось. В эту последнюю перезагрузку из всех изменений лишь добавил профилактический ежечасный apachectl graceful, но очень удивлюсь, если причина в нем - до этого и полная-то перезагрузка апача лишь временно сбивала число открытых файлов, никак не влияя на темп роста kern.openfiles. Фиксирую это на всякий случай, вдруг при мягком рестарте что-то освобождается более аккуратно. Сегодня убрал и его, уровень продолжает держаться в районе 35%.
Ну и раз уж полез в это дело, перетряхнул настройки апача и nginx, причесал конфиги, заменил апачевские SSI на nginx'ные. В процессе переноса выяснилось, что nginx не заморачивается самостоятельной передачей параметров внешнего файла через QUERY_STRING_UNESCAPED в скрипт, вызываемый из SSI, а в качестве REQUEST_URI передает uri скрипта, а не внешнего файла. Пришлось прокидывать правильные значения через дополнительные переменные окружения. Дочистил работу через https - часть внутренних ссылок задавалась через абсолютные url, так что после входа по https через некоторое время можно было обнаружить себя в обычном http. Ну и у админки теперь принудительный редирект на https.
Попытался перенастроить и работу с запароленными каталогами с апачевской на nginx'овую, в итоге отказался от этой идеи. Во-первых, неудобно организовано - нет группового файла, в итоге для разных групп нужно плодить наборы из разных файлов с паролями. Во-вторых, требуется очень своеобразная настройка в конфиге - location с регекспами, как выяснилось, имеют преимущество над фиксированными, поэтому для отдельного location админки приходится включать внутрь дублированный location с маской для пробрасываемых в апач скриптов. Без этого дублирования отдельный location с маской будет первым перехватывать запросы, игнорируя всю авторизацию (и вводя в полнейший ступор настраивающего столь интуитивным поведением). Последней каплей стало то, что в случае неудачной авторизации при последующих соединениях браузер уже не пытается запросить пароль, поскольку сервер начинает постоянно отдавать ему 403 Forbidden вместо ожидаемого 401 Unauthorized. Возможно, это такой побочный эффект включенной limit_req_zone, но разбиратся уже не стал, привычный вариант все равно удобней.
турнирнокурсовое
10.02.15 17:11 // оригинал
Давно уже игрался с идеей превращения курсовой по системному программированию в турнир боевых человекоподобных роботов, и вот наконец все сложилось вместе - и техническая часть устаканилась (сдача через GitHub была успешно обкатана осенью на магистрах), и окончательно встали на свои места все смутные прикидки, то же разделение на два ключевых этапа с сохранением соревновательности на каждом. Приятно, что желающих на первый этап нашлось даже больше, чем ожидал. Let the Fight Begin!
сайджикносамолетное
09.02.15 15:37 // оригинал
А еще в последнюю поездку внезапно выяснилось, что Sygic прекрасно ловит спутники уже в полуметре от иллюминатора, позволяя удовлетворить любопытство относительно текущей позиции/скорости/высоты. Только промежуточные карты стоит тоже предварительно закачать, а то полдороги как по пачке Беломора.
кингстонномобильное
06.02.15 15:51 // оригинал
Не удержался и взял Kingston MobileLite Wireless G2 - забавный такой комбайн, каждая из функций которого реализована чуть попроще, чем у автономных аналогов, но в сумме получается интересное решение. Мобильный роутер уступает асусовским в гибкости настройки, сценарии перераздачи wifi/3g/проводного интернета вшиты насмерть и без dhcp не взлетят, но вполне логичны и годятся для большинства случаев. SD-карты и флешки/внешние диски раздаются по воздуху, ну а при подключении к компьютеру шнурком MobileLite будет там виден как обычный проводной кардридер. USB-разъем может использоваться и для подзарядки подключенных к нему телефонов. Аккумулятор на 4600 mAh, не рекорд, но на пару зарядок айфона хватит.
Родной софт крив до невозможности, судя по отзывам, одно из последних обновлений поломало возможность загружать незнакомые ему файлы (а знакомы лишь картинки, некоторые документы и стандартные айфонные форматы видео). К счастью, во внутренней сети все доступно по вполне стандартному smb, так что работать с MobileLite гораздо удобней с помощью любого приличного файл-менеджера, типа FileBrowser. В крайнем случае можно достучаться до него обычным браузером, подсмотрев адрес в настройках wifi (до сих пор выпадали 192.168.201.254 и 192.168.210.254). По http же можно добраться и до настроек, так что без родного софта можно обойтись вообще.
На всех уровнях последовательно проводится политика предоставления ограниченного, но не требующего настроек и работающего без проблем и конфликтов набора сценариев. Про режимы работы роутера уже писал, и все остальное тут в том же духе. Если включен режим роутера, проводного кардридера или внешнего аккумулятора не будет, и наоборот. Из внешней сети до внутренностей не добраться, нужно обязательно подключаться к встроенной точке доступа. Зато и настраивать почти не нужно, достаточно один раз задать пароль для встроенной точки доступа. Ну и изредка подключаться к внешним точкам, если хочется, например, сразу с флешки заливать что-нибудь в облако.
двухфакторное
05.02.15 03:46 // оригинал
А вообще почитал еще про эту условно двухфакторную авторизацию - помимо косяков запуска, которые еще можно простить, ребята ма-лад-цы, ради заботы об удобстве пользователей вообще убрали ввод пароля, унеся оба фактора на один телефон.
Только проблема в том, что на телефонах с TouchID вторым фактором помимо пин-кода является отпечаток владельца, а дальше понятно - "человека можно напоить, усыпить, оглушить, ну, в общем, с бесчувственного тела", и никакого пароля не нужно.
Зря они все-таки полезли сочинять свой велосипед.
камернополевое
04.02.15 19:25 // оригинал
Новогодняя поездка стала неплохим тестом свежекупленной RX100 III. Переход с GF1 после четырех с половиной лет активного использования оказался не без подводных камней, часть из которых шла в одном флаконе с плюсами.
Во-первых, выяснилось, что привычка к зуму ногами уходит с трудом, и опять же с точки зрения ускорения процесса возникает желание снимать, как только включил аппарат. Желание это нужно давить, поскольку сразу после включения он всегда приходит с зумом, сброшенным на короткий конец, а 24 мм - это, конечно, очень здорово для селфи (режим с повернутым дисплеем работает отлично), зданий и панорам, плюс в кадр очень здорово начинают влезать люди во весь рост, но потом внезапно выясняется, что чем дальше от центра кадра, тем хуже с пропорциями у попавших туда предметов и частей тела. Очень не хватает возможности запоминать зум, который был до выключения. С учетом всего проигрыш GF1 по времени перехода в полную готовность после вынимания из кармана может достигать секунды.
Во-вторых, если лениться и использовать режим P, то быстро выясняется, что диафрагма тут открывается заметно менее щедро, если позволяет освещение. Что превращает всякие 1/2000 на солнце в гораздо более скромные 1/500 и сильно увеличивает глубину кадра, делая его более мыльничным. На GF1 это, конечно, расслабляло - портреты с приятно размытым фоном там получались практически на автомате. Справедливости ради надо заметить, что P тут вообще больше похож на зеркалочный, в котором можно регулировать диафрагму/выдержку вручную, и если выкрутить диафрагму на максимум, то дальше он ее будет стараться держать, хотя и лишь до выключения. Так что мораль все та же - нужно не забывать, что и как.
В-третьих, включив по привычке режим съемки только в raw, столкнулся с тем, что размер превью в этом raw всего лишь 1616х1080, в GF1 и то было 1920х1440. Уперся в это, протестировав импорт фото с камеры по wifi с последующим выкладыванием их на фейсбук. Работает-то все это удобно, но после просмотра отправленного на экране айпада пришло первое разочарование - вместо привычной «звенящей» картинки наблюдалось нечто, на чем даже опознавались характерные jpegовские артефакты. Уже дома проверка показала, что до фейсбука все добралось вообще в позорном и не очень понятном 960х641. На телефоне такое еще смотреть можно, но не более того. Из чувства перфекционизма пришлось обозвать альбом Draft, а фото перевыложить. Естественно, настройка про передачу в полном качестве не помогает - больше, чем этот 1616х1080, в любом случае не приходит (хотя не вижу причин, по которым нельзя было бы воткнуть в такой экспорт быстрое формирование полноразмерного jpeg'а). Только этот размер доступен на айпаде и после импорта через CCK. Так что если есть желание получить что-то более менее приличное, не дожидаясь возвращения из поездки, без raw+jpeg тут не обойтись.
Если обо всем этом не забывать, то результат получается вполне достойным. В плохо освещенных помещениях без вспышки (храмы, музеи) процент брака был меньше, чем с GF1, даже при съемке на автомате, а ISO 3200 при ночной съемке даже не вызывает тошноты. Одного аккумулятора хватало на 200-250 кадров в raw, примерно четверть из них со вспышкой. При наших аппетитах на один день съемок этого категорически не хватает. Впрочем, второй аккумулятор и зарядка от мобильного аккумулятора, как и ожидалось, увеличивали ресурс до практически неограниченного. Одной флешки на 32 гига на недельную поездку не хватило, уже после приезда заменил ее на 64 и пошустрее, с raw+jpeg все равно будет быстрее забиваться. Заодно и обзавелся кардридером на usb 3.0 - прокачка 21-мегабайтных фото уже стала узким местом. Да и в лайтруме разница в скорости обработки уже ощущается, имеет смысл хотя бы на это время переносить их на ssd.
Почти родной чехол на форумах расхваливают как идеальный для всей этой cерии, и в общем-то камера действительно ложится в него как влитая. Даже слишком - если заранее не ослабить липучку для крепления на пояс, чехол будет так сильно давить на пластиковый ограничитель на объективе, что при следующем включении он начнет клинить раздвигающуюся шторку. Эффект пугающий, но, к счастью, проходит.
В итоге ощущения от перехода смешанные. Плюсов вроде и больше, но привычный результат теперь требует чуть больших сознательных действий. Хотя, наверное, привыкается.
гуглемигрантское
02.02.15 18:07 // оригинал
Соблазн нормальной синхронизации и неограниченного хранилища оказался слишком силен, так что сделал GAEшный аккаунт основным. Процесс вполне комфортный, старую почту можно перенести аж четырьмя способами - втянуть из аутлука, втянуть из старого аккаунта через pop3, отдельной программой и через админку (раздел Migrations). Первые два варианта доступны любому пользователю, последние только администраторам нового домена. Четвертый вариант самый комфортный и самый медленный, третий самый быстрый, но требует ручной смены настроек безопасности.
После переноса аутлук начинает работать с почтой через дополнительный плагин, с пользовательской точки зрения выглядит практически как imap (неудачный подход к которому делал пару лет назад), но лучше - все изменения немедленно синхронизируются в обе стороны, а Search folders не тормозят и работают сразу. Плюс то же самое происходит с контактами и календарем, ради чего как бы все и затевалось. Фильтрация на уровне GMail практически безболезненно воспроизвела старые аутлуковские фильтры. Ситуации, когда один адрес попадает под два фильтра, после чего письмо падает в две аутлуковские папки, уже не так пугают, как раньше, хотя автоматическая очистка Inbox по-прежнему актуальна чисто из эстетических соображений.
Отдельные косяки традиционно связаны с фотографиями контактов. Пять лет прошло с последнего плотного подхода к снаряду, а тут такие же танцы с бубнами, растущие из того, что аутлук конвертирует фотографии в очень современные 96х96. Что характерно, при синхронизации с древним WinMobile с этим как-то удавалось справляться, хотя и с кривизной в виде принудительного ресайза на минус 4 пикселя, оставшегося за пределами моего понимания.
Конечно, если не привередничать и оставить эти 96х96, то все как бы работает, на телефон и в почту приходит мелкая иконка. Танцы начинаются, если заняться перфекционизмом и захотеть полноэкранных фотографий. Раньше при простой синхронизации с аутлуком это не то, чтобы работало, но и не ломалось - в аутлук падала мелкая фотография, на айфоне оставалась большая, все жили по своим углам и друг другу не мешали. Добавление в эту схему еще одного этапа синхронизации с Google Apps сделало жизнь гораздо интереснее.
Подход 1: айфон синхронизируется с аутлуком, тот с гуглем (при добавлении гугля естественно начать именно так). Ставим в айфоне на контакт полноразмерное вертикальное фото 2448x3264, при синхронизации оно приходит в аутлук квадратным, пока все как раньше. При следующей синхронизации с гуглем фото в аутлуке исчезает, при следующей синхронизации с айфоном оно исчезает и там. В самом аутлуке картинки, отличные от 96х96, вообще не сохраняются, при добавлении фото в гугле оно из любого размера добирается до аутлука и айфона в 96х96.
Подход 2: айфон переводится на прямую синхронизацию контактов с гуглем. Главное, не забыть при этом отключить в iTunes синхронизацию с аутлуком, иначе получаются совершенно восхитительные глюки, описывать которые лениво и нет смысла, просто держитесь подальше от этих торфяных болот. Ставим в айфоне на контакт все то же полноразмерное вертикальное фото, при синхронизации оно приходит в гугль уже обрезанным по пропорциям айфонного экрана 54x96 и добирается до аутлука с итоговым размером аж 48x85. Это же происходит, если сразу поставить квадратное фото 2448x2448. Результат такой же, 54х96/48x85. Терпимо, но узкие фото в аутлуке выглядят кривовато.
Подход 3: из чистого интереса пробуем поставить фото 720х720 (значение - от смутных воспоминаний, что вроде бы в гугле довели фото контактов до этого размера). Результат внезапно отличный: на айфоне при звонках показывается во весь экран (кружок, использованный при задании фото контакту, задает левую и правую границу обрезанной картинки), в гугль и аутлук приходит неизменно квадратным. Аллилуйя. Ну почти - при первом изменении контакта за пределами айфона полноразмерная фотография у него слетает, но с этим более-менее можно смириться. Ну и опять же из чистого перфекционизма неплохо бы определить, начиная с какого размера при синхронизации с гуглем квадратная фотография начинает обрезаться. Очевидно, что искомое число лежит где-то между 720 и 2448.
Подход 4: переходим к честной дихотомии для поиска последнего "хорошего" размера. В процессе подбора неплохими кандидатами на его роль казались 720, 1440, 750, 1500, 1000, 1024, 1280, но все они были отсеяны. Результат же оказался удивительным и непредсказуемым: последним размером, который не обрезается при синхронизации, оказался... [барабанная дробь, фанфары]... 1297х1297. Понять я это не в состоянии, но это работает.
билайноденежное
02.02.15 15:32 // оригинал
Заглянув в личный кабинет резервного билайновского номера, обнаружил, что с сентября эти орлы принудительно подключили платную услугу "Будь в курсе+", за которую все это время аккуратно снимали по центу в сутки. Деньги-то небольшие, но сам факт восхищает, ребята из кожи вон лезут, чтобы помочь гражданам обнулить баланс неиспользуемых номеров.
геройское
30.01.15 20:04 // оригинал
Комментарии в аппсторе подтвердили, что проблемы с пониманием того, как атаковать юнитами ближнего боя, возникли не только у меня (но и не с такими интерфейсами разбирались, хотя могли бы и описать где-нибудь поближе). Со всякими лучниками все просто - двойной тап, и оно полетело, а все остальные при двойном тапе просто пропускают ход. Дело в том, что ребятам пришлось решить задачу, как на планшете сделать выбор, с какой клетки атаковать - то, что так легко делалось мышкой. На планшете же был выбран не вполне тривиальный вариант: сначала длинный тап по атакуемому юниту, после чего вокруг него подсвечиваются клетки, с которых можно атаковать, и одиночный тап по выбранной клетке.
За стоны про постоянные вылеты ничего не скажу, на моем air 2 проблем не заметил. Но косяков в интерфейсе хватает, причем многие связаны именно с буквальным воспроизведением оригинала - например, при сохранении поле ввода имени файла остается внизу, напрочь перекрытое всплывшей экранной клавиатурой.