Anduin Xue

let today = new Beginning();

All Posts


Creating a proxy to another URL with ASP.NET Core

本文讨论了如何在C#或ASP.NET Core中编写简单的HTTP代理逻辑,以及如何让您的项目代理请求到其他URL。这不是关于为您的ASP.NET Core项目部署代理服务器的内容。 首先,您需要明确您要代理的目标,这应该是一个URL。 在项目的任意位置添加以下代码: (此处省略代码示例) 这个方法将用户发送的`HttpContext.Request`转换为可重用的`HttpRequestMessage`,以便您将此消息发送到目标服务器。 在目标服务器响应之后,您需要将响应的`HttpResponseMessage`复制到`HttpContext.Response`,以便用户的浏览器直接获取到它。 (此处省略代码示例) 现在准备工作已经完成,回到我们的控制器: (此处省略代码示例) 尝试访问它,它将被代理到google.com。 (此处省略图片示例) 本文向您展示了如何在ASP.NET Core中实现简单的HTTP代理功能,通过这个代理功能,您可以将请求代理到其他URL。这将为您的项目带来更多的灵活性和扩展性。那么,您是否已经考虑在自己的项目中使用这种代理功能呢?如何有效地利用这个功能来改进您的项目呢?--GPT 4

ASP.NET Core Reverse Proxy Web Proxy

Fix Azure Media Player can't play video in iOS mobile devices

本篇博客讨论了Azure媒体播放器在iOS移动设备上无法播放视频的问题,并提供了一些解决方案。首先,确保播放器具有以下属性:autoplay、playsinline和controls。其次,尽量避免使用`nativeControlsForTouch`和一些高级功能,因为iOS可能不支持这些功能。此外,避免使用广告和字幕加载播放器,因为这可能导致播放器在iOS设备上无法正常工作。同时,使用正确的MIME类型,如`application/vnd.ms-sstr+xml`和`video/mp4`等,错误的MIME类型可能导致播放器加载失败。最后,不要在iOS设备上为播放器添加事件监听器,因为这可能导致播放器无法工作或加载速度极慢。通过遵循这些建议,您可以提高Azure媒体播放器在iOS设备上的性能和兼容性。那么,为什么iOS设备在加载和播放Azure媒体播放器时会出现这些问题?有哪些其他方法可以解决这些问题并提高播放器在iOS设备上的性能?--GPT 4

Azure Media Player Azure Azure Media Service

微信的架构是如何实现分布式消息分发?

微信作为生活中不可或缺的通讯工具,其架构设计之巧妙令人称赞。本文探讨了微信如何通过分布式架构实现高效的消息分发。文章首先提出了一些关于微信的疑问,例如需要手机扫码登录PC端、切换设备后无法同步聊天记录等,然后通过深入分析微信的架构设计,解释了这些现象背后的原因。 文章提出,微信采用了分布式应用架构,其服务器遍布全球各地,没有中心化的服务器。为了实现分布式通讯,微信至少需要设计三个算法:服务器选择算法、服务器端切换算法和用户发现算法。这三个算法共同保证了用户能够快速定位到合适的微信服务器并进行通信。 分布式架构的设计带来了许多好处,例如运维上的便利、对单台服务器生命的弱化、国际化应用的支持等。此外,文章还通过类比Email的通信过程,解释了微信群聊、文件传输等功能的实现原理。 最后,文章指出许多产品经理可能无法理解微信架构设计的复杂性,而盲目模仿或吐槽微信的槽点。实际上,微信的设计非常精巧,为用户提供了高效便捷的通讯体验。然而,这种设计也存在一定的局限性,有些功能并非程序员脑残,而是数据结构本身无法支撑。因此,产品经理在设计产品时,需要更深入地了解技术架构,避免提出不切实际的需求。--GPT 4

Web WeChat Distributed Messging IM

Download any Azure Media Service video or live stream with FFmpeg.

