text:
Q: JSONSchema - required properties not working I'm new to JSON and I wouldn't be surprised if I missed something really simple, however I tried and failed to find what exactly I am doing wrong in my schema and why its validating some things incorrectly.
This is my schema:
apartment_schema = {
    "type": "object",
    "properties": {
        "Apartments": {"type": "object"},
        "properties": {"ap1": {"type": "object",
                                 "required": ["count", "ages"],
                                 "properties": {"count": {"type": "number"},
                                                "ages": {"type": "array", "items": {"type": "number"}}},
                                 "additionalProperties": False,
                                 },
                       "ap2": {"type": "object",
                                "required": ["count", "ages"],
                                "properties": {"count": {"type": "number"},
                                               "ages": {"type": "array", "items": {"type": "number"}}},
                                "additionalProperties": False,
                                },
                       "ap3": {"type": "object",
                                     "required": ["count", "ages"],
                                     "properties": {"count": {"type": "number"},
                                                    "ages": {"type": "array", "items": {"type": "number"}}},
                                     "additionalProperties": False,
                                     },
                       },
        "required": ["ap1", "ap2", "ap3"],
        "additionalProperties": False,
            },
    "additionalProperties": False,
    "required": ["Apartments"]
}

I am trying to validate a string by using json.loads and then the validate function against this schema, but when i try this, I get this message:
jsonschema.exceptions.SchemaError: ['ap1', 'ap2', 'ap3'] is not of type 'object', 'boolean'

Here is my how I try to validate it, and against what:
def validateJson(jsonData):
    try:
        jsonschema.validate(instance=jsonData, schema=apartment_schema)
    except jsonschema.exceptions.ValidationError:
        return False
    return True
print(validateJson(json.loads("{\"Apartments\": {\"ap1\": {\"count\": 1, \"ages\": [40]},\"ap3\": {\"ages\": [10,15]}}}"))

This validation passes and I don't get the error message if I just remove only the one required part out of the schema, even though it shouldn't pass, since it is missing one of the required parameters (count). When I put in different strings it aslo seems that none of the other "required" fields seem to be working even though they don't raise an error.
What am I doing incorrectly here?

A: You have an extra properties keyword right below the "Apartments" properties declaration that shouldn't be there -- so everything below that is being parsed at the wrong level. I think you are intending that the properties "ap1", "ap2" and "ap3" should be at the same level in the data as "Apartments"?


text:
Q: Test Learner widget's evaluation results don't update (Orange GUI) I am using the Rank widget to pick attributes which feed into a few classifiers and in turn feed into a test learner so I can check the performance by looking at the evaluation results.  (As per the attached screenshot)
Everything works except that the eval results don't update.  The data path is fine, for example my prediction vs actual scatter plots update and the "i'm reevaluation" spinners happen... but no new numbers.
I on mac using a recent download (2.7.8.dev-2576588) but the same is true (or at least sporadically true from my limited testing) on windows using the older version (2.7.8.dev-a6ac40a).
Is this affecting others?  I can't find any discussion about it which makes me think that I must be doing something wrong or using Orange incorrectly.

A: You should be feeding the data from 'Rank' widget directly to the 'Test Learners' widget. The 'Data' input to the learners widget only affect it's 'Classifier' output (unfortunately however it does trigger an update downstream).

redpajama_set_name: RedPajamaStackExchange


text:
Q: Route traffic on a specific port of an IPv4 server to an IPv6 target The situation is that I have an IPv6 server which should also be available from the IPv4 net. As getting an IPv4 onto this server is out of the question I need to route the traffic through a second server which acts as a router.
The following situation is present:

Assuming that one wants to access an IPv6 server from an IPv4 network (for example most mobile ones) one is out of luck. There is no easy way to do that. However, I have the idea to use an intermediate server which exists on both networks and can route the traffic correctly:

I'm already in possession of such a server but I'm a little bit out of my depth when it comes to configuring the routing. The intermediate server is only possessing one network device which holds both, the IPv4 and the IPv6 address. I have full root access to the machine and no limitations.
How can I route the traffic (any traffic, really) on a specific port to the IPv6 device as transparently as possible?


text:
Q: Best approach to handle API versioning in rails We have a big project with many models. We have a web app as well as mobile apps we have to change our mobile apps versions. There are a lot of business logic changes but we do not want to effect our previous version and as well as add new business logic what is best approach so that our web and mobile apps with all version work smoothly the challenge we are facing is to handle business logic written in models.

A: You can use versionist it is pretty helpful
You can refer these links
1) https://github.com/bploetz/versionist
2) http://railscasts.com/episodes/350-rest-api-versioning
3) https://www.bignerdranch.com/blog/adding-versions-rails-api/


text:
Q: Change multiple files content type programatically using CSOM for SharePoint Online I am attempting to change all the files in a library from one content type to another. This is in SharePoint Online so I'm using the CSOM. I am new to this so I'm stuck at where to go from what I have below.
I think my biggest issue is getting the values of the content types. That and I'm so used to SP On Premise I'm having trouble grasping this CSOM stuff. Much thanks to anyone that can help point me in the right direction!
#Load necessary module to connect to SPOService
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | Out-Null

#Login Information for script
$User = "user"
$Pass = "password"
$WebUrl = "SiteURL"

#Connect to SharePoint Online service
Write-Host "Logging into SharePoint online service." -ForegroundColor Green
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($WebUrl)
$Context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User, (ConvertTo-SecureString $Pass -AsPlainText -Force))

#Get the Necessary List
Write-Host "Getting the required list." -ForegroundColor Green
$List = $Context.Web.Lists.GetByTitle("TestLibrary")

Write-Host "Getting the Content Types." -ForegroundColor Green
$oldCT = $list.ContentTypes("OldCTName")
$newCT = $list.ContentTypes("NewCTName")
$newCTID = $newCT.ID

$Query = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery(1000);
$Items = $List.GetItems($Query);

$Context.Load($Items);
$Context.ExecuteQuery();

#Check if the values specified for the content types actually exist on the list
    if (($oldCT -ne $null) -and ($newCT -ne $null))
    {
        #Go through each item in the list
        #Edit existing list items
    foreach($item in $Items)
    {
            #Check if the item content type currently equals the old content type specified
            if ($_.ContentType.Name -eq $oldCT.Name)
            {
                #Check the check out status of the file
                if ($_.File.CheckOutType -eq "None")
                {
                    #Change the content type association for the item
                    $_.File.CheckOut()
                    write-host "Resetting content type for file" $_.Name "from" $oldCT.Name "to" $newCT.Name
                    $_["ContentTypeId"] = $newCTID
                    $_.Update()
                    $_.File.CheckIn("Content type changed to " + $newCT.Name, 1)
                }
                else
                {
                    write-host "File" $_.Name "is checked out to" $_.File.CheckedOutByUser.ToString() "and cannot be modified"
                }
            }
            else
            {
                write-host "File" $_.Name "is associated with the content type" $_.ContentType.Name "and shall not be modified"
            }
        }
    }
    else
    {
        write-host "One of the content types specified has not been attached to the list"$list.Title
    }
        $Context.ExecuteQuery();
}


text:
Q: Infinite loop using 'while' and 'continue' List song contains the lines of "Baby Shark". Output the lyrics of song line by line inside the loop, but skip the lines do do, do do do do.
song = ['Baby shark', 'do do, do do do do',
  'Baby shark', 'do do, do do do do',
  'Baby shark', 'do do, do do do do',
  'Baby shark',
  'Mama shark', 'do do, do do do do',
  'Mama shark', 'do do, do do do do',
  'Mama shark', 'do do, do do do do',
  'Mama shark']

    songs = ''
    i = 0
    while i < len(song):
      if song[i] in ('d',',', 'o')
        i += 1
        continue
      songs += song[i]
      i+= 1
    print(songs)

This is the loop I wrote, but it's throwing a syntax error for my "if song[i] in ('d', ',','o') line of code.
I know the content is silly but this was one of the questions and I am really struggling with loops.

A: your if statement was
if song[i] in ('d', ',', 'o'):
here you check if all the song is one of these letters.
Ex:
checking if 'Baby shark' is one of these ('d', ',', 'o')

So I changed the if statement a little to do something similar
if 'do do' in song[i]:
it checks if the sub-string 'do do' is in the song string
Ex:
checking if 'do do' is in 'do do, do do do do'
song = [
    'Baby shark',
    'do do, do do do do',
    'Baby shark',
    'do do, do do do do',
    'Baby shark',
    'do do, do do do do',
    'Baby shark',
    'Mama shark',
    'do do, do do do do',
    'Mama shark',
    'do do, do do do do',
    'Mama shark',
    'do do, do do do do',
    'Mama shark'
]

# removed indentation
songs = ''

i = 0

