分类目录归档:未分类

塑料模具(注塑模具)海关编码为:8480710090,冲压模具(钣金模具)海关编码为:8480410090 出售,工厂,制成品,供应商

塑料模具(注塑模具)海关编码为:8480710090,冲压模具(钣金模具)海关编码为:8480410090


塑料制品(塑料件)海关编码为:39269090
模具一般按用途来归海关编码 请告诉具体用途 下面是按用途或制作材料的模具叫法,在实际报关中可以用制作对象的名称来命名,例如 刹车座模具 属于压膜 报关时可以用刹车座模具来报关,模具应该属于金属模具(压铸模具) 84804100
以下是模具的分类:
工具类:
金属拉拔 挤压用模具 82072090
锻压 冲压冲孔用模具 82073000
机器类:
1.   84389000  糖果模具
2.   84490090  铝制模具(制作帽子模具)
3.   84669300  钻孔定位模具(用于加工割草机零部件钻孔定位用)
4.   84801000  浇铸用模具
5.   84804100  金属模具(压铸模具 金属注模)   
6.   84804900  金属模具(除上面   浇铸用模具   压铸模具 金属注模 外的其他金属铸造用模具)
7.   84805000  玻璃定形模具
8.   84807100  注塑模具 (压模 注模)
9.   84807900  吹塑模具 滚塑模具 挤出模具 发泡模具
现在海关编码是10位,可以在海关网查询更细的分类。

 

简单地说就是用我司名义进出口,由我司提供全套出口报关资料:核销单;合同;发票;装箱单;报关委托书;重柜纸;报关单;其他必须证书:如商检证、植检证、许可证、配额等;作为配套出口服务项目,我们根据《中华人民共和国海关管理条例》通过合法、正当手续办理货物进出口。因单证所发生的问题将由我公司负责。

    冠通达进出口报关公司提供的买单报关业务遍及深圳关区内的盐田、蛇口、皇岗、文锦渡、笋岗、大鹏等码头、深圳机场、口岸和各仓库,买单报关/代理出口的原因包括:
    1、一般贸易货物的进出口报关但厂家/公司自己没有进出口权;
    2、没有出口合同手续;
    3、合同与产品不对应或合同期已满;
    4、属来料加工,而有时在国内所购材料对不上合同;
    5、由国外进口成品、机械设备、原材料等。

    买单报关/代理进出口所需资料

    您/贵公司/厂家只需提供货物清单(包括产品名称、净重、毛重、箱数、个数、产品规格、品牌、报关口岸等)资料,我司有专门的报关用装箱单表格给你供你填写,你完成后传给我司,我司便可为您办理各项报检、报关等通关手续,保证货物安全、快捷通关。

    买单报关/代理出口商口范围:电子产品、五金制品、 塑胶制品、玩具、鞋类、服装、陶瓷、木制品、 各类工艺品、各种袋、箱、包等。我司可为您提供:海运买单报关,空运买单报关,快递买单报关,皇岗买单报关,文锦渡买单报关,仓库买单报关,快递买单,深圳机场买单报关,盐田买单报关,蛇口买单报关,赤湾买单报关,灯具买单报关,木家具买单报关,出口买单报关,买单包柜报关,买单报关代理……

    如果您的货运代理收取的报关费用偏高,如果您的出口货物经常因为报关延误船期,如果您的货物出口通关不顺畅,请您立刻打电话给冠通达进出口报关公司,我们将竭尽全力为您提供准确快捷的通关服务。

    深圳报关,买单报关,海运买单报关,空运买单报关,快递买单报关,皇岗买单报关,快递买单,深圳机场买单报关,盐田买单报关,蛇口买单报关,进出口买单报关,买单包柜报关,买单报关代理,进出口代理.
    冠通达进出口报关公司竭诚为您服务!

flask wtform中枚举的使用

wtform可以非常友好的管理好表单的交互以及服务端验证。最近开始使用postgres,发现也能非常友好的支持enum类型,但是在实际的操作中发现了一个bug。这里我们使用form.populate_obj方法从form中更新字段到obj,使用form.process(obj)方法从obj更新到form。sqlalchemy使用枚举类型定义的字段,form中使用selectfiled或者其子类。

修改了好多回,反反复复跟踪后才明确这个问题,在第一次给form赋值时无错,第一次保存时也无错,bug出在form的存储数据上,就是对field.data的操作。原来在wtform中会判断field.data是否是filed.choices中的值,源代码如下:

