在CentOS 7上安装TaskServer(任务化)

TaskWarrior是一个开源时间管理工具,它是对Todo.txt应用程序及其克隆的改进。由于普通人在他们的日常计划中使用多个设备/平台,因此拥有一个集中式存储库的能力至关重要,该存储库可以从任何设备访问和更新数据。本教程将着重于设置服务器(称为TaskServer(任务))和客户端(称为TaskWarrior(任务)),以允许多个客户端设备安全地访问和交换数据。

它具有以下功能:

  • 无限任务
  • 任务优先级
  • 搜索过滤
  • 标记
  • 自动同步
  • 自动备份
  • 完全控制和隐私
  • 加密通讯

先决条件

  • 一个CentOS 7 x64服​​务器实例。
  • 一个sudo的用户。
  • 指向Vultr实例的域名(taskd.example.com)

步骤1:更新系统

以您的sudo用户身份登录以安装EPEL存储库并按如下所示更新系统:

sudo yum install epel-release -y
sudo yum clean all && sudo yum update -y

步骤2:安装RPM Build和用于构建的工具

EPEL存储库不包含TaskServer(任务)的RPM,因此我们必须将其从源代码构建到RPM包中。

  1. 安装GCC,Make,RPM构建,开发和签名工具。

    sudo yum install gcc gcc-c++ make rpmdevtools rpm-sign rpm-build -y
    
  2. 创建一个GnuPG目录,其中将包含签署我们的RPM所需的GPG文件。

    mkdir .gnupg
    
  3. 创建密钥时,我们需要系统中的熵来适当地随机化它。该rngd守护程序可生成从熵必要/dev/urandom。因此,现在就安装它。

    yum install rngd -y
    
  4. 启动rngd守护程序以生成熵。该-r选项指向/dev/urandom,而不是默认/dev/hwrng

    sudo rngd -r /dev/urandom
    
  5. 生成密钥。该--gen键选项告诉GPG生成一个新的密钥对。

    gpg --gen-key
    
  6. 对于“ 请选择所需的密钥类型: ”选项,通过输入1并按Return / Enter键,为密钥类型选择“ (1)RSA和RSA(默认) ” 。

  7. 对于“ 您想要什么键大小?(2048) ”选项,请按Return / Enter键选择默认值。

  8. 对于“ 请指定密钥应有效的时间。 ”选项,请按Return / Enter键选择默认值。

  9. 对于“ 这是正确的吗?(y / N) ”选项,输入y并按Return / Enter键。

  10. 在“ 真实姓名: ”下,输入您选择的名称,然后按Return / Enter键。

  11. 在“ 电子邮件地址: ”下,输入您选择的电子邮件地址,然后按Return / Enter键。

  12. 如果您选择的话,“ 注释:”部分可以留为空白。

  13. 如果您输入的信息不正确,请进行必要的更改。如果您对显示的USER-ID信息感到满意,请输入O(大写字母O,而不是零),然后按Return / Enter键。

  14. GnuPG现在将提示您创建并验证密钥对的密码。

  15. 输入密码后,将.gnupg在用户目录下的目录下创建GnuPG密钥对。

  16. 运行此命令以显示.gnupg目录的内容。它应该包含以下目录private-keys-v1.d和文件pubring.gpgpubring.gpg~random_seedsecring.gpgS.gpg-agenttrustdb.gpg

    ls -la .gnupg
    
  17. 导出创建的密钥对。该--export指示的GnuPG选项可导出密钥对。该-a选项指示GnuPG来输出密钥对ASCII保护格式。将“ Joe Q. Public ” 替换为您在上面的步骤10中创建密钥对时输入的名称。用您选择的任何文本替换“ jqpublic ”。

    gpg --export -a 'Joe Q. Public' > RPM-GPG-KEY-jqpublic
    
  18. 将密钥对导入RPM密钥库。用在步骤17中选择的文本替换“ jqpublic ”。

    sudo rpm --import RPM-GPG-KEY-jqpublic
    
  19. 验证密钥对已添加到RPM密钥库中。该--q GPG-PUBKEY选项查询RPM GnuPG的密钥库。的%{名称} - %{版本} - %{释放} - >%{摘要} \ n结果显示在人类可读的格式。

    rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
    
  20. 通过创建.rpmmacros file,可以自定义RPM以执行分配的行为(例如:简化RPM的自动签名)。使用该nano程序创建文件。

    nano .rpmmacros
    
  21. 然后,将以下文本添加到.rpmmacros文件中。

    %_gpg_name  Joe Q. Public
    %_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}
    %_signature gpg
    %_topdir %(echo $HOME)/rpmbuild
    
  22. 通过输入以下键盘组合来保存文档。该CTRL + X键。然后,按S键。最后,按回车键。

  23. 下面的命令将设置您的RPM构建环境。这会将其他宏附加到.rpmmacros您在步骤20中创建的文件,并创建用于构建和存储RPM的必需目录。

    rpmdev-setuptree
    
  24. 运行此命令以显示rpmbuild目录的内容。它应包含以下目录SOURCESRPMSBUILDSRPMSSPECS

    find rpmbuild
    
  25. 将TaskServer(taskd)源代码下载到该rpmbuild/SOURCES目录。

    wget https://taskwarrior.org/download/taskd-1.1.0.tar.gz -P rpmbuild/SOURCES/
    
  26. 终止正在运行的rgnd进程。

    sudo kill -9 rngd
    