while i < len(song):
    # edited the if statement and added the ":"
    if 'do do' in song[i]:
        i += 1
        continue
    songs += song[i]
    i+= 1
print(songs)


text:
Q: Is there a file will all the loading screen tips for Dota2 Is there a file in our Dota folder where I can see all the loading screen tips?
I found some lists on the Dota2 dev forums (http://dev.dota2.com/showthread.php?t=140180), but I am not sure how old they are.

A: The file you're looking for is dota_english.txt or a variant for your language. It's located in:
\Program Files\Steam\SteamApps\common\dota 2 beta\dota\resource

Or your operating system / setup equivalent.
It's a rather big file, look for the term "LOADSCREEN" to find introduction tips. Glancing over those sections it seems there are around 170 tips currently, divided in "beginner", "intermediate" and "advanced" sections. The current list of tips on my PC includes:

// INTRODUCTORY LOADSCREEN TIPS       (0 to 25 games played)
  - Try to fight creeps and enemy Heroes within the attack range of your team's Towers.
  - Be careful when crossing the river into enemy territory.
  - Remember to purchase items to restore your health and mana at the start of the game.
  - Purchase and use Town Portal Scrolls to move around the map quickly.
  - There are "Side Shops" at the extreme east and west sides of the battlefield, where several useful items can be purchased.
  - Some items can only be purchased at a "Secret Shop".
  - For most heroes, the "Ultimate" ability can be learned at level 6, and strengthened at levels 11 and 16.
  - Striking the last hit on a creep or hero will earn you additional gold.
  - Make sure your team has a Courier to bring items to them while they are in the lanes.
  - Items purchased while you are away from a shop will be placed in your Stash to be retrieved later, or delivered by your team's courier.
  - If needed, Color Blind Mode can be enabled in the settings menu.
// UNIVERSAL LOADSCREEN TIPS      (25+ games played)
  - Announcers and HUD Skins are shared between all players in a match. You can choose among them by pressing the Shared Content button on the left side of the Top Bar.
  - Remain calm. Remember: it's only a game.
  - You can mute rude players by going to the Scoreboard, accessed using the buttons on the left side of the Top Bar.
  - After you have chosen a hero, you can click on the minimap in the lower left to inform your teammates where you intend to go when the game begins.
  - Enjoyed playing with someone? Commend them by clicking on their name in the Scoreboard, accessed using the buttons on the left side of the Top Bar.
  - You can hold Alt and click on an ability to inform your teammates of that ability's current cooldown status.
  - You can inform your teammates that an enemy Hero is missing by holding Alt and clicking on that Hero's portrait in the Top Bar.
  - Always be polite, especially to your teammates. People are less likely to listen to those who are rude."
  - Players who abandon a match will be penalized."
  - Anyone can buy wards, and anyone can buy or upgrade the courier. If your team needs something, don't be afraid to buy it.
  - Be nice to new players. Everyone has to start somewhere.
  - Good luck. Have fun.
  - Hero choices matter. Many heroes are strong counters to other heroes, and many hero pairings are far more powerful and useful than any hero is alone.
  - Holding Shift allows you to issue actions to be performed in a sequence.
  - Make your voice heard! Visit the Dota 2 Workshop and vote for the items you'd like to see sold on the Dota 2 store.
  - Many Global Items can be set to Shuffle, causing a different random item to be chosen for that slot after every match.
  - Positive reinforcement can go a long way toward victory.
  - Prefer to see icons of Heroes' faces instead of color-coded symbols on the minimap? You can change this in the settings menu.
  - Remember to stand up and stretch between matches.
  - Remember: everyone has bad games. Everyone makes mistakes.
  - Want the minimap to appear on the other side of the screen? You can change it in the settings menu.
  - You can adjust how often hero voices are heard in the settings menu.
  - You can download your match replays from the Career Profile menu. A good way to improve is by analyzing your plays from a new perspective!
  - You can hold Alt and click on an ability or item to inform your teammates if it is ready, on cooldown, or if you do not have enough mana to use it.
  - You can still use items while silenced.
  - Accidentally canceled your Town Portal Scroll? The settings menu has an option to make a Stop command required in order to cancel a Teleport.
  - Holding Alt and clicking on an item in an enemy hero's inventory will alert your team that the enemy has that item.
  - Holding Alt and clicking on your Buyback button, or on your gold, will alert your team of your Buyback status.
  - In All Pick, players who have not chosen a Hero before the timer expires will begin to lose their starting gold.
  - Dota 2 is always evolving. New features are added, new Heroes are introduced, and existing Heroes and mechanics may see adjustments. Be sure to keep up with the latest changes at the Dota 2 blog!
  - Be careful not to make more enemies than the five you are already facing.
  - If needed, Color Blind Mode can be enabled in the settings menu.
  - Holding Alt and clicking on an enemy Hero's health and mana bars, or your own, will inform your team of that Hero's current health and mana.
  - You can inform your team of active buffs or debuffs on your Hero by holding Alt and clicking on their icons.
  - If you hold Alt and click on the Glyph of Fortification, you will inform your team of its current status. To tell your team not to use the Glyph, hold both Control and Alt while clicking on the Glyph.
  - Holding Alt and clicking on your respawn timer will announce your current respawn time to your team.
  - Use the Chat Wheel to quickly send pre-selected messages to your teammates. Different phrases for the Chat Wheel can be assigned in the settings menu.
  - Chat Wheel messages are translated to appear in whichever language the receiving player is using.
  - Assign ability keys to Quickcast to use skills at the location of your mouse cursor with a single key press.
  - You can set your Dota 2 and Steam profiles to be hidden from other players in the settings menu.
  - You can expose your public match data to be gathered by third parties in the settings menu.
  - From the settings menu you can set items and abilities to automatically cast on your Hero using a double-click on the ability icon, or with a double-tap of its assigned key.
  - Never give up! Killing an enemy Hero is worth more gold and experience if your team is less powerful than your opponents.
  - It is everyone's responsibility to try to make the Dota community a friendly and inviting place to compete.
  - Want to see how the pros play Dota? Check out the many Dota 2 tournaments taking place around the world, available on the Dota Store. You might learn a few new tricks for your favorite hero.
// BEGINNER LOADSCREEN TIPS       (25 - 150 games played)
  - If you notice an enemy Hero missing from your lane, tell your teammates by saying "Missing Top/Middle/Bottom". You may save a teammate's life!
  - You can level up your abilities by holding Control and pressing that ability's shortcut key.
  - Use Wards to reveal parts of the map and increase your awareness of the enemy team's movements.
  - Be sure your team has a courier to deliver your items from the shop so that you can stay in the lanes gaining experience and gold.
  - Sentry Wards reveal nearby invisible units as well as enemy Wards."
  - Roshan is much easier to kill if you reduce his Armor.
  - Shift-clicking on shop items will add them to the Quickbuy.
  - Scoring the last hit on a tower will earn you more gold for its destruction.
  - The "Safe Lane" is the longest lane on your team's side of the river. For the Dire, this is the top lane. For the Radiant, it is the bottom lane.
  - The "Hard Lane" is the shortest lane on your team's side of the river. For the Dire, this is the bottom lane. For the Radiant, it is the top lane.
  - Typically, a team only needs one courier.
  - The movement speed bonus for having boots does not stack. No matter how many legs your chosen Hero has, you only need a single set of boots.
  - You can view an enemy Hero's inventory and abilities by selecting them.
  - It is often a good idea to carry a Town Portal Scroll.
  - There are many secret paths hidden in the trees, which are often called "juke spots". Use these to escape attacks, or to set up ambushes.
  - Use Dust of Appearance to reveal nearby invisible enemies.
  - Two Runes will appear on the river every two minutes, one north of the middle lane and the other to the south. One of them will always be a Bounty Rune.
  - If you have a Bottle, touching a Rune will store it for later use. Storing a Rune will also refill the Bottle.
  - You can select from many player-created Builds for your Hero by using the Build Guide button on the left side of the Top Bar.
  - Check your minimap often. You may discover that you are about to be ambushed.
  - Often the best way to learn a Hero's weaknesses is to play them yourself."
  - Destroying the enemy's barracks will strengthen your team's creeps in that lane.
  - Towers can see and attack invisible units.
  - Be aware of your position when attacking creeps. You may wind up pushing your team's creeps, and yourself, into a dangerous location.
  - The Side Shops sell many useful items, including Town Portal Scrolls and the components for many types of boots.
  - Several cliff tops feature sigils which mark good locations to place Observer Wards."
  - Being near your team's fountain will rapidly restore your health and mana.
  - Strength increases maximum Health. Agility increases Attack Speed. Intelligence increases maximum Mana."
  - The Secret Shop is not actually a secret."
  - A "Carry" is a hero that gains power slowly, becoming strong late in the game. A "Support" hero is often most powerful early in the game, and later enhances their team's effectiveness."
  - As long as your Hero is near a kill when it occurs, you will gain experience."
  - You can temporarily fortify your structures, preventing all damage to them, by using the Glyph of Fortification. Use it wisely, as it has a very long cooldown."
  - Using Town Portal Scrolls allows you to teleport to any allied structure. Using Boots of Travel allows you to teleport to any allied unit."
  - If your Courier is killed, it will return, along with any items it was carrying, after 140 seconds."
  - When using a Tango, the regeneration is always the same regardless of the size of the tree you consume."
  - There are many websites and videos which can provide you with knowledge about overall tactics, team construction, and strategies for your favorite heroes."
      - You can give a teammate one of your Tangos by using them on that teammate.
  - You can use Healing Salves on your teammates to restore their health. Share the love!"
  - Each player automatically earns 1 gold every 0.6 seconds, or 100 gold every minute.
  - Town Portal Scrolls can be given to teammates.
  - Observer and Sentry Wards cannot be placed inside Roshan's pit.
  - Unclaimed Runes will be replaced every two minutes.
  - Earning gold by killing creeps is often called "Farming".
// INTERMEDIATE LOADSCREEN TIPS       (75+ games played)
  - After Roshan has been killed, he will respawn at a random time between 8 and 11 minutes.
  - Neutral creeps spawn at the 30 second mark, and then at every minute mark thereafter.
  - Shift-clicking actions or abilities allows you to queue them.
  - Some spells can be dodged by using a Blink Dagger or by becoming invisible.
  - Attacking from an uphill position gives you an advantage as an enemy may miss their attacks or lose you in the fog of war.
  - Using a Pipe of Insight will allow you to negate spell damage from enemy Heroes.
  - Assault Cuirass can be used to boost the Armor of nearby teammates.
  - When a tower is attacking you, attack-clicking on an allied creep will reset the tower's target.
  - Placing a Ward or unit near a neutral creep camp can prevent the creatures in that camp from respawning at the minute mark.
  - Monkey King Bar will grant you True Strike, which prevents enemy Heroes from evading your attacks, even when attacking uphill. True Strike does not work on enemy structures.
  - Double-clicking your Blink Dagger will cause you to automatically blink toward your team's fountain.
  - You can attack allied creeps that are near death. Use this to deny your enemy the gold gained from last hits.
  - Magic damage can be reduced by items that grant Magical Damage Resistance.
  - Physical damage can be reduced by items that grant Armor.
  - Pure damage is not reduced by Armor or by Magical Damage Resistance.
  - Changing the primary stat on Power Treads can break invisibility, as well as interrupt channeled spells such as using a Town Portal Scroll.
  - Pulling all neutral creeps out of a camp near the minute mark will allow that camp to respawn. Use this to maximize the number of creeps you kill.
  - Holding Control allows you to use your Bottle regeneration on an allied Hero. Bottled Runes, however, cannot be shared.
  - Stuck in your base? You can still make purchases from the Secret Shop by sending your Courier there. Just be careful not to send it into the enemy forces!
  - When no enemy creeps are near, Towers and Barracks have Backdoor Protection, which lessens the damage they take and allows them to restore their health."
  - Quelling Blade only does its bonus damage to enemy creeps."
  - The Damage Blocked values on a Stout Shield, Poor Man's Shield, and Vanguard refer to the type of Hero carrying the shield, not the type of attacker."
  - Dagon, Necronomicon, and Diffusal Blade can be upgraded by purchasing their recipes again.
  - You can give a teammate a single ward by holding Control, clicking on the ward in your inventory, then clicking on your teammate.
  - Blink Dagger and Force Staff can be used to climb up and down cliff sides.
  - Use a Quelling Blade to cut down trees and carve your own path through the forests."
  - Illusions and creeps will not dispel Smoke of Deceit, only Heroes will.
  - You can disable auto-attacking in the options menu.
  - Holding Alt will display additional information in the descriptions of several abilities and items."
  - Barracks cannot reveal invisible units or wards.
  - Buyback has a 7 minute cooldown.
  - Each hero has a primary attribute of Strength, Agility, or Intelligence. Every point in your hero's primary attribute increases their attack damage by 1.
  - From his third death onward, Roshan will drop Cheese in addition to the Aegis of the Immortal. Using Cheese instantly refills that hero's health by 2500 and mana by 1000.
  - Hero illusions are instantly destroyed if they attack Roshan.
  - Remember to check your allies' inventories before purchasing an item for its aura effect. A teammate may already have that item, and most auras do not stack.
  - Stun durations from different skills do not stack. You can keep an enemy stunned for longer with careful timing of your team's skills.
  - Teleports from Town Portal Scrolls and Boots of Travel are not cancelled by silences or knockbacks.
  - The closer a Tower is to its team's Ancient, the more gold its destruction will yield.
  - Using a Soul Ring will grant you extra mana even if your mana is already full.
  - You can destroy allied Towers when they are below 10% health. Denying a Tower drastically reduces how much gold the enemy receives for its destruction.
  - You can use a Quelling Blade to damage enemy observer and sentry wards.
  - Always be nice to those who buy Wards and Couriers.
  - Physical Damage, dealt by all regular attacks, some hero abilities, and some items, can be reduced with Armor or blocked by becoming Ethereal.
  - Magical Damage, dealt by most hero abilities and items, can be reduced with Magical Damage Resistance or blocked by Spell Immunity.
  - Activating Manta Style will move you from your original position when the illusions appear. Use this to confuse enemies!
  - Denied creeps grant 50% of their normal experience.
  - Use the Flying Courier's Speed Boost wisely. It has a very long cooldown.
  - Ranged heroes and units have a 25% chance to miss when attacking uphill.
  - Roshan becomes stronger every 4 minutes, gaining additional health, damage, and armor.
  - The Bounty Runes that spawn at the start of the match provide double their usual gold and experience.
  - Some abilities cannot be blocked by spell immunity. Each ability's interaction with spell immunity is shown in its description.
  - Consider saving gold for Buyback. A well-timed Buyback can turn a desperate defense into a swift turnaround.
  - Illusions deal 25% less damage to enemy structures.
// ADVANCED LOADSCREEN TIPS       (150+ games played)
  - Reliable Gold is earned from killing Heroes, Roshan, and Couriers, from the destruction of enemy Towers, or from using Hand of Midas. All other earnings are Unreliable Gold, which can be lost upon death.
  - You can pull the creatures in the neutral creep camp that is nearest to your team's Safe Lane into your lane creeps.
  - Several items can be broken down into the component parts by right-clicking them in your inventory and choosing "Disassemble". Re-use those components to create new items.
  - Use Control Groups to issue orders to different sets of units under your control. To set a Control Group, select a unit or units, hold Control, and press a number. To select that Control Group, press that number."
  - If you are about to die, use your "Purchase Quickbuy" keybinding to spend your gold before it disappears!
  - Swapping the primary attribute on Power Treads to Intelligence can give you a little extra mana.
  - If you have an Armlet of Mordiggian, you can turn on Unholy Strength to temporarily raise your health by 475.  Disabling Unholy Strength will remove the added health, down to a minimum of 1 health.
  - Activating Manta Style removes several buffs and debuffs, and will cause projectiles that are already in flight to miss.
  - After using Buyback, 25% of a hero's remaining respawn time at the time of Buyback is added to their next death.
  - Cheese can be sold for 500 gold.
  - If you are within range of several auras with the same effect, only the most powerful aura will be active.
  - If you know you are about to die, consider entering a neutral creep camp, or going to Roshan, and letting them kill you instead. This will deny the enemy team the gold and experience earned from your death.
  - Melee Barracks regenerate 5 hit points per second. Ranged Barracks do not regenerate.
  - One point of Agility increases hero attack speed by 1, as well as 0.14 armor.
  - One point of Intelligence adds 13 maximum mana, as well as 0.04 mana regeneration per second.
  - One point of Strength adds 19 maximum health, as well as 0.03 health regeneration per second.
  - Shadow Blade can still be activated while channeling a Town Portal Scroll.
  - Switching Power Treads to Agility while healing allows your health and mana to restore slightly faster. Just don't forget to switch them back!
  - The Aegis of the Immortal can be denied.
  - Though illusions are not affected by auras, they will still grant shared auras from their original hero to nearby units.
  - You do not need to destroy the enemy team's barracks to damage the towers near their Ancient. Destroying barracks is optional.
  - Warriors summoned by using a Level 3 Necronomicon have True Sight.
  - The effects of Dust of Appearance can be purged.
  - Runes can be attacked and denied."


text:
Q: How can I prevent Angular2 from wrapping a component in a DOM element? I would like to manipulate an <SVG> element within an Angular2 project.  I would like to create various svg elements within the main <SVG> tag at runtime.  I have read the tutorial on dynamic component creation on angular.io (https://angular.io/docs/ts/latest/cookbook/dynamic-component-loader.html), and I have it basically working.  But it seems like Angular wraps each component in its own DOM element, named after either the component's selector, or a simple DIV with a class/id named after the selector.  So when I insert an element, I get output that looks like the following:
<svg id="logo" style="border: 3px solid black" viewBox="0 0 600 400" width="600" height="400">
    <svgcirclecomponent>
        <circle r="100" cx="10" cy="10"></circle>
    </svgcirclecomponent>
</svg>

What I would LIKE to have is the following:
<svg id="logo" style="border: 3px solid black" viewBox="0 0 600 400" width="600" height="400">
    <circle r="100" cx="10" cy="10"></circle>
</svg>

However I cannot simply hard-code the <circle> in the parent SVG component, since I need to create and manipulate multiple types of inner components.  Is this possible in Angular2?
Here is my code.  If I've left something out let me know and I'll add it.
svg.component.ts
import { Component, Input, Output, ViewEncapsulation, ViewChild, ComponentFactoryResolver } from '@angular/core';
import {MdButton} from '@angular/material';
import {SvgChildItem} from './svgChildComponents/svgChildItem';
import {SvgChildDirective} from './svgChildComponents/svgChild.directive';
import {SvgChildComponent} from './svgChildComponents/svgChild.component';
import {SvgCircleComponent} from './svgChildComponents/svgCircle.component';

@Component({
  selector: 'svgCanvasComponent',
  template: `
    <button md-button (click)="addNewComponent()">Add Circly</button><br />
    <svg width="800" height="800" viewBox="0 0 800 800">
        <template svg-child-host></template>
    </svg>
  `
})
export class SvgCanvasComponent  {
    @ViewChild(SvgChildDirective) svgChildHost: SvgChildDirective;

    constructor(private _componentFactoryResolver: ComponentFactoryResolver) {}

    addNewComponent() {
        console.log('adding circly');
        let svgChildItem = new SvgChildItem(SvgCircleComponent, {"x":10, "y":20});
        let cmpFact = this._componentFactoryResolver.resolveComponentFactory(svgChildItem.component);
        let viewContainerRef = this.svgChildHost.viewContainerRef;
        let componentRef = viewContainerRef.createComponent(cmpFact);
        (<SvgChildComponent>componentRef.instance).data = svgChildItem.data;
    }
}

SvgCircle.component.ts
import {Component, Input, ViewEncapsulation} from '@angular/core';
import {NnpUtilModule} from '../../nnpUtil.module';

import {SvgChildComponent} from './svgChild.component';

@Component({
    selector: "svgCircleComponent"
    ,template: `
        <svg:circle [attr.cx]="x" [attr.cy]="y" r="100">
    `
    ,encapsulation: ViewEncapsulation.None
})
export class SvgCircleComponent implements SvgChildComponent {
    @Input() x: number;
    @Input() y: number;

    @Input() data: any;  //  from SvgChildComponent interface

    constructor() {
        //[this.x, this.y] = [Math.random(), Math.random()];
        [this.x, this.y] = [10, 10];
        //console.log(NnpUtilModule.getFive());  //  TODO: load this from a service so everyone can share the util?
        console.log('constructing SvgCircleComponent');
    }
}

SvgChild.component.ts
export interface SvgChildComponent {
    //  common interface to standardize the api for passing data to the SVG components
    data: any;
}

SvgChildItem.ts
import {Type} from '@angular/core';

export class SvgChildItem {
    constructor(public component: Type<any>, public data: any) {}
}

svgChild.directive.ts
import { Directive, ViewContainerRef } from '@angular/core';

@Directive({
  selector: '[svg-child-host]',
})
export class SvgChildDirective {
  constructor(public viewContainerRef: ViewContainerRef) { }
}


text:
Q: Eclipse rename not working completely Ok I'm completely googled-out.
I have a few java projects in my eclipse workspace (about 25).    Most projects use linked source folders.
When I rename a class in Project1, the references to that class in the other projects are not updated.  The references within the project are updated just fine.   The net result is compilation errors on the next automatic recompile.
I'm using Eclipse 3.5.1, but the same behavior was shown by 3.4.0 and 3.4.2
Any ideas about how to fix this?
My current plan - after googling for 20 minutes - is to write a script to convert the linked source folders to be OS links (I'm on linux) in the project folders themselves.   So then I'm no longer using linked source folders.

A: Like Philippe Faes said, it works fine if your projects are set as a dependency on each other. Make sure that your project's build path are set up that way.
IMHO linked folders are for external files, not for another projects.
Another problem is that if you are just referencing a jar as a dependency (ie, on the project's class path), eclipse will not be able to know that the jar was build based on another project's source thus will not refactor properly.
Try to ask your colleagues for the eclipse project files (.project and .classpath) and edit the files if you need, then check if your refactor still doesn't work. I am guessing that your project is set up differently than your colleagues.

A: Cross-project renames work just fine if your projects depend on each other.
What exactly do you mean with linked source folders: do you link to the same source folder more than once?

A: This is a shot in the dark, but make sure that your project is a Java project.  I am not sure if other project types (like the generic Project) might not refactor properly.  I have never seen this problem before and it has always worked as expected for me...


text:
Q: Microsoft TPL Dataflow - processing correlating requests synchronously I apologize in advance for the title but it's the best I could think of to describe the action.
The requirement is processing requests of a message bus.
Requests coming in maybe related to an id which correlates or groups these requests.
The behavior I want is that for a stream of requests to process correlating ids synchronously.
However different ids can be processed asynchronously.
I am using a concurrentdictionary to track the request being processed and the predicate in the linkto.
This is suppose to provide the synchronous processing of related requests.
However the behavior I get is that the first request gets processed and the second request gets dropped.
I have attached the sample code from a console application to simulate the issue.
Any direction or feedback will be appreciated.
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var requestTracker = new ConcurrentDictionary<string, string>();

            var bufferBlock = new BufferBlock<Request>();

            var actionBlock = new ActionBlock<Request>(x =>
            {
                Console.WriteLine("processing item {0}",x.Name);
                Thread.Sleep(5000);
                string itemOut = null;
                requestTracker.TryRemove(x.Id, out itemOut);
            });

            bufferBlock.LinkTo(actionBlock, x => requestTracker.TryAdd(x.Id,x.Name));

            var publisher = Task.Run(() =>
            {
                var request = new Request("item_1", "first item");
                bufferBlock.SendAsync(request);

                var request_1 = new Request("item_1", "second item");
                bufferBlock.SendAsync(request_1);

            });

            publisher.Wait();
            Console.ReadLine();
        }
    }

    public class Request
    {
        public Request(string id, string name)
        {
            this.Id = id;
            this.Name = name;
        }
        public string Id { get; set; }
        public string Name { get; set; }
    }
}

A: *

*You say you want to process some requests in parallel (at least I assume that's what you meant by "asynchronously"), but ActionBlock is not parallel by default. To change that, set MaxDegreeOfParallelism.

*You're trying to use TryAdd() as the filter, but that won't work for two reasons:

*

*The filter is invoked only once, it's not automatically retried or anything like that. That means that if an item doesn't go through, it would never go through, even after the item that was blocking it was completed.

*If an item is stuck in the output queue of a block, no other items are going to get out of that block. This could significantly reduce the level of parallelism, even if you somehow worked around the previous issue.

*I think the simplest solution here would be to have a block for each group, that way, items from each group will be processed sequentially, but items from different groups will be processed in parallel. In code, it could look something like:
var processingBlocks = new Dictionary<string, ActionBlock<Request>>();

var splitterBlock = new ActionBlock<Request>(request =>
{
    ActionBlock<Request> processingBlock;

    if (!processingBlocks.TryGetValue(request.Id, out processingBlock))
    {
        processingBlock = processingBlocks[request.Id] =
            new ActionBlock<Request>(r => /* process the request here */);
    }

    processingBlock.Post(request);
});

The issue with this approach is that the processing blocks for groups never go away. If you can't afford that (it's a memory leak), because you're going to have a large amount of groups, then the hashing approach suggested by I3arnon is the way to go.

A: I believe this is because your LinkTo() is not set up properly.  By having a LinkTo() and passing a function as an argument you are adding in a condition.  So this line:
bufferBlock.LinkTo(actionBlock, x => requestTracker.TryAdd(x.Id, x.Name));

Is essentially saying, pass data from the bufferBlock to the actionBlock IF you are able to add to your concurrent dictionary, which doesn't necessarily make sense (at least in your sample code)
Instead, you should link your bufferBlock to the actionblock without the lambda, since you don't need conditional linking in this situation (at least I don't think so based on your sample code).
Also, take a look at this SO question to see if you should be using SendAsync() or Post() since Post() can be easier to handle for simply adding data into the pipeline: TPL Dataflow, whats the functional difference between Post() and SendAsync()? . SendAsync will return a task, while Post will return true/false based on success entering the pipeline.
So to essentially find out what's going wrong you need to handle the continuations of your blocks.  There is a nice tutorial over at MSDN in their TPL Dataflow introduction over here: Create a DataFlow Pipeline  It would essentially look like this:
//link to section
bufferBlock.LinkTo(actionBlock);
//continuations
bufferBlock.Completion.ContinueWith(t =>
{
     if(t.IsFaulted)  ((IDataFlowBlock).actionBlock).Fault(t.Exception); //send the exception down the pipeline
     else actionBlock.Complete(); //tell the next block that we're done with the bufferblock
 });

