首頁 資訊 周報(bào)

周報(bào)

來源:泰然健康網(wǎng) 時(shí)間:2025年04月25日 05:23

前言

本篇是對(duì) 2023-04-24 到 2023-04-30 這周生活的記錄與思考。首發(fā)在我的個(gè)人 博客,你可以移步了解更多或者給我留言。

本周二早上跑步右小腿抽筋,跑步暫停了兩天,所以有兩天走路沒有到一萬步。在小腿恢復(fù)之后,繼續(xù)跑步,查看 strava 上的統(tǒng)計(jì),這周總共跑了 27 公里,比上周 41 公里少了 14 公里。

這周空閑時(shí)間就在想,能不能每天自動(dòng)收集個(gè)人的一些數(shù)據(jù),比如,目前我能想到的數(shù)據(jù)包括跑步、走路、體重、編碼、早起等等。

目前是使用 strava app 記錄跑步數(shù)據(jù),通過 running_page 可以實(shí)時(shí)收集我的每天 跑步數(shù)據(jù)。

走路、體重?cái)?shù)據(jù)可以從蘋果健康數(shù)據(jù)獲?。?/p>

編碼數(shù)據(jù)可以從 wakatime 獲?。?/p>

早起的數(shù)據(jù),我目前是通過 ios workflow 自動(dòng)化來實(shí)現(xiàn)的。當(dāng)早起鬧鐘響起時(shí),往 memos 寫入一條記錄。

如果可以獲取到蘋果屏幕使用時(shí)間數(shù)據(jù),則可以從蘋果手機(jī)獲取每日第一次拿起手機(jī)的時(shí)間作為早起時(shí)間(待研究)。

導(dǎo)出蘋果健康數(shù)據(jù)

如何導(dǎo)出蘋果健康數(shù)據(jù)?可以參考這篇文章 想要分析或備份 iPhone 「健康」應(yīng)用數(shù)據(jù)?教你 3 種方法將其導(dǎo)出 。這篇文章提到的 Health Export 工具和 python 腳本我都試過,QS Access 在手機(jī)上沒有找到。

1. Health Export 在線解析

Health Export 是國外一名獨(dú)立開發(fā)者寫的在線解析工具,它專門用于將健康應(yīng)用導(dǎo)出的 XML 文件轉(zhuǎn)換為 CSV 文件。

Health Export 提供了一個(gè) web 網(wǎng)站 可以解析傳蘋果手機(jī)導(dǎo)出的健康數(shù)據(jù)。

如何從 IPhone 手機(jī)導(dǎo)出蘋果健康數(shù)據(jù)呢?您可以通過以下步驟導(dǎo)出這些數(shù)據(jù):

打開“健康”應(yīng)用程序。點(diǎn)擊屏幕右上角的“個(gè)人資料”圖標(biāo)。滾動(dòng)到頁面底部,找到“導(dǎo)出健康數(shù)據(jù)”選項(xiàng),并點(diǎn)擊它。在彈出窗口中選擇要導(dǎo)出的數(shù)據(jù)類型,例如步數(shù)、心率等。點(diǎn)擊“下一步”按鈕。在下一個(gè)頁面中,您可以選擇要導(dǎo)出的時(shí)間范圍。您可以選擇“全部數(shù)據(jù)”或指定日期范圍。點(diǎn)擊“請(qǐng)求導(dǎo)出”按鈕。您將被要求輸入一個(gè)密碼以保護(hù)您的數(shù)據(jù)。輸入密碼后,點(diǎn)擊“下一步”按鈕。在彈出窗口中,您可以選擇將數(shù)據(jù)發(fā)送到您的電子郵件地址或其他應(yīng)用程序。點(diǎn)擊“導(dǎo)出”按鈕。

完成這些步驟后,您的健康數(shù)據(jù)將被導(dǎo)出為一個(gè)可下載的 zip 文件。您可以將其保存到您的設(shè)備上或發(fā)送到其他應(yīng)用程序或云存儲(chǔ)服務(wù)。

