[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "disable": true, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } } ] { "gtm": "GTM-NDH47H" }
{ "author_name": "Kat Vance", "author_type": "self", "tags": [], "comments": 26, "likes": 72, "favorites": 3, "is_advertisement": false, "section": "club" }
1 681
Клуб

TJ для Windows 10

Тук-тук. Это я, почтальон Печкин. Принёс приложение для вашего сайтика. Но я вам его не отдам, потому что это ранняя, багованная, во всём ограниченная версия, которой пользоваться на постоянной основе невозможно пока. Под катом несколько слов о том, что представляет из себя приложение в его текущем виде, ссылка на appx-пакет и исходники (вдруг кто решит поставить, мало ли зачем), а также несколько вопросов к потенциальным пользователям. Приглашаю к обсуждению всех причастных к экосистеме Microsoft и им сочувствующих.

Поделиться

В избранное

В избранном

Вдохновившись конференцией /build/ и прочими успехами микромягких на поприще создания свой целостной экосистемы, решил научиться делать приложения под неё. Сел, открыл вижуал студио... Дальше всё как в тумане. Поскольку нет лучше тренировочной площадки, чем API любимого тэжэ, первое что получилось – некоторое подобие того, что со временем может стать полнофункциональным клиентом этого сайта под Windows 10, Windows Phone и Xbone. Первую успешно собравшуюся версию я сегодня хотел бы представить на ваш суд. Пробуйте, тестируйте, пишите, что хотели бы видеть (помимо стандартных и самоочевидных функций) в будущих версиях. Если можете отличить string от string[], – присылайте пуллы. Будем неспешно краудсорсить клиент для мобильных меньшинств, раз уж редакция не спешит нанимать для этого специально обученных людей.

Итак, на сегодняшний день оно умеет:

1. С некоторыми оговорками, указанными ниже – смотреть новости, читать статьи, проигрывать видео, показывать картинки и так далее.

2. Листать топ твитов. Пока что только за один временной период,только с одной картинкой (уже нет, исправил сегодня с утра), без чёрного списка и даже без нормально выглядящих ссылок, но это всё (кроме чёрного списка) довольно легко исправить. В ближайших версиях будет хорошо.

3. Ретвитить, лайкать, отвечать на твиты по тапу правой кнопкой мыши (пока что происходит редирект в браузер, думаю о том, как настроить транспорты в стандартный виндовсный клиент).

4. Открывать в браузере любую новость, если вам вдруг надоело продираться через поплывшую вёрстку и груды непонятных служебных символов (так же, через контекстное меню).

5. Быть адаптивной няшкой, не терять читаемость ни на очень больших, ни на очень маленьких экранах.

6. Периодически падать в самый неожиданный момент.

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

И не умеет:

1. Читать комментарии и пользоваться остальными плюшками закрытого API по причине его закрытости. Если Чекальский предоставит мне необходимую документацию, будет несложно (судя по преполагаемой структуре блоков) добавить. Фрейм для них я уже заготовил.

2. Просматривать профили пользователей. Технически сделать легко, но думаю над разметкой, которая бы вписывалась в весь из себя такой квадратный интерфейс десятки. Нужно нарисовать макет (примерно так выглядит этот прцесс). Кто думает, что знает, как должны располагаться элементы профиля на экране компьютера и телефона, можете оставлять свои варианты в комментариях.

3. Авторизироваться со своей учёткой. Опять же, всё упирается в закрытость.

4. Жрать оперативку как слон^^ Всего 32 мегабайта в Debug Mode со всеми зависимостями, ну и линейно растёт в зависимости от количества загруженных в память картинкок.

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

Из этого следует, что и структура данных, отправляемых мне через API в ответ на запрос, выглядит по-особому. Это некоторый невалидный (можете проверить) json с элементами html и ещё какой-то шнягой в конце. Андроиду и веб-интерфейсам разбор такого синтаксиса даётся легко (ну пробежался по строке, отделил элементы, засунул в блоки, там дальше пользовательский браузер разберётся, как их отображать), но .NET только смотрит на этот карнавал безумия ошалелыми глазами и крутит пальцем у виска.

Поэтому для того, чтобы переписать эту, в общем-то логичную, но некомфортную, структуру в нативные контролы xaml (который я вместе с этим вашим сярпиком впервые в жизни увидел 2 недели назад), пришлось для каждого типа блока создавать свои особые правила. Есть подозрение, что именно поэтому приложения для WP до сих пор и не было. Веб с .NET (оцените каламбур) по духу и логике практически несовместим, и в большинстве приложений, работающих с веб-страницами (клиенты реддита, браузеры, етц) просто используется стандартный встроенный браузер (и это ослик десятый, кстати, со всеми вытекающими).

