Tasktracker

Author: m | 2025-04-24

★★★★☆ (4.5 / 1222 reviews)

x86 mini pc

just tasktracker similar to my old vue-tasktracker. react personal-project hobby-project tasktracker. Updated ; TypeScript; TaskTracker runs on DataNode. Mostly on all DataNodes. TaskTracker is replaced by Node Manager in MRv2. TaskTracker will be in constant communication with the JobTracker signalling the progress of the task in execution. Mapper and Reducer tasks are executed on DataNodes administered by TaskTrackers.

Download lgs youtube downloader

GitHub - microsoft/TaskTracker: TaskTracker is an approach to

TaskTracker: Optimizing Your Academic JourneyTable of ContentsTaskTracker: Optimizing Your Academic JourneyTaskTracker DescriptionTutorialFeaturesNon-Functional RequirementsGetting StartedDependenciesInstallationUsageUMLChange LogRoadmapApplication ProgressContributingAuthorsLicenseAcknowledgmentsCode AttributionTaskTracker DescriptionWelcome to TaskTracker, a state-of-the-art desktop application meticulously crafted to redefine the way you navigate your academic journey. Developed with precision using the cutting-edge MVC ASP.NET CORE WEB APPLICATION framework, TaskTracker isn't just a tool; it's your indispensable companion for achieving academic excellence.Key Highlights:Intuitive Interface: Immerse yourself in a user-friendly experience that seamlessly integrates into your daily routine. TaskTracker's intuitive interface simplifies time management, ensuring that you can effortlessly navigate through its features and functionalities.Robust Data Persistence: Your academic journey is important, and so is the data associated with it. TaskTracker employs a secure SQL database, providing robust data persistence. Your valuable information is stored with the utmost reliability, ensuring easy retrieval whenever you need it.User Authentication: Privacy and data integrity are paramount. TaskTracker prioritizes these concerns with a robust user authentication system. Rest assured that only authorized users have access, safeguarding your academic data from unauthorized access.TaskTracker goes beyond conventional task management. It empowers you to take control of your academic life, offering a suite of features designed to help you organize, plan, and optimize your study habits. Whether you're managing assignments, staying on top of deadlines, or crafting effective study schedules, TaskTracker is your ally in navigating the complex landscape of coursework and academic commitments.With TaskTracker, academic success becomes not just a goal but a tangible reality. Elevate your educational experience, stay ahead in your coursework, and confidently tackle your academic challenges with TaskTracker by your side.TutorialClick the button below to watch a tutorial video. OR (preferably for quality) Features1. Add ModulesEffortlessly add and organize multiple modules for the semester.Capture crucial details: Code, Name, Credits, Class hours per week.2. Set Semester DurationCustomize your academic timeline with the ability to set the number of weeks and start date.3. Calculate Self-Study HoursTaskTracker dynamically calculates and displays weekly self-study hours for each module.Formula: Self-study hours per week = (Credits * 10) / Number of weeks - Class hours per week.4. Record Study HoursEasily log the number of hours spent on specific modules and dates.5. Track Remaining Self-Study HoursStay informed with real-time updates on remaining self-study hours for each module.6. Data PersistenceYour data is securely stored in an SQL database, ensuring accessibility across sessions.User authentication adds an extra layer of security.Non-Functional Requirements1. Coding Standards and CommentsTaskTracker adheres to internationally acceptable coding standards.Comprehensive comments provide insights into variable names, methods, and programming logic.Getting StartedGet up and running with TaskTracker in a few simple steps:Clone the Repository: Download the repository to your local machine.Open in Visual Studio: Launch the solution in Visual Studio.Database Setup: Create the database in SSMS and obtain the connection string in Visual Studio.Build the Solution: Ensure all dependencies are resolved.Configure Connection String: Add the connection string configuration.Configure Library: Open up the MVCLibrary.sln provided to you here on Github then build it.Add Library: Right-click on dependencies and press 'Add' then select the MVCLibrary.dll.Run the Application: Fire up the application and dive into efficient time LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多家公司使用,同时也希望开源爱好者一起贡献。项目地址github地址: 一起探讨、完善。越多人支持,就越有动力去更新,喜欢记得右上角star哈。框架概况LTS 有主要有以下四种节点:JobClient:主要负责提交任务, 并接收任务执行反馈结果。JobTracker:负责接收并分配任务,任务调度。TaskTracker:负责执行任务,执行完反馈给JobTracker。LTS-Admin:(管理后台)主要负责节点管理,任务队列管理,监控管理等。其中JobClinet,JobTracker,TaskTracker节点都是无状态的。可以部署多个并动态的进行删减,来实现负载均衡,实现更大的负载量, 并且框架采用FailStore策略使LTS具有很好的容错能力。LTS注册中心提供多种实现(Zookeeper,redis等),注册中心进行节点信息暴露,master选举。(Mongo or Mysql)存储任务队列和任务执行日志, netty做底层通信。LTS支持任务类型:实时任务:提交了之后立即就要执行的任务。定时任务:在指定时间点执行的任务,譬如 今天3点执行(单次)。Cron任务:CronExpression,和quartz类似(但是不是使用quartz实现的)譬如 0 0/1 * * * ?架构图概念说明###节点组英文名称 NodeGroup,一个节点组等同于一个小的集群,同一个节点组中的各个节点是对等的,等效的,对外提供相同的服务。没个节点组中都有一个master节点,这个master节点是由LTS动态选出来的,当一个master节点挂掉之后,LTS会立马选出另外一个master节点,框架提供API监听接口给用户。###FailStore顾名思义,这个主要是用于失败了存储的,主要用于节点容错,当远程数据交互失败之后,存储在本地,等待远程通信恢复的时候,再将数据提交。FailStore主要用户JobClient的任务提交,TaskTracker的任务反馈,TaskTracker的业务日志传输的场景下。FailStore目前提供三种实现:leveldb,rocksdb,berkeleydb,用于可以自由选择使用哪种。流程图下图是一个标准的实时任务执行流程。##特性###1、Spring支持LTS可以完全不用Spring框架,但是考虑到很用用户项目中都是用了Spring框架,所以LTS也提供了对Spring的支持,包括Xml和注解,引入lts-spring.jar即可。###2、业务日志记录器在TaskTracker端提供了业务日志记录器,供应用程序使用,通过这个业务日志器,可以将业务日志提交到JobTracker,这些业务日志可以通过任务ID串联起来,可以在LTS-Admin中实时查看任务的执行进度。###3、SPI扩展支持SPI扩展可以达到零侵入,只需要实现相应的接口,并实现即可被LTS使用,目前开放出来的扩展接口有对任务队列的扩展,用户可以不选择使用mysql或者mongo作为队列存储,也可以自己实现。对业务日志记录器的扩展,目前主要支持console,mysql,mongo,用户也可以通过扩展选择往其他地方输送日志。###4、故障转移当正在执行任务的TaskTracker宕机之后,JobTracker会立马分配在宕机的TaskTracker的所有任务再分配给其他正常的TaskTracker节点执行。###5、节点监控可以对JobTracker,TaskTracker节点进行资源监控,任务监控等,可以实时的在LTS-Admin管理后台查看,进而进行合理的资源调配。###6、多样化任务执行结果支持LTS框架提供四种执行结果支持,EXECUTE_SUCCESS,EXECUTE_FAILED,EXECUTE_LATER,EXECUTE_EXCEPTION,并对每种结果采取相应的处理机制,譬如重试。EXECUTE_SUCCESS: 执行成功,这种情况,直接反馈客户端(如果任务被设置了要反馈给客户端)。EXECUTE_FAILED:执行失败,这种情况,直接反馈给客户端,不进行重试。EXECUTE_LATER:稍后执行(需要重试),这种情况,不反馈客户端,重试策略采用1min,2min,3min的策略,默认最大重试次数为10次,用户可以通过参数设置修改这个重试次数。EXECUTE_EXCEPTION:执行异常, 这中情况也会重试(重试策略,同上)###7、FailStore容错采用FailStore机制来进行节点容错,Fail And Store,不会因为远程通信的不稳定性而影响当前应用的运行。具体FailStore说明,请参考概念说明中的FailStore说明。##项目编译打包项目主要采用maven进行构建,目前提供shell脚本的打包。环境依赖:Java(jdk1.7) Maven用户使用一般分为两种:###1、Maven构建可以通过maven命令将lts的jar包上传到本地仓库中。在父pom.xml中添加相应的repository,并用deploy命令上传即可。具体引用方式可以参考lts中的例子即可。###2、直接Jar引用需要将lts的各个模块打包成单独的jar包,并且将所有lts依赖包引入。具体引用哪些jar包可以参考lts中的例子即可。##JobTracker和LTS-Admin部署提供(cmd)windows和(shell)linux两种版本脚本来进行编译和部署:1、运行根目录下的sh build.sh或build.cmd脚本,会在dist目录下生成lts-{version}-bin文件夹2、下面是其目录结构,其中bin目录主要是JobTracker和LTS-Admin的启动脚本。jobtracker 中是 JobTracker的配置文件和需要使用到的jar包,lts-admin是LTS-Admin相关的war包和配置文件。lts-{version}-bin的文件结构├── bin│ ├── jobtracker.cmd│ ├── jobtracker.sh│ ├── lts-admin.cmd│ └── lts-admin.sh├── jobtracker│ ├── conf│ │ └── zoo│ │ ├── jobtracker.cfg│ │ └── log4j.properties│ └── lib│ └── *.jar├── lts-admin│ ├── conf│ │ ├── log4j.properties│ │ └── lts-admin.cfg│ ├── lib│ │ └── *.jar│ └── lts-admin.war└── tasktracker ├── bin │ └── tasktracker.sh ├── conf │ ├── log4j.properties │ └── tasktracker.cfg └── lib └── *.jar3、JobTracker启动。如果你想启动一个节点,直接修改下conf/zoo下的配置文件,然后运行 sh jobtracker.sh zoo start即可,如果你想启动两个JobTracker节点,那么你需要拷贝一份zoo,譬如命名为zoo2,修改下zoo2下的配置文件,然后运行sh jobtracker.sh zoo2 start即可。logs文件夹下生成jobtracker-zoo.out日志。4、LTS-Admin启动.修改lts-admin/conf下的配置,然后运行bin下的sh lts-admin.sh或lts-admin.cmd脚本即可。logs文件夹下会生成lts-admin.out日志,启动成功在日志中会打印出访问地址,用户可以通过这个访问地址访问了。##JobClient(部署)使用需要引入lts的jar包有lts-jobclient-{version}.jar,lts-core-{version}.jar 及其它第三方依赖jar。###API方式启动JobClient jobClient = new RetryJobClient();jobClient.setNodeGroup("test_jobClient");jobClient.setRegistryAddress("zookeeper://127.0.0.1:2181");jobClient.start();// 提交任务Job job = new Job();job.setTaskId("3213213123");job.setParam("shopId", "11111");job.setTaskTrackerNodeGroup("test_trade_TaskTracker");// job.setCronExpression("0 0/1 * * * ?"); // 支持 cronExpression表达式// job.setTriggerTime(new Date()); // 支持指定时间执行Response response = jobClient.submitJob(job);###Spring XML方式启动 leveldb ">bean id="jobClient" class="com.github.ltsopensource.spring.JobClientFactoryBean"> property name="clusterName" value="test_cluster"/> property name="registryAddress" value="zookeeper://127.0.0.1:2181"/> property name="nodeGroup" value="test_jobClient"/> property name="masterChangeListeners"> list> bean class="com.github.ltsopensource.example.support.MasterChangeListenerImpl"/> list> property> property name="jobFinishedHandler"> bean class="com.github.ltsopensource.example.support.JobFinishedHandlerImpl"/> property> property name="configs"> props> 参数 --> prop key="job.fail.store">leveldbprop> props> property>bean>###Spring 全注解方式@Configurationpublic class LTSSpringConfig { @Bean(name = "jobClient") public JobClient getJobClient() throws Exception { JobClientFactoryBean factoryBean = new JobClientFactoryBean(); factoryBean.setClusterName("test_cluster"); factoryBean.setRegistryAddress("zookeeper://127.0.0.1:2181"); factoryBean.setNodeGroup("test_jobClient"); factoryBean.setMasterChangeListeners(new MasterChangeListener[]{ new MasterChangeListenerImpl() }); Properties configs = new Properties(); configs.setProperty("job.fail.store", "leveldb"); factoryBean.setConfigs(configs); factoryBean.afterPropertiesSet(); return factoryBean.getObject(); }}##TaskTracker(部署使用)需要引入lts的jar包有lts-tasktracker-{version}.jar,lts-core-{version}.jar 及其它第三方依赖jar。###定义自己的任务执行类public class MyJobRunner implements JobRunner { @Override public Result run(JobContext jobContext) throws Throwable { try { BizLogger bizLogger = jobContext.getBizLogger(); // TODO 业务逻辑 // 会发送到 LTS (JobTracker上) bizLogger.info("测试,业务日志啊啊啊啊啊"); } catch (Exception e) { return new Result(Action.EXECUTE_FAILED, e.getMessage()); } return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈"); }}###API方式启动TaskTracker taskTracker = new TaskTracker();taskTracker.setJobRunnerClass(MyJobRunner.class);taskTracker.setRegistryAddress("zookeeper://127.0.0.1:2181");taskTracker.setNodeGroup("test_trade_TaskTracker");taskTracker.setWorkThreads(20);taskTracker.start();###Spring XML方式启动 leveldb ">bean id="taskTracker" class="com.github.ltsopensource.spring.TaskTrackerAnnotationFactoryBean" init-method="start"> property name="jobRunnerClass" value="com.github.ltsopensource.example.support.MyJobRunner"/> property name="bizLoggerLevel" value="INFO"/> property name="clusterName" value="test_cluster"/> property name="registryAddress" value="zookeeper://127.0.0.1:2181"/> property name="nodeGroup" value="test_trade_TaskTracker"/> property name="workThreads" value="20"/> property name="masterChangeListeners"> list> bean class="com.github.ltsopensource.example.support.MasterChangeListenerImpl"/> list> property> property name="configs"> props> prop key="job.fail.store">leveldbprop> props> property>bean>###Spring注解方式启动@Configurationpublic class LTSSpringConfig implements ApplicationContextAware { private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } @Bean(name = "taskTracker") public TaskTracker getTaskTracker() throws Exception { TaskTrackerAnnotationFactoryBean factoryBean = new TaskTrackerAnnotationFactoryBean(); factoryBean.setApplicationContext(applicationContext); factoryBean.setClusterName("test_cluster"); factoryBean.setJobRunnerClass(MyJobRunner.class); factoryBean.setNodeGroup("test_trade_TaskTracker"); factoryBean.setBizLoggerLevel("INFO"); factoryBean.setRegistryAddress("zookeeper://127.0.0.1:2181"); factoryBean.setMasterChangeListeners(new MasterChangeListener[]{ new MasterChangeListenerImpl() }); factoryBean.setWorkThreads(20); Properties configs = new Properties(); configs.setProperty("job.fail.store", "leveldb"); factoryBean.setConfigs(configs); factoryBean.afterPropertiesSet();// factoryBean.start(); return factoryBean.getObject(); }}##参数说明参数是否必须默认值使用范围设置方式参数说明registryAddress必须无JobClient,JobTracker,TaskTrackersetRegistryAddress("xxxx")注册中心,可以选用zk或者redis,参考值: zookeeper://127.0.0.1:2181clusterName必须无JobClient,JobTracker,TaskTrackersetClusterName("xxxx")集群名称,clusterName相同的所有节点才会组成整个LTS架构listenPort必须35001JobTrackersetListenPort(xxx)JobTracker的远程监听端口job.logger必须consoleJobTrackeraddConfig("job.logger","xxx")LTS业务日志记录器,可选值console,mysql,mongo,或者自己实现SPI扩展job.queue必须mongoJobTrackeraddConfig("job.queue", "xx")LTS任务队列,可选值mongo,mysql,或者自己实现SPI扩展jdbc.url可选无JobTrackeraddConfig("jdbc.url", "xxx")mysql连接URL,当job.queue为mysql的时候起作用jdbc.username可选无JobTrackeraddConfig("jdbc.username", "xxx")mysql连接密码,当job.queue为mysql的时候起作用jdbc.password可选无JobTrackeraddConfig("jdbc.password", "xxx")mysql连接密码,当job.queue为mysql的时候起作用mongo.addresses可选无JobTrackeraddConfig("mongo.addresses", "xxx")mongo连接URL,当job.queue为mongo的时候起作用mongo.database可选无JobTrackeraddConfig("mongo.database", "xxx")mongo数据库名,当job.queue为mongo的时候起作用zk.client可选zkclientJobClient,JobTracker,TaskTrackeraddConfig("zk.client", "xxx")zookeeper客户端,可选值zkclient, curatorjob.pull.frequency可选3TaskTrackeraddConfig("job.pull.frequency", "xx")TaskTracker去向JobTracker Pull任务的频率,针对不同的场景可以做相应的调整,单位秒job.max.retry.times可选10JobTrackeraddConfig("job.max.retry.times", "xx")任务的最大重试次数stop.working可选falseTaskTrackeraddConfig("stop.working", "true")主要用于当TaskTracker与JobTracker出现网络隔离的时候,超过一定时间隔离之后,TaskTracker自动停止当前正在运行的任务##使用建议一般在一个JVM中只需要一个JobClient实例即可,不要为每种任务都新建一个JobClient实例,这样会大大的浪费资源,因为一个JobClient可以提交多种任务。相同的一个JVM一般也尽量保持只有一个TaskTracker实例即可,多了就可能造成资源浪费。当遇到一个TaskTracker要运行多种任务的时候,请参考下面的 "一个TaskTracker执行多种任务"。##一个TaskTracker执行多种任务有的时候,业务场景需要执行多种任务,有些人会问,是不是要每种任务类型都要一个TaskTracker去执行。我的答案是否定的,如果在一个JVM中,最好使用一个TaskTracker去运行多种任务,因为一个JVM中使用多个TaskTracker实例比较浪费资源(当然当你某种任务量比较多的时候,可以将这个任务单独使用一个TaskTracker节点来执行)。那么怎么才能实现一个TaskTracker执行多种任务呢。下面是我给出来的参考例子。 JOB_RUNNER_MAP = new ConcurrentHashMap(); static { JOB_RUNNER_MAP.put("aType", new JobRunnerA()); // 也可以从Spring中拿 JOB_RUNNER_MAP.put("bType", new JobRunnerB()); } @Override public Result run(Job job) throws Throwable { String type = job.getParam("type"); return JOB_RUNNER_MAP.get(type).run(job); }}class JobRunnerA implements JobRunner { @Override public Result run(Job job) throws Throwable { // TODO A类型Job的逻辑 return null; }}class JobRunnerB implements JobRunner { @Override public Result run(Job job) throws Throwable { // TODO B类型Job的逻辑 return null; }}">/** * 总入口,在 taskTracker.setJobRunnerClass(JobRunnerDispatcher.class) * JobClient 提交 任务时指定 Job 类型 job.setParam("type", "aType") */public class JobRunnerDispatcher implements JobRunner { private static final ConcurrentHashMapString/*type*/, JobRunner> JOB_RUNNER_MAP = new ConcurrentHashMapString, JobRunner>(); static { JOB_RUNNER_MAP.put("aType", new JobRunnerA()); // 也可以从Spring中拿 JOB_RUNNER_MAP.put("bType",

