#include <iostream>
хлам
суббота, 2 декабря 2023 г.
sort linked list
суббота, 11 ноября 2023 г.
coupling alg
/*quick weighted union with path compression*/
#include <stdio.h>
#include <iostream>
#define N 10
int get_root(int id[], int element){
while(id[element] != element){
element = id[element];
}
return element;
}
int main(){
int id[N];
int size[N];
for (int i = 0; i < N; i++){
id[i] = i;
size[i] = 1;
}
int p;
int q;
while(std::cin >> p >> q){
int pRoot = get_root(id, p);
int qRoot = get_root(id, q);
if (qRoot == pRoot) {
continue;
}
if (size[pRoot] > size[qRoot]){
id[qRoot] = id[q] = pRoot;
size[pRoot] += size[qRoot];
}
else {
id[pRoot]= id[p] = qRoot;
size[qRoot] += size[pRoot];
}
printf("%d %d\n", p, q);
}
for(int i =0; i < N; i++){
printf("%d \t", id[i]);
}
printf("\n");
for(int i =0; i < N; i++){
printf("%d \t", size[i]);
}
printf("\n");
return 0;
}
//---------------------------------
/*quick weighted union with max path length */
#include <stdio.h>
#include <iostream>
#define N 10
int get_root(int id[], int element){
while(id[element] != element){
element = id[element];
}
return element;
}
int main(){
int id[N];
int size[N];
for (int i = 0; i < N; i++){
id[i] = i;
size[i] = 1;
}
int p;
int q;
while(std::cin >> p >> q){
int pRoot = get_root(id, p);
int qRoot = get_root(id, q);
if (qRoot == pRoot) {
continue;
}
if (size[pRoot] >= size[qRoot]){
id[qRoot] = pRoot;
if (size[pRoot] == size[qRoot]){
size[pRoot] += 1;
}
}
else {
id[pRoot] = qRoot;
}
printf("%d %d\n", p, q);
}
for(int i =0; i < N; i++){
printf("%d \t", id[i]);
}
printf("\n");
for(int i =0; i < N; i++){
printf("%d \t", size[i]);
}
printf("\n");
return 0;
}
вторник, 10 ноября 2020 г.
google.protobuf encode variants
private static int GetDestBytes(ulong number)
{
for (int i = 0; i < sizeof(ulong); i++)
{
if (number < (ulong)1 << (8 * (i + 1) - 1) >> i)
{
return i + 1;
}
}
if ((number & ((ulong)1 << 63)) != 0)
{
return sizeof(ulong) + 2;
}
return sizeof(ulong) + 1;
}
private static int GetMinBytes(ulong number)
{
for (int i = 0; i < sizeof(ulong) - 1; i++)
{
if (number < (ulong)1 << (8 * (i + 1)))
{
return i + 1;
}
}
return sizeof(ulong);
}
public static byte[] GetVariant_my(ulong number)
{
int destLength = GetDestBytes(number);
if (destLength == 1) //nothing to encode
{
return new byte[]
{
(byte)number
};
}
byte[] byteArray = BitConverter.GetBytes(number).Take(GetMinBytes(number)).ToArray();
byte[] destArray = new byte[destLength];
//save first 1 bit
byte prevFirstBits = (byte)((uint)byteArray[0] >> 7);
destArray[0] = (byte)(byteArray[0] | 128); // set msb = 1
for (int i = 1; i < byteArray.Length; i++)
{
var firstBits = (byte)((uint)byteArray[i] >> (8 - i - 1));
//shift to right and apply saved bits from prev octet
destArray[i] = (byte)(byteArray[i] << i | prevFirstBits);
//for non-last octet set msb = 1
if (i < destLength - 1)
{
destArray[i] = (byte)(destArray[i] | 128);
}
prevFirstBits = firstBits;
}
// apply prev saved bit to last byte
if (prevFirstBits != 0)
{
destArray[byteArray.Length] = prevFirstBits;
}
//for numbers > 2^63 need to save msb
if (destArray.Length == 10)
{
destArray[^1] = 1;
}
return destArray;
}
понедельник, 14 октября 2019 г.
gulp + react + babel + browserify
var babel = require("gulp-babel");
var browserify = require('browserify');
var gutil = require('gulp-util');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var watch = require('gulp-watch');
var gutil = require('gulp-util');
const babelify = require('babelify');
function transform() {
return gulp.src('./src/*.js')
.pipe(babel({
presets: ["@babel/preset-env", "@babel/preset-react"]
}))
.pipe(gulp.dest('dist'));
}
function bundle() {
return browserify('./src/index.js',
{ bundleExternal: true, external: ['react', 'react-dom'] })
.transform(babelify, { presets: ["@babel/preset-env", "@babel/preset-react"] })
.bundle()
.on('error', gutil.log)
.pipe(source('index.js'))
.pipe(buffer())
.pipe(gulp.dest('./dist/'));
}
function bundleprimereact() {
//, { ignore: [require.resolve('react')] }
return browserify('./node_modules/primereact/datatable',
{ external: ['react', 'react-dom'] })
.bundle()
.on('error', gutil.log)
.pipe(source('primereact_datatable.js'))
.pipe(buffer())
.pipe(gulp.dest('./dist/'))
}
exports.transform = transform;
exports.bundle = bundle;
exports.bundleprimereact = bundleprimereact;
воскресенье, 11 августа 2019 г.
willie script, psh
$overall_count = 20 #
$sleep_sec = 6 #
Add-Type -AssemblyName System.speech
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
$speak.SelectVoice('Microsoft Zira Desktop')
$rnd = [random]::new()
for($i=0; $i -lt $overall_count; $i++){
$str = ""
for($j=0; $j -lt $count_in_serial; $j++){
$str += " " + $rnd.Next(1,10)
}
write-host $str
$speak.Speak($str)
Start-Sleep -Seconds $sleep_sec
}
willie, python script
overall_count = 20 # series count
sleep_sec = 5 # series delay
incomp_punch = { 9 : [8], 8: [9], 3 : [4], 4: [3], 3: [3], 4: [4] }
import random
import win32com.client as wincl
import time
speak = wincl.Dispatch("SAPI.SpVoice")
speak.Rate = -2
random.seed()
for i in range(overall_count):
str = ""
ser = [random.randint(1, 9) for x in range(count_in_serial)]
for j in range(count_in_serial-1):
while ser[j+1] in incomp_punch.get(ser[j],[]):
ser[j+1] = random.randint(1, 10)
print(ser.__str__())
speak.Speak(ser.__str__().replace(',',' '))
time.sleep(sleep_sec)
воскресенье, 30 июня 2019 г.
scom html dashboard, win computer summary
<html>
<head>
<style>
.healthStyle_healthy {
background-color: lightgreen;
}
.healthStyle_critical {
background-color: Salmon;
}
.healthStyle_warning {
background-color: yellow;
}
.healthStyle_unavailable-healthy {
background-color: grey;
}
#compInfo > p {
margin: 1px;
padding: 1px;
font-size: small;
}
#compInfo {
}
#divAlert > p {
margin: 1px;
padding: 1px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
//var lastSelectedName = "lastObjSelected_c92650fd-5b51-4fb3-a6fe-d3cd845a7066";
var computerClass = "Microsoft.Windows.Library!Microsoft.Windows.Computer";
var groupId = "1d62280e-f437-1369-316b-1e8659500e9a";
var DurationMin = 1440;
function renderComputerList(){
$.ajax({
url: "/OperationsManager/data/state",
type: "POST",
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify({
"classId": computerClass,
"objectIds": { groupId: -1},
"criteria": "((HealthState = '0') OR (HealthState = '1') OR (HealthState = '2') OR (HealthState = '3') OR HealthState is null)",
"displayColumns": [
"healthstate",
"id",
"displayname",
"path",
"maintenancemode"
]
}).replace("groupId", groupId),
success: function (result) {
debugger;
let objSel = $('#computers');
for (var i = 0; i < result.rows.length; i++) {
objSel.append('<option value="' + result.rows[i].id +'" class="healthStyle_' + result.rows[i].healthstate + '">'+result.rows[i].displayname+'</option>');
}
let lastObjSelected = localStorage.getItem("lastObjSelected_c92650fd-5b51-4fb3-a6fe-d3cd845a7066");
if (lastObjSelected) {
objSel.val(lastObjSelected);
}
else {
objSel[0].selectedIndex = 0;
}
objChanged();
}
});
}
window.onload = function () {
renderComputerList();
}
function GetProp(dict, nameRus, nameEng){
return dict.filter(function( item ) {
return (item.name == nameRus || item.name == nameEng);
});
}
function ProcessObjProperties(properties){
var ipAddr = GetProp(properties, "IP-адрес", "IP Address")[0].value;
var domainName = GetProp(properties, "DNS-имя домена", "DNS Domain Name")[0].value;
var siteName = GetProp(properties, "Сайт Active Directory", "Active Directory Site")[0].value;
//var ou = GetProp(properties, "Подразделение", "")[0].value;
var pCPU = GetProp(properties, "Physical Processors", "Физические процессоры")[0].value;
var lCPU = GetProp(properties, "Logical Processors", "Логические процессоры")[0].value;
var isVM = GetProp(properties, "Виртуальная машина", "Virtual Machine")[0].value;
var innerHTML = "<p>IP: " + ipAddr + "</p>" +
"<p>Domain: " + domainName + "</p>" +
"<p>Site: " + siteName + "</p>" +
"<p>CPU: " + pCPU +" <block title='Logical Processors'>(" + lCPU + ") </block></p>";
if (isVM == 'True'){
var vmName = GetProp(properties, "Имя виртуальной машины", "Virtual Machine Name")[0].value;
var vmHost = GetProp(properties, "Имя сервера узла", "Host Server Name")[0].value;
innerHTML += "<p>VMName: " + vmName + "</p><p>Host: " + vmHost + "</p>";
with($('#compIcon')[0]){
src = "https://img.icons8.com/color/96/000000/windows-client.png";
alt="Virtual Server";
title="Virtual Server";
}
//innerHTML = '<img src="https://img.icons8.com/color/96/000000/windows-client.png" alt="Virtual Server" title="Virtual Server">' + innerHTML;
}
else {
with($('#compIcon')[0]){
src = "https://img.icons8.com/color/96/000000/server.png";
alt="Physical Server";
title="Physical Server";
}
//innerHTML = '<img src="https://img.icons8.com/color/96/000000/server.png" alt="Physical Server" title="Physical Server">' + innerHTML;
}
var divInfo = $('#compInfo');
divInfo.html(innerHTML);
}
function GetObjectProperties(id,processFunc){
$.ajax({
url: "/OperationsManager/data/monitoringObjectProperties/{" + id + "}",
async: true,
type: "GET",
headers: {
"Content-Type": "application/json",
"Accept-Language": "en"
},
success: function (result) {
processFunc(result);
}
});
}
function ProcessALerts(alerts){
var criticalCounter = 0;
var warningCounter = 0;
var warningAlerts = "Warning Alerts:\n";
var criticalAlerts = "Critical Alerts:\n";
for (var i = 0; i < alerts.rows.length; i++) {
switch(alerts.rows[i].severity){
case "Error":
if (criticalCounter < 5){
criticalAlerts += alerts.rows[i].name + " (" + alerts.rows[i].age + ")\n";
}
criticalCounter++;
break;
case "Warning":
if (warningCounter < 5){
warningAlerts += alerts.rows[i].name + " (" + alerts.rows[i].age + ")\n";
}
warningCounter++;
break;
}
}
var warningColor = "green";
var errorColor = "green";
if (warningCounter > 0) { warningColor = "orange";}
if (criticalCounter >0) { errorColor = "red";}
var htmlStr = '<font style="color:' + warningColor + '" title="${warningAlerts}">'+warningCounter+'</font>/<font style="color:'+errorColor+'" title="'+criticalAlerts+'">'+criticalCounter+'</font>';
$('#alertInfo').html(htmlStr);
}
function getAlerts(id){
$.ajax({
url: "/OperationsManager/data/alert",
type: "POST",
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify({
"classId":null,
"objectIds":{objId:0},
"criteria":"((Severity = '1') OR (Severity = '2')) AND ((Priority = '0') OR (Priority = '2') OR (Priority = '1')) AND ((ResolutionState = '0') OR (ResolutionState = '247') OR (ResolutionState = '248') OR (ResolutionState = '249') OR (ResolutionState = '250') OR (ResolutionState = '254'))",
"displayColumns":["severity","monitoringobjectdisplayname","name","age","repeatcount","lastmodified"]
}
).replace("objId", id),
success: function (result) {
ProcessALerts(result);
}
});
}
function LoadPerfData(id, counters, duration, processFunc){
$.ajax({
url: "/OperationsManager/data/performance",
type: "POST",
headers: {
"Content-Type": "application/json",
"Accept-Language": "en"
},
data: JSON.stringify({
"id":id,
"performanceCounters": counters,
"legends":[
"target",
"path",
"lastvalue"
],
"duration":duration
}),
success: function (result) {
processFunc(result);
}
});
}
function ProcessUpTime(perfData){
var upTime = "NaN";
if (perfData){
var numSec = parseFloat(perfData.legends.rows[0].lastvalue);
upTime = Math.floor(( numSec / (24*60*60))) + "d" + new Date(numSec*1000).getHours() + "h" + new Date(numSec*1000).getMinutes() +"m";
}
$('#uptimeInfo').text(upTime);
}
function getUptime(id){
counters = [{"objectname":"System", "countername":"System Up Time","instancename":""}];
LoadPerfData(id, counters, DurationMin, ProcessUpTime);
}
function RenderTwoLineChart(divId, data1, data2, data1Title, data2Title, chartTitle){
var chart = new CanvasJS.Chart(divId, {
zoomEnabled: true,
title:{
text: chartTitle
},
axisY:{
title: data1Title,
lineColor: "#C24642",
tickColor: "#C24642",
labelFontColor: "#C24642",
titleFontColor: "#C24642"
},
axisY2: {
title: data2Title,
lineColor: "#7F6084",
tickColor: "#7F6084",
labelFontColor: "#7F6084",
titleFontColor: "#7F6084"
},
toolTip: {
shared: true
},
legend: {
cursor: "pointer",
itemclick: toggleDataSeries
},
data: [
{
type: "line",
name: data1Title,
color: "#C24642",
axisYIndex: 0,
showInLegend: true,
dataPoints: data1
},
{
type: "line",
name: data2Title,
color: "#7F6084",
axisYType: "secondary",
showInLegend: true,
dataPoints: data2
}
]
});
chart.render();
function toggleDataSeries(e) {
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
} else {
e.dataSeries.visible = true;
}
e.chart.render();
}
}
function GetChartDataArray(datasetData){
var perfData = [];
let dataDictionary = datasetData;
for (var key in dataDictionary) {
if(dataDictionary.hasOwnProperty(key)) {
var datetime = new Date(key);
datetime = convertUTCDateToLocalDate(datetime);
perfData.push({
y: dataDictionary[key],
x: datetime
});
}
}
return perfData;
}
function convertUTCDateToLocalDate(date) {
var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000);
var offset = date.getTimezoneOffset() / 60;
newDate.setMinutes(date.getMinutes() - date.getTimezoneOffset())
return newDate;
}
function ProcessCPUUsage(perfData){
var data1 = GetChartDataArray(perfData.datasets[0].data);
var data2 = GetChartDataArray(perfData.datasets[1].data);
RenderTwoLineChart("cpuChart", data1, data2, "CPU Usage %", "Queue Length", "CPU Statistics");
}
function getCPUUsage(id){
counters = [
{"objectname":"Processor Information", "countername":"% Processor Time","instancename":"_Total"},
{"objectname":"System", "countername":"Processor Queue Length","instancename":""}
];
LoadPerfData(id, counters, DurationMin, ProcessCPUUsage);
}
function ProcessRAMUsage(perfData){
var data1 = GetChartDataArray(perfData.datasets[0].data);
var data2 = GetChartDataArray(perfData.datasets[1].data);
RenderTwoLineChart("ramChart", data1, data2, "RAM Usage %", "Pages/sec", "RAM Statistics");
}
function getRAMUsage(id){
counters = [
{"objectname":"Memory", "countername":"PercentMemoryUsed","instancename":""},
{"objectname":"Memory", "countername":"Pages/sec","instancename":""}
];
LoadPerfData(id, counters, DurationMin, ProcessRAMUsage);
}
function GetPerfRules(id){
var ruleDict = [];
$.ajax({
url: "/OperationsManager/data/performanceCounters/{" + id + "}",
async: false,
type: "GET",
headers: {
"Content-Type": "application/json"
},
success: function (result) {
ruleDict = result.rows;
}
});
return ruleDict;
}
function FindInstances(dict, objectname, countername){
return dict.filter(function( item ) {
return (item.objectname == objectname && item.countername == countername);
});
}
function RenderDiskUsagePerc(instance, divId, freeValue, usedValue){
var chart = new CanvasJS.Chart(divId, {
title:{
text: "Disk " + instance + " Usage"
},
legend:{
cursor: "pointer"
},
data: [{
type: "pie",
showInLegend: true,
toolTipContent: "{name}: <strong>{y}%</strong>",
dataPoints: [
{ y: freeValue, name: "Free", color: "#00cc66", exploded: true },
{ y: usedValue, name: "Used", color: "#ff6666" }
]
}]
});
chart.render();
}
function ProcessDiskUsagePerc(perfData){
if (perfData){
var freeSpace = parseFloat(perfData.legends.rows[0].lastvalue);
var usedSpace = 100 - freeSpace;
var divName = "disk" + perfData.legends.rows[0].performanceinstance + "Chart";
RenderDiskUsagePerc(perfData.legends.rows[0].performanceinstance, divName, freeSpace, usedSpace);
}
}
function GetDiskUsagePerc(id, instance){
counters = [{"objectname":"LogicalDisk", "countername":"% Free Space","instancename": instance}];
LoadPerfData(id, counters, DurationMin, ProcessDiskUsagePerc);
}
function ProcessDiskUsageStats(perfData){
if (perfData){
instanceName = perfData.legends.rows[0].performanceinstance;
var divName = "disk" + instanceName + "StatChart";
var data1 = GetChartDataArray(perfData.datasets[0].data);
var data2 = GetChartDataArray(perfData.datasets[1].data);
RenderTwoLineChart(divName, data1, data2, "Queue Length", "Avg sec/transfer", "Disk " + instanceName +" Statistics");
}
}
function GetDiskUsageStats(id, instance){
counters = [
{"objectname":"LogicalDisk", "countername":"Current Disk Queue Length","instancename":instance},
{"objectname":"LogicalDisk", "countername":"Avg. Disk sec/Transfer","instancename":instance}
];
LoadPerfData(id, counters, DurationMin, ProcessDiskUsageStats);
}
function ProcessLANUsageStats(perfData){
if (perfData){
instanceName = perfData.legends.rows[0].performanceinstance;
instanceID = perfData.legends.rows[0].id;
let divName = "lan" + instanceID + "Chart";
$('#trLAN').append('<div id="' + divName + '" style="height: 250px; width: 250px;"></div>');
var data1 = GetChartDataArray(perfData.datasets[0].data);
var data2 = GetChartDataArray(perfData.datasets[1].data);
RenderTwoLineChart(divName, data1, data2, "Bytes Total/sec", "Usage %", instanceName +" Statistics");
}
}
function GetLANUsageStats(id, instance){
counters = [
{"objectname":"Network Adapter", "countername":"Bytes Total/sec","instancename":instance},
{"objectname":"Network Adapter", "countername":"PercentBandwidthUsedTotal","instancename":instance}
];
LoadPerfData(id, counters, DurationMin, ProcessLANUsageStats);
}
function objChanged(){
var objSel = $('#computers');
//debugger;
GetObjectProperties(objSel[0].value, ProcessObjProperties);
getAlerts(objSel[0].value);
getUptime(objSel[0].value);
getCPUUsage(objSel[0].value);
getRAMUsage(objSel[0].value);
var perfRules = GetPerfRules(objSel[0].value);
$('#trDisk').empty();
var diskInstances = FindInstances(perfRules, "LogicalDisk", "% Free Space");
for (var i = 0; i < diskInstances.length; i++) {
let divName = "disk" + diskInstances[i].instancename + "Chart";
let divstatName = "disk" + diskInstances[i].instancename + "StatChart";
$('#trDisk').append('<div id="' + divName + '" style="height: 250px; width: 250px;"></div>');
$('#trDisk').append('<div id="' + divstatName + '" style="height: 250px; width: 250px;"></div>');
GetDiskUsagePerc(objSel[0].value, diskInstances[i].instancename);
GetDiskUsageStats(objSel[0].value, diskInstances[i].instancename);
}
$('#trLAN').empty();
var lanInstances = FindInstances(perfRules, "Network Adapter", "PercentBandwidthUsedTotal");
for(var i = 0; i < lanInstances.length; i++) {
GetLANUsageStats(objSel[0].value, lanInstances[i].instancename);
}
localStorage.setItem("lastObjSelected_c92650fd-5b51-4fb3-a6fe-d3cd845a7066", objSel[0].value);
}
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/canvasjs/1.7.0/canvasjs.min.js"></script>
</head>
<body>
<div>Computer: <select id="computers" name="computers" onchange="objChanged()"></select></div>
<div style="display: inline-flex;">
<div style="width:250px; height:250px">
<table id="compInfoTable" >
<tr>
<td style="width:100px">
<img id="compIcon"/>
</td>
<td>
<div id="divAlert" style="font-family: sans-serif; text-align: center;">
<p style="font-size: x-small">Alerts:</p>
<p id="alertInfo" style="font-size: xx-large"></p>
<p style="font-size: x-small">Up Time:</p>
<p id="uptimeInfo" style="font-size: x-large"></p>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div id="compInfo"></div>
</td>
</tr>
</table>
</div>
<div id="cpuChart" style="width:250px; height:250px"></div>
<div id="ramChart" style="width:250px; height:250px"></div>
</div>
<div id="trDisk" style="display: inline-flex;"></div >
<div id="trLAN" style="display: inline-flex;"></div >
</body>
</html>