[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服务器端可以简单理解为一个消息中转站 ...
随机推荐
- jquery正则判断字符串有几个逗号
var angelweb="我,你,ta,";var re=/[,,]/g;if(re.test(angelweb)){ var n=angelweb.match(re).leng ...
- MD5加密获得文件的MD5码
哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串.加密哈希函数有这样一个属性:在计算不大可能找到散列为相同的值的两个不同的输入:也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配 ...
- linux中的hosts文件
1.主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号. 公网:IP地址不方便记忆,所以又有了域名.域名只是在公网( ...
- Restful API设计要点
1 Restful API时面向资源,不能面向动作: 2 充分利用http协议的GET, HEAD, OPTION, PUT, POST, DELETE几种方法: 3 GET方法用于获取资源,是幂等和 ...
- php用get方式传json数据 变成null了
$data = I('param.data'); $data=stripslashes(html_entity_decode($data));//$data为传过去的json字符串
- Laravel5.4 Oauth2.0认证应用 API 实战!
项目初始化 新建项目 lukeyans-MacBook-Pro:laravel lukeyan$ laravel new laravel_demo 添加laravel自带的Passport服务 luk ...
- 在EF中使用MySQL的方法及常见问题
有时需要在网上租用空间或数据库,Mysql成本低一些,所以想将sql server转成mysql…… 注意:在安装Mysql时要选择文字集为utf8,否则将不能使用中文(当前也可以在创建数据库时使用u ...
- CentOS 6.5 搭建cuda环境
首先这一篇文章是我搞了N多天后,才成功一点经验,为了不至于下次搭建时忘记,所以记录下来.nivida官网有一个文档,大家可以下载看一下 https://developer.nvidia.com/cud ...
- 2018.09.15点名器(简单dp)
描述 Ssoier在紧张的学习中,杜老师每天给他们传授精妙的知识. 杜老师为了活跃气氛,设计了一个点名器,这个点名器包含一个长度为M的数组(下标1开始),每个元素是一个oier的名字,每次点名的时候, ...
- arduino uno r3 + SIM900 + USB打火机 实现电话触发点火
需求来源 1.儿子过完年6岁,喜欢玩烟花,但是胆子小,于是我就负责点火,从年前26到大年初八,每天晚上要给儿子点鞭炮啊点鞭炮. 2.这边过年要打关门炮跟开门炮,大年初一凌晨还要起来帮老妈点鞭炮,说实在 ...