<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Anda Li's Blog</title>
 <link href="https://andali89.github.io/blog/atom.xml" rel="self"/>
 <link href="https://andali89.github.io/blog/"/>
 <updated>2025-09-15T12:12:31+00:00</updated>
 <id>https://andali89.github.io</id>
 <author>
   <name>Mark Otto</name>
   <email>markdotto@gmail.com</email>
 </author>

 
 <entry>
   <title>Python数据科学入门——第3章：安装指南</title>
   <link href="https://andali89.github.io/%E6%95%99%E7%A8%8B/%E5%85%A5%E9%97%A8/2025/09/11/3_installation_guide/"/>
   <updated>2025-09-11T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/%E6%95%99%E7%A8%8B/%E5%85%A5%E9%97%A8/2025/09/11/3_installation_guide</id>
   <content type="html">&lt;h1 id=&quot;安装指南一步步带你配置好环境&quot;&gt;安装指南：一步步带你配置好环境&lt;/h1&gt;

&lt;p&gt;在了解了基本概念之后，现在让我们动手开始安装 Anaconda。这个过程非常简单，只需要跟随下面的步骤即可。&lt;/p&gt;

&lt;!-- readmore --&gt;

&lt;h2 id=&quot;下载-anaconda&quot;&gt;下载 Anaconda&lt;/h2&gt;

&lt;p&gt;首先，我们需要从 Anaconda 的官方网站下载安装包。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;访问官网：&lt;/strong&gt; 打开浏览器，访问 Anaconda 的官方下载页面：&lt;a href=&quot;https://www.anaconda.com/products/distribution&quot;&gt;https://www.anaconda.com/products/distribution&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;选择操作系统：&lt;/strong&gt; 网站会自动检测你的操作系统（Windows, macOS, or Linux），并推荐相应的下载版本。你只需要点击下载按钮即可。&lt;/p&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/4_downloadAnaconda.png&quot; alt=&quot;&quot; title=&quot;Anaconda 官网下载页面，箭头指向下载按钮&quot; /&gt;&lt;br /&gt;
&lt;em&gt;该截图展示了 Anaconda 官方下载页面。若页面未正确识别你的操作系统，请手动选择对应的系统（Windows / macOS / Linux），然后点击相应的下载按钮。&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;提示：&lt;/strong&gt; Anaconda 的安装包比较大（通常在 500MB 以上），下载可能需要一些时间。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;备选建议:&lt;/strong&gt; 也可访问清华镜像（TUNA）下载 &lt;a href=&quot;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/&quot;&gt;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/&lt;/a&gt;, 注意选择正确版本。如果你是Windows系统，可直接点击入选链接下载:&lt;a href=&quot;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2025.06-1-Windows-x86_64.exe&quot;&gt;Anaconda3-2025.06-1-Windows-x86_64.exe&lt;/a&gt; 。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;安装-anaconda-以-windows-为例&quot;&gt;安装 Anaconda (以 Windows 为例)&lt;/h2&gt;

&lt;p&gt;下载完成后，找到安装包（通常在你的“下载”文件夹中），双击开始安装。macOS 和 Linux 的安装过程与此类似。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;开始安装：&lt;/strong&gt; 双击 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.exe&lt;/code&gt; 安装文件，你会看到欢迎界面。点击 &lt;strong&gt;“Next”&lt;/strong&gt; 继续。&lt;/p&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_1.png&quot; alt=&quot;&quot; title=&quot;Anaconda 安装欢迎界面&quot; /&gt;
&lt;em&gt;图：Anaconda 安装欢迎界面&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;许可协议：&lt;/strong&gt; 阅读许可协议，然后点击 &lt;strong&gt;“I Agree”&lt;/strong&gt;。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;安装类型：&lt;/strong&gt; 选择为“Just Me”还是“All Users”。通常情况下，选择 &lt;strong&gt;“Just Me”&lt;/strong&gt; 即可，这样会将 Anaconda 安装在你的用户目录下，避免权限问题。然后点击 &lt;strong&gt;“Next”&lt;/strong&gt;。&lt;/p&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_2.png&quot; alt=&quot;&quot; title=&quot;安装类型选择界面（推荐选择 “Just Me”）&quot; /&gt;
&lt;em&gt;图：安装类型选择界面（推荐选择 “Just Me”）&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;选择安装路径：&lt;/strong&gt; 这一步非常重要！&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;建议：&lt;/strong&gt; 保持默认的安装路径。默认路径通常是 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Users\YourUsername\anaconda3&lt;/code&gt;。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;注意：&lt;/strong&gt; &lt;strong&gt;不要&lt;/strong&gt;将 Anaconda 安装在包含&lt;strong&gt;空格&lt;/strong&gt;或&lt;strong&gt;中文字符&lt;/strong&gt;的路径下！例如，&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Program Files&lt;/code&gt; 或 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Users\张三\Desktop&lt;/code&gt; 这样的路径可能会导致未知的错误。如果你想自定义路径，请确保路径只包含英文字母和数字。&lt;/li&gt;
      &lt;li&gt;选择好路径后，点击 &lt;strong&gt;“Next”&lt;/strong&gt;。&lt;/li&gt;
    &lt;/ul&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_3.png&quot; alt=&quot;&quot; title=&quot;选择安装路径（请避免空格与中文字符）&quot; /&gt;
