2020年1月

Django 是 Python API 开发中最流行的框架之一,在这个教程中,我们来学习如何使用它。

Django 所有 Web 框架中最全面的,也是最受欢迎的一个。自 2005 年以来,其流行度大幅上升。

Django 是由 Django 软件基金会维护,并且获得了社区的大力支持,在全球拥有超过 11,600 名成员。在 Stack Overflow 上,约有 191,000 个带 Django 标签的问题。Spotify、YouTube 和 Instagram 等都使用 Django 来构建应用程序和数据管理。

本文演示了一个简单的 API,通过它可以使用 HTTP 协议的 GET 方法来从服务器获取数据。

构建一个项目

首先,为你的 Django 应用程序创建一个目录结构,你可以在系统的任何位置创建:

$ mkdir myproject
$ cd myproject

然后,在项目目录中创建一个虚拟环境来隔离本地包依赖关系:

$ python3 -m venv env
$ source env/bin/activate

在 Windows 上,使用命令 env\Scripts\activate 来激活虚拟环境。

安装 Django 和 Django REST framework

然后,安装 Django 和 Django REST 模块:

$ pip3 install django
$ pip3 install djangorestframework

实例化一个新的 Django 项目

现在你的应用程序已经有了一个工作环境,你必须实例化一个新的 Django 项目。与 Flask 这样微框架不同的是,Django 有专门的命令来创建(注意第一条命令后的 . 字符)。

$ django-admin startproject tutorial .
$ cd tutorial
$ django-admin startapp quickstart

Django 使用数据库来管理后端,所以你应该在开始开发之前同步数据库,数据库可以通过 manage.py 脚本管理,它是在你运行 django-admin 命令时创建的。因为你现在在 tutorial 目录,所以使用 ../ 符号来运行脚本,它位于上一层目录:

$ python3 ../manage.py makemigrations
No changes detected
$ python3 ../manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

在 Django 中创建用户

创建一个名为 admin,示例密码为 password123 的初始用户:

$ python3 ../manage.py createsuperuser \
  --email [email protected] \
  --username admin

在提示时创建密码。

在 Django 中实现序列化和视图

为了使 Django 能够将信息传递给 HTTP GET 请求,必须将信息对象转化为有效的响应数据。Django 为此实现了“序列化类” serializers

在你的项目中,创建一个名为 quickstart/serializers.py 的新模块,使用它来定义一些序列化器,模块将用于数据展示:

from django.contrib.auth.models import User, Group
from rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'groups']

class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ['url', 'name']

Django 中的视图是一个接受 Web 请求并返回 Web 响应的函数。响应可以是 HTML、HTTP 重定向、HTTP 错误、JSON 或 XML 文档、图像或 TAR 文件,或者可以是从 Internet 获得的任何其他内容。要创建视图,打开 quickstart/views.py 并输入以下代码。该文件已经存在,并且其中包含一些示例文本,保留这些文本并将以下代码添加到文件中:

from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer

class UserViewSet(viewsets.ModelViewSet):
    """
    API 允许查看或编辑用户
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer

class GroupViewSet(viewsets.ModelViewSet):
    """
    API 允许查看或编辑组
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

使用 Django 生成 URL

现在,你可以生成 URL 以便人们可以访问你刚起步的 API。在文本编辑器中打开 urls.py 并将默认示例代码替换为以下代码:

from django.urls import include, path
from rest_framework import routers
from tutorial.quickstart import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

# 使用自动路由 URL
# 还有登录 URL
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

调整你的 Django 项目设置

这个示例项目的设置模块存储在 tutorial/settings.py 中,因此在文本编辑器中将其打开,然后在 INSTALLED_APPS 列表的末尾添加 rest_framework

INSTALLED_APPS = [
    ...
    'rest_framework',
]

测试 Django API

现在,你可以测试构建的 API。首先,从命令行启动内置服务器:

$ python3 manage.py runserver

你可以通过使用 curl 导航至 URL http://localhost:8000/users 来访问 API:

$ curl --get http://localhost:8000/users/?format=json
[{"url":"http://localhost:8000/users/1/?format=json","username":"admin","email":"[email protected]","groups":[]}]

使用 Firefox 或你选择的开源浏览器

 title=

有关使用 Django 和 Python 的 RESTful API 的更多深入知识,参考出色的 Django 文档

为什么要使用 Djago?

Django 的主要优点:

  1. Django 社区的规模正在不断扩大,因此即使你做一个复杂项目,也会有大量的指导资源。
  2. 默认包含模板、路由、表单、身份验证和管理工具等功能,你不必寻找外部工具,也不必担心第三方工具会引入兼容性问题。
  3. 用户、循环和条件的简单结构使你可以专注于编写代码。
  4. 这是一个成熟且经过优化的框架,它非常快速且可靠。

