汇总系列:http://www.javashuo.com/article/p-dojeygnv-gw.htmlhtml
Python3 与 C# 基础语法对比:http://www.javashuo.com/article/p-dwdjxhac-g.html
python
新增直接运行py文件的补充:请在py前面加上:#!/usr/bin/env python3 而后再执行 sudo chmod +x ./task.py 下次运行直接 ./task.py
linux
平时常常用定时提醒来提升工做效率,到了Linux。。。。蒙圈了,之前C#写的不能跨平台啊,因而就有了这篇文章~(有些人喜欢用番茄工做法,这个算是个福利了)git
跳转到Python:http://www.javashuo.com/article/p-wsvejssb-q.htmlgithub
先NetCore吧:(old code:me)shell
核心代码:Process.Start("notify-send", "友情提醒 10分钟过去了");json
原理说明:调用了ubuntu的notify-send的弹窗提醒,本身控制循环和定时ubuntu
补充知识: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("精力有限,暂不支持"); } } } }来走一个流程:(基本上跟官网走一遍,我贴几个连接和图)
我之前写的文章:http://www.javashuo.com/article/p-gamwcnkv-em.html
官方文档(多看看官方文档):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 time while 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:(有些人在微信公众号问我,shell怎么获取时间,我这边改了下shell代码)【其实shell方便之处在于直接执行系统命令,系统获取时间:date,那shell加一行便可】
while : do date sleep 600 echo -e '\a' notify-send 友情提醒 已通过了10分钟了 done
知识点补充:
直接输入
python
进入交互模式,至关于启动了Python解释器,可是等待你一行一行地输入源代码,每输入一行就执行一行。直接运行
.py
文件至关于启动了Python解释器,而后一次性把.py
文件的源代码给执行了,你是没有机会以交互的方式输入源代码的。
#!/usr/bin/env python3 import os import time from multiprocessing.dummy import Pool def move_screen(): """旋转屏幕来提示""" os.system("xrandr -o left") # 左旋转90度 # 下面两行应该不用加,防止锁屏时出现Bug,就加上了 time.sleep(2) os.system("xrandr -o normal") # 恢复正常 # 大概多少秒(n的整数倍较好)PS:def reset(n) global_how_time = 240 global_time = 0 # 开始播放时间(全局临时变量) def play_music(): """播放音乐来提醒""" global global_time, global_how_time # os.system("mpv ~/音乐/莫问明天.mp3") if global_time > global_how_time: global_time = 0 # 防止超出时间 os.system(f"mpv ~/音乐/莫问明天.mp3 --start={global_time}") def reset(n=1): """友情提醒""" os.system("xrandr -o normal") # 恢复正常 time.sleep(n) global global_time global_time += n # 继续播放 os.system("pkill mpv") # 关闭音乐 print("等待下一次拥抱...") if __name__ == "__main__": pool = Pool() while True: print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) time.sleep(1200) # 20 分钟 os.system("notify-send 逆天友情提醒 20分钟过去了") pool.apply_async(play_music) pool.apply_async(move_screen) reset(30) # 休息30s
eg:屏幕旋转,注意恢复命令:xrandr -o normal
#!/usr/bin/env python3 import os import time from multiprocessing.dummy import Pool def move_screen(): """旋转屏幕来提示""" os.system("xrandr -o left") # 左旋转90度 # time.sleep(2) # os.system("xrandr -o normal") # 恢复正常 def play_music(): """播放音乐来提醒""" os.system("mpv ~/音乐/莫问明天.mp3") def reset(n=1): """友情提醒""" os.system("xrandr -o normal") # 恢复正常 time.sleep(n) os.system("pkill mpv") # 关闭音乐 print("等待下一次拥抱...") if __name__ == "__main__": pool = Pool() while True: print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) os.system("notify-send 逆天友情提醒 10分钟过去了") pool.apply_async(play_music) pool.apply_async(move_screen) reset(10) time.sleep(600)
我稍微说下Linux平常使用的体验,能够略过这段:(这段放最后吧,否则认为我是打广告的就不太好了o((>ω< ))o)
之前开发环境都是Win10或者Win系列,后来Net跨平台了,慢慢的开发专用笔记本也换成了Ubuntu,关于Linux基础和环境等就不说了,能够看我之前写的文章(http://www.javashuo.com/article/p-dojeygnv-gw.html)
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)】
回头可能考虑再开发一个水印工具,之前开发的用惯了:https://github.com/dunitian/DNTLive/tree/master/Software/WaterMarkAPP
很久没写文章了,写个文章好慢。。。