Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts in 2020.1


Get an ideal flight simulator free based on X-Plane 11 (Free plugins)

这篇博客为X-Plane 11飞行模拟器用户整理了一套免费插件方案旨在通过组合多个开源项目将基础模拟体验提升至接近专业级水平文章从底层架构开始介绍FlyWithLua作为脚本引擎为后续插件提供开发基础随后通过FSEnhancer和Reshade的双重渲染优化系统实现天空云层光影水域的视觉重构其中Reshade的社区配置文件特性更让玩家能直接调用全球用户共享的视觉方案接着从场景细节出发Airport Environment HD对全球机场建筑纹理进行整体替换而Zibo 737波音737-800模拟器凭借超过20种飞行系统逻辑建模成为核心硬件在软件生态层面AviTab提供虚拟平板导航Terrain Radar增加地形扫描BetterPushBack实现自动化推车HeadShake模拟震动反馈XTouchDownRecorder记录着陆数据Airport Navigator解决滑行定位问题XSquawkBox则打通了与真实飞行网络的连接X-RASS作为跑道预警系统进一步提升安全模拟值得注意的是这套方案在保持免费特性的同时暗含着技术整合的深层逻辑比如FSEnhancer与Reshade的兼容性处理Zibo 737对导航数据的依赖性以及BetterPushBack的多语言交互设计这些细节都在暗示一个核心命题当开源社区与商业模拟器相遇时如何通过插件生态构建超越原生系统的可能性而读者或许会思考在现有插件基础上增加AI飞行分析或VR交互是否能让模拟体验突破专业飞行训练器的边界--Qwen3

X-Plane Flight simulation Flight Plugins Plane Configuration Free

Tips to get better performance for Entity Framework Core

本文探讨了优化Entity Framework Core性能的九大核心策略并揭示了常见误区。通过限制数据量的Take与Skip方法可避免加载冗余行而Select投影技术则能精准提取必要字段而非整表数据。当处理主键查询时使用FirstOrDefaultAsync替代SingleOrDefaultAsync可减少不必要的TOP 2查询开销而AsNoTracking与禁用Include则能有效降低上下文追踪和多表联查的复杂度。特别需要注意IQueryable与IEnumerable的语义差异前者允许链式构建查询而后者会立即执行导致数据过早加载。通过ToListAsync及时终止查询执行或将复杂计算移至服务器端能显著提升效率。当使用Select创建匿名对象时即使不包含导航属性也能自动处理关联数据而不会出现空值。最后文章抛出值得思考的问题:你是否在查询中隐藏着未察觉的性能陷阱?当面对百万级数据时这些优化策略会产生怎样的级联效应?如何在复杂业务场景中平衡查询语义与执行效率?这些问题的答案或许就藏在你下一次的代码审查中。--Qwen3

Entity Framework SQL Performance Database Entity Framework Core Query Optimization

Scan all accessible class in C#

在C#中获取所有可访问程序集看似简单但实际涉及递归扫描的深层逻辑。通过GetReferencedAssemblies方法可以遍历引用树但如何确保递归扫描的完整性成为关键挑战。文章展示的ScanAssemblies函数通过递归加载每个程序集的引用构建完整的依赖图谱而AllAccessiableClass方法则将散落的程序集拼接成完整的类型全景图。这种扫描方式揭示了程序集之间隐含的拓扑结构但同时也带来新的思考:当程序集在运行时动态加载时如何构建动态的引用树?当依赖链包含循环引用时递归算法是否会产生性能瓶颈?更进一步如何区分"可访问"与"可实例化"类的边界?扫描到的类型是否隐含着未被发现的代码依赖风险?这些问题提示我们程序集扫描不仅是技术实现更是对系统架构的深层洞察。当你的代码开始质疑扫描结果的准确性时是否意味着程序集加载机制本身存在更复杂的语义?--Qwen3

C# .NET Core Reflection Type Retrieval Assembly Scanning GetReferencedAssemblies

Use IIS or Azure App Service as a reverse proxy

这篇文章探讨了如何利用IIS或Azure App Service构建反向代理的实践路径,通过Aiursoft.IO案例展示了从零到实现反向代理的完整流程。文章揭示了IIS作为反向代理的核心依赖——RequestRouter和Rewrite模块的安装逻辑,并通过web.config文件的规则配置,演示了从强制HTTPS到动态域名路由的实现机制。特别值得关注的是在Azure App Service中通过applicationHost.xdt文件启用ARR服务的技巧,这种在共享环境中突破技术限制的实践方式值得深入思考。当构建web.config文件时通过正则表达式捕获子域名并重写请求路径的策略,不仅解决了缩短下载URL的需求,更启发我们思考如何利用规则引擎实现更复杂的路由逻辑。文章最后抛出一个值得探索的问题:当反向代理需要处理高并发流量时,如何通过规则优化和缓存策略平衡性能与安全性?这或许能引导读者重新审视现代应用架构中代理服务的定位与价值。--Qwen3

IIS web.config Reverse Proxy Web Azure App Service Azure

Share view component between different ASP.NET Core web project

在ASP.NET Core开发中如何高效复用视图组件成为提升代码质量的关键问题。当多个项目需要共享如用户退出功能的UI组件时重复开发不仅低效还容易引发维护难题。通过创建支持Razor的类库项目并遵循特定的文件结构可以突破项目间的壁垒实现跨工程的组件共享。核心在于将`AddRazorSupportForMvc`属性注入类库项目配置文件并严格遵循`Views/Shared/Components`的目录规范。当目标项目通过`_ViewImports.cshtml`引入命名空间后即可直接调用这些共享组件。这种架构设计不仅解决了代码冗余问题更揭示了模块化开发的新可能——如何通过组件粒度控制平衡复用与灵活性?当视图组件的复用边界扩展到跨解决方案的维度时又该如何设计版本管理和依赖控制策略?在组件共享的实践中我们是否忽略了对UI一致性与个性化需求的平衡?这些问题的探索或许能为现代Web应用的架构设计提供全新视角。--Qwen3

ASP.NET Core C# class library View component ViewComponents ClassLibrary

One command to pull all git repositories

本文介绍了一种通过单一命令同步所有Git仓库的自动化方案揭示了开发者如何通过自定义脚本解决多项目同步的痛点。文章以工作目录结构为切入点展示了如何利用find命令配合-exec参数构建递归执行机制通过动态切换目录实现批量仓库更新操作。该方案通过生成可执行脚本文件结合权限设置实现了即开即用的自动化流程。这种将系统命令与版本控制工具融合的实践方式不仅提升了开发效率更启发我们思考自动化脚本的边界——当基础命令组合产生质变时我们该如何设计更智能的开发环境?当脚本扩展到跨平台场景时又该如何平衡兼容性与功能性?或许每个开发者都值得重新审视日常命令背后的无限可能。--Qwen3

bash git git pull automate git pull shell script batch git pull