You can then catch the exception (AggregateException) when waiting for the pipeline. Do you really need to use the concurrentdictionary in your actual code for the tracking, because that could be causing the issue when it fails to add, since when the linkto predicate returns false, it does not pass the data into the next block of the pipeline.


text:
Q: How to use Linq to check if string property contains any of string in a list collection I have string with comma separated list of emails
var emails="a@gmail.com,b@gmail.com,c@gmail.com,d@gmail.com,e@gmail.com,";
var list=new List<string>();
list.Add("c@gmail.com");
list.Add("d@gmail.com");

how can I write ling query to find out if string(email) has any email address matching to
collection(list).
I am using EF and emails string is property in a class and list is independent collection.

A: This solution uses linq. Because your email addresses are comma separated (and ends in a comma) we can check if Any() of the items in the list are contained by the emails string.  I used ToLower() to make it case insensitive (which email addresses typically are).
var hasMatch = list.Any(item => ","+emails.ToLower().Contains(","+item.ToLower()+","));

A: emails.Split(',').Any(e=>list.Contains(e));

alternatively:
emails.Split(',').Intersect(list).Any();

If you are using it to find database records, then you can do this:
db.MyTable.Where(l=>list.Any(e=>l.emails.StartsWith(e+",")) ||
list.Any(e=>l.emails.EndsWith(","+e)) ||
list.Any(e=>l.emails.Contains(","+e+",")) ||
list.Any(e=>l.emails==e)
)