TaskTracker Download - TaskTracker allows quick

Management.DependenciesTaskTracker relies on the following technologies and libraries:.NET FrameworkMVC ASP.NET CORE WEB APPLICATIONLINQ (Language Integrated Query)Entity Framework Core for database accessInstallationInstall TaskTracker locally by following these steps:Download the latest release.Run the Installer: Follow the installation wizard.Launch Application: Once installed, easily launch TaskTracker from your Start menu.UsageEfficiently leverage TaskTracker for optimal time management:Access the Application: Type the website link in your web browser and launch the application.Registration/Login: Securely register or log in with your credentials.Add Modules: Populate your semester with modules.Set Duration: Customize your semester timeline.Record Study Hours: Log your study hours effectively.Monitor Remaining Hours: Stay updated on remaining self-study hours for each module.Set Reminders: Enhance your productivity with timely study reminders.UMLChange LogIn this significant update, TaskTracker has undergone substantial improvements and introduced several key changes:Framework and Interface Overhaul:Transition from WPF to MVC ASP .NET Core:TaskTracker has evolved from using WPF to adopting the MVC ASP .NET Core web application framework, leveraging the latest .Net 8.0 technology. This transition enhances performance, scalability, and modernizes the application's architecture.Updated User Interface:The application's interface has been completely redesigned to provide a more user-friendly and minimalistic aesthetic. The navigation has shifted from a side panel to a sleek navigation bar that seamlessly switches between pages, each with its own controllers. This approach enhances the user experience and makes navigation more intuitive.Multi-Language Support:TaskTracker now utilizes a combination of C#, JavaScript, CSS, and HTML5 to bring a dynamic and visually appealing interface to life. This multi-language approach optimizes design elements and enriches the overall user interaction.Enhanced Functionality:Reminders Functionality:A notable addition to TaskTracker is the introduction of a reminders function. Users can now set reminders for specific modules on designated dates, enhancing the application's utility by promoting effective time management and study planning.Library and Calculations Optimization:Streamlined C# Library:TaskTracker now employs a more efficient and focused C# library to handle essential calculations within the MVC application. This streamlined library ensures optimal performance and code convenience.Database and UML Updates:Revamped Database Structure:The database has undergone a significant overhaul, adopting a simpler structure compared to Version 2. Stored procedures have been eliminated, reflecting the streamlined nature of MVC. The emphasis is now on individual accounts for logging processes.Reminders Table:A new addition to the database is the reminders table, aligning with the application's new reminders functionality. This table allows users to create reminders for specific modules on specific dates, enhancing the application's versatility.Overall Efficiency and User Experience:Efficiency and Code Convenience:The changes made, including the streamlined library and optimized database structure, contribute to improved efficiency and code convenience, ensuring a smoother and more responsive user experience.TaskTracker Version 3.0 marks a transformative step forward, embracing modern technologies and refining functionality to better meet the needs of users striving for academic success.Roadmap Intuitive Interface Robust Data Persistence User Authentication Add Modules Set Semester Duration Calculate Self-Study Hours Record Study Hours Track Remaining Self-Study Hours Data Persistence Reminders Functionality Cloud Integration Mobile App Development Advanced Analytics AI-Powered Study RecommendationsApplication Progressvisualisation the progress of the project:Feature | Progress------------------------------ | ---------------------------------Intuitive Interface | █████████████████████████ 100%Robust Data Persistence | █████████████████████████. just tasktracker similar to my old vue-tasktracker. react personal-project hobby-project tasktracker. Updated ; TypeScript;