&lt;em&gt;图：选择安装路径（请避免空格与中文字符）&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;高级选项：&lt;/strong&gt; 这是最关键的一步，请务必注意！&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;你会看到两个选项：
        &lt;ol&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Add Anaconda3 to my PATH environment variable&lt;/code&gt; (将 Anaconda3 添加到我的 PATH 环境变量中)&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Register Anaconda3 as my default Python 3.x&lt;/code&gt; (将 Anaconda3 注册为我的默认 Python 3.x)&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;官方建议：&lt;/strong&gt; 安装程序会提示&lt;strong&gt;不建议&lt;/strong&gt;勾选第一个选项（Add to PATH），因为这可能会干扰其他软件。他们的建议是使用 “Anaconda Prompt” 来访问 anaconda。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;我们的建议（更适合初学者）：&lt;/strong&gt; &lt;strong&gt;直接勾选第一个选项！&lt;/strong&gt; 尽管官方不推荐，但对于初学者来说，勾选此项可以让你在系统的任何命令行终端（如 Windows 的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd&lt;/code&gt; 或 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PowerShell&lt;/code&gt;）中直接使用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;conda&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;python&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pip&lt;/code&gt; 等命令，这会极大地简化你后续的操作，避免很多不必要的麻烦。第二个选项保持默认勾选即可。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;总结：&lt;/strong&gt; &lt;strong&gt;两个选项都勾选！&lt;/strong&gt; 然后点击 &lt;strong&gt;“Install”&lt;/strong&gt; 开始安装。&lt;/li&gt;
    &lt;/ul&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_4.png&quot; alt=&quot;&quot; title=&quot;高级选项（建议两个选项都勾选以便初学者使用）&quot; /&gt;
&lt;em&gt;图：高级选项（建议两个选项都勾选以便初学者使用）&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;安装过程：&lt;/strong&gt; 安装过程会持续几分钟，请耐心等待。&lt;/p&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_5.png&quot; alt=&quot;&quot; title=&quot;安装进度界面&quot; /&gt;
&lt;em&gt;图：安装进度界面&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;安装完成：&lt;/strong&gt; 安装完成后，点击 &lt;strong&gt;“Next”&lt;/strong&gt;。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;完成：&lt;/strong&gt; 最后，你会看到一个感谢页面，取消勾选 “Launch Anaconda Navigator” 和 “Getting started with Anaconda”，然后点击 &lt;strong&gt;“Finish”&lt;/strong&gt; 即可。&lt;/p&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_6.png&quot; alt=&quot;&quot; title=&quot;安装完成界面&quot; /&gt;
&lt;em&gt;图：安装完成界面&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;验证安装&quot;&gt;验证安装&lt;/h2&gt;

&lt;p&gt;如何确认 Anaconda 是否已经成功安装了呢？&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;打开命令行终端：&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Windows:&lt;/strong&gt; 按下 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Win&lt;/code&gt; 键，输入 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd&lt;/code&gt;，然后按回车，打开命令提示符。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;macOS:&lt;/strong&gt; 按下 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Command + Space&lt;/code&gt;，输入 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Terminal&lt;/code&gt;，然后按回车，打开终端。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;输入命令：&lt;/strong&gt; 在打开的命令行窗口中，输入以下命令，然后按回车：&lt;/p&gt;

    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;conda &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;查看输出：&lt;/strong&gt; 如果安装成功，它会显示出 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;conda&lt;/code&gt; 的版本号，例如 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;conda 23.7.4&lt;/code&gt;。&lt;/p&gt;

    &lt;p&gt;接着，你可以用同样的方式验证 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;python&lt;/code&gt;：&lt;/p&gt;

    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;python &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;

    &lt;p&gt;如果显示出 Python 的版本号（例如 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Python 3.11.5&lt;/code&gt;），那么恭喜你，你的 Anaconda 环境已经完全准备好了！&lt;/p&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_7_cmd.png&quot; alt=&quot;查看版本&quot; title=&quot;查看版本&quot; /&gt;
&lt;em&gt;图：查看版本&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;启动-jupyter-notebook&quot;&gt;启动 Jupyter Notebook&lt;/h2&gt;

&lt;p&gt;现在，让我们来启动我们的交互式笔记本 Jupyter Notebook。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;打开命令行终端：&lt;/strong&gt; 同样，打开 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd&lt;/code&gt; 或 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Terminal&lt;/code&gt;。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;输入命令：&lt;/strong&gt; 在命令行中输入以下命令，然后按回车：&lt;/p&gt;

    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;jupyter notebook
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_8_jupyter_notebook.png&quot; alt=&quot;&quot; title=&quot;运行 jupyter notebook&quot; /&gt;
&lt;em&gt;图：运行 jupyter notebook&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;自动打开浏览器：&lt;/strong&gt; 执行命令后，你的默认浏览器会自动打开一个新标签页，显示 Jupyter Notebook 的主界面。这个界面展示的是你执行命令时所在的目录下的文件。&lt;/p&gt;

    &lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/5_Anaconda_in_8_jupyter_notebook_browser.png&quot; alt=&quot;&quot; title=&quot;Jupyter Notebook 在浏览器中启动后的主界面截图&quot; /&gt;