or you can simplify it with:
db.MyTable.Where(l=>list.Any(e=>(","+l.emails+",").Contains(","+e+",")))

The 3rd option may perform better if you are looking for the first record as it might use any index you have on emails to quickly locate the record, but it will generate some really big SQL statements if the list is big (Current implementations of SQL LINQ provider unfortunately translates this to a CHARINDEX function instead of LIKE 'email%', but that could change).
The 4th option will generate simpler SQL, and will likely perform better if want to find all the records that match instead of just the first one.

A: You can do it following way
emails.Split(',').Any (y => list.Contains (y));

A: var emailsList = emails.Split(',');
list.Any( x => emailsList.Contains(x));

Antoher approach
  HashSet<String> emailSet = New HashSet<String>(temp.Split(","));
  list.Any(s => emailSet.Contains(s, StringComparer.Ordinal));

Use HashSet - Contains works faster (if emails string can be big) and remove duplicates
And comparing stringg in case-sensitive without creating new strings by ToLower()


text:
Q: Cross Correlation: Android AudioRecord create sample data for TDoA On one side with my Android smartphone I'm recording an audio stream using AudioRecord.read(). For the recording I'm using the following specs

*

*SampleRate: 44100 Hz

*MonoChannel

*PCM-16Bit

*size of the array I use for AudioRecord.read(): 100 (short array)

