JavaScript 框架对比及案例(React、Vue 及 Hyperapp)
在这篇文章中,我将尽可能客观的通过提供一些最小化的例子来比较这三个框架,以展示它们的能力。Media
via https://linux.cn/article-9947-1.html
在这篇文章中,我将尽可能客观的通过提供一些最小化的例子来比较这三个框架,以展示它们的能力。Media
via https://linux.cn/article-9947-1.html
如何用 Python 读取 Outlook 中的电子邮件
我使用一些代码来将 outlook 配置中的所有邮件写入一个临时文件中,现在让我来尝试解释一下这些代码。Media
via https://linux.cn/article-9948-1.html
我使用一些代码来将 outlook 配置中的所有邮件写入一个临时文件中,现在让我来尝试解释一下这些代码。Media
via https://linux.cn/article-9948-1.html
如何用 Python 读取 Outlook 中的电子邮件
Media从事电子邮件营销,准入opt-in邮箱列表是必不可少的。你可能已经有了准入列表,同时还使用电子邮件客户端软件。如果你能从电子邮件客户端中导出准入列表,那这份列表想必是极好的。我使用一些代码来将 outlook 配置中的所有邮件写入一个临时文件中,现在让我来尝试解释一下这些代码。首先你需要导入 win32com.client,为此你需要安装 pywin32:
via https://linux.cn/article-9948-1.html?utm_source=rss&utm_medium=rss
Media从事电子邮件营销,准入opt-in邮箱列表是必不可少的。你可能已经有了准入列表,同时还使用电子邮件客户端软件。如果你能从电子邮件客户端中导出准入列表,那这份列表想必是极好的。我使用一些代码来将 outlook 配置中的所有邮件写入一个临时文件中,现在让我来尝试解释一下这些代码。首先你需要导入 win32com.client,为此你需要安装 pywin32:
pip install pywin32我们需要通过 MAPI 协议连接 Outlok:
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")然后从 outlook 配置中获取所有的账户:accounts= win32com.client.Dispatch("Outlook.Application").Session.Accounts;在然后需要从名为 emaileri_al 的收件箱中获取邮件:def emailleri_al(folder): messages = folder.Items a=len(messages) if a>0: for message2 in messages: try: sender = message2.SenderEmailAddress if sender != "": print(sender, file=f) except: print("Ben hatayım") print(account.DeliveryStore.DisplayName) pass try: message2.Save message2.Close(0) except: pass你需要进入所有账户的所有收件箱中获取电子邮件:for account in accounts: global inbox inbox = outlook.Folders(account.DeliveryStore.DisplayName) print("****Account Name**********************************",file=f) print(account.DisplayName,file=f) print(account.DisplayName) print("***************************************************",file=f) folders = inbox.Folders for folder in folders: print("****Folder Name**********************************", file=f) print(folder, file=f) print("*************************************************", file=f) emailleri_al(folder) a = len(folder.folders) if a>0 : global z z = outlook.Folders(account.DeliveryStore.DisplayName).Folders(folder.name) x = z.Folders for y in x: emailleri_al(y) print("****Folder Name**********************************", file=f) print("..."+y.name,file=f) print("*************************************************", file=下面是完整的代码:import win32com.clientimport win32comimport osimport sysf = open("testfile.txt","w+")outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")accounts= win32com.client.Dispatch("Outlook.Application").Session.Accounts;def emailleri_al(folder): messages = folder.Items a=len(messages) if a>0: for message2 in messages: try: sender = message2.SenderEmailAddress if sender != "": print(sender, file=f) except: print("Error") print(account.DeliveryStore.DisplayName) pass try: message2.Save message2.Close(0) except: passfor account in accounts: global inbox inbox = outlook.Folders(account.DeliveryStore.DisplayName) print("****Account Name**********************************",file=f) print(account.DisplayName,file=f) print(account.DisplayName) print("***************************************************",file=f) folders = inbox.Folders for folder in folders: print("****Folder Name**********************************", file=f) print(folder, file=f) print("*************************************************", file=f) emailleri_al(folder) a = len(folder.folders) if a>0 : global z z = outlook.Folders(account.DeliveryStore.DisplayName).Folders(folder.name) x = z.Folders for y in x: emailleri_al(y) print("****Folder Name**********************************", file=f) print("..."+y.name,file=f) print("*************************************************", file=f)print("Finished Succesfully")via: https://www.codementor.io/aliacetrefli/how-to-read-outlook-emails-by-python-jkp2ksk95作者:A.A. Cetrefli 选题:lujun9972 译者:lujun9972 校对:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Mediavia https://linux.cn/article-9948-1.html?utm_source=rss&utm_medium=rss
Linux DNS 查询剖析(第二部分)
在第二部分中,我将介绍 resolv.conf 的更新机制、systemctl restart networking 命令的运行机制 ,以及 dhclient 是如何参与其中。Media
via https://linux.cn/article-9949-1.html
在第二部分中,我将介绍 resolv.conf 的更新机制、systemctl restart networking 命令的运行机制 ,以及 dhclient 是如何参与其中。Media
via https://linux.cn/article-9949-1.html
6 个简单的方式来查看 Linux 中的用户名和其它信息
你可能会问,为什么要讨论这个基础话题呢?即使我也这么认为,因为除了这两个之外没有更好的方法了,但是我们也有一些不错的选择。Media
via https://linux.cn/article-9950-1.html
你可能会问,为什么要讨论这个基础话题呢?即使我也这么认为,因为除了这两个之外没有更好的方法了,但是我们也有一些不错的选择。Media
via https://linux.cn/article-9950-1.html
如何在 Ubuntu 中切换多个 PHP 版本
在这个简短的教程中,我将向你展示如何在 Ubuntu 18.04 LTS 中切换多个 PHP 版本。它没你想的那么难。请继续阅读。Media
via https://linux.cn/article-9951-1.html
在这个简短的教程中,我将向你展示如何在 Ubuntu 18.04 LTS 中切换多个 PHP 版本。它没你想的那么难。请继续阅读。Media
via https://linux.cn/article-9951-1.html
将 Linux 终端会话录制成 SVG 动画
它是一款简单的命令行工具,使用 Python 语言编写,可以生成轻量级、外观整洁的动画,可以嵌入到网页项目中。Media
via https://linux.cn/article-9953-1.html
它是一款简单的命令行工具,使用 Python 语言编写,可以生成轻量级、外观整洁的动画,可以嵌入到网页项目中。Media
via https://linux.cn/article-9953-1.html
如何在 Linux Shell 编程中定义和使用函数
函数是一段可复用的代码。我们通常把重复的代码放进函数中并且在不同的地方去调用它。库是函数的集合。我们可以在库中定义经常使用的函数,这样其它脚本便可以不再重复代码而使用这些函数。Media
via https://linux.cn/article-9954-1.html
函数是一段可复用的代码。我们通常把重复的代码放进函数中并且在不同的地方去调用它。库是函数的集合。我们可以在库中定义经常使用的函数,这样其它脚本便可以不再重复代码而使用这些函数。Media
via https://linux.cn/article-9954-1.html
L1 终端错误漏洞(L1TF)如何影响 Linux 系统
L1 终端错误(L1TF)影响英特尔处理器和 Linux 操作系统。让我们了解一下这个漏洞是什么,以及 Linux 用户需要为它做点什么。Media
via https://linux.cn/article-9956-1.html
L1 终端错误(L1TF)影响英特尔处理器和 Linux 操作系统。让我们了解一下这个漏洞是什么,以及 Linux 用户需要为它做点什么。Media
via https://linux.cn/article-9956-1.html
开源网络方面的职位:创新与机遇的温床
诸如容器、边缘计算这样的技术焦点领域大红大紫,对在这一领域能够整合、协作、创新的开发者和系统管理员们的需求在日益增进。Media
via https://linux.cn/article-9958-1.html
诸如容器、边缘计算这样的技术焦点领域大红大紫,对在这一领域能够整合、协作、创新的开发者和系统管理员们的需求在日益增进。Media
via https://linux.cn/article-9958-1.html
如何确定你的Linux发行版中有没有某个软件包
有时,你可能会想知道如何在你的 Linux 发行版上寻找一个特定的软件包。或者,你仅仅只是想知道安装在你的 Linux 上的软件包有什么版本。Media
via https://linux.cn/article-9960-1.html
有时,你可能会想知道如何在你的 Linux 发行版上寻找一个特定的软件包。或者,你仅仅只是想知道安装在你的 Linux 上的软件包有什么版本。Media
via https://linux.cn/article-9960-1.html
一套有用的 Unix 实用程序
还有更多有用的实用程序没有预装在类 Unix 操作系统中,它们汇集起来构成了 moreutilis 这个日益增长的集合。Media
via https://linux.cn/article-9962-1.html
还有更多有用的实用程序没有预装在类 Unix 操作系统中,它们汇集起来构成了 moreutilis 这个日益增长的集合。Media
via https://linux.cn/article-9962-1.html
使用 Fstransform 转换文件系统
Fstransform 可以几乎以任意组合将 ext2、ext3、ext4、jfs、reiserfs 或 xfs 分区转换成另一类型。更重要的是,它可以直接执行,而无需格式化或复制数据。Media
via https://linux.cn/article-9966-1.html
Fstransform 可以几乎以任意组合将 ext2、ext3、ext4、jfs、reiserfs 或 xfs 分区转换成另一类型。更重要的是,它可以直接执行,而无需格式化或复制数据。Media
via https://linux.cn/article-9966-1.html
为什么我仍然喜欢用 Alpine 在 Linux 终端中发送电子邮件
这个免费的邮件客户端使用直观、易于定制,并且可以在许多操作系统上使用。Media
via https://linux.cn/article-9967-1.html
这个免费的邮件客户端使用直观、易于定制,并且可以在许多操作系统上使用。Media
via https://linux.cn/article-9967-1.html
一个转换花引号的 gawk 脚本
得到我的 awk 秘籍。Media我管理着一个个人网站,用手工编辑网站上的网页。由于网站上的页面并不多,这种方法对我很适合,可以让我对网站代码的细节一清二楚。最近我升级了网站的设计样式,我决定把所有的普通引号都转换成“花引号”,即在打印材料中使用的那种引号:用 “” 来代替 “"。手工修改所有的引号太耗时了,因此我决定将这个转换所有 HTML 文件中引号的过程自动化。不过通过程序或脚本来实现该功能需要费点劲。这个脚本需要知道何时将普通引号转换成花引号,并决定使用哪种引号(LCTT 译注:左引号还是右引号,单引号还是双引号)。有多种方法可以转换引号。Greg Pittman 写过一个 Python 脚本 来修正文本中的花引号。而我自己使用 GNU awk (gawk) 来实现。下载我的 awk 秘籍。免费下载。开始之前,我写了一个简单的 gawk 函数来评估单个字符。若该字符是一个引号,这该函数判断是输出普通引号还是花引号。函数查看前一个字符;若前一个字符是空格,则函数输出左花引号。否则函数输出右花引号。脚本对单引号的处理方式也一样。
via https://linux.cn/article-9969-1.html?utm_source=rss&utm_medium=rss
得到我的 awk 秘籍。Media我管理着一个个人网站,用手工编辑网站上的网页。由于网站上的页面并不多,这种方法对我很适合,可以让我对网站代码的细节一清二楚。最近我升级了网站的设计样式,我决定把所有的普通引号都转换成“花引号”,即在打印材料中使用的那种引号:用 “” 来代替 “"。手工修改所有的引号太耗时了,因此我决定将这个转换所有 HTML 文件中引号的过程自动化。不过通过程序或脚本来实现该功能需要费点劲。这个脚本需要知道何时将普通引号转换成花引号,并决定使用哪种引号(LCTT 译注:左引号还是右引号,单引号还是双引号)。有多种方法可以转换引号。Greg Pittman 写过一个 Python 脚本 来修正文本中的花引号。而我自己使用 GNU awk (gawk) 来实现。下载我的 awk 秘籍。免费下载。开始之前,我写了一个简单的 gawk 函数来评估单个字符。若该字符是一个引号,这该函数判断是输出普通引号还是花引号。函数查看前一个字符;若前一个字符是空格,则函数输出左花引号。否则函数输出右花引号。脚本对单引号的处理方式也一样。
function smartquote (char, prevchar) { # print smart quotes depending on the previous character # otherwise just print the character as-is if (prevchar ~ /\s/) { # prev char is a space if (char == "'") { printf("‘"); } else if (char == "\"") { printf("“"); } else { printf("%c", char); } } else { # prev char is not a space if (char == "'") { printf("’"); } else if (char == "\"") { printf("”"); } else { printf("%c", char); } }}这个 gawk 脚本的主体部分通过该函数处理 HTML 输入文件的一个个字符。该脚本在 HTML 标签内部逐字原样输出所有内容(比如,<html lang="en">)。在 HTML 标签外,脚本使用 smartquote() 函数来输出文本。smartquote() 函数来评估是输出普通引号还是花引号。function smartquote (char, prevchar) { ...}BEGIN {htmltag = 0}{ # for each line, scan one letter at a time: linelen = length($0); prev = "\n"; for (i = 1; i <= linelen; i++) { char = substr($0, i, 1); if (char == "<") { htmltag = 1; } if (htmltag == 1) { printf("%c", char); } else { smartquote(char, prev); prev = char; } if (char == ">") { htmltag = 0; } } # add trailing newline at end of each line printf ("\n");}下面是一个例子:gawk -f quotes.awk test.html > test2.html其输入为:
<!DOCTYPE html><html lang="en"><head> <title>Test page</title> <link rel="stylesheet" type="text/css" href="/test.css" /> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width" /></head><body> <h1><a href="/"><img src="logo.png" alt="Website logo" /></a></h1> <p>"Hi there!"</p> <p>It's and its.</p></body></html>其输出为:
<!DOCTYPE html><html lang="en"><head> <title>Test page</title> <link rel="stylesheet" type="text/css" href="/test.css" /> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width" /></head><body> <h1><a href="/"><img src="logo.png" alt="Website logo" /></a></h1> <p>“Hi there!”</p> <p>It’s and its.</p></body></html>via: https://opensource.com/article/18/8/gawk-script-convert-smart-quotes作者:Jim Hall 选题:lujun9972 译者:lujun9972 校对:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media
via https://linux.cn/article-9969-1.html?utm_source=rss&utm_medium=rss
极客漫画:函数式编程的世界
作者巧妙地指出了函数式编程不可变的特点。当你需要改变一个对象的属性的时候……嗯,销毁了再创建一个就是了。Media
via https://linux.cn/article-9970-1.html
作者巧妙地指出了函数式编程不可变的特点。当你需要改变一个对象的属性的时候……嗯,销毁了再创建一个就是了。Media
via https://linux.cn/article-9970-1.html
极客漫画:函数式编程的世界
Media作者巧妙地指出了函数式编程不可变(immultable)的特点。当你需要改变一个对象的属性的时候……嗯,销毁了再创建一个就是了。这里的老板想来份变量(改变全局变量的值),而所谓副作用(side effect),指的是在这种编程范式下,函数内部与外部互动可能会产生运算以外的其他结果,或导致程序出现不可预料的行为。或许,事件驱动的编程范式会好一点……?via: http://turnoff.us/geek/functional-world/作者:Daniel Stori 译者&点评:ItsLucas 校对&合成 :Bestony本文由 LCTT 原创编译,Linux中国 荣誉推出Media
via https://linux.cn/article-9970-1.html?utm_source=rss&utm_medium=rss
Media作者巧妙地指出了函数式编程不可变(immultable)的特点。当你需要改变一个对象的属性的时候……嗯,销毁了再创建一个就是了。这里的老板想来份变量(改变全局变量的值),而所谓副作用(side effect),指的是在这种编程范式下,函数内部与外部互动可能会产生运算以外的其他结果,或导致程序出现不可预料的行为。或许,事件驱动的编程范式会好一点……?via: http://turnoff.us/geek/functional-world/作者:Daniel Stori 译者&点评:ItsLucas 校对&合成 :Bestony本文由 LCTT 原创编译,Linux中国 荣誉推出Media
via https://linux.cn/article-9970-1.html?utm_source=rss&utm_medium=rss