將導(dǎo)出的文件 export.xml 上傳到 web 網(wǎng)站 ,稍等片刻可以導(dǎo)出結(jié)果。導(dǎo)出的健康數(shù)據(jù)是一個(gè)指標(biāo)一個(gè) csv 文件,如果想合并數(shù)據(jù),需要做進(jìn)一步處理。

另外,Health Export 也提供了 IOS APP,功能好用,支持選擇指定指標(biāo)數(shù)據(jù)按日期聚合導(dǎo)出為一個(gè) csv,還有定時(shí)導(dǎo)出的功能,遺憾的是需要收費(fèi)。

2、使用 python 腳本

這里使用了 @Radcliffe 提供的開源代碼。目前,Github 可以在國內(nèi)自由訪問,所以直接通過此鏈接下載名稱為 applehealthdata.py 的腳本文件。

然后,將之前下載好的 導(dǎo)出.xml 與該腳本文件放置在同一目錄下方。為了防止報(bào)錯(cuò),這里需要將 導(dǎo)出.xml 更名為 export.xml。

接下來,在該文件夾下打開終端(macOS & Linux)或者命令行工具(Windows),使用 Python 2 執(zhí)行該腳本:

python applehealthdata.py export.xml

稍等片刻,XML 文件就會(huì)被解析為數(shù)個(gè) CSV 文件了。

這里,我對(duì) applehealthdata.py 這個(gè)文件做了一點(diǎn)修改,只導(dǎo)出指定的指標(biāo)的指定列的數(shù)據(jù),修改后的腳本在 applehealthdata.py。目前,我只關(guān)注以下 6 個(gè)指標(biāo):

RECORDS=[ 'BodyFatPercentage', 'BodyMass', 'BodyMassIndex', 'DistanceWalkingRunning', 'LeanBodyMass', 'StepCount' ]

這 6 個(gè)指標(biāo)中文含義分別是:

BodyFatPercentage:脂肪率BodyMass:體重BodyMassIndex:BMI 指數(shù)LeanBodyMass:凈體重DistanceWalkingRunning:走路跑步距離StepCount:走路步數(shù)

導(dǎo)出的列只需要 type、startDate、value 這 3 個(gè):