TaskTracker/README.md at main Jahanvi2706/TaskTracker

TaskTracker 1.2 Bạn muốn biết mọi thông tin về quá trình sử dụng chương trình, các tập tin dữ liệu đã được mở, các hình ảnh đã được xem, các bài nhạc đã được nghe từ máy tính của bạn... Xếp hạng: 3 1 Phiếu bầuSử dụng: Dùng thử 1.756 Tải về UltraMenu 1.2 AntsSoft Ultra Menu là một chương trình giúp bạn có thể tự tay mình tạo ra một thanh menu nhìn rất chuyên nghiệp và rất đa năng chỉ trong vài thao tác đơn giản mà thôi. Xếp hạng: 4 6 Phiếu bầuSử dụng: Dùng thử 5.800 Tải về PsyMP3 1.2 PsyMP3 - một phần mềm nhỏ, miễn phí với nhiều tính năng cho phép bạn thưởng thức các bài hát định dạng MP3... Xếp hạng: 4 1 Phiếu bầuSử dụng: Miễn phí 4.390 Tải về Check Disk GUI CheckDiskGUI là một tiện ích nhỏ gọn giúp bạn sử dụng công cụ kiểm tra lỗi ổ cứng Chkdsk.exe trong Windows với giao diện đồ họa dễ thao tác. Xếp hạng: 4 2 Phiếu bầuSử dụng: Miễn phí 3.948 Tải về JShot 1.2 Chụp ảnh màn hình rồi chia sẻ đến mọi người để “hình ảnh hóa” những lời văn, bài hướng dẫn sử dụng máy tính là thao tác thường được nhiều người dùng thực hiện. Xếp hạng: 5 1 Phiếu bầuSử dụng: Miễn phí 2.054 Tải về UpdateStar 1.2 Bên cạnh hệ điều hành và bộ Office, máy tính của chúng ta còn được cài đặt nhiều phần mềm, tiện ích để phục vụ cho những ứng dụng khác nhau. Xếp hạng: 4 3 Phiếu bầuSử dụng: Miễn phí 1.713 Tải về SWFProtection 1.2 SWFProtection là một ứng dụng mã hóa SWF Flash mạnh mẽ dễ sử dụng có thể giúp bạn bảo vệ các file

