在Windows PowerShell和Linux Bash上可视化您的实时血糖值和Git提示-程序员宅基地

技术标签: python  java  ubuntu  linux  windows  

image

My buddy Nate become a Type 1 Diabetic a few weeks back. It sucks...I've been one for 25 years. Nate is like me - an engineer - and the one constant with all engineers that become diabetic, we try to engineer our ways out of it. ;) I use an open source artificial pancreas system with an insulin pump and continuous glucose system. At the heart of that system is some server-side software called Nightscout that has APIs for managing my current and historical blood sugar. It's updated every 5 minutes, 24 hours a day.

几周前,我的好友Nate成为1型糖尿病患者。 糟透了...我已经25年了。 内特(Nate)就像我一样-一位工程师-并且是所有患有糖尿病的工程师中的一个不变的人,我们试图从中脱颖而出。 ;)我使用带有胰岛素泵和连续葡萄糖系统的开源人工胰腺系统。 该系统的核心是一些称为Nightscout的服务器端软件,该软件具有用于管理我当前和历史血糖的API。 每天24小时每5分钟更新一次

I told Nate to get NightScout set up ASAP and start playing with the API. Yesterday Nate added his blood sugar to his terminal prompt!

我告诉Nate尽快设置NightScout并开始使用API​​。 昨天内特(Nate)在终端提示中添加了血糖

I love this. He uses Linux, but I use Linux (Ubuntu) on Windows 10, so I wanted to see if I could run his little node up from Windows (I'll make it a Windows service).

我喜欢这个。 他使用Linux,但是我在Windows 10上使用Linux(Ubuntu),所以我想看看是否可以从Windows运行他的小节点(我将其设为Windows服务)。

Yes, you can run cron jobs under Windows 10's Ubuntu, but only when there is an instance of bash running (the Linux subsystem shuts down when it's not used) and upstart doesn't work yet. I could run it from the .bashrc or use various hacks/workarounds to keep WSL (Windows Subsystem for Linux) running, but the benefit of running this as a Windows Service is that I can see my blood sugar in all prompts on Windows, like Powershell as well!

是的,您可以在Windows 10的Ubuntu下运行cron作业,但仅当有一个bash实例正在运行时(Linux子系统在不使用时关闭),并且upstart尚不起作用。 我可以从.bashrc运行它,也可以使用各种技巧/变通办法使WSL(Linux的Windows子系统)保持运行,但是将其作为Windows服务运行的好处是,我可以在Windows的所有提示中看到血糖值例如Powershell也是如此!

You can install with

您可以安装

npm install -g nightscout-ps1

And then run with

然后运行

nightscout-ps1 -n "my-nightscout-url.com" -c ~/.nightscout-ps1.env

I'll use the "non-sucking service manager (NSSM)" to run Nate's non-Windows-service node app as a Windows service. I ran "nssm install nsprompt" and get this GUI. Then I add the --nightscout parameter and pass in my Nightscout blood sugar website. You'll get an error immediately when the service runs if this is wrong.

我将使用“非吸吮服务管理器(NSSM)”将Nate的非Windows服务节点应用程序作为Windows服务运行。 我运行了“ nssm install nsprompt”并获得了此GUI。 然后,添加--nightscout参数,并将其输入Nightscout血糖网站。 如果这是错误的服务运行时,您将立即得到一个错误。

NSSM Service Installer

From the Log on tab, make sure the service is logged on as you. I login with my MSA (Microsoft Account) so I used my email address. This is to ensure that with the app writes to ~ on Windows, it's putting your sugars in c:\users\LOGGEDINUSER\.

在“登录”选项卡上,确保该服务已随您登录。 我使用MSA(Microsoft帐户)登录,所以我使用了我的电子邮件地址。 这是为了确保应用程序在Windows上写入〜时,可以将您的操作写入c:\ users \ LOGGEDINUSER \。

Next, run the service with "sc start NSPrompt" or from the Services GUI.