Django 的主要缺点:

  1. Django 很复杂!从开发人员视角的角度来看,它可能比简单的框架更难学。
  2. Django 有一个很大的生态系统。一旦你熟悉它,这会很棒,但是当你深入学习时,它可能会令人感到无所适从。

对你的应用程序或 API 来说,Django 是绝佳选择。下载并熟悉它,开始开发一个迷人的项目!


via: https://opensource.com/article/19/11/python-web-api-django

作者:Rachel Waston 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

看看我在好玩、能学习、有用处的树莓派上做了些什么。

无论是从历史上,还是从理论上讲,当时钟走到一个十年份第一年的 1 月 1 日的午夜 0 点时,就开始了一个十年或一个世纪或一个千年纪元。例如,20 世纪始于 1901 年 1 月 1 日,而不是 1900 年 1 月 1 日。原因很简单:现代日历中没有 0 年,因此这些时间段始于 1 年(使用公历)。但这不是我们在口语上和文化上指代时间段的方式。例如,当我们提到 80 年代的音乐或电影时,我们所说的是 1980 年至 1989 年。

我可以说,最近过去的 21 世纪 10 年代是云计算、社交媒体、移动技术和物联网(IoT)的十年,这其中就包括树莓派。最近,《时代》杂志将树莓派称为过去十年中 10 个最佳小玩意之一。我非常同意这点。

树莓派最初的于 2012 年推出,我过了几年才使用上了它。不过从那以后,我在家中做了许多有趣的教育项目,还在 Opensource.com 中记录了一些。

圣诞灯三部曲

三年来,我写了三篇探讨如何使用树莓派和开源项目 LightShowPi 控制圣诞灯的文章。第一篇文章《用树莓派创建你自己的音乐灯光秀》,非常基础地介绍了电子开发介绍和灯光秀的结合。第二篇文章,《使用树莓派 SSH 进入你的圣诞树》,稍微深入地介绍了通过远程管理和电子按钮控制灯光的方法。三部曲的最后一章《用树莓派设置假期心情》,回顾了上一年 LightShowPi 项目中引入的更改。

DIY 项目

多年来,我已经将树莓派变成了几种有用的设备。有一次,我将树莓派变成了 Pi MusicBox 音乐播放设备,它可以让你在 Web 界面中导入你喜欢的音乐流并在房间中播放。

将树莓派做成移动视频录制设备是另一个 DIY 项目。它需要一些额外的硬件,例如触摸屏、树莓派摄像头和电池组,但是它工作的很好。这个设备的最大缺点之一是当时树莓派的可用内存很小。我认为如果我将它重新配置在具有 4GB 内存的树莓派 4 上,那么这款便携式摄像机的功能可能会更好。这可能是一个会在 2020 年重新打造的项目。

我做的另一个小项目客厅的数字时钟使用了 Adafruit PiTFT 小屏幕。尽管这个项目很简单,但它可能是我使用时间最长的项目。那个时钟在我的电视机上呆了一年多,一天 24 小时不间断运行,直到屏幕烧坏为止。

圆周率日系列

最后但并非最不重要的一点是,在 2019 年的圆周率日(3 月 14 日)之前,我在 14 内发布了 14 篇文章。这是迄今为止我完成过的最具挑战性的写作项目,但是它使我能够涵盖许多不同的主题,并希望使读者对树莓派的丰富功能有更多的了解。

走向未来

我不认识树莓派基金会中的任何人,因此我不了解它的任何路线图和未来计划。我可以(但我不会)推测品牌及其设备的未来,它们让世界各地这么多不同社会地位的人扩展他们对计算机科学、电子和开源开发的知识。我希望基金会的管理层能够忠于其愿景和使命,并继续为世界各地的人们提供价格合理的技术。

21 世纪 10 年代过去了,那是多么甜蜜的十年。对我来说,它闻起来就像树莓派馅饼。


via: https://opensource.com/article/20/1/raspberry-pi-best

作者:Anderson Silva 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

GParted 是一个可用于 Linux 发行版的非常受欢迎且免费的分区编辑器。在这里,我们简要地介绍一下它提供的功能。

GParted:一个自由开源的图形化分区管理器

GParted 无疑是 Linux 下的最好的分区管理器之一。用户界面非常简单而可以完成任务。

在某些情况下,你最终还是会使用 GParted 来修复或格式化你的 USB 驱动器。我有一个在 Ubuntu 中使用“磁盘”应用程序不能格式化的 USB 磁盘,而这是 GParted 用来救援的地方。

所以,它是一个非常有用的工具,有很多出色的功能。让我为你们重点介绍一下。

警告!

进行磁盘分区是一件危险的工作。除非绝对必要,否则不要做。否则,你可能最终擦除了整个磁盘。

GParted 的功能

从简单地格式化任务到重要的分区任务,你可以使用 GParted 做很多事。我将使用一些屏幕截图突出关键功能,以帮助你在安装它前进一步了解它。