步骤3:从源代码构建TaskServer(任务式)RPM

  1. 为了从源代码构建新的RPM,必须创建TaskServer(任务化)SPEC文件。

    nano rpmbuild/SPECS/taskd.spec
    
  2. 将以下文本添加到taskd.spec文件中。

    Name:           taskd
    Version:        1.1.0
    Release:        1%{?dist}
    Summary:        Secure server providing multi-user, multi-client access to task data
    Group:          Applications/Productivity
    License:        MIT
    URL:            http://tasktools.org/projects/taskd.html
    Source0:        http://taskwarrior.org/download/%{name}-%{version}.tar.gz
    Source1:        taskd.service
    Source2:        taskd-config
    Source3:        taskd.xml
    
    BuildRequires:  cmake
    BuildRequires:  libuuid-devel
    BuildRequires:  gnutls-devel
    BuildRequires:  shadow-utils
    
    
    %if 0%{?rhel} && 0%{?rhel} <= 6
    # On rhel, we don't need systemd to build.  but we do on centos.        
    # ...just to define some macros
    %else
    BuildRequires:  systemd
    %endif
    
    # For certificate generation        
    Requires:       gnutls-utils
    
    # Systemd requires
    Requires(post):    systemd
    Requires(preun):   systemd
    Requires(postun):  systemd
    
    %description
    The TaskServer is a lightweight, secure server providing multi-user,
    multi-client access to task data.  This allows true syncing between desktop and
    mobile clients.
    
    Users want task list access from multiple devices running software of differing
    sophistication levels to synchronize data seamlessly.  Synchronization requires
    the ability to exchange transactions between devices that may not have
    continuous connectivity, and may not have feature parity.
    
    The TaskServer provides this and builds a framework to go several steps beyond
    merely synchronizing data.
    
    %prep
    %setup -q %{name}-%{version}
    
    %build
    %cmake
    make %{?_smp_mflags}
    
    %install
    make install DESTDIR=%{buildroot}
    
    mkdir -p %{buildroot}%{_sharedstatedir}/taskd/
    
    # Users will keep their keys here, but we copy some helpful scripts too.
    mkdir -p %{buildroot}%{_sysconfdir}/pki/taskd/
    cp -a pki/generate* %{buildroot}%{_sysconfdir}/pki/taskd/.
    
    mkdir -p %{buildroot}%{_localstatedir}/log/taskd/
    
    %if 0%{?rhel} && 0%{?rhel} <= 6
    # EL6 and earlier needs a sysvinit script
    # Also, no firewalld on old EL
    %else
    mkdir -p %{buildroot}%{_unitdir}/
    cp -a %{SOURCE1} %{buildroot}%{_unitdir}/taskd.service
    
    mkdir -p %{buildroot}%{_prefix}/lib/firewalld/services
    cp -a %{SOURCE3} %{buildroot}%{_prefix}/lib/firewalld/services/taskd.xml
    %endif
    
    mkdir -p %{buildroot}%{_sharedstatedir}/taskd/orgs/
    cp -a %{SOURCE2} %{buildroot}%{_sharedstatedir}/taskd/config
    
    rm -r %{buildroot}%{_datadir}/doc/taskd/
    
    %pre
    getent group taskd >/dev/null || groupadd -r taskd
    getent passwd taskd >/dev/null || \
        useradd -r -g taskd -d %{_sharedstatedir}/taskd/ -s /usr/bin/sh \
        -c "Task Server system user" taskd
    exit 0
    
    # Systemd scriptlets
    %if 0%{?rhel} && 0%{?rhel} <= 6
    # No systemd for el6
    %else
    
    %post
    %systemd_post taskd.service
    
    %preun
    %systemd_preun taskd.service
    
    %postun
    %systemd_postun_with_restart taskd.service
    
    %endif
    
    
    %files
    %doc AUTHORS COPYING ChangeLog NEWS README
    %{_bindir}/taskd
    %{_bindir}/taskdctl
    %{_mandir}/man1/taskd.1.*
    %{_mandir}/man1/taskdctl.1.*
    %{_mandir}/man5/taskdrc.5.*
    
    %{_sysconfdir}/pki/taskd/generate*
    
    %dir %attr(0750, taskd, taskd) %{_sysconfdir}/pki/taskd/
    %dir %attr(0750, taskd, taskd) %{_localstatedir}/log/taskd/
    
    %dir %attr(0750, taskd, taskd) %{_sharedstatedir}/taskd/
    %config(noreplace) %attr(0644, taskd, taskd) %{_sharedstatedir}/taskd/config
    %dir %attr(0750, taskd, taskd) %{_sharedstatedir}/taskd/orgs/
    
    %if 0%{?rhel} && 0%{?rhel} <= 6
    # No sysvinit files for el6
    %else
    %{_unitdir}/taskd.service
    %{_prefix}/lib/firewalld/services/taskd.xml
    %endif
    
    %changelog
    * Thu Aug 17 2017 Jarrett Graham <[email protected]> - 1.1.0
    - Initial packaging.
    
  3. RPM还需要在rpmbuild/SOURCES目录中创建三个附加文件。使用该nano程序创建taskd-config文件。

    nano rpmbuild/SOURCES/taskd-config
    
  4. 将以下文本添加到taskd-config文件中。

    # taskd configuration file
    confirmation=1
    verbose=1
    ip.log=on
    extensions=/usr/libexec/taskd
    queue.size=10
    request.limit=1048576
    server=0.0.0.0:53589
    root=/var/lib/taskd
    log=/var/log/taskd/taskd.log
    pid.file=/var/run/taskd.pid
    ca.cert=/etc/pki/taskd/ca.cert.pem
    server.cert=/etc/pki/taskd/server.cert.pem
    server.key=/etc/pki/taskd/server.key.pem
    server.crl=/etc/pki/taskd/server.crl.pem
    
  5. 使用该nano程序创建taskd.service文件。

    nano rpmbuild/SOURCES/taskd.service
    
  6. 将以下文本添加到taskd.service文件中。

    [Unit]
    Description=Secure server providing multi-user, multi-client access to task data
    After=network.target
    Documentation=https://tasktools.org/projects/taskd.html
    
    [Service]
    ExecStart=/usr/bin/taskd server --data /var/lib/taskd
    Type=simple
    User=taskd
    Group=taskd
    
    [Install]
    WantedBy=multi-user.target
    
  7. 使用该nano程序创建taskd.xml文件。

    nano rpmbuild/SOURCES/taskd.xml
    
  8. 将以下文本添加到taskd.xml文件中。

    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>Task-warrior server</short>
      <description>This option allows you to connect to the task warrior server.</description>
      <port protocol="tcp" port="53589"/>
    </service>
    
  9. 为了构建TaskServer(任务式)RPM,需要三个软件包来进行构建。运行以下命令以安装这些软件包。

    sudo yum install cmake libuuid-devel gnutls-devel gnutls-utils -y
    
  10. 现在是时候从源代码进行构建,并为TaskServer(taskd)创建RPM。运行以下命令以开始使用。在1x CPU Vultr实例上花费不到一分钟的时间即可构建RPM。出现提示时,输入您在步骤#14中创建的GnuPG密码以签署RPM。

    cd rpmbuild/SPECS/
    rpm -ba -sign taskd.spec
    
  11. 安装TaskServer(任务式)RPM。

    cd
    sudo rpm -ivh rpmbuild/RPMS/x86_64/taskd-1.1.0-1.el7.centos.x86_64.rpm
    

