2023年4月

下次你需要头脑风暴、组织想法或计划项目时,不妨试试 Draw.io

 title=

地图有一些特别之处。我记得小时候打开托尔金《霍比特人》的封面,盯着手绘的中土世界地图,感受简单的图画中蕴含着丰富的可能性。除了描述事物与其他事物之间的关系这一明显目的外,我认为地图在表达可能性方面做得很好。你可以到户外去,沿着这条路或那条路走,如果你这样做了,去想想你将能够看到的所有新的、令人兴奋的事物。

尽管如此,地图并不一定是有价值和充满可能性的文字。有些地图描述了一个思维过程、计划、算法,甚至是一些随机的想法,这些想法拼命地想要组合成一件潜在的艺术作品,它们被称之为“思维导图”、“流程图”或“创意板”。可以用开源的 Draw.io 应用程序去很容易地制作。

安装 Draw.io

Draw.io 是一个开源的在线应用程序,因此你可以将其作为在线应用程序使用,下载 桌面版本,或 克隆 Git 存储库 并将其托管在你自己的服务器上。

使用 Draw.io 画图

当你第一次启动 Draw.io 时,你需要选择保存数据的位置。如果你自己托管 Draw.io,你的选择取决于你可以访问哪些 API 密钥。你可以从几个在线存储服务中为在线公共实例进行选择,这取决于你的帐户。如果你不想把你的数据存储在别人的服务器上,你也可以选择把你的工作保存在本地存储上。如果你还不确定,可以单击 “ 稍后决定 Decide later ” 继续进入应用程序,而无需选择任何内容。

Draw.io 的交互界面中间有一个很大的工作空间,左边是主工具栏,顶部是工具栏,右边是属性面板。

 title=

工作流程很简单:

  1. 从左侧工具栏中选择一个形状。
  2. 在工作空间中编辑形状。
  3. 添加另一个形状,并连接它们。

重复这个过程,你就得到了一张图。

 title=

项目规划

当你第一次接受一项大任务时,你通常对你想要的结果有一个非常清晰的想法。假设你想开始一个社区项目来画一幅壁画。你想要的结果是一幅壁画。它很容易定义,你可以或多或少地在脑海中描绘出结果。

然而,一旦你开始朝着目标前进,你就必须开始弄清楚细节。壁画应该画在哪里?即便知道画在哪,你如何获得在公共墙上作画的许可的?油漆呢?你应该用一种特殊的油漆吗?你会用刷子还是喷枪涂油漆?你需要什么样的专业设备来喷漆?画一幅壁画需要多少人和多长时间?画家工作时的支持服务怎么样?最后,这幅画是关于什么的?一个想法很快就会变得势不可挡,因为你离实现它越近。

这不仅仅适用于绘制壁画、制作戏剧或电影。它几乎适用于任何不平凡的努力。这正是像 Draw.io 这样的应用程序可以帮助绘制的。

以下是如何使用 Draw.io 创建项目流程图:

  1. 从头脑风暴开始。没有什么想法是太小或太大的。为每个想法制作一个框,然后双击 Draw.io 工作空间中的框以输入文本。
  2. 一旦在工作空间中你产生了可能想到的所有想法,就可以将它们拖放到相关的组中。我们的目标是创建一些小任务云或集群,因为它们是同一过程的一部分,所以或多或少会一起进行。
  3. 一旦你确定了相关任务的集群,就为这些任务命名。例如,如果你正在绘制壁画,那么任务可能是 “许可”、“设计”、“购买”、“绘制”,这反映出你需要首先获得当地政府的许可,然后设计壁画,然后购买用品,最后绘制壁画。每个任务都有组成部分,但大体上,你现在已经确定了项目的工作流程。
  4. 用箭头连接主要任务。并不是所有的过程都是完全线性的。例如,在你获得市议会的许可后,一旦你设计了你打算画的东西,你可能必须回到他们那里进行最终批准。这很正常。这是一个循环,有一些来回,但最终,你会突破这个循环,进入下一阶段。
  5. 掌握好你的流程图,完成每一项任务,直到你达到最终目标。

思维导图

思维导图往往不是关于进步,而是关于保持某种状态或对许多想法进行展望。例如,假设你已经决定减少生活中的浪费。你对自己能做什么有一些想法,但你想组织和保存你的想法,这样你就不会忘记它们。