GitHub - rahiyansafz/TaskTracker: TaskTracker is a full-stack

TaskTracker 1.2 - Download.com.vn

. just tasktracker similar to my old vue-tasktracker. react personal-project hobby-project tasktracker. Updated ; TypeScript;

taskTracker in the news - advancedscoreboard.com

Comments

User4169

TaskTracker: Optimizing Your Academic JourneyTable of ContentsTaskTracker: Optimizing Your Academic JourneyTaskTracker DescriptionTutorialFeaturesNon-Functional RequirementsGetting StartedDependenciesInstallationUsageUMLChange LogRoadmapApplication ProgressContributingAuthorsLicenseAcknowledgmentsCode AttributionTaskTracker DescriptionWelcome to TaskTracker, a state-of-the-art desktop application meticulously crafted to redefine the way you navigate your academic journey. Developed with precision using the cutting-edge MVC ASP.NET CORE WEB APPLICATION framework, TaskTracker isn't just a tool; it's your indispensable companion for achieving academic excellence.Key Highlights:Intuitive Interface: Immerse yourself in a user-friendly experience that seamlessly integrates into your daily routine. TaskTracker's intuitive interface simplifies time management, ensuring that you can effortlessly navigate through its features and functionalities.Robust Data Persistence: Your academic journey is important, and so is the data associated with it. TaskTracker employs a secure SQL database, providing robust data persistence. Your valuable information is stored with the utmost reliability, ensuring easy retrieval whenever you need it.User Authentication: Privacy and data integrity are paramount. TaskTracker prioritizes these concerns with a robust user authentication system. Rest assured that only authorized users have access, safeguarding your academic data from unauthorized access.TaskTracker goes beyond conventional task management. It empowers you to take control of your academic life, offering a suite of features designed to help you organize, plan, and optimize your study habits. Whether you're managing assignments, staying on top of deadlines, or crafting effective study schedules, TaskTracker is your ally in navigating the complex landscape of coursework and academic commitments.With TaskTracker, academic success becomes not just a goal but a tangible reality. Elevate your educational experience, stay ahead in your coursework, and confidently tackle your academic challenges with TaskTracker by your side.TutorialClick the button below to watch a tutorial video. OR (preferably for quality) Features1. Add ModulesEffortlessly add and organize multiple modules for the semester.Capture crucial details: Code, Name, Credits, Class hours per week.2. Set Semester DurationCustomize your academic timeline with the ability to set the number of weeks and start date.3. Calculate Self-Study HoursTaskTracker dynamically calculates and displays weekly self-study hours for each module.Formula: Self-study hours per week = (Credits * 10) / Number of weeks - Class hours per week.4. Record Study HoursEasily log the number of hours spent on specific modules and dates.5. Track Remaining Self-Study HoursStay informed with real-time updates on remaining self-study hours for each module.6. Data PersistenceYour data is securely stored in an SQL database, ensuring accessibility across sessions.User authentication adds an extra layer of security.Non-Functional Requirements1. Coding Standards and CommentsTaskTracker adheres to internationally acceptable coding standards.Comprehensive comments provide insights into variable names, methods, and programming logic.Getting StartedGet up and running with TaskTracker in a few simple steps:Clone the Repository: Download the repository to your local machine.Open in Visual Studio: Launch the solution in Visual Studio.Database Setup: Create the database in SSMS and obtain the connection string in Visual Studio.Build the Solution: Ensure all dependencies are resolved.Configure Connection String: Add the connection string configuration.Configure Library: Open up the MVCLibrary.sln provided to you here on Github then build it.Add Library: Right-click on dependencies and press 'Add' then select the MVCLibrary.dll.Run the Application: Fire up the application and dive into efficient time

