用Python3、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台两种发布方式)...
Python3 与 NetCore基础语法对比:https://www.cnblogs.com/dunitian/p/9103673.html
彩色版最新版:https://www.cnblogs.com/dotnetcrazy/p/9111200.html
新增直接运行py文件的补充:请在py前面加上:#!/usr/bin/env python3 然后再执行 sudo chmod +x ./task.py 下次运行直接 ./task.py
平时经常用定时提醒来提高工作效率,到了Linux。。。。蒙圈了,以前C#写的不能跨平台啊,于是就有了这篇文章~(有些人喜欢用番茄工作法,这个算是个福利了)
跳转到Python:https://www.cnblogs.com/dotnetcrazy/p/9111200.html#python
先NetCore吧:(old code:me)
核心代码:Process.Start("notify-send", "友情提醒 10分钟过去了");
原理说明:调用了ubuntu的notify-send的弹窗提醒,自己控制循环和定时
补充知识:RuntimeInformation.IsOSPlatform(OSPlatform.xxx) 这个来判断是什么系统,OSPlatform是一个结构体
定时提醒:Thread.Sleep(new TimeSpan(0, 10, 0));
代码比较简单就不详说了,主要讲讲环境部署+发布
using System; using System.Threading; using System.Diagnostics; using System.Runtime.InteropServices;//Old: https://github.com/dunitian/DNTLive/blob/master/Software/LoTTimer/Program.cs namespace netcore {class Program{static void Main(string[] args){while (true){try{Console.WriteLine(DateTime.Now.ToString());Thread.Sleep(new TimeSpan(0, 10, 0));MyBeep();}catch{//异常还不结束?break;}}}private static void MyBeep(){if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)){Console.WriteLine("当前系统为Linux");Process.Start("notify-send", "友情提醒 10分钟过去了");//用shell启动指定程序+命令//Process.Start(new ProcessStartInfo("notify-send", "友情提醒 10分钟过去了") { RedirectStandardOutput = true });}else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)){Console.WriteLine("当前系统为Windows");// frequency:提示音的频率,介于 37 到 32767 赫兹之间。// duration:提示音的持续时间,以毫秒为单位。Console.Beep(500, 1500);}else{Console.WriteLine("精力有限,暂不支持");}}} }
来走一个流程:(基本上跟官网走一遍,我贴几个链接和图)
我以前写的文章:https://www.cnblogs.com/dunitian/p/6745562.html#netcore2.1
官方文档(多看看官方文档):https://www.microsoft.com/net/download/linux-package-manager/ubuntu18-04/sdk-current
2.创建一个netcore的console应用:dotnet new console
3.安装VSCode(直接下载安装deb包即可):http://www.cnblogs.com/dunitian/p/6661644.html
4.安装VSCode的C#扩展
5.打开刚才那个文件夹,F5试运行一下,新版的貌似不用自己配置运行路径什么的了
6.刚才代码贴了,coding一下。调试运行什么的和win下没什么大区别
7.1发布吧,讲一下官方推荐的发布方式(适合开发人员),到项目目录下,Ctrl+ALT+T调出终端==》 dotnet publish –c release
参考:https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-cli
这种轻量级方式发布,把这两个文件弄出去就ok了
运行效果:dotnet xxx.dll,如果你改了程序名字,对应配置名字也记得改哦~
7.2发布第二种方式【很多人不是开发人员也不想装runtime】(指定应用程序运行时(自宿主应用),这种方式将会把指定平台的Core CLR打包进去):
发布前先做一件事情,添加你需要支持的哪些系统,我这边win10和Ubuntu18就好了(别忘了)
在<PropertyGroup>标签里面添加<RuntimeIdentifiers>win10-x64;ubuntu.18.04-x64;</RuntimeIdentifiers>
系统命名以及系统支持参考:(貌似Android也是支持的)
https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog
https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json
修复依赖+发布指定系统的runtime:dotnet publish -c Release -r ubuntu.18.04-x64
其实netcore2.x系列不用再输入restore了,它会自动执行restore
自托管的包挺大的
发现自动生成了个netcore无后缀文件,而且是可执行文件【为基础薄弱的同志普及下:1.看颜色 2.ll 查看有没有执行权限】,直接运行就OK了
来试着发布一个win10的:dotnet publish -c Release -r win10-x64
拖到win10来测试~ok,可以跨平台(其他平台一样,发布的时候换下操作系统即可)
这次轮到Python了
其实核心代码都差不多,几句话解决
import os import timewhile True:print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))time.sleep(600)os.system("notify-send 友情提醒 10分钟过去了")
运行(其实你可以自己把他设置为可执行程序【chmod +x ./task.py】,这样在终端中直接./task.py就运行了)
补充:请在py前面加上:#!/usr/bin/env python3
Shell:
while : dosleep 600echo time pastnotify-send 友情提醒 已经过了10分钟了echo -e '\a' done
我稍微说下Linux日常使用的体验,可以略过这段:(这段放最后吧,不然认为我是打广告的就不太好了o((>ω< ))o)
以前开发环境都是Win10或者Win系列,后来Net跨平台了,慢慢的开发专用笔记本也换成了Ubuntu,关于Linux基础和环境等就不说了,可以看我以前写的文章(https://www.cnblogs.com/dunitian/p/4822808.html#linux)
Linux基本上还用的惯,之前开发工具突然间从VS变成了JetBrains Rider (Netcore的Console程序在linux下有时候有些莫名错误,所以才搭上了Rider)和 VSCode,陡然间稍有不适,用了几天就熟悉了。所以开发相关的Linux基本上和Win差不多。
关键是日常比较蛋疼,贴个常用deb安装包,https://pan.baidu.com/s/1kVI8eft 这个就不细说了可以参考我以前在Ubuntu16.04上发的文章(http://www.cnblogs.com/dunitian/p/6670560.html),截图自带的勉强能用Alt+PrtScr,用不惯可以用国产deepin-screenshot或者用hotshots也行。播放器可以自己安装一下:sudo apt-get install smplayer
其他的其实也没啥了,文档有WPS,音乐有网易云,输入法有搜狗,词典可以选择有道,浏览器反正谷歌嘛。暂时不需要Linux版的录屏软件(有好的可以推荐哦~)【记得我前面讲dock的时候提过一款(http://www.cnblogs.com/dunitian/p/6681832.html)】
用Python3、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台两种发布方式)...相关推荐
- 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器...
[索引页] [×××] 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器 作者:webabcd 介绍 Silverlight 2.0 ...
- java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)
java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- 用Rax开发一个联想搜索输入框,内附封装后的npm组件
来淘系实习已经一个半月了,在这里接触了一个之前未了解过的开发框架:Rax.从最开始拿到需求看着Rax一脸蒙蔽,到现在渐渐熟悉用Rax做开发,这个过程中也让我遇到了Rax的大大小小的问题.下面就来分享一 ...
- 开发一个会叫自己“爷爷”的“孙子”,是一种什么样的体验?
独居的生活很是无聊,如果有什么成精的东西和我聊聊天就好了- "独居的生活很是无聊,如果有什么成精的东西和我聊聊天就好了",基于这个独特的想法,我,决定让某一样东西成精,赋予它阅读指 ...
- Vue 开发一个简略版的飞机大战小游戏
文章目录 使用 Vue 开发一个简略版的飞机大战小游戏 一.实现思路 二.所需知识点 三.实现步骤 使用 Vue 开发一个简略版的飞机大战小游戏 如题,假设你为了向更多访问你博客的人展示你的技术,你决 ...
- 编程语言用 Java 开发一个打飞机小游戏(附完整源码)
编程语言用 Java 开发一个打飞机小游戏(附完整源码) 上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过 ...
- Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比 标签: AndroidAsyncTaskThreadPool异步加载view 2 ...
- Linux工作计时提醒软件,使用Ubuntu命令完成定时提醒功能(预防rsi)
使用Ubuntu命令完成定时提醒功能(预防rsi) Unix/Linux 的哲学是: 提供各种灵活的组件, 你通过类似叠积木的方式去组装其这些组件来完成你所要完成的任务. 因此,通常只要你能看到的各种 ...
- 初始化一个java空数组_Java 数组的两种初始化方式
一.数组 1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就 ...
最新文章
- 记录Linux下的钓鱼提权思路
- ISA Server 2006排错最佳实践
- android动画view上移,在Android开发中使用View制作一个引导动画
- HTML和CSS进阶
- Android图片加载之初步认识bitmap
- mfc在调整界面时左边的控件会丢失_Qt项目中如何完成一个漂亮的界面
- 洛谷P2770 航空路线问题(费用流)
- ubuntu12.04 Struts2 配置过程中出现的错误
- 【CometOJ】CometOJ#8 解题报告
- matlab三水箱,基于MATLAB的三容水箱液位串级控制系统的设计(毕业设计)
- 美国计算机专业nlp大学排名,美国人工智能专业排名前7的一流学府 看看哪所院校最令你心动吧!...
- 神战奇迹私服进游戏选择服务器显示数字,最新mu手游奇迹sf发布
- spss进行相关性分析
- 《如何高效阅读一本书》学习笔记
- 记毕业季——回忆四年大学,青春无悔【正能量】
- 用Python打造属于自己的“今日头条” | 一个非常适合练手的全栈项目
- ArcGIS GeoEvent 使用教程(二)
- 大连东软c语言编程题,大连东软信息学院C语言实验一 windows基本操作和turboc使用答案.doc...
- jzoj5983. 【北大2019冬令营模拟2019.1.1】多边形 (组合数学)
- 将一个文件复制到另外一个文件中
热门文章
- mysql怎么测试事物_mysql事务简单测试
- rust投递箱连接箱子_灭火器箱存在的必要性
- win10网络邻居看到linux,在Deepin 20系统中网络共享Windows无法访问的另类解决方法...
- python pytest_Python项目的pytest初始化
- 在AI Studio上部署外部可以直接调用的云端服务
- 看看那些令你惊叹的PCB设计艺术
- 关于建立智能车竞赛开发资源中心的汇报PPT
- 如何让Window对话窗口重新获得输入焦点
- c# list集合根据某个字段去重_完美解决c# distinct不好用的问题
- pointcloud 转ptr_ROS学习笔记(三)sensor_msgs::LaserScan转pcl::PointCloud