&lt;em&gt;图：Jupyter Notebook 在浏览器中启动后的主界面截图&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt; 只要 Jupyter Notebook 正在运行，&lt;strong&gt;不要关闭&lt;/strong&gt;那个你用来启动它的命令行窗口！关闭它会导致 Jupyter Notebook 服务中断。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;参考视频教程&quot;&gt;参考视频教程&lt;/h2&gt;

&lt;p&gt;如果你更倾向于视频教学，可以参考这段安装演示（含下载、安装选项、PATH 设置、以及启动 Jupyter 的完整流程）：
https://www.bilibili.com/video/BV1y6XGYUEP7/?spm_id_from=333.337.search-card.all.click&lt;/p&gt;

&lt;h2 id=&quot;结语&quot;&gt;结语&lt;/h2&gt;
&lt;p&gt;至此，你已经完成了从下载、安装到启动的全过程。在下一章节，我们将学习如何更有效地管理我们的 Anaconda 环境。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Python数据科学入门——第2章：Python IDEs</title>
   <link href="https://andali89.github.io/%E6%95%99%E7%A8%8B/%E5%85%A5%E9%97%A8/2025/09/11/2_python_ides/"/>
   <updated>2025-09-11T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/%E6%95%99%E7%A8%8B/%E5%85%A5%E9%97%A8/2025/09/11/2_python_ides</id>
   <content type="html">&lt;h1 id=&quot;python-ides选择你的神兵利器&quot;&gt;Python IDEs：选择你的“神兵利器”&lt;/h1&gt;

&lt;p&gt;在上一章节，我们了解了 Python、Anaconda 和 Jupyter Notebook 的基本概念。Jupyter Notebook 虽然强大，但它更侧重于交互式的数据探索和展示。当我们进行更大型的项目开发、编写更复杂的代码时，一个功能更全面的“集成开发环境”（Integrated Development Environment, IDE）会让我们的工作事半功倍。&lt;/p&gt;

&lt;!-- readmore --&gt;

&lt;h2 id=&quot;什么是-ide&quot;&gt;什么是 IDE？&lt;/h2&gt;

&lt;p&gt;IDE 是一个集成了代码编写、调试、运行、项目管理等多种功能的软件包。你可以把它想象成一个程序员的“超级工作室”，它提供了各种工具来提升你的编程效率和体验。&lt;/p&gt;

&lt;p&gt;一个好的 IDE 通常具备以下功能：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;代码编辑器：&lt;/strong&gt; 提供语法高亮、自动补全、代码折叠等功能，让代码更易读、更易写。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;调试器 (Debugger)：&lt;/strong&gt; 可以让你逐行运行代码，检查变量的值，快速定位和修复错误（Bug）。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;项目管理：&lt;/strong&gt; 帮助你组织和管理项目文件，轻松导航到不同的代码文件。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;版本控制集成：&lt;/strong&gt; 通常会集成 Git 等版本控制工具，方便你进行代码的版本管理和团队协作。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;插件扩展：&lt;/strong&gt; 支持通过安装插件来扩展功能，满足个性化的需求。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;流行的-python-ides&quot;&gt;流行的 Python IDEs&lt;/h2&gt;

&lt;p&gt;对于 Python 开发，市面上有许多优秀的 IDE 可供选择。这里我们介绍几个最受欢迎的选项：&lt;/p&gt;

&lt;h3 id=&quot;1-pycharm&quot;&gt;1. &lt;a href=&quot;https://www.jetbrains.com/zh-cn/pycharm/&quot;&gt;PyCharm&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/3_pycharm.png&quot; alt=&quot;PyCharm 界面示例&quot; title=&quot;PyCharm 界面示例&quot; /&gt;
&lt;em&gt;图：PyCharm 主界面示例&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;开发者：&lt;/strong&gt; JetBrains&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;简介：&lt;/strong&gt; PyCharm 被许多 Python 开发者誉为“最强 Python IDE”。它功能极其强大，开箱即用，提供了智能代码补全、强大的调试器、无缝的数据库和版本控制集成等。对于数据科学，PyCharm 专业版还提供了对 Jupyter Notebook 的支持，以及对 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Pandas&lt;/code&gt; DataFrame 和 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NumPy&lt;/code&gt; 数组的特殊查看工具。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;优点：&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;功能全面且强大，是 Python 开发的“一站式”解决方案。&lt;/li&gt;
      &lt;li&gt;智能的代码提示和重构功能无出其右。&lt;/li&gt;
      &lt;li&gt;拥有一个庞大的插件生态系统。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;缺点：&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;功能强大也意味着它相对“重”，启动和运行可能需要更多的系统资源。&lt;/li&gt;
      &lt;li&gt;分为免费的社区版（Community）和付费的专业版（Professional）。许多高级功能（如 Web 开发、数据库支持）仅在专业版中提供。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;推荐人群：&lt;/strong&gt; 专业 Python 开发者、大型项目开发、追求极致效率的程序员。
    &lt;h3 id=&quot;2-visual-studio-code-vs-code&quot;&gt;2. &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code (VS Code)&lt;/a&gt;&lt;/h3&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;开发者：&lt;/strong&gt; 微软 (Microsoft)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;简介：&lt;/strong&gt; VS Code 是一个轻量级但功能强大的源代码编辑器，通过安装扩展（Extensions），它可以变身为一个全功能的 Python IDE。它启动速度快，资源占用少，并且拥有一个极其活跃和庞大的社区，提供了海量的扩展插件。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;优点：&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;轻量且快速：&lt;/strong&gt; 启动快，运行流畅，对系统资源要求不高。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;高度可定制：&lt;/strong&gt; 通过丰富的插件市场，你可以根据自己的需求把它打造成任何你想要的样子。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;强大的社区支持：&lt;/strong&gt; 几乎所有你想要的功能都能找到对应的插件。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;完全免费：&lt;/strong&gt; 所有功能都免费使用。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;缺点：&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;开箱即用的功能相对较少，需要花一些时间来配置和安装插件。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;推荐人群：&lt;/strong&gt; 几乎所有类型的开发者，从初学者到专业人士。特别是那些喜欢高度定制化、追求轻量级体验的开发者。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;3-ai-辅助编程工具&quot;&gt;3. AI 辅助编程工具&lt;/h3&gt;