*

*using this small size allows me to read every 0.5ms (mean value), so I can use this timestamp later for the multilateration (at least I think so :-) ). Maybe this will be obsolete if I can use cross correlation to determine the TDoA ?!? (see below)

On the other side I have three speaker emitting different sounds using the WebAudio API and the the following specs

*

*freq1: 17500 Hz

*freq2: 18500 Hz

*freq3: 19500 Hz

*signal length: 200 ms + a fade in and fade out of the gain node of 5ms, so in sum 210ms

My goal is to determine the time difference of arrival (TDoA) between the emitted sounds. So in each iteration I read 100 byte from my AudioRecord buffer and then I want to determine the time difference (if I found one of my sounds). So far I've used a simple frequency filter (using fft) to determine the TDoA, but this is really inacurrate in the real world.
So far I've found out that I can use cross correlation to determine the TDoA value even better (http://paulbourke.net/miscellaneous/correlate/ and some threads here on SO). Now my problem: at the moment I think I have to correlate the recorded signal (my short array) with a generated signal of each of my three sounds above. But I'm struggling to generate this signal. Using the code found at (http://repository.tudelft.nl/view/ir/uuid%3Ab6c16565-cac8-448d-a460-224617a35ae1/ section B1.1. genTone())  does not clearly solve my problem because this will generate an array way bigger than my recorded samples. And so far I know the cross correlation needs two arrays of the same size to work. So how can I generate a sample array?
Another question: is the thinking of how to determine the TDoA so far correct?

A: Here are some lessons I've learned the past days:

*

*I can either use cross correlation (xcorr) or a frequency recognition technique to determine the TDoA. The latter one is far more imprecise. So i focus on the xcorr.

*I can achieve the TDoA by appling the xcorr on my recorded signal and two reference signals. E.g. my record has a length of 1000 samples. With the xcorr I recognize sound A at sample 500 and sound B at sample 600. So I know they have a time difference of 100 sample (that can be converted to seconds depending on the sample rate).

Therefor I generate a linear chirp (chirps a better than simple sin waves (see literature)) using this code found on SO. For an easy example and to check if my experiment seems to work I save my record as well as my generated chirp sounds as .wav files (there are plenty of code example how to do this). Then I use MatLab as an easy way to calculate the xcorr: see here
Another point: "input of xcorr has to be the same size?" I'm quite not sure about this part but I think this has to be done. We can achieve this by zero padding the two signals to the same length (preferable a power of two, so we can use the efficient Radix-2 implementation of FFT) and then use the FFT to calculate the xcorr (see another link from SO)
I hope this so far correct and covers some questions of other people :-)


text:
Q: Displaying Google AdSense Advertisements only to Facebook, Twitter Visitors I am using below code. When I place this code in single.php, it's showing ads with content. I want, when a Facebook visitor visits my URL, that it shows only ads and no content. When others visitors normally visit the URL, then it should show the content.
<?php

    $ref = $_SERVER['HTTP_REFERER'];
    if (preg_match("(facebook)", $ref) != false) {
        echo <<<END
<script type="text/javascript"><!--
    google_ad_client = "xx-xx-xxxxxxxxxxxxxxxxxx";
    /* xxxxxxxx xxxxxx xxx xxx xxx xx xxxxxx */
    google_ad_slot = "xxxxxxxxxxxxxx";
    google_ad_width = xxx;
    google_ad_height = xxx;
    //-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
END;
    }
    else {
        echo "";
    }

?>

If single.php is the wrong place, where should I placed it instead?

A: Please give this a try:
<?php

    $ref = $_SERVER['HTTP_REFERER'];
    if (preg_match('facebook\.com', $ref) != false) {

?>
<script type="text/javascript"><!--
    google_ad_client = "xx-xx-xxxxxxxxxxxxxxxxxx";
    /* xxxxxxxx xxxxxx xxx xxx xxx xx xxxxxx */
    google_ad_slot = "xxxxxxxxxxxxxx";
    google_ad_width = xxx;
    google_ad_height = xxx;
    //-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<?php

    } else {
        echo "";
    }

?>

Another way you can check the referral is to use strpos instead of preg_match.
<?php

    $ref = $_SERVER['HTTP_REFERER'];
    if (strpos($ref, 'facebook.com') != false) {

?>
<script type="text/javascript"><!--
    google_ad_client = "xx-xx-xxxxxxxxxxxxxxxxxx";
    /* xxxxxxxx xxxxxx xxx xxx xxx xx xxxxxx */
    google_ad_slot = "xxxxxxxxxxxxxx";
    google_ad_width = xxx;
    google_ad_height = xxx;
    //-->
</script>
<script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<?php

    } else {
        echo "";
    }

?>


text:
Q: TypeScript: Allow any key with specific value type on an object that has some keys with different value types I have 2 kinds of Frontmatter:

*

*FrontmatterTaxonomy, which is an object with kind: "taxonomy" and a taxnomyName that is a string.

*FrontmatterContent, which is an object with kind: "content" that should also allow any other keys, as long as their values are string[].

I'm not sure how to model this - so far, I tried it rather simple, which does not work because "content" is not of type "TaxonomyTerms".
How could I achieve this?
type TaxonomyTerms = string[]
type TaxonomyData = Record<string, TaxonomyTerms>
// alternative, doesn't work either
// type TaxonomyData = { [taxonomyTerm: string]: string[] }

type FrontmatterContent = TaxonomyData & {
  kind: 'content'
}

interface FrontmatterTaxonomy {
  kind: 'taxonomy'
  taxonomyName: string
}