以下是如何使用 Draw.io 创建思维导图:

  1. 从头脑风暴开始。没有什么想法是太琐碎或太大的。为每个想法制作一个框,然后双击 Draw.io 工作空间中的框以输入文本。也可以通过选择框并单击右侧属性面板中的色样,为框指定背景色。
  2. 将你的想法分组或分类。
  3. 可以选择将想法与彼此直接相关的箭头连接起来。

 title=

保存你的图表

你可以将图表保存为 PNG、JPG 图像、Draw.io XML 或纯 XML 文件。如果将其另存为 XML,则可以在 Draw.io 中再次打开它进行进一步编辑。导出的图像非常适合与他人共享。

使用 Draw.io

有很多很棒的绘图应用程序,但我不经常制作图表,所以可以随时使用 Draw.io。它的界面简单易用,结果干净专业。下次当你需要头脑风暴、组织想法或计划项目时,可以试试 Draw.io。


via: https://opensource.com/article/21/12/open-source-mind-mapping-drawio

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

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

这种有趣的开源语言是学习编码真正的完美选择。

在这篇文章中,我将介绍一个最好的编码语言,学习如何制作任何东西!它叫做 Emojicode,是由 Theo Belaire 在 2014 年创建的,它是一种开源的编程语言,使用 emoji 字符来表示其语法。当用 Emojicode 开发时,表情符被用来创建变量、函数和控制结构。因为它是一种静态类型的语言,变量类型必须在使用前声明,但它也支持类和继承等面向对象的概念。这种语言可以在每个操作系统上运行,它是一种超级有趣的编码方式,特别是当你是一个非英语母语的人时。这很有帮助,因为象形表示可以把我们大家聚集在一起,让我们以类似数学的方式说同样的语言。

先决条件

在本教程中,我使用的是基于 Debian 的操作系统。我的工具可能与你的操作系统的要求不同。以下是我所使用的工具:

  • Geany,一个 Linux 下的开源 IDE。
  • IBus,它允许你挑选表情符并把它们放在你的编辑器中。我使用的界面被称为 emoji picker
  • 基于 Debian 的 Linux。
  • 一个 C++ 编译器。我使用的是 g++ 编译器。
  • Emojicode

我使用的是 Linux 操作系统,但你可以 阅读文档 了解在其他操作系统上使用它时可能需要采取的任何特殊步骤。

在 Linux 上安装 Emojicode

有几种方法可以在你的电脑上安装 Emojicode,但它们有一个很酷的 神奇的安装页面,可以告诉你具体该怎么做。下面是我的做法:

$ wget https://github.com/emojicode/emojicode/releases/download/v1.0-beta.2/Emojicode-1.0-beta.2-Linux-x86_64.tar.gz -O emojicode.tar.gz \
    && tar -xzf emojicode.tar.gz && rm emojicode.tar.gz \
    && cd Emojicode-1.0-beta.2-Linux-x86_64 && ./install.sh \
    && cd .. && rm -r Emojicode-1.0-beta.2-Linux-x86_64

Emojicode 的安装过程提供了有用的反馈。

The emojicode installation procedure provides useful feedback along the way.

现在,你已经安装好了,是时候开始编写代码了!

它是怎么运作的?

首先,所有 Emojicode 文件的扩展名都以文件名 .? 结尾,但因为你不能在一般的文件名中这样做,所以它被翻译成 filename.emojic。这里是最重要的语法元素:

  • ? 放在一行的开头,表示要执行哪些代码块
  • ? 开始一个代码块
  • ? 来结束一个代码块
  • 想打印什么吗?就用 ? ? <string> ? ❗

还有很多其他的,所以这里有一些实际的例子。

打印一首俳句

首先,试着打印一首漂亮的俳句来玩玩吧! 在这个例子中,我将添加一行注释。看看你是否能识别它。

??
? This is a single line comment for fun
? ?Emojicode is great,? ❗
? ?Fun and expressive code,? ❗
? ?no sadness, just joy.? ❗
?

现在我们需要保存我们的代码,并通过我们的编译器运行它,使之成为一个漂亮的可执行文件:

$ emojicodec haiku.emojic 
$ ls
haiku  haiku.emojic  haiku.o

正如你所看到的,代码已经被编译并生成了两个文件,其中一个是可执行的。运行 haiku 文件:

$ ./haiku 
Emojicode is great,
Fun and expressive code,
no sadness, just joy.

数学和变量操作

接下来,你要同时做几件事:一点点数学和变量的改变。首先,将一个变量赋值为 0:

0 ➡️ ??x

你刚刚使用蜡笔(?)表情符、新建(?)表情符和变量名称创建了一个新变量,同时还将该变量赋值为 0。