创建分区表

你可以为新磁盘创建一个新的分区表,也可以擦除你现存的磁盘内容来修改分区表。

你能够选择 msdos、gpt、atari,以及更多类型的分区表。

创建、移动、标记、删除和修改分区表

你可以使用 GParted 中一系列选项来轻松地创建、标记、删除或修改分区表。

当然,你必须要谨慎你要做的事情。

好的是,GParted 可以确保你不能直接应用任何更改 —— 在你点击应用更改之前,它将排队你选择的操作/任务,并在你执行前最后再要求确认一次。

顶部的对号标记符号 可以让你确认更改,然后你的更改才会生效。

这是分区可用选项的另一个屏幕截图:

尝试数据救援

除了编辑分区以外,你也可以试着使用“尝试数据救援”功能以在 Linux 中恢复丢失的数据,如下面的屏幕截图所示。

值得注意的是,默认情况下你没有安装此功能 —— 你只是能看到这个选项。因此,要使这个数据恢复功能可以正常工作,你必须使用下面的命令来单独地安装 gpart (在基于 Ubuntu/Debian 的发行版上):

sudo apt install gpart

除了所有这些关键功能以外,它支持各种存储设备和文件系统。你可以从其官方网站的功能列表中了解到更多信息。

在 Ubuntu 和其它 Linux 发行版上安装 GParted

你可能已经预安装了 GParted 。所以,务必核实一下。如果你尚未安装它,则可以进入软件中心安装它。

如果你想使用终端,简单地键入下面的命令:

sudo apt install gparted

如上所述,如果你想要使用数据恢复选项,除了安装 gparted 软件包外,还应该安装 gpart 软件包。

如果你使用的是其它 Linux 发行版,你可以在各自的软件管理器中找到它,或者直接查看官方下载操作说明

总结

当涉及处理磁盘管理和分区时,GParted 是一个非常有用且重要的工具。但是,因为显而易见的原因,当你使用它时,你必须要小心。

你尝试过 GParted 吗?你在 Linux 上使用的其它哪个分区工具?请在下面的评论中分享你的经验。


via: https://itsfoss.com/gparted/

作者:Ankush Das 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

迎着北京雪后冷冽的空气,我专程参加了华为在钓鱼台国宾馆举办的华为 HDC.Cloud 大会预热沟通会。说实话,作为一个技术圈的跑会男人,我参加过林林总总的技术大会,但是还是第一次参加一个技术大会的会前沟通会,而且规模相当不小。

华为这样隆重的介绍这次将要在 2020 年 2 月 11 日至 12 日深圳举办的 华为开发者大会2020(Cloud),这让我心里对这次大会有了不少期许。

主持会议的是人称“茂总”的华为技术有限公司高级副总裁、Cloud & AI 产品与服务 CTO 张顺茂先生,这位可是一路从一线技术冲杀上来的技术型高管,所以整场沟通会显得坦率而真诚。

张顺茂先生

HDC.Cloud 的由来

华为这些年,作为国内顶级技术厂商,所举办的各种大型技术会议层出不穷。就开发者大会而言,早在 2015 年就召开了首届 HDC(Huawei Developers Congress),而在之后的 2016 - 2019 年,HDC 和华为的另外两个顶会 HCC 和 HNC 三会合一为 HC,HDC 原有内容被放在 HC 第三天的开发者专场。

茂总讲到,“在华为云底座上需要开发者生态,而且从历史发展和世界进步来看,开发者的重要意义是不言而喻的,在数字转型的时代,开发者对于产业生态更为重要,新的技术都需要开发者创造出来。”伴随着这些 ICT 技术的发展,华为对开发者以及开发者生态愈加重视,华为在其发布的沃土计划 2.0 中称,未来五年将投资 15 亿美元,携手社区和高校在全球发展开发者 500 万人!据《2018年欧盟工业研发投资排名》,在 2018 年,华为的企业研发投入就高达 113.34 亿欧元,全球排名第五。

在这种形式下,原本只是一天议程的 HC 开发者专场就不足以体现华为在技术开发领域的成绩和重视,因此,这次在深圳专门举办这场开发者大会,并且在两天的多轨议程中,包含多个会议、沟通、动手实践等丰富的活动,可谓是一场技术人员的盛宴。

事实上,华为重视技术,在业界已经是一种共识了,甚至华为连开发者大会都有两场:一场是这次在深圳 2 月份举办的 HDC.Cloud ,以 “.Cloud” 为后缀,突出企业级开发;而另外一场则是面向消费者技术领域的开发者大会也即将露出面纱。

一云两翼下的 HDC.Cloud

