[UWP]爱恋动漫BT开发小记
在七月和某个人相识,在七月又和这个人重回陌路,在这个伤感的七月,让我来水一篇博客。
已经很久没有写博客了,最近现在来写一篇,总结一下这个七月。
今年的暑假特别的长,大概六月中旬就考完试了,而开学一直要到九月初。中间有两个月的假期,可以好好的“玩”和学学编程了。虽然暑假很长,但是感觉时间过得特别快,每天都是起床,往电脑前面一座,然后天黑了,继续睡觉,就一直这样重复重复。一晃眼好几周就过去了。但总的来说呢,这个七月还是干了点事儿的。
七月初的时候,回了一趟家,在家呆了大概七天左右,然后就回学校实习去了。说起实习,感觉的确是好尴尬。虽然面试到了一家互联网公司,但是面试的职位是个编辑,题库编辑,就是很苦逼的一天校对文本,文本录入,对着电脑看一天的word,感觉很枯燥,很无聊。所以干了整整七天后,离职了。离职后其实也挺好,我终于有大把的时间来看看编程方面的东西了。
之前一直学习C#,算是入了微软的坑了,现在反正就是.net方面的都有看,但看的都不多。微软前不久发布了.Net Core 1.0,感觉是个很牛的东西。本着也来学学它的精神,在七月中旬我开始制作一个个人博客(www.cjw1115.com),用的自然就是基于asp.net core了,而在数据存储方面用了ef core和sqlite。由于我的前端功底真的很渣,所以没有怎么做美化界面的事儿,整个博客系统也没有用到AJAX,想着以后慢慢加吧。值得一提的是,作为微软MSP的奖励,我有一年的msdn订阅,各种微软正版软件免费用,好爽!里面还包含有azure的订阅,我自然是把网站全面部署到了Azure上,不过貌似现在也只有Azure的虚拟机的iis支持Asp.net Core吧。
说的有些跑题了,在七月末,我开始了制作这个爱恋动漫BT的UWP客户端,不过很坑爹的一件事儿是这个爱恋动漫BT和wp一样,也是个小众的产品,它甚至没有安卓和IOS客户端,不过本着练手的原则,我还是简单的开发了一下。
开发有两个重点,一个就是爱恋动漫bt相关内容展示方面的开发,另外一个就是内置下载器的开发。
一、就爱恋动漫本身来说,大概有这么几步吧
1.获取各种资源的接口:这个就很尴尬了,这个网站没有官方app,但是有一个针对移动设备优化过的移动版的web站点,很遗憾,它所有页面全部是由服务器端渲染完成后返回的,整个站点找遍了,连个json的毛都没找到。那所有的数据只能通过解析html来获取了。
2.数据解析:因为基本页面其实就两个,一个是资源列表页面,用了大量的<li>标签,这个很容易获取;而另一个页面是关于资源的详情展示页面,我在这儿偷了一个懒,把详情展示页面不变动的地方本地化了,把具体的资源描述内容这种变化比较大的,通过webview直接展示,不仅省力,而且还不失美观。
3.页面设计:关于页面设计,很自然的和官方的页面一一对应就行。用了MVVM,针对这种大量数据的,用数据绑定真的好爽。
二、下载器方面主要有以下几点
1.下载器无非就两个页面,一个下载中,一个下载完成,所有数据的存储都使用了sqlite,通过ef core来操作sqlite的确是非常便捷。
2.整个下载其实完全依赖了uwp自带的BackgroundTransfer类。整个下载过程只需要控制开始,暂停,结束就行了。
3.有想过做p2p的下载,但是这个工作量应该不小,所以就先缓缓。
整个工程中,其实都是MVVM和Code-hehind混合使用的,的确设计的很乱,以后应该要好好整理一下,好好做做分层。
在发布后,我从商店下载安装使用了一下,很明显的两个bug就暴露出来了。
第一个就是顶部状态栏编程一道白条,遮挡了系统状态栏的所有图标和信息。其实之前在做工大助手的时候也有遇见过,但当时以为是系统的bug,所以没有关心,这次才发现,是有一个判断平台特定api可用性的函数失效导致的(估计是.net native编译有关),所以最后的解决办法就是直接判断平台是什么,而不是判断这个api是不是适用于这个平台。
//不可靠的方法
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(typeof(StatusBar).ToString()))
{
StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
statusBar.BackgroundOpacity = ;
statusBar.BackgroundColor = brush.Color;
}
//可靠方法
if ("Windows.Mobile" == Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily)
{
StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
statusBar.BackgroundOpacity = ;
statusBar.BackgroundColor = brush.Color;
}
第二个BUG也是最让我纠结的一个,因为在发布版本里面会出现这个问题,但是在调试的时候并不会。后来注意到,发布的时候是全新的.net native编译方式,而调试的时候是传统的编译方式,这就很尴尬了,我必须去用.net native编译后测试,让人最受不了的就是这种编译方式太慢了,编译的时间长到足以让我去打个水,回来再泡个茶,这个还不够,剩余时间还能去上个厕所!不过还好,最后也发现问题了,问题在于,我在项目里使用sqlite和ef时,使用的是ef 7相关的一些程序集,在构造我的实体类的时候,会发生类型初始化错误。后来把ef 7换成了ef core 1.0后问题就解决了。
顺便附上最权威的相关资源学习地址
哎,不过最忧伤的事儿还是喜欢的姑娘和她男朋友分手了,她却把我的微信删了.......
并不是吐槽她什么,只是觉着这种处理方式有些欠妥......
毕竟我没有做错什么......
求老司机指点!
[UWP]爱恋动漫BT开发小记的更多相关文章
- NodeJS+Express+MySQL开发小记(2):服务器部署
http://borninsummer.com/2015/06/17/notes-on-developing-nodejs-webapp/ NodeJS+Express+MySQL开发小记(1)里讲过 ...
- 带农历日历的DatePicker控件!Xamarin控件开发小记
原文:带农历日历的DatePicker控件!Xamarin控件开发小记 闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePi ...
- UWP开发小记
针对个人的上一篇文章中提到的遇到的几个问题,做一下个人解答 DLL部署的问题,可以将DLL添加到工程中,属性中设置content为true,这样,部署目录下就会有这个文件. 需要说明的是,这个文件确实 ...
- 承接微信小程序外包 H5外包就找北京动点软件开发团队
承接小程序外包 微信小程序外包 H5外包 就找北京动点软件 长年承接微信小程序.微信公众号开发 全职的H5开发团队,开发过几十款微信小程序公众号案例 欢迎来电咨询,索取案例! QQ:372900288 ...
- thu-learn-lib 开发小记(转)
原创:https://harrychen.xyz/2019/02/09/thu-learn-lib/ 今天是大年初五,原本计划出门玩,但是天气比较糟糕就放弃了.想到第一篇博客里面预告了要给thu-le ...
- 手把手教你使用FineUI+动软代码生成器开发一个b/s结构的取送货管理信息系统(附源码)之开篇
一 本系列随笔概览及产生的背景 近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座, ...
- Electron Angular 开发小记
一介绍 electron分为主进程和渲染进程,主进程负责和原生交互,控制窗口等. 渲染进程就是普通网页.主进程和渲染进程可以通过ipcMain(主进程使用)及ipcRenderer(渲染进程用)通信 ...
- 微软颜龄Windows Phone版开发小记
随着微软颜龄中文网cn.how-old.net的上线,她也顺势来到了3大移动平台. 用户在微软颜龄这一应用中选择一张包含若干人脸的照片,就可以通过云计算得到他们的性别和年龄. 今天我们就和大家分享一下 ...
- MQTT开发小记(一)
最近在协助公司硬件组进行MQTT协议的嵌入式SDK包开发. 简述一下MQTT MQTT简单的来说是一种订阅/发布模式的通信形式,一般分为客户端和服务器端. MQTT服务器端可以简单理解为一个消息中转站 ...
随机推荐
- 【校招面试 之 C/C++】第25题 C++ 智能指针(一)之 auto_ptr
1.智能指针背后的设计思想 我们先来看一个简单的例子: void remodel(std::string & str) { std::string * ps = new std::string ...
- Java数据类型与MySql数据类型对照表
这篇文章主要介绍了Java数据类型与MySql数据类型对照表,以表格形式分析了java与mysql对应数据类型,并简单讲述了数据类型的选择与使用方法,需要的朋友可以参考下 本文讲述了Java数据类型与 ...
- [leetcode]277. Find the Celebrity 找名人
Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there may exist o ...
- [leetcode]689. Maximum Sum of 3 Non-Overlapping Subarrays三个非重叠子数组的最大和
In a given array nums of positive integers, find three non-overlapping subarrays with maximum sum. E ...
- oralce 存储过程、函数和触发器
一.存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 创建存储过程 用CREATE PROCEDURE命令建立存储过程. 语法: create [or repl ...
- win10下zip安装mysql5.7的一些问题
一.MySQL下载地址: http://dev.mysql.com/downloads/mysql/ 我们下载zip版本的 二.解压zip文件 三.复制一份里面的my-default.ini为 ...
- PAT 1078 字符串压缩与解压(20)(代码+思路)
1078 字符串压缩与解压(20 分) 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示.例如 ccccc 就用 5c 来表 ...
- Codeforces 665A. Buses Between Cities 模拟
A. Buses Between Cities time limit per test: 1 second memory limit per test: 256 megabytes input: s ...
- Codeforces 599C. Day at the Beach 模拟
Day at the Beach time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- jQuery 操作 html5 data-* 属性
Html 部分: <a class="nav-item" href="javascript: void(0)" data-id="{{$item ...