接下来,用磁铁(?)表情符打印一行包括该变量的内容:

? ?The value is ?x? ? ❗

接下来,使用加号()和箭头(⬅️)表情符改变变量:

x ⬅️➕ 1

然后打印另一行的值。如此这般,然后打印出最终的数值。如下:

? ?

?Updating a variable using math 
0 ➡️ ??x
? ?The value is ?x? ? ❗

x ⬅️➕ 1
? ?The value is ?x? ? ❗

x ⬅️➕ 15
? ?The value is ?x? ? ❗

x ⬅️➖ 9
? ?The value is ?x? ? ❗

x ⬅️➗ 2
? ?The final value is ?x? ? ❗
?

接下来,用 emojicodec 编译代码,然后用你的可执行代码来看看结果:

$ emojicodec math.emojic 
$ ./math 
The value is 0 
The value is 1 
The value is 16 
The value is 7 
The final value is 3

如你所见,作为变量打印出来的所有内容都已使用新数学进行了更新。你可以用许多数学表情符来进一步操作。下面是一些更多的运算符:

? is your modulo
◀ Less than
▶ Greater than
◀? less than or equal to
▶? greater than or equal to

Emojicode 的怪癖

当我在文档中来回查看时,我发现了一些有趣的怪癖。其中之一是,当从用户那里抓取输入时,由于一些已知的编译器问题,耳朵的肤色很重要。

获取用户输入的动作是这样的:

??▶️??❗️

获取和分配用户输入的操作是这样的:

??▶️??❗️ ➡️ inputText

我试图让它工作,我的编译器出现了一些问题,我发现了这个问题。你也可能会在这里和那里遇到一些小问题。如果你遇到了,请创建一个 议题,这样它就有可能被修复。

没有技巧,只有很棒的代码

虽然我可以介绍更多内容,但我可以向你保证,这段令人惊叹的代码背后的文档非常丰富。尽管我写这篇文章只是为了赶上愚人节的乐趣,但我不得不承认这是有史以来最好的语言之一,因为它教会了你很多非常真实的编程概念。我恳切地建议把它作为一种有趣的方式来教你的一些朋友、孩子,或者是对编码感兴趣的同学。希望你度过了一个充满乐趣的愚人节!


via: https://opensource.com/article/23/4/emojicode

作者:Jessica Cherry 选题:lkxed 译者:geekpi 校对:wxy

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

谷歌要求安卓应用必须可以删除账户和数据

谷歌宣布,其安卓应用商店上的应用很快就必须让你可以在应用内和网页上删除账户及其数据。当用户要求完全删除账户时,开发者也必须擦除账户的数据。该政策还要求,你可以删除某些数据(比如你上传的内容),而不必完全删除你的账户;此外,它还确保你不必为了清除你的信息而重新安装应用程序,通过网页就可以进行。该政策将分阶段生效。谷歌的应用商店将在 2024 年初开始显示这些变化。而苹果的应用商店已经在几个月前制定了类似政策。

消息来源:Engadget
老王点评:苹果和谷歌的应用商店还比较值得相信。至少这些商店不会放纵恶意应用。大家知道我说的是什么。

谷歌公布其训练 PaLM 模型的超级计算机细节

谷歌的 PaLM 模型是迄今为止其公开披露的最大的语言模型,谷歌通过将其分割到由 4,000 个芯片组成的两台超级计算机上,历时 50 天训练而成。此外,Midjourney 也使用该系统来训练其模型。谷歌称,对于同等规模的系统,采用这些芯片比基于英伟达 A100 芯片的系统快 1.7 倍,省电 1.9 倍。但谷歌没有与英伟达目前的旗舰产品 H100 芯片进行比较,因为 H100 是在谷歌的芯片之后上市的,而且是用更新的技术制造的。

消息来源:路透社
老王点评:AI 的发展兜了一圈,终究还是芯片和计算能力的比赛。

Meta 将推出创造广告的生成型人工智能

Meta 称,“大型语言模型开发中的相当多的技术是由我们的团队开创的,……在几个月前刚刚创建了一个新的团队,生成性人工智能团队”。他们认为人工智能可以提高广告的有效性,部分原因是告诉广告商在制作广告时应该使用什么工具。公司不用在广告活动中使用单一的图像,而是可以让人工智能制作适用于不同受众的图像。

消息来源:日经新闻
老王点评:有人用 AI 拯救(或毁灭)世界,而有人用 AI 来制作广告和让广告更无孔不入。

