嗯…还是 PMangar | Yeah…PMangar Again

上次提到了 PMangar 会占用大量内存而导致浏览器崩溃,于是经过测试了各种清理内存的手段之后,决定还是放弃这方面的优化。虽说根据 Kindle 的浏览器配置文件wrs.ini来看默认设置是内存达到70MB的时候重启浏览器,但是实际使用总感觉70MB来得太快了……如果漫画本身是双页的,那么貌似不到10页就重启了,初步结论是变量清空(blah=””)对实际内存占用并没有神马影响。

于是接下来要改进的就是使用Cookies,这样即便浏览器没能撑住,也能保证在重启刷新页面后能够恢复到弥留之际的页面状态,可能的话还可以尝试涉足一下数据库,弄个用户注册登录神马的OLO。嗯,就写到这里。

————————Lang Sep————————–

Finally an English version post after a long time, well, this is simply because the Chinese version of the post is not so long so the rephrasing work will not trigger the limit of my laziness.

So lately I’ve been improving the online manga viewing website – PMangar, which is now almost working to my expectation. After a lot of logical improvements and the enhancement of Javascript, jQuery and some ugly UI designing, the site is now capable of basic features like manga searching, preloaded image viewing and keyboard shortcut. Even though more functions are going to be added, there is one major problem that I need to fix for now: the restart of the browser when memory limit triggered. Up to the latest version,  all data are stored in the cache and, after the restart, will be completely gone. The user will have to start from the first page and repeat all the inputs to get to the last page before the sudden death of the browser.

Therefore, I’m planning to utilize the Cookies of the browser and put the info needed for crash store in it. It might even be a good chance to have a taste of the MySQL database and try to implement some simple signup,login and comment system.

That’s me.

继续PMangar | PMangar Keeps Going

又是一番折腾,算是把CSS弄清楚一些了。首页和浏览页也勉强算是弄了个比较美观的UI,不过高兴的是首页顺利通过W3C认证了,无论结果如何,在过程中算是把规范弄得比较清楚了。

最新版PMangar已经上传到了ver0.003,目前实测在Kindle上依然有个内存不足的问题,虽然设法在浏览中删除了6页之外的旧内容,不过实测表明大约近20页之后浏览器会因为内存的原因重启,这时候Cache数据就完全丢失了。目前准备了解一下Javascript的内存清理方面是否还有优化空间,以及,把保留6页内的内容改成前5页外的全部清空试试。

几张截图:

顺带一提,做完这些的时候偶然在jsfiddle看到了jQuery Mobile,然后立马震精了,这货已经实现了近乎所有移动设备上的浏览器的HTML5兼容(Kindle 3赫然在其中),然后UI方面也有了很不错的兼容各种设备的设计器,不得不说对俺自己设计的想法是个巨大的打击。不过既然工具在此,就可以加以利用,之后的列表一类的功能估计就可以用jQuery Mobile来做了。

PMangar 大进展 | Improved PMangar

首先给出 PManagr 测试版链接: 〇L〇 或者 〇.〇

上回貌似就提到了,亚马逊在3G的代理服务器上面做了手脚,以至于超过800×600的图片都被缩水了(有人反映图片也被转成灰度了,因为PNG的透明部分变成了黑色)

大图缩水版
3G下的大图
(注意标题的尺寸)
大图原版
WiFi下的大图
(注意标题的尺寸)

 

这对于 PMangar 来说是个不小的问题,于是当时第一个念头就是: 把图片切成小图

这样的话小图可能就不会超过尺寸限制,或者即便超过了再被缩小也刚好在能接受的范围内,不过这就需要在服务器端进行图像处理,例如使用GD模块. 于是就使劲查相关资料企图了解函数的用法,同时考虑图像文件的存放问题(例如按照访问时间为名称建立临时文件夹来存放),期间偶然看了看html5rock主页的源代码,发现有一些类似于:

的图片, 而在网页中的显示完全正常,于是就猜测是否有一种特殊的编码格式允许把文件的每个字节都用字符表示并直接用在网页中–Data URI. 利用这个就能绕过代理服务器对图片的处理而获取原本的图像内容了.唯一的缺点是因为结果是字符串的形式,所以浏览器不会进行缓存,于是用javascript建立了一个array专门装data解决了. 昨天画了几个图标把图形化的导航菜单加进去了,效果还行,目前唯一剩下的问题就是使用”document.title”之后标题栏并不会刷新,除非页面reload,猜测是浏览器本身的设计所以暂时无解了.

总的来说对这个东西还是挺满意的,剩下的除了对于漫画目录的获取处理,UI美化以及用户体验优化应该没了. 嗯,要专心学习了.

PMangar 更新中 | Upgrading PMangar

之前的十来个月荒废了太多太多,回头一想实在是愚蠢至极,随之而来的还有各种后悔。但时光已逝,无论怎样都不会复还了,所以要做的便是:珍惜今后的光阴,以活得不后悔为宗旨,尽力创造美好的生活。

嗯,跑题了,下面言归正传。近期开始各方面发奋,包括各种编程语言,于是利用改善PMangar的机会提升运用PHP乃至是组合网络编程语言的能力。这次的主要目的是恢复键盘热键的使用,以及预读取图像。
1. 键盘热键的问题是在重拾PMangar的时候发现的,那时候一开始是单纯的用本机测试,体验的时候一切正常。可是放到000上无法使用热键,而放在SAE上却可以。那时候并没有深入研究,以为是服务器端的限制导致的,就没有研究了。后来在给漫画预览界面添加封面图的时候又遇到了这个问题,000上死活读不了,而本机和SAE都能正常显示。于是翻来覆去折腾的过程中,一次偶然的机会试了一下源代码中pic.php的地址,发现是个死链,点开会跳到404。
问题就这么找到了,在http://rotar.tk/pm/pm.php中用来fetch图像的pic.php的链接部分原本是缩写成了”/pic.php?url=*****”

这在IIS(本机)和SAE上的实际结果都是 ”http://rotar.tk/pm/pic.php?url=*****“

而到了000那里就被解读成了 “http://rotar.tk/pic.php?url=*****“

于是文件不存在,自然也就无法用来取图。去掉那个斜杠,也就是更正为”pic.php?url=*****”之后,缩略图的显示就全都正常了。

热键使用的key.php也是因为同样的原因而失效,这个问题直到4小时前才被发现及更正。

 

2. 图片预读的办法

主要有两种:

一种是利用Javascript建立Image对象然后对图像进行载入,之后在网页中插入。

而另一种,也是目前在PMangar中采用的方法是利用CSS。原理是利用CSS的background-image来读取图像并且将这个div设置为0x0的大小,于是图像就在读者看不到的情况下载入了。

这里要提一下的是多个图像的地址只需要用逗号隔开就行了,如下:

Javascript部分就比较简单了,沿用之前的document.onkeydown的函数,给了图片一个id(例:pic)然后用getElementById的方法获取,直接pic.src = XXXXX (下一张图的地址)就可以了。链接和标题之类的也是利用Javascript进行修改的,唯一花了点心思的地方是把图片的链接字符串组从PHP搬到了JS的Array里,然后在JS中利用变量进行索引从而达到不刷新页面就能全部浏览的目的。

大概就写这么多了OLO,时间不早,在折腾会儿就水饺了,希望上文能够在今后给意外点进本文的童鞋一点帮助。

——Edit

折腾了一段时间,发现3G下图像的尺寸老是有缩水(WiFi无影响),发现貌似是Kindle升级到3.3了之后才产生的问题,不清楚是本地的浏览器配置的改变还是Whispernet代理服务器搞的鬼。于是还在想办法中,最好是能在Kindle本地解决。

PMangar再启动计划 | Revival of PMangar

大概是从去年开始着手制作了一个简陋的看漫画用的php网站PMangar,功能只有通过股沟在178上面搜索与输入字符相关的漫画,然后一页一张图的方式进行浏览,当时在Kindle和手机上测试效果都还凑合,于是就收工了。近来无事,于是又测试了一下,发觉功能基本失效,于是重新检查和改进,总算是又能恢复使用了。传送门在此:http://rotar.tk/pm

本文便用来记录复活PMangar过程中的领悟和心得,与诸君共勉。