type Frontmatter = FrontmatterContent | FrontmatterTaxonomy

// Doesn't work.
// Type 'string' is not assignable to type 'TaxonomyTerms'
const fm1: Frontmatter = {
  kind: 'content',
  tags: ['foo', 'bar']
}

// Works.
const fm2: Frontmatter = {
  kind: 'taxonomy',
  taxonomyName: 'categories'
}


text:
Q: how to add ionic custom directives to react js? I am working on react js and would like to add ionic directives inside the react js code. can i do that?
For example: <ion-list> - Ionic directive
I want to add <ion-list> inside the react js. please help me on this.
Thanks in advance.

A: No. <ion-list> is a angularJS directive and will not work directly in React. You have to create a similar ReactJS component for the same. You have to look into the Ionic source code for this directive and create the same by picking up the html/css and the behavior.

A: I have implemented a large part of the Ionic functionality in React (and still working on the remaining components). I have open sourced it, have a look here: React-Ionic


text:
Q: Does anyone have a formula for Worldedit to create an icosahedron? I'm searching for a formula for an icosahedron (a polyhedron with 20 faces) to use for Worldedit.
I searched a lot but couldn't find an icosahedron formula for Minecraft that I could use for building.

A: Answer moved from body of question

After more research i found something that could solve this problem
https://mathworld.wolfram.com/IcosahedralEquation.html


text:
Q: Psychological term or phrase for experiencing the world via the senses I am looking for a psychological term or phrase for experiencing the world via the senses. (I am particularly interested in visual, auditory and thermal stimuli.) I am not looking for the word "sensory" or similar, as that is too physiological.

A: Phenomenalism conveys the idea.

a theory that all knowledge is of phenomena and that what is construed to be perception of material objects is simply perception of sense-data
http://www.merriam-webster.com/dictionary/phenomenalism

the view that all things, including human beings, consist simply of the aggregate of their observable, sensory qualities.
http://www.thefreedictionary.com/phenomenalism

It is a philosophical term but it is also used in psychology, and there is even a definition in psychology dictionary. There is an article called "A Defence Of Phenomenalism In Psychology" (written by an idealist philosopher called FH Bradley) which defends psychology by endeavoring to fix its true sense and it says that it is a rational attitude in psychology but it is senseless in metaphysics. The term is also called sensationalism but sensationalism has also another meaning which is more common.

You can use the adjective phenomenal to define this kind of world also.

known through the senses rather than through thought or intuition
http://www.merriam-webster.com/dictionary/phenomenal

Perceptible by the senses or through immediate experience: the phenomenal world
http://www.oxforddictionaries.com/definition/english/phenomenal

A: Empirical has the sense of having observed something, especially in a setting that was not set up as an experiment.
*Experiential" can be contrasted with information personally received, rather than through reading about it or hearing a lecture about it.
I am hard-pressed to think of a way one might experience something other than through the senses.  The stimuli forming the experience has be received through touch, hearing, seeing, smelling, or tasting.


text:
Q: how to make 'ngs-java' in linux? I want to install 'ngs' through the below instruction:
https://github.com/ncbi/ngs/wiki/Building-and-Installing-from-Source
In step 5 (Make each of the sub-projects) I tried to make ngs-java based on the below code:
make -C ngs-java

But I got bellow error:
make: Entering directory '/home/genetic/ncbi/ngs/ngs-java'
*** File 'Makefile.config.linux.x86_64' is missing. Please run ./configure
make: *** [/home/genetic/ncbi/ngs/ngs-java/Makefile.rules:72: Makefile.config.linux.x86_64]
Error 1
make: Leaving directory '/home/genetic/ncbi/ngs/ngs-java

in ngs-java folder, I ran ./configure then I got below result:
Configuring NGS-JAVA package
checking system type... Linux
checking OS distributor... Ubuntu
checking machine architecture... x86_64
checking for supported architecture... x86_64 (64 bits) is supported
checking for supported OS... Linux (linux) is supported
checking for supported tool chain... jdk tool chain is supported
checking for javac... no
configure: error: 'javac' cannot be found

then I installed java. now when I ran java -version and got below result:
 openjdk version "11.0.9.1" 2020-11-04
 OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
 OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

After that I set path of java enviroment variable:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

but when I ran

./configure

in ngs-version I see again error about javac.
I appreciate if anybody his/her comment for solving this error with me.


text:
Q: Validate custom JSON schema I'm trying to validate a custom JSON schema in Python 3. I'm using this tutorial from JSON Schema and validating it with an online tool, JSON Schema validator, that is one of the tools that they refer to in the Web (Online) section of the Implementation section.
After defining my JSON schema, filling out an example and testing it in the online tool, it says it's fine. But the problem is that if I change the names of the nodes (except for the main node), it keeps saying that it's OK. That's what I don't understand.
I had defined the scheme like this (and it is wrong). I apologise if it is difficult to understand because I had to anonymise the data:
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://my-program/schema.json",
  "title": "A title",
  "description": "A description",
  "type": "object",
  "properties": {
    "root": {
      "description": "A description",
      "type": "array",
      "items": {
        "type": "object"
      },
      "minItems": 1,
      "uniqueItems": false,
      "properties": {
        "a": {
          "description": "A description",
          "type": "string"
        },
        "b": {
          "description": "A description",
          "type": "string"
        },
        "c": {
          "description": "A description",
          "type": "string"
        },
        "d": {
          "description": "A description",
          "type": "object",
          "properties": {
            "d_a": {
              "description": "A description",
              "type": "object"
            },
            "d_b": {
              "description": "A description",
              "type": "object"
            },
            "d_c": {
              "description": "A description",
              "type": "object",
              "properties": {
                "d_c_a": {
                  "description": "A description",
                  "type": "object",
                  "properties": {
                    "d_c_a_a": {
                      "description": "A description",
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "minItems": 0,
                      "uniqueItems": false
                    }
                  },
                  "required": [
                    "d_c_a_a"
                  ]
                },
                "d_c_b": {
                  "description": "A description",
                  "type": "object",
                  "properties": {
                    "d_c_b_a": {
                      "description": "A description",
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "minItems": 0,
                      "uniqueItems": false
                    }
                  },
                  "required": [
                    "d_c_b_a"
                  ]
                },
                "d_c_c": {
                  "description": "A description",
                  "type": "object",
                  "properties": {
                    "d_c_c_a": {
                      "description": "A description",
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "minItems": 0,
                      "uniqueItems": false
                    },
                    "d_c_c_b": {
                      "description": "A description",
                      "type": "string"
                    }
                  },
                  "required": [
                    "d_c_c_a",
                    "d_c_c_b"
                  ]
                }
              },
              "required": [
                "d_c_a",
                "d_c_b",
                "d_c_c"
              ]
            }
          },
          "required": [
            "d_a",
            "d_b",
            "d_c"
          ]
        },
        "e": {
          "description": "A description",
          "type": "array",
          "items": {
            "type": "object"
          },
          "minItems": 1,
          "uniqueItems": true,
          "properties": {
            "e_a": {
              "description": "A description",
              "type": "string"
            },
            "e_b": {
              "description": "A description",
              "type": "string"
            },
            "e_c": {
              "description": "A description",
              "type": "string"
            },
            "e_d": {
              "description": "A description",
              "type": "string"
            },
            "e_e": {
              "description": "A description",
              "type": "string"
            },
            "e_f": {
              "description": "A description",
              "type": "string"
            }
          },
          "required": [
            "e_a",
            "e_b",
            "e_c",
            "e_d",
            "e_e",
            "e_f"
          ]
        },
        "f": {
          "description": "A description",
          "type": "integer"
        },
        "g": {
          "description": "A description",
          "type": "boolean"
        },
        "h": {
          "description": "A description",
          "type": "object",
          "properties": {
            "h_a": {
              "description": "A description",
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 0,
              "uniqueItems": true
            },
            "h_b": {
              "description": "A description",
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 0,
              "uniqueItems": true
            },
            "h_c": {
              "description": "A description",
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 0,
              "uniqueItems": true
            }
          },
          "required": [
            "h_a",
            "h_b",
            "h_c"
          ]
        }
      },
      "required": [
        "a",
        "b",
        "c",
        "d",
        "e",
        "f",
        "g",
        "h"
      ]
    }
  },
  "required": [
    "root"
  ]
}

