Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
西安一碼通“崩”過2次,網(wǎng)上“聲討”聲一片,這可能是個(gè)綜合性問題。單純從技術(shù)角度來說,可見技術(shù)在關(guān)鍵時(shí)刻的作用,作為同行,個(gè)人深感壓力巨大,責(zé)任巨大。
截止博客發(fā)表日期,網(wǎng)上關(guān)于為什么會(huì)“崩潰”的解釋很多,其中有一篇匯集了眾多“技術(shù)大咖”的討論結(jié)果,就個(gè)人淺見,這些討論恨不得把所有的應(yīng)對(duì)大數(shù)據(jù)、高流量的技術(shù)都加進(jìn)去。
不妨帶著你們,單純從技術(shù)視角,一步一步來“猜測(cè)”這個(gè)二維碼背后的故事。這里會(huì)持續(xù)更新,看看我們最終能了解到什么層面。
不妨用平和的心態(tài)從技術(shù)視角來一步一步了解一碼通。
使用“草料二維碼”掃描【我的一碼通】后,解析出來的是個(gè)登錄界面:
網(wǎng)址如下:
https://data.xa.gov.cn/ptrace/view/login.html?
code=902068esc6a7cde2dfa2979d731c3544b04cc1c516b0c04
dfpdff0ac6237ss30995b7f29fa2de3e3fc14a3
從網(wǎng)址可以得到以下信息:
二維碼表包含的信息做了安全防護(hù),我們?cè)L問后的鏈接是:防疫人員的登錄界面。
https://data.xa.gov.cn/ptrace/view/login.html
毫無(wú)疑問,背后做了【認(rèn)證和鑒權(quán)】。這個(gè)界面網(wǎng)址.cn結(jié)尾,表明政府部門,從網(wǎng)頁(yè)下方可看到具體部門。
可以推測(cè):在【認(rèn)證】和【鑒權(quán)】模塊,需要有一個(gè)【防疫監(jiān)督員】的角色。
試想一下,那么多核酸監(jiān)測(cè)點(diǎn),每個(gè)采集核酸“拭子”的“點(diǎn)位”都需要分配一個(gè)【防疫監(jiān)督員】的賬號(hào),光是賬號(hào)分配管理,就是個(gè)“艱巨”的工作。
code=902168esc6a7cde2dffda2979d73fdac35554b04cc1c516b0c04dfpdff0ac6237ss30995b7f29fa2de3e3fc14a0
PS: code已做部分修改
后臺(tái)通過這個(gè)code參數(shù),應(yīng)該可以解析“我”的這些信息:
idCard(gender、birthDay、age)、name
打開二維碼的時(shí)候的位置信息(經(jīng)緯度)
當(dāng)前“亮碼”的時(shí)間
認(rèn)真看一下這個(gè)code,前面是數(shù)字,這個(gè)數(shù)字不知道是否有特殊的含義,
【902168】,不過從設(shè)計(jì)角度考慮,這個(gè)code是應(yīng)該有一定的【編寫規(guī)則的】,通過code可能會(huì)允許很直白的看到一些可以公示出來的一些信息。不妨猜測(cè)一下,這個(gè)code是一個(gè)序號(hào),筆者多次掃描,發(fā)現(xiàn)未發(fā)生變化,可見是個(gè)固定的值,具體含義暫不清楚。
每個(gè)人的一碼通數(shù)據(jù),最終要到上一級(jí)部門、各市的數(shù)據(jù)會(huì)到省、到國(guó)家,如果可能的話,部分?jǐn)?shù)據(jù)可能還會(huì)和國(guó)際接軌(個(gè)人推測(cè))
從技術(shù)角度來看,涉及部門多,單位多意味著數(shù)據(jù)交互方多。一旦交互方面比較多,會(huì)極大增加溝通成本。
舉個(gè)簡(jiǎn)單的例子:
公司:A
部門1-市級(jí):G1
部門2-省級(jí):G2
部門3-國(guó)家級(jí) G3
公司:B
公司A有一個(gè)個(gè)自研產(chǎn)品,內(nèi)部迭代到了v3.5,除了第三方的SDK之外,不涉及太多和三方的對(duì)接,這樣的產(chǎn)品單純從和外界互動(dòng)的角度來衡量“復(fù)雜性”是簡(jiǎn)單很多的;
假如現(xiàn)在A中標(biāo)需要開發(fā)這個(gè)【一碼通】產(chǎn)品,那么數(shù)據(jù)流向和互動(dòng)會(huì)復(fù)雜一些:
現(xiàn)在需要和G1對(duì)接,部分?jǐn)?shù)據(jù)要從G1獲取;然后數(shù)據(jù)->G1 ;
G1-> G2,G2-> G3。數(shù)據(jù)量會(huì)從小到大,背后還需要大數(shù)據(jù)相關(guān)部門參與。
由于時(shí)間緊迫,A需要和B合作才能快速推出部分功能,數(shù)據(jù)流向可能會(huì)增加:
B -> G1。A->B B->A等
大體這樣一想,數(shù)據(jù)流復(fù)雜了,業(yè)務(wù)自然就復(fù)雜了,對(duì)技術(shù)的要求會(huì)高很多,具體要求是什么,還有待根據(jù)新聞和個(gè)人思考進(jìn)一步剖析。
通過1)二維碼信息,我們已經(jīng)知道【我的一碼通】背后是一個(gè)網(wǎng)址:
https://data.xa.gov.cn/ptrace/view/login.html
這個(gè)網(wǎng)址攜帶了一個(gè)包含【個(gè)人信息的】”code“參數(shù),這個(gè)參數(shù)包含了你相關(guān)的信息。
繼續(xù)"研究下"這個(gè)網(wǎng)址,去掉:login.html后會(huì)發(fā)現(xiàn)進(jìn)入到了一個(gè)功能很多的界面:
https://data.xa.gov.cn/ptrace/view/
回頭來看,【我的電子碼】只是眾多功能中”微小“的一個(gè)。所以,如果你覺得"一碼通"是個(gè)很"簡(jiǎn)單"的業(yè)務(wù),那可能就有點(diǎn)小瞧了。
繼續(xù)從網(wǎng)址入手,去掉/view之后發(fā)現(xiàn):
https://data.xa.gov.cn/ptrace/
這說明背后用到了Nginx,且Nginx的版本是:1.16.1。從官網(wǎng)看最新版本是1.21.5。
可以推測(cè),前端可能使用Nginx部署的,至于是否使用了Nginx來做負(fù)載,暫未看出"蛛絲馬跡"。
后續(xù)如何,請(qǐng)聽下回分解……
者: 俊欣
來源:關(guān)于數(shù)據(jù)分析與可視化
今天小編來為大家安利另外一個(gè)用于繪制可視化圖表的Python框架,名叫Dash,建立在Flask、Plotly.js以及React.js的基礎(chǔ)之上,在創(chuàng)建之出的目的是為了幫助前端知識(shí)匱乏的數(shù)據(jù)分析人員,以純Python編程的方式快速制作出交互特性強(qiáng)的數(shù)據(jù)可視化大屏,在經(jīng)過多年的迭代發(fā)展,如今不僅僅可以用來開發(fā)在線數(shù)據(jù)可視化作品,即便是輕量級(jí)的數(shù)據(jù)儀表盤、BI應(yīng)用甚至是博客或者是常規(guī)的網(wǎng)站都隨處可見Dash框架的影子,今天小編就先來介紹一下該框架的一些基礎(chǔ)知識(shí),并且來制作一個(gè)簡(jiǎn)單的數(shù)據(jù)可視化大屏。
我們先來了解一下Dash框架中的兩個(gè)基本概念
Layout顧名思義就是用來設(shè)計(jì)可視化大屏的外觀和布局,添加一些例如下拉框、單選框、復(fù)選框、輸入框、文本框、滑動(dòng)條等組件,其中Dash框架對(duì)HTML標(biāo)簽也進(jìn)行了進(jìn)一步的封裝,使得我們直接可以通過Python代碼來生成和設(shè)計(jì)每一個(gè)網(wǎng)頁(yè)所需要的元素,例如
<div>
<h1>Hello World!!</h1>
<div>
<p>Dash converts Python classes into HTML</p>
</div>
</div>
我們轉(zhuǎn)化成Dash的Python結(jié)構(gòu)就是
html.Div([
html.H1('Hello Dash'),
html.Div([
html.P('Dash converts Python classes into HTML'),
])
])
Callbacks也就是回調(diào)函數(shù),基本上是以裝飾器的形式來體現(xiàn)的,實(shí)現(xiàn)前后端異步通信的交互,例如我們?cè)邳c(diǎn)擊按鈕或者下拉框之后出現(xiàn)的功能就是通過回調(diào)函數(shù)來實(shí)現(xiàn)的。
在導(dǎo)入模塊之前,我們先用pip命令來進(jìn)行安裝,
! pip install dash
! pip install dash-html-components
! pip install dash-core-components
! pip install plotly
然后我們導(dǎo)入這些剛剛安裝完的模塊,其中dash-html-components用來生成HTML標(biāo)簽,dash-core-components模塊用來生成例如下拉框、輸入框等組件,這里我們還需要用到plotly模塊,因?yàn)槲覀冃枰玫降臄?shù)據(jù)來自該模塊,里面是一眾互聯(lián)網(wǎng)公司過去一段時(shí)間中股價(jià)的走勢(shì)
import dash
import dash_html_components as html
import dash_core_components as dcc
import plotly.graph_objects as go
import plotly.express as px
那么我們讀取數(shù)據(jù)并且用plotly來繪制折線圖,代碼如下
app = dash.Dash() #實(shí)例化Dash
df = px.data.stocks() #讀取股票數(shù)據(jù)
def stock_prices():
# 繪制折線圖
fig = go.Figure([go.Scatter(x=df['date'], y=df['AAPL'],
line=dict(color='firebrick', width=4), name='Apple')
])
fig.update_layout(title='股價(jià)隨著時(shí)間的變幻',
xaxis_title='日期',
yaxis_title='價(jià)格'
)
return fig
app.layout = html.Div(id='parent', children=[
html.H1(id='H1', children='Dash 案例一', style={'textAlign': 'center',
'marginTop': 40, 'marginBottom': 40}),
dcc.Graph(id='line_plot', figure=stock_prices())
])
if __name__ == '__main__':
app.run_server()
我們點(diǎn)擊運(yùn)行之后會(huì)按照提示將url復(fù)制到瀏覽器當(dāng)中便可以看到出來的結(jié)果了,如下所示
從代碼的邏輯上來看,我們通過Dash框架中的Div方法來進(jìn)行頁(yè)面的布局,其中有參數(shù)id來指定網(wǎng)頁(yè)中的元素,以及style參數(shù)來進(jìn)行樣式的設(shè)計(jì),最后我們將會(huì)指出來的圖表放在dcc.Graph()函數(shù)當(dāng)中。
然后我們?cè)偬碇靡粋€(gè)下拉框,當(dāng)我們點(diǎn)擊這個(gè)下拉框的時(shí)候,可是根據(jù)我們的選擇展示不同公司的股價(jià),代碼如下
dcc.Dropdown(id='dropdown',
options=[
{'label': '谷歌', 'value': 'GOOG'},
{'label': '蘋果', 'value': 'AAPL'},
{'label': '亞馬遜', 'value': 'AMZN'},
],
value='GOOG'),
output
options參數(shù)中的label對(duì)應(yīng)的是下拉框中的各個(gè)標(biāo)簽,而value對(duì)應(yīng)的是DataFrame當(dāng)中的列名
df.head()
output
最后我們將下拉框和繪制折線圖的函數(shù)給連接起來,我們點(diǎn)擊下拉框選中不同的選項(xiàng)的時(shí)候,折線圖也會(huì)相應(yīng)的產(chǎn)生變化,
@app.callback(Output(component_id='bar_plot', component_property='figure'),
[Input(component_id='dropdown', component_property='value')])
def graph_update(dropdown_value):
print(dropdown_value)
# Function for creating line chart showing Google stock prices over time
fig = go.Figure([go.Scatter(x=df['date'], y=df['{}'.format(dropdown_value)],
line=dict(color='firebrick', width=4))
])
fig.update_layout(title='股價(jià)隨著時(shí)間的變幻',
xaxis_title='日期',
yaxis_title='價(jià)格'
)
return fig
我們看到callback()方法中指定輸入和輸出的媒介,其中Input參數(shù),里面的component_id對(duì)應(yīng)的是下拉框的id也就是dropdown,而Output參數(shù),當(dāng)中的component_id對(duì)應(yīng)的是折線圖的id也就是bar_plot,我們來看一下最后出來的結(jié)果如下
最后,全部的代碼如下所示
日,多位自閉癥孩子家長(zhǎng)反映
他們付費(fèi)為孩子報(bào)名了
機(jī)構(gòu)的康復(fù)訓(xùn)練
但卻突然收到停課通知
令人發(fā)愁
花費(fèi)數(shù)萬(wàn)元在機(jī)構(gòu)報(bào)課
如今說關(guān)就關(guān)?
家長(zhǎng)們表示,他們大都在這家位于浦東南路的“康語(yǔ)星賦能啟智中心”購(gòu)買了100節(jié)課程的套餐,價(jià)值3萬(wàn)元左右,還有人花費(fèi)了4、5萬(wàn)元。如今機(jī)構(gòu)突然關(guān)門,卻并沒有向家長(zhǎng)退款。
記者了解到,“康語(yǔ)星”是一家民辦非企業(yè)單位,其法人代表表示:這家“康語(yǔ)星”是和“上海炬療健康管理公司”合作開設(shè)的,根據(jù)雙方約定,運(yùn)營(yíng)費(fèi)用按比例分?jǐn)偅找嬉舶幢壤殖桑欢图议L(zhǎng)簽定合同的也是“炬療公司”。
但“炬療”稱,公司運(yùn)營(yíng)存在嚴(yán)重問題,資金無(wú)法繼續(xù)到位,由此導(dǎo)致“康語(yǔ)星”無(wú)以為繼。
記者還在現(xiàn)場(chǎng)遇到了幾位機(jī)構(gòu)的老師,他們想來拿些東西,卻被物業(yè)阻止了。物業(yè)表示,該機(jī)構(gòu)拖欠了房租,所以物品不能搬走。
據(jù)了解,老師們大部分是和“上海炬療健康管理公司”簽訂的勞動(dòng)合同。還有老師表示,員工們已經(jīng)好幾個(gè)月沒有收到工資了,社保也是處于斷繳的狀態(tài)。
家長(zhǎng)無(wú)奈
到底哪個(gè)部門可以介入?
記者查詢發(fā)現(xiàn),“康語(yǔ)星”是一家登記在長(zhǎng)寧區(qū)民政局的民辦非企業(yè)單位,主管單位是長(zhǎng)寧區(qū)天山路街道,業(yè)務(wù)范圍是為社區(qū)特殊兒童提供康復(fù)訓(xùn)練。
記者以家長(zhǎng)身份聯(lián)系了長(zhǎng)寧區(qū)民政局,對(duì)方表示,已聯(lián)系了天山街道,并建議家長(zhǎng)找市監(jiān)局或者直接起訴。
記者還注意到,浦東南路這家“康語(yǔ)星”是市殘聯(lián)指定的定點(diǎn)康復(fù)訓(xùn)練基地,孩子們?cè)谶@里進(jìn)行康復(fù)訓(xùn)練可以享受“陽(yáng)光寶寶卡”報(bào)銷補(bǔ)貼。
根據(jù)市殘聯(lián)的微信公眾號(hào)上的介紹:對(duì)于部分“陽(yáng)光寶寶卡”報(bào)銷機(jī)構(gòu)涉及的民辦兒童康復(fù)機(jī)構(gòu),市殘聯(lián)會(huì)聯(lián)合民政局、市場(chǎng)監(jiān)管、區(qū)殘聯(lián)等多部門開展實(shí)地調(diào)查,調(diào)查內(nèi)容包括場(chǎng)地課程、收費(fèi)標(biāo)準(zhǔn)等多個(gè)項(xiàng)目。
那么,殘聯(lián)是否是“康語(yǔ)星”的監(jiān)管單位呢?
對(duì)此,浦東新區(qū)殘聯(lián)表示:“我們沒辦法阻止機(jī)構(gòu)的預(yù)付款行為,但是已經(jīng)產(chǎn)生的康復(fù)訓(xùn)練費(fèi)用,如果符合政策的可以報(bào)銷。”
長(zhǎng)寧區(qū)殘聯(lián)回復(fù):“我們只是檢查它是否在正規(guī)的康復(fù)(訓(xùn)練) 、能否開具發(fā)票等。”
家長(zhǎng):孩子有進(jìn)步
但機(jī)構(gòu)日常運(yùn)營(yíng)就有問題
幾位家長(zhǎng)告訴記者,在這里參加康復(fù)訓(xùn)練后,孩子有進(jìn)步,這讓她們感到十分欣慰。但機(jī)構(gòu)老師的一番話,道出了機(jī)構(gòu)難以持續(xù)維系的原因。
一位培訓(xùn)老師透露,“特殊兒童”的定位就決定了其不可能大規(guī)模招生,雖然采用了預(yù)付費(fèi)模式,但是流動(dòng)資金根本不夠。
針對(duì)“預(yù)付費(fèi)”問題,法律界人士表示:依據(jù)現(xiàn)有規(guī)定,培訓(xùn)機(jī)構(gòu)預(yù)付卡不得一次性收取或以充值、次卡等形式變相收取時(shí)間跨度超過3個(gè)月或60課時(shí)的費(fèi)用,且不得超過5千元。但是民辦非企業(yè)的康復(fù)培訓(xùn)機(jī)構(gòu),卻不在此列。
最新消息:已經(jīng)啟動(dòng)調(diào)查
目前,“康語(yǔ)星”注冊(cè)所在的長(zhǎng)寧區(qū)民政局已經(jīng)啟動(dòng)了對(duì)這家機(jī)構(gòu)的調(diào)查。閔行區(qū)市場(chǎng)監(jiān)管局也表示,已啟動(dòng)了相關(guān)工作,將對(duì)上海炬療健康管理有限公司先行采取必要的限制措施。
特殊兒童的干預(yù)、康復(fù),如果全部由政府部門來承擔(dān),很難做到全面、細(xì)致、豐富,也無(wú)法提供個(gè)性化的選擇。民辦非企業(yè)單位加入進(jìn)來,是很必要的補(bǔ)充,也是家長(zhǎng)們的期盼。但是如何監(jiān)管這類機(jī)構(gòu),還需要進(jìn)一步完善。
綜合自新聞坊
來源: 上海新聞廣播
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。