接下来,使用“ sc start NSPrompt”或从服务GUI运行服务。

My sugar updater runs in a Windows Service

Nate's node app gets blood sugar from Nightscout and puts it in ~/.bgl-cache. However, to be clear since I'm running it from the Windows side while changing the Bash/Ubuntu on Windows prompt from Linux, it's important to note that from WIndows ~/ is really c:\users\LOGGEDINUSER\ so I changed the Bash .profile to load the values from the Windows mnt'ed drives like this:

Nate的节点应用程序从Nightscout中获取血糖并将其放入〜/ .bgl缓存中。 但是,要明确一点,因为我是从Windows端运行它从Linux更改Windows上的Windows提示符下的Bash / Ubuntu时,需要注意的是,从Windows〜 /实际上是c:\ users \ LOGGEDINUSER \,所以我更改了Bash .profile来从Windows mnt驱动器加载值,如下所示:

eval "$(cat /mnt/c/Users/scott/nightscout-ps1.env)"

Also, you need to make sure that you're using a Unicode font in your console. For example, I like using Fira Code Light, but it doesn't have a single character ⇈ double-up arrow (U+21C8), so I replaced it with two singles. You get the idea. You need a font that has the glyphs you want and you need those glyphs displaying properly in your .profile text file.

另外,您需要确保在控制台中使用Unicode字体。 例如,我喜欢使用Fira Code Light,但它没有单个字符⇈双向箭头(U + 21C8),因此我将其替换为两个单打。 你明白了。 您需要一种具有所需字形的字体,并且您需要这些字形在.profile文本文件中正确显示。

You'll need a Unicode Font

And boom. It's glorious. My current blood sugar and trends in my prompt. Thanks Nate!

和繁荣。 这是光荣的。 我当前的血糖和提示趋势。 谢谢内特!

My sugars!

So what about PowerShell as well? I want to update that totally different prompt/world/environment/planet from the same file that's updated by the service. Also, I already have a custom prompt with Git details since I use Posh-Git from Keith Dahlby (as should you).

那么,PowerShell又如何呢? 我想从服务更新的同一文件中更新完全不同的提示/世界/环境/行星。 另外,由于我使用的是Keith Dahlby的Posh-Git (我也应该这样做),因此我已经有了有关Git详细信息的自定义提示。

I can edit $profile.CurrentUserAllHosts with "powershell_ise $profile.CurrentUserAllHosts" and add a prompt function before "import-module posh-git."

我可以使用“ powershell_ise $ profile.CurrentUserAllHosts”编辑$ profile.CurrentUserAllHosts,并在“ import-module posh-git”之前添加提示功能。

Here's Nate's same prompt file, translated into a PowerShell prompt() method, chained with PoshGit. So I can now see my Git Status AND my Blood Sugar. My two main priorities!

这是Nate的相同提示文件,已转换为PowerShell PossGit的PowerShell hint()方法。 现在,我可以看到我的Git状态和血糖。 我的两个主要优先事项!

NOTE: If you don't use posh-git, you can remove the "WriteVcsStatus" line and the "Import-Module posh-git" and you should be set!

注意:如果您不使用posh-git,则可以删除“ WriteVcsStatus”行和“ Import-Module posh-git”,然后进行设置!