本篇博客为您提供了一个关于如何下载任意Azure媒体服务视频或直播流的教程。在开始之前,您需要安装FFmpeg,无论您使用的是Windows、Linux还是Mac OS。您可以在此处下载最新的FFmpeg:[https://ffmpeg.org/download.html](https://ffmpeg.org/download.html)。 安装完成后,准备如下命令: ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "{0}" -c copy video.mp4 接下来,您需要获取所观看视频的Azure媒体服务平滑流URL。通常,此URL以“`manifest`”结尾。例如: https://amssamples.streaming.mediaservices.windows.net/3b970ae0-39d5-44bd-b3a3-3136143d6435/AzureMediaServicesPromo.ism/manifest 要下载此内容,请首先将其附加为m3u8格式。在URL的末尾附加以下项目: (format=m3u8-aapl-v3) 现在,URL应该如下所示: https://amssamples.streaming.mediaservices.windows.net/3b970ae0-39d5-44bd-b3a3-3136143d6435/AzureMediaServicesPromo.ism/manifest(format=m3u8-aapl-v3) 现在将URL替换为第一步中的命令`{0}`。 ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "https://yourdomain/manifest(format=m3u8-aapl-v3)" -c copy video.mp4 最后,执行生成的命令。您的视频将作为文件video.mp4下载。 通过本篇博客,您将学会如何使用FFmpeg轻松下载Azure媒体服务中的视频或直播流。那么,这个方法是否适用于其他流媒体服务呢?如何优化下载速度和质量?探索这些问题,找到答案,尽情享受您的视频下载之旅...--GPT 4

Azure Media Player bash Azure Azure Media Service Download FFmpeg

EF second layer cache to enhance your SQL database performance based on Redis

本篇博客介绍了如何使用基于Redis的EF第二层缓存来提高SQL数据库性能。首先,安装`EFCoreSecondLevelCacheInterceptor`包,然后在`StartUp`类的`ConfigureServices`方法中进行相应的配置。这个缓存会在通过使用这个库的DbContext更改实体(插入、更新或删除)时更新。如果数据库通过其他方式(如存储过程或触发器)更新,缓存将变得过时。但是,如果我们的应用程序在多个实例中运行,数据库的更改可能不适用于其他实例,可能会导致许多问题。此时,我们需要使用Redis来存储缓存。 Redis是一种开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。本文介绍了三种安装Redis的方法,分别是在Redis官网下载安装、在Windows Server上安装及在Azure上创建Redis缓存实例。安装完成后,使用命令安装`EasyCaching.Redis`包,并修改`StartUp`方法以连接Redis数据库并使用Redis存储Entity-Framework Core的缓存,支持扩展。 此外,还需在`appsettings.json`文件中添加正确的Redis连接信息。这样,在启动过程中,应用程序将尝试连接到Redis数据库,并使用Redis缓存数据库结果。在不修改代码的情况下,ASP.NET Core应用程序的性能得到了极大的提升。Redis值得称赞! 那么,如何在多实例应用程序中保持可扩展性呢?使用Redis作为缓存存储是否足够满足我们的需求?在实际应用中,我们可能还需要关注其他性能优化策略。--GPT 4

ASP.NET Core C# SQL Server SQL Entity Framework Core Azure Redis Caching Cache

软件定制行业为何应当发展软件订阅制?

在当前软件定制行业中,普遍存在的问题是软件质量低劣、漏洞百出,对企业的扩展和用户体验造成严重影响。这主要是由于现行的商业采购模式导致的,而发展软件订阅制可能是解决这一问题的有效途径。订阅制意味着甲方按时间和用量付费,购买软件的使用权和保证软件可用性的服务,而非购买整个软件源码的知识产权。这将有助于改善乙方的开发流程,提高软件质量,降低甲方的风险,并且对双方都有更大的利益。 订阅制的软件定价可以更加灵活,降低甲方的初期试错成本,有助于乙方扩展市场。此外,乙方需要靠精准的定价来保证稳赚不赔,实现企业的健康发展。以微软的Office 365为例,采用订阅制销售,使得普通用户更容易接受,同时提供优异的技术支持和高软件可用性。 尽管订阅制在宏观和微观层面上具有诸多优势,但也存在一些问题,如数据安全、财务资产申报等方面的挑战。然而,随着越来越多的软件开发企业开始向服务转型并取得成功,订阅制将成为软件定制行业的主流和未来趋势。我们有理由相信,这将显著提高各行各业的IT服务质量。那么,订阅制是否真的能够改变软件定制行业的现状?企业如何应对订阅制带来的挑战?这些问题值得我们深入思考。--GPT 4

DevOps China Software Development SaaS Subscription

在前端哈希密码是否是个不错的方案?

在这篇博客中,作者探讨了在前端哈希密码是否是一个不错的方案。文章首先指出,将密码哈希后存入数据库是为了防止运维人员直接查看密码,但如果将哈希过程放在前端完成,则对服务器来说,它实际上只是做了一次明文比较,这样运维人员仍然可以直接调用登录API获取账号权限。 文章接着讲述了腾讯公司的QQ在十几年前曾采用两趟哈希的做法来解决密码明文传输和运维人员登录问题。然而,这种做法实际上对防范中间人攻击并没有帮助,因为只要能抓到的包,就是能伪造的包。 作者回顾了当时网络安全状况较差的年代,例如ARP欺骗和中间人攻击等手段容易实现。然而,在RSA算法普及后,中间人攻击几乎不可能成功。如今,开发Web应用只需借助TLS,将密码原文直接发送给服务器就已经相当安全。 然而,我们仍然不能完全信任HTTPS,因为除了通信层面的防窃取,还存在许多其他攻击手段,例如浏览器插件可以直接阅读网页表单,以及假冒网页诱导用户输入密码等。文章最后指出,要真正解决这些问题,仅靠安全措施和算法远远不够,还需要提高普通用户的警觉性和判断能力,以及对基础安全领域的常识。 在这个背景下,我们不禁要思考:前端哈希密码真的是一个好的解决方案吗?如何在保护用户隐私的同时,确保网络安全?这些问题值得我们深入探讨。--GPT 4

Security Password Hash

Get unique random numbers in C#

本篇博客介绍了如何在C#中生成唯一的随机数。作者首先构建了一个简单的素数检测方法,并通过该方法生成一个素数序列。接着,编写了一个检测E值是否正确的方法,以及从自然数中找到有效E值的方法。在此基础上,作者实现了将输入值N分解为两个素数P和Q的方法,并通过P和Q得到有效的D和E值。 为了检验所得到的P、Q、D和E值是否有效,作者编写了一个函数,该函数在获取正确的P、Q、D和E值时返回true,失败时返回false。最后,通过调用I ^ d % N来生成随机数序列。由于输入的N值可能无效,因此还需要跳过所有无效输入并找到其附近的最近N值。 博客中提供了一个完整的示例,展示了如何使用这些方法生成唯一的随机数。通过运行示例,我们可以看到输出的随机数序列既随机又唯一。这种方法在需要生成不重复随机数的场景中非常有用。 那么,这种生成随机数的方法是否有局限性?在实际应用中,我们可能需要考虑性能和效率问题。此外,是否有其他更简洁或者更通用的方法来生成唯一随机数呢?在阅读本文后,希望读者能够对这些问题进行思考并尝试寻找答案。--GPT 4

C# .NET Core Algorithm Random Numbers Unique random Non-repeat Random

HTTP post file from .NET Core new HTTP client

随着.NET Core 3的发布,微软推出了一款全新的.NET Core HTTP客户端。新客户端使得调用WEB API变得更加简单。本文将介绍如何使用新客户端提交文件至服务器。 通常情况下,我们调用Web API时不需要提交二进制文件。但是在新客户端中,我们应该如何向服务器提交文件呢?首先,我们需要了解HTTP POST请求带文件与表单URL编码内容的不同之处。表单通过一些边界进行划分,边界名称在HTTP头部的内容类型中指定。 要从.NET Core HTTP客户端提交文件,可以使用`MultipartFormDataContent`,这样框架就可以处理多部分内容。然后,通过添加新的流内容将文件添加到表单中。此外,您还可以向表单中添加其他内容,如URL编码的内容。最后,提交表单。 本文提供的示例代码展示了如何使用新的HTTP客户端提交文件至服务器。在这个过程中,您可能会遇到一些有趣的问题,例如如何处理多个文件的上传,或者如何在提交文件的同时提交其他类型的数据。文章内容将引导您探索这些问题,并帮助您找到合适的解决方案。--GPT 4

ASP.NET Core C# .NET Core HTTP Web File HTTP Client POST

Tips for Azure CLI script programming on bash

本篇博客文章主要介绍了如何在bash中编写Azure CLI脚本。文章提供了一系列实用的代码示例,涵盖了登录Azure、选择订阅、获取租户ID和域名等操作。此外,文章还详细介绍了如何在Azure中创建资源,例如资源组、应用程序洞察和获取连接字符串等。 文章还涉及了如何获取SQL Server数据库连接字符串、Azure SignalR连接字符串、Azure存储帐户连接字符串以及Azure App服务访问URL等信息。此外,文章还介绍了如何为函数应用和Azure应用服务设置环境变量。 阅读本文后,您将了解如何编写更高效的Azure CLI脚本以完成各种操作。文章提供的代码示例可供参考和实践,以便您更好地理解和掌握这些技巧。同时,您可能会思考如何根据自己的需求定制这些脚本以满足特定场景的需求。您还可以尝试将这些代码片段组合成一个更复杂的脚本,以实现更高级的功能。 最后,有哪些其他Azure CLI脚本技巧可以提高我们的工作效率呢?请继续阅读全文,发掘更多有趣的问题和答案。--GPT 4

bash Azure DevOps Azure CLI

Bootstrap dark theme minimum style

With the increasing popularity of dark mode in mobile apps and websites, it's essential to adapt your Bootstrap-based website to support this feature. This blog post discusses a simple method to enable automatic dark theme switching with minimal changes to your existing website. Using media queries in CSS, you can easily detect if the current device is set to dark mode and apply the appropriate styles. Similarly, with JavaScript, you can detect dark mode and execute specific actions. The blog provides code snippets to accomplish these tasks, including monitoring dark mode status changes and modifying elements' classes based on the user's preference. However, detecting dark mode alone is not enough. You also need to modify some styles for specific elements like input fields. The blog provides a list of CSS rules to be applied when the dark mode is enabled, ensuring a seamless and visually appealing experience for users who prefer the dark theme. By implementing this method, you can ...--GPT 4

Web CSS Bootstrap Media Query Style Dark theme

Microsoft account integrated sign in via C#

本篇博客介绍了如何通过C#实现Microsoft账户的集成登录。首先,需要在Microsoft Azure Portal创建一个应用程序,并获取客户端ID和客户端密钥。接下来,通过运行`$ dotnet add package Aiursoft.XelNaga`安装所需的类库。 为了验证用户身份,我们需要将用户重定向到Microsoft登录门户。博客提供了相应的C#代码,实现了`GetBindRedirectLink()`方法。通过返回浏览器的“重定向结果”并使用`GetBindRedirectLink()`函数作为重定向URL,用户将被引导至登录页面。 用户成功登录后,将会被重定向回您设置的`RedirectUri`,并附带一个代码。通过该代码,您可以调用`GetUserDetail()`方法获取用户的详细信息。 博客还提供了`GetAccessToken()`方法,用于获取有效的访问令牌,以便下载用户个人资料。当您拥有访问令牌后,只需调用`GetUserInfo()`方法,我们将调用Graph API获取当前用户信息。 返回的用户是`MicrosoftUserDetail`实例,其中包含用户的ID、显示名称、用户主体名称和职位等信息。用户ID是唯一的,可用于识别您的用户。 最后,构建一个自定义网页,您的应用程序便可投入使用。博客还提供了源代码链接以供参考。 本篇博客详细介绍了如何通过C#实现Microsoft账户的集成登录,为开发者提供了详细的代码示例和解释。那么,如何将这种集成登录应用到其他类型的应用程序中呢?如何确保用户数据的安全性?希望本文能为您提供启示和灵感。--GPT 4

ASP.NET Core Azure Microsoft OAuth Login Authentication