&lt;p&gt;近年来，人工智能（AI）的发展也深刻地改变了编程的方式。AI 辅助编程工具可以极大地提升我们的编程效率，它们可以：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;自动生成代码：&lt;/strong&gt; 根据你的注释或部分代码，自动生成完整的代码片段。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;智能代码补全：&lt;/strong&gt; 提供比传统 IDE 更智能、更精准的代码建议。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;代码解释和重构：&lt;/strong&gt; 帮助你理解复杂的代码，并提供重构建议。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;发现和修复 Bug：&lt;/strong&gt; 自动检测代码中的潜在错误，并提供修复方案。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;其中，最著名的当属 &lt;strong&gt;GitHub Copilot&lt;/strong&gt;。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;开发者：&lt;/strong&gt; GitHub &amp;amp; OpenAI&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;简介：&lt;/strong&gt; Copilot 可以被看作是你的“AI 编程伙伴”。它通过在 VS Code、PyCharm 等主流 IDE 中安装插件来工作。在你编写代码时，它会实时地提供代码建议，从单行代码到整个函数，都能一键生成。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;优点：&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;极大地提升编码速度，减少编写“样板代码”的时间。&lt;/li&gt;
      &lt;li&gt;对于学习新的库或框架非常有帮助，可以通过看它的建议来学习如何使用。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;缺点：&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;需要付费订阅。&lt;/li&gt;
      &lt;li&gt;生成的代码不总是完美的，需要开发者自己进行审查和修改，不能盲目相信。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;总结与建议&quot;&gt;总结与建议&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;IDE/工具&lt;/th&gt;
      &lt;th&gt;优点&lt;/th&gt;
      &lt;th&gt;缺点&lt;/th&gt;
      &lt;th&gt;推荐人群&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;PyCharm&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;功能最强大，一站式解决方案&lt;/td&gt;
      &lt;td&gt;资源占用高，部分功能付费&lt;/td&gt;
      &lt;td&gt;专业 Python 开发者、追求极致效率的用户&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;VS Code&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;轻量、快速、免费、高度可定制&lt;/td&gt;
      &lt;td&gt;需要花时间配置插件&lt;/td&gt;
      &lt;td&gt;所有类型的开发者，特别是喜欢定制化的用户&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Jupyter Notebook&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;交互性强，适合数据探索和展示&lt;/td&gt;
      &lt;td&gt;不适合大型项目工程&lt;/td&gt;
      &lt;td&gt;数据分析师、数据科学家、初学者&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;GitHub Copilot&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;AI 辅助，极大提升编码效率&lt;/td&gt;
      &lt;td&gt;付费，代码需要审查&lt;/td&gt;
      &lt;td&gt;希望提升编码速度的所有开发者&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;strong&gt;对于初学者，我们的建议是：&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;从 Jupyter Notebook 开始：&lt;/strong&gt; 首先熟练掌握 Jupyter Notebook，它是你进行数据分析和探索最直接、最有效的工具。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;以 VS Code 作为主力 IDE：&lt;/strong&gt; 当你开始编写更复杂的脚本或项目时，安装 VS Code。它轻量、免费且功能强大，通过安装 Python 和 Jupyter 插件，你可以在 VS Code 中无缝地编写和运行 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.py&lt;/code&gt; 文件和 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ipynb&lt;/code&gt; 文件，获得一个统一的开发体验。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;有条件时尝试 Copilot：&lt;/strong&gt; 如果预算允许，可以尝试使用 GitHub Copilot，它会成为你学习和编程的强大助力。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;选择哪个 IDE 并没有绝对的“正确答案”，它更多地取决于你的个人偏好和项目需求。最好的方式是都去尝试一下，然后选择你觉得最顺手的那一个！&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Python数据科学入门——第1章：核心概念</title>
   <link href="https://andali89.github.io/%E6%95%99%E7%A8%8B/%E5%85%A5%E9%97%A8/2025/09/11/1_core_concepts/"/>
   <updated>2025-09-11T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/%E6%95%99%E7%A8%8B/%E5%85%A5%E9%97%A8/2025/09/11/1_core_concepts</id>
   <content type="html">&lt;h1 id=&quot;核心概念&quot;&gt;核心概念&lt;/h1&gt;

&lt;h2 id=&quot;pythonanaconda-与-jupyter-notebook它们分别是什么又有什么关系&quot;&gt;Python、Anaconda 与 Jupyter Notebook：它们分别是什么，又有什么关系？&lt;/h2&gt;

