国内使用,如果没有添加国内源,下载时可能会非常的慢.目前了解的有两种方式,一种是添加国内的镜像源,另一种是为nuget设置代理由于个人对镜像源不是很感冒,一是担心版本更新不及时 ,二是担心安全问题(投毒),目前采用代理方式设置代理有两个办法办法一 直接修改配置文件本机全局配置文件所在地址:%AppData%\NuGet\NuGet.Config另外,应该可以在项目目录里添加NuGet.config 文件 ,实现各个项目不同的配置这是一个xml文件,例子如下:<?xml version="1.0" encoding="utf-8"?> <add key="http_proxy" value="http://localhost:20801" /> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> 方法二 使用 Nuget 命令行工具修改nuget.exe config -set http_proxy=http://localhost:20801要注意的点:一开始,按官方的文档,修改配置文件为: <add key="http_proxy" value="http://localhost:20801" /> <add key="http_proxy.user" value="" /> <add key="http_proxy.password" value="" />由于用的代理没有用户名和密码,所以在官方例子的基础上将用户名和密码置为空字符串.但是结果在使用时一直报错.后将 <add key="http_proxy.user" value="" /> <add key="http_proxy.password" value="" />两行删除后可以正常使用.参考:https://learn.microsoft.com/zh-cn/nuget/reference/nuget-config-file
本文转自 https://www.cnblogs.com/xuanlanbinfen/p/13100751.html1.下载个CryptoJS 我的是CryptoJS-v3.1.2 版本的var a = "a[a]/e:"; var b = "k3RA2bS97JlV5XPEueiqUA=="; var c = EncryptByAES(a, "1234567891234567"); var d = DecryptByAES(c, "1234567891234567"); // /// AES解密 /// /// 密文字节数组 /// 密钥（16位） /// 返回解密后的字符串 public static string DecryptByAES(string input, string key) { byte[] inputBytes = Convert.FromBase64String(input); byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 16)); using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider()) { aesAlg.Padding = PaddingMode.PKCS7; aesAlg.Mode = CipherMode.ECB; aesAlg.Key = keyBytes; aesAlg.IV = keyBytes; ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msEncrypt = new MemoryStream(inputBytes)) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srEncrypt = new StreamReader(csEncrypt)) { return srEncrypt.ReadToEnd(); } } } } } /// /// AES加密算法 /// /// 明文字符串 /// 密钥（16位） /// 字符串 public static string EncryptByAES(string input, string key) { byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 16)); using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider()) { aesAlg.Padding = PaddingMode.PKCS7; aesAlg.Mode = CipherMode.ECB; aesAlg.Key = keyBytes; aesAlg.IV = keyBytes; ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { swEncrypt.Write(input); } byte[] bytes = msEncrypt.ToArray(); var ddc = Convert.ToBase64String(bytes); byte[] inputBytes = Convert.FromBase64String(ddc); return ddc; } } } } /// /// 将指定的16进制字符串转换为byte数组 /// /// 16进制字符串(如：“7F 2C 4A”或“7F2C4A”都可以) /// 16进制字符串对应的byte数组 public static byte[] HexStringToByteArray(string s) { s = s.Replace(" ", ""); byte[] buffer = new byte[s.Length / 2]; for (int i = 0; i < s.Length; i += 2) buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16); return buffer; } /// /// 将一个byte数组转换成一个格式化的16进制字符串 /// /// byte数组 /// 格式化的16进制字符串 public static string ByteArrayToHexString(byte[] data) { StringBuilder sb = new StringBuilder(data.Length * 3); foreach (byte b in data) { //16进制数字 sb.Append(Convert.ToString(b, 16).PadLeft(2, '0')); //16进制数字之间以空格隔开 //sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' ')); } return sb.ToString().ToUpper(); } JS的 var a = "k3RA2bS97JlV5XPEueiqUA=="; var b = 'a[a]/e:'; var c = Encrypt2(b).toString(); var d = Encrypt3(b); var e = Decrypt2(a); var f = Decrypt3(a); function Encrypt2(text) { var key = CryptoJS.enc.Utf8.parse('1234567891234567'); var iv = CryptoJS.enc.Latin1.parse('1234567891234567'); var b = CryptoJS.AES.encrypt(a, key, { iv: iv, mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return b } function Encrypt3(text) { var key = CryptoJS.enc.Utf8.parse("1234567891234567"); var InDkn4 = CryptoJS.enc.Utf8.parse(text); var b = CryptoJS.AES.encrypt(InDkn4, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return b["toString"]() } function Decrypt2(text) { var key = CryptoJS["enc"]["Utf8"]["parse"]("1234567891234567"); var b = CryptoJS["AES"]["decrypt"](text, s3, { mode: CryptoJS["mode"]["ECB"], padding: CryptoJS["pad"]["Pkcs7"] }); // var t = CryptoJS["enc"]["Utf8"]["stringify"](b); return CryptoJS["enc"]["Utf8"]["stringify"](b)["toString"]() } function Decrypt3(text) { var key = CryptoJS.enc.Utf8.parse("1234567891234567"); var kIlnQ10 = CryptoJS.AES.decrypt(text, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); var t = CryptoJS.enc.Utf8.stringify(kIlnQ10); return t }
使用Unnest可以在Postgresql中高效的批量插入数据,以下是带有一个固定的值,以及一个数组的例子:insert into users(sex, name) select '男', a.val from unnest(array [ '张三', '李四', '王五', '克林顿', '马思克' ] ) as a(val);
19个必要的VS代码扩展来扩展你的工作流程
全球各地的开发者都在使用Visual Studio Code（VS Code），这是一个深受欢迎的强大的代码编辑器。它提供了广泛的特性和功能，可以显著提高生产力。然而，在扩展程序的帮助下，你可以进一步提高你的编码体验，并简化你的工作流程。在这篇文章中，我们将探讨19个VS Code扩展，它们可以将你的生产力提高到新的水平。1. Live ServerLive Server是网站开发人员必备的扩展之一。这个扩展允许你启动一个具有实时重载能力的本地开发服务器。每当你对你的HTML、CSS或JavaScript文件进行修改时，Live Server会自动实时刷新网页，给你的修改提供即时反馈。这消除了手动刷新的需要，提供了一个无缝的开发体验。优点：即时测试网络应用。支持文件更改后的热重新加载。取代了专门的网络服务器的位置。对静态和动态网络项目都有效。特点：文件保存时的实时重载。可定制的端口设置。支持HTTPS。支持外部浏览器的使用。局限性：需要一个本地开发环境。限于某些文件类型的热重载。可能不完全支持高级服务器配置。2. Prettier — Code Formatter保持一致的代码风格和格式对于代码的可读性和协作是至关重要的。Prettier - Code Formatter是一个流行的扩展，可以帮助你实现这一目标。它根据一组预定义的规则自动格式化你的代码，确保代码库的一致性和专业性。由于支持各种编程语言、可定制的选项以及与其他扩展的整合，Prettier是一个对开发者有价值的工具。优点：提高代码的可读性。强化一致的编码风格。与各种语言和框架整合。减少花在手动格式化上的时间。特点：保存时自动进行代码格式化。可定制的格式化规则。支持多种编程语言。与其他代码编辑器集成。局限性：可能不总是遵守个人的编码偏好。与某些编码风格或项目要求不兼容。需要为特定的团队或项目需求进行配置。3. GitLens — Git SuperchargedGitLens - Git Supercharged 是一个功能丰富的扩展，增强了 VS Code 的内置 Git 功能。它提供了大量关于你的代码的Git历史的信息和洞察力，包括内联的责备注释、提交细节和代码作者身份。有了GitLens，你可以轻松地浏览你的代码库，了解变化的背景，并与其他开发人员进行更有效的合作。优点：加强了VS Code中的Git集成。可视化代码作者和历史。促进了高效的代码审查。提供先进的Git功能。特点：在VS Code中加强了Git的集成：指责注释和历史。Git状态指示器。分支比较和管理。强大的搜索工具。局限性：初学者的学习曲线很陡峭。一些功能可能与Git的内置功能重叠。可能是资源密集型的。4. Bracket Pair Colorizer 2处理复杂的代码结构往往需要管理多层次的括号和小括号。括号对着色器2是一个扩展，可以帮助你从视觉上区分和匹配你的代码中的括号。通过给相应的括号对分配独特的颜色，这个扩展提高了代码的可读性，减少了括号不匹配的机会，使你的代码更容易理解和维护。优点：简化了代码导航。提高代码的可读性。减少了语法错误的机会。可定制的括号颜色方案。特点：彩色的括号对。可定制的颜色调色板。支持多国语言。括号对突出显示。局限性：偶尔会在大型代码库中变慢。可能与其他语法高亮扩展相冲突。仅限于某些编程语言。5. Settings Sync如果你在多台机器上工作或与队友合作，保持你的VS Code设置同步可能是一件麻烦事。设置同步扩展简化了这一过程，允许你在不同的设备上无缝地同步你的设置、键盘绑定、扩展，甚至是片段。通过利用你的首选云存储供应商，你可以确保无论你在哪里工作，都有一个一致的开发环境。优点：跨设备同步VS Code设置。简化了新环境的设置过程。防止设置和扩展的丢失。允许与团队成员轻松分享配置。特点：基于云的同步。支持GitHub Gist或个人访问令牌。可配置的同步频率。扩展和绑定键的同步。局限性：依赖于稳定的互联网连接。在云端存储设置的隐私问题。需要手动操作解决冲突。6. ESLint保持代码质量和遵循最佳实践是产生干净和无错误代码的关键。ESLint是一个广泛使用的扩展，它可以执行静态代码分析，并标记出你的代码中潜在的错误和风格问题。它支持广泛的编程语言和框架，提供可定制的规则集和自动修复。通过将ESLint集成到你的VS Code工作流程中，你可以及早发现代码问题并确保更高的代码质量标准。优点：识别和修复代码质量问题。执行一致的编码标准。减少花在代码审查上的时间。可定制提示规则。特点：实时提示。保存时自动修正。广泛的规则配置。支持各种编程语言和框架。局限性：需要初始配置。可能会与其他编译器或格式化器冲突。对较大的代码库有性能影响。7. REST Client在开发或测试API时，直接从你的代码编辑器与端点进行交互可以节省时间并简化调试过程。REST客户端扩展允许你直接从VS Code中发送HTTP请求，消除了对单独API测试工具的需求。它提供了一个方便和直观的方式来定义和执行请求，查看响应，并调试网络相关的问题，而无需离开你的编辑器。优点：简化了API测试和开发。消除了对外部工具的需求。支持各种HTTP方法和认证类型。可将API请求作为代码片段共享。特点：在编辑器中执行HTTP请求：编辑器内的HTTP请求执行。高亮显示API请求的语法。响应可视化。支持请求历史和变量。局限性：缺少专用API工具的高级功能。可能不足以应付复杂的API测试场景。只限于HTTP协议。8. Docker容器化已经成为开发和部署应用程序的一种流行方法。VS Code的Docker扩展通过提供丰富的功能和工具，简化了Docker容器的使用。它允许你管理容器、图像和Docker Compose文件，构建和调试容器，并将应用程序无缝部署到各种环境中。通过Docker集成，你可以简化你的开发工作流程，并利用容器化的优势。优点：简化了Docker容器管理。改善容器的可见性和组织。加强开发工作流程。简化了Dockerfiles的创建和修改。特点：Docker容器和图像管理。Docker文件语法高亮和IntelliSense。集成终端访问。支持编排文件。局限性：需要安装和配置Docker。只限于Docker相关的功能。可能不如专门的Docker工具强大。9. IntelliCode导航项目结构和准确地包括文件路径可能是一个挑战，特别是在较大的代码库中。Path Intellisense扩展提供了智能的路径自动完成功能，使你能够快速定位并包含文件，而不需要手动输入长的路径。它支持多种编程语言和框架，使导入或引用文件更容易，避免常见的打字错误或与路径有关的错误。优点：简化了代码中的文件路径管理。减少了文件引用中的错误。提高了文件引用的速度。同时支持相对和绝对路径。特点：文件路径的自动完成：文件路径的自动完成。支持各种文件类型。可定制的文件路径设置。基于工作空间的路径支持。局限性：在小型项目中可能不太有用。对特定语言或框架的不完全支持。对有大量文件的项目的性能有影响。11. Debugger for Chrome/Firefox/Edge网络应用程序的调试是开发过程中的一个关键步骤。流行的网络浏览器的调试器扩展，如Chrome、Firefox和Edge，使你能够直接从VS Code调试你的网络应用。通过断点、逐步调试和变量检查等功能，这些扩展提供了一个无缝的调试体验，使您能够有效地识别和修复问题。优点：简化了网络应用程序的调试。允许设置断点和检查变量。消除了对基于浏览器的调试工具的需求。实现网络应用程序的实时编辑。特点：编辑器内调试。断点管理。支持源码图。集成控制台访问。局限性：需要特定的浏览器扩展。可能不支持所有的浏览器功能。限于网络开发的使用情况。12. Python对于Python开发人员来说，Python扩展是一个必备的工具。它提供了一个全面的开发体验，具有提示、调试、自动完成和代码格式化等功能。该扩展支持流行的Python框架，如Django和Flask，并与Jupyter Notebooks等工具集成。有了Python扩展，你可以在VS Code中增强你的Python开发工作流程。优点：增强了Python的开发体验。简化了调试和测试。提供提示和格式化支持。简化了软件包和虚拟环境管理。特点：为Python代码提供智能提示：为Python代码提供IntelliSense。集成Python调试器。支持Jupyter笔记本。支持多种Python解释器。局限性：只限于Python开发。 可能需要额外的配置。 对大型项目的性能有影响。13. TODO Highlight在你的代码库中跟踪和管理TODO注释可能是一个挑战，特别是在大型项目中。TODO Highlight扩展通过突出显示代码中的TODO、FIXME和其他自定义注释标签来帮助你保持有序。这种视觉提示使你更容易识别和处理悬而未决的任务或需要进一步关注的领域。通过可定制的设置，你可以使该扩展适应你喜欢的标签惯例并提高你的工作效率。好处：通过突出显示TODO注释，提高了代码的可读性。帮助开发者快速定位待办事项。支持可定制的注释格式。减少了搜索不完整代码的时间。特性：突出显示TODO注释。可定制的颜色和样式。支持各种语言。快速导航到突出显示的注释。局限性：需要持续使用TODO注释。只限于某些编程语言。可能与其他任务管理工具重复。14. Project Manager当同时在多个项目上工作时，在不同的项目背景之间切换可能会很耗时，并扰乱你的工作流程。项目经理扩展允许你毫不费力地创建和切换项目配置，从而简化了项目管理。你可以对相关文件进行分组，定义项目的具体设置，并通过几次点击在项目之间快速切换。通过有效地组织你的项目，你可以节省时间并保持对手头工作的关注。优点：简化了项目导航和切换。将项目组织成易于访问的列表。在处理多个项目时提高了效率。同时支持本地和远程项目。特点：项目管理侧边栏。可定制的项目列表。快速的项目搜索。支持Git存储库和远程项目。局限性：需要手动配置项目列表。对项目少的开发者不太有用。只限于VS Code环境。15. Material Icon Theme可视化的定制可以大大提升你的编码体验。Material Icon Theme扩展为VS Code侧边栏的文件和文件夹提供了一组有吸引力的图标。通过用视觉上吸引人的图标替换默认的图标，这个扩展提高了你工作区的美感和可读性。通过各种图标选项和定制的可能性，你可以个性化你的编辑器以符合你的喜好。优点：增强了文件资源管理器的视觉吸引力。改善文件和文件夹的识别。支持广泛的文件类型和框架。可定制的图标和颜色主题。特点：主题的文件和文件夹图标。可定制的图标关联。支持多种图标样式。文件类型和框架特定的图标。局限性：仅仅是美学上的改进。可能与其他图标主题冲突。对开发工作流程没有功能影响。16. Better Comments注释在代码文档和交流中起着至关重要的作用。更好的注释扩展通过增加颜色编码和格式化选项将注释提升到一个新的水平。通过使用不同的注释类型，如问题、警告或信息，你可以从视觉上区分注释并突出重要信息。这个扩展使你的注释更有意义，提高代码的可读性，并帮助你有效地传达你的意图。优点：通过注释高亮来提高代码的可读性。鼓励有组织的和描述性的评论。支持可定制的注释样式。减少解读代码的时间。特点：为不同的注释类型提供语法高亮。可定制的注释颜色和样式。支持各种编程语言。预先定义的注释类别。局限性：需要遵守特定的注释惯例。只限于某些编程语言。对代码功能或性能没有影响。17. Auto Rename Tag在处理HTML或XML文件时，修改一个标签往往需要更新其相应的关闭标签。自动重命名标签扩展将这一过程自动化，当你修改开头标签时，自动重命名结束标签，反之亦然。这消除了手动更新标签的需要，并确保你的标记的一致性。有了Auto Rename Tag，你可以在使用结构化标记语言时节省时间并避免常见错误。优点：简化HTML/XML标签编辑。减少不匹配标签的风险。在修改嵌套元素时节省时间。提高整体代码质量。特点：自动标签重命名。支持HTML和XML语言。可配置的标签匹配设置。嵌套标签重命名。局限性：只限于HTML和XML语言。可能与其他标签相关的扩展冲突。对非标记语言没有影响。18. Remote Development — SSH在远程服务器或虚拟机上工作在许多开发场景中是很常见的。远程 - SSH扩展允许你连接到远程机器并直接从你的本地VS Code实例进行开发。通过安全连接选项和无缝文件同步，你可以在远程环境中编辑代码、运行命令和调试应用程序，而不必离开你熟悉的开发环境。这个扩展对于远程开发或合作项目特别有用。优点：通过SSH实现远程开发。允许在远程机器或容器上进行开发。简化了共享环境中的协作。简化了远程服务器管理。特点：通过SSH连接进行远程开发：通过SSH连接进行远程开发。支持多个远程主机。集成终端访问。可配置的连接设置。局限性：需要一个稳定的互联网连接。依赖于安全的SSH访问。只限于SSH支持的环境。19. Import Cost优化应用程序的性能和包的大小在现代网络开发中是至关重要的。导入成本扩展帮助你在代码编辑器中直接分析导入的JavaScript包的大小。它显示每个导入包的成本，提供对你的应用程序大小的影响的宝贵见解。通过了解导入成本，你可以对你包含的包做出明智的决定，优化你的应用程序的性能，减少不必要的臃肿。优点：提供对导入的包的大小的洞察力。帮助开发者对包的使用做出明智的决定。鼓励高效和性能的代码。支持各种编程语言和框架。特点：内联包大小显示。支持多个捆绑器。可定制的包大小阈值。可配置的性能优化设置。局限性：可能没有考虑到所有软件包的依赖性。依赖于包大小数据的准确性。只限于具有导入系统的语言和框架。结论总之，利用正确的VS Code扩展可以显著提高你作为一个开发者的生产力。我们在本文中探讨的19个扩展涵盖了广泛的功能，包括实时重载、代码格式化、Git集成、括号高亮、设置同步、提示、API测试、容器化、AI辅助编码、路径自动完成、调试、特定语言增强、TODO管理、项目组织、可视化定制和导入分析。通过将这些扩展纳入你的工作流程，你可以简化你的开发过程，编写更干净的代码，并提高你的整体生产力。
炒作与否？2023年开发者调查中探讨了人工智能对开发者的好处
在今年的开发者调查中，我们增加了新的问题，以深入了解今年人工智能普及率激增背后的真实情感。人工智能是否对开发者的工作方式产生了真正的影响，还是说这一切都是炒作？这篇文章将回顾一些最重要的见解，但请查看Stack Overflow实验室的深层细节。专业人士相信人工智能吗？现实情况是，开发人员已经在使用人工智能。44%的人现在在开发过程中使用人工智能工具，26%的人计划很快使用。甚至更多的学习编程的人（55%）目前正在使用人工智能工具，这些早期采用者一旦进入专业的开发者岗位，就会成为成熟的人工智能用户。虽然越来越多的开发者正在使用人工智能工具，但他们使用的种类并不广泛。我们询问了开发者正在使用哪些工具，在我们今年列出的21个选项中，绝大多数人只是在使用两个流行的产品： ChatGPT（83%）和GitHub Copilot（56%）。专业开发者可能需要时间来调整现有的工作流程，而且很可能会被那些在学习编码时使用人工智能工具的初级同事所激励。对于这些较新的人工智能技术来说，现在还处于炒作周期的早期。我们预计，在我们看到开发者更广泛地使用更多人工智能工具之前，可能还需要一些时间。另一个可能导致人工智能工具在开发过程中采用缓慢的因素是，专业开发者并不高度信任人工智能工具的准确性。在那些使用或计划使用人工智能工具的人中，只有3%的人高度信任他们提供的准确性，而两倍于此的人（6%）高度不信任他们。虽然大多数人（39%）对人工智能工具有些信任，但这个回答告诉我们，人工智能工具仍然需要证明其有用性。当涉及到学校或工作等重要事项时，这些新工具不是一个简单的按钮，"信任但核实 "的公理很可能是在开发过程中整合新工具的最佳方法。在AI Stack Exchange网站上，今年到目前为止访问量最大的问题之一是 "为什么ChatGPT的数学不好？" 这个问题涉及到人工智能工具，特别是那些在大型语言模型上训练的工具，无法理解复杂的问题。但人们也经常把这类问题弄错。你目前在哪里工作也对你是否使用人工智能工具有影响。来自印度、巴西和波兰的专业开发人员最有可能使用或计划使用人工智能工具作为其开发工作流程的一部分--他们的回答都在70%以上。英国、法国、美国和德国的开发者更有可能说他们不打算使用人工智能工具（回应率为36%或更高）。很多新的技术人才来自印度和巴西，这是从过去的开发者调查中报告的大量年轻开发者处于高薪增长的职位中推断出来的趋势，所以在这些地区更普遍地使用人工智能工具是有道理的。为什么欧盟国家和美国会更有可能报告对人工智能工具的抵制？最近的新闻强调了欧盟可能即将通过预先存在的GDPR法律对人工智能进行监管，而法国已经开始调查对ChatGPT的投诉。在美国，目前没有任何法规，但公司开始宣传他们在工作中禁止ChatGPT的政策，而Stack Overflow和Reddit也公开表示，他们将开始对数据访问收费，以保护其社区的归属和贡献。无论是法律还是工作场所的准确性问题和规则，都让开发者无法迅速采用一些人工智能工具。为什么要使用人工智能工具？无论目前的使用情况和以后的使用意图如何，开发者对这种可能性都是积极的。 大多数人对使用人工智能工具作为其开发工作流程的一部分感到满意（77%），但我们确实看到了群体之间的一些差异。区块链开发人员、数据科学家和前端或全栈开发人员现在更有可能使用AI工具。嵌入式应用程序开发人员、桌面/企业开发人员和硬件工程师不太可能使用这些工具，也不太愿意在未来使用它们。人工智能有一个复杂性悬崖。很像赫尔姆斯曼的复杂性悬崖，一个在项目管理中发现的概念，在某一点之后，人工智能处理一个解决方案的所有细微差别和相互依赖的能力就会下降。这时，人类，他们的适应性，应用判断和原创思想，拯救了这一天。 在所有对人工智能工具有好感的开发者角色中，高级管理人员与数据科学家和区块链开发者一起名列榜首（63%）。 从事数据科学和区块链的开发人员使用人工智能是有意义的：他们精通这种类型的技术。当我们看到对我们关于开发人员对他们今天使用的人工智能工具有哪些用例的问题的答复时，这就更有意义了。绝大多数人使用人工智能工具来编写代码（83%）或调试代码（49%）。鉴于硬件工程师对这些工具的准确性信心不足，以及他们工作中的实践环节，我们预计硬件工程师暂时不会使用人工智能。 当我们问到开发者关于人工智能工具的好处时，33%的人认为提高生产力是最重要的好处。 对这些用例没有直接经验的高级管理人员可能会看到他们的同事围绕编写和/或调试代码对生产力的探索，并希望在他们的团队中尝试，或在其他人员经理中分享。 我们问过开发者，他们认为人工智能工具在未来一年会如何演变他们的工作流程，77%的人觉得明年用人工智能写代码会有些或非常不同，75%的人对用人工智能调试代码有同样的感觉。更新工具和发展学习曲线可能会使目前正在使用人工智能工具或计划很快使用的人受益。人工智能集成开发的时代仍处于起步阶段，但世界各地的开发者已经让我们知道，他们正在积极参与，充满好奇，并且没有看走眼。请务必在Stack Overflow实验室查看所有精彩的细节!
2023 年开发者调查结果出炉：来自 Stack Overflow 社区的最新技术和工作趋势
来自世界各地的大约 90，000 人提交了他们正在使用的工具和编程语言的首选，以及他们在工作、学校和其他方面编码时间的详细信息。由于我们的 2023 年调查得到了如此大的回应，最好记住，我们的回复来自我们久经考验的 Stack Overflow 受众，这意味着结果偏向于积极解决问题的参与编码人员社区。在我们的结果微型网站上查看所有新见解.我们还研究了今年人工智能普及率激增背后的真实情绪。它是否对开发人员的工作方式产生了真正的影响，还是全是炒作？时代在变，他们在变对于那些在编码生涯中很早或很晚的人，或者只是喜欢除了Stack Overflow之外的其他在线学习方法的人，可以安全地假设我们可能对这些人的索引不足。我们的前五个关键地区与往年相同，但在哪些国家提供的回复数量上略有变化：美国一直是回复数量第一的国家，但今年我们看到印度从第二高的回复率下降到第三位，仅次于德国。两年来，我们看到来自印度的回复下降了50%，而来自德国的回复则增长了30%。与所有受访者的年龄分布（62%在34岁以下）相比，今年参加调查的印度开发者略显年轻（89%在34岁以下），因此我们可能错过了印度更有经验的一部分开发者的回复。总体而言，今年的年龄分布略微偏大，37%的受访者年龄在35岁以上，而去年是31%。在今年排名前十的编程语言中，我们看到三种流行语言的地位有所提高： Python、Bash/Shell（所有shell）和C。我们从Stack Overflow上的跟踪标签得知，Python在过去的三年中一直很受欢迎，而今年它的排名上升了一位，位居第三。伴随着Python的流行，我们一直看到Python库在我们受欢迎的 "其他技术和框架 "部分排名很高--在过去三年中，PumPy和Pandas一直在前十名中。C语言的流行是一个有趣的现象：尽管它从20世纪70年代就开始存在，但在开发者调查中还没有进入过编程语言的前十名。TIOBE指数显示，截至2023年6月，C是第二大最受欢迎的编程语言，其参与人数接近其第一大语言Python。鉴于C语言是最流行的低级语言之一，它是物联网设备内嵌入式编程的首选语言，而且根据Codecademy的说法，它 "几乎为我们的每一种技术体验提供动力"，因此，今年开发人员比以往任何时候都更多地使用C语言是合理的。一种编程语言越流行，我们看到今年开发者的平均经验就越少（对于我们的前三种语言来说，大约是10年，而对于那些报告使用率低于1%的语言，则接近14年）。经验不足的开发人员报告说，一些编程语言的使用率较高，这可能加强了这样一个论点，即进入就业市场的门槛较低，在编码人员中的受欢迎程度较高。总的来说，2023年的工资增长基线是比去年增长10%。当控制可比的工作年限时，我们看到编程语言之间有很大的增长和下降范围（同比增长高达42%，收缩69%）。如果我们把一种语言的流行程度作为劳动力市场上开发人员流行程度的代表，那么我们可以假设，流行语言的工资会下降，而不太流行的语言会上升。我们的前三种最受欢迎的语言--JavaScript、HTML/CSS和Python--的工资中位数都出现了负增长（从5-10%的收缩不等），而我们可以与可比经验相匹配的三种最不受欢迎的语言--APL、Crystal和SAS--我们看到的工资增长更少（从8-80%的收缩不等）。但是，如果我们看同样的语言，但根据低于平均水平的经验进行调整（例如，每种编程语言的经验比平均水平少5年），我们看到前三名的工资增长不多，APL和Crystal的工资增长达到两位数（SAS因为没有足够的回应而从结果中过滤掉）。我们推测，今年开发人员的谈判能力受到了影响，那些工作年限较短、使用较小众语言的开发人员今年的薪资上升空间比使用较流行编程语言的开发人员要大从令人羡慕和渴望的技术中获得灵感今年，我们为那些已经使用或想要使用编程语言、工具、环境、库等的技术趋势的调查结果增加了一个新的部分，我们称之为 "钦佩和渴望"。开发者通过Stack Overflow或他们的网络、博客、在线论坛等发现新技术，并在初步研究的基础上，希望尝试这些技术。一旦开发者有机会尝试上述技术，他们中有多少人还想使用它呢？为了更好地衡量炒作与现实，我们创建了一个可视化的模型，显示想要使用某项技术的受访者比例（"渴望"）与在过去一年中使用过该技术并希望继续使用的用户比例（"钦佩"）之间的距离。对于那些中间有很大距离的人（而且钦佩的指标仍然在天平的较大一端），我们可以推断，炒作产生的势头随着实际使用而增长。在较短的距离内，我们可以推断出，就普遍流行而言，炒作正在做大部分的工作。例如，我们可以看到自2011年以来被列为最受欢迎的编程语言的JavaScript，在钦佩和渴望之间的距离相对较短（<10个百分点），而Rust，在过去8年中是想使用一种新技术的开发者的首选，显示出很宽的距离（>60个百分点）；Rust是一种一旦你了解它就会比JavaScript产生更多使用欲望的语言。看到这种对某些技术钦佩的增长，让我们了解到什么是有持久力的，什么是需要帮助的，以便产生令人垂涎的布道者，将新用户转化为会坚持下去的用户。令人钦佩的技术是否也等同于经济保障？最受推崇的编程语言（>70%的人在过去一年中使用过它们，并希望继续使用它们）--Rust、Elixir和Zig--都比2023年的整体开发人员中位数（大约每年75000美元）高20%或更多。薪水和钦佩因素之间当然没有直接关系，因为我们看到Python、TypeScript和HTML/CSS的钦佩分数都超过60%，但年薪只比整体中位数略高。也许对这些流行的和令人钦佩的编程语言的部分奉献是开发人员通过拥有前面提到的较低的入门门槛而获得的自信；程序员可以用较少的经验成为足够的和被雇用的，并得到这么多在线资源和Stack Overflow答案的好处，以帮助继续他们的学习过程。
DeepL 号称 DeepL是一家深度学习公司，为语言开发人工智能系统,并且"它能提供史无前例高质量的译文。DeepL翻译器可通过网页版服务以及Windows和Mac的桌面应用程序使用。DeepL Pro订阅为用户提供改进的网页翻译功能，如无限量的术语表条目，用正式/非正式代词设置翻译语气的可能性，以及编辑已翻译文档的能力。"从目前使用的情况来看,翻译质量确实比其它市面上的翻译工具来的准确,而且提供了网页版,Chrome插件,Windows应用程序,用起来也比较方便.不好的地方在于,由于是AI翻译,所以并没有提供离线翻译功能,所有的翻译必须联网进行.由于服务器不在中国大陆内部,有时候会有一起联网问题.另外一个,我想购买翻译服务,结果并没有提供中国大陆的购买选项,目前只能用免费版本,不过免费版本对于零碎的文本的翻译限制不大,个人使用情况大部分满足.
D-ID是提供数字人生成服务,用户可以简单的操作,生成一个语音的和头像动画的拟真数字人以下是官网的介绍:D-ID’s generative AI technology elevates video content for professionals in the fields of marketing, learning and development, and CX, as well as for content creators of all sorts.Our platform enables users to generate photorealistic digital humans from text, dramatically reducing the cost and hassle of video production at scale. Customers include Fortune 500 companies, marketing agencies, production companies, social media platforms, leading e-learning platforms, and content creators of all sorts. Our solution is available through a self-service studio, and an API for enterprises, makers, and developers.D-ID was established in 2017 and is backed by tier 1 VCs. Over 110 million videos have been created using our technology. Recent clients include Warner Brothers Pictures, Publicis, Mondelez, Skilldora and MyHeritage who have used D-ID’s platform to create extraordinary experiences.翻译如下:D-ID的生成性人工智能技术提升了营销、学习和发展、CX等领域的专业人士以及各种内容创作者的视频内容。我们的平台使用户能够从文本中生成逼真的数字人，极大地减少了视频制作的成本和麻烦。客户包括财富500强公司、营销机构、制作公司、社交媒体平台、领先的电子学习平台和各种内容创作者。我们的解决方案可通过自助工作室，以及面向企业、制作者和开发者的API提供。D-ID成立于2017年，得到了一级风险投资公司的支持。使用我们的技术已经创建了超过1.1亿个视频。 最近的客户包括华纳兄弟电影公司、Publicis、Mondelez、Skilldora和MyHeritage，他们利用D-ID的平台创造了非凡的体验。最终的效果是,可以生成一个可以和它聊天的"头像",通过ChatGPT,此头像会实时用语音回答用户的提问,并且口型会配合语音.依据目前的信息来看,D-ID是通过ChatGPT + Stable Diffusion 来生成数字人的从目前的情况来看,对中文的支持不是很到位,试用一次,发现生成的数字人,在讲中文的时候,口型比较怪异.
UUID(Universally Unique IDentifier) 全局唯一标识符。UUID是一种由算法生成的二进制长度为128位的数字标识符。UUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”，其中的 x 是 0-9 或 a-f范围内的一个32位十六进制数。在理想情况下，任何计算机和计算机集群都不会生成两个相同的UUID第一种function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } guid() // "a1ca0f7b-51bd-4bf3-a5d5-6a74f6adc1c7"第二种function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 36; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 s[8] = s[13] = s[18] = s[23] = "-"; var uuid = s.join(""); return uuid; } uuid() // "ffb7cefd-02cb-4853-8238-c0292cf988d5"第三种function guid2() { function S4() { return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); } return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4()); } guid2() // "748eea29-f842-4af9-a552-e1e1aa3ed979"第四种// 指定长度和基数 function uuid2(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { // Compact form for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; } else { // rfc4122, version 4 form var r; // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random() * 16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); } uuid2(16, 16) // "277571702EE33E11"第五种function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 32; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 s[8] = s[13] = s[18] = s[23]; var uuid = s.join(""); return uuid; }第六种function uuid() { var temp_url = URL.createObjectURL(new Blob()); var uuid = temp_url.toString(); // blob:https://xxx.com/b250d159-e1b6-4a87-9002-885d90033be3 URL.revokeObjectURL(temp_url); return uuid.substr(uuid.lastIndexOf("/") + 1); }
原始的txt2img和img2img模式一键安装和运行脚本（但你仍然必须安装python和git）。画外画画中画颜色素描提示矩阵稳定的漫射升格注意，指定模型应该更加注意的文本部分a man in a ((tuxedo)) - 将更多地注意到燕尾服。a man in a (tuxedo:1.21) - 替代句法选择文本并按下Ctrl+Up或Ctrl+Down（如果你使用的是MacOS，则按Command+Up或Command+Down）来自动调整对选定文本的关注（代码由匿名用户贡献）Loopback，多次运行img2img处理程序X/Y/Z图，一种绘制不同参数的图像的3维图的方法文本反转你想有多少个嵌入就有多少个嵌入，并为它们使用任何你喜欢的名字使用多个嵌入，每个符号有不同数量的向量可使用半精度浮点数字在8GB上训练嵌入（也有6GB的报告）。额外的标签：GFPGAN，修复面部的神经网络CodeFormer，脸部修复工具，作为GFPGAN的替代品RealESRGAN, 神经网络升级器ESRGAN，具有大量第三方模型的神经网络增强器SwinIR和Swin2SR（见这里），神经网络提升器LDSR, 潜伏扩散超级分辨率升频器调整长宽比选项采样方法选择调整采样器Eta值（噪声乘数）更高级的噪声设置选项在任何时候中断处理支持4GB显卡（也有报告称2GB可以使用）批次的正确种子实时提示令牌长度验证生成参数你用来生成图像的参数将与该图像一起保存对于PNG，保存在PNG块中，对于JPEG，保存在EXIF中可以将图像拖到PNG信息标签，以恢复生成参数并自动复制到UI中可以在设置中禁用拖放图像/文本参数到提示框中读取生成参数按钮，将提示框中的参数加载到用户界面上设置页面从用户界面上运行任意的Python代码（必须用--allow-code运行才能启用）大多数用户界面元素的鼠标悬停提示可以通过文本配置改变UI元素的默认值/混合值/最大值/步长值支持平铺，一个复选框用来创建可以像纹理一样平铺的图像进度条和实时图像生成预览可以使用一个单独的神经网络来生成预览，几乎不需要任何的VRAM或计算要求负面提示，一个额外的文本字段，允许你列出你不希望在生成的图像中看到的内容。样式，一种保存部分提示的方法，以后可以通过下拉菜单轻松应用它们变化，一种生成相同图像但有微小差异的方法种子大小调整，一种生成相同图像但分辨率略有不同的方法剪辑审讯器，一个试图从图像中猜测提示的按钮。提示编辑，一种在生成过程中改变提示的方法，例如开始制作一个西瓜，中途切换到动漫女孩。批量处理，用Img2img处理一组文件Img2img替代品，反向欧拉法的交叉注意力控制Highres Fix，一个方便的选项，一键生成高分辨率的图片，没有通常的失真。即时重新加载检查点检查点合并，一个允许你将最多3个检查点合并成一个的选项。自定义脚本，有许多来自社区的扩展可组合式扩散，一种同时使用多个提示的方法使用大写字母AND来分离提示语也支持提示语的权重：一只猫：1.2和一只狗和一只企鹅：2.2提示语没有令牌限制（原来的稳定扩散让你最多使用75个令牌）。DeepDanbooru整合，为动漫提示创建Danbooru风格的标签xformers，选择卡的主要速度提高：（在命令行args中添加--xformers）。通过扩展： 历史标签：在用户界面中方便地查看、指导和删除图片生成永久选项训练选项卡超网络和嵌入选项预处理图像：裁剪、镜像、使用BLIP或deepdanbooru（用于动漫）自动标记片段跳过超网络Loras（与Hypernetworks相同，但更漂亮）一个拼写的用户界面，你可以通过预览选择哪些嵌入、超网络或Loras来添加到你的提示中可以在设置屏幕上选择加载不同的VAE在进度条中估计完成时间API支持RunwayML的专用绘画模型通过扩展： 美学梯度，一种通过使用剪辑图像嵌入来生成具有特定美学的图像的方法（实现https://github.com/vicgalle/stable-diffusion-aesthetic-gradients）。支持稳定的扩散2.0--见wiki的说明支持Alt-Diffusion--见wiki的说明现在没有任何坏字母了!以safetensors格式加载检查点放宽了分辨率的限制：生成的图像的分寸必须是8的倍数，而不是64的倍数现在有了许可证!在设置屏幕上重新排列用户界面的元素以下为英文原文:Original txt2img and img2img modesOne click install and run script (but you still must install python and git)OutpaintingInpaintingColor SketchPrompt MatrixStable Diffusion UpscaleAttention, specify parts of text that the model should pay more attention toa man in a ((tuxedo)) - will pay more attention to tuxedoa man in a (tuxedo:1.21) - alternative syntaxselect text and press Ctrl+Up or Ctrl+Down (or Command+Up or Command+Down if you're on a MacOS) to automatically adjust attention to selected text (code contributed by anonymous user)Loopback, run img2img processing multiple timesX/Y/Z plot, a way to draw a 3 dimensional plot of images with different parametersTextual Inversionhave as many embeddings as you want and use any names you like for themuse multiple embeddings with different numbers of vectors per tokenworks with half precision floating point numberstrain embeddings on 8GB (also reports of 6GB working)Extras tab with:GFPGAN, neural network that fixes facesCodeFormer, face restoration tool as an alternative to GFPGANRealESRGAN, neural network upscalerESRGAN, neural network upscaler with a lot of third party modelsSwinIR and Swin2SR (see here), neural network upscalersLDSR, Latent diffusion super resolution upscalingResizing aspect ratio optionsSampling method selectionAdjust sampler eta values (noise multiplier)More advanced noise setting optionsInterrupt processing at any time4GB video card support (also reports of 2GB working)Correct seeds for batchesLive prompt token length validationGeneration parametersparameters you used to generate images are saved with that imagein PNG chunks for PNG, in EXIF for JPEGcan drag the image to PNG info tab to restore generation parameters and automatically copy them into UIcan be disabled in settingsdrag and drop an image/text-parameters to promptboxRead Generation Parameters Button, loads parameters in promptbox to UISettings pageRunning arbitrary python code from UI (must run with --allow-code to enable)Mouseover hints for most UI elementsPossible to change defaults/mix/max/step values for UI elements via text configTiling support, a checkbox to create images that can be tiled like texturesProgress bar and live image generation previewCan use a separate neural network to produce previews with almost none VRAM or compute requirementNegative prompt, an extra text field that allows you to list what you don't want to see in generated imageStyles, a way to save part of prompt and easily apply them via dropdown laterVariations, a way to generate same image but with tiny differencesSeed resizing, a way to generate same image but at slightly different resolutionCLIP interrogator, a button that tries to guess prompt from an imagePrompt Editing, a way to change prompt mid-generation, say to start making a watermelon and switch to anime girl midwayBatch Processing, process a group of files using img2imgImg2img Alternative, reverse Euler method of cross attention controlHighres Fix, a convenience option to produce high resolution pictures in one click without usual distortionsReloading checkpoints on the flyCheckpoint Merger, a tab that allows you to merge up to 3 checkpoints into oneCustom scripts with many extensions from communityComposable-Diffusion, a way to use multiple prompts at onceseparate prompts using uppercase ANDalso supports weights for prompts: a cat :1.2 AND a dog AND a penguin :2.2No token limit for prompts (original stable diffusion lets you use up to 75 tokens)DeepDanbooru integration, creates danbooru style tags for anime promptsxformers, major speed increase for select cards: (add --xformers to commandline args)via extension: History tab: view, direct and delete images conveniently within the UIGenerate forever optionTraining tabhypernetworks and embeddings optionsPreprocessing images: cropping, mirroring, autotagging using BLIP or deepdanbooru (for anime)Clip skipHypernetworksLoras (same as Hypernetworks but more pretty)A sparate UI where you can choose, with preview, which embeddings, hypernetworks or Loras to add to your promptCan select to load a different VAE from settings screenEstimated completion time in progress barAPISupport for dedicated inpainting model by RunwayMLvia extension: Aesthetic Gradients, a way to generate images with a specific aesthetic by using clip images embeds (implementation of https://github.com/vicgalle/stable-diffusion-aesthetic-gradients)Stable Diffusion 2.0 support - see wiki for instructionsAlt-Diffusion support - see wiki for instructionsNow without any bad letters!Load checkpoints in safetensors formatEased resolution restriction: generated image's domension must be a multiple of 8 rather than 64Now with a license!Reorder elements in the UI from settings screen