function prompt {
    
Get-Content $ENV:USERPROFILE\.nightscout-ps1.env | %{$bgh = @{}} {if ($_ -match "(.*)=""(.*)""") {$bgh[$matches[1]]=$matches[2].Trim();}}
$trend = "?"

switch ($bgh.latest_entry_direction)
{
"DoubleUp" {$trend="↑↑"}
"SingleUp" {$trend="↑"}
"FortyFiveUp" {$trend=""}
"Flat" {$trend="→"}
"FortyFiveDown" {$trend=""}
"SingleDown" {$trend="↓"}
"DoubleDown" {$trend="↓↓"}
}

$bgcolor = [Console]::ForegroundColor.ToString()
if ([int]$bgh.latest_entry_mgdl -ge [int]$bgh.settings_thresholds_bg_target_top) {
$bgcolor = "Yellow"
} ElseIf ([int]$bgh.latest_entry_mgdl -le [int]$bgh.settings_thresholds_bg_target_bottom) {
$bgcolor = "Red"
} Else {
$bgcolor = "Green"
}

Write-Host $bgh.latest_entry_mgdl -NoNewline -ForegroundColor $bgcolor
Write-Host $trend" " -NoNewline -ForegroundColor $bgcolor
[Console]::ResetColor()

$origLastExitCode = $LASTEXITCODE
Write-Host $ExecutionContext.SessionState.Path.CurrentLocation -NoNewline
Write-VcsStatus
$LASTEXITCODE = $origLastExitCode
"$('>' * ($nestedPromptLevel + 1)) "
}
Import-Module posh-git

Very cool stuff.

很酷的东西。

Blood Sugar and Git in PowerShell!

This concept, of course, could be expanded to include your heart rate, FitBit steps, or any health related metrics you'd like! Thanks Nate for the push to get this working on Windows!

当然,可以将这个概念扩展为包括您的心率,FitBit步骤或您想要的任何与健康相关的指标! 感谢Nate推动在Windows上运行该功能!

翻译自: https://www.hanselman.com/blog/visualizing-your-realtime-blood-sugar-values-and-a-git-prompt-on-windows-powershell-and-linux-bash

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cunfuxiao7305/article/details/109051441

智能推荐

“码农”一词是怎么来的?为什么中国程序员会被码农?程序员和农民有什么关联?-程序员宅基地

文章浏览阅读1.7w次。原创: 思齐大神 来源:蚁开源社区很多同学会问,IT行业在中国并不是特别差的行业,而程序员的工资也并不低,但为什么中国的程序员总被称作码农或者说是苦逼的程序员?中国的程序员生活和欧美的有什么不一样?​先说两个小段子街边,一对情侣在吵架。女孩对男孩说,“我们分手吧!”男孩沉默半天,开口问道,“我能再说最后一句话吗?”“说吧,婆婆妈妈的。”“我会编程……”“会编程有个屁用啊,现在到处都是会编程的人!”男孩涨红了脸,接着说道,“我会编程……我会变成…童话里,你爱的那个天使……”【程序._码农

Java初学者也能看的懂的AQS_aqs对接-程序员宅基地

文章浏览阅读259次。Java初学者也能看的懂的AQS学习AQS之前,你需要了解以下内容,如果不是很清楚,那么理解本文会有点吃力。(Java初学者得会一下内容)synchronizedCASLock前言synchronized首先我们知道synchronized是Java关键字,上锁释放锁等一切操作都是由JVM控制的。我们只能通过虚拟机的C++才能去研究其底层实现。我们除了判断synchronized是作为方法的修饰符,还是当做同步代码块使用以外,没什么需要我们程序员操作的。cas一种自旋的原子操作,也是J_aqs对接

【JZOJ5262】【GDOI2018模拟8.12】树(DP,性质题)_gdoi2018省选模拟树-程序员宅基地

文章浏览阅读460次。DescriptionSolution首先我们可以知道两个性质:1、路径u-v和路径v-w可以合并为路径u-w;2、路径u1-v1加路径u2-v2和路径u1-v2加路径u2-v1是等价的(就是起始点和终点可以互换) 那么知道这些性质之后就很好做了。我们只用知道每个点多少次做起点和多少次做终点。 我们设f[i]表示满足i子树的需求i上的值要是多少。 那么枚举i的所有儿子,判断a[i]-f[i],_gdoi2018省选模拟树

[PTA]7-65 字符串替换 (15 分)含思路_字符串替换pta-程序员宅基地

文章浏览阅读2.8k次,点赞4次,收藏28次。我们进行简单的运算即可实现倒序。_字符串替换pta