在 2019 年 HC 大会上,华为提出了“一云两翼双引擎+开放的生态“的计算产业布局。一云就是华为云,所有业务以云为主,向云上迁移,拥抱云、融入云、接受云。而两翼一个是智能计算,另一个则是智能数据和存储。“一云”和“两翼”的基础是通用计算处理器“鲲鹏”和人工智能处理器“昇腾”。

从历史发展和世界进步来看,开发者的重要意义是不言而喻的,在数字转型的时代,开发者对于产业生态更为重要,新的技术都需要开发者创造出来。HDC.Cloud最主要目的是汇聚开发者和产业伙伴,让基于昇腾、鲲鹏为底座的计算产业生态发展起来。

为谁盛开的 HDC.Cloud?

经常有人问为什么华为为什么能持续高速增长?甚至被美国加入实体清单之后,还能保持 18% 的增长。对此,茂总的理解是,“最主要是华为持续高强度的研发投入,让华为公司有了成长的动力。像汽车的发动机一样,只要有这样的动力,一些小坎挡不住前进的步伐,开发者是前进的引擎和动力,他们用代码在改变世界。”

作为一家国内知名的开源技术社区,我们很关注国内的开源技术生态的建设和发展,这两年也对主要由国内开发者和科技企业推动的开源项目进行了深入观察和数字分析。在今年我们刚刚发布《中国开源项目 Grank 分析报告(2019)》中,我们欣喜的看到国内有很多项目在活跃度、社区健康度上都取得了长足的发展。对比 2018 年的数据,无论是项目还是开发者的数据,都明显可以看到开发者在其中所扮演的积极角色。

开发者的 HDC.Cloud

正如这个大会的名称一样,HDC.Cloud 面对的就是开发者,不仅有 ISV 软件开发者,还有 IHV 硬件开发者和 SI 系统集成商的开发者。除了企业开发者之外,HDC.Cloud 还面对生态培养的高校、师生、科研机构,以及开源社区的开发者。

开发者参加这样的会议有什么收益呢?

如今,ICT 技术正在改变各行各业,随着数字经济、人工智能不断的推进,算力将成为新生产力,数据成为新生产资料,已经形成共识。当下,云、AI 将人类推向智能社会,5G 和 IoT 使得世界万物互联,而区块链正在重塑社会价值。

这些技术改变世界的愿景很美好,怎么样把它实现呢?这就需要开发者把这些愿景落到实处、落到产品和方案上。如何把这些技术转变成日常生活中可以用到的产品和方案,转变成企业创新进步的产品和方案,就需要开发者。这些工程师们是不是都会用最新的技术呢?比如说人工智能,很多企业说我们也要搞个什么样的人工智能,用数据挖掘一下,训练一下模型,但是招一个人工智能工程师很贵,因为这个技术掌握的人太少,怎么样让 AI 普惠,让大家都能用起来,就需要一个学习和培养的环境,需要一个方便使用的平台,华为这样的开发者大会就是提供这样的平台,让更多的人掌握它、学习它、使用它,能够创造出自己的人工智能产品。

华为开发者扶植政策

在沟通会当中,包括 Linux 中国在内的多家媒体和社区,从不同角度对华为开发者生态如何建设进行了提问,作为开发者和开发者社区如何参与到华为所描述出的开放生态当中?

茂总讲到,“我们面向四类开发者:一、企业合作伙伴开发者;二、个人开发者;三、初创企业开发者;四、高校和教研机构开发者。这四类开发者会涉及不同的权益,各自有所侧重。这些权益包括认证培训、技术支持、板卡支持等。从学习阶段到开发阶段,会有开发工程师、OpenLabs 和各地的创新中心支持你。比如说在北京成立了一个北京鲲鹏创新中心,在创新中心里面有工程师驻场,也有设备在那里,支持和帮助北京地区的开发者在这个地方进行自己的产品开发和服务。而产品上市后,华为还会提供市场开发基金进行支持,跟华为一起共享商机。甚至在最后的销售阶段也可以借助华为的地面部队,共享当地的商机、客户关系和渠道关系,这些都可以为开发者提供服务。”

像北京一样,在很多大城市华为都有鲲鹏创新中心。此外,在鲲鹏创新中心成立之前各地也有 OpenLabs,即便是个人开发者也可以去参加他们的活动。

华为这次举办 HDC.Cloud,将会发布一系列基于鲲鹏、昇腾 AI 的开发工具和开发套件,让开发人员——不仅仅是华为的开发人员,包括整个生态的开发人员——能够更快的把应用迁移过来,更快基于这些工具把自己的内容丰富起来,这也是一个长期的战略。