步骤4:配置TaskServer(任务)

  1. 为了使TaskServer(taskd)与TaskWarrior(task)客户端进行通信和同步,您将需要使用下面的生成脚本/etc/pki/taskd/来生成服务器和客户端证书/密钥。使用以下命令提升为root用户,并将目录更改为/etc/pki/taskd

    sudo su -
    cd /etc/pki/taskd/
    
  2. 使用该nano程序创建vars文件以生成自签名的根CA。

    nano vars
    

    将以下文本添加到vars文件中。将ORGANIZATIONCNCOUNTRYSTATELOCALITY更改为您满意。

    BITS=4096
    EXPIRATION_DAYS=365
    ORGANIZATION="Vultr.com Inc."
    CN=taskd.example.com
    COUNTRY=US
    STATE="New York"
    LOCALITY="New York"
    
  3. 生成自签名的根CA,证书,服务器密钥和服务器吊销列表(可选)。

    ./generate.ca
    ./generate.server
    ./generate.crl
    

    这些命令将创建下列文件(ca.cert.pemca.key.pemserver.cert.pemserver.key.pemserver.crl.pem里面)/etc/pki/taskd/目录。为了启动TaskServer(taskd),必须修改在步骤#37中生成的证书和密钥的所有权和权限,以允许TaskServer(taskd)访问它们。运行以下命令进行更改。

    chown taskd.taskd ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem
    chmod 400 ca.cert.pem ca.key.pem server.cert.pem server.crl.pem server.key.pem
    
  4. 启用并启动TaskServer(taskd)守护程序。

    systemctl enable taskd
    systemctl start taskd
    
  5. 在防火墙中打开端口TaskServer(taskd)运行。

    firewall-cmd --permanent --zone=public --add-port=53589/tcp
    firewall-cmd --reload
    

    现在已在CentOS 7实例上安装并设置TaskServer(任务)。

