212017
 

通常,flash是被嵌入到网页中。而网页如何嵌入到flash中呢。flash没有对应处理显示web页面的api(air有),所以只是表象:网页和swf是一体的,两者相互融洽,看得似好。利用iframe,通过层级关系,将网页和flash的宽高,坐标对应好就可以了。
这个时候,还会出现一个问题。如果flash的坐标改变了,iframe的相对坐标也应改变。为了处理好这种因变化而变化的关系,特意抽象了一个类,用来实现这种现象和变化。注释,原理都写在类中了。看了就会明白吧。

先看个demo:
http://www.vinixiu.com/demo/as3/swfiframe.html

再贴类:
Continue reading »

142017
 

避免数据库频繁查询,对变动频率不高,经常用的数据,可以缓存起来。免得总是查询数据库。这里总结一个手动写cache的方式。

先了解两个api。
1,var_export方法。var_export,输出或返回一个变量的字符串表示。可以将变量内容打印到一个PHP文件里,使用include的方式来重新获取变量内容。这个就是手段。
2,file_put_contents方法。file_put_contents可以写入数据到文件中。比如,php文件,txt文件,图片文件。
通过上边两步,就可以将想要的数据写入到php文件中。

整个的流程是这样的。
1,先通过is_file方法判断缓存文件是否存在。如果存在,直接return include文件。否则,则查询数据库,得到数据,处理数据,写入php文件中。返回数据。
注意,判断一个文件是否存在还可用file_exists。其效率没is_file好。另外,is_file有缓存。各种细节需要注意。if_file不能判断路径,文件夹,file_exists可以。is_dir可以用来判断路径的。

参考:http://www.opstool.com/article/262
Continue reading »

032017
 

有这样一个场景。win下,有一堆的以.ski命名的皮肤压缩包。需要解压出来,获取里边的文件。最笨的方法是先将后缀名为ski的文件一个个的重命名为.rar或.zip或.7z这些后缀名的文件。再一个一个的解压。这样,就可以获取到压缩包里的文件了。如果文件只有几个,这样做是可以的。如果文件有几十甚至几百个,这样做会很累人很累人的。那么,在win下,bat批处理就很有用了。步骤如下。

1,新建一个记事本。然后敲入想要做这些事情的命令。然后将记事本文件保存为一个.bat后缀名的文件。

2,将该bat文件放在和ski文件放在一起。然后双击,运行。等待执行结果,就可以了。整个过程会很快很快。一两秒内搞定。

贴出bat命令,防止以后用到。因为这些命令我也不会,在网上抄的。反正,是可以成功的。

1 @echo off
2 ren *.ski *.rar
3 set "rar=C:\Program Files\WinRAR\WinRAR.exe"
4 "%rar%" x -ad -y *.rar
5 pause

222017
 

正如题目。在移动端布局的时候,这个很有用(不用js的情况下)。有这样一个场景:
有若干张图片,图片的宽高各不相同(如果图片宽高相同就好搞了哈),让这些图片显示在网页中。要求每行显示三张(照片横向,纵向有一定的间隔,且距离父容器的间隔为0),显示的高度等于宽度,并且让图片在容器中居中显示。另外,在图片上浮动显示照片的介绍以及类型等(浮动几个小span。这个是前边要求额外的。)。

下边,这些问题先一个一个的解决。 Continue reading »

202017
 

在ios下,html5的video标签播放时候总会先全屏播放。这个问题很恼火,体验很差。所以找了个黑科技。那就点开下边的链接。
https://github.com/bfred-it/iphone-inline-video

貌似,video里边跟playsinline就够了。播放状态可以用addEventListener。比如播放完毕,侦听’ended’的

看看知乎上怎么说的哈。https://www.zhihu.com/question/21094425

这个问题解决的同时,还可以处理控件问题。ios的视频播放控件太丑太丑了。于是,用css写浮动,利用上边的方法,可以实现非全屏状态下的控件。

本来,为了实现控件的替换。想到用canvas画图的方式来完成。不过,有了上边的方法,canvas画图的方式就丢弃了。请看这里canvas画图。
http://www.cnblogs.com/zhangwenjiajessy/p/6158131.html

