Found 192 repositories(showing 30)
Pop-Code
A nestjs module that provide a cli to your application.
QuietusPlus
PowerShell - A console menu for PowerShell (CLI) - Keyboard navigation + Pages + MultiSelect + Nested Menu's
Te-cho
For Laravel 5.* views, where i've noticed that if you nest too much views, a performance drop happens. so i built this console command based package, that flatten the view into one file for production performance improvement.
squareboat
Create beautiful CLI commands in your NestJS Applications
marostcs
09:17:02 Steam Console Client (c) Valve Corporation 09:17:02 -- type 'quit' to exit -- 09:17:02 Loading Steam API...OK. 09:17:02 09:17:03 Connecting anonymously to Steam Public...Logged in OK 09:17:03 Waiting for user info...OK 09:17:04 Success! App '740' already up to date. 09:17:05 @sSteamCmdForcePlatformType windows 09:17:05 "@sSteamCmdForcePlatformType" = "windows" 09:17:05 force_install_dir ../ 09:17:05 app_update 740 09:17:05 quit 09:17:05 Redirecting stderr to 'D:\servers\csgo_297437\steamcmd\logs\stderr.txt' 09:17:05 Params: -game csgo -console -tickrate 128.00 -port 49525 +tv_port 49526 -maxplayers_override 16 -usercon -nowatchdog +sv_pure 0 +sv_lan 0 +ip 89.203.193.220 +game_type 0 +exec server.cfg +game_mode 1 +map de_dust2 +sv_setsteamaccount B74A031F37B9312A5EC65A15FC43AA0C -gamemodes_serverfile gamemodes_server.txt +mapgroup h_custom -condebug -norestart -allowdebug 09:17:06 # 09:17:06 #Console initialized. 09:17:06 #Using breakpad minidump system 740/13776.1219.DC 09:17:06 #Filesystem successfully switched to safe whitelist mode 09:17:06 #Game.dll loaded for "Counter-Strike: Global Offensive" 09:17:06 #CGameEventManager::AddListener: event 'server_pre_shutdown' unknown. 09:17:06 #CGameEventManager::AddListener: event 'game_newmap' unknown. 09:17:06 #CGameEventManager::AddListener: event 'finale_start' unknown. 09:17:06 #CGameEventManager::AddListener: event 'round_start' unknown. 09:17:06 #CGameEventManager::AddListener: event 'round_end' unknown. 09:17:06 #CGameEventManager::AddListener: event 'difficulty_changed' unknown. 09:17:06 #CGameEventManager::AddListener: event 'player_death' unknown. 09:17:06 #CGameEventManager::AddListener: event 'hltv_replay' unknown. 09:17:06 #CGameEventManager::AddListener: event 'player_connect' unknown. 09:17:06 #CGameEventManager::AddListener: event 'player_disconnect' unknown. 09:17:06 #GameTypes: missing mapgroupsSP entry for game type/mode (custom/custom). 09:17:06 #GameTypes: missing mapgroupsSP entry for game type/mode (cooperative/cooperative). 09:17:06 #GameTypes: missing mapgroupsSP entry for game type/mode (cooperative/coopmission). 09:17:06 Seeded random number generator @ 1064343566 ( 0.940 ) 09:17:06 Failed to load gamerulescvars.txt, game rules cvars might not be reported to management tools. 09:17:06 Server is hibernating 09:17:06 No web api auth key specified - workshop downloads will be disabled. 09:17:06 scripts\talker\response_rules.txt(token 3685) : Multiple definitions for criteria 'tlk_cw.regroup' [-1793082848] 09:17:06 scripts\talker\swat.txt(token 1688) : response entry 'radio.sticktogetherswat' with unknown command 'scenes/swat/radiobotregroup02.vcd' 09:17:06 scripts\talker\coopvoice.txt(token 657) : No such response 'guardianroundstartintro' for rule 'guardianroundintro' 09:17:06 Discarded rule guardianroundintro 09:17:06 CResponseSystem: scripts\talker\response_rules.txt (4154 rules, 763 criteria, and 3878 responses) 09:17:06 Plugins: found file "CSay.vdf" 09:17:06 eBot LOADED 09:17:06 Plugins: found file "metamod.vdf" 09:17:06 maxplayers set to 64 09:17:06 Fast Build Temp Cache: 'maps/soundcache/_master.cache' 09:17:07 Elapsed time: 0.00 seconds 09:17:07 ConVarRef cl_embedded_stream_video_playing doesn't point to an existing ConVar 09:17:07 Execing config: valve.rc 09:17:07 Execing config: default.cfg 09:17:07 Unknown command "cl_bobamt_vert" 09:17:07 Unknown command "cl_bobamt_lat" 09:17:07 Unknown command "cl_bob_lower_amt" 09:17:07 Unknown command "cl_viewmodel_shift_left_amt" 09:17:07 Unknown command "cl_viewmodel_shift_right_amt" 09:17:07 Unknown command "cl_teamid_min" 09:17:07 Unknown command "cl_teamid_max" 09:17:07 Unknown command "cl_teamid_overhead" 09:17:07 Unknown command "cl_teamid_overhead_maxdist" 09:17:07 Execing config: joystick.cfg 09:17:07 Execing config: autoexec.cfg 09:17:07 -------------------------------------------------------- 09:17:07 sv_pure set to 0. 09:17:07 -------------------------------------------------------- 09:17:07 Execing config: server.cfg 09:17:07 Unknown command "sv_maxcmdrate" 09:17:07 Unknown command "sv_vote_creation_time" 09:17:07 Writing cfg/banned_user.cfg. 09:17:07 Writing cfg/banned_ip.cfg. 09:17:07 Execing config: banned_user.cfg 09:17:07 Execing config: banned_ip.cfg 09:17:07 Unknown command "allow_spectators" 09:17:07 Setting mapgroup to 'h_custom' 09:17:07 Execing config: modsettings.cfg 09:17:07 NET_CloseAllSockets 09:17:07 NET_GetBindAddresses found 89.203.193.220: 'HP FlexFabric 10Gb 2-port 554FLB Adapter #2' 09:17:07 WARNING: UDP_OpenSocket: unable to bind socket 09:17:07 Network: IP 89.203.193.220 mode MP, dedicated No, ports 49525 SV / -1 CL 09:17:07 L 01/15/2021 - 09:17:07: [SM] Error encountered parsing core config file: Line contained too many invalid tokens 09:17:07 CServerGameDLL::ApplyGameSettings game settings payload received: 09:17:07 ::ExecGameTypeCfg { 09:17:07 map { 09:17:07 mapname de_dust2 09:17:07 } 09:17:07 } 09:17:07 ApplyGameSettings: Invalid mapgroup name h_custom 09:17:07 ---- Host_NewGame ---- 09:17:07 Execing config: game.cfg 09:17:07 Switching filesystem to allow files loaded from disk (sv_pure_allow_loose_file_loads = 1) 09:17:08 DISP_VPHYSICS found bad displacement collision face (252.50 1542.13 147.50) (250.00 1543.00 155.00) (250.00 1543.50 155.00) at tri 25 09:17:08 DISP_VPHYSICS entire displacement vdisp_0290 will have no collision, dimensions (6.00 14.00 32.00) from (249.00 1537.00 124.00) to (255.00 1551.00 156.00) 09:17:08 DISP_VPHYSICS found bad displacement collision face (250.13 1539.50 147.50) (249.75 1543.00 155.00) (250.00 1543.00 155.00) at tri 30 09:17:08 DISP_VPHYSICS entire displacement vdisp_0291 will have no collision, dimensions (12.50 7.00 32.00) from (242.00 1537.00 124.00) to (254.50 1544.00 156.00) 09:17:08 DISP_VPHYSICS found bad displacement collision face (-1884.00 704.30 159.97) (-1884.00 703.00 180.00) (-1884.54 704.60 160.25) at tri 6 09:17:08 DISP_VPHYSICS entire displacement vdisp_1842 will have no collision, dimensions (2.54 6.60 82.03) from (-1885.54 699.00 158.97) to (-1883.00 705.60 241.00) 09:17:08 DISP_VPHYSICS found bad displacement collision face (-1884.00 705.40 127.95) (-1884.00 704.30 159.97) (-1884.54 704.60 160.25) at tri 30 09:17:08 DISP_VPHYSICS entire displacement vdisp_1876 will have no collision, dimensions (2.54 8.30 130.25) from (-1885.54 699.00 31.00) to (-1883.00 707.30 161.25) 09:17:11 Host_NewGame on map de_dust2 09:17:11 L 01/15/2021 - 09:17:11: -------- Mapchange to de_dust2 -------- 09:17:11 L 01/15/2021 - 09:17:11: [SM] Failed to load plugin "gloves.smx": Unable to load plugin (no debug string table). 09:17:11 L 01/15/2021 - 09:17:11: [SM] Failed to load plugin "weapons.smx": Unable to load plugin (no debug string table). 09:17:11 CGameEventManager::AddListener: event 'teamplay_win_panel' unknown. 09:17:11 CGameEventManager::AddListener: event 'teamplay_restart_round' unknown. 09:17:11 CGameEventManager::AddListener: event 'arena_win_panel' unknown. 09:17:11 GameTypes: initializing game types interface from GameModes.txt. 09:17:11 GameTypes: merging game types interface from gamemodes_server.txt. 09:17:11 Failed to load gamemodes_server.txt 09:17:11 GameTypes: missing mapgroupsSP entry for game type/mode (custom/custom). 09:17:11 GameTypes: missing mapgroupsSP entry for game type/mode (cooperative/cooperative). 09:17:11 GameTypes: missing mapgroupsSP entry for game type/mode (cooperative/coopmission). 09:17:11 ammo_grenade_limit_default - 1 09:17:11 ammo_grenade_limit_flashbang - 1 09:17:11 ammo_grenade_limit_total - 3 09:17:11 ammo_item_limit_healthshot - 4 09:17:11 bot_allow_grenades - 1 09:17:11 bot_allow_machine_guns - 1 09:17:11 bot_allow_pistols - 1 09:17:11 bot_allow_rifles - 1 09:17:11 bot_allow_rogues - 1 09:17:11 bot_allow_shotguns - 1 09:17:11 bot_allow_snipers - 1 09:17:11 bot_allow_sub_machine_guns - 1 09:17:11 bot_autodifficulty_threshold_high - 5.0 09:17:11 bot_autodifficulty_threshold_low - -2.0 09:17:11 bot_chatter - normal 09:17:11 bot_coop_idle_max_vision_distance - 1400 09:17:11 bot_defer_to_human_goals - 0 09:17:11 bot_defer_to_human_items - 1 09:17:11 bot_difficulty - 1 09:17:11 bot_max_hearing_distance_override - -1 09:17:11 bot_max_visible_smoke_length - 200 09:17:11 bot_max_vision_distance_override - -1 09:17:11 bot_quota - 10 09:17:11 bot_quota_mode - normal 09:17:11 bot_coop_idle_max_vision_distance - 1400 09:17:11 bot_max_vision_distance_override - -1 09:17:11 bot_max_hearing_distance_override - -1 09:17:11 bot_coopmission_dz_engagement_limit - missing cvar specified in bspconvar_whitelist.txt 09:17:11 cash_player_bomb_defused - 300 09:17:11 cash_player_bomb_planted - 300 09:17:11 cash_player_damage_hostage - -30 09:17:11 cash_player_get_killed - 0 09:17:11 cash_player_interact_with_hostage - 150 09:17:11 cash_player_killed_enemy_default - 300 09:17:11 cash_player_killed_enemy_factor - 1 09:17:11 cash_player_killed_hostage - -1000 09:17:11 cash_player_killed_teammate - -300 09:17:11 cash_player_rescued_hostage - 1000 09:17:11 cash_player_respawn_amount - 0 09:17:11 cash_team_elimination_bomb_map - 3250 09:17:11 cash_team_elimination_hostage_map_ct - 2000 09:17:11 cash_team_elimination_hostage_map_t - 1000 09:17:11 cash_team_hostage_alive - 0 09:17:11 cash_team_hostage_interaction - 500 09:17:11 cash_team_loser_bonus - 1400 09:17:11 cash_team_loser_bonus_consecutive_rounds - 500 09:17:11 cash_team_planted_bomb_but_defused - 800 09:17:11 cash_team_rescued_hostage - 0 09:17:11 cash_team_survive_guardian_wave - 1000 09:17:11 cash_team_terrorist_win_bomb - 3500 09:17:11 cash_team_win_by_defusing_bomb - 3250 09:17:11 cash_team_win_by_hostage_rescue - 3500 09:17:11 cash_team_win_by_time_running_out_bomb - 3250 09:17:11 cash_team_win_by_time_running_out_hostage - 3250 09:17:11 contributionscore_assist - 1 09:17:11 contributionscore_bomb_defuse_major - 3 09:17:11 contributionscore_bomb_defuse_minor - 1 09:17:11 contributionscore_bomb_exploded - 1 09:17:11 contributionscore_bomb_planted - 2 09:17:11 contributionscore_cash_bundle - 0 09:17:11 contributionscore_crate_break - 0 09:17:11 contributionscore_hostage_kill - -2 09:17:11 contributionscore_hostage_rescue_major - 3 09:17:11 contributionscore_hostage_rescue_minor - 1 09:17:11 contributionscore_kill - 2 09:17:11 contributionscore_kill_factor - 0 09:17:11 contributionscore_objective_kill - 3 09:17:11 contributionscore_suicide - -2 09:17:11 contributionscore_team_kill - -2 09:17:11 ff_damage_reduction_bullets - 0.1 09:17:11 ff_damage_reduction_grenade - 0.25 09:17:11 ff_damage_reduction_grenade_self - 1 09:17:11 ff_damage_reduction_other - 0.25 09:17:11 global_chatter_info - 09:17:11 healthshot_healthboost_damage_multiplier - 1 09:17:11 healthshot_healthboost_speed_multiplier - 1 09:17:11 healthshot_healthboost_time - 0 09:17:11 inferno_child_spawn_max_depth - 4 09:17:11 inferno_max_flames - 16 09:17:11 inferno_max_range - 150 09:17:11 molotov_throw_detonate_time - 2.0 09:17:11 mp_afterroundmoney - 0 09:17:11 mp_anyone_can_pickup_c4 - 0 09:17:11 mp_autokick - 1 09:17:11 mp_autoteambalance - 1 09:17:11 mp_bot_ai_bt - 09:17:11 mp_buy_allow_grenades - 1 09:17:11 mp_buy_allow_guns - 255 09:17:11 mp_buy_anywhere - 0 09:17:11 mp_buy_during_immunity - 0 09:17:11 mp_buytime - 90 09:17:11 mp_c4_cannot_be_defused - 0 09:17:11 mp_c4timer - 40 09:17:11 mp_consecutive_loss_max - 4 09:17:11 mp_coop_force_join_ct - 0 09:17:11 mp_coopmission_bot_difficulty_offset - 0 09:17:11 mp_coopmission_mission_number - 0 09:17:11 mp_coopmission_dz - missing cvar specified in bspconvar_whitelist.txt 09:17:11 mp_ct_default_grenades - 09:17:11 mp_ct_default_melee - weapon_knife 09:17:11 mp_ct_default_primary - 09:17:11 mp_ct_default_secondary - weapon_hkp2000 09:17:11 mp_retake_ct_loadout_default_pistol_round - 1|3;#GameUI_Retake_Card_4v3,0,0,secondary0|1;#GameUI_Retake_Card_FlashOut,0,0,secondary0,grenade2;#GameUI_Retake_Card_HideAndPeek,0,0,secondary0,grenade4 09:17:11 mp_retake_ct_loadout_upgraded_pistol_round - 2|2;#GameUI_Retake_Card_TakeFive,0,0,secondary3|2;#GameUI_Retake_Card_BlindFire,0,0,secondary2,grenade2|2;#GameUI_Retake_Card_OnlyTakesOne,0,0,secondary4|2;#GameUI_Retake_Card_SneakyBeakyLike,0,0,secondary2,grenade4 09:17:11 mp_retake_ct_loadout_light_buy_round - 3|2;#GameUI_Retake_Card_UmpInSmoke,1,1,smg2,grenade4|2;#GameUI_Retake_Card_FunNGun,1,1,smg0,grenade3|2;#GameUI_Retake_Card_Sharpshooter,1,1,rifle2,grenade2|2;#GameUI_Retake_Card_BurstBullpup,1,1,rifle0 09:17:11 mp_retake_ct_loadout_full_buy_round - 4|2;#GameUI_Retake_Card_LightEmUp,1,1,rifle1,grenade2|2;#GameUI_Retake_Card_Kobe,1,1,rifle1,grenade3|1;#GameUI_Retake_Card_1g,1,1,rifle1,grenade0|1;#GameUI_Retake_Card_DisappearingAct,1,1,rifle1,grenade4|1;#GameUI_Retake_Card_EyesOnTarget,1,1,rifle3 09:17:11 mp_retake_ct_loadout_bonus_card_availability - 1,2 09:17:11 mp_retake_ct_loadout_bonus_card - #GameUI_Retake_Card_TheAWPortunity,1,1,rifle4 09:17:11 mp_retake_ct_loadout_enemy_card - #GameUI_Retake_Card_BehindEnemyLines,1,1,rifle1,grenade2 09:17:11 mp_retake_t_loadout_default_pistol_round - 0|3;#GameUI_Retake_Card_4BadGuysLeft,0,0,secondary0|1;#GameUI_Retake_Card_LookAway,0,0,secondary0,grenade2;#GameUI_Retake_Card_WhenThereIsSmoke,0,0,secondary0,grenade4 09:17:11 mp_retake_t_loadout_upgraded_pistol_round - 0|2;#GameUI_Retake_Card_BlindFire,0,0,secondary2,grenade2|2;#GameUI_Retake_Card_QueOta,0,0,secondary4|1;#GameUI_Retake_Card_SmokeScreen,0,0,secondary2,grenade4|1;#GameUI_Retake_Card_TecTecBoom,0,0,secondary3,grenade3 09:17:11 mp_retake_t_loadout_light_buy_round - 0|2;#GameUI_Retake_Card_BackInAFlash,1,1,smg2,grenade2|2;#GameUI_Retake_Card_AllIn,1,1,rifle0|1;#GameUI_Retake_Card_BoomBox,1,1,smg0,grenade3,grenade4|1;#GameUI_Retake_Card_SetThemFree,1,1,rifle2,grenade2 09:17:11 mp_retake_t_loadout_full_buy_round - 0|2;#GameUI_Retake_Card_OlReliable,1,1,rifle1,grenade2|1;#GameUI_Retake_Card_SmokeShow,1,1,rifle1,grenade4|1;#GameUI_Retake_Card_HotShot,1,1,rifle1,grenade0|1;#GameUI_Retake_Card_EyeSpy,1,1,rifle3,grenade3 09:17:11 mp_retake_t_loadout_bonus_card_availability - 1,1,2 09:17:11 mp_retake_t_loadout_bonus_card - #GameUI_Retake_Card_TheAWPortunity,1,1,rifle4 09:17:11 mp_retake_t_loadout_enemy_card - #GameUI_Retake_Card_FindersKeepers,1,1,rifle1,grenade2 09:17:11 mp_retake_max_consecutive_rounds_same_target_site - 2 09:17:11 mp_damage_headshot_only - 0 09:17:11 mp_damage_scale_ct_body - 1.0 09:17:11 mp_damage_scale_ct_head - 1.0 09:17:11 mp_damage_scale_t_body - 1.0 09:17:11 mp_damage_scale_t_head - 1.0 09:17:11 mp_damage_vampiric_amount - 0 09:17:11 mp_death_drop_c4 - 1 09:17:11 mp_death_drop_defuser - 1 09:17:11 mp_death_drop_grenade - 2 09:17:11 mp_death_drop_gun - 1 09:17:11 mp_deathcam_skippable - 1 09:17:11 mp_default_team_winner_no_objective - -1 09:17:11 mp_defuser_allocation - 0 09:17:11 mp_display_kill_assists - 1 09:17:11 mp_dm_bonus_percent - 50 09:17:11 mp_dm_bonus_respawn - 0 09:17:11 mp_dm_bonusweapon_dogtags - 0 09:17:11 mp_dm_dogtag_score - 0 09:17:11 mp_dm_kill_base_score - 10 09:17:11 mp_dm_teammode - 0 09:17:11 mp_dm_teammode_bonus_score - 1 09:17:11 mp_dm_teammode_dogtag_score - 0 09:17:11 mp_dm_teammode_kill_score - 1 09:17:11 mp_dogtag_despawn_on_killer_death - 1 09:17:11 mp_dogtag_despawn_time - 120 09:17:11 mp_dogtag_pickup_rule - 0 09:17:11 mp_drop_grenade_enable - 0 09:17:11 mp_drop_knife_enable - 0 09:17:11 mp_economy_reset_rounds - 0 09:17:11 mp_equipment_reset_rounds - 0 09:17:11 mp_force_assign_teams - 0 09:17:11 mp_force_pick_time - 15 09:17:11 mp_forcecamera - 1 09:17:11 mp_free_armor - 0 09:17:11 mp_freezetime - 6 09:17:11 mp_friendlyfire - 0 09:17:11 mp_ggprogressive_round_restart_delay - 15.0 09:17:11 mp_ggtr_always_upgrade - 0 09:17:11 mp_ggtr_bomb_defuse_bonus - 1 09:17:11 mp_ggtr_bomb_detonation_bonus - 1 09:17:11 mp_ggtr_bomb_pts_for_flash - 4 09:17:11 mp_ggtr_bomb_pts_for_he - 3 09:17:11 mp_ggtr_bomb_pts_for_molotov - 5 09:17:11 mp_ggtr_bomb_pts_for_upgrade - 2.0 09:17:11 mp_ggtr_bomb_respawn_delay - 0.0 09:17:11 mp_ggtr_end_round_kill_bonus - 1 09:17:11 mp_ggtr_halftime_delay - 0.0 09:17:11 mp_ggtr_last_weapon_kill_ends_half - 0 09:17:11 mp_give_player_c4 - 1 09:17:11 mp_global_damage_per_second - 0.0 09:17:11 mp_guardian_bot_money_per_wave - 800 09:17:11 mp_guardian_force_collect_hostages_timeout - 50 09:17:11 mp_guardian_loc_icon - missing cvar specified in bspconvar_whitelist.txt 09:17:11 mp_guardian_loc_string_desc - 09:17:11 mp_guardian_loc_string_hud - #guardian_mission_type_kills 09:17:11 mp_guardian_loc_weapon - 09:17:11 mp_guardian_player_dist_max - 2000 09:17:11 mp_guardian_player_dist_min - 1300 09:17:11 mp_guardian_special_kills_needed - 10 09:17:11 mp_guardian_special_weapon_needed - awp 09:17:11 mp_guardian_target_site - -1 09:17:11 mp_guardian_force_collect_hostages_timeout - 50 09:17:11 mp_guardian_give_random_grenades_to_bots - 1 09:17:11 mp_guardian_ai_bt_difficulty_adjust_wave_interval - 1 09:17:11 mp_guardian_ai_bt_difficulty_max_next_level_bots - 3 09:17:11 mp_guardian_ai_bt_difficulty_cap_beginning_round - 2 09:17:11 mp_guardian_ai_bt_difficulty_initial_value - 2 09:17:11 mp_halftime - 0 09:17:11 mp_halftime_pausetimer - 0 09:17:11 mp_heavyassaultsuit_aimpunch - 1.0 09:17:11 mp_heavyassaultsuit_cooldown - 5 09:17:11 mp_heavyassaultsuit_deploy_timescale - 0.8 09:17:11 mp_heavyassaultsuit_speed - 130 09:17:11 mp_heavybot_damage_reduction_scale - 1.0 09:17:11 mp_hostagepenalty - 10 09:17:11 mp_hostages_max - 2 09:17:11 mp_hostages_spawn_force_positions - 09:17:11 mp_hostages_spawn_same_every_round - 1 09:17:11 mp_items_prohibited - 09:17:11 mp_limitteams - 2 09:17:11 mp_match_can_clinch - 1 09:17:11 mp_match_end_changelevel - 0 09:17:11 mp_max_armor - 2 09:17:11 mp_maxmoney - 16000 09:17:11 mp_maxrounds - 0 09:17:11 mp_molotovusedelay - 15.0 09:17:11 mp_only_cts_rescue_hostages - 1 09:17:11 mp_plant_c4_anywhere - 0 09:17:11 mp_playercashawards - 1 09:17:11 mp_radar_showall - 0 09:17:11 mp_randomspawn - 0 09:17:11 mp_randomspawn_dist - 0 09:17:11 mp_randomspawn_los - 1 09:17:11 mp_respawn_immunitytime - 4.0 09:17:11 mp_respawn_on_death_ct - 0 09:17:11 mp_respawn_on_death_t - 0 09:17:11 mp_respawnwavetime_ct - 10.0 09:17:11 mp_respawnwavetime_t - 10.0 09:17:11 mp_round_restart_delay - 7.0 09:17:11 mp_roundtime - 5 09:17:11 mp_roundtime_defuse - 0 09:17:11 mp_roundtime_hostage - 0 09:17:11 mp_solid_teammates - 1 09:17:11 mp_starting_losses - 0 09:17:11 mp_startmoney - 800 09:17:11 mp_suicide_penalty - 1 09:17:11 mp_t_default_grenades - 09:17:11 mp_t_default_melee - weapon_knife 09:17:11 mp_t_default_primary - 09:17:11 mp_t_default_secondary - weapon_glock 09:17:11 mp_tagging_scale - 1.0 09:17:11 mp_taser_recharge_time - -1 09:17:11 mp_teamcashawards - 1 09:17:11 mp_teammates_are_enemies - 0 09:17:11 mp_timelimit - 5 09:17:11 mp_use_respawn_waves - 0 09:17:11 mp_warmup_pausetimer - 0 09:17:11 mp_warmuptime - 30 09:17:11 mp_warmuptime_all_players_connected - 0 09:17:11 mp_weapon_self_inflict_amount - 0 09:17:11 mp_weapons_allow_heavy - -1 09:17:11 mp_weapons_allow_heavyassaultsuit - 0 09:17:11 mp_weapons_allow_map_placed - 0 09:17:11 mp_weapons_allow_pistols - -1 09:17:11 mp_weapons_allow_rifles - -1 09:17:11 mp_weapons_allow_smgs - -1 09:17:11 mp_weapons_allow_typecount - 5 09:17:11 mp_weapons_allow_zeus - 1 09:17:11 mp_weapons_glow_on_ground - 0 09:17:11 mp_weapons_max_gun_purchases_per_weapon_per_match - -1 09:17:11 mp_win_panel_display_time - 3 09:17:11 occlusion_test_async - 0 09:17:11 spec_freeze_panel_extended_time - 0.0 09:17:11 spec_freeze_time - 3.0 09:17:11 spec_replay_bot - 0 09:17:11 spec_replay_enable - 0 09:17:11 spec_replay_leadup_time - 5.3438 09:17:11 sv_accelerate - 5.5 09:17:11 sv_air_pushaway_dist - 0 09:17:11 sv_airaccelerate - 12 09:17:11 sv_allow_votes - 1 09:17:11 sv_alltalk - 0 09:17:11 sv_arms_race_vote_to_restart_disallowed_after - 0 09:17:11 sv_auto_adjust_bot_difficulty - 1 09:17:11 sv_auto_full_alltalk_during_warmup_half_end - 1 09:17:11 sv_autobunnyhopping - 0 09:17:11 sv_autobuyammo - 0 09:17:11 sv_bot_buy_decoy_weight - 1 09:17:11 sv_bot_buy_flash_weight - 1 09:17:11 sv_bot_buy_grenade_chance - 33 09:17:11 sv_bot_buy_hegrenade_weight - 6 09:17:11 sv_bot_buy_molotov_weight - 1 09:17:11 sv_bot_buy_smoke_weight - 1 09:17:11 sv_bots_force_rebuy_every_round - 0 09:17:11 sv_bots_get_easier_each_win - 0 09:17:11 sv_bots_get_harder_after_each_wave - 0 09:17:11 sv_bounce - 0 09:17:11 sv_buy_status_override - -1 09:17:11 sv_deadtalk - 0 09:17:11 sv_disable_immunity_alpha - 0 09:17:11 sv_disable_radar - 0 09:17:11 sv_disable_show_team_select_menu - missing cvar specified in bspconvar_whitelist.txt 09:17:11 sv_duplicate_playernames_ok - 0 09:17:11 sv_enablebunnyhopping - 0 09:17:11 sv_env_entity_makers_enabled - 1 09:17:11 sv_extract_ammo_from_dropped_weapons - 0 09:17:11 sv_falldamage_scale - 1 09:17:11 sv_falldamage_to_below_player_multiplier - 1 09:17:11 sv_falldamage_to_below_player_ratio - 0 09:17:11 sv_force_reflections - 0 09:17:11 sv_friction - 5.2 09:17:11 sv_grassburn - 0 09:17:11 sv_gravity - 800 09:17:11 sv_guardian_extra_equipment_ct - 09:17:11 sv_guardian_extra_equipment_t - 09:17:11 sv_guardian_health_refresh_per_wave - 50 09:17:11 sv_guardian_heavy_all - 0 09:17:11 sv_guardian_heavy_count - 0 09:17:11 sv_guardian_max_wave_for_heavy - 0 09:17:11 sv_guardian_min_wave_for_heavy - 0 09:17:11 sv_guardian_refresh_ammo_for_items_on_waves - 09:17:11 sv_guardian_reset_c4_every_wave - 0 09:17:11 sv_guardian_respawn_health - 50 09:17:11 sv_guardian_spawn_health_ct - 100 09:17:11 sv_guardian_spawn_health_t - 100 09:17:11 sv_health_approach_enabled - 0 09:17:11 sv_health_approach_speed - 10 09:17:11 sv_hegrenade_damage_multiplier - 1 09:17:11 sv_hegrenade_radius_multiplier - 1 09:17:11 sv_hide_roundtime_until_seconds - missing cvar specified in bspconvar_whitelist.txt 09:17:11 sv_highlight_distance - 500 09:17:11 sv_highlight_duration - 3.5 09:17:11 sv_ignoregrenaderadio - 0 09:17:11 sv_infinite_ammo - 0 09:17:11 sv_knife_attack_extend_from_player_aabb - 0 09:17:11 sv_maxspeed - 320 09:17:11 sv_maxvelocity - 3500 09:17:11 sv_occlude_players - 1 09:17:11 sv_outofammo_indicator - 0 09:17:11 sv_show_ragdoll_playernames - missing cvar specified in bspconvar_whitelist.txt 09:17:11 sv_show_team_equipment_force_on - 0 09:17:11 sv_staminajumpcost - .080 09:17:11 sv_staminalandcost - .050 09:17:11 sv_stopspeed - 80 09:17:11 sv_talk_enemy_dead - 0 09:17:11 sv_talk_enemy_living - 0 09:17:11 sv_teamid_overhead_maxdist - 0 09:17:11 sv_teamid_overhead_maxdist_spec - 0 09:17:11 sv_versus_screen_scene_id - 0 09:17:11 sv_vote_to_changelevel_before_match_point - 0 09:17:11 sv_warmup_to_freezetime_delay - 4 09:17:11 sv_water_movespeed_multiplier - 0.8 09:17:11 sv_water_swim_mode - 0 09:17:11 sv_wateraccelerate - 10 09:17:11 sv_waterfriction - 1 09:17:11 sv_weapon_encumbrance_per_item - 0.85 09:17:11 sv_weapon_encumbrance_scale - 0 09:17:11 tv_delay - 10 09:17:11 tv_delay1 - 15 09:17:11 weapon_accuracy_nospread - 0 09:17:11 weapon_air_spread_scale - 1.0 09:17:11 weapon_max_before_cleanup - 0 09:17:11 weapon_recoil_scale - 2.0 09:17:11 weapon_reticle_knife_show - 1 09:17:11 weapon_sound_falloff_multiplier - 1.0 09:17:11 sv_camera_fly_enabled - missing cvar specified in bspconvar_whitelist.txt 09:17:11 Executing dedicated server config file 09:17:11 Execing config: server.cfg 09:17:11 Unknown command "sv_maxcmdrate" 09:17:11 Unknown command "sv_vote_creation_time" 09:17:11 Writing cfg/banned_user.cfg. 09:17:11 Writing cfg/banned_ip.cfg. 09:17:11 Execing config: banned_user.cfg 09:17:11 Execing config: banned_ip.cfg 09:17:11 Unknown command "allow_spectators" 09:17:11 Execing config: gamemode_competitive.cfg 09:17:11 Execing config: gamemode_competitive_server.cfg 09:17:11 exec: couldn't exec gamemode_competitive_server.cfg 09:17:11 GameTypes: set convars for game type/mode (classic:0/competitive:1): 09:17:11 exec { 09:17:11 exec gamemode_competitive.cfg 09:17:11 exec_offline gamemode_competitive_offline.cfg 09:17:11 exec gamemode_competitive_server.cfg 09:17:11 } 09:17:11 Set Gravity 800.0 (0.250 tolerance) 09:17:11 CHostage::Precache: missing hostage models for map de_dust2. Adding the default models. 09:17:11 PrecacheScriptSound 'Snowball.Bounce' failed, no such sound script entry 09:17:12 PrecacheScriptSound 'Survival.VO.Taunt4a' failed, no such sound script entry 09:17:13 Failed to load models/weapons/w_knife_ghost_dropped.mdl! 09:17:13 Failed to load models/props/crates/patch_envelope02.mdl! 09:17:13 PrecacheScriptSound 'balkan_epic_blank' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.omw_to_plant_a_04' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_ramp_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_back_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_platform_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_catwalk_03' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_enemy_spawn_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_doubledoors_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_front_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_overpass_03' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_palace_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_stairs_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_snipers_nest_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_connector_01' failed, no such sound script entry 09:17:13 PrecacheScriptSound 'professional_epic.loc_door_01' failed, no such sound script entry 09:17:14 Invalid file size for host.txt 09:17:14 Commentary: Could not find commentary data file 'maps/de_dust2_commentary.txt'. 09:17:14 The Navigation Mesh was built using a different version of this map. 09:17:14 Error parsing BotProfile.db - unknown attribute 'Rank' 09:17:14 Error parsing BotProfile.db - unknown attribute 'Rank' 09:17:14 Error parsing BotProfile.db - unknown attribute 'Rank' 09:17:14 Error parsing BotProfile.db - unknown attribute 'Rank' 09:17:14 Error parsing BotProfile.db - unknown attribute 'Rank' 09:17:14 Error parsing BotProfile.db - unknown attribute 'Rank' 09:17:14 Error parsing BotProfile.db - unknown attribute 'Rank' 09:17:14 Error parsing BotProfile.db - unknown attribute 'Rank' 09:17:14 Created class baseline: 20 classes, 13792 bytes. 09:17:14 Initializing Steam libraries for secure Internet server 09:17:14 Logging into Steam gameserver account with logon token 'B74A031Fxxxxxxxxxxxxxxxxxxxxxxxx' 09:17:14 Initialized low level socket/threading support. 09:17:14 \src\steamnetworkingsockets\clientlib\csteamnetworkingsockets_steam.cpp(138): Assertion Failed: Initted interface twice? 09:17:14 Set SteamNetworkingSockets P2P_STUN_ServerList to '' as per SteamNetworkingSocketsSerialized 09:17:14 SteamDatagramServer_Init succeeded 09:17:14 Execing config: sourcemod/sourcemod.cfg 09:17:14 Execing config: sourcemod\basevotes.cfg 09:17:14 Execing config: sourcemod\funcommands.cfg 09:17:14 Execing config: sourcemod\funvotes.cfg 09:17:14 Connection to Steam servers successful. 09:17:14 Public IP is 89.203.193.220. 09:17:14 Assigned persistent gameserver Steam ID [G:1:3976299]. 09:17:14 Gameserver logged on to Steam, assigned identity steamid:85568392924015723 09:17:14 Set SteamNetworkingSockets P2P_STUN_ServerList to '146.66.155.54:3478' as per SteamNetworkingSocketsSerialized 09:17:15 VAC secure mode is activated. 09:17:15 Received server welcome from GC. 09:17:15 GC Connection established for server version 1219, instance idx 1
TrySpace
React.js Debug mixin, for creating a nested visual representation in your developer console.
zeppaman
Simple c# console application to test elastic search integrazion in .net core with NEST
mortenscheel
Nested dynamic console tasks for PHP
Nate158s
# Routing with EdgeJS https://github.com/Nate158s The `{{ PACKAGE_NAME }}/core` package provides a JavaScript API for controlling routing and caching from your code base rather than a CDN web portal. Using this _{{ EDGEJS_LABEL }}_ approach allows this vital routing logic to be properly tested, reviewed, and version controlled, just like the rest of your application code. Using the Router, you can: - Proxy requests to upstream sites - Send redirects from the network edge - Render responses on the server using Next.js, Nuxt.js, Angular, or any other framework that supports server side rendering. - Alter request and response headers - Send synthetic responses - Configure multiple destinations for split testing ## Configuration To define routes for {{ PRODUCT_NAME }}, create a `routes.js` file in the root of your project. You can override the default path to the router by setting the `routes` key in `{{ CONFIG_FILE }}`. The `routes.js` file should export an instance of `{{ PACKAGE_NAME }}/core/router/Router`: ```js // routes.js const { Router } = require('{{ PACKAGE_NAME }}/core/router') module.exports = new Router() ``` ## Declare Routes Declare routes using the method corresponding to the HTTP method you want to match. ```js // routes.js const { Router } = require('{{ PACKAGE_NAME }}/core/router') module.exports = new Router().get('/some-path', ({ cache, proxy }) => { // handle the request here }) ``` All HTTP methods are available: - get - put - post - patch - delete - head To match all methods, use `match`: ```js // routes.js const { Router } = require('{{ PACKAGE_NAME }}/core/router') module.exports = new Router().match('/some-path', ({ cache, proxy }) => { // handle the request here }) ``` ## Route Execution When {{ PRODUCT_NAME }} receives a request, it executes **each route that matches the request** in the order in which they are declared until one sends a response. The following methods return a response: - [appShell](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#appshell) - [compute](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#compute) - [proxy](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#proxy) - [redirect](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#redirect) - [send](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#send) - [serveStatic](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#servestatic) - [serviceWorker](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#serviceworker) - [stream](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#stream) - [use](/docs/api/core/classes/_router_responsewriter_.responsewriter.html#compute) Multiple routes can therefore be executed for a given request. A common pattern is to add caching with one route and render the response with a later one using middleware. In the following example we cache then render a response with Next.js: ```js const { Router } = require('{{ PACKAGE_NAME }}/core/router') const { nextRoutes } = require('{{ PACKAGE_NAME }}/next') // In this example a request to /products/1 will be cached by the first route, then served by the `nextRoutes` middleware new Router() .get('/products/:id', ({ cache }) => { cache({ edge: { maxAgeSeconds: 60 * 60, staleWhileRevalidateSeconds: 60 * 60 }, }) }) .use(nextRoutes) ``` ### Alter Requests and Responses {{ PRODUCT_NAME }} offers APIs to manipulate request and response headers and cookies. The APIs are: | Operation | Request | Upstream Response | Response sent to Browser | | ------------- | --------------------- | ------------------------------ | ------------------------ | | Set header | `setRequestHeader` | `setUpstreamResponseHeader` | `setResponseHeader` | | Add cookie | `*` | `addUpstreamResponseCookie` | `addResponseCookie` | | Update header | `updateRequestHeader` | `updateUpstreamResponseHeader` | `updateResponseHeader` | | Update cookie | `*` | `updateUpstreamResponseCookie` | `updateResponseCookie` | | Remove header | `removeRequestHeader` | `removeUpstreamResponseHeader` | `removeResponseHeader` | | Remove cookie | `*` | `removeUpstreamResponseCookie` | `removeResponseCookie` | `*` Adding, updating, or removing a request cookie can be achieved with `updateRequestHeader` applied to `cookie` header. You can find detailed descriptions of these APIs in the `{{ PACKAGE_NAME }}/core` [documentation](/docs/api/core/classes/_router_responsewriter_.responsewriter.html). #### Embedded Values You can inject values from the request or response into headers or cookies as template literals using the `${value}` format. For example: `setResponseHeader('original-request-path', '${path}')` would add an `original-request-path` response header whose value is the request path. | Value | Embedded value | Description | | --------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | HTTP method | `${method}` | The value of the HTTP method used for the request (e.g. `GET`) | | URL | `${url}` | The complete URL path including any query strings (e.g. `/search?query=docs`). Protocol, hostname, and port are not included. | | Path | `${path}` | The URL path excluding any query strings (e.g. `/search`) | | Query string | `${query:<name>}` | The value of the `<name>` query string or empty if not available. | | Request header | `${req:<name>}` | The value of the `<name>` request header or empty if not available. | | Request cookie | `${req:cookie:<name>}` | The value of the `<name>` cookie in `cookie` request header or empty if not available. | | Response header | `${res:<name>}` | The value of the `<name>` response header or empty if not available. | ## Route Pattern Syntax The syntax for route paths is provided by [path-to-regexp](https://github.com/pillarjs/path-to-regexp#path-to-regexp), which is the same library used by [Express](https://expressjs.com/). ### Named Parameters Named parameters are defined by prefixing a colon to the parameter name (`:foo`). ```js new Router().get('/:foo/:bar', res => { /* ... */ }) ``` **Please note:** Parameter names must use "word characters" (`[A-Za-z0-9_]`). #### Custom Matching Parameters Parameters can have a custom regexp, which overrides the default match (`[^/]+`). For example, you can match digits or names in a path: ```js new Router().get('/icon-:foo(\\d+).png', res => { /* ... */ }) ``` **Tip:** Backslashes need to be escaped with another backslash in JavaScript strings. #### Custom Prefix and Suffix Parameters can be wrapped in `{}` to create custom prefixes or suffixes for your segment: ```js new Router().get('/:attr1?{-:attr2}?{-:attr3}?', res => { /* ... */ }) ``` ### Unnamed Parameters It is possible to write an unnamed parameter that only consists of a regexp. It works the same the named parameter, except it will be numerically indexed: ```js new Router().get('/:foo/(.*)', res => { /* ... */ }) ``` ### Modifiers Modifiers must be placed after the parameter (e.g. `/:foo?`, `/(test)?`, `/:foo(test)?`, or `{-:foo(test)}?`). #### Optional Parameters can be suffixed with a question mark (`?`) to make the parameter optional. ```js new Router().get('/:foo/:bar?', res => { /* ... */ }) ``` **Tip:** The prefix is also optional, escape the prefix `\/` to make it required. #### Zero or More Parameters can be suffixed with an asterisk (`*`) to denote zero or more parameter matches. ```js new Router().get('/:foo*', res => { /* res.params.foo will be an array */ }) ``` The captured parameter value will be provided as an array. #### One or More Parameters can be suffixed with a plus sign (`+`) to denote one or more parameter matches. ```js new Router().get('/:foo+', res => { /* res.params.foo will be an array */ }) ``` The captured parameter value will be provided as an array. ## Matching Method, Query Parameters, Cookies, and Headers Match can either take a URL path, or an object which allows you to match based on method, query parameters, cookies, or request headers: ```js router.match( { path: '/some-path', // value is route-pattern syntax method: /GET|POST/i, // value is a regular expression cookies: { currency: /^(usd)$/i }, // keys are cookie names, values are regular expressions headers: { 'x-moov-device': /^desktop$/i }, // keys are header names, values are regular expressions query: { page: /^(1|2|3)$/ }, // keys are query parameter names, values are regular expressions }, () => {}, ) ``` ## Body Matching for POST requests You can also match HTTP `POST` requests based on their request body content as in the following example: ```js router.match( { body: { parse: 'json', criteria: { operationName: 'GetProducts' } }, // the body content will parsed as JSON and the parsed JSON matched against the presence of the criteria properties (in this case a GraphQL operation named 'GetProducts') }, () => {}, ) ``` Currently the only body content supported is JSON. Body content is parsed as JSON and is matched against the presence of the fields specified in the `criteria` field. The [_POST Body Matching Criteria_](#section_post_body_matching_criteria) section below contains examples of using the `criteria` field. Body matching can be combined with other match parameters such as headers and cookies. For example, ```js router.match( { // Only matches GetProducts operations to the /graphql endpoint // for logged in users path: '/graphql', cookies: { loginStatus: /^(loggedIn)$/i }, // loggedin users body: { parse: 'json', criteria: { operationName: 'GetProducts' } }, }, () => {}, ) ``` ### Caching & POST Body Matching When body matching is combined with `cache` in a route, **the HTTP request body will automatically be used as the cache key.** For example, the code below will cache GraphQL `GetProducts` queries using the entire request body as the cache key: ```js router.match( { body: { parse: 'json', criteria: { operationName: 'GetProducts' } }, }, ({ cache }) => { cache({ edge: { maxAgeSeconds: 60 * 60, staleWhileRevalidateSeconds: 60 * 60 * 24, // this way stale items can still be prefetched }, }) }, ) ``` You can still add additional parameters to the cache key using the normal {{ EDGEJS_LABEL }} `key` property. For example, the code below will cache GraphQL `GetProducts` queries separately for each user based on their userID cookie _and_ the HTTP body of the request. ```js router.match( { body: { parse: 'json', criteria: { operationName: 'GetProducts' } }, }, ({ cache }) => { cache({ edge: { maxAgeSeconds: 60 * 60, staleWhileRevalidateSeconds: 60 * 60 * 24, // this way stale items can still be prefetched }, key: new CustomCacheKey().addCookie('userID'), // Split cache by userID }) }, ) ``` ### POST Body Matching Criteria The `criteria` property can be a string or regular expression. For example, the router below, ```js router.match( { body: { parse: 'json', criteria: { foo: 'bar' } }, }, () => {}, ) ``` would match an HTTP POST request body containing: ```js { "foo": "bar", "bar": "foo" } ``` ### Regular Expression Criteria Regular expressions can also be used as `criteria`. For example, ```js router.match( { body: { parse: 'json', criteria: { operationName: /^Get/ } }, }, () => {}, ) ``` would match an HTTP POST body containing: ```js { "operationName": "GetShops", "query": "...", "variables": {} } ``` ### Nested JSON Criteria You can also use a nested object to match a field at a specific location in the JSON. For example, ```js router.match( { body: { parse: 'json', criteria: { operation: { name: 'GetShops', }, }, }, }, () => {}, ) ``` would match an HTTP POST body containing: ```js { "operation": { "name": "GetShops", "query": "..." } } ``` ## GraphQL Queries The {{ EDGEJS_LABEL }} router provides a `graphqlOperation` method for matching GraphQL. ```js router.graphqlOperation('GetProducts', res => { /* Handle the POST for the GetProducts query specifically */ }) ``` By default, the `graphqlOperation` assumes your GraphQL endpoint is at `/graphql`. You can alter this behavior by using the `path` property as shown below: ```js router.graphqlOperation({ path: '/api/graphql', name: 'GetProducts' }, res => { /* Handle the POST for the GetProducts query specifically */ }) ``` Note that when the `graphqlOperation` function is used, the HTTP request body will automatically be included in the cache key. The `graphqlOperation` function is provided to simplify matching of common GraphQL scenarios. For complex GraphQL matching (such as authenticated data), you can use the generic [_Body Matching for POST requests_](#section_body_matching_for_post_requests) feature. See the guide on [Implementing GraphQL Routing](/guides/graphql) in your project. ## Request Handling The second argument to routes is a function that receives a `ResponseWriter` and uses it to send a response. Using `ResponseWriter` you can: - Proxy a backend configured in `{{ CONFIG_FILE }}` - Serve a static file - Send a redirect - Send a synthetic response - Cache the response at edge and in the browser - Manipulate request and response headers [See the API Docs for Response Writer](/docs/__version__/api/core/classes/_router_responsewriter_.responsewriter.html) ## Full Example This example shows typical usage of `{{ PACKAGE_NAME }}/core`, including serving a service worker, next.js routes (vanity and conventional routes), and falling back to a legacy backend. ```js // routes.js const { Router } = require('{{ PACKAGE_NAME }}/core/router') module.exports = new Router() .get('/service-worker.js', ({ serviceWorker }) => { // serve the service worker built by webpack serviceWorker('dist/service-worker.js') }) .get('/p/:productId', ({ cache }) => { // cache products for one hour at edge and using the service worker cache({ edge: { maxAgeSeconds: 60 * 60, staleWhileRevalidateSeconds: 60 * 60, }, browser: { maxAgeSeconds: 0, serviceWorkerSeconds: 60 * 60, }, }) proxy('origin') }) .fallback(({ proxy }) => { // serve all unmatched URLs from the origin backend configured in {{ CONFIG_FILE }} proxy('origin') }) ``` ## Errors Handling You can use the router's `catch` method to return specific content when the request results in an error status (For example, a 500). Using `catch`, you can also alter the `statusCode` and `response` on the edge before issuing a response to the user. ```js router.catch(number | Regexp, (routeHandler: Function)) ``` ### Examples To issue a custom error page when the origin returns a 500: ```js // routes.js const { Router } = require('{{ PACKAGE_NAME }}/core/router') module.exports = new Router() // Example route .get('/failing-route', ({ proxy }) => { proxy('broken-origin') }) // So let's assume that backend "broken-origin" returns 500, so instead // of rendering the broken-origin response we can alter that by specifing .catch .catch(500, ({ serveStatic }) => { serveStatic('static/broken-origin-500-page.html', { statusCode: 502, }) }) ``` The `.catch` method allows the edge router to render a response based on the result preceeding routes. So in the example above whenever we receive a 500 we respond with `broken-origin-500-page.html` from the application's `static` directory and change the status code to 502. - Your catch callback is provided a [ResponseWriter](/docs/api/core/classes/_router_responsewriter_.responsewriter.html) instance. You can use any ResponseWriter method except `proxy` inside `.catch`. - We highly recommend keeping `catch` routes simple. Serve responses using `serveStatic` instead of `send` to minimize the size of the edge bundle. ## Environment Edge Redirects In addition to sending redirects at the edge within the router configuration, this can also be configured at the environment level within the Layer0 Developer Console. Under _<Your Environment> → Configuration_, click _Edit_ to draft a new configuration. Scroll down to the _Redirects_ section:  Click _Add A Redirect_ to configure the path or host you wish to redirect to:  **Note:** you will need to activate and redeploy your site for this change to take effect.
sartorileonardo
The WSO2 Data Services Server simplifies service-oriented architecture development efforts by providing an easy-to-use platform for integrating data stores, creating composite data views, and hosting data services. It supports access to secure and managed data through federated data stores, data service transactions, and data transformation and validation using an agile, agile and developer-friendly development approach. Provides federation support by combining data from multiple sources in single response or resource and also supports nested queries between data sources. More product information WSO2 DSS at: https://docs.wso2.com/display/DSS322/Downloading+the+Product In this experiment a CRUD was created using WSO2 DSS + MySQL Database. In a few minutes it is possible to create the CRUD BeckEnd with the tool. It follows step by step for the development of the experience: Note: Verify that the Oracle 7 Java environment variables are preconfigured (JAVA_HOME). 1- Download WSO2 DSS and unpack. 2- Copy a JDBC MySql lib (mysql-connector-java-5.1.40.zip) into the "repository / components / lib" path of the WSO2 DSS tool. 2- Run the "wso2server.sh" file in the "/ bin" directory if the OS is Linux or "wso2server.bat" for Windows OS. 3- Create a Database in MySQL as Script "Script_Create_Database.sql". 4- If the tool was successfully executed, it will display something like: "[2017-04-03 11: 08: 15,957] INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} - Mgt Console URL: https://10.0.0.104:9443/carbon/" 5- Access this address through the Chrome browser or Firefox and enter the default user and password "admin". 6- Add the link in the security exception if the browser asks for it. 7- Access the menu path Settings> Datasources> Add Datasources. 8- Fill in the form with the data: > Datasource Type: RDBMS > Name: control_product_db > Database Engine: MySQL > Driver: com.mysql.jdbc.Driver > URL: jdbc: mysql: // localhost: 3306 / control_product_db > User Name: <bank user> > Password: <bank password> 9- Click the "Test Connection" button, if the tool shows the message "Connection is healthy", you have done everything correctly and the tool already has a connection to the DB; 10- Access the Main> Generate menu path and fill in the data: > Carbon Datasource (s): control_product_db > Database Name: control_product_db 11- Click the "Next" button. 12- Soon the tool will display the table where CRUD will be carried out, keep the "product" table marked and click "Next". In Service Generation, select the option of "Single Service", that is a service for CRUD of all the table, since we only have the table product. 13- Fill in the data with: > Data Service Namespace: ProductService > Data Service Name: ProductService 14- Click "Next" 15- The tool will return the information: "Following Service (s) are Deployed Sucessfully" ProductService. 16- Click "Finish" and after 30 seconds, access the Main> Services> List menu, where you will see ProductService created. 17- Clicking the "Try this service" option, the tool will open a new tab in the browser with a graphical interface (FrontEnd) with the options of: > Delete_product_operation > Insert_product_operation > Select_all_product_operation > Select_with_key_product_operation > Update_product_operation 18- After choosing the insert operation for example, you must complete the values inside the XML tags, such as the insert option: ====================================================================== ============ <Body> <P: insert_product_operation xmlns: p = "ProductService"> <! - Exactly 1 occurrence -> <P: product_name> Pen </ p: product_name> <! - Exactly 1 occurrence -> <P: product_price> 1.00 </ p: product_price> <! - Exactly 1 occurrence -> <P: product_description> BIC pen </ p: product_description> <! - Exactly 1 occurrence -> <P: product_amount> 1 </ p: product_amount> <! - Exactly 1 occurrence -> <P: product_date_created> 2017-04-03 </ p: product_date_created> <! - Exactly 1 occurrence -> <P: is_active> 1 </ p: is_active> <! - Exactly 1 occurrence -> <P: is_created> 1 </ p: is_created> </ P: insert_product_operation> </ Body> ====================================================================== ================ 19- After filling the data in the XML interface, you must click the "Send" button to perform the operation. 20- Finish !!! To download the CRUD WSO2 DSS + MySQL from this lab, go to: https://goo.gl/PqL2zm
BabyJ723
Unicorn is W3C's unified validator, which helps people improve the quality of their Web pages by performing a variety of checks. Unicorn gathers the results of the popular HTML and CSS validators, as well as other useful services. This site addresses these audiences: Users, those who want to check their Web pages and understand how to fix them based on Unicorn results. Developers, those who wish to add new services, work on existing services, or help develop the underlying Unicorn framework. Server Managers, those who wish to run their own Unicorn service locally. How to compile and deploy Unicorn: 1. The first thing you have to do in order to make Unicorn work is to add a unicorn.home parameter to your JVM parameters, pointing to the unicorn root directory. example : Dunicorn.home=/var/lib/tomcat6/webapps/unicorn/ or Dunicorn.home=/C:/Program%20Files/Tomcat/webapps/unicorn/ (read your servlet engine documentation to know how to add this parameter) 2. You will find all the configuration files that Unicorn uses in WEB-INF/conf. The main one is unicorn properties, which contains some properties that you may want to change: UNICORN_URL is the URL of your installation of Unicorn. DEFAULT_LANGUAGE, the language Unicorn will use if language negotiation fails. You can nest properties in this file, meaning that Unicorn will replace any ${<Property_key>} by its value. There is one property that is not specify in the file but added at runtime, UNICORN_HOME, which is equal to the JVM parameter unicorn.home. velocity.properties contains properties for the template engine that Unicorn uses: Apache Velocity By default template caching is set to false. In a production environment you should set this property to true. parser.pool.size is set to the default velocity value (20). If you have a lot of requests you may have to increase this value. In any case check the logs to see if you need to change it (Velocity will log warnings). log4j.properties is the properties file for Apache Log4j. The property UNICORN_HOME is also available in this file. By default logs will be written in WEB-INF/logs and sorted by package and level. If you are developing Unicorn locally you should add the appender GUI to the root logger. This will pop up a useful LogFactor5 console. You can find documentation about log4j configuration here: http://logging.apache.org/log4j/1.2/manual.html Note that log4j is not mandatory for Unicorn to work properly. If log4j.properties does not exist the default java.util.Logger will be used. observers.list is the list of the observers contract links 3. Under WEB-INF/resources/tasklist you will find the task related files which are xml files describing tasks and rdf files containing metadata about tasks. 4. Use ant to compile the project. You can use the 'war' task to make a war file of the 'jar' task to package Unicorn in a jar. The files will be written in the dist directory. See build.xml for more info. ex: ant war 5. As root, copy the file resources/tomcat_policy in the policy directory of tomcat (/etc/tomcat5/policy.d for Debian) and eventually edit it to fit your needs. Note that this file is very important because it will give permissions to read and write files under Unicorn servlet dir, but also to connect to distant hosts (observers). How to initialize Unicorn: Once you have compiled and deploy Unicorn on your engine you must initialize it. There are a few mandatory steps that Unicorn has to do before being usable, like parsing the contract files, language files, taklists, etc... If your engine uses the web.xml description file (which should be the case with almost any servlet engine) initialization is automated at startup. If you want to manually initialize Unicorn you can simply execute the InitAction by connecting to http://localhost:8080/unicorn/init. This task will launch all initialization tasks which are: initialize Unicorn core load Unicorn observers (you can execute this task only by connecting to /init?task=observers) load Unicorn tasklists (/init?task=tasklist) load language files (/init?task=language) In a production environment InitAction servlet should be protected to be accessible only from localhost (set PROTECT_INIT_ACTION to true in unicorn.properties) How does the log work: Under Tomcat logs files are on "webapps/unicorn/WEB-INF/logs/". There are split in two directory : "level" where log are split in one file by log level (trace, debug, info, warning and error). "package" where log are split by package where they come from. There are also one file called "all.log" which contains all logs informations. About Unicorn - W3C's Unified Validator validator.w3.org/unicorn/ Topics css java html validation html5 w3c validator Resources Readme Stars 92 stars Watchers 31 watching Forks 57 forks Releases 1 tags Contributors 7 @tgambet @jean-gui @gbaudusseau @dontcallmedom @vivienlacourba @tripu @xfq Languages Java 79.4% JavaScript 15.5% CSS 4.2
pointofsale
Mongo db console commands //showing the existing dbs.. show dbs //use test switching to db test, (only creating it when actually adding new data) //prompts the name of the working db now db //the fllw would prompt the count(), in the link2 collection, in the current db... >db.links2.count() //inserting a record in links2 db.links2.insert({title:"unn titulo", url:"", comment:"", tags:["un primer tag", "un segundo tag"], saved_on: new Date}) //working with an object the javascript way... data = {} | data.title = "un titulo" | data.tags = ["un tag", "otro"] | data.meta = {} | data.meta.OS = "win7" | db.links2.insert(data) //printing the result of the find, in the structured json format. db.links2.find().forEach(printjson) //--> in this case we pass to forEach the printjson function... //retriving only the first of the results of the find method. db.links2.find()[0] db.links2.find()[0]._id //getting the timestamp present in the _id variable (is made of (also) the time it was created) db.links2.find()[0]._id.getTimestamp() /*the following function creates, when called, a new collection inside the same working db, that tracks the last id number we are in. This allows having the same behavieur than in relational DBs.*/ //apparently, u have to declare this function... function counter(name) { var ret = db.counter.findAndModify({query:{_id:name}, update:{$inc:{next:1}}, "new":true, upsert:true}); return ret.next; } //so u can do something like db.products.insert({_id:counter("products"), nombre:"primer nombre"}) //the result is something like: { "_id": 1, "name": "un producto" } { "_id": 2, "name": "otro producto" } /*referencing in MongoDB*/ db.users.insert({name:"Richard"}) var a = db.users.findOne({name:"Richard"}) db.links2.insert({title:"primer titulo", author:a._id}) //reference to other collection throught the _id key... //quering db.users.findOne({ _id:link.author }) //a way to make manual inner joins... within the user db, we search for a coincidence of our _ids on the links2 db, author field. ---note--- embedding is much more efficient when we have significantly more read than writes. Otherwise, consider using the normalized way. These depends on every case. /**/ #importing data from a .js in json format. With mongod running or in a services: > ../../../mongodb/bin/mongo 127.0.0.1/bookmarks bookmarks.js //the first part is the location to the mongo exe in the mongo usual location //the second part is the server and db in which we will be importing in //the third part is the file with all the mongo commands... --this bookmarks file is in C:\Tuto\mongo\trying -- https://raw.github.com/tuts-premium/learning-mongodb/master/08%20-%20bookmarks.js /*bookmarks.js extract*/ var u1 = db.users.findOne({ 'name.first': 'John' }), u2 = db.users.findOne({ 'name.first': 'Jane' }), u3 = db.users.findOne({ 'name.first': 'Bob' }); db.links.insert({ title: 'Nettuts+', url: 'http://net.tutsplus.com', comment: 'Great site for web dev tutorials', tags: ['tutorials', 'dev', 'code'], favourites: 100, userId: u1._id }); /**/ //connecting directly to db bookmarks > ../../../mongodb/bin/mongo bookmarks //searching in the collection all docs that have inside the tags array the "code" element. //this can be done because we are dealing with an array --> array advantages... db.users.find({tags:"code"}).forEach(printjson) //with findOne u can do (not with find) findOne().name db.links.find({favourites:100}, title:true, url:1) //selecting only some fields... db.links.find({favourites:100}, tags:0) //selecting all but the tag field... //selecting inside an object... db.users.findOne({"name.first": "John"}) db.users.findOne({"name.first": "John"}, "name.last":1) var john = db.users.findOne({"name.first": "John"}) db.links.find({userId:john._id}, {title:1, _id: 0}) /*queries directives*/ //greater than 150 db.links.find({favourites:{$gt:150}}, {_id:0, favourites:1, title:1}).forEach(printjson) db.links.find({favourites:{$gt:150}}, {_id:0, favourites:1, title:1}).count() //less than db.links.find({favourites:{$lt:150}}, {_id:0, favourites:1, title:1}).forEach(printjson) //$lte, $gte -- and iqual //using in db.users.find({"name.first":{$in:["John", "Jane"]}}) //the opposite is $nin db.users.find({"name.first":{$nin:["John", "Jane"]}}) //$all -- only the records with all the specifications in "tags" field. db.links.find({tags: {$all:["code", "marketplace"]}}, {title:1, tags:1, _id:0}) //$ne -- not equal //the $or flag search for the fullfillment of at least one of the elements in the array passed... db.users.find({$or: [{"name.first": "John"}, {"name.last": "Wilson"}]}) //the opposite: $nor //inclusive: $and //$exists db.users.find({email: {$exists: true}}) //$mod db.links.find({favourites: {$mod: [5, 0]}}, {_id:0, title:1, favourites:1}) db.links.find({favourites: {$not: {$mod: [5, 0]}}}, {_id:0, title:1, favourites:1}) //elemMatch -- inside logins, search for an element match that has minutes = 20, and return the complete record db.users.find({logins: {$elemMatch: {minutes: 20}}}) //searching for an 'at' prior to 2012/03/30.. and returning the whole record... db.users.find({logins: {$elemMatch: {at: { $lt: new Date(2012, 3, 30)}}}}) //using where -- c) is equivalent to a) a) db.users.find({ $where: 'this.name.first === "John"'}) b) db.users.find({ $where: 'this.name.first === "John"', age:30}) c) db.users.find( 'this.name.first === "John"') //injecting functions in mongodb -- as this example returns trueéfalse, its going to return values randomly var frand = function() {return Math.random() > 0.5} db.users.find(frand) // var f = function() { return this.name.first === "John"} db.users.find(f) //or db.users.find( {$where: f} ) //other queries //distinct -- returns a list of diff results db.links.distinct('favourites') --> [100, 32, 21, 78, ...] db.links.distinct("url") db.links.group({ key:{userId : true}, initial:{favCount: 0}, reduce: function (doc, o) {o.favCount += doc.favourites}, finalize: function(o) {o.name = db.users.findOne({ _id: o.userId}).name } }); *** //the final part is not working... db.links.group({ key:{userId : true}, initial:{favCount: 0}, reduce: function (doc, o) {o.favCount += doc.favourites} }); db.links.group({ key:{userId : true}, initial:{favCount: 0}, reduce: function (doc, o) {o.favCount += doc.favourites}, finalize: function(o) {o.name = "richard"}} ); //regex db.links.find({ title: /tuts\+$/}) db.links.find({ title: {regex: /tuts\+$/}}, {title:1}) //counting db.users.count({'name.first': 'John'}) db.users.count(); //all users in the collection //sorting, limit db.links.find({}, {title:1}).sort({title:1}).limit(1) //1: asc -1: desc //sorting, skipping and limiting... normal behavieur in the pagination rutine... db.links.find({}, {title:1, _id:0}).sort({title:1}).skip(3).limit(3) /*updating*/ //by replacement or by modification... ---general form /* db.collection.update( <query>, <update>, { upsert: <Boolean>, //if not found insert multi: <Boolean>, //change in all the condition <query> is fullfilled } ) */ // more info in http://docs.mongodb.org/manual/reference/method/db.collection.update/ db.users.update({-the query object-}, {-the update object-}, -upsert boolean-); var n = {title:"Nettuts+"} db.links.find(n, {title:1}) db.links.update(n, {$inc: {favourites: 5}}) var q = {"name.last": "Doe"} db.users.find(q, {name:1}) //we can use set to update a field or add a completly new one... db.users.update(q, {$set: {"name.last": "Doetix"}}) //modifying an existing field.. db.users.update(q, {$set: {"email": "doetix81@gmail.com"}}) //inserting a new one... //to remove a field w use unset db.users.update(q, {$unset: {job: "Web developper"}}) db.users.update({"name.first":"John"}, {$set: {job:"Web developer"}}, false, true) //modifying and then inserting an object var bob = db.users.findOne({"name.first":"Bob"}) >bob { "_id" : ObjectId("525f06242df9763abe646b62"), "name" : { "first" : "Bob", "last" : "Smith" }, "age" : 31, "email" : "bob.smith@gmail.com", "passwordHash" : "last_password_hash" } > bob.job = "Thick Brush Painter" > db.users.save(bob) //find and modify -- findAndModify {{}} /* The findAndModify command atomically modifies and returns a single document. By default, the returned document does not include the modifications made on the update. To return the document with the modifications made on the update, use the new option. { findAndModify: <string>, query: <document>, sort: <document>, remove: <boolean>, //one of | update: <document>, //this two | new: <boolean>, //if the new object must be shown or the old one.. fields: <document>, //fields to show in the result upsert: <boolean> } */ > db.links.findAndModify({ query:{favourites: {$gt:150}}, sort:{title:1}, update:{favourites: 333}, new: true, fields: {_id:0} }); //pulling into arrays db.links.update(n, { $push: {tags: "jobs"}}) > db.links.findOne(n).tags //several... db.links.update(n, {$pushAll:{tags: ['blogs','press','contests']}}) //on pull into the array if the new element is not present.. db.links.update(n, {$addToSet:{tags: "dev"}}) //doing the same with an array... db.links.update(n, {$addToSet:{ tags:{$each: ["dev", "interviews"]} }}) //pulling out content from the array... db.links.update(n, {$pull: {tags:'interviews'}}) //pulling several... db.links.update(n, {$pullAll: {tags: ['blogs','dev', 'contests']}}) //poping out from the beginning or the end.. db.links.update(n, {$pop: {tags: 1}}) //--from the end (-1 -- from the beginning) //positional operator... only the subobject gets updated... db.users.update({'logins.minutes': 20} , {$inc:{ 'logins.$.minutes': 10}}, false, true) db.users.update({'logins.minutes': 20} , {$set:{ 'logins.$.location': 10}}, false, true) db.users.update({'logins.minutes': 30}, {$set: {random: true}}, false, true) //renaming the fields name... db.links.update({url: {$exists: true}}, {$rename:{"url": "camino"}}, false, true); //more info on the positional operator in: http://docs.mongodb.org/manual/reference/operator/update/positional/ //taken from there: /* The positional $ operator facilitates updates to arrays that contain embedded documents. Use the positional $ operator to access the fields in the embedded documents with the dot notation on the $ operator. db.collection.update( { <query selector> }, { <update operator>: { "array.$.field" : value } } ) */ /***EXAMPLE Consider the following document in the students collection whose grades field value is an array of embedded documents: { "_id" : 4, "grades" : [ { grade: 80, mean: 75, std: 8 }, { grade: 85, mean: 90, std: 5 }, { grade: 90, mean: 85, std: 3 } ] } Use the positional $ operator to update the value of the std field in the embedded document with the grade of 85: db.students.update( { _id: 4, "grades.grade": 85 }, { $set: { "grades.$.std" : 6 } } ) ***/ //removing db.users.remove({'name.first': "John"}) //all the collections in the selected db... show collections //dropping completly a collection... db.acoll.drop() //indexes... db.links.find().explain db.links.ensureIndex({ title: 1}) //in ascending order.. in mainly important in cpompund indexes.. //a reflect of this index can be found in that db indexes collection db.system.indexes.find(); //u cound put an index to a canging value, but every time u change that value the index must be updated. keep in mind. //usually is a good idea to set the indexes at the beginning when no data is present in the collections. However, u could use the following formula to treat duplicates and unique data //keeping only the first one, deleting the others.. db.links.ensureIndex({ title: 1}, { unique: true, dropDups: true}) //when considering the case of some of the documents without the idexed field, to save mongo from storing space for this index if the field itself has not been inserted: db.links.ensureIndex({ title: 1}, {sparse: true}) //its important to think of the compund index as a nested one, an index of an index. Its related to each problem-case. Like in the case of the recepies: indexing first the ingredient and the the recepie, makes more sense than indexing in reverse. Its all related on how u are going to search. db.links.ensureIndex({ title: 1, url: 1}) //this one means that u can search on title; or on title and url... db.links.ensureIndex({ a: 1, b: 1, c: 1}) //searches are possible on a; a, b; a, b, c //deleting indexes db.links.dropIndex("title_1"); //the same way that appears in system.index collection... /*concepts to follow*/ //Sharding and Replica Set... http://www.slideshare.net/Dataversity/common-mongodb-use-cases-13695677 http://docs.mongodb.org/ecosystem/use-cases/product-catalog/ db.collection.update({"grades.grade":80}, { $set: {"grades.$.std": 18}})
vittorioromeo
[HEADER-ONLY] C++14 lambda-based library for quick creation of menus. Supports multiple nested menus (categories). Supports Single/Toggle/Slider menu item types. Useful in game development or console applications-
mr5
The nest console module eases the creation of beautiful and testable command line interfaces for applications base on nestjs framework.
bac0id
A console version of simplified Winform. There are Form, Text, Splitline features with nest-ibility. / 控制台里的简易 Winform
rvaanthony
A powerful .NET console application that flattens JSON configuration files (like appsettings.json) into Azure App Service configuration format. Perfect for converting nested JSON configurations into flat key-value pairs with customizable delimiters.
FahadFarooq40
The Programmings Basics course includes writing program entry lvl (basic coding skills), working with a development environment (IDE), using variables and data, operators and expressions, working with the console, using conditional constructs (if, if-else) and loops for, while, do-while, nesteds
serkansmg
Source generator for strongly-typed localization with nested JSON support and dependency injection (Blazor , Blazor maui hybrid, Console etc..))
Vee-vx
This is a Python console application that simulates airline route finding between countries. It allows users to display all available flight paths between two countries and determine the shortest-duration route. The application is structured with a main menu, nested dictionaries, and clear user interaction.
mdsahidraza174-netizen
This project is a console-based Python program that represents an image using ASCII characters through logical pattern design It uses pure Python concepts like nested loops and conditional statement to map a 2D grid of rows and columns into ASCII symbol helping beginners improve logic building and core programming skills without external libraries.
AaronDrobek
Getting Started To get started you will need to use create-react-app to quickly scaffold a project. You should migrate your components into a components folder in the src directory and the styles into a styles folder in the src directory. Link up all pages to make sure they working and test using npm run start in the console, use Ctrl+c to exit. You will need use npm install --save react-router-dom in the terminal to save React Router 4 to your project dependencies and make it available for import. In your index.js file, you will need to import { BrowserRouter, Route, Switch } from react-router-dom. You should use your knowledge of nested child components from React to create a BaseLayout component that houses a navigation bar and takes children (Hint: {this.props.children} or {props.children}) components and renders on each screen. You should be able to see your navigation bar from every component/page rendered. You should have the following separate components: App.js BaseLayout.js Home.js About.js Portfolio.js You should have at least two or three buttons that are stylized <Link> components in the body of your app. Your navigation bar should be fully functional and allow the users to navigate seamlessly through your app. The back button in the browser should take user's to the previous screen (because of the history API and using <BrowserRouter>). The final project should be a relatively attractive mock portfolio website. The content and styling are up to you. See example down below for a general idea of simple project structure, though your project should be more professional and polished!
mustafaonal
absl-py 0.13.0 argon2-cffi 20.1.0 astunparse 1.6.3 async-generator 1.10 attrs 21.2.0 backcall 0.2.0 bleach 3.3.0 cachetools 4.2.2 certifi 2021.5.30 cffi 1.14.5 chardet 4.0.0 colorama 0.4.4 contextlib2 21.6.0 cycler 0.10.0 Cython 0.29.23 debugpy 1.3.0 decorator 5.0.9 defusedxml 0.7.1 entrypoints 0.3 flatbuffers 1.12 gast 0.4.0 google-auth 1.32.1 google-auth-oauthlib 0.4.4 google-pasta 0.2.0 grpcio 1.34.1 h5py 3.1.0 idna 2.10 ipykernel 6.0.0 ipython 7.25.0 ipython-genutils 0.2.0 ipywidgets 7.6.3 jedi 0.18.0 Jinja2 3.0.1 jsonschema 3.2.0 jupyter 1.0.0 jupyter-client 6.1.12 jupyter-console 6.4.0 jupyter-core 4.7.1 jupyterlab-pygments 0.1.2 jupyterlab-widgets 1.0.0 keras-nightly 2.5.0.dev2021032900 Keras-Preprocessing 1.1.2 kiwisolver 1.3.1 lxml 4.6.3 Markdown 3.3.4 MarkupSafe 2.0.1 matplotlib 3.4.2 matplotlib-inline 0.1.2 mistune 0.8.4 nbclient 0.5.3 nbconvert 6.1.0 nbformat 5.1.3 nest-asyncio 1.5.1 notebook 6.4.0 numpy 1.19.5 oauthlib 3.1.1 object-detection 0.0.3 opencv-python 4.5.2.54 opt-einsum 3.3.0 packaging 20.9 pandocfilters 1.4.3 parso 0.8.2 pickleshare 0.7.5 Pillow 8.3.0 pip 21.1.3 prometheus-client 0.11.0 prompt-toolkit 3.0.19 protobuf 3.17.3 pyasn1 0.4.8 pyasn1-modules 0.2.8 pycparser 2.20 Pygments 2.9.0 pyparsing 2.4.7 PyQt5 5.15.4 PyQt5-Qt5 5.15.2 PyQt5-sip 12.9.0 pyrsistent 0.18.0 python-dateutil 2.8.1 pywin32 301 pywinpty 1.1.3 pyzmq 22.1.0 qtconsole 5.1.1 QtPy 1.9.0 requests 2.25.1 requests-oauthlib 1.3.0 rsa 4.7.2 Send2Trash 1.7.1 setuptools 56.0.0 six 1.15.0 tensorboard 2.5.0 tensorboard-data-server 0.6.1 tensorboard-plugin-wit 1.8.0 tensorflow 2.5.0 tensorflow-estimator 2.5.0 termcolor 1.1.0 terminado 0.10.1 testpath 0.5.0 tornado 6.1 traitlets 5.0.5 typing-extensions 3.7.4.3 urllib3 1.26.6 wcwidth 0.2.5 webencodings 0.5.1 Werkzeug 2.0.1 wget 3.2 wheel 0.36.2 widgetsnbextension 3.5.1 wrapt 1.12.1
DMotta182
No description available
It is a simple console-based application designed to practice arrays, nested loops, and basic data manipulation.
avnomad
A small console application that demonstrates a way to enumerate ordering with repetition with only 2 nested loops.
mehmetkaanselcuk
A Java console application that draws a reverse triangle with * characters using nested loops and user-defined height.
nitinmehra09
A collection of Java pattern printing programs to master nested loops, logic building, and console output from basic to advanced.
rainai-llc
WSL or Nested Linux Environment Installer (Console App) This .NET console application automates the setup of a development environment on Windows. It provisions WSL2 with Ubuntu, installs essential developer tools, and configures dependencies for ARACHN3T..
PraveenM190106
"A Java program that generates and displays various user-defined patterns using loops, helping understand nested loops, logic flow, and visual output formatting in console applications."
mehmetkaanselcuk
A beginner-level Java console application that checks all numbers from 1 to 100 and prints the prime numbers among them using simple logic with nested for loops.