2025-04-22
User8402

LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多家公司使用,同时也希望开源爱好者一起贡献。项目地址github地址: 一起探讨、完善。越多人支持,就越有动力去更新,喜欢记得右上角star哈。框架概况LTS 有主要有以下四种节点:JobClient:主要负责提交任务, 并接收任务执行反馈结果。JobTracker:负责接收并分配任务,任务调度。TaskTracker:负责执行任务,执行完反馈给JobTracker。LTS-Admin:(管理后台)主要负责节点管理,任务队列管理,监控管理等。其中JobClinet,JobTracker,TaskTracker节点都是无状态的。可以部署多个并动态的进行删减,来实现负载均衡,实现更大的负载量, 并且框架采用FailStore策略使LTS具有很好的容错能力。LTS注册中心提供多种实现(Zookeeper,redis等),注册中心进行节点信息暴露,master选举。(Mongo or Mysql)存储任务队列和任务执行日志, netty做底层通信。LTS支持任务类型:实时任务:提交了之后立即就要执行的任务。定时任务:在指定时间点执行的任务,譬如 今天3点执行(单次)。Cron任务:CronExpression,和quartz类似(但是不是使用quartz实现的)譬如 0 0/1 * * * ?架构图概念说明###节点组英文名称 NodeGroup,一个节点组等同于一个小的集群,同一个节点组中的各个节点是对等的,等效的,对外提供相同的服务。没个节点组中都有一个master节点,这个master节点是由LTS动态选出来的,当一个master节点挂掉之后,LTS会立马选出另外一个master节点,框架提供API监听接口给用户。###FailStore顾名思义,这个主要是用于失败了存储的,主要用于节点容错,当远程数据交互失败之后,存储在本地,等待远程通信恢复的时候,再将数据提交。FailStore主要用户JobClient的任务提交,TaskTracker的任务反馈,TaskTracker的业务日志传输的场景下。FailStore目前提供三种实现:leveldb,rocksdb,berkeleydb,用于可以自由选择使用哪种。流程图下图是一个标准的实时任务执行流程。##特性###1、Spring支持LTS可以完全不用Spring框架,但是考虑到很用用户项目中都是用了Spring框架,所以LTS也提供了对Spring的支持,包括Xml和注解,引入lts-spring.jar即可。###2、业务日志记录器在TaskTracker端提供了业务日志记录器,供应用程序使用,通过这个业务日志器,可以将业务日志提交到JobTracker,这些业务日志可以通过任务ID串联起来,可以在LTS-Admin中实时查看任务的执行进度。###3、SPI扩展支持SPI扩展可以达到零侵入,只需要实现相应的接口,并实现即可被LTS使用,目前开放出来的扩展接口有对任务队列的扩展,用户可以不选择使用mysql或者mongo作为队列存储,也可以自己实现。对业务日志记录器的扩展,目前主要支持console,mysql,mongo,用户也可以通过扩展选择往其他地方输送日志。###4、故障转移当正在执行任务的TaskTracker宕机之后,JobTracker会立马分配在宕机的TaskTracker的所有任务再分配给其他正常的TaskTracker节点执行。###5、节点监控可以对JobTracker,TaskTracker节点进行资源监控,任务监控等,可以实时的在LTS-Admin管理后台查看,进而进行合理的资源调配。###6、多样化任务执行结果支持LTS框架提供四种执行结果支持,EXECUTE_SUCCESS,EXECUTE_FAILED,EXECUTE_LATER,EXECUTE_EXCEPTION,并对每种结果采取相应的处理机制,譬如重试。EXECUTE_SUCCESS: 执行成功,这种情况,直接反馈客户端(如果任务被设置了要反馈给客户端)。EXECUTE_FAILED:执行失败,这种情况,直接反馈给客户端,不进行重试。EXECUTE_LATER:稍后执行(需要重试),这种情况,不反馈客户端,重试策略采用1min,2min,3min的策略,默认最大重试次数为10次,用户可以通过参数设置修改这个重试次数。EXECUTE_EXCEPTION:执行异常, 这中情况也会重试(重试策略,同上)###7、FailStore容错采用FailStore机制来进行节点容错,Fail And Store,不会因为远程通信的不稳定性而影响当前应用的运行。具体FailStore说明,请参考概念说明中的FailStore说明。##项目编译打包项目主要采用maven进行构建,目前提供shell脚本的打包。环境依赖:Java(jdk1.7) Maven用户使用一般分为两种:###1、Maven构建可以通过maven命令将lts的jar包上传到本地仓库中。在父pom.xml中添加相应的repository,并用deploy命令上传即可。具体引用方式可以参考lts中的例子即可。###2、直接Jar引用需要将lts的各个模块打包成单独的jar包,并且将所有lts依赖包引入。具体引用哪些jar包可以参考lts中的例子即可。##JobTracker和LTS-Admin部署提供(cmd)windows和(shell)linux两种版本脚本来进行编译和部署:1、运行根目录下的sh build.sh或build.cmd脚本,会在dist目录下生成lts-{version}-bin文件夹2、下面是其目录结构,其中bin目录主要是JobTracker和LTS-Admin的启动脚本。jobtracker 中是 JobTracker的配置文件和需要使用到的jar包,lts-admin是LTS-Admin相关的war包和配置文件。lts-{version}-bin的文件结构├── bin│ ├── jobtracker.cmd│ ├── jobtracker.sh│ ├── lts-admin.cmd│ └── lts-admin.sh├── jobtracker│ ├── conf│ │ └── zoo│ │ ├── jobtracker.cfg│ │ └── log4j.properties│ └── lib│ └── *.jar├── lts-admin│ ├── conf│ │ ├── log4j.properties│ │ └── lts-admin.cfg│ ├── lib│ │ └── *.jar│ └── lts-admin.war└── tasktracker ├── bin │ └── tasktracker.sh ├── conf │ ├── log4j.properties │ └── tasktracker.cfg └── lib └── *.jar3、JobTracker启动。如果你想启动一个节点,直接修改下conf/zoo下的配置文件,然后运行 sh jobtracker.sh zoo start即可,如果你想启动两个JobTracker节点,那么你需要拷贝一份zoo,譬如命名为zoo2,修改下zoo2下的配置文件,然后运行sh jobtracker.sh zoo2 start即可。logs文件夹下生成jobtracker-zoo.out日志。4、LTS-Admin启动.修改lts-admin/conf下的配置,然后运行bin下的sh lts-admin.sh或lts-admin.cmd脚本即可。logs文件夹下会生成lts-admin.out日志,启动成功在日志中会打印出访问地址,用户可以通过这个访问地址访问了。##JobClient(部署)使用需要引入lts的jar包有lts-jobclient-{version}.jar,lts-core-{version}.jar 及其它第三方依赖jar。###API方式启动JobClient jobClient = new RetryJobClient();jobClient.setNodeGroup("test_jobClient");jobClient.setRegistryAddress("zookeeper://127.0.0.1:2181");jobClient.start();// 提交任务Job job = new Job();job.setTaskId("3213213123");job.setParam("shopId", "11111");job.setTaskTrackerNodeGroup("test_trade_TaskTracker");// job.setCronExpression("0 0/1 * * * ?"); // 支持 cronExpression表达式// job.setTriggerTime(new Date()); // 支持指定时间执行Response response = jobClient.submitJob(job);###Spring XML方式启动 leveldb ">bean id="jobClient" class="com.github.ltsopensource.spring.JobClientFactoryBean"> property name="clusterName" value="test_cluster"/> property name="registryAddress" value="zookeeper://127.0.0.1:2181"/> property name="nodeGroup" value="test_jobClient"/> property name="masterChangeListeners"> list> bean class="com.github.ltsopensource.example.support.MasterChangeListenerImpl"/> list> property> property name="jobFinishedHandler"> bean class="com.github.ltsopensource.example.support.JobFinishedHandlerImpl"/> property> property name="configs"> props> 参数 --> prop key="job.fail.store">leveldbprop> props> property>bean>###Spring 全注解方式@Configurationpublic class LTSSpringConfig { @Bean(name = "jobClient") public JobClient getJobClient() throws Exception { JobClientFactoryBean factoryBean = new JobClientFactoryBean(); factoryBean.setClusterName("test_cluster"); factoryBean.setRegistryAddress("zookeeper://127.0.0.1:2181"); factoryBean.setNodeGroup("test_jobClient"); factoryBean.setMasterChangeListeners(new MasterChangeListener[]{ new MasterChangeListenerImpl() }); Properties configs = new Properties(); configs.setProperty("job.fail.store", "leveldb"); factoryBean.setConfigs(configs); factoryBean.afterPropertiesSet(); return factoryBean.getObject(); }}##TaskTracker(部署使用)需要引入lts的jar包有lts-tasktracker-{version}.jar,lts-core-{version}.jar 及其它第三方依赖jar。###定义自己的任务执行类public class MyJobRunner implements JobRunner { @Override public Result run(JobContext jobContext) throws Throwable { try { BizLogger bizLogger = jobContext.getBizLogger(); // TODO 业务逻辑 // 会发送到 LTS (JobTracker上) bizLogger.info("测试,业务日志啊啊啊啊啊"); } catch (Exception e) { return new Result(Action.EXECUTE_FAILED, e.getMessage()); } return new Result(Action.EXECUTE_SUCCESS, "执行成功了,哈哈"); }}###API方式启动TaskTracker taskTracker = new TaskTracker();taskTracker.setJobRunnerClass(MyJobRunner.class);taskTracker.setRegistryAddress("zookeeper://127.0.0.1:2181");taskTracker.setNodeGroup("test_trade_TaskTracker");taskTracker.setWorkThreads(20);taskTracker.start();###Spring XML方式启动 leveldb ">bean id="taskTracker" class="com.github.ltsopensource.spring.TaskTrackerAnnotationFactoryBean" init-method="start"> property name="jobRunnerClass" value="com.github.ltsopensource.example.support.MyJobRunner"/> property name="bizLoggerLevel" value="INFO"/> property name="clusterName" value="test_cluster"/> property name="registryAddress" value="zookeeper://127.0.0.1:2181"/> property name="nodeGroup" value="test_trade_TaskTracker"/> property name="workThreads" value="20"/> property name="masterChangeListeners"> list> bean class="com.github.ltsopensource.example.support.MasterChangeListenerImpl"/> list> property> property name="configs"> props> prop key="job.fail.store">leveldbprop> props> property>bean>###Spring注解方式启动@Configurationpublic class LTSSpringConfig implements ApplicationContextAware { private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } @Bean(name = "taskTracker") public TaskTracker getTaskTracker() throws Exception { TaskTrackerAnnotationFactoryBean factoryBean = new TaskTrackerAnnotationFactoryBean(); factoryBean.setApplicationContext(applicationContext); factoryBean.setClusterName("test_cluster"); factoryBean.setJobRunnerClass(MyJobRunner.class); factoryBean.setNodeGroup("test_trade_TaskTracker"); factoryBean.setBizLoggerLevel("INFO"); factoryBean.setRegistryAddress("zookeeper://127.0.0.1:2181"); factoryBean.setMasterChangeListeners(new MasterChangeListener[]{ new MasterChangeListenerImpl() }); factoryBean.setWorkThreads(20); Properties configs = new Properties(); configs.setProperty("job.fail.store", "leveldb"); factoryBean.setConfigs(configs); factoryBean.afterPropertiesSet();// factoryBean.start(); return factoryBean.getObject(); }}##参数说明参数是否必须默认值使用范围设置方式参数说明registryAddress必须无JobClient,JobTracker,TaskTrackersetRegistryAddress("xxxx")注册中心,可以选用zk或者redis,参考值: zookeeper://127.0.0.1:2181clusterName必须无JobClient,JobTracker,TaskTrackersetClusterName("xxxx")集群名称,clusterName相同的所有节点才会组成整个LTS架构listenPort必须35001JobTrackersetListenPort(xxx)JobTracker的远程监听端口job.logger必须consoleJobTrackeraddConfig("job.logger","xxx")LTS业务日志记录器,可选值console,mysql,mongo,或者自己实现SPI扩展job.queue必须mongoJobTrackeraddConfig("job.queue", "xx")LTS任务队列,可选值mongo,mysql,或者自己实现SPI扩展jdbc.url可选无JobTrackeraddConfig("jdbc.url", "xxx")mysql连接URL,当job.queue为mysql的时候起作用jdbc.username可选无JobTrackeraddConfig("jdbc.username", "xxx")mysql连接密码,当job.queue为mysql的时候起作用jdbc.password可选无JobTrackeraddConfig("jdbc.password", "xxx")mysql连接密码,当job.queue为mysql的时候起作用mongo.addresses可选无JobTrackeraddConfig("mongo.addresses", "xxx")mongo连接URL,当job.queue为mongo的时候起作用mongo.database可选无JobTrackeraddConfig("mongo.database", "xxx")mongo数据库名,当job.queue为mongo的时候起作用zk.client可选zkclientJobClient,JobTracker,TaskTrackeraddConfig("zk.client", "xxx")zookeeper客户端,可选值zkclient, curatorjob.pull.frequency可选3TaskTrackeraddConfig("job.pull.frequency", "xx")TaskTracker去向JobTracker Pull任务的频率,针对不同的场景可以做相应的调整,单位秒job.max.retry.times可选10JobTrackeraddConfig("job.max.retry.times", "xx")任务的最大重试次数stop.working可选falseTaskTrackeraddConfig("stop.working", "true")主要用于当TaskTracker与JobTracker出现网络隔离的时候,超过一定时间隔离之后,TaskTracker自动停止当前正在运行的任务##使用建议一般在一个JVM中只需要一个JobClient实例即可,不要为每种任务都新建一个JobClient实例,这样会大大的浪费资源,因为一个JobClient可以提交多种任务。相同的一个JVM一般也尽量保持只有一个TaskTracker实例即可,多了就可能造成资源浪费。当遇到一个TaskTracker要运行多种任务的时候,请参考下面的 "一个TaskTracker执行多种任务"。##一个TaskTracker执行多种任务有的时候,业务场景需要执行多种任务,有些人会问,是不是要每种任务类型都要一个TaskTracker去执行。我的答案是否定的,如果在一个JVM中,最好使用一个TaskTracker去运行多种任务,因为一个JVM中使用多个TaskTracker实例比较浪费资源(当然当你某种任务量比较多的时候,可以将这个任务单独使用一个TaskTracker节点来执行)。那么怎么才能实现一个TaskTracker执行多种任务呢。下面是我给出来的参考例子。 JOB_RUNNER_MAP = new ConcurrentHashMap(); static { JOB_RUNNER_MAP.put("aType", new JobRunnerA()); // 也可以从Spring中拿 JOB_RUNNER_MAP.put("bType", new JobRunnerB()); } @Override public Result run(Job job) throws Throwable { String type = job.getParam("type"); return JOB_RUNNER_MAP.get(type).run(job); }}class JobRunnerA implements JobRunner { @Override public Result run(Job job) throws Throwable { // TODO A类型Job的逻辑 return null; }}class JobRunnerB implements JobRunner { @Override public Result run(Job job) throws Throwable { // TODO B类型Job的逻辑 return null; }}">/** * 总入口,在 taskTracker.setJobRunnerClass(JobRunnerDispatcher.class) * JobClient 提交 任务时指定 Job 类型 job.setParam("type", "aType") */public class JobRunnerDispatcher implements JobRunner { private static final ConcurrentHashMapString/*type*/, JobRunner> JOB_RUNNER_MAP = new ConcurrentHashMapString, JobRunner>(); static { JOB_RUNNER_MAP.put("aType", new JobRunnerA()); // 也可以从Spring中拿 JOB_RUNNER_MAP.put("bType",

