思维导航:
前言
一、Hangfire是什么
二、Hangfire使用条件
三、Hangfire的基本特征与优点
四、Hangfire安装和使用
总结:
Hangfire相关使用学习资料
文章正文:
🚀回到顶部
前言:
定时任务调度问题,是一个老生常谈的问题。网上有许多定时任务调度的解决方案,对于我而言很早以前主要是使用Window计划和Window服务来做任务定时执行,然后就开始使用定时任务调度框架Quartz.Net。但是却一直没有上手过Hangfire这个自带后台任务调度面板,可以在后台手动执行任务的神奇的任务调度框架。前段时间终于开始对他下手了,通过在网上查阅了一些资料和查看了Hangfire在Github中的demo,终于在我自己的项目中用上了Hangfire。在该篇文章中主要简单介绍一下什么是Hangfire,Hangfire的基本特征与优点和分别使用MySQL,MS SQL Server作为存储使用。
🚀回到顶部
一、Hangfire是什么:
Hangfire是一个开源的.NET任务调度框架,提供了内置集成化的控制台,可以直观明了的查看作业调度情况,并且Hangfire不需要依赖于单独的应用程序执行(如:windows服务,window计划)。并且支持持久性存储。
🚀回到顶部
二、Hangfire使用条件:
Hangfire与特定的.NET应用程序类型无关。您可以在ASP.NET Web应用程序,非ASP.NET Web应用程序,控制台应用程序或Windows服务中使用它。以下是要求:
1.NET Framework 4.5
2.永久存储(Hangfire将后台作业和其他与处理有关的信息保留在永久性存储器中,所以需要存储库来存储如:MS SQL Server,Redis,MySQL,PostgreSql等)
3.Newtonsoft.Json库≥5.0.1
🚀回到顶部
三、Hangfire的基本特征与优点:
通过官网中的一张图片便可知道它是一个多么优秀的任务调度框架,如下图所示:
🚀回到顶部
四、Hangfire安装和使用:
在NuGet上有关于Hangfire的 一系列软件包:
详情地址: https://www.nuget.org/packages?q=Hangfire
通过在程序包管理控制台中输入安装命令安装Hangfire所需NuGet包:
使用MS SQL Server作为存储时我们需要安装的NuGet:
在ASP.NET 应用程序下使用Hangfire安装:
1
Install-Package Hangfire
在控制台应用程序或者window server中处理作业:
1
2
Install-Package Hangfire.Core
Install-Package Hangfire.SqlServer
注意,在控制台应用程序或者window server中不推荐直接安装:Install-Package Hangfire ,因为它只是一个快速启动软件包,并包含您可能不需要的依赖项(例如,Microsoft.Owin.Host.SystemWeb等无关依赖项)。
使用MySQL作为存储时我们需要安装的NuGet:
在ASP.NET 应用程序下使用Hangfire安装:
1
Install-Package Hangfire.Core
我们还需要安装一个MySql存储(Hangfire.MySqlStorage)的拓展,注意因为Hangfire本身是不支持MySQL存储的,这是名为:Arnoldas Gudas作者拓展的:
Nuget地址:https://www.nuget.org/packages/Hangfire.MySqlStorage/
安装命令:
注意:因为我的项目是.NET Framework,Version=v4.5.1版本的,所以只能安装1.0.7版本的,大家看需求而定
1
Install-Package Hangfire.MySqlStorage -Version 1.0.7
当我们要使用(宿主)IIS托管ASP.NET应用程序时,我们还需要安装:
1
Install-Package Microsoft.Owin.Host.SystemWeb -Version 4.0.1
添加和配置OWIN Startup.cs,及其连接对应的存储数据库:
添加OWIN Startup.cs
这里是当你的项目中不存在Startup.cs时才需要执行添加的操作!
什么是OWIN Startup.cs:
简单概述:是.NET 平台开放的web接口,Startup则是.Net与web通讯管道,起到转发,沟通的作用。
详情介绍:https://www.cnblogs.com/wj033/p/6065145.html
在Startup.cs中连接需要使用的存储库:
1
2
3
4
5
6
7
8
9
10
11
12
13
public void Configuration(IAppBuilder app)
{
//运用SqlServer存储,对应web.config中的connectionStrings中的name
GlobalConfiguration.Configuration.UseSqlServerStorage(“sqlserver_connection”);
//注意,当你使用的是MySql作为存储时,需要如下配置
//运用MySql存储,对应web.config中的connectionStrings中的name
GlobalConfiguration.Configuration.UseStorage(new MySqlStorage("mysql_connection"));
app.UseHangfireDashboard();//配置后台仪表盘
app.UseHangfireServer();//开始使用Hangfire服务
}
Web.config数据库连接配置:
1.MS SQL Server中:
2.MySQL中:
运行程序,访问调度控制面板:
当我们已经完成了上面的相关配置后,且程序能够正常无bug的运行时,我们的Hangfire Dashboard(仪表盘)在我们的本地就可以正常访问了(Hangfire仪表盘默认只支持本地访问),假如需要远程可访问的话我们还需要做对应的配置授权操作!
运行成功,查看数据库中是否生成了与Hangfire相关的表:
首次运行成功后,打开数据库可以看到Hangfire已经自动为我们创建了定时任务的一些定时任务列表,定时队列,服务,状态等相关的数据表(展现了Hangfire作用的持久化特性),如下图所示:
a.MS SQL Server中生成的表:
b.MySQL中生成的表:
访问调度控制面板:
本地访问方式:https://localhost:端口号/hangfire/
调度控制面板效果图:
后台常用任务调度创建和使用:
注意:WriteLog是自己封装的一个通用记录日志的方法!
复制代码
复制代码
//支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。
var jobId = BackgroundJob.Enqueue(()=>WriteLog(“队列任务执行了!”));
//延迟任务执行:不是马上调用方法,而是设定一个未来时间点再来执行,延迟作业仅执行一次
var jobId = BackgroundJob.Schedule(()=>WriteLog(“一天后的延迟任务执行了!”),TimeSpan .FromDays(1));//一天后执行该任务
//循环任务执行:一行代码添加重复执行的任务,其内置了常见的时间循环模式,也可基于CRON表达式来设定复杂的模式。【用的比较的多】
RecurringJob.AddOrUpdate(()=>WriteLog(“每分钟执行任务!”), Cron.Minutely); //注意最小单位是分钟
//延续性任务执行:类似于.NET中的Task,可以在第一个任务执行完之后紧接着再次执行另外的任务
BackgroundJob.ContinueWith(jobId,()=>WriteLog(“连续任务!”));
https://github.com/users/fghdfghdf245/projects/716
https://github.com/users/fghdfghdf245/projects/717
https://github.com/users/fghdfghdf245/projects/718
https://github.com/users/fghdfghdf245/projects/719
https://github.com/users/fghdfghdf245/projects/720
https://github.com/users/fghdfghdf245/projects/721
https://github.com/users/fghdfghdf245/projects/722
https://github.com/users/fghdfghdf245/projects/723
https://github.com/users/fghdfghdf245/projects/724
https://github.com/users/fghdfghdf245/projects/725
https://github.com/users/fghdfghdf245/projects/726
https://github.com/users/fghdfghdf245/projects/727
https://github.com/users/fghdfghdf245/projects/728
https://github.com/users/fghdfghdf245/projects/729
https://github.com/users/fghdfghdf245/projects/730
https://github.com/users/fghdfghdf245/projects/731
https://github.com/users/fghdfghdf245/projects/732
https://github.com/users/fghdfghdf245/projects/733
https://github.com/users/fghdfghdf245/projects/734
https://github.com/users/fghdfghdf245/projects/735
https://github.com/users/fghdfghdf245/projects/736
https://github.com/users/fghdfghdf245/projects/737
https://github.com/users/fghdfghdf245/projects/738
https://github.com/users/fghdfghdf245/projects/739
https://github.com/users/fghdfghdf245/projects/740
https://github.com/users/fghdfghdf245/projects/741
https://github.com/users/fghdfghdf245/projects/742
https://github.com/users/fghdfghdf245/projects/743
https://github.com/users/fghdfghdf245/projects/744
https://github.com/users/fghdfghdf245/projects/745
https://github.com/users/fghdfghdf245/projects/746
https://github.com/users/fghdfghdf245/projects/747
https://github.com/users/fghdfghdf245/projects/748
https://github.com/users/fghdfghdf245/projects/749
https://github.com/users/fghdfghdf245/projects/750
https://github.com/users/fghdfghdf245/projects/751
https://github.com/users/fghdfghdf245/projects/752
https://github.com/users/fghdfghdf245/projects/753
https://github.com/users/fghdfghdf245/projects/754
https://github.com/users/fghdfghdf245/projects/755
https://github.com/users/fghdfghdf245/projects/756
https://github.com/users/fghdfghdf245/projects/757
https://github.com/users/fghdfghdf245/projects/758
https://github.com/users/fghdfghdf245/projects/759
https://github.com/users/fghdfghdf245/projects/760
https://github.com/users/fghdfghdf245/projects/761
https://github.com/users/fghdfghdf245/projects/762
https://github.com/users/fghdfghdf245/projects/763
https://github.com/users/fghdfghdf245/projects/764
https://github.com/users/fghdfghdf245/projects/765
https://github.com/users/fghdfghdf245/projects/766
https://github.com/users/fghdfghdf245/projects/767
https://github.com/users/fghdfghdf245/projects/768
https://github.com/users/fghdfghdf245/projects/769
https://github.com/users/fghdfghdf245/projects/770
https://github.com/users/fghdfghdf245/projects/771
https://github.com/users/fghdfghdf245/projects/772
https://github.com/users/fghdfghdf245/projects/773
https://github.com/users/fghdfghdf245/projects/774
https://github.com/users/fghdfghdf245/projects/775
https://github.com/users/fghdfghdf245/projects/776
https://github.com/users/fghdfghdf245/projects/777
https://github.com/users/fghdfghdf245/projects/778
https://github.com/users/fghdfghdf245/projects/779
https://github.com/users/fghdfghdf245/projects/780
https://github.com/users/fghdfghdf245/projects/781
https://github.com/users/fghdfghdf245/projects/782
https://github.com/users/fghdfghdf245/projects/783
https://github.com/users/fghdfghdf245/projects/784
https://github.com/users/fghdfghdf245/projects/785
https://github.com/users/fghdfghdf245/projects/786
https://github.com/users/fghdfghdf245/projects/787
https://github.com/users/fghdfghdf245/projects/788
https://github.com/users/fghdfghdf245/projects/789
https://github.com/users/fghdfghdf245/projects/790
https://github.com/users/fghdfghdf245/projects/791
https://github.com/users/fghdfghdf245/projects/792
https://github.com/users/fghdfghdf245/projects/793
https://github.com/users/fghdfghdf245/projects/794
https://github.com/users/fghdfghdf245/projects/795
https://github.com/users/fghdfghdf245/projects/796
https://github.com/users/fghdfghdf245/projects/797
https://github.com/users/fghdfghdf245/projects/798
https://github.com/users/fghdfghdf245/projects/799
https://github.com/users/fghdfghdf245/projects/800
https://github.com/users/fghdfghdf245/projects/801
https://github.com/users/fghdfghdf245/projects/802
https://github.com/users/fghdfghdf245/projects/803
https://github.com/users/fghdfghdf245/projects/804
https://github.com/users/fghdfghdf245/projects/805
https://github.com/users/fghdfghdf245/projects/806
https://github.com/users/fghdfghdf245/projects/807
https://github.com/users/fghdfghdf245/projects/808
https://github.com/users/fghdfghdf245/projects/809
https://github.com/users/fghdfghdf245/projects/810
https://github.com/users/fghdfghdf245/projects/811
https://github.com/users/fghdfghdf245/projects/812
https://github.com/users/fghdfghdf245/projects/813
https://github.com/users/fghdfghdf245/projects/814
https://github.com/users/fghdfghdf245/projects/815
https://github.com/users/fghdfghdf245/projects/816
https://github.com/users/fghdfghdf245/projects/817
https://github.com/users/fghdfghdf245/projects/818
https://github.com/users/fghdfghdf245/projects/819
https://github.com/users/fghdfghdf245/projects/820
https://github.com/users/fghdfghdf245/projects/821
https://github.com/users/fghdfghdf245/projects/822
https://github.com/users/fghdfghdf245/projects/823
https://github.com/users/fghdfghdf245/projects/824
https://github.com/users/fghdfghdf245/projects/825
https://github.com/users/fghdfghdf245/projects/826
https://github.com/users/fghdfghdf245/projects/827
https://github.com/users/fghdfghdf245/projects/828
https://github.com/users/fghdfghdf245/projects/829
https://github.com/users/fghdfghdf245/projects/830
https://github.com/users/fghdfghdf245/projects/831
https://github.com/users/fghdfghdf245/projects/832
https://github.com/users/fghdfghdf245/projects/833
https://github.com/users/fghdfghdf245/projects/834
https://github.com/users/fghdfghdf245/projects/835
https://github.com/users/fghdfghdf245/projects/836
https://github.com/users/fghdfghdf245/projects/837
https://github.com/users/fghdfghdf245/projects/838
https://github.com/users/fghdfghdf245/projects/839
https://github.com/users/fghdfghdf245/projects/840
https://github.com/users/fghdfghdf245/projects/841
https://github.com/users/fghdfghdf245/projects/842
https://github.com/users/fghdfghdf245/projects/843
https://github.com/users/fghdfghdf245/projects/844
https://github.com/users/fghdfghdf245/projects/845
https://github.com/users/fghdfghdf245/projects/846
https://github.com/users/fghdfghdf245/projects/847
https://github.com/users/fghdfghdf245/projects/848
https://github.com/users/fghdfghdf245/projects/849
https://github.com/users/fghdfghdf245/projects/850
https://github.com/users/fghdfghdf245/projects/851
https://github.com/users/fghdfghdf245/projects/852
https://github.com/users/fghdfghdf245/projects/853
https://github.com/users/fghdfghdf245/projects/854
https://github.com/users/fghdfghdf245/projects/855
https://github.com/users/fghdfghdf245/projects/856
https://github.com/users/fghdfghdf245/projects/857
https://github.com/users/fghdfghdf245/projects/858
https://github.com/users/fghdfghdf245/projects/859
https://github.com/users/fghdfghdf245/projects/860
https://github.com/users/fghdfghdf245/projects/861
https://github.com/users/fghdfghdf245/projects/862
https://github.com/users/fghdfghdf245/projects/863
https://github.com/users/fghdfghdf245/projects/864
https://github.com/users/fghdfghdf245/projects/865
https://github.com/users/fghdfghdf245/projects/866
https://github.com/users/fghdfghdf245/projects/867
https://github.com/users/fghdfghdf245/projects/868
https://github.com/users/fghdfghdf245/projects/869
https://github.com/users/fghdfghdf245/projects/870
https://github.com/users/fghdfghdf245/projects/871
https://github.com/users/fghdfghdf245/projects/872
https://github.com/users/fghdfghdf245/projects/873
https://github.com/users/fghdfghdf245/projects/874
https://github.com/users/fghdfghdf245/projects/875
https://github.com/users/fghdfghdf245/projects/876
https://github.com/users/fghdfghdf245/projects/877
https://github.com/users/fghdfghdf245/projects/878
https://github.com/users/fghdfghdf245/projects/879
https://github.com/users/fghdfghdf245/projects/880
https://github.com/users/fghdfghdf245/projects/881
https://github.com/users/fghdfghdf245/projects/882
https://github.com/users/fghdfghdf245/projects/883
https://github.com/users/fghdfghdf245/projects/884
https://github.com/users/fghdfghdf245/projects/885
https://github.com/users/fghdfghdf245/projects/886
https://github.com/users/fghdfghdf245/projects/887
https://github.com/users/fghdfghdf245/projects/888
https://github.com/users/fghdfghdf245/projects/889
https://github.com/users/fghdfghdf245/projects/890
https://github.com/users/fghdfghdf245/projects/891
https://github.com/users/fghdfghdf245/projects/892
https://github.com/users/fghdfghdf245/projects/893
https://github.com/users/fghdfghdf245/projects/894
https://github.com/users/fghdfghdf245/projects/895
https://github.com/users/fghdfghdf245/projects/896
https://github.com/users/fghdfghdf245/projects/897
https://github.com/users/fghdfghdf245/projects/898
https://github.com/users/fghdfghdf245/projects/899
https://github.com/users/fghdfghdf245/projects/900
https://github.com/users/fghdfghdf245/projects/901
https://github.com/users/fghdfghdf245/projects/902
https://github.com/users/fghdfghdf245/projects/903
https://github.com/users/fghdfghdf245/projects/904
https://github.com/users/fghdfghdf245/projects/905
https://github.com/users/fghdfghdf245/projects/906
https://github.com/users/fghdfghdf245/projects/907
https://github.com/users/fghdfghdf245/projects/908
https://github.com/users/fghdfghdf245/projects/909
https://github.com/users/fghdfghdf245/projects/910
https://github.com/users/fghdfghdf245/projects/911
https://github.com/users/fghdfghdf245/projects/912
https://github.com/users/fghdfghdf245/projects/913
https://github.com/users/fghdfghdf245/projects/914
https://github.com/users/fghdfghdf245/projects/915
https://github.com/users/fghdfghdf245/projects/916
https://github.com/users/fghdfghdf245/projects/917
https://github.com/users/fghdfghdf245/projects/918
https://github.com/users/fghdfghdf245/projects/919
https://github.com/users/fghdfghdf245/projects/920
https://github.com/users/fghdfghdf245/projects/921
https://github.com/users/fghdfghdf245/projects/922
https://github.com/users/fghdfghdf245/projects/923
https://github.com/users/fghdfghdf245/projects/924
https://github.com/users/fghdfghdf245/projects/925
https://github.com/users/fghdfghdf245/projects/926
https://github.com/users/fghdfghdf245/projects/927
https://github.com/users/fghdfghdf245/projects/928
https://github.com/users/fghdfghdf245/projects/929
https://github.com/users/fghdfghdf245/projects/930
https://github.com/users/fghdfghdf245/projects/931
https://github.com/users/fghdfghdf245/projects/932
https://github.com/users/fghdfghdf245/projects/933
https://github.com/users/fghdfghdf245/projects/934
https://github.com/users/fghdfghdf245/projects/935
https://github.com/users/fghdfghdf245/projects/936
https://github.com/users/fghdfghdf245/projects/937
https://github.com/users/fghdfghdf245/projects/938
https://github.com/users/fghdfghdf245/projects/939
https://github.com/users/fghdfghdf245/projects/940
https://github.com/users/fghdfghdf245/projects/941
https://github.com/users/fghdfghdf245/projects/942
https://github.com/users/fghdfghdf245/projects/943
https://github.com/users/fghdfghdf245/projects/944
https://github.com/users/fghdfghdf245/projects/945
https://github.com/users/fghdfghdf245/projects/946
https://github.com/users/fghdfghdf245/projects/947
https://github.com/users/fghdfghdf245/projects/948
https://github.com/users/fghdfghdf245/projects/949
https://github.com/users/fghdfghdf245/projects/950
https://github.com/users/fghdfghdf245/projects/951
https://github.com/users/fghdfghdf245/projects/952
https://github.com/users/fghdfghdf245/projects/953
https://github.com/users/fghdfghdf245/projects/954
https://github.com/users/fghdfghdf245/projects/955
https://github.com/users/fghdfghdf245/projects/956
https://github.com/users/fghdfghdf245/projects/957
https://github.com/users/fghdfghdf245/projects/958
https://github.com/users/fghdfghdf245/projects/959
https://github.com/users/fghdfghdf245/projects/960
https://github.com/users/fghdfghdf245/projects/961
https://github.com/users/fghdfghdf245/projects/962
https://github.com/users/fghdfghdf245/projects/963
https://github.com/users/fghdfghdf245/projects/964
https://github.com/users/fghdfghdf245/projects/965
https://github.com/users/fghdfghdf245/projects/966
https://github.com/users/fghdfghdf245/projects/967
https://github.com/users/fghdfghdf245/projects/968
https://github.com/users/fghdfghdf245/projects/969
https://github.com/users/fghdfghdf245/projects/970
https://github.com/users/fghdfghdf245/projects/971
https://github.com/users/fghdfghdf245/projects/972
https://github.com/users/fghdfghdf245/projects/973
https://github.com/users/fghdfghdf245/projects/974
https://github.com/users/fghdfghdf245/projects/975
https://github.com/users/fghdfghdf245/projects/976
https://github.com/users/fghdfghdf245/projects/977
https://github.com/users/fghdfghdf245/projects/978
https://github.com/users/fghdfghdf245/projects/979
https://github.com/users/fghdfghdf245/projects/980
https://github.com/users/fghdfghdf245/projects/981
https://github.com/users/fghdfghdf245/projects/982
https://github.com/users/fghdfghdf245/projects/983
https://github.com/users/fghdfghdf245/projects/984
https://github.com/users/fghdfghdf245/projects/985
https://github.com/users/fghdfghdf245/projects/986
https://github.com/users/fghdfghdf245/projects/987
https://github.com/users/fghdfghdf245/projects/988
https://github.com/users/fghdfghdf245/projects/989
https://github.com/users/fghdfghdf245/projects/990
https://github.com/users/fghdfghdf245/projects/991
https://github.com/users/fghdfghdf245/projects/992
https://github.com/users/fghdfghdf245/projects/993
https://github.com/users/fghdfghdf245/projects/994
https://github.com/users/fghdfghdf245/projects/995
https://github.com/users/fghdfghdf245/projects/996
https://github.com/users/fghdfghdf245/projects/997
https://github.com/users/fghdfghdf245/projects/998
https://github.com/users/fghdfghdf245/projects/999
https://github.com/users/fghdfghdf245/projects/1000
https://github.com/users/fghdfghdf245/projects/1001
https://github.com/users/fghdfghdf245/projects/1002
https://github.com/users/fghdfghdf245/projects/1003
https://github.com/users/fghdfghdf245/projects/1004
https://github.com/users/fghdfghdf245/projects/1005
https://github.com/users/fghdfghdf245/projects/1006
https://github.com/users/fghdfghdf245/projects/1007
https://github.com/users/fghdfghdf245/projects/1008
https://github.com/users/fghdfghdf245/projects/1009
https://github.com/users/fghdfghdf245/projects/1010
https://github.com/users/fghdfghdf245/projects/1011
https://github.com/users/fghdfghdf245/projects/1012
https://github.com/users/fghdfghdf245/projects/1013
https://github.com/users/fghdfghdf245/projects/1014
https://github.com/users/fghdfghdf245/projects/1015
https://github.com/users/fghdfghdf245/projects/1016
https://github.com/users/fghdfghdf245/projects/1017
https://github.com/users/fghdfghdf245/projects/1018
https://github.com/users/fghdfghdf245/projects/1019
https://github.com/users/fghdfghdf245/projects/1020
https://github.com/users/fghdfghdf245/projects/1021
https://github.com/users/fghdfghdf245/projects/1022
https://github.com/users/fghdfghdf245/projects/1023
https://github.com/users/fghdfghdf245/projects/1024
https://github.com/users/fghdfghdf245/projects/1025
https://github.com/users/fghdfghdf245/projects/1026
https://github.com/users/fghdfghdf245/projects/1027
https://github.com/users/fghdfghdf245/projects/1028
https://github.com/users/fghdfghdf245/projects/1029
https://github.com/users/fghdfghdf245/projects/1030
https://github.com/users/fghdfghdf245/projects/1031
https://github.com/users/fghdfghdf245/projects/1032
https://github.com/users/fghdfghdf245/projects/1033
https://github.com/users/fghdfghdf245/projects/1034
https://github.com/users/fghdfghdf245/projects/1035
https://github.com/users/fghdfghdf245/projects/1036
https://github.com/users/fghdfghdf245/projects/1037
https://github.com/users/fghdfghdf245/projects/1038
https://github.com/users/fghdfghdf245/projects/1039
https://github.com/users/fghdfghdf245/projects/1040
https://github.com/users/fghdfghdf245/projects/1041
https://github.com/users/fghdfghdf245/projects/1042
https://github.com/users/fghdfghdf245/projects/1043
https://github.com/users/fghdfghdf245/projects/1044
https://github.com/users/fghdfghdf245/projects/1045
https://github.com/users/fghdfghdf245/projects/1046
https://github.com/users/fghdfghdf245/projects/1047
https://github.com/users/fghdfghdf245/projects/1048
https://github.com/users/fghdfghdf245/projects/1049
https://github.com/users/fghdfghdf245/projects/1050
https://github.com/users/fghdfghdf245/projects/1051
https://github.com/users/fghdfghdf245/projects/1052
https://github.com/users/fghdfghdf245/projects/1053
https://github.com/users/fghdfghdf245/projects/1054
https://github.com/users/fghdfghdf245/projects/1055
https://github.com/users/fghdfghdf245/projects/1056
https://github.com/users/fghdfghdf245/projects/1057
https://github.com/users/fghdfghdf245/projects/1058
https://github.com/users/fghdfghdf245/projects/1059
https://github.com/users/fghdfghdf245/projects/1060
https://github.com/users/fghdfghdf245/projects/1061
https://github.com/users/fghdfghdf245/projects/1062
https://github.com/users/fghdfghdf245/projects/1063
https://github.com/users/fghdfghdf245/projects/1064
https://github.com/users/fghdfghdf245/projects/1065
https://github.com/users/fghdfghdf245/projects/1066
https://github.com/users/fghdfghdf245/projects/1067
https://github.com/users/fghdfghdf245/projects/1068
https://github.com/users/fghdfghdf245/projects/1069
https://github.com/users/fghdfghdf245/projects/1070
https://github.com/users/fghdfghdf245/projects/1071
https://github.com/users/fghdfghdf245/projects/1072
https://github.com/users/fghdfghdf245/projects/1073
https://github.com/users/fghdfghdf245/projects/1074
https://github.com/users/fghdfghdf245/projects/1075
https://github.com/users/fghdfghdf245/projects/1076
https://github.com/users/fghdfghdf245/projects/1077
https://github.com/users/fghdfghdf245/projects/1078
https://github.com/users/fghdfghdf245/projects/1079
https://github.com/users/fghdfghdf245/projects/1080
https://github.com/users/fghdfghdf245/projects/1081
https://github.com/users/fghdfghdf245/projects/1082
https://github.com/users/fghdfghdf245/projects/1083
https://github.com/users/fghdfghdf245/projects/1084
https://github.com/users/fghdfghdf245/projects/1085
https://github.com/users/fghdfghdf245/projects/1086
https://github.com/users/fghdfghdf245/projects/1087
https://github.com/users/fghdfghdf245/projects/1088
https://github.com/users/fghdfghdf245/projects/1089
https://github.com/users/fghdfghdf245/projects/1090
https://github.com/users/fghdfghdf245/projects/1091
https://github.com/users/fghdfghdf245/projects/1092
https://github.com/users/fghdfghdf245/projects/1093
https://github.com/users/fghdfghdf245/projects/1094
https://github.com/users/fghdfghdf245/projects/1095
https://github.com/users/fghdfghdf245/projects/1096
https://github.com/users/fghdfghdf245/projects/1097
https://github.com/users/fghdfghdf245/projects/1098
https://github.com/users/fghdfghdf245/projects/1099
https://github.com/users/fghdfghdf245/projects/1100
https://github.com/users/fghdfghdf245/projects/1101
https://github.com/users/fghdfghdf245/projects/1102
https://github.com/users/fghdfghdf245/projects/1103
https://github.com/users/fghdfghdf245/projects/1104
https://github.com/users/fghdfghdf245/projects/1105
https://github.com/users/fghdfghdf245/projects/1106
https://github.com/users/fghdfghdf245/projects/1107
https://github.com/users/fghdfghdf245/projects/1108
https://github.com/users/fghdfghdf245/projects/1109
https://github.com/users/fghdfghdf245/projects/1110
https://github.com/users/fghdfghdf245/projects/1111
https://github.com/users/fghdfghdf245/projects/1112
https://github.com/users/fghdfghdf245/projects/1113
https://github.com/users/fghdfghdf245/projects/1114
https://github.com/users/fghdfghdf245/projects/1115
https://github.com/users/fghdfghdf245/projects/1116
https://github.com/users/fghdfghdf245/projects/1117
https://github.com/users/fghdfghdf245/projects/1118
https://github.com/users/fghdfghdf245/projects/1119
https://github.com/users/fghdfghdf245/projects/1120
https://github.com/users/fghdfghdf245/projects/1121
https://github.com/users/fghdfghdf245/projects/1122
https://github.com/users/fghdfghdf245/projects/1123
https://github.com/users/fghdfghdf245/projects/1124
https://github.com/users/fghdfghdf245/projects/1125
https://github.com/users/fghdfghdf245/projects/1126
https://github.com/users/fghdfghdf245/projects/1127
https://github.com/users/fghdfghdf245/projects/1128
https://github.com/users/fghdfghdf245/projects/1129
https://github.com/users/fghdfghdf245/projects/1130
https://github.com/users/fghdfghdf245/projects/1131
https://github.com/users/fghdfghdf245/projects/1132
https://github.com/users/fghdfghdf245/projects/1133
https://github.com/users/fghdfghdf245/projects/1134
https://github.com/users/fghdfghdf245/projects/1135
https://github.com/users/fghdfghdf245/projects/1136
https://github.com/users/fghdfghdf245/projects/1137
https://github.com/users/fghdfghdf245/projects/1138
https://github.com/users/fghdfghdf245/projects/1139
https://github.com/users/fghdfghdf245/projects/1140
https://github.com/users/fghdfghdf245/projects/1141
https://github.com/users/fghdfghdf245/projects/1142
https://github.com/users/fghdfghdf245/projects/1143
https://github.com/users/fghdfghdf245/projects/1144
https://github.com/users/fghdfghdf245/projects/1145
https://github.com/users/fghdfghdf245/projects/1146
https://github.com/users/fghdfghdf245/projects/1147
https://github.com/users/fghdfghdf245/projects/1148
https://github.com/users/fghdfghdf245/projects/1149
https://github.com/users/fghdfghdf245/projects/1150
https://github.com/users/fghdfghdf245/projects/1151
https://github.com/users/fghdfghdf245/projects/1152
https://github.com/users/fghdfghdf245/projects/1153
https://github.com/users/fghdfghdf245/projects/1154
https://github.com/users/fghdfghdf245/projects/1155
https://github.com/users/fghdfghdf245/projects/1156
https://github.com/users/fghdfghdf245/projects/1157
https://github.com/users/fghdfghdf245/projects/1158
https://github.com/users/fghdfghdf245/projects/1159
https://github.com/users/fghdfghdf245/projects/1160
https://github.com/users/fghdfghdf245/projects/1161
https://github.com/users/fghdfghdf245/projects/1162
https://github.com/users/fghdfghdf245/projects/1163
https://github.com/users/fghdfghdf245/projects/1164
https://github.com/users/fghdfghdf245/projects/1165
https://github.com/users/fghdfghdf245/projects/1166
https://github.com/users/fghdfghdf245/projects/1167
https://github.com/users/fghdfghdf245/projects/1168
https://github.com/users/fghdfghdf245/projects/1169
https://github.com/users/fghdfghdf245/projects/1170
https://github.com/users/fghdfghdf245/projects/1171
https://github.com/users/fghdfghdf245/projects/1172
https://github.com/users/fghdfghdf245/projects/1173
https://github.com/users/fghdfghdf245/projects/1174
https://github.com/users/fghdfghdf245/projects/1175
https://github.com/users/fghdfghdf245/projects/1176
https://github.com/users/fghdfghdf245/projects/1177
https://github.com/users/fghdfghdf245/projects/1178
https://github.com/users/fghdfghdf245/projects/1179
https://github.com/users/fghdfghdf245/projects/1180
https://github.com/users/fghdfghdf245/projects/1181
https://github.com/users/fghdfghdf245/projects/1182
https://github.com/users/fghdfghdf245/projects/1183
https://github.com/users/fghdfghdf245/projects/1184
https://github.com/users/fghdfghdf245/projects/1185
https://github.com/users/fghdfghdf245/projects/1186
https://github.com/users/fghdfghdf245/projects/1187
https://github.com/users/fghdfghdf245/projects/1188
https://github.com/users/fghdfghdf245/projects/1189
https://github.com/users/fghdfghdf245/projects/1190
https://github.com/users/fghdfghdf245/projects/1191
https://github.com/users/fghdfghdf245/projects/1192
https://github.com/users/fghdfghdf245/projects/1193
https://github.com/users/fghdfghdf245/projects/1194
https://github.com/users/fghdfghdf245/projects/1195
https://github.com/users/fghdfghdf245/projects/1196
https://github.com/users/fghdfghdf245/projects/1197
https://github.com/users/fghdfghdf245/projects/1198
https://github.com/users/fghdfghdf245/projects/1199
https://github.com/users/fghdfghdf245/projects/1200
https://github.com/users/fghdfghdf245/projects/1201
https://github.com/users/fghdfghdf245/projects/1202
https://github.com/users/fghdfghdf245/projects/1203
https://github.com/users/fghdfghdf245/projects/1204
https://github.com/users/fghdfghdf245/projects/1205
https://github.com/users/fghdfghdf245/projects/1206
https://github.com/users/fghdfghdf245/projects/1207
https://github.com/users/fghdfghdf245/projects/1208
https://github.com/users/fghdfghdf245/projects/1209
https://github.com/users/fghdfghdf245/projects/1210
https://github.com/users/fghdfghdf245/projects/1211
https://github.com/users/fghdfghdf245/projects/1212