Get value of a cell at position (row,column) with openpyxl
from openpyxl import load_workbook wb = load_workbook(file_name, read_only=True) test_sheet = wb["Test"] print(test_sheet.cell(None, 1, 1).value)
from openpyxl import load_workbook wb = load_workbook(file_name, read_only=True) test_sheet = wb["Test"] print(test_sheet.cell(None, 1, 1).value)
Single condition filtering
# importing pandas package import pandas as pd # making data frame from csv file data = pd.read_csv("employees.csv") # replacing blank spaces with '_' data.columns =[column.replace(" ", "_") for column in data.columns] # filtering with query method data.query('Senior_Management == True', inplace = True) # display data
Multiple condition filtering
# importing pandas package import pandas as pd # making data frame from csv file data = pd.read_csv("employees.csv") # replacing blank spaces with '_' data.columns =[column.replace(" ", "_") for column in data.columns] # filtering with query method data.query('Senior_Management == True and Gender =="Male" and Team =="Marketing" and First_Name =="Johnny"', inplace = True) # display data
References
https://www.geeksforgeeks.org/python-filtering-data-with-pandas-query-method/
Image<Bgr, byte> Image1 = new Image<Bgr, byte>(Properties.Resources.Image1); //Your first image Image<Bgr, byte> Image2 = new Image<Bgr, byte>(Properties.Resources.Image2); //Your second image double Threshold = 0.8; //set it to a decimal value between 0 and 1.00, 1.00 meaning that the images must be identical Image<Gray, float> Matches = Image1.MatchTemplate(Image2, TemplateMatchingType.CcoeffNormed); for (int y = 0; y < Matches.Data.GetLength(0); y++) { for (int x = 0; x < Matches.Data.GetLength(1); x++) { if (Matches.Data[y, x, 0] >= Threshold) //Check if its a valid match { //Image2 found within Image1 } } }
References
https://stackoverflow.com/questions/39570033/template-matching-on-images-c-sharp
[DllImport("user32.dll")] public static extern void mouse_event(MouseEventFlags dwFlags, uint dx, uint dy, uint dwData, MouseEventDataXButtons dwExtraInfo); [DllImport("User32.Dll")] public static extern long SetCursorPos(int x, int y);
[Flags] public enum MouseEventFlags : uint { LEFTDOWN = 0x00000002, LEFTUP = 0x00000004, MIDDLEDOWN = 0x00000020, MIDDLEUP = 0x00000040, MOVE = 0x00000001, ABSOLUTE = 0x00008000, RIGHTDOWN = 0x00000008, RIGHTUP = 0x00000010, WHEEL = 0x00000800, XDOWN = 0x00000080, XUP = 0x00000100 } //Use the values of this enum for the 'dwData' parameter //to specify an X button when using MouseEventFlags.XDOWN or //MouseEventFlags.XUP for the dwFlags parameter. public enum MouseEventDataXButtons : uint { XBUTTON1 = 0x00000001, XBUTTON2 = 0x00000002 }
public static void MoveMouse(int x, int y) { PInvoke.SetCursorPos(x, y); } public static void ClickMouse(int x, int y) { PInvoke.mouse_event(MouseEventFlags.LEFTDOWN | MouseEventFlags.ABSOLUTE, (uint)x, (uint)y, 0, 0); Thread.Sleep(10); PInvoke.mouse_event(MouseEventFlags.LEFTUP | MouseEventFlags.ABSOLUTE, (uint)x, (uint)y, 0, 0); }
References
https://stackoverflow.com/questions/13520705/move-mouse-to-position-and-left-click
http://www.pinvoke.net/default.aspx/user32.mouse_event
https://stackoverflow.com/questions/8050825/how-to-move-mouse-cursor-using-c
https://www.pinvoke.net/default.aspx/user32.setcursorpos
First Set Process DPI Aware:
Get Screen Size on C#
https://pupli.net/2020/03/get-screen-size-on-c/
Install-Package System.Drawing.Common -Version 7.0.0
Take screenshot and save to file
using System; using System.Drawing; using System.Windows.Forms; namespace ScreenshotExample { class Program { static void Main(string[] args) { // Get the bounds of the screen Rectangle bounds = Screen.PrimaryScreen.Bounds; // Create a bitmap object to store the screenshot using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height)) { // Create a graphics object from the bitmap using (Graphics g = Graphics.FromImage(bitmap)) { // Capture the screen g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size); } // Save the screenshot as a PNG file bitmap.Save("screenshot.png"); } Console.WriteLine("Screenshot saved as screenshot.png"); } } }
Take screenshot and save to memory
using System; using System.Drawing; using System.IO; using System.Windows.Forms; namespace ScreenshotToMemory { class Program { static void Main(string[] args) { // Get the bounds of the screen Rectangle bounds = Screen.PrimaryScreen.Bounds; // Create a bitmap object to store the screenshot using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height)) { // Create a graphics object from the bitmap using (Graphics g = Graphics.FromImage(bitmap)) { // Capture the screen g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size); } // Store the screenshot in memory using MemoryStream using (MemoryStream memoryStream = new MemoryStream()) { bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png); // Convert the MemoryStream to byte array byte[] screenshotBytes = memoryStream.ToArray(); // Now the screenshot is stored in screenshotBytes, you can use it as needed // For demonstration, let's output the length of the byte array Console.WriteLine($"Screenshot captured. Byte array length: {screenshotBytes.Length}"); } } } } }
The process is running under DPI virtualization. So we should apply the DPI aware manifest option to stop DPI virtualization
[DllImport("user32.dll", SetLastError=true)] static extern bool SetProcessDPIAware();
Then
public enum SystemMetric { VirtualScreenWidth = 78, // CXVIRTUALSCREEN 0x0000004E VirtualScreenHeight = 79, // CYVIRTUALSCREEN 0x0000004F } [DllImport("user32.dll")] public static extern int GetSystemMetrics(SystemMetric metric); public static Size GetVirtualDisplaySize() { var width = GetSystemMetrics(SystemMetric.VirtualScreenWidth); var height = GetSystemMetrics(SystemMetric.VirtualScreenHeight); return new Size(width, height); }
References
https://stackoverflow.com/questions/28339257/getsystemmetrics-and-tscreen-returns-wrong-value
https://www.pinvoke.net/default.aspx/user32/SetProcessDPIAware.html
https://stackoverflow.com/questions/1317235/c-get-complete-desktop-size
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setprocessdpiaware
scp <source> <destination>
To copy a file from B to A while logged into B:
scp /path/to/file username@a:/path/to/destination
To copy a file from B to A while logged into A:
scp username@b:/path/to/file /path/to/destination
Server Installation
wget https://raw.githubusercontent.com/complexorganizations/wireguard-install/master/wireguard-server.sh -P /etc/wireguard/ bash /etc/wireguard/wireguard-server.sh
Client Installation
wget https://raw.githubusercontent.com/complexorganizations/wireguard-install/master/wireguard-client.sh -P /etc/wireguard/ bash /etc/wireguard/wireguard-client.sh
Or
apt-get update apt-get install software-properties-common -y add-apt-repository ppa:wireguard/wireguard -y apt-get update apt-get install linux-headers-"$(uname -r)" -y apt-get install wireguard qrencode haveged resolvconf -y
Run Client
# Install the config file to the WireGuard configuration directory on your # Linux client: sudo install -o root -g root -m 600 <username>.conf /etc/wireguard/wg0.conf # Start the WireGuard VPN: sudo systemctl start wg-quick@wg0 # Check that it started properly: sudo systemctl status wg-quick@wg0 # Verify the connection to the AlgoVPN: sudo wg # See that your client is using the IP address of your AlgoVPN: curl ipv4.icanhazip.com # Optionally configure the connection to come up at boot time: sudo systemctl enable wg-quick@wg0
References
https://github.com/complexorganizations/wireguard-install
https://trailofbits.github.io/algo/client-linux-wireguard.html
{ path: 'project/:id', component: ProjectComponent, resolve: { data: DataResolver }, data: { path: 'project/:id' } } class DataResolve implements Resolve<string> { resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { return route.data['path']; } }
return new Observable<Item>(subscriber => { // tslint:disable-next-line const itemId = route.params.id; this.db.findItemByItemId2(itemId).subscribe(value => { subscriber.next(value); subscriber.complete(); }); });
@ngModule({ imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: ‘reload’})], exports: [RouterModule], })
export const routes: Routes = [ { path: ‘invites’, component: InviteComponent, children: [ { path: ‘’, loadChildren: ‘./pages/invites/invites.module#InvitesModule’, }, ], canActivate: [AuthenticationGuard], runGuardsAndResolvers: ‘always’, } ]
export class InviteComponent implements OnInit, OnDestroy{ // ... your class variables here navigationSubscription; constructor( // … your declarations here private router: Router, ) { // subscribe to the router events - storing the subscription so // we can unsubscribe later. this.navigationSubscription = this.router.events.subscribe((e: any) => { // If it is a NavigationEnd event re-initalise the component if (e instanceof NavigationEnd) { this.initialiseInvites(); } }); } initialiseInvites() { // Set default values and re-fetch any data you need. } ngOnDestroy() { // avoid memory leaks here by cleaning up after ourselves. If we // don't then we will continue to run our initialiseInvites() // method on every navigationEnd event. if (this.navigationSubscription) { this.navigationSubscription.unsubscribe(); } } }