2025-04-04
User7174

Management.DependenciesTaskTracker relies on the following technologies and libraries:.NET FrameworkMVC ASP.NET CORE WEB APPLICATIONLINQ (Language Integrated Query)Entity Framework Core for database accessInstallationInstall TaskTracker locally by following these steps:Download the latest release.Run the Installer: Follow the installation wizard.Launch Application: Once installed, easily launch TaskTracker from your Start menu.UsageEfficiently leverage TaskTracker for optimal time management:Access the Application: Type the website link in your web browser and launch the application.Registration/Login: Securely register or log in with your credentials.Add Modules: Populate your semester with modules.Set Duration: Customize your semester timeline.Record Study Hours: Log your study hours effectively.Monitor Remaining Hours: Stay updated on remaining self-study hours for each module.Set Reminders: Enhance your productivity with timely study reminders.UMLChange LogIn this significant update, TaskTracker has undergone substantial improvements and introduced several key changes:Framework and Interface Overhaul:Transition from WPF to MVC ASP .NET Core:TaskTracker has evolved from using WPF to adopting the MVC ASP .NET Core web application framework, leveraging the latest .Net 8.0 technology. This transition enhances performance, scalability, and modernizes the application's architecture.Updated User Interface:The application's interface has been completely redesigned to provide a more user-friendly and minimalistic aesthetic. The navigation has shifted from a side panel to a sleek navigation bar that seamlessly switches between pages, each with its own controllers. This approach enhances the user experience and makes navigation more intuitive.Multi-Language Support:TaskTracker now utilizes a combination of C#, JavaScript, CSS, and HTML5 to bring a dynamic and visually appealing interface to life. This multi-language approach optimizes design elements and enriches the overall user interaction.Enhanced Functionality:Reminders Functionality:A notable addition to TaskTracker is the introduction of a reminders function. Users can now set reminders for specific modules on designated dates, enhancing the application's utility by promoting effective time management and study planning.Library and Calculations Optimization:Streamlined C# Library:TaskTracker now employs a more efficient and focused C# library to handle essential calculations within the MVC application. This streamlined library ensures optimal performance and code convenience.Database and UML Updates:Revamped Database Structure:The database has undergone a significant overhaul, adopting a simpler structure compared to Version 2. Stored procedures have been eliminated, reflecting the streamlined nature of MVC. The emphasis is now on individual accounts for logging processes.Reminders Table:A new addition to the database is the reminders table, aligning with the application's new reminders functionality. This table allows users to create reminders for specific modules on specific dates, enhancing the application's versatility.Overall Efficiency and User Experience:Efficiency and Code Convenience:The changes made, including the streamlined library and optimized database structure, contribute to improved efficiency and code convenience, ensuring a smoother and more responsive user experience.TaskTracker Version 3.0 marks a transformative step forward, embracing modern technologies and refining functionality to better meet the needs of users striving for academic success.Roadmap Intuitive Interface Robust Data Persistence User Authentication Add Modules Set Semester Duration Calculate Self-Study Hours Record Study Hours Track Remaining Self-Study Hours Data Persistence Reminders Functionality Cloud Integration Mobile App Development Advanced Analytics AI-Powered Study RecommendationsApplication Progressvisualisation the progress of the project:Feature | Progress------------------------------ | ---------------------------------Intuitive Interface | █████████████████████████ 100%Robust Data Persistence | █████████████████████████