在发表这篇文章之前,我解释了如何为一个单用户系统 在 NixOS 中安装和删除软件包

但是,如果你正在供多个用户使用,有一个很好的方法来分别满足每个用户的需求。

在本指南中,我将指导你如何在 NixOS 上设置一个 主目录管理器 Home Manager ,以及如何使用它来安装软件包。

如果你是新读者,本系列中讨论的一些资源包括:

在 NixOS 上设置主目录管理器

在本指南中,我将指导你通过 2 种方式来设置主目录管理器:

  • 独立的主目录管理器(使用单独的配置文件)
  • 作为一个 NixOS 模块(在 configuration.nix 文件中使用它)

那么,让我们从独立方式开始。

独立安装的主目录管理器

如果你使用的是 NixOS 的稳定频道,你可以使用以下命令来配置主目录管理器:

nix-channel --add https://github.com/nix-community/home-manager/archive/release-22.11.tar.gz home-manager

在编写本指南时,稳定版是 22.11

如果你在一个不稳定的频道上,请使用以下命令:

nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager

无论你使用稳定版还是不稳定版,下面的步骤都是一样的。

一旦完成,更新频道:

nix-channel --update

最后,使用下面的命令来安装主目录管理器:

nix-shell '<home-manager>' -A install

?️ 在安装时,可能会出现以下错误:

安装主目录管理器时出现构建错误

重新启动你的系统并再次使用安装命令,它将开始安装。

一旦完成,它将显示独立安装的主目录管理器的位置:

主目录管理器在NixOS中的位置

将主目录管理器安装为 NixOS 模块

⚠️ 如果你选择将主目录管理器作为 NixOS 模块使用,你将需要 sudo 权限。

如果你在一个稳定的频道上(在写本文的时候,是 22.11),你可以使用下面的命令来添加主目录管理器的稳定频道:

sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-22.11.tar.gz home-manager

如果你使用的是不稳定通道或主通道,则使用以下命令:

sudo nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager

一旦你使用上面的任何一条命令完成了添加频道的工作,就用下面的方法更新频道:

sudo nix-channel --update

接下来,用以下方法打开 configuration.nix 文件:

sudo nano /etc/nixos/configuration.nix

并在 imports [] 中添加以下一行:

<home-manager/nixos>

将主目录管理器安装为 NixOS 模块

现在,跳到该行的末尾,在 } 前添加以下内容:

home-manager.users.{username} = { pkgs, ... }: {
  home.packages = [ ] ;
  };

NixOS 配置文件中的主目录管理器模块的格式

上面这一行是为了方便安装和删除软件包而添加的,我接下来会告诉你。

现在,保存修改并退出 Nano 文本编辑器。

接下来,重建配置,并做一个切换:

sudo nixos-rebuild switch

但如果你使用的是稳定版,并使用上述命令,就会出现以下错误:

?️ 错误: 选项 home-manager.users.user.home.stateVersion 被使用但没有定义:

错误: 选项  已被使用但未被定义。

要解决这个问题,你必须在你的主目录管理器块中添加 home.stateVersion

在写这篇文章时,我正在运行 22.11,所以整个主目录管理器块看起来像这样:

home-manager.users.{username} = { pkgs, ... }: {
  home.stateVersion = "22.11";  
  home.packages = [ ] ;
  };

如何解决  选项被使用但没有定义。

保存修改,按 Ctrl+O,按回车键和 Ctrl+X 退出 Nano 文本编辑器。

现在,试着重建配置并再次进行切换,应该可以解决问题。

如何在 NixOS 上使用主目录管理器安装软件包

现在你已经安装了主目录管理器,如何用它来安装软件包:

使用独立安装的主目录管理器

首先,用下面的方法打开配置文件:

nano /home/$USER/.config/nixpkgs/home.nix

跳到行末,在 } 前添加以下代码块:

home.packages = [];

现在,你所要做的就是在这两个大括号之间写上软件包的名称。

例如,如果我想安装 htop,我将得输入以下内容:

home.packages = [pkgs.htop];

是的,你通常要在软件包的名称后面加上 pkgs.

但是,如果你想在每次安装新包时不使用 pkgs.,可以改变代码块的语法,如图所示:

home.packages = with pkgs; [];

而现在,你不再需要在每次安装时使用 pkgs.

home.packages = with pkgs; [htop];

例如,在这里,我想安装 htopfirefoxlibreoffice,所以我的 home 块会看起来像这样:

