1.nginx集成ldap
2.C# 有什么实用的查看查询第三方库吗?
3.scoop install dark安装失败?
4.Abp vNext 实战-1-简介生成项目
5.通过Expression表达式树,为EF Core找回AddOrUpdate方法
6.Redis服务器的源码启动和停止
nginx集成ldap
安装Nginx并集成LDAP服务器,实现对网站进行基于LDAP认证。查看查询首先更新软件包列表,源码执行命令:
sudo apt-get install software-properties-common
接着添加Nginx的查看查询PPA源:
sudo add-apt-repository ppa:nginx/stable
更新软件包列表:
sudo apt-get update
安装Nginx:
sudo apt-get install nginx
验证Nginx安装情况:
nginx -V
安装额外的依赖以支持Nginx与LDAP集成:
git clone kvspb/nginx-auth-ldap
将nginx-auth-ldap移动至/usr/local/src目录下:
sudo mv nginx-auth-ldap /usr/local/src
下载Nginx源码:
wget nginx.org/download/nginx-1..1.tar.gz
解压Nginx源码包:
tar -zxvf nginx-1..1.tar.gz
安装Nginx所需的依赖:
apt-get install libpcre3 libpcre3-dev libssl-dev zlib1g-dev libldap2-dev libxml2-dev libxslt1-dev libgd-dev libgeoip-dev build-essential -y
配置Nginx源码以支持LDAP功能:
cd nginx-1..1
./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --/ubuntu/ focal main restricted universe multiverse
# deb-src /ubuntu/ focal main restricted universe multiverse
deb /ubuntu/ focal-updates main restricted universe multiverse
# deb-src /ubuntu/ focal-updates main restricted universe multiverse
deb /ubuntu/ focal-backports main restricted universe multiverse
# deb-src /ubuntu/ focal-backports main restricted universe multiverse
deb /ubuntu/ focal-security main restricted universe multiverse
# deb-src /ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb /ubuntu/ focal-proposed main restricted universe multiverse
# deb-src /ubuntu/ focal-proposed main restricted universe multiverse
# 阿里源
deb /ubuntu/ focal main restricted universe multiverse
#deb-src /ubuntu/ focal main restricted universe multiverse
deb /ubuntu/ focal-updates main restricted universe multiverse
#deb-src /ubuntu/ focal-updates main restricted universe multiverse
deb /ubuntu/ focal-backports main restricted universe multiverse
#deb-src /ubuntu/ focal-backports main restricted universe multiverse
deb /ubuntu/ focal-security main restricted universe multiverse
#deb-src /ubuntu/ focal-security main restricted universe multiverse
deb /ubuntu/ focal-proposed main restricted universe multiverse
#deb-src /ubuntu/ focal-proposed main restricted universe multiverse
#网易源
deb /"]
}
3 Scoop
3.1 Scoop 安装
1. 以管理员权限打开 PowerShell 。源码圣诞源码php
2. 自定义用户软件和全局软件安装位置,查看查询运行下面命令:
$env:SCOOP='D:\Softwares\Scoop\LocalApps'
[Environment]::SetEnvironmentVariable('SCOOP',源码 $env:SCOOP, 'User')
$env:SCOOP_GLOBAL='D:\Softwares\Scoop\GlobalApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
3. 配置安全策略以及安装 Scoop,运行下面命令:
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('域名,查看查询查询对应的源码 IP 地址。
3. 配置 C:\Windows\System\drivers\etc\hosts文件,查看查询在修改前赋予 hosts 文件读写权限。源码
4. 修改 host 文件内容如下,查看查询第一列是源码查询出来的ip地址,第二列是查看查询python抖音源码其对应的域名,中间有个空格。
5. 保存后重新运行安装命令。
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('/chawyehsu/dorado
scoop bucket add Ash /Ash/Scoop-Ash.git
scoop bucket add pleiades /jfut/scoop-pleiades.git
scoop bucket add Scoop-Apps /ACooper/scoop-apps
scoop bucket add scoop-zapps /kkzzhizhou/scoop-zapps
scoop bucket add lemon /hoilc/scoop-lemon
scoop bucket add raresoft /L-Trump/scoop-raresoft
4. 如果软件仓库添加失败,还是因为网络的原因,大家可以把这些仓库 fork 到自己的码云账户下,然后再添加。
5. 使用 aria2 来加速软件的安装:
scoop install aria2 -g
scoop config aria2-max-connection-per-server
scoop config aria2-split
scoop config aria2-min-split-size 1M
如果想关闭 aria2,可以运行 scoop config aria2-enabled false命令。
3.4 Scoop 常用命令
# 搜索app
scoop search <应用名>
# 检查哪些软件有更新
scoop status
# 版本切换
scoop reset <应用名>@<版本切换>
# 禁止某app更新
scoop hold <应用名>
# 更新所有app
scoop update
*# 安装app
scoop install <应用名>
#全局安装app
scoop install -g <应用名>
#安装extras软件源下的app
scoop install extras/<应用名>
# 卸载app
scoop uninstall <应用名>
# 卸载全局安装的app
scoop uninstall -g <应用名>
4 总结
开发环境软件的安装与配置到这里就完成了,利用上面这些软件,你可以快速搭建 Java、Go、C++、Python等开发环境。php电话轰源码
参考资料
[1]Linux内核更新包: /store/apps/9n6svws3rx
[4]IP地址查询网站: /
Abp vNext 实战-1-简介生成项目
Abp vNext 实战系列:项目简介与环境配置
Abp vNext 是一个全新的开源项目,与早期版本分离,专注于.Net Core和模块化设计,目前最新版为V3.0.4,可在github.com找到源码。它在设计上更为精细,每个模块功能独立且集成众多最佳实践,便于开发者灵活选用。项目的更新频率高,对反馈迅速处理,促使项目快速成长和成熟。多租户特性使得数据隔离,开发者在编码时无需考虑租户问题,详情可在官网的多吉搜索源码"特点"部分查看。 学习Abp,基础概念无需深入研究,主要集中在模块开发、Api代理、DDD和数据访问等关键点。实战系列将侧重于实践,从项目创建开始。环境配置
IDE选择广泛,包括VSCode、Visual Studio和vim。本系列我使用的环境如下:VS新建项目,添加Abp Nuget包
选择Direct Download创建项目,填完信息后下载并创建
推荐使用CLI命令行创建项目
Abp项目有Application(完整Web项目)、Module(服务模块)和Console(控制台程序)三种类型。代挂网api源码我们从创建完整的Application项目开始,如DG.Blog,它基于DDD原则进行分层设计。 项目文件结构包括aspnet-core和react-native,这里主要关注aspnet-core部分,VS打开DG.Blog.sln,可以看到默认配置已包含EF Core,尽管不是必需,但常见于项目中。 项目依赖关系明确,如Domain.Shared用于常量和共享对象,Application.Contracts用于接口和DTO,Domain负责领域对象和逻辑实现。其他依赖项如DbContext配置、迁移文件访问和应用服务接口等也都有所涉及。 接下来的章节,我们将配置数据库,执行迁移,让项目启动运行。对于深入理解C#,推荐一本合适的书籍作为辅助材料。通过Expression表达式树,为EF Core找回AddOrUpdate方法
在.NET Core开发中,开发者通常会遇到使用EF Core时,缺少AddOrUpdate方法的情况。虽然可以自定义实现,但有一个通用且简便的AddOrUpdate方法会更实用。在.NET Framework时代,EF6的AddOrUpdate方法深受欢迎。经过多年的习惯调整,许多开发者在网络中寻找解决方案,但大多不甚满意。
为此,本文提供了一种通过扩展DbSet类型,为EF Core找回AddOrUpdate方法的实现方案。基本思路是,为DbSet添加一个扩展方法,根据传入实体的特定属性进行数据的存在性判断,通常使用Id、手机号或身份证号等唯一键进行查存。为确保灵活性,动态构建where的Expression表达式是关键。
首先,创建一个名为AddOrUpdate的扩展方法,接受DbSet类型及一个表达式树类型作为参数。这个表达式树类型决定了实体根据哪个字段进行存在性判断。通过表达式树编译,可以反射获取实体的判重字段值。如使用字符串类型的Name进行查重,编译后传入实体调用,得到Name的值。
在构造where表达式树前,封装表达式树的参数访问至关重要。此步骤涉及两种操作:成员访问和创建新对象,用于生成所需的条件表达式树主体部分。例如,将e=>e.Name表达式转换为e=>e.Name=="白火石"的形式。
构造完成where表达式树后,可以进行数据查询。通过判断传入的实体是否为null来决定是新增还是更新操作。若为null,则直接使用DBSet的Add方法。若不为null,表示需要更新,但需排除主键字段和判重字段,这可通过反射操作实现。获取主键字段后,即可更新非主键字段的值。
至此,AddOrUpdate方法实现完毕。完整代码已封装在Masuit.Tools类库中,便于直接使用。详情见源代码地址。
Redis服务器的启动和停止
Redis是一种内存存储(in-memory)数据结构存储,可以用做数据库、Cache和消息队列使用Redis内置的配置进行启动 命令: redis-server
看看启动情况 Output: :M Apr ::. # WARNING: The TCP backlog setting of cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of . :M Apr ::. # Server started, Redis version 3.0.6 :M Apr ::. # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. :M Apr ::. * DB loaded from disk: 0. seconds :M Apr ::. * The server is now ready to accept connections on port
如果需要指定监听端口呢 命令: redis-server --port
使用脚本启动 将redis源代码下的文件utils/redis_init_script改名为redis_ 然后将redis_复制到/etc/init.d/目录 来看下redis_init_script来内容 REDISPORT= EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE= /var/run/redis_${ REDISPORT}.pid CONF=" /etc/redis/${ REDISPORT}.conf" 因为redis_文件的名字中的端口号是, REDISPORT=改为REDISPORT= 创建两个文件夹: /var/run/ 和 /etc/redis/ 将redis源码目录下的redis.conf文件copy到/etc/redis目录, 然后改名为.conf 将port后面的端口号改为
启动redis服务器 命令: /etc/init.d/redis_ start
如果觉得使用脚本启动比较麻烦,则可以这样实现上面的脚本启动 命令: redis-server /etc/redis/.conf
查看一下启动的Redis实例 命令: ps -ef|grep redis
如何停止Redis服务器呢? 脚本启动的的停止方式 命令: /etc/init.d/redis_ stop
如果不是使用脚本启动则需要使用redis-cli shutdown命令来停止 命令: redis-cli -p shutdown redis-cli -p shutdown