步骤5:配置TaskWarrior客户端证书和密钥

  1. 您必须创建客户端证书和密钥来加密TaskServer(任务)和TaskWarrior(任务)之间的通信。运行以下命令以生成客户端证书和密钥。替换NAME为您的客户容易识别的名称。

    generate.client NAME
    

    该命令将创建下列文件(NAME.cert.pemNAME.key.pem中)的内部/etc/pki/taskd/目录。

  2. 将以下文件复制到您的用户目录,更改所有权和权限。用您的实际用户名目录替换下面的joeqpublic

    cp ca.cert.pem NAME.cert.pem NAME.key.pem /home/joeqpublic/
    chown joeqpublic.joeqpublic /home/joeqpublic/*.pem
    chmod 400 /home/joeqpublic/*.pem
    
  3. 创建证书和密钥的zip存档。

    zip certficates.zip ca.cert.pem NAME.cert.pem NAME.key.pem
    
  4. 使用scp(命令行)或WinSCP(SCP的GUI前端)将certificates.zip文件从CentOS实例下载到客户端设备(计算机/笔记本电脑/智能手机)。

  5. 放弃root用户特权,然后以普通用户身份执行其余命令。

    exit
    

    现在已设置TaskServer(任务)并准备好与TaskWarrior(任务)客户端连接。

步骤6:创建您的第一个TaskWarrior组和用户

  1. 为了创建,删除,修改和同步任务,您将需要一个用户帐户。但是,在添加用户之前,您首先需要创建一个组织组。运行以下命令以创建第一个组。用易于识别的名称替换GROUP

  2. 重要!taskd创建组/用户的命令必须以taskd用户身份运行。以root用户身份运行将创建该root用户拥有的目录和文件,在/var/lib/taskd/orgs这些目录和文件下,TaskWarrior(任务)客户端无法访问或修改已分配给它们的组中的任何内容。访问将被拒绝。

    sudo -u taskd taskd add org GROUP --data /var/lib/taskd
    
  3. 现在,您已经创建了第一个组,让我们创建您的第一个用户。运行以下命令以创建分配给在步骤#1中创建的组的用户。将生成的用户密钥,用户和组复制并粘贴到文本文件中。重复该过程以添加其他用户。

    sudo -u taskd taskd add user GROUP 'Joe. Q. Public' --data /var/lib/taskd
    

步骤7:安装TaskWarrior客户端

Windows 10(建于1607年以后的版本)

要在Windows 10上使用TaskWarrior(任务),您需要从Windows应用商店安装适用于LinuxWindows子系统

  1. 要安装WSL,需要提升的Powershell提示。按Window键,然后键入powershell。右键单击结果顶部的Windows Powershell,然后选择“ 以管理员身份运行 ”。在“用户帐户控制”提示下,单击“ 是”。复制并粘贴下面在Powershell窗口中找到的文本。WSL完成安装后,按Y键重新启动Windows。

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    
  2. 重新引导后,打开命令提示符,然后键入以下命令bash。这将在Windows上安装Ubuntu。按Y键。现在将下载并提取它。选择一个用户名和密码。

    bash
    
  3. 现在是时候安装TaskWarrior(任务)了。在控制台中键入以下命令。

    sudo apt-get install task -y
    
  4. 类型退出两次退出了庆典终端和Windows命令提示符。

  5. 单击开始菜单按钮。键入ubuntu在Windows上的Ubuntu上右键单击Bash。选择固定到任务栏。这为快速访问bash以访问TaskWarrior(任务)提供了便利。

  6. 单击您刚刚在任务栏上创建的Ubuntu图标。这将打开一个运行Bash的终端窗口。在下面键入以下命令以创建TaskWarrior(任务)数据目录(~/.task/)和配置文件(.taskrc)。

    task version
    yes
    
  7. 您需要将certificates.zip之前在TaskServer安装过程中保存的文件移到~/.taskd/用户目录内的目录中。要从zip文件中提取文件,请unzip首先安装该程序。将以下命令复制并粘贴到下面,以替换您的的实际位置certificates.zip

    sudo apt-get install unzip -y
    cp /mnt/c/User/WINDOWSUSER/Desktop/certificates.zip .
    cd .task
    unzip ../certificates.zip
    cd
    
  8. 键入以下命令来设置TaskWarrior(任务)以与TaskServer(任务)连接。将NAME替换为您命名的证书和密钥,将GROUP替换为您创建的组,将Joe Q. Public替换为您创建的用户名,并将XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX替换为用户时分配的密钥是在TaskWarrior(任务)服务器上创建的。

    task config taskd.ca -- ~/.task/ca.cert.pem
    task config taskd.certificate -- ~/.task/**NAME**.cert.pem
    task config taskd.key -- ~/.task/**NAME**.key.pem
    task config taskd.server -- taskd.example.com:53589
    task config taskd.credentials -- GROUP/Joe Q. Public/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
    
  9. 现在是时候将TaskWarrior(任务)与TaskServer(任务)同步了。运行以下命令以初始化数据库。

    task sync init
    

    现在,已在Windows 10平台上设置TaskWarrior(任务)客户端和TaskServer(任务)之间的同步。

安卓系统

要在Android上使用TaskWarrior(任务),您需要从Google Play商店安装Android版TaskWarrior

  1. 在Google的Play商店中安装TaskWarrior(任务)Android应用程序。

  2. 打开适用于Android应用程序的TaskWarrior(任务)。

  3. 应用程序将提示您创建一个具有所需帐户名的帐户。输入您为TaskServer(任务化)用户创建用户名时选择的名称。

  4. 将数据文件夹保留为默认设置<<<创建新>>,然后点击确定按钮。使用文件管理器应用在存储根目录中创建一个文件夹(例如:)/storage/emulate/0/Certs。将应用程序发送到后台。

  5. 复制certificates.zip您先前创建的文件,并将其内容提取到步骤4中创建的目录中。

  6. 前景“ Android TaskWarrior(任务)”应用程序,然后点击应用程序左上角的菜单以将其打开。

  7. 向下滚动到菜单底部,然后点击设置选项。

  8. 这将打开一个简单的内置TaskWarrior For Android应用程序文本编辑器。

  9. 输入以下选项以设置与TaskServer的同步(任务)。将taskd.ca/ taskd.certificate/ taskd.key`变量替换为实际的ca / certificate / key目录路径,将NAME替换为您命名的证书和密钥,将GROUP替换为创建的组,将Joe Q. Public替换为创建的用户名,XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX,并在TaskWarrior(任务)服务器上创建用户时分配了密钥。

    taskd.ca=/storage/emulate/0/Certs/ca.cert.pem
    taskd.certificate=/storage/emulate/0/Certs/NAME.cert.pem
    taskd.credentials=GROUP/Joe Q. Public/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
    taskd.key=/storage/emulate/0/Certs/NAME.key.pem
    taskd.server=taskd.example.com:53589
    
  10. 点击软盘图标以保存您的设置。

现在,已在Android平台上设置了TaskWarrior(任务)客户端和TaskServer(任务)之间的同步。

的Linux

  1. 请参阅TaskWarrior(任务)发行版部分以针对您的特定Linux发行版进行安装。

  2. 打开一个终端窗口。在下面键入以下命令以创建TaskWarrior(任务)数据目录(~/.task/)和配置文件(.taskrc)。

    task version
    yes
    
  3. 您需要将certificates.zip先前在TaskServer设置中保存的文件移动到~/.taskd/用户目录内的目录。要从zip文件中提取文件,请unzip首先为您的特定发行版安装程序。在下面复制并粘贴以下命令,以替换您的副本的实际位置certificates.zip

    cp /location/of/certificates.zip .
    cd .task
    unzip ../certificates.zip
    cd
    
  4. 键入以下命令来设置TaskWarrior(任务)以与TaskServer(任务)连接。将NAME替换为您命名的证书和密钥,将GROUP替换为您创建的组,将Joe Q. Public替换为您创建的用户名,并将XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX替换为用户时分配的密钥是在TaskWarrior(任务)服务器上创建的。

    task config taskd.ca -- ~/.task/ca.cert.pem
    task config taskd.certificate -- ~/.task/**NAME**.cert.pem
    task config taskd.key -- ~/.task/**NAME**.key.pem
    task config taskd.server -- taskd.example.com:53589
    task config taskd.credentials -- GROUP/Joe Q. Public/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
    
  5. 现在是时候将TaskWarrior(任务)与TaskServer(任务)同步了。运行以下命令以初始化数据库。

    task sync init
    

附录:如果运行Gnome Shell,则有一个名为TaskWhisper的扩展程序,它与TaskWarrior(任务)集成在一起。

现在,您最喜欢的Linux发行版中已设置TaskWarrior(任务)客户端和TaskServer(任务)之间的同步。



Leave a Comment

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息