linux网络设置_linux如何开启网络连接-程序员宅基地

文章浏览阅读4k次,点赞5次,收藏22次。traceroute 180.101.50.188————————测试到180.101.50.188有多少个网关。vim /etc/sysconfig/static-routes——————————修改。netstat -antp | grep 22———————查看端口号22的相关信息。systemctl restart network————————————重启。systemctl restart network————————重新启动。_linux如何开启网络连接

pr中,视频导入后,视频画面大小显示不完整应该如何解决?_avi视频到pr里会放大-程序员宅基地

文章浏览阅读4w次,点赞23次,收藏6次。本人pr小白,今天编辑视频时候遇到了问题,也解决了,所以分享记录一下。问题一视频下面原来有字幕的,可是导入的视频变大了,现在看不到了怎么办?还有就是,频导入之后画质好像变糊了又是为什么?解决:将箭头放到要编辑的视频那里,右击,然后点击设为帧大小这样完整的视频就出来了。问题二如果视频模糊,就是序列设置的不对 要先新建序列一般的都是1920×1080本人博客:https://blog.csdn.net/weixin_46654114本人b站求关注:https://space.bi_avi视频到pr里会放大

随便推点

SeetaFace2 Android 平台编译_seetafacerecognizer2.0.ats-程序员宅基地

文章浏览阅读4.1k次。SeetaFace2 Android 平台编译项目地址:https://github.com/seetafaceengine/SeetaFace2SeetaFace2 人脸识别引擎包括了搭建一套全自动人脸识别系统所需的三个核心模块,即:人脸检测模块 FaceDetector、面部关键点定位模块 FaceLandmarker 以及人脸特征提取与比对模块 FaceRecognizer。面部关键点定位支持 5 点 和 81 点定位,两个辅助模块 FaceTracker 和 QualityAssessor 用_seetafacerecognizer2.0.ats

Oracle删除约束和主键的语句_oracle删除主键的sql语句-程序员宅基地

文章浏览阅读3.2w次,点赞4次,收藏34次。1.删除约束语句:alter table 表名 drop constraint 约束名;alter table mz_sf4 drop constraint pk_id1;2.删除主键语句:alter table 表名 drop primary key;alter table mz_sf3 drop primary key;如果出错:ORA-02273:此唯一主键已_oracle删除主键的sql语句

MySQL~InnoDB的备份和主从复制-程序员宅基地

文章浏览阅读989次,点赞9次,收藏13次。这份面试题几乎包含了他在一年内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!某位名人说过成功是靠99%的汗水和1%的机遇得到的,而你想获得那1%的机遇你首先就得付出99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!成功只会留给那些有准备的人!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取。

大数据平台核心技术 学堂在线 雨课堂 第八讲作业答案 人文交流月_vertectorization-程序员宅基地

文章浏览阅读2k次。关于Vertectorization哪些是正确的( )相对于其他编程模型,sql在大数据领域有哪些好处( )哪些部分适合做codegen( )关于内存计算描述不正确的有( )_vertectorization

java汉字拼音简码_java生成首字母拼音简码的总结-程序员宅基地

文章浏览阅读306次。百度找到了某论坛高人写的java(具体论坛记不清了),直接用来调用,再次非常感谢,基本上实现了我的需求package MD5;import java.util.Scanner;public class ChineseToPinYin {/*** 汉字转拼音缩写** @param str* 要转换的汉字字符串* @return String 拼音缩写*/public Strin..._java生成拼音码

C++ 数据结构——堆排序_数据结构堆排序c++-程序员宅基地

文章浏览阅读93次。/* 堆排序 */#include <iostream>using namespace std;int *data;void Sift(int k,int last){ int i,j,temp; i=k;j=2*i+1; while (j<=last) { if(j<last&&data[j]<data[j+1]) j++; if(data[i]>data[j]) _数据结构堆排序c++

推荐文章

热门文章

相关标签