在 NixOS 上使用主目录管理器安装多个软件包

一旦你完成了添加你喜欢的软件包,保存配置文件并使用以下命令来安装软件包:

home-manager switch

使用 NixOS 模块方式

首先,用以下命令打开 configuration.nix 文件:

sudo nano /etc/nixos/configuration.nix

在配置部分,我已经添加了主目录管理器块,所以剩下的就是在 home.packages = [ ]; 里面添加软件包的名称,格式如图所示:

home.packages = [ pkgs.package_name ] ;
?我已经在上节提到软件包名称前你可以使用 pkgs.

例如,如果我想 安装 htop、Firefox 和 LibreOffice,那么我将添加:

pkgs.htop pkgs.firefox pkgs.libreoffice

然后我的主目录管理器块会看起来像这样:

作为 NixOS 模块在主目录管理器中安装多个软件包

现在,保存修改并退出文本编辑器。

接下来,重建配置并使用以下命令进行切换:

sudo nixos-rebuild switch

这是这样!软件包将很快被安装。

这就结束了

我认为你应该选择独立安装,因为你不需要使用超级用户的权限。另外,如果你运行一个有多个用户的系统,为不同的用户拥有不同的配置文件是相当方便的。

因此,除非你想用一个文件来实现各种目的,否则我认为没有其他理由使用模块选项。

就这样,我结束了 NixOS 的初学者系列。我希望它能给你一个足够好的平台来熟悉这个独特的 Linux 发行版。

? 你喜欢 NixOS 系列文章吗?对于 NixOS 的初学者,我们还有什么要介绍的吗?请提供你的宝贵意见。


via: https://itsfoss.com/home-manager-nixos/

作者:Sagar Sharma 选题:lkxed 译者:wxy 校对:wxy

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

开始一份新工作对任何人来说都让人害怕。下面是如何在你的第一份技术工作的早期阶段找到方向。

刚刚入职那几天确实令人害怕。 我现在依然可以清晰举出很多例子,例如在第一天上班前的晚上无法入睡,因为不知道第二天将要发生什么而内心崩溃。对于大多数人来说,开始一份新工作就像踏入未知领域。即使你已是行业的资深人士,不可否认的是,你内心可能还是会对即将发生的事情感到有点害怕。

可以理解的是,刚入职的时候你的事情很多。你要认识新的人,有新的项目和技术要了解,有文档要阅读,有教程要看完,还有没完没了的人事培训和要填的文件。这可能让你感觉压力山大,再加上你还面临着相当大程度的不确定性和未知数,以上种种能引起焦虑。

促使我写这篇文章有两个原因,首先是在我还是学生的时候,大部分讨论都围绕着如何找一份技术工作,却没有人谈论接下来发生的事情。如何在新角色中脱颖而出?现在回过头来看,我想我当时认为最困难的事情是得到一份工作,之后发生什么的一切我都可以自己弄清楚。

同样的,在我开始在这个行业工作之后,我发现大部分我看到的与职业相关的内容都是讨论如何从一个高级职位升到另一个高级职位。没有人真正谈论在此中间我们要做什么。实习生和初级工程师呢?他们在早期职业生涯中如何找到方向?

在拥有了三年全职软件工程师的经验(以及之前的几次实习)之后,我将这段时间的经历进行了复盘,并整理出一份我自己在适应新技术职位时使用过的技巧和诀窍清单。我想不只局限于前面的几个月,而是优先考虑如何让这段经历帮助你实现长期的成功。

反思现有的流程和文档

大多数新员工一开始要么拥有一大堆文档,要么根本没有。你可以将这视为一个机会,而不是被这两种可能性中的任何一种所淹没。

从现有文档中找到缺口,并想想你可以怎样为下一位入职的工程师做出这方面的改进。这不仅能显示你工作的主动性,还表明你致力于改进团队中的现有流程。

上述两种极端情况我都遇到过。我在没有任何文档的团队中工作过,也在一些更新文档方面很勤快的团队中工作过。对于前者,你的路径非常简单直接,你可以致力于创建那些缺失的文档。对于后者,你总是可以想办法改进已有的东西。有时,过多的书面文件也会让人感到害怕,尤其是对新员工而言。有些事情可能通过其他媒介进行更好地解释,比如视频教程或截屏。

勤问问题

我会建议你在开始一份新工作时研究一下公司是否会为你分配搭档。这在公司中是相当普遍的做法。工作搭档的主要作用是在你入职时为你提供帮助。我发现这非常有用,因为这个人能够针对你所有的问题给出指导,你就不必为了寻找合适的人或部门而四处奔波。