And the JSON that I'm trying to validate looks like:
{
  "root": [
    {
      "a": "Bla bla",
      "b": "Bla bla",
      "c": "Bla bla",
      "d": {
        "d_a": {
          "something random": 0,
          "something random": 4
        },
        "d_b": {
          "something random": "Bla bla",
          "something random": 0
        },
        "d_c": {
          "d_c_a": {
            "d_c_a_a": [
              "something random"
            ]
          },
          "d_c_b": {
            "d_c_b_a": [
              "something random",
              "something random",
              "something random"
            ]
          },
          "d_c_c": {
            "d_c_c_a": [
              "something random"
            ],
            "d_c_c_b": "something random"
          }
        }
      },
      "e": [
        {
          "e_a": "something random",
          "e_b": "something random",
          "e_c": "something random",
          "e_d": "something random",
          "e_e": "something random",
          "e_f": "something random"
        },
        {
          "e_a": "something random",
          "e_b": "something random",
          "e_c": "something random",
          "e_d": "something random",
          "e_e": "something random",
          "e_f": "something random"
        }
      ],
      "f": 0,
      "g": true,
      "h": {
        "h_a": [
          "something random"
        ],
        "h_b": [
          "something random"
        ],
        "h_c": [
          "something random"
        ]
      }
    },
    {
      "a": "Bla bla",
      "b": "Bla bla",
      "c": "Bla bla",
      "d": {
        "d_a": {
          "something random": 0,
          "something random": 4
        },
        "d_b": {
          "something random": "Bla bla",
          "something random": 0
        },
        "d_c": {
          "d_c_a": {
            "d_c_a_a": [
              "something random"
            ]
          },
          "d_c_b": {
            "d_c_b_a": [
              "something random",
              "something random",
              "something random"
            ]
          },
          "d_c_c": {
            "d_c_c_a": [
              "something random"
            ],
            "d_c_c_b": "something random"
          }
        }
      },
      "e": [
        {
          "e_a": "something random",
          "e_b": "something random",
          "e_c": "something random",
          "e_d": "something random",
          "e_e": "something random",
          "e_f": "something random"
        },
        {
          "e_a": "something random",
          "e_b": "something random",
          "e_c": "something random",
          "e_d": "something random",
          "e_e": "something random",
          "e_f": "something random"
        }
      ],
      "f": 0,
      "g": true,
      "h": {
        "h_a": [
          "something random"
        ],
        "h_b": [
          "something random"
        ],
        "h_c": [
          "something random"
        ]
      }
    }
  ]
}

If I change root for nono tha validator throws an error, or if I remove root. But for the rest of the elements it always says that it's OK. Even if I change the names or delete them.
What I'm doing wrong?
Regards.

A: Ok, the problem was with the nesting of the properties field not being doing inside the field items.
Here is the fixed template:
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://example.com/product.schema.json",
    "title": "A title",
    "description": "A description",
    "type": "object",
    "properties": {
        "root": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "a": {
                        "description": "A description",
                        "type": "string"
                    },
                    "b": {
                        "description": "A description",
                        "type": "string"
                    },
                    "c": {
                        "description": "A description",
                        "type": "string"
                    },
                    "d": {
                        "description": "A description",
                        "type": "object",
                        "properties": {
                            "d_a": {
                                "description": "A description",
                                "type": "object"
                            },
                            "d_b": {
                                "description": "A description",
                                "type": "object"
                            },
                            "d_c": {
                                "description": "A description",
                                "type": "object",
                                "properties": {
                                    "d_c_a": {
                                        "description": "A description",
                                        "type": "object",
                                        "properties": {
                                            "d_c_a_a": {
                                                "description": "A description",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                },
                                                "minItems": 0,
                                                "uniqueItems": true
                                            }
                                        },
                                        "required": ["d_c_a_a"]
                                    },
                                    "d_c_b": {
                                        "description": "A description",
                                        "type": "object",
                                        "properties": {
                                            "d_c_b_a": {
                                                "description": "A description",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                },
                                                "minItems": 0,
                                                "uniqueItems": true
                                            },
                                        },
                                        "required": ["d_c_b_a"]
                                    },
                                    "d_c_c": {
                                        "description": "A description",
                                        "type": "object",
                                        "properties": {
                                            "d_c_c_a": {
                                                "description": "A description",
                                                "type": "array",
                                                "items": {
                                                    "type": "string"
                                                },
                                                "minItems": 0,
                                                "uniqueItems": true
                                            },
                                            "d_c_c_b": {
                                                "description": "A description",
                                                "type": "string"
                                            }
                                        },
                                        "required": ["d_c_c_a", "d_c_c_b"]
                                    }
                                },
                                "required": ["d_c_a", "d_c_b", "d_c_c"]
                            },
                        },
                        "required": ["d_a", "d_b", "d_c"]
                    },
                    "e": {
                        "description": "A description",
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "e_a": {
                                    "description": "A description",
                                    "type": "string"
                                },
                                "e_b": {
                                    "description": "A description",
                                    "type": "string"
                                },
                                "e_c": {
                                    "description": "A description",
                                    "type": "string"
                                },
                                "e_d": {
                                    "description": "A description",
                                    "type": "string"
                                },
                                "e_e": {
                                    "description": "A description",
                                    "type": "string"
                                },
                                "e_f": {
                                    "description": "A description",
                                    "type": "string"
                                }
                            },
                            "required": ["e_a", "e_b", "e_c", "e_d", "e_e", "e_f"]
                        },
                        "minItems": 1,
                        "uniqueItems": true,
                    },
                    "f": {
                        "description": "A description",
                        "type": "integer"
                    },
                    "g": {
                        "description": "A description",
                        "type": "boolean"
                    },
                    "h": {
                        "description": "A description",
                        "type": "object",
                        "properties": {
                            "h_a": {
                                "description": "A description",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "minItems": 0,
                                "uniqueItems": true
                            },
                            "h_b": {
                                "description": "A description",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "minItems": 0,
                                "uniqueItems": true
                            },
                            "h_c": {
                                "description": "A description",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "minItems": 0,
                                "uniqueItems": true
                            }
                        },
                        "required": ["h_a", "h_b", "h_c"]
                    }
                },
                "required": ["a", "b", "c", "d", "e", "f", "g", "h"]
            },
            "minItems": 1,
            "uniqueItems": true,
        },
    },
    "required": ["root"]
}

And here a working example:
{
  "root": [
    {
      "a": "Bla bla",
      "b": "Bla bla",
      "c": "Bla bla",
      "d": {
        "d_a": {
          "something random": 0,
          "something random": 4
        },
        "d_b": {
          "something random": "Bla bla",
          "something random": 0
        },
        "d_c": {
          "d_c_a": {
            "d_c_a_a": [
              "something random"
            ]
          },
          "d_c_b": {
            "d_c_b_a": [
              "something random_1",
              "something random_2",
              "something random_3"
            ]
          },
          "d_c_c": {
            "d_c_c_a": [
              "something random"
            ],
            "d_c_c_b": "something random"
          }
        }
      },
      "e": [
        {
          "e_a": "something random_1",
          "e_b": "something random_2",
          "e_c": "something random_3",
          "e_d": "something random_4",
          "e_e": "something random_5",
          "e_f": "something random_6"
        },
        {
          "e_a": "something random_7",
          "e_b": "something random_8",
          "e_c": "something random_9",
          "e_d": "something random_10",
          "e_e": "something random_11",
          "e_f": "something random_12"
        }
      ],
      "f": 0,
      "g": true,
      "h": {
        "h_a": [
          "something random_1"
        ],
        "h_b": [
          "something random_2"
        ],
        "h_c": [
          "something random_3"
        ]
      }
    },
    {
      "a": "Bla bla",
      "b": "Bla bla",
      "c": "Bla bla",
      "d": {
        "d_a": {
          "something random": 0,
          "something random": 4
        },
        "d_b": {
          "something random": "Bla bla",
          "something random": 0
        },
        "d_c": {
          "d_c_a": {
            "d_c_a_a": [
              "something random"
            ]
          },
          "d_c_b": {
            "d_c_b_a": [
              "something random_1",
              "something random_2",
              "something random_3"
            ]
          },
          "d_c_c": {
            "d_c_c_a": [
              "something random"
            ],
            "d_c_c_b": "something random"
          }
        }
      },
      "e": [
        {
          "e_a": "something random_1",
          "e_b": "something random_2",
          "e_c": "something random_3",
          "e_d": "something random_4",
          "e_e": "something random_5",
          "e_f": "something random_6"
        },
        {
          "e_a": "something random_7",
          "e_b": "something random_8",
          "e_c": "something random_9",
          "e_d": "something random_10",
          "e_e": "something random_11",
          "e_f": "something random_12"
        }
      ],
      "f": 0,
      "g": true,
      "h": {
        "h_a": [
          "something random"
        ],
        "h_b": [
          "something random"
        ],
        "h_c": [
          "something random"
        ]
      }
    }
  ]
}

Regards!


text:
Q: how to extract xml value field with in sql server ( extractvalue function in mysql ) I have to extract xml value with in sql server. Normally when I extract value field that stored in mysql I can just simply use extractvalue(data,'parent/child/node') as value
Can anyone tell me how can do this in sql server ? thanks .