RECORD_FIELDS = OrderedDict(( # ('sourceName', 's'), # ('sourceVersion', 's'), # ('device', 's'), ('type', 's'), # ('unit', 's'), # ('creationDate', 'd'), ('startDate', 'd'), # ('endDate', 'd'), ('value', 'n'), ))

這樣導(dǎo)出了這 6 個(gè) csv 文件:

BodyMass.csv DistanceWalkingRunning.csv StepCount.csv BodyFatPercentage.csv BodyMassIndex.csv LeanBodyMass.csv

接下來,把這 6 個(gè)文件導(dǎo)入數(shù)據(jù)庫,并進(jìn)行合并處理。數(shù)據(jù)庫我選擇的是 postgres,以上 6 個(gè)文件對(duì)于 6 個(gè)建表語句:

CREATE SEQUENCE IF NOT EXISTS health_id_seq; CREATE TABLE "public"."BodyFatPercentage" ( "id" int4 NOT NULL DEFAULT nextval('health_id_seq'::regclass), "type" varchar, "start_date" timestamp, "value" float8, PRIMARY KEY ("id") ); CREATE TABLE "public"."BodyMass" ( "id" int4 NOT NULL DEFAULT nextval('health_id_seq'::regclass), "type" varchar, "start_date" timestamp, "value" float8, PRIMARY KEY ("id") ); CREATE TABLE "public"."BodyMassIndex" ( "id" int4 NOT NULL DEFAULT nextval('health_id_seq'::regclass), "type" varchar, "start_date" timestamp, "value" float8, PRIMARY KEY ("id") ); CREATE TABLE "public"."DistanceWalkingRunning" ( "id" int4 NOT NULL DEFAULT nextval('health_id_seq'::regclass), "type" varchar, "start_date" timestamp, "value" float8, PRIMARY KEY ("id") ); CREATE TABLE "public"."LeanBodyMass" ( "id" int4 NOT NULL DEFAULT nextval('health_id_seq'::regclass), "type" varchar, "start_date" timestamp, "value" float8, PRIMARY KEY ("id") ); CREATE TABLE "public"."StepCount" ( "id" int4 NOT NULL DEFAULT nextval('health_id_seq'::regclass), "type" varchar, "start_date" timestamp, "value" float8, PRIMARY KEY ("id") );

我想把這 6 個(gè)文件按照日期合并到一個(gè)表中,于是創(chuàng)建 health 表:

CREATE TABLE "public"."health" ( "day" text NOT NULL, "fat_pct" float8, "bmi" float8, "lean_weight" float8, "step_count" float8, "step_distance" numeric, "weight" float8, PRIMARY KEY ("day") );

接下來,通過 sql 合并數(shù)據(jù)插入到 health 表:

insert into health select f.day,t.fat_pct,t.bmi,t.lean_weight,f.step_count,g.step_distance,t.weight from ( select to_char(start_date, 'YYYY-MM-DD') as day,sum("value") step_count from "StepCount" group by to_char(start_date, 'YYYY-MM-DD') ) f left outer join (select to_char(start_date, 'YYYY-MM-DD') as day,round(cast(sum("value") as numeric) ,2) as step_distance from "DistanceWalkingRunning" group by to_char(start_date, 'YYYY-MM-DD') ) g on f.day=g.day left outer join (select a.day,a.weight,e."value" "lean_weight",cast(c."value"*100 as numeric) as "fat_pct",d."value" "bmi" from(select to_char(start_date, 'YYYY-MM-DD') as day,min(start_date) as min_start_date,min(value) as weight from "BodyMass" group by day) aleft outer join "BodyFatPercentage" c on a.min_start_date=c.start_dateleft outer join "BodyMassIndex" d on a.min_start_date=d.start_dateleft outer join "LeanBodyMass" e on a.min_start_date=e.start_dateorder by a.day ) t on t.day=f.day order by f.day asc

最后的數(shù)據(jù)如下:

完整的 csv 文件保存在 health.csv 。有些記錄中體重相關(guān)的數(shù)據(jù)為空,這是因?yàn)轶w重相關(guān)數(shù)據(jù)是通過其他和電子秤關(guān)聯(lián)的 app 寫進(jìn)去的。要想每天都有體重相關(guān)的數(shù)據(jù),則需要每天使用電子稱測(cè)量體重。

得到這份數(shù)據(jù)之后,就可以進(jìn)行統(tǒng)計(jì)了,比如統(tǒng)計(jì)體重的變化、每天走路的步數(shù)等等。

理財(cái)

這周總計(jì)支出 732 元,明細(xì)如下:

4 月 25 日:117 元,100 元加油4 月 26 日:59 元,買藥4 月 28 日:419 元,加油 360 元4 月 29 日:21 元4 月 30 日:116 元

4 月累計(jì)支出共 3048 元,比 3 月支出 3520 元少了 472 元。主要支出來自這幾個(gè):

交通:1177 元,其中 300 元是繳納 ETC 押金餐飲:827 元購物:751 元娛樂:216 元,看電影

健身

四月跑步記錄如下,總計(jì)跑了 16 小時(shí)、125 公里。更詳細(xì)數(shù)據(jù),可以參考我的 跑步主頁。

工作

Effective Java 3 筆記

請(qǐng)參考 《Effective Java 3》筆記 4:用私有構(gòu)造函數(shù)使類不可實(shí)例化 和 《Effective Java 3》筆記 7:排除過時(shí)的對(duì)象引用。

FlexyPool

FlexyPool 是一個(gè)用于監(jiān)控?cái)?shù)據(jù)庫連接池的開源工具。它支持監(jiān)控和報(bào)告連接池的使用情況、性能和瓶頸,以及自動(dòng)調(diào)整連接池的大小和行為。FlexyPool 支持多種流行的 Java 數(shù)據(jù)庫連接池,例如 HikariCP、Tomcat JDBC Pool、C3P0、BoneCP 等等。

FlexyPool 主要提供以下功能:

監(jiān)控連接池的使用情況,包括連接數(shù)、請(qǐng)求數(shù)、等待時(shí)間、執(zhí)行時(shí)間等等。報(bào)告連接池的性能和瓶頸,例如最慢的查詢、最頻繁的錯(cuò)誤、最短的連接時(shí)間等等。自動(dòng)調(diào)整連接池的大小和行為,以提高性能和減少資源消耗。集成到常見的監(jiān)控工具中,例如 Prometheus、Grafana、InfluxDB 等等。