虽然我鼓励提问,但在提问之前也有必要做功课,包括:

  • 做好调查。这包括进行网络搜索、查看论坛和阅读现有文档。使用所有可用的工具。然而,给自己设定时间规划是很重要的。你必须平衡好尽职调查与牢记手头项目截止日期和可交付成果。
  • 说出来。作为母语不是英语的人,我建议你在提问之前大声把想法说出来。根据我的经验,我经常发现自己会用一种语言(通常是我的母语)思考但不得不用另一种语言来解释,而当我在一些困难的问题中挣扎时这一现象尤为突出。有时这颇有挑战性,因为经过翻译后的想法可能没那么容易理解。
  • 组织思绪。当你在为某件事而苦苦挣扎时,可能同时有很多不同的想法在你的脑海中翻来覆去。这些想法可能对你来说都挺有道理的,但对于别人来说却不一定说得通。对此,我建议你坐下来,收集你的想法,写下来,然后大声说出来。这一做法可确保当你在解释自己的思维过程时,你能按照预期进行流畅地表达出来,听众也可以紧跟你的思路。

这种方法称为橡皮鸭调试法,是开发人员在调试时的常见做法。背后的概念是,有时向第三方解释你的问题非常有助于你找到解决方案,同时也证明了你出色的沟通技巧。

尊重别人的时间。即使你在向你的搭档求助时,也要意识到他们也有自己的日常任务要完成。 我尝试过的一些事情包括:

  • 写下我的问题,然后留出一些时间与我的导师交流,以便与他们交谈。
  • 整理问题而不是反复寻求帮助,这样导师可以在他们有空的时候着手解决。
  • 安排 15-20 分钟的快速视频聊天,特别是如果你想共享屏幕,这一方法可以很好地展示你的发现。

我认为这些方法是更好的选择,因为这么做你能得到对方全部的关注,而不是在他们忙着其他事情的时候每隔几分钟打扰他们一下。

深入研究你的项目

即使在拥有出色文档的团队中,开始你的技术项目也可能非常艰巨,因为一个项目涉及多个部分。不过,随着时间的推移,你将了解团队是如何做事的。但是,通过记下一张实用清单,这包括基本项目设置、测试要求、审查和部署流程、任务跟踪和文档,你将迅速搞清楚一切,节省了你的时间和潜在的麻烦。

如果你开始的项目没有文档(我就遇到过这种情况),请看看你能不能找到当前或以前的项目所有者并了解基本的项目结构,这包括设置、部署等。

  • 确定你的团队在 IDE(集成开发环境)中的偏好。你可以自由使用你喜欢的 IDE,但使用和团队相同的 IDE 会比较好,尤其是在调试的时候,因为 IDE 的选择会影响调试。不同的 IDE 提供不同程度的调试支持。
  • 了解如何进行调试。我的意思不仅仅是使用打印语句(不是说这种方法有什么问题)。充分利用团队的经验!
  • 了解测试要求。这可能取决于项目的范围和团队的一般惯例,越早弄清楚要求,你在后期推送自己的修改请求时就会越有信心。
  • 可视化部署过程。这个过程可能因团队、公司等而异。无论这个过程是非正式或正式,请确保你了解自己提交的新代码是如何被部署至新环境中、部署流水线是什么样的、如何安全地部署代码更改、在构建失败后可以怎么做,如何回滚错误的更改,以及如何在生产环境中测试你的更改。
  • 了解工单流程。了解如何记录工单以及要求的详细程度。你会由此发现每个公司各不相同。有的公司希望我们每天提交工单以显示我们的进度。有的公司可能不需要如此详细。

基于我刚才提到的所有内容,我建议你可以在入职头几周内做一个有益的、一体化的练习——跟随模仿另一位工程师并进行结对编码。这么做让你可以端到端地观察整个流程,从派单给工程师到部署到生产中都清清楚楚。

如果刚入职几周时你还没有机会亲身实践,可能你会感到沮丧。为了解决这个问题,你可以让你的经理也给你派一些初级的单子。这些通常是一些小任务,例如代码清理或添加单元测试。不过,它们允许你修补代码库,这有助于提高你的理解并给你带来成就感,这在新工作的初期是非常鼓舞人心的。

当你遇到困难时尤其要大声说出来