182017
 

话说,css就是那个层叠样式表。这个咋跟动画扯上关系了。其实,css早就可以实现动画的效果。

这里有demo可以喵喵:
https://tympanus.net/Development/HoverEffectIdeas/index.html

https://tympanus.net/Development/CreativeLinkEffects/

虽然很美好,可是css的兼容性问题从来就没离开过。这里就不管这些了。常见的动画效果改变有颜色,位置,scale,透明度,宽,高等等。下边就列出一些其api的,不会说其用法。

Continue reading »

122017
 

http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.

AS3常用的http请求方式也是post和get。当对URLRequest对象设置method方式为get或post以外的方式,就会报错。
ArgumentError: Error #2008: 参数 method 必须是某个可接受的值。

Continue reading »

042017
 

python怎么求交集呢。如果是DataFrame某字段求交集,可以用isin,也可以用merge。isin只会保留一边的交集数据,merge则两边都会保留。当然merge不仅仅是取交集。

如果是对Series求交集intersect1d。这种方式的数据筛选权当做取交集吧。

# coding:UTF-8

import pandas as pd
import numpy as np

df1 = pd.DataFrame({
        "id":range(1,5),
        "age":(18, 24, 32, 20),
        "address":('shanghai', "bejing", "shanghai", "guangzhou")
});

df2 = pd.DataFrame({
        "id":range(10,14),
        "age":(20, 16, 25, 24),
        "address":('shanghai', "bejing", "shanghai", "guangzhou")
});


df3 = pd.merge(df1,df2, how='inner',on="age")

df4 = df1[df1["age"].isin(df2["age"])]

#下边是处理Series
s1 = df1["age"]

s2 = df2["age"]

s3 = np.intersect1d(s1, s2)

042017
 

python插入数据到mysql的工具很多。每个工具写法不一样效率也不一样。就拿sqlalchemy,MySQLdb,sqlite3来说。sqlalchemy分ORM方式插入数据和非ORM方式插入。非ORM和ORM都还有细微的方式。可以参考:
http://docs.sqlalchemy.org/en/latest/faq/performance.html#i-m-inserting-400-000-rows-with-the-orm-and-it-s-really-slow

自己做了下尝试。插入3.8万条数据到mysql。用MySQLdb的一种写法需要1.8s左右,用sqlite3用时约2s左右,sqlalchemy的非ORM方式单纯insert需要2.8s左右,带去重则需要8s左右。说到去重,用MySQLdb的去重效率最高。各个框架工具,最开始暴露出来的称ORM,具体内部实现是怎样,需要考量。单纯的sql语句。insert into XXX values (xxx),(xxx),(xxx)。比insert into XXX values (xxx), insert into XXX values (xxx) …… 这样效率高很多。

按效率高低,贴出部分代码。
Continue reading »

十二 192016
 

避免往数据库中插入重复数据,可以使用INSERT IGNORE 或 REPLACE INTO。
INSERT IGNORE 会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
REPLACE INTO 如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。

在SQLAlchemy中,用ORM方式,方便大量插入数据。操作简单。如果也想避免往数据库中插入数据,其实操作也一样的。

engine.execute(User.__table__.insert().prefix_with(‘IGNORE’), {{‘id’: 1, ‘name’: ’1′},{‘id’: 1, ‘name’: ’1′},…,{‘id’: 2, ‘name’: ’2′}})

参考:https://www.keakon.net/2012/12/03/SQLAlchemy%E4%BD%BF%E7%94%A8%E7%BB%8F%E9%AA%8C

参考:http://itindex.net/detail/40939-sqlalchemy-%E7%BB%8F%E9%AA%8C

参考:http://www.cnblogs.com/koka24/p/5327280.html

参考:http://www.jianshu.com/p/e6bba189fcbd

参考:http://www.jianshu.com/p/28d3f5079f50

MYSQL批量插入数据效率问题:http://blog.csdn.net/frinder/article/details/38830723

SQLAlchemy批量插入数据效率问题:http://docs.sqlalchemy.org/en/latest/faq/performance.html#i-m-inserting-400-000-rows-with-the-orm-and-it-s-really-slow

网站地图