&lt;p&gt;对于数据科学的初学者来说，经常会听到 Python、Anaconda 和 Jupyter Notebook 这三个词，但又常常搞不清楚它们之间的关系。别担心，这很正常！把它们的关系说清楚，是我们踏入数据科学之门的第一步。&lt;/p&gt;

&lt;!-- readmore --&gt;

&lt;h3 id=&quot;python强大的编程语言&quot;&gt;Python：强大的编程语言&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/1_python.png&quot; alt=&quot;Python 标志（示意图）&quot; title=&quot;Python 标志（示意图）&quot; /&gt;
&lt;em&gt;图：Python 标志（示意图)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Python 是什么？&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;Python 是一种功能强大、用途广泛的编程语言。你可以把它想象成一种人类与计算机沟通的“语言”。通过这种“语言”，我们可以让计算机执行各种任务，比如数据分析、网站开发、人工智能等等。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;为什么数据科学要用 Python？&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;简单易学：&lt;/strong&gt; Python 的语法清晰简洁，非常接近自然语言，对初学者非常友好。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;功能强大：&lt;/strong&gt; Python 拥有一个庞大而活跃的社区，开发了无数功能强大的库（我们称之为“轮子”），专门用于数据处理、数据分析、机器学习等。比如 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NumPy&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Pandas&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Matplotlib&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Scikit-learn&lt;/code&gt; 等，这些库极大地简化了我们的工作。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;通用性强：&lt;/strong&gt; 除了数据科学，Python 还可以用于网站后端、自动化脚本、游戏开发等，学习它的投资回报率非常高。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;anacondapython-的超级装备库&quot;&gt;Anaconda：Python 的“超级装备库”&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/picspb/2_anaconda.png&quot; alt=&quot;Anaconda 标志（示意图）&quot; title=&quot;Anaconda 标志（示意图）&quot; /&gt;
&lt;em&gt;图：Anaconda 标志（示意图）&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Anaconda 是什么？&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;你可以把 Anaconda 想象成一个为数据科学“量身定做”的 Python “超级装备库”或者“工具箱”。它不仅仅是 Python，更是一个包含了 Python 解释器、大量常用数据科学库以及强大环境管理工具的“大礼包”。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Anaconda 解决了什么问题？&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;一键安装：&lt;/strong&gt; 在没有 Anaconda 之前，安装 Python 和各种数据科学库是一个非常繁琐的过程。你需要一个一个地手动安装，而且很容易遇到版本不兼容的问题。Anaconda 将这一切都打包好了，你只需要一次安装，就能获得一个立即可用的数据科学环境。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;环境隔离：&lt;/strong&gt; 在实际工作中，你可能需要同时处理多个项目，而每个项目可能依赖不同版本的库。Anaconda 的环境管理功能（&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;conda&lt;/code&gt;）可以为每个项目创建一个独立的“工作区”（我们称之为“环境”），让不同项目的依赖库互不干扰，保证了项目的稳定性和可复现性。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;jupyter-notebook交互式的数据科学笔记本&quot;&gt;Jupyter Notebook：交互式的数据科学“笔记本”&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Jupyter Notebook 是什么？&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;Jupyter Notebook 是一个开源的 Web 应用程序，你可以把它理解为一个“交互式的笔记本”。它允许你创建和共享包含实时代码、方程式、可视化图表和叙述性文本的文档。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Jupyter Notebook 有什么优势？&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;交互式编程：&lt;/strong&gt; 你可以一块一块地（我们称之为“单元格” or “Cell”）编写和运行代码，并立即看到结果。这种“所见即所得”的模式非常适合数据探索和分析。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;文学化编程 (Literate Programming)：&lt;/strong&gt; 你可以在代码之间插入格式丰富的文本、图片、链接、数学公式等，将你的分析思路、发现和结论清晰地记录下来，形成一个完整的数据故事。这使得你的工作不仅易于理解，也便于与他人分享和协作。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;强大的可视化：&lt;/strong&gt; Jupyter Notebook 可以无缝集成各种 Python 的可视化库（如 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Matplotlib&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Seaborn&lt;/code&gt;），让你能够轻松地在笔记本中创建和展示各种图表。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;三者关系总结&quot;&gt;三者关系总结&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt; 是核心的编程语言，是所有数据分析工作的“发动机”。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Anaconda&lt;/strong&gt; 是一个集成了 Python 和众多数据科学库的“发行版”，并提供了强大的环境管理工具，它为你提供了一个“开箱即用”的数据科学工作站。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Jupyter Notebook&lt;/strong&gt; 是一个交互式的编程环境，它提供了一个“笔记本”式的界面，让你能够以一种更直观、更具探索性的方式来使用 Python 进行数据分析，并记录你的整个分析过程。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;简单来说，它们的关系是：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;我们在 Anaconda 这个强大的工作环境中，使用 Jupyter Notebook 这个交互式的笔记本，来运行 Python 代码，从而完成我们的数据科学任务。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;希望这个解释能帮助你清晰地理解这三者之间的关系！接下来，我们将深入了解如何在你的电脑上安装和使用这些强大的工具。&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>8 周系统学习计划：《Convex Optimization》</title>
   <link href="https://andali89.github.io/%E5%AD%A6%E4%B9%A0%E8%AE%A1%E5%88%92/%E5%87%B8%E4%BC%98%E5%8C%96/2025/06/30/convex-optimization-plan/"/>
   <updated>2025-06-30T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/%E5%AD%A6%E4%B9%A0%E8%AE%A1%E5%88%92/%E5%87%B8%E4%BC%98%E5%8C%96/2025/06/30/convex-optimization-plan</id>
   <content type="html">&lt;blockquote&gt;
  &lt;p&gt;基于 Boyd &amp;amp; Vandenberghe 著《Convex Optimization》，配合动手实践与阅读笔记，帮助你扎实掌握凸优化理论与算法。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;!-- readmore --&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;0前期准备&quot;&gt;0．前期准备&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;线性代数：向量／矩阵运算、特征值分解&lt;/li&gt;
  &lt;li&gt;凸集与凸函数基本概念、最小二乘&lt;/li&gt;
  &lt;li&gt;安装好 MATLAB＋CVX，或 Python＋CVXPY 环境&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;1周计划总览&quot;&gt;1．周计划总览&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;周次&lt;/th&gt;
      &lt;th&gt;主题&lt;/th&gt;
      &lt;th&gt;核心内容&lt;/th&gt;
      &lt;th&gt;周任务&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;第 1 周&lt;/td&gt;
      &lt;td&gt;第 1 章 凸集与凸子集&lt;/td&gt;
      &lt;td&gt;凸集定义、凸组合、Carathéodory 定理&lt;/td&gt;
      &lt;td&gt;习题 1.1–1.5；用 Python 画不同凸集示例&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;第 2 周&lt;/td&gt;
      &lt;td&gt;第 2 章 凸函数与凸分析&lt;/td&gt;
      &lt;td&gt;凸函数判定（Hessian）、Jensen 不等式、次梯度&lt;/td&gt;
      &lt;td&gt;习题 2.1–2.6；手推二次函数、指数函数凸性；实现次梯度算法&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;第 3 周&lt;/td&gt;
      &lt;td&gt;第 3 章 凸优化模型与例子&lt;/td&gt;
      &lt;td&gt;LP／QP／SOCP／SDP 基本形式；稀疏回归、正则最小二乘实例&lt;/td&gt;
      &lt;td&gt;习题 3.1–3.4；CVX 写 Lasso 回归和带约束最小二乘示例&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;第 4 周&lt;/td&gt;
      &lt;td&gt;第 4 章 对偶性与最优性条件&lt;/td&gt;
      &lt;td&gt;Lagrangian 构造；弱／强对偶；KKT 条件&lt;/td&gt;
      &lt;td&gt;习题 4.1–4.5；推导线性规划对偶；验证具体 KKT 实例&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;第 5 周&lt;/td&gt;
      &lt;td&gt;第 5 章 无约束与等式约束优化&lt;/td&gt;
      &lt;td&gt;梯度下降、最速下降；牛顿法；收敛性分析&lt;/td&gt;
      &lt;td&gt;习题 5.1–5.3；Python 实现牛顿法解简单非线性问题&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;第 6 周&lt;/td&gt;
      &lt;td&gt;第 6 章 不等式约束优化与内点法&lt;/td&gt;
      &lt;td&gt;Log-barrier／中心路径；原始-对偶内点法&lt;/td&gt;
      &lt;td&gt;习题 6.1–6.4；CVX 求解含不等式约束 QP，并对比内点法收敛效果&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;第 7 周&lt;/td&gt;
      &lt;td&gt;第 7 章 ADMM 与分布式优化（选读）&lt;/td&gt;
      &lt;td&gt;交替方向乘子法（ADMM）框架；分布式优化思路&lt;/td&gt;
      &lt;td&gt;ADMM 求 Lasso；对比集中式 vs 分布式收敛速度&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;第 8 周&lt;/td&gt;
      &lt;td&gt;综合项目与拓展阅读&lt;/td&gt;
      &lt;td&gt;基于凸优化的 SVM／Sparse PCA／自拟小课题&lt;/td&gt;
      &lt;td&gt;撰写项目报告并分享代码；选读《Convex Optimization Applications》&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;2每周详细执行&quot;&gt;2．每周详细执行&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;阅读＋笔记&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;梳理「定义／定理／直观几何图示」&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;练习题&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;每章挑重点 3–5 题：动手推导＋编码实现&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;代码复现&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;用 CVX／CVXPY 或自实现算法，复现实验里的核心例子&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;周末小结&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;1–2 页短文：最难点、收获、未解疑问&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;3拓展资源&quot;&gt;3．拓展资源&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Stanford EE 364a 公开课（Boyd 授课，视频＋习题）&lt;/li&gt;
  &lt;li&gt;CVX 官方文档与示例（内点法实践）&lt;/li&gt;
  &lt;li&gt;Boyd 等《Distributed Optimization and Statistical Learning via ADMM》&lt;/li&gt;
  &lt;li&gt;GitHub 上 Convex Optimization 习题库与代码&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;：开工前，先自评目标——“理论深究” 或 “工程应用”，我可帮你进一步微调节奏与侧重。祝学习愉快！&lt;/p&gt;