2025-04-07
User3666

TaskTracker 1.2 Bạn muốn biết mọi thông tin về quá trình sử dụng chương trình, các tập tin dữ liệu đã được mở, các hình ảnh đã được xem, các bài nhạc đã được nghe từ máy tính của bạn... Xếp hạng: 3 1 Phiếu bầuSử dụng: Dùng thử 1.756 Tải về UltraMenu 1.2 AntsSoft Ultra Menu là một chương trình giúp bạn có thể tự tay mình tạo ra một thanh menu nhìn rất chuyên nghiệp và rất đa năng chỉ trong vài thao tác đơn giản mà thôi. Xếp hạng: 4 6 Phiếu bầuSử dụng: Dùng thử 5.800 Tải về PsyMP3 1.2 PsyMP3 - một phần mềm nhỏ, miễn phí với nhiều tính năng cho phép bạn thưởng thức các bài hát định dạng MP3... Xếp hạng: 4 1 Phiếu bầuSử dụng: Miễn phí 4.390 Tải về Check Disk GUI CheckDiskGUI là một tiện ích nhỏ gọn giúp bạn sử dụng công cụ kiểm tra lỗi ổ cứng Chkdsk.exe trong Windows với giao diện đồ họa dễ thao tác. Xếp hạng: 4 2 Phiếu bầuSử dụng: Miễn phí 3.948 Tải về JShot 1.2 Chụp ảnh màn hình rồi chia sẻ đến mọi người để “hình ảnh hóa” những lời văn, bài hướng dẫn sử dụng máy tính là thao tác thường được nhiều người dùng thực hiện. Xếp hạng: 5 1 Phiếu bầuSử dụng: Miễn phí 2.054 Tải về UpdateStar 1.2 Bên cạnh hệ điều hành và bộ Office, máy tính của chúng ta còn được cài đặt nhiều phần mềm, tiện ích để phục vụ cho những ứng dụng khác nhau. Xếp hạng: 4 3 Phiếu bầuSử dụng: Miễn phí 1.713 Tải về SWFProtection 1.2 SWFProtection là một ứng dụng mã hóa SWF Flash mạnh mẽ dễ sử dụng có thể giúp bạn bảo vệ các file

2025-04-03

Add Comment