A: Like so:
declare @x xml = '<foo><bar>my value</bar></foo>'

select @x.value('(/foo/bar)[1]', 'varchar(30)')

The same will work for an XML column as well.


text:
Q: Slony initial subscription is causing out-of-memory kernel panics. Why? Context:
We run Slony 2.0 with Postgres 8.4 on two CentOS 6 servers--one master, and one slave. Our database is about 30GB in size, which isn't unusual, but we do have a couple of tables that are more than 5GB each.
Recently, we needed to re-build our Slony cluster. I turned off Slony, restored identical database snapshots on the master and the slave, set up my slony.conf and slon_tools.conf, started the slons, ran slonik_init_cluster | slonik, then slonik_create_set 1 | slonik (we only have one replication set), and finally slonik_subscribe_set 1 2 | slonik. Everything looked good, and I was able to watch subscription progress in the logs.
Then the server stopped responding. I rebooted it, and saw "Kernel panic - not syncing: Out of memory and no killable processes" after it had killed everything it could.
What I've tried:
First I blew away the database completely, re ran initdb, and then restored the identical snapshots again. Same kernel panic. Then I blew it away, uninstalled Postgres and Slony, and reinstalled them. I double-checked all of our memory-based settings in postgresql.conf, and they are all at stock/recommended levels (i.e. shared_buffers is at 1/4 of RAM etc etc). I ran a VACUUM ANALYZE FULL on the database before initializing the Slony cluster. Same result every time: kernel panic, out of memory.
There's no chance of random/manual config changes having caused this: all of our Postgres and Slony configuration is managed by Puppet, and hasn't changed for months.
Question:
Why is this happening?
Our database has grown fairly linearly over the past few months (at the beginning of the year it was about 23GB, now it's 30), and every other time I have had to re-initialize the Slony cluster on these same servers, it has worked fine.

A: The problem turned out to be unrelated: in /etc/sysctl.conf, the system's shmmax value was set to an amount greater than the available RAM.
Setting it to 60% of RAM (our DB consultant's recommendation) solved the problem.
Why this issue didn't crop up before is a mystery to me.


text:
Q: Hadoop spring namespace not detected I am creating a jar using Maven-jar plugin and on execution I get the following error:
Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www.springframework.org/schema/hadoop]
Offending resource: class path resource [applicationContext.xml]

I am using Hadoop 1.2.1 version.
My applicationContext.xml looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:hdp="http://www.springframework.org/schema/hadoop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/hadoop http://www.springframework.org/schema/hadoop/spring-hadoop.xsd">

<context:property-placeholder location="hadoop.properties" />
......
</beans>

My pom.xml looks like this:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>spring-hadoop-wordcount</groupId>
<artifactId>spring-hadoop-wordcount</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>

<name>spring-hadoop-wordcount</name>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-hadoop</artifactId>
        <version>1.0.1.RELEASE</version>
        <exclusions>
            <exclusion>
                <artifactId>hadoop-streaming</artifactId>
                <groupId>org.apache.hadoop</groupId>
            </exclusion>
            <exclusion>
                <artifactId>spring-context-support</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
            <exclusion>
                <artifactId>hadoop-core</artifactId>
                <groupId>org.apache.hadoop</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.mrunit</groupId>
        <artifactId>mrunit</artifactId>
        <version>0.8.0-incubating</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>
        </plugins>
</build>
</project>

I have added the jars to my src/main/resources folder.
I am unable to identify the problem. Kindly help.
Thanks

A: Try adding an AppendingTransformers to your pom.xml.


text:
Q: cover page--"The" is separated from "Publisher"--also how to put a clean page break to stop raggedleft on second page \documentclass[10pt,a4paper]{report}                 %inter office note /cover page vertical line template
\usepackage{enumitem}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage[table]{xcolor}                      %for color of table
\usepackage{booktabs}                        %for toprule midrule bottomrule in tables
\usepackage{multirow}           % Required for multirows
\usepackage{rotating}
\usepackage{lscape}
%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage[none]{hyphenat}             %no hyphenation
\usepackage{float}
\usepackage{lastpage}                                     %toget last page number
\usepackage{indentfirst}
\usepackage[bottom]{footmisc}
\usepackage[en-US]{datetime2}
\usepackage{caption}
\usepackage{booktabs}
\usepackage{siunitx}
%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*{\plogo}{\fbox{$\mathcal{PL}$}}             % Generic dummy publisher logo
\renewcommand*\familydefault{\sfdefault}             %best

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

%%\raggedleft
                                        % Right align the title page
    \rule{1pt}{\textheight}              % Vertical line
    \hspace{0.05\textwidth}              % Whitespace between the vertical line and title page text
    \parbox[b]{0.6\textwidth}
    {                        % Paragraph box for holding the title page text, adjust the width to move                                  the title page left or right on the page
        {\Huge
            \bfseries
            Key Result Areas \\
            [0.5\baselineskip]
            August 2019}\\
            [2\baselineskip] % Title
        \begin{itemize}
        \item {\large
                \textit
                { DGQA Unit Run Canteen\\
        \item ISO Certification 9001:2015\\
        \item CQA(AVL) Standing Orders}}
        \\[4\baselineskip] % Subtitle or further description
        \end{itemize}
        {\Large
            \textsc
            {colonel js bibra\\
                joint controller}
            } % Author name, lower case for consistent small caps
        \vspace
            {0.45\textheight} % Whitespace between the title block and the publisher
        {\noindent
            The Publisher~~\plogo}\\
        [\baselineskip] % Publisher and logo
    }
\newpage
\end{document}

A: \vspace doesn't end a paragraph.
I would use different coding, easier and clearer.
For instance, you can set a minipage (or \parbox) with a predetermined height, so you don't need to guess the spacing before the publisher. Better a minipage, so its beginning and end are more prominent in the code.
Paragraphs should be ended before the end of a size changing scope. Also you have more control on the size if you use \MakeUppercase to ensure uppercasing, rather than relying on small caps.
\documentclass[10pt,a4paper]{report}                 %inter office note /cover page vertical line template
\usepackage{enumitem}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand*{\plogo}{\fbox{$\mathcal{PL}$}}          % Generic dummy publisher logo
\renewcommand*\familydefault{\sfdefault}             % best

\begin{document}

\begin{flushleft}

% Vertical line
\rule{1pt}{\textheight}% <--- don't forget
% Some space after it
\hspace{0.05\textwidth}% <--- don'f forget
% Paragraph box for holding the title page text,
\begin{minipage}[b][\textheight][s]{0.6\textwidth}
  \raggedright

  \vspace*{2\baselineskip}

  {\Huge\bfseries
   Key Result Areas \\
   August 2019\\}

  \vspace{2\baselineskip}

  {\large
   \begin{itemize}[leftmargin=*]
   \item \textit{DGQA Unit Run Canteen}

   \item ISO Certification 9001:2015

   \item CQA(AVL) Standing Orders
   \end{itemize}}

  \vspace{2\baselineskip}

  \MakeUppercase{Colonel JS Bibra}\\
  \MakeUppercase{Joint Controller}

  \vfill

  The Publisher~~\plogo

  \vspace*{2\baselineskip}

  \end{minipage}

\end{flushleft}

\thispagestyle{empty}
\clearpage

\end{document}

With an image on the left of the rule, vertically centered with respect to the rule:
\documentclass[10pt,a4paper]{report}
\usepackage{enumitem}
\usepackage{graphicx}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand*{\plogo}{\fbox{$\mathcal{PL}$}}          % Generic dummy publisher logo
\renewcommand*\familydefault{\sfdefault}             % best

\begin{document}

\begin{flushleft}

% Logo on the left side
\begin{minipage}[b][\textheight][s]{0.3\textwidth}
\vspace*{\fill}

\fbox{\includegraphics[width=\dimexpr\textwidth-2\fboxsep-2\fboxrule]{example-image}}

\vspace*{\fill}
\end{minipage}%
% Vertical line with some space on either side
\quad
\rule{1pt}{\textheight}% <--- don't forget
\quad
% Paragraph box for holding the title page text,
\begin{minipage}[b][\textheight][s]{0.6\textwidth}
  \raggedright

  \vspace*{2\baselineskip}

  {\Huge\bfseries
   Key Result Areas \\
   August 2019\\}

  \vspace{2\baselineskip}

  {\large
   \begin{itemize}[leftmargin=*]
   \item \textit{DGQA Unit Run Canteen}

   \item ISO Certification 9001:2015

   \item CQA(AVL) Standing Orders
   \end{itemize}}

  \vspace{2\baselineskip}

  \MakeUppercase{Colonel JS Bibra}\\
  \MakeUppercase{Joint Controller}

  \vfill

  The Publisher~~\plogo

  \vspace*{2\baselineskip}

  \end{minipage}

\end{flushleft}

\thispagestyle{empty}
\clearpage

\end{document}