&lt;/blockquote&gt;

&lt;!-- 本文参考格式与风格见 [How to control autocrlf for LaTeX in Git](2024-05-27-git-config-for-latex.md) --&gt;
</content>
 </entry>
 
 <entry>
   <title>DeepSeek：从入门到精通1-2</title>
   <link href="https://andali89.github.io/2025/02/11/deepseek-learning/"/>
   <updated>2025-02-11T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/2025/02/11/deepseek-learning</id>
   <content type="html">&lt;h3 id=&quot;the-slides-of-deepseek从入门到精通deepseek赋能职场应用&quot;&gt;The slides of DeepSeek从入门到精通，DeepSeek赋能职场应用&lt;/h3&gt;
&lt;!-- readmore --&gt;

&lt;p&gt;Click to open &lt;a href=&quot;/blog/assets/pdfs/DeepSeek从入门到精通-清华.pdf&quot;&gt;DeepSeek：从入门到精通&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click to open &lt;a href=&quot;/blog/assets/pdfs/DeepSeek赋能职场应用-清华.pdf&quot;&gt;DeepSeek：赋能职场应用&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Enhancing Your Markdown Editing Experience with Suggestions</title>
   <link href="https://andali89.github.io/2025/02/07/markdown-suggestions/"/>
   <updated>2025-02-07T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/2025/02/07/markdown-suggestions</id>
   <content type="html">&lt;p&gt;To enable markdown suggestions in your markdown file, you can use the following tips:
&lt;!-- readmore --&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Use a Markdown Editor with Suggestions&lt;/strong&gt;: Choose a markdown editor that supports suggestions and autocompletion, such as Visual Studio Code with the Markdown All in One extension.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Enable Extensions&lt;/strong&gt;: If you are using Visual Studio Code, install and enable extensions like “Markdown All in One” or “Markdown Preview Enhanced” to get suggestions and enhanced features.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Configure Settings&lt;/strong&gt;: Ensure that the settings for your editor are configured to enable suggestions. For Visual Studio Code, you can add the following to your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;settings.json&lt;/code&gt; file:
    &lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;[markdown]&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;Quick&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;suggestions&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;editor.quickSuggestions&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
             &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;other&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
             &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;comments&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
             &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;strings&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;Show&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;whitespace&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;editor.renderWhitespace&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;all&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;Snippet&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;suggestions&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;priority&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;(personal&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;preference)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;editor.snippetSuggestions&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;top&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;editor.tabCompletion&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;on&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;Use&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;enter&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;accept&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;suggestions&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
         &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;editor.acceptSuggestionOnEnter&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;on&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
     &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
 &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Use Snippets&lt;/strong&gt;: Utilize markdown snippets to quickly insert common markdown structures. Most editors support snippets, and you can find or create snippets for your specific needs.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Preview Your Markdown&lt;/strong&gt;: Use the preview feature in your markdown editor to see how your markdown will render in real-time. This can help you catch errors and improve your markdown formatting.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By following these steps, you can enhance your markdown editing experience with suggestions and other helpful features.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Setting forward search and inverse search in SumatraPDF for LaTeX-Workshop</title>
   <link href="https://andali89.github.io/2025/01/29/latex-worksop-settings/"/>
   <updated>2025-01-29T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/2025/01/29/latex-worksop-settings</id>
   <content type="html">&lt;p&gt;To set up forward and inverse search in SumatraPDF using LaTeX Workshop extention in Visual Studio Code, follow these steps:
&lt;!-- readmore --&gt;&lt;/p&gt;

&lt;h2 id=&quot;configure-sumatrapdf&quot;&gt;Configure SumatraPDF&lt;/h2&gt;
&lt;p&gt;One of the following two methods can be used:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Method 1&lt;/p&gt;

    &lt;p&gt;1.1. Open SumatraPDF.&lt;/p&gt;

    &lt;p&gt;1.2. Go to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Settings&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Options...&lt;/code&gt;.&lt;/p&gt;

    &lt;p&gt;1.3. In the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Inverse Search Command Line&lt;/code&gt; field, enter the following command:&lt;/p&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;   &quot;C:\path\to\Visual Studio Code\Code.exe&quot; -r -g &quot;%f:%l&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Input the following text into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SumatraPDF-settings.txt&lt;/code&gt; file located in the same directory as SumatraPDF:&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;InverseSearchCmdLine = &quot;C:\\path\\to\\Visual Studio Code\\Code.exe&quot; &quot;%f&quot; -line %l
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;configure-latex-workshop&quot;&gt;Configure LaTeX Workshop&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Open your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;settings.json&lt;/code&gt; file in Visual Studio Code.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Add or update the following settings:&lt;/p&gt;

    &lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;latex-workshop.latex.autoBuild.run&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;onSave&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;       
       
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;latex-workshop.view.pdf.internal.synctex.keybinding&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;double-click&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;

    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;latex-workshop.view.pdf.viewer&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;external&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;latex-workshop.view.pdf.external.viewer.command&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;D:&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Program Files&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;SumatraPDF-3.5.2-64&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;SumatraPDF-3.5.2-64.exe&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;latex-workshop.view.pdf.external.viewer.args&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;-forward-search&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%TEX%&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%LINE%&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;-reuse-instance&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;-inverse-search&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;C:&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Users&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;liand&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;AppData&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Local&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Programs&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Microsoft VS Code&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Code.exe&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;C:&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Users&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;liand&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;AppData&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Local&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Programs&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Microsoft VS Code&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;resources&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;cli.js&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; --ms-enable-electron-run-as-node -r -g &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;%f:%l&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%PDF%&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;latex-workshop.view.pdf.external.synctex.command&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;D:&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Program Files&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;SumatraPDF-3.5.2-64&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;SumatraPDF-3.5.2-64.exe&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;latex-workshop.view.pdf.external.synctex.args&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;-forward-search&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%TEX%&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%LINE%&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;-reuse-instance&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;-inverse-search&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;C:&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Users&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;liand&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;AppData&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Local&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Programs&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Microsoft VS Code&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Code.exe&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;C:&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Users&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;liand&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;AppData&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Local&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Programs&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Microsoft VS Code&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;resources&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;cli.js&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; --ms-enable-electron-run-as-node -r -g &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;%f:%l&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%PDF%&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;
