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