具体来说,华为有三个伙伴计划,都是以鲲鹏打头。它们分别是鲲鹏展翅伙伴计划、鲲鹏凌云伙伴计划、鲲鹏智数伙伴计划。

  • 鲲鹏展翅是以盒子,比如说板卡、泰山服务器为主,可以给开发者提供服务和板卡支持。
  • 鲲鹏凌云是面向开发者的服务。华为云有很多的基础服务,比如 ECS 早期是基于通用CPU 提供的通用计算服务;但是现在,ECS 下面跑的硬件设施不是 X86,在华为云上引用鲲鹏云服务的时候,就使用的是鲲鹏处理器。
  • 鲲鹏智数是基于数据和存储领域展开,去年 11 月份华为专门发布了 HetuEngine 数据虚拟化引擎,围绕数据的全生命周期管理,帮助客户让数据更好用。该引擎后续也会开源。

从上面可以看到,华为在计算、数据、云三个领域给开发者提供一系列的政策和支持。

这次 HDC.Cloud 有什么值得期待的?

让我们言归正传,作为开发者,我们自然更关心这次 HDC.Cloud 会议上能有什么值得期待的收获。

这次于 2 月 11日、12 日在深圳召开的开发者大会是一个面向全球开发者分享、学习、交流、实践的最佳平台。预计会有 1 万 5 千多位开发者参会。大会里有主题演讲、专题演讲,大咖面对面,技术培训、CTO 圆桌、公开演讲、早午餐会等。茂总感慨道,“开发者来的时间不容易,我们把参会者每一分钟都充分使用起来,让他们每分钟都能学到东西,早餐时间也不要耽误,每个桌子有一个技术专题讨论,你对哪个技术感兴趣,就可以到哪个桌子吃早餐,跟技术大拿聊一聊。”

此外,这次 HDC.Cloud 包括还有黑客松大赛、创客行。在整个活动设计里面有 3 万平米的展区动手实验室,包括华为认证竞技场、最强 ICT 大脑、鲲鹏开发挑战赛、昇腾开发挑战赛、Codelabs 动动手指等,可以探索代码的无限可能。大家也可以现场参加开发者大赛和学习,获得 HCIE 认证的资格等。

当然,学习和了解新技术,总是要从最权威的大神身边学习,因此,这次出场都是华为的 IEEE 院士、大咖、天才少年等。大家也知道华为花几百万招了一些天才少年出来,这些天才少年到底做了什么?他们会自己出来跟大家讲他们的故事。还有 2012 实验室的扫地僧,这些扫地僧们会跟大家沟通,看看他们的武艺到底多么的高强。

按照议程,一共有 126 场专题演讲,最燃、最丰富的技术饕餮盛宴,都会在这儿。还有 8 场大师面对面和大家进行 ICT 产业技术、思想的最高峰直接对话。这些人都是首席科学家、IEEE 院士、行业知名架构师。此外,还有开源社区的各路领袖级的人物出场,包括 Linux 基金会执行董事 Jim Zemlin、 Apache 主席 Craig 、MySQL 之父 Monty 等都会来参加。

从透露的议程上看,有几个演讲题目颇为有趣,比如《DNA 存储:1 公斤如何容纳全世界 - 探索 DNA 存储的奥秘》、《华为云 ModelArts 平台上使用 MindSpore 实现 ResNet50 训练速度翻倍》、《如何实现从 x86 到鲲鹏平台 90% 代码自动迁移》、《如何在人形机器人上实现实时的动作识别和智能交互》等等。

不知道从什么时候开始,国内的技术大会也开始充分利用会议间歇的夜间为参会者们提供一些娱乐节目。在白天大家辛苦学东西之余,11 日晚上会安排有音乐电音节,让年轻的开发者们能够跳起来。

让我们期待在 HDC.Cloud 与大家相会~

SparkleShare 是一个开源的基于 Git 的 Dropbox 风格的文件共享应用程序。在我们的系列文章中了解有关 Git 鲜为人知的用法。

Git 是一个少有的能将如此多的现代计算封装到一个程序之中的应用程序,它可以用作许多其他应用程序的计算引擎。虽然它以跟踪软件开发中的源代码更改而闻名,但它还有许多其他用途,可以让你的生活更轻松、更有条理。在这个 Git 系列中,我们将分享七种鲜为人知的使用 Git 的方法。

今天,我们将看看 SparkleShare,它使用 Git 作为文件共享的基础。

用于文件共享的 Git

Git 的优点之一是它具有固有的分发能力。它可用来建立共享。即使你只是与自己网络上的其他计算机共享资源库,Git 也会为从共享位置获取文件的行为带来透明性。

随着其界面的发展,Git 变得非常简单。虽然因用户而异,他们坐下来完成一些工作时的共同点仅仅是 git pull 或稍微复杂一点的 git pull && git checkout -b my-branch。但是,对于某些人来说,将命令输入到他们的计算机中的做法完全是令人困惑或烦恼的。计算机旨在使生活变得轻松,它擅长于重复性工作,因此有更简便的方法可以与 Git 共享文件。

SparkleShare