FlexyPool 的使用相對(duì)簡(jiǎn)單,只需要將其添加到應(yīng)用程序的依賴中,然后配置連接池和 FlexyPool 的參數(shù)即可。例如,如果你正在使用 HikariCP 連接池,可以按照以下步驟配置 FlexyPool:

1、添加 FlexyPool 的依賴到應(yīng)用程序的 pom.xml 文件中:

<dependency> <groupId>com.vladmihalcea.flexypool</groupId> <artifactId>flexy-pool-core</artifactId> <version>2.0.2</version> </dependency>

2、在應(yīng)用程序的配置文件中,配置連接池和 FlexyPool 的參數(shù):

# HikariCP 數(shù)據(jù)庫連接池配置 hikari.dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource hikari.dataSource.url=jdbc:mysql://localhost:3306/mydb hikari.dataSource.user=root hikari.dataSource.password=secret hikari.minimumIdle=10 hikari.maximumPoolSize=20 hikari.idleTimeout=30000 hikari.poolName=hikariPool # FlexyPool 配置 flexyPool.metricsFactory=histogram flexyPool.metric.log.enabled=true flexyPool.metric.log.level=info flexyPool.metric.log.interval=10 flexyPool.metric.prometheus.enabled=true flexyPool.metric.prometheus.port=9090

在這個(gè)配置中,我們首先配置了 HikariCP 連接池的參數(shù),然后配置了 FlexyPool 的參數(shù)。這些參數(shù)包括度量工廠、日志和度量記錄的級(jí)別、度量記錄的間隔、是否啟用 Prometheus 集成等等。

3、在應(yīng)用程序啟動(dòng)時(shí),將 FlexyPool 的代理對(duì)象添加到連接池中:

DataSource dataSource = ...; // 獲取連接池對(duì)象 FlexyPoolDataSource flexyPoolDataSource = new FlexyPoolDataSource<>(dataSource);

在這個(gè)代碼中,我們首先獲取 HikariCP 連接池對(duì)象,然后將其包裝成 FlexyPool 的代理對(duì)象。這樣,所有的數(shù)據(jù)庫操作都將通過 FlexyPool 進(jìn)行代理和監(jiān)控。

Baeldung 網(wǎng)站上有一篇介紹 Spring Boot 中如何使用 FlexyPool 連接池監(jiān)控工具的教程,名為 A Guide to FlexyPool in Spring Boot。

這篇文章首先介紹了 FlexyPool 工具的作用,以及如何將其集成到 Spring Boot 應(yīng)用程序中。FlexyPool 可以監(jiān)控和報(bào)告連接池的使用情況、性能和瓶頸,以及自動(dòng)調(diào)整連接池的大小和行為,以提高性能和減少資源消耗。

然后,文章介紹了如何在 Spring Boot 應(yīng)用程序中使用 FlexyPool。具體步驟包括:

添加 FlexyPool 的依賴到應(yīng)用程序的 pom.xml 文件中。配置連接池和 FlexyPool 的參數(shù),例如 HikariCP 連接池的參數(shù)、FlexyPool 的度量工廠、日志和度量記錄的級(jí)別、度量記錄的間隔、是否啟用 Prometheus 集成等等。創(chuàng)建 FlexyPoolDataSource 對(duì)象,作為連接池的代理對(duì)象。該對(duì)象將自動(dòng)創(chuàng)建和管理連接池,并使用 FlexyPool 工具進(jìn)行監(jiān)控和調(diào)整。在應(yīng)用程序中使用連接池,例如獲取連接、執(zhí)行 SQL 語句、關(guān)閉連接等等。

最后,文章總結(jié)了一些連接池監(jiān)控和優(yōu)化的最佳實(shí)踐,例如:

使用 FlexyPool 工具監(jiān)控連接池的使用情況和性能瓶頸,以及調(diào)整連接池的大小和行為,以提高性能和減少資源消耗。配置連接池和 FlexyPool 的參數(shù),以適應(yīng)應(yīng)用程序的負(fù)載和性能要求。避免連接池泄漏和死鎖等問題,例如及時(shí)關(guān)閉連接、設(shè)置合理的超時(shí)時(shí)間等等。

本周分享

大部分有意思的內(nèi)容會(huì)分享在 『ChenSoul Share』Telegram 頻道或者我的 memos 中。我寫了一個(gè) python 腳本從 memos 讀取最近一周的 memos 記錄。

2023-04-28 09:01:43 4 個(gè)文生圖 AI 工具 查看鏈接 #memos2023-04-27 13:29:50 這是 Jony Ive 的 LoveFrom 團(tuán)隊(duì)出品的一本關(guān)于喬布斯的書,書中幾乎全部引用喬布斯自己的話,沒有解讀,更加「原汁原味」,同時(shí)也收錄了一些珍貴的照片。 查看鏈接 查看鏈接 #memos2023-04-27 09:52:58 Alpine, Tailwind, Deno, SQLite 我的本地服務(wù)四件套 查看鏈接 Update: 用 Remix 替代了 Alpine 和 Deno,確實(shí)方便。 #web #memos2023-04-27 08:32:37 FlexyPool 是一個(gè)用于監(jiān)控?cái)?shù)據(jù)庫連接池的開源工具。它支持監(jiān)控和報(bào)告連接池的使用情況、性能和瓶頸,以及自動(dòng)調(diào)整連接池的大小和行為。FlexyPool 支持多種流行的 Java 數(shù)據(jù)庫連接池,例如 HikariCP、Tomcat JDBC Pool、C3P0、BoneCP 等等。 FlexyPool 主要提供以下功能: 監(jiān)控連接池的使用情況,包括連接數(shù)、請(qǐng)求數(shù)、等待時(shí)間、執(zhí)行時(shí)間等等。 報(bào)告連接池的性能和瓶頸,例如最慢的查詢、最頻繁的錯(cuò)誤、最短的連接時(shí)間等等。 自動(dòng)調(diào)整連接池的大小和行為,以提高性能和減少資源消耗。 集成到常見的監(jiān)控工具中,例如 Prometheus、Grafana、InfluxDB 等等。 查看鏈接 #java #memos2023-04-27 07:24:03 人一生中最重要的兩天就是出生那天和發(fā)現(xiàn)人生目標(biāo)的那天。 ——馬克吐溫 #摘錄2023-04-25 20:07:58 受 查看鏈接 啟發(fā),在 iPhone 上,創(chuàng)建了一個(gè)自動(dòng)化捷徑。當(dāng)早起鬧鈴響起時(shí),往 memos 發(fā)送一條早起記錄,內(nèi)容如下: 早起時(shí)間:2023 年 4 月 25 日 20:02 今日語錄: 有些事情本身我們無法控制,只好控制自己。 起床啦,喝杯咖啡,去跑步,每天進(jìn)步一點(diǎn)點(diǎn)。 #memos2023-04-25 08:57:03 【怎樣種時(shí)間的種子?】 時(shí)間不夠用,如何種時(shí)間的種子? 1.走電梯時(shí)耐心等候自動(dòng)關(guān)門,讓更多的人進(jìn)來,節(jié)約了他們的時(shí)間。(這還是一顆空間、房子的種子) 2.幫父母完成她的心愿或者事務(wù)性工作。 3.教會(huì)家里的小孩子如何節(jié)約父母的時(shí)間,這個(gè)就非常高級(jí)了。 4.路上隨手撿走垃圾、不亂扔垃圾,讓清潔工人有更多的時(shí)間。 5.幫助老師或者有更多能量的平臺(tái)做事情。 6.經(jīng)常性的做義工。 7.打電話長(zhǎng)話短說,簡(jiǎn)潔明了節(jié)約對(duì)方的時(shí)間。 8.微信盡可能用打字,讓對(duì)方快速簡(jiǎn)單地知道事情。 9.開會(huì)提前到,至少準(zhǔn)時(shí)到,千萬不能遲到,會(huì)議遲到,那種下的都是巨大的種子。 10.開車讓人,騰出時(shí)間給別人。 11.開心收拾家務(wù),讓家人更加容易找到東西。 12.主動(dòng)收拾公共辦公區(qū)域,讓同事快速有效工作。 13.不閑聊八卦浪費(fèi)別人時(shí)間(這顆閑聊八卦的壞種子,還會(huì)讓你在工作中沒有人聽從你的好意見,缺乏領(lǐng)導(dǎo)力) 14.參加任何會(huì)議提前準(zhǔn)備,積極回應(yīng)。 15.與別人分享時(shí)間的管理工具,分享獲得富裕時(shí)間的好種子,這可也是法布施的好種子。 16.提醒、幫助或者關(guān)注拖延癥的朋友。 17.不爽約父母安排的聚餐吃飯,不回家吃飯?zhí)崆罢f。(恩田的大種子) 18.鼓勵(lì)別人的夢(mèng)想,真誠由心地贊美別人。 #金剛智慧2023-04-24 19:21:02 有一個(gè)想法,可以寫一段腳本從 telegram 或者 memos 讀取上周的分享記錄,然后,轉(zhuǎn)換為 markdown 格式發(fā)布在周報(bào)中。這樣,周報(bào)就可以變成半自動(dòng)化了。 于是,寫了一個(gè) python 腳本實(shí)現(xiàn)了從 memos 讀取記錄。 #skill2023-04-24 17:26:52 晚唐李商隱的《錦瑟》 錦瑟無端五十弦,一弦一柱思華年。 莊生曉夢(mèng)迷蝴蝶,望帝春心托杜鵑。 滄海月明珠有淚,藍(lán)田日暖玉生煙。 此情可待成追憶,只是當(dāng)時(shí)已惘然。 #詩詞2023-04-24 14:07:04 使用一行代碼為網(wǎng)站的輸入框增加上 AI 能力。 查看鏈接 #skill2023-04-24 14:04:23 平常是糊里糊涂的,現(xiàn)在變得出人意外的小心謹(jǐn)慎,這正是由于報(bào)復(fù)的欲望,而這種欲望多么能夠鍛煉人! —— 大仲馬 #摘錄2023-04-24 14:03:59 使人疲乏的不是遠(yuǎn)方的深谷,而是鞋子里的一粒沙子。 —— 伏爾泰 #摘錄2023-04-24 11:00:30 《Effective Java 3》筆記:避免創(chuàng)建不必要的對(duì)象 #blog 查看鏈接2023-04-24 08:20:31 使用 Python 實(shí)現(xiàn) RSS 轉(zhuǎn) Newsletter. 查看鏈接 #python