</content>
 </entry>
 
 <entry>
   <title>如何制作手冲咖啡</title>
   <link href="https://andali89.github.io/2024/06/20/make-coffee/"/>
   <updated>2024-06-20T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/2024/06/20/make-coffee</id>
   <content type="html">&lt;p&gt;如何制作一杯美味的手冲咖啡？
&lt;!-- readmore --&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/pics/makecoffe.jpeg&quot; alt=&quot;Coffe&quot; title=&quot;Coffe&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;材料&quot;&gt;材料&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;水温92度左右。225g&lt;/li&gt;
  &lt;li&gt;咖啡粉。15g&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;三段式注水过程&quot;&gt;三段式注水过程&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;沿中心注入30g水焖蒸，30-40S (干燥)。&lt;/li&gt;
  &lt;li&gt;划圈注水至150g。&lt;/li&gt;
  &lt;li&gt;中间有点干燥时，注水至225g结束。&lt;/li&gt;
  &lt;li&gt;总萃取时间1分30秒至2分。&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>Sort the references in bib file in TeXstudio</title>
   <link href="https://andali89.github.io/2024/06/07/sort-bib-references/"/>
   <updated>2024-06-07T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/2024/06/07/sort-bib-references</id>
   <content type="html">&lt;p&gt;If you are willing to sort the references in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.bib&lt;/code&gt; file according to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;article type&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reference name&lt;/code&gt; in alphabetical order, this article is helpful.
&lt;!-- readmore --&gt;&lt;/p&gt;

&lt;h2 id=&quot;steps&quot;&gt;Steps&lt;/h2&gt;
&lt;p&gt;The steps for the settings includes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A script in Python to read the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.bib&lt;/code&gt; file and order them.&lt;/li&gt;
  &lt;li&gt;Setting of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Macro&lt;/code&gt; in TexStudio to run the script.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;python-script&quot;&gt;Python Script&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;/blog/assets/scripts/sortBib.py&quot;&gt;Click&lt;/a&gt; to download the python script to sort the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.bib&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Run the script in cmd&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;python sortBib bibfilename.bib
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;setting-of-macro-in-texstudio&quot;&gt;Setting of Macro in TeXstudio&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;Click on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Edit Macros&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Select the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Script&lt;/code&gt; option&lt;/li&gt;
  &lt;li&gt;Type in the Macro name&lt;/li&gt;
  &lt;li&gt;Copy the following script in textbox&lt;/li&gt;
&lt;/ol&gt;

&lt;pre&gt;&lt;code class=&quot;language-C&quot;&gt;// get the path of current working file
var pa = app.getAbsoluteFilePath(app.getCurrentFileName(), ext = &quot;&quot;)
var idx = pa.lastIndexOf(&quot;/&quot;)
var c_dir = pa.substr(0, idx) 
// run the script
cmd = system(&quot;python sortBib.py bibfilename.bib&quot;, workingDirectory=c_dir)
cmd.waitForFinished()
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
  &lt;li&gt;To run the Macro, click on the Macro name shown in the menu after clicking &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Macros&lt;/code&gt; on the top of TeXstudio&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/blog/assets/pics/macro.png&quot; alt=&quot;Screen shot of macro setting&quot; title=&quot;Macro Setting&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>How to control autocrlf for LaTeX in Git</title>
   <link href="https://andali89.github.io/2024/05/27/git-config-for-latex/"/>
   <updated>2024-05-27T00:00:00+00:00</updated>
   <id>https://andali89.github.io/blog/2024/05/27/git-config-for-latex</id>
   <content type="html">&lt;p&gt;If you are using LaTeX with TexStudio on windows and need to control the version of the manuscript with Git, the autocrlf option should be turned off.
&lt;!-- readmore --&gt;&lt;/p&gt;

&lt;p&gt;The Git option to locally turn off &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;autocrlf&lt;/code&gt; is below:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git config &lt;span class=&quot;nt&quot;&gt;--local&lt;/span&gt; core.autocrlf &lt;span class=&quot;nb&quot;&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The Git option to globally turn off &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;autocrlf&lt;/code&gt; is below:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; core.autocrlf &lt;span class=&quot;nb&quot;&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The Git option to check the status of configuration are:&lt;/p&gt;

&lt;p&gt;Global&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Local&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;git config &lt;span class=&quot;nt&quot;&gt;--local&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</content>
 </entry>
 

</feed>