На данный момент поддерживаются блоки текста, блоки цитат, блоки видео, инлайновые ссылки, разделение на абзацы и заголовки разного размера. Не поддерживается всё остальное. Поэтому если вы видите вместо приятного читаемого текста странные эльфийские символы, не пугайтесь, это всего лишь сырой код, перехватчик для которого ещё не написан. Вы всегда можете пройти на гитхаб, найти файл ArticleView.xaml.cs и написать правило самостоятельно, родина вас не забудет (или пнуть меня в одной из соцсетей, поправлю), если обнаружите подобное в релизной версии. Сейчас жаловаться нет смысла, сырой текст встречается довольно часто и о его существовании я знаю.

Наша цель – адаптивность!

Вместо закючения

Я отдаю себе отчёт в том, что концентрация говнокода на квадратный сантиметр поделия близка к непростительной. Много где дублируются классы, на разметку без слёз не взглянешь, названия переменных типа "abc" встречаются и т.д. Есть ненулевая вероятность, что парсер ответов от сервера состоит на пятьдесят процентов из лапши и из забивания гвоздей микроскопом ещё на пятьдесят. Так что ни от какой помощи опытных шарпистов не откажусь, если таковые здесь имеются. И материть меня за понаписанную фигню тоже можно, да.

Установка

Для того, чтобы попытаться поотлавливать баги в этом чудесном продукте нужно:

На ПК:

Вариант 1, для разработки, изучения, внесения изменений:

1. Открыть системное меню настроек → Update & Security → For developers и установить тумблер в положение "Developer mode".

2. Установить любую из редакций Visual Studio 2015 (лучше всего Community, т.к. она официально бесплатная), обязательно отметив при установке вот этот компонент.

3. Любым способом получить исходный код приложения с .sln файлом в корне и распаковать в удобную папку на компьютере. Папка по умолчанию: ~/Documents/Visual Studio 2015/Projects.

4. Запустить VS, Перейти в меню File → Open → Project/Solution и в открывшемся окне выбрать этот самый .sln файл.

5. Дождаться загрузки решения.В панели сверху нажать на кнопочку с зелёненькой стрелочкой и надписью "Local Machine".

6. Дождаться окончания сборки (или ошибки, если я где-то накосячил), собранное приложение запустится автоматически.

Вариант 2, для использования (пока не рекомендуется):

1. Загрузить и распаковать zip-архив с .ps1 файлом и .appxsym-пакетами в корне.

2. Кликнуть правой кнопкой мыши на Add-AppDevPackage.ps1, в контекстном меню выбрать "Run with PowerShell".

3. Дождаться окончания установки, нажать Enter для выхода из командной строки.

4. Запустить TJ for Windows 10 стандартным способом из меню «Пуск».

На устройстве с Windows Phone 10:

1. В аналогичном месте в настройках устройства выбрать "Developer mode".

2. В том же меню включить опцию "Device portal".

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

4. Разверните решение, используя .appxsym пакет для вашей архитектуры (если вы её не знаете, значит у вас arm).

В Store приложение появится тогда, когда (и если) будет обладать всеми возможностями, доступными в версии для Android, на которую я ориентируюсь, уметь отправлять опечатки, и иметь няшный обновляющийся баджик на главный экран, такой, как у стандартного приложения «Новости». На этом пока всё. До скорых встреч.

Ссылки

Гитхаб

Сборка

P.S. Я совсем не шарю в лицензиях, кто знает, что и куда надо прописать, чтобы ни у кого не возникало проблем со свободным использованием и модификацией этого говнокода и сопутствующих ему файлов любым способом в любых целях? Free as in Freedom, так сказать.

Популярные материалы
Показать еще
{ "is_needs_advanced_access": true }

Лучшие комментарии

Дискуссии по теме
доступны только владельцам клубного аккаунта

Купить за 75₽
Авторизоваться

Преимущества
клубного аккаунта

  • отсутствие рекламы
  • возможность писать комментарии и статьи
  • общение с членами клуба
Подробнее

Преимущества
клубного аккаунта

  • отсутствие рекламы
  • возможность читать и писать комментарии
  • общение с членами клуба
  • возможность создавать записи

Сколько это стоит?

Членство в клубе стоит всего 75₽ в месяц. Или даже дешевле при оплате за год.

Что такое клуб?

Клуб ТЖ это сообщество единомышленников. Мы любим читать новости, любим писать статьи, любим общаться друг с другом.

Вступить в клуб

Комментарии Комм.

Популярные

По порядку

Прямой эфир

Вы не против подписаться на важные новости от TJ?

Нет, не против