以上。

Related content

2023-12-28|今天做了什么2023-12-27|今天做了什么2023-12-22|今天做了什么2023-12-21|Spring Security對(duì)OAuth2的支持及實(shí)現(xiàn)方式2023-12-20|Maven配置繼承和生命周期、源碼運(yùn)行Nacos 2.3.0控制臺(tái)2023-12-19|Spring Security OAuth2配置JWT、Github Actions配置代碼掃描2023-12-18|使用Spring Security實(shí)現(xiàn)OAuth2授權(quán)和認(rèn)證2023-12-15|JNDI InitialContext源碼分析、ClassLoader加載機(jī)制2023-12-14|購買新的VPS服務(wù)器、最近在做什么2023-12-13|發(fā)布到Maven中央倉庫的第一個(gè)項(xiàng)目

相關(guān)知識(shí)

健康周報(bào)訂報(bào),健康周報(bào)訂閱,郵發(fā)5
如何寫日?qǐng)?bào)周報(bào)
蘇周到學(xué)生健康申報(bào)
孕嬰童周報(bào)
北京衛(wèi)健委發(fā)布20周疫情周報(bào):新冠連續(xù)4周列榜首
寵業(yè)周報(bào)
蘇周到學(xué)生健康申報(bào)指南
醫(yī)藥健康行業(yè)周報(bào)
《老年健康報(bào)》:每周四與健康相遇
心理健康宣傳周手抄報(bào)【精選6張】

網(wǎng)址: 周報(bào) http://m.u1s5d6.cn/newsview1177459.html

推薦資訊