SparkleShare 项目是一个基于 Git 的跨平台的、开源的 Dropbox 式的文件共享应用程序。它通过将文件拖放到专门指定的 SparkleShare 目录中的简单操作,自动执行所有 Git 命令,触发添加、提交、推送和拉取过程。因为它基于 Git,所以你可以获得基于差异(diff)的快速推送和拉取,并且继承了 Git 版本控制和后端基础设施(如 Git 挂钩)的所有优点。它可以完全自托管,也可以将其与 GitLab、GitHub、Bitbucket 等 Git 托管服务一起使用。此外,由于它基本上只是一个 Git 的前端,因此你可以在可能没有 SparkleShare 客户端但有 Git 客户端的设备上访问 SparkleShare 中的文件。

正如你获得 Git 的所有好处一样,你也会受到所有常见的 Git 限制:使用 SparkleShare 存储数百张照片、音乐和视频是不切实际的,因为 Git 是为文本而设计和优化的。Git 当然可以存储二进制文件的大文件,但是因为它可以跟踪历史记录,因此一旦将文件添加到其中,几乎就不可能完全删除它。这在某种程度上限制了 SparkleShare 对某些人的实用性,但使其非常适合许多工作流程,包括日程安排

安装 SparkleShare

SparkleShare 是跨平台的,可从网站获得适用于 Windows 和 Mac 的安装程序。对于 Linux,有一个 Flatpak 安装包,或者你可以在终端中运行以下命令:

$ sudo flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
$ sudo flatpak install flathub org.sparkleshare.SparkleShare

创建一个 Git 存储库

SparkleShare 并不是软件即服务(SaaS)。你在计算机上运行 SparkleShare 与 Git 存储库进行通信,而 SparkleShare 并不存储你的数据。如果你还没有与文件夹同步的 Git 存储库,则必须在启动 SparkleShare 之前创建一个文件夹。你有三个选择:托管的 Git、自托管 Git 或自托管 SparkleShare。

托管的 Git

SparkleShare 可以使用你能访问的任何 Git 存储库进行存储,因此,如果你拥有 GitLab 或任何其他托管服务的帐户(或创建一个),则它可以成为 SparkleShare 的后端。例如,开源 Notabug.org 服务是一个类似于 GitHub 和 GitLab 的 Git 托管服务,但其独特性足以证明 SparkleShare 的灵活性。根据用户界面的不同,不同的托管服务创建新存储库的方法也有所不同,但是所有主要存储库都遵循相同的通用模型。

首先,在托管服务中找到创建新项目或存储库的按钮,单击它以开始。然后逐步完成存储库的创建过程,为存储库提供名称、隐私级别(存储库通常默认为公共),以及是否使用 README 文件初始化存储库。无论你是否需要个 README 文件,请初始化建立一个。使用一个文件来创建存储库不是绝对必要的,但是它会强制 Git 主机实例化存储库中的 master 分支,这有助于确保前端应用程序(例如 SparkleShare)具有要提交并推送的分支。即使文件是几乎空的 README 文件,也可以用来查看该文件以确认你已连接成功。

 title=

创建存储库后,获取其用于 SSH 克隆的 URL。就像从 Git 项目获得其 URL 一样,你也可以获取此 URL:导航至存储库页面并查找 “Clone” 按钮或字段。

 title=

GitHub 的克隆 URL。

 title=

GitLab 的克隆 URL。

这是 SparkleShare 用于获取数据的地址,因此请记下它。你的 Git 存储库现已配置好。

自托管的 Git

你可以使用 SparkleShare 访问你有权访问的任何计算机上的 Git 存储库。除了一个 Git 裸存储库外,无需任何特殊设置。但是,如果你想将对 Git 存储库的访问权授予其他任何人,则应运行 Gitolite 之类的 Git 管理器或 SparkleShare 自己的 Dazzle 服务器来帮助你管理 SSH 密钥和帐户。至少,创建一个特定于 Git 的用户,以便有权访问你的 Git 存储库的用户不会自动获得对服务器其余部分的访问权限。

以 Git 用户身份登录服务器(如果你非常擅长管理用户和组权限,则可以以自己的用户登录)并创建存储库:

$ mkdir ~/sparkly.git
$ cd ~/sparkly.git
$ git init --bare .

你的 Git 存储库现已配置好。

Dazzle

SparkleShare 的开发人员提供了一个名为 Dazzle 的 Git 管理系统,以帮助你自托管 Git 存储库。

在你的服务器上,将 Dazzle 应用程序下载到你的路径中的某个位置:

$ curl https://raw.githubusercontent.com/hbons/Dazzle/master/dazzle.sh --output ~/bin/dazzle
$ chmod +x ~/bin/dazzle

Dazzle 设置了一个特定于 Git 和 SparkleShare 的用户,并且还基于 SparkleShare 应用程序生成的密钥实现了访问权限。现在,只需设置一个项目:

$ dazzle create sparkly

你的服务器现在已经配置好,可以用作 SparkleShare 托管了。

配置 SparkleShare

首次启动 SparkleShare 时,系统会提示你配置 SparkleShare 用于存储的服务器。这个过程可能看起来像一个首次运行的安装向导,但实际上是在 SparkleShare 中设置新共享位置的通常过程。与许多共享驱动器应用程序不同,使用 SparkleShare 可以一次配置多个位置。你配置的第一个共享位置并不比你以后可以配置的任何共享位置更重要,并且你也不用注册 SparkleShare 或任何其他服务。你只是将 SparkleShare 指向 Git 存储库,以便它知道如何使第一个 SparkleShare 文件夹保持同步。

在第一个屏幕上,给出一个身份信息,SparkleShare 将在代表你进行的 Git 提交记录中使用这些信息。你可以使用任何内容,甚至可以使用不代表任何意义的伪造信息。它仅用于提交消息,如果你对审查 Git 后端进程没有兴趣,你可能甚至看不到它们。

下一个屏幕提示你选择主机类型。如果你使用的是 GitLab、GitHub、Planio 或 Bitbucket,则可以选择一个适当的。否则,请选择“自己的服务器”。

 title=

在此屏幕底部,你必须输入 SSH 的克隆 URL。如果你是自托管的 Git,则地址类似于 <ssh://[email protected]>,而远程路径是为此目的而创建的 Git 存储库的绝对路径。

根据上面的自托管示例,我虚构的服务器的地址为 ssh://[email protected]:22122:22122 表示一个非标准的 SSH 端口),远程路径为 /home/git/sparkly.git

如果我改用 Notabug.org 帐户,则上例中的地址为 ssh://[email protected],路径为 seth/sparkly.git

SparkleShare 首次尝试连接到主机时会失败,因为你尚未将 SparkleShare 客户端 ID(特定于 SparkleShare 应用程序的 SSH 密钥)复制到 Git 主机。这是预料之中的,所以不要取消该过程。将 SparkleShare 设置窗口保持打开状态,并从系统任务栏中的 SparkleShare 图标处获取客户端 ID。然后将客户端 ID 复制到剪贴板,以便可以将其添加到 Git 主机。

 title=

将你的客户端 ID 添加到托管的 Git 帐户

除了较小的 UI 差异外,在任何托管服务上添加 SSH 密钥(所有客户端 ID 都是这样)的过程基本上是相同的。在你的 Git 主机的 Web 仪表板中,导航到你的用户设置,然后找到 “SSH 密钥”类别。单击“添加新密钥”按钮(或类似按钮),然后粘贴你的 SparkleShare 客户端 ID 的内容。

 title=

保存密钥。如果你希望其他人(例如协作者或家庭成员)能够访问同一存储库,则他们必须向你提供其 SparkleShare 客户端 ID,以便你可以将其添加到帐户中。

将你的客户端 ID 添加到自托管的 Git 帐户

SparkleShare 客户端 ID 只是一个 SSH 密钥,因此将其复制并粘贴到 Git 用户的 ~/.ssh/authorized_keys 文件中。

使用 Dazzle 添加你的客户 ID

如果你使用 Dazzle 管理 SparkleShare 项目,请使用以下命令添加客户端 ID:

$ dazzle link

当 Dazzle 提示你输入该 ID 时,请粘贴在 SparkleShare 菜单中找到的客户端 ID。

使用 SparkleShare

将客户端 ID 添加到 Git 主机后,在 SparkleShare 窗口中单击“重试”按钮以完成设置。克隆存储库完成后,你可以关闭 SparkleShare 设置窗口,并在你的家目录中找到一个新的 SparkleShare 文件夹。如果你设置了带有托管服务的 Git 存储库,并选择包括 README 文件或许可证文件,则可以在 SparkleShare 目录中看到它们。

 title=

此外,有一些隐藏目录,你可以通过在文件管理器中显示隐藏目录来查看。

使用 SparkleShare 的方式与使用计算机上任何目录的方式相同:将文件放入其中。每当将文件或目录放入 SparkleShare 文件夹时,它都会在后台复制到你的 Git 存储库。

排除某些文件

由于 Git 从设计上就是要记住一切,因此你可能希望从记录中排除特定的文件类型。排除一些文件是有原因的。通过定义摆脱 SparkleShare 管理的文件,可以避免意外复制大文件。你还可以为自己设计一种方案,使你可以将存储在一个目录中的逻辑上属于同一个文件(例如,MIDI 文件及其 .flac 导出文件),但是可以自己手动备份大文件,而同时让 SparkleShare 备份基于文本的文件。