我想强调一下当你碰到困难时沟通的重要性。遇到困难总是难免的,尤其是在一份新工作的最初几个月,尽管这可能会令人沮丧,但这正是你的沟通技巧大放异彩的地方。

  • 让工作中的阻碍和进步透明化。即使是像权限问题一样的小事(新员工常常遇到的障碍之一),也要确保你的经理知道。
  • 如果有些工作耽搁了,不要等到最后一天才向团队报告。你的项目延迟会推动许多其他事情的发展。对于一些必要的项目延迟请提前告知,以便你的经理可以与相关人员分享这一信息。
  • 不要因为匆忙而忘记全面测试代码的更改或为你的代码的写文档等事情。

获得技术大局观

获得技术大局观是我个人一直在努力改进的地方,并且我一直在积极改变自己对此的看法。

当年我开始实习时,我会非常专注于自己想学的东西。我会非常专注于我的项目,但对其他一切完全视而不见。多年后,我意识到对其他或相邻的项目视而不见可能不是最明智的。

首先,技术大局观会影响你对自身工作的理解。我曾经天真地以为,只要我专注于自己的项目就可以成为一名优秀的工程师。但事情并非如此。你应该花时间了解其他可能与你的项目有所交互的服务。你无需深入了解细节,但建立基本的理解也会大有帮助。

新员工的一个普遍经历是与公司其他人脱节,会有这种感觉很正常,尤其是在大公司。我是一个很快就会产生排斥感的人,所以当我刚到 Yelp 时 —— 这是一家比我以前的公司大得多的公司,项目规模也大得多,我优先考虑了解大局。我不仅努力建立对我的项目的理解,还认真了解了其他相邻项目。

在 Yelp 的头几周,我与团队中的其他各位工程师坐下来,请他们给我一个关于我将要做什么和项目的总体目标的概况。这种方法非常有用,因为我不仅根据工程师的资历和他们在项目上的工作时间得到了不同程度的解释,而且还加深了我对我将要从事的工作的理解。我参加这些会议的目的,是希望我对项目掌握的认识让我能够向街上的陌生人解释我所做的事。为此,我还请我的技术主管向我解释,当用户打开 Yelp 应用程序并搜索内容时,我的工作成果会在什么时候出现。

在这种情况下架构图也很有用,尤其是它能帮助你了解不同服务是如何交互的。

建立期望

在过去很长一段时间里,我以为自己只需要尽力而为,成为一名优秀的员工就行。只要我有在工作,达成目标,而且没有人投诉,那就足够好了,对吧?错!

你必须对你的职业有战略眼光。你不能只是将它外包给人们的一片好心,并希望自己只要达成了目标就能得到想要的结果。

  • 在你开始新工作的那一刻就建立明确的标准。这因公司而异,因为有些组织有非常明确的措施,而其他组织可能几乎没有。如果是后者,我建议你在头几周内找你的经理坐下来谈谈,制定并统一一个标准。
  • 确保你彻底了解公司将如何评估你以及采用什么方法进行评估。

我记得在我的第一份全职工作中,我对自己的第一次评估谈话一头雾水。整个谈话非常含糊不清,而且我对自己的长处、短处甚至可以如何改进都一无所知。

起初,我很容易地将一切都归咎于我的经理,因为作为新员工的我认为这是他们的工作,而不是我的职责。但随着时间的推移,我意识到,就我的绩效评估而言,我不能只是袖手旁观。你不能只做好工作并期望它就足够了。你必须积极参与到这些对话中。你必须确保你的努力和贡献被注意到。为了确保你的工作得到认可,你可以做很多事情,从定期参与技术设计对话到设置团建活动。

与建立期望相联系的还有积极寻求反馈的重要性。不要等到每三、四个月进行一次正式的绩效评估时才知道自己的表现如何。积极与你的经理建立反馈循环。虽然这听起来很可怕,但尝试定期进行寻求反馈的谈话。

在分布式团队中找到方向

在过去两年中我们的工作场所在不断变化,如今在远程和分布式团队中工作已成为常态,不再罕见。我列出了一些技巧,帮助你在分布式团队中快速找到工作方向:

  • 建立核心时间并将其设置在你的日历上。核心时间是你的团队一致同意的几个小时,在这段时间里,大家都明白自己应该在线并能随时响应。这样做很方便,因为会议只会安排在这个时间段,让你在计划自己一天的工作时更轻松。
  • 注意人们的时区和午餐时间。
  • 在虚拟世界中,你需要付出更大的努力来维持社交互动,而小小的心意却可以大大有助于让工作环境更加友好。其中包括:
  • 开始会议时,互相寒暄并询问人们周末/一天过得如何。这有助于打破僵局,让你能够与团队成员建立更私人的、超越工作的联系。
  • 建议定期举行非正式的虚拟聚会,与团队进行一些随意的闲聊。