file:core.py    
def pre_validate(self, form):
        for v, _ in self.choices:
            if self.data == v:
                break
        else:
            raise ValueError(self.gettext('Not a valid choice'))

self.data有时候是form中选中input的value值,有时候是枚举类型,要修复这个bug就要在所有枚举类型的基础类BaseEnum上改写eq和hash两个内置函数,使得双等“==”操作既能比较字符串,也能比较枚举类型,修改后修复。

gunicorn vs uwsgi 性能对比,以flask run为基准

之前一直在用gunicorn,这次折腾新项目突发奇想来对比下flask run \gunicorn\uwsgi的性能。不是非常严谨的测试,希望也能有一定的参考意义,结果也很有意思。

gunicorn很火,uwsgi以前用的人多,但是现在少了感觉不怎么听到,这东西是用c写的,带了光环的。flask run这里只是作为基准参考,压力测试工具为ab test,前置了nginx把静态文件剥离了,两者都使用unix domain socket通信隔离了http微乎其微的影响,两者都是用了2process+2thread,压力为100-1000。下面是三种方式的结果:

#基准flask run 100-1000
Server Software:        nginx
Server Hostname:        xxx
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
Document Path:          /
Document Length:        6223 bytes
Concurrency Level:      100
Time taken for tests:   7.418 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      6489000 bytes
HTML transferred:       6223000 bytes
Requests per second:    134.81 [#/sec] (mean)
Time per request:       741.790 [ms] (mean)
Time per request:       7.418 [ms] (mean, across all concurrent requests)
Transfer rate:          854.27 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        5   47  69.2      6     296
Processing:   231  662 186.7    679    1736
Waiting:      231  662 186.7    679    1736
Total:        241  709 159.6    702    1742
Percentage of the requests served within a certain time (ms)
  50%    702
  66%    735
  75%    788
  80%    821
  90%    881
  95%    958
  98%   1111
  99%   1178
 100%   1742 (longest request)
# uwsgi result
Server Software:        nginx
Server Hostname:        erp.ljmold.cn
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
Document Path:          /user/login
Document Length:        6223 bytes
Concurrency Level:      100
Time taken for tests:   9.741 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      6489000 bytes
HTML transferred:       6223000 bytes
Requests per second:    102.66 [#/sec] (mean)
Time per request:       974.096 [ms] (mean)
Time per request:       9.741 [ms] (mean, across all concurrent requests)
Transfer rate:          650.54 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        5  130 246.7      9    1750
Processing:     4  533 732.3    437    7584
Waiting:        4  533 732.3    437    7584
Total:          9  664 765.4    473    7742
Percentage of the requests served within a certain time (ms)
  50%    473
  66%    656
  75%    751
  80%    858
  90%   1272
  95%   1719
  98%   2526
  99%   4081
 100%   7742 (longest request)

#gunicorn 100-1000
 Server Software:        nginx
Server Hostname:        erp.ljmold.cn
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path:          /user/login
Document Length:        6223 bytes

Concurrency Level:      100
Time taken for tests:   9.678 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      6489000 bytes
HTML transferred:       6223000 bytes
Requests per second:    103.33 [#/sec] (mean)
Time per request:       967.779 [ms] (mean)
Time per request:       9.678 [ms] (mean, across all concurrent requests)
Transfer rate:          654.79 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        4   82 233.2      6    2275
Processing:     4  584 891.2    306    7272
Waiting:        4  584 891.4    303    7272
Total:         10  667 907.5    389    7278

Percentage of the requests served within a certain time (ms)
  50%    389
  66%    573
  75%    682
  80%    868
  90%   1487
  95%   2506
  98%   3374
  99%   4788
 100%   7278 (longest request)
  1. 总共耗时上差的微乎其微,这点差别不能说明什么;
  2. 两者都完成了所有请求,这里说一下,之所以选1000就是因为2000两种方式都会崩溃;
  3. 平均时间uwsgi胜出,这里差别不明显,但是也说明总体性能上uwsgi做的彻底;
  4. 连接时间上,两者明显在1000下都吃力了,但是uwsgi表现更好,除了c我觉得使用uwsgi自己的协议也有关系;
  5. 最后也是最重要的,在高并发下,明显uwsgi的表现更好一点,很有意思的是在80%以下的正常流量范围内反倒gunicorn更好,而且效果显著,100ms还是比较可观的,我想这才是大家都用gunicorn的主要原因吧。

最后别人说的总归是片面,还是自己动手对性能有更全面的了解。顺便说一下对flask自带的小服务器刮目相看

第一次买房记

没买房的人都亏了。

背景:作为本地人多少都有房子的,所以很长时间里我的观念中就是不要参合买房大战,房奴过的都很艰辛。买房的念头就是从户口问题开始的,孩子过一年就要上小学了,户口于是打算迁到城里,没成想今年开始政策不允许了,因为迁户口用的房子性质有问题,哎,政府的锅为什么要让老百姓买单,气。周围问了一遍,发现不买房上学真的是个问题。

看房:本来我们这是个小县城,随着经济快速发展我也从市中心一次次往外搬,出于对老城区的感情和学区的要求看的都是绣湖区块。正好碰上拆迁潮,新小区没有几个,还都是期房,价格超出预算很多,只能放弃。如果不买老城区心里有受不了住的比现在还远的落差,于是开始看二手房。

二手房:一直知道二手房坑多,看房的时候中介啊朋友啊说了各种故事。好在表哥刚刚买了二手房,可信的咨询就比较多了。作为二手房价格肯定比新房便宜多了,但是比新房多出几个成本:中介费、过户契税、营业增值税、土地出让金(如果是安置房,我买的就是这种)。然后作为二手房也有他的好处,比如学区稳定,不会像期房开始各种承诺,后面各种问题落实不了,甚至有的证件齐全却发不下房产证,本来买房就是为了入学,所以二手房是更好地选择。

中介:二手房避不开中介,哪怕你跟房东认识也必须邀请有执业资格的中介签订第三方契约。中介费就是个头疼的问题了,特别是高价的房子,因为中介费是按照百分比算的,比如义乌最大的中介坐标大概是2%,上海大概1.5左右。200万的房子中介费就是四万了。托表格的福,他花了很多时间找到了私人中介按照固定费算。有的中介带你看房后会要求签署一个协议,这个协议会锁定你半年左右时间,这段时间里哪怕你跟别人交易用的其它中介也要付中介费给协议方,要小心哦。

出让金:这个大多出现在安置房中,我觉的这个挺流氓,集体土地低价变成国有土地后居然还要交钱,无语了。这一项最重要的是用房产证来实际计算,因为变数很大,很多中介会把四五十万的出让金粗算成三十多万,就是为了促成成交。作为大头之一,直接影响到最后总的预算。

契税:这个倒是固定的,项目可能多,但是不会有变数。

营业增值税:这个是为了防止炒房出台的,一般购买时问清楚房东持有的年限就好,大城市这个影响比较大,义乌只限两年,碰到的比较少。

按揭:这是我最大的痛,如果有公积金一定要公积金贷,便宜很多很多,平常看不出来,累积起来能省三分之一。一般都是四大行操作,利率都是国家标准,打听好再去办。现在还会附带保险要求,这个就有点耍流氓,而且跟你卡绑定,逃都逃不掉。

车位:很重要,特别老城区的车库都炒到天价了,这次买的并没有车位,略有遗憾,幸好周围有新建的停车场还能自我安慰下。二手房大多老小区,所以停车一定要计划好,当然好的停车位房价总价自然也是高的。最好能有两个车位,毕竟现在车便宜了。

买房决心的因素:大概位置和学区一般开始就能定下来,预算一看便知。那么最后下决定买哪套我觉得跟心理预期最重要,简单说就是自己满意就好。

  • 小区的东南角,采光和视野应该是最好的;
  • 中间楼层,太低采光不好和蚊虫多,也不够安静,太高风大,不坐电梯就太可怕了;
  • 靠近公园,适合晚饭后散步、孩子们玩耍,近了去的才会多,城里我一直认为公园是最宝贵的,也是这套我最满意的地方;
  • 商场在小区的西面,大概几百米吧,正好吵不到,购物也方便;
  • 幼儿园在马路对面,可惜这几年不去住,否则午餐回家吃都妥妥的;
  • 小学大概1km,走路可及;
  • 离市政府不远,主要是考虑保值,涨价就不去想了,也不打算再卖;
  • 租赁:原先租户是一个单位,价格高出市场价40%,相当满意,打算多租两年,让财务缓一缓;
  • 总价比预期高了一点,这还是在房东砍价后的,可能买房时间不好吧,跟大量拆迁户正面作战;

python 爬取携程特价票-知道什么时候出发最便宜- 支持多航段搜索

好久不写文章了,两天弄了个携程的脚本,发现网上大多都是18年以前老版的做法现在已经没有借鉴的意义,于是记录攻略如下,希望能帮助到其它爬虫党。最近出国好多,查找机票价格特别烦,这次又准备买了,正好折腾一下。

网上现有脚本之所以不能执行除了页面改版外还因为携程加入sign签名使得爬取携程的难度大大上升,几乎搜不到可用的脚本,第一次真正写爬虫也希望能贡献给他人做参考。

  • 我的需求

对机票得有一个大概的认识,某一天的最低价各大网站都有提供了,所以我们这里比较的是时间段内的最低价,另外比如一周内的机票铁定贵,不太可能去买两个月以上的机票,当然跟这个脚本没关系。给出搜索后携程会推送最低价的机票,那么需求就变成在我计划出行的时间范围内哪一天走最便宜。本来的有网站提供类似时间段的搜索服务,不知道为啥现在没了。

  • 控制台分析和XHR回放

在入手前先看看难度,之前已经搜索了好多携程爬取的文章,发现可以用它的api直接取到航班json,控制台翻找后发现batchFlight这个地址就是,并且通过xhr可以回放。这点很重要,不是携程故意的漏洞,因为没登录也可以查机票,所以如果不让回放服务器就有压力了。既然可以回放那么思路就明确了,构建此XHR即可。

  • 测试脚本构建

XHR是一个Post请求,参数放在payloads中,啥都不说,先来个测试方法,用python来回放。如果回放成功说明我们需要的元素都在这里了,有洁癖的在这一步就可以试着缩减传送参数只传必要的。

def test_sample_request():
session = requests.session()
session.headers = {"hearders": random.choice(agents)}
base_url = "https://flights.ctrip.com/international/search/api/search/batchSearch"
url = base_url
payload = 'xxx payload json data'
headers['user-agent'] = random.choice(agents)
response = requests.post(url, headers=headers, params=params, data=payload.encode('utf-8'))
print(response.status_code)
print(response.content)
  • 确定sign和transactionid

经过上面的代码可以确定的是sign和transactionid缺一不可。transactionid很快发现就在主页的head标签中,通过bs4可以很容易找出来。

  • sign的破解

sign就比较麻烦了,通常的做法分为两种,一种是调试js破解sign的算法,需要大量精力明显不适合我,但是效率高,另一种是selenium模拟浏览器请求把sign拿出来。这里其实有点背道而驰,高手在模拟请求时就可以获取到所有数据才对,但是发现目前最新版的chrom对于子请求并不能获取到数据,从75版本开始不再记录response的数据。这里有的同学会考虑在selenium前面架设proxy,我也试了一下,发现等待子请求完成不是一件确定的事,反倒是模拟请求中获取sign基本没有缺失过,那么稳定为先,获取sign后用request获取json更好,把更多的时间用来分析返回的json上。

代码:

下面附上参考文献地址:https://github.com/today4king/daily-scripts/tree/master/flight-tickets

Python ctypes获取当前所有打开窗口title

Python pywin32获取当前所有打开窗口title

import ctypes
 
EnumWindows = ctypes.windll.user32.EnumWindows
EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int))
GetWindowText = ctypes.windll.user32.GetWindowTextW
GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW
IsWindowVisible = ctypes.windll.user32.IsWindowVisible
 
titles = []
def foreach_window(hwnd, lParam):
    if IsWindowVisible(hwnd):
        length = GetWindowTextLength(hwnd)
        buff = ctypes.create_unicode_buffer(length + 1)
        GetWindowText(hwnd, buff, length + 1)
        titles.append(buff.value)
    return True
EnumWindows(EnumWindowsProc(foreach_window), 0)
 
print(titles)

同理访问所有内部窗口

def foreach_window(hwnd, param):
        if IsWindowVisible(hwnd):
                length = GetWindowTextLength(hwnd)
                buff = create_unicode_buffer(length + 1)
                GetWindowText(hwnd, buff, length + 1)
                titles.append(buff.value)
        return True
win32gui.EnumChildWindows(mainwnd, foreach_window, None)
print(titles)

Win32 Python: Getting all window titles

对Flask 初始化过程的 profile

如果是普通的flask页面profile建议使用WSGI Application Profiler

它会自动分析每一个页面,并profile,内部也是cprofile实现。

针对初始化过程只能手动使用cProfile:

python -m cProfile -o profiling run_web.py

等到初始化完毕再进入python ide:

>>> import pstats
>>> stats = pstats.Stats(‘profiling’)
>>> stats.sort_stats(‘time’).print_stats(10)