如果在系统的文件管理器中看不到隐藏的文件,请显示它们。导航到你的 SparkleShare 文件夹,然后到代表你的存储库的目录,找到一个名为 .gitignore 的文件,然后在文本编辑器中将其打开。你可以在 .gitignore 中输入文件扩展名或文件名(每行一个),任何与你列出的文件匹配的文件都会被忽略(如文件名所示)。

Thumbs.db
$RECYCLE.BIN/
.DS_Store
._*
.fseventsd
.Spotlight-V100
.Trashes
.directory
.Trash-*
*.wav
*.ogg
*.flac
*.mp3
*.m4a
*.opus
*.jpg
*.png
*.mp4
*.mov
*.mkv
*.avi
*.pdf
*.djvu
*.epub
*.od{s,t}
*.cbz

你知道最经常遇到哪些文件类型,因此请集中精力处理最有可能潜入你的 SparkleShare 目录的文件。如果你想稍微矫枉过正一些,可以在 Notabug.org 以及整个网上找到 .gitignore 文件的好集合。

通过将这些条目保存在 .gitignore 文件中,你可以将不需要发送到 Git 主机的大文件放在 SparkleShare 目录中,SparkleShare 将完全忽略它们。当然,这意味着你需要确保它们可以备份或通过其他方式分发给你的 SparkleShare 协作者。

自动化

自动化 是我们与计算机达成的默契之一:计算机执行重复的、无聊的工作,而我们人类要么不擅长做这些,要么不擅长记忆这些。SparkleShare 是一种很好的、简单的自动执行例行数据分发的方法。但不管怎么说,这并不适合每个 Git 存储库。它没有用于高级 Git 功能的接口,它没有暂停按钮或手动管理的操作。没关系,因为它的使用范围是有意限制的。SparkleShare 可以完成它计划要做的事情,它做得很好,而且它是你无需关心的一个 Git 存储库。

如果你想使用这种稳定的、看不见的自动化,请尝试一下 SparkleShare。


via: https://opensource.com/article/19/4/file-sharing-git

作者:Seth Kenlon 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

GNOME最受欢迎的桌面环境之一。它有现代的 UI,并且带有许多特定于 GNOME 的应用,这些应用与桌面整体外观完美融合。

你可以根据自己的喜好来调整 GNOME,但我不在这里讨论。GNOME 桌面有一些你可能不知道的隐藏功能。

这种不太显眼的功能之一是内置的屏幕录像机。

是的,你没有看错。如果你使用的是 GNOME 桌面,那么不必安装其他的 Linux 屏幕录像机。你只需要知道正确的快捷键即可。

立即使用 GNOME 屏幕录像机录制屏幕

要快速打开 GNOME 屏幕录像机,你需要在 Ubuntu 或其他带有 GNOME 桌面的发行版中按下此快捷键

Ctrl + Alt + Shift + R

这将会立即开始录制你的桌面。你可以通过顶部的系统托盘区域的红点了解到正在录制:

The red dot in the system tray area indicates that screen recording is in progress

增加录制时间

默认的最大录制时间仅为 30 秒。但是可以增加。

打开终端并使用以下命令:

gsettings set org.gnome.settings-daemon.plugins.media-keys max-screencast-length 300

在上面的命令中,我将录音的最大长度增加到 300 秒(即 5 分钟)。你可以将其更改为任何其它值,但应以秒为单位。

如果你不希望最长录音时间有任何限制,请将其设置为 0,之后它会在你手动停止或者磁盘空间不足才会停止。

停止屏幕录制

如前所述,你的桌面录制将在达到最大时间限制后自动停止。

要在此之前停止录制,你可以按下相同的组合键:

Ctrl + Alt + Shift + R

你的录制内容将以 webm 格式保存在家目录的 Videos 文件夹中。

局限性

尽管使用这个小工具可以方便地快速录制桌面,但是与功能强大的 Simple Screen Recorder 这样的屏幕录制工具相比,它有一些局限性。

  • 录制开始之前没有时间延迟选项
  • 没有暂停和播放选项
  • 它录制整个屏幕。无法仅录制应用窗口、特定区域或特定屏幕(如果你有多个屏幕)。
  • 视频以 webm 格式保存在用户的 Videos 目录中。你无法更改。你必须使用 HandBrake 之类的工具将视频转换为其他格式

如你所见,这个秘密的 GNOME 屏幕录像机与 Kazam 之类的工具或其他此类工具所提供的功能相差很远。但是,它并不会尝试成为全功能的屏幕录像机。它只是为你提供录制屏幕的快速方法。

GNOME 是一个多功能的现代桌面环境。你可以大量地调整 GNOMEGNOME 扩展为桌面自定义提供了另一个维度。

该屏幕录像机是 GNOME 的隐藏功能之一,就像你自己很难轻易找到的挂起选项。

你喜欢它吗?你是否还想与我们分享其他隐藏的 GNOME 功能?请在评论区留言。


via: https://itsfoss.com/gnome-screen-recorder/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出