维持工作生活间的平衡

在你职业生涯刚开始的时候,你很容易认为只要投入很多时间就能成功,特别是考虑到我们全天候待命的“忙碌文化”,以及认为建立生活工作的平衡是在职业生涯下阶段才需要考虑的想法。但这些想法与事实相去甚远,因为工作与生活的平衡不会神奇地发生在你身上。你需要积极和非常勤奋地去找到个人的平衡点。

没有工作与生活平衡的可怕之处在于它是慢慢蔓延到你身上的。刚开始是你下班后还在查看电子邮件,然后慢慢地,你开始周末也在工作,一直感到疲惫不堪。

我列出了一些提示,可以帮助你避免这种情况:

  • 关闭/暂停通知和电子邮件并将自己设置为离线。
  • 不要在周末工作。刚开始是你需要在这一个周末工作,但不知不觉间,你会发现自己大部分周末都在工作。不管是什么工作,它可以等到星期一。
  • 如果你是待命的工程师,请了解公司的相关政策。一些公司提供金钱补偿,而另一些公司可能会以休假代替。利用这个时间。不使用 PTO(带薪休假)和健康日等福利确实会缩短你的工作寿命。

总结

毫无疑问,开始一份新工作压力很大而且很困难。我希望这些方法和技巧会让你的头几个月变得更轻松,并为你在新职位上取得巨大成功做好准备。记住,勤沟通,确立职业目标,积极主动,有效地使用公司的工具。做到这些,我相信你会做得很好!


via: https://opensource.com/article/23/2/your-first-tech-job

作者:Fatima 选题:lkxed 译者:XiaotingHuang22 校对:wxy

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

德国法院裁定 Youtube-DL 的托管商败诉

德国法院已经命令托管服务商 Uberspace 将开源的 YouTube-DL 软件的网站下线。该裁决是由索尼、华纳和环球公司去年提起的版权侵权诉讼的结果,他们称,“YouTube-DL 的服务使用户可以在不付费的情况下翻录流媒体和下载受版权保护的音乐。”。Uberspace 将对判决提出上诉,他们认为,“该命令实际上相当于对 YouTube-DL 的全面禁止,没有考虑到该软件的潜在合法用途。”与此同时,Youtube-DL 的代码仍然可以在 GitHub 上找到。需要提及的是,原始版本的 YouTube-DL 在 GitHub 上的最后一个发布版本是 2021 年底发布的。而一些复刻版本还在继续活跃。

消息来源:Torrent Freak
老王点评:不知道下一步这个压力是否就会转移到 GitHub,比如不允许发布构建版本。

斯坦福大学发布人工智能状况报告

虽然现在人工智能发展之快,让任何与人工智能有关的报告一发布就面临过期的风险,但是我们仍然能从这份 386 页的 报告 中得到一些有用的信息:

  • 在过去的十年里,人工智能的发展已经从学术界主导翻转到了工业界主导,而且这没有改变的迹象。
  • 在传统基准上测试模型正变得困难,这里可能需要一种新的模式。
  • 人工智能训练和使用的能源占用正在变得相当大,但我们还没有看到它如何在其他地方增加效率。
  • 与人工智能相关的技能和工作岗位正在增加,但没有你想象的那么快。
  • 政策制定者们正在努力编写一个明确的人工智能法案,如果有的话,这是一个愚蠢的差事。
  • 投资已经暂时停滞,但这是在过去十年的天文数字般的增长之后。
  • 超过 70% 的中国、沙特和印度受访者认为人工智能的好处多于坏处。美国人呢?35%。
消息来源:Tech Crunch
老王点评:你看出来这些结论哪些不正确或不太正确吗?

采用通用密码的车库门设备

一个市场领先的车库门控制器充满了严重的安全和隐私漏洞。这些设备都采用了相同的容易找到的通用密码来与服务器进行通信,它也会广播未加密的电子邮件地址、设备 ID 以及开关门等信息。估计有超过 4 万台设备受到影响,这些设备位于住宅和商业地产中。任何有一定技术背景的人都可以在设备厂商的服务器上搜索到指定的电子邮件地址、设备 ID 或名称,然后向相关控制器发出指令。

消息来源:Ars Technica
老王点评:虽然我没车库,但是我依然惊讶于现在还有这样对安全毫无意识的厂家。