————————–Lang Sep—————————–

PMangar was an simple php application that fetches comics from 178.com and display it to the user. In other words, its just an online comic viewer. The work are considered done in last year as the result of using it on both Kindle and my Nokia phone seems to be satisfactory. However, when I checked the application few days ago, nothing seems to be working and therefore I’m here to repair and upgrade it. The currently working version is available at http://rotar.tk/pm.

This post intend to share what I’ve learnt about php during the process and hope it may help.

Continue reading…

Python 笔记01| Notes about Python 01

近几日花了挺多时间在这上面,效果也较为显著,PMangar基本被实现了。期间有一些心得在这儿写下来做记录,顺便也分享:
I’ve been working on Python these days and here are some notes for it:

  1. Python中不支持在string.find(str)中使用正则表达式,即str只能是string。
    str in string.find(str) can not be a regular expression, it should be a string.
    Code:

  2. 使用for i in range(a,b)时,i的值可以等于a到不b-1而不会等于b。同理对于i[a:b]会截取i的第a至b-1个元素。
    In Python, any operation involving a range of a to b means the value can be from a to b-1.
    Code:

  3. 当已知一个字符的Unicode编码时,例如a=”u4eba”,可以通过unichr()和int()将其转换为相应字符的Unicode形式即b=”u4eba”
    When you know the unicode number of a charactor, you can get the corresponding character by using unichr() and int().
    Code:

PMangar 再启动计划| PMangar Reviving Project

距离上次编写和使用PMangar已经有些时日了,自从换了手机之后,很少再拿起HKC折腾。原因有两个,一是电池不经用,持续操作下恐怕撑不过2小时,其二是因为重量可观,远没有5630那么轻便。但是不得不说的是,触摸屏还是要方便许多,自从在手机上编程开始,日益发觉触摸屏+全键盘才是王道,缺其一便会增加许多不便,当然了,十二键数字键盘是最杯具的。

此次重拾主要是因为“身处国外,网速很快”,无论是校园WiFi还是手机3G都相当给力,于是本着不能浪费资源的想法,打算继续在手持设备上使用漫画下载软件。另一个推动力则是5630xm的系统,由于S60对Python的官方支持使得Symbian上的Py软件迅猛发展,相应的S60上Python的开发也越来越快,appuifw和e32的用法都能找到很多参考资料,所以这次转移应该不会有什么难度。

其实在开发WM上的版本的时候就已经有了更换图源网站的念头,但是当时一经做出便没有了前进的动力,改得刚好够用便满足了,直到后来由于google编码的问题而无法搜索的时候也由于紧张的学业而停止了开发。此次既然下定了决心,便换筋洗髓,从闲人改用了178。选择178的原因有:1. 漫画浏览页面提供了“右键另存为”链接,意味着图片可供下载,不用顾忌其余网站的所谓“版权问题”。2. 178的图片URL计算模式与主流网站一致,章节内任一页都包含了全部图片地址的列表,只要稍加处理便能直接获取。

目前转移工作基本已经完成,基本功能全部由菜单实现,GUI什么的等于没有。之后要做的就是:

  • 多线程下载。据说Python本身就有相应的函数,貌似是threading什么的。
  • 简介及缩略图获取及显示。这个需要对appuifw做些研究。
  • 自动更新。这个是个难题,短期内无法解决。
  • 章节批量下载。这是通向自动更新的第一步,可能要在downlist上动点脑筋,其次schnam如何随图片变化也是个问题,偷懒的解决方案就是Comic目录+抽取下载地址倒数第二个‘/’之后部分。
  • 最新更新漫画预览及获取。这就要求对178的主页进行分析并且提取简介和缩略图。
  • 多图源切换。这个基本等于重写60%程序,178已经不错了,不到万不得已俺是不会去浪费这个时间的。当然了,或许以后能够找到提高效率的方法也不一定呢。

以上功能若是实现的话,可能就能够与PC上现有的某些漫画下载软件匹敌了吧。

—————————-Lang Sep——————————

Time is ticking and I have to prepare for my presentation in this afternoon.

In a nut shell, this is a comic downloading application running on Python on a Symbian phone. I will update more info in English when time permits.