Oracle | SELECT NVL(col, 0 ) FROM mytable |
SQL Server | SELECT ISNULL(col, 0 ) FROM mytable
|
MySQL | SELECT IFNULL(col, 0) AS column_name FROM mytable
|
May 6, 2024
Mar 15, 2024
AI means everyone can now be a programmer(?)
Assuming you are not a developer and want to create an app to take screenshots on macOS.
You started to ask questions to AI and installed developer tools. Now you are ready for development.
- Gemini
- ChatGPT
How to take a screenshot on macos xcode using swift?
You paste the code to XCode and see an error!
Ask Gemini to provide another solution.The code you provided in swift didn't work. Suggest another swift way to capture a screenshot.
Gemini gives an apology and suggests another solution.
Let's see in XCode.
Can you see a strange code that contains Arabic letters?
guard let contentFilter = SCC محتوى الشاشة(sharingMode: .none) else { return nil }
You want to switch to ChatGPT to accomplish this easy task with the same prompt. 👇
You paste the code provided by ChatGPT. Again, there is a problem in the code!
context.makeCurrent() didn't work. Is there any other way?
You pasted this code, and it worked! After a few trials, now think you are a programmer.
What will you do if you see CGDisplayCreateImage(_:) is deprecated?
So you keep asking for alternative ways, and you learn that there is a shiny framework named ScreenCaptureKit.
I recommend trying to ask both Gemini and ChatGPT to take a screenshot using ScreenCaptureKit. I tried, on several attempts, AI suggested wrong code each time.
Then you will decide how easy programming is!
May 17, 2023
How to stream image from generic handler
This article provides an example of streaming images from a generic handler in .NET.
If you store your images in a database table as byte[] then you can utilize a handler to display them in a data grid.
The process involves sending a request to the handler (.ashx) page, retrieving the image, and then displaying it.
In the given example, we have a grid that stores IDs in one column and displays the corresponding images in another column using an asp:ImageField.
Create a generic handler that streams image. In this example ImageField requests image from getFaceImage.ashx by DataImageUrlField parameter in DataImageUrlFormatString formatpublic void ProcessRequest(HttpContext context) { int id; if (context.Request.QueryString["id"] != null) { id = Convert.ToInt32(context.Request.QueryString["id"]); if (id > 0) { context.Response.ContentType = "image/jpeg"; Stream strm = new MemoryStream(); GetImage(id).Save(strm, ImageFormat.Jpeg); strm.Position = 0; byte[] buffer = new byte[4096]; int byteSeq = strm.Read(buffer, 0, 4096); while (byteSeq > 0) { context.Response.OutputStream.Write(buffer, 0, byteSeq); byteSeq = strm.Read(buffer, 0, 4096); } } } else return; } public Image GetImage(int id) { //Make appropriate calls for image according to id //... //return the image return new Bitmap(""); }
Nov 22, 2022
Gitlab with Visual Studio 2022
VS Marketplace: GitLab Extension for Visual Studio
You can login any of your favorite GitLab servers and start your great job!
The GitLab Extension for Visual Studio provides GitLab integration in Visual Studio 2015/2017/2019.
In VS 2022, I created a new project and added to local git on user interface.
I also created an empty project on gitlab with the same name.
In gitlab project homepage it helps you what to do.
cd existing_repo
git remote add origin https://gitlab.com/git_username/project.git
git branch -M main
git push -uf origin main
I switched to command line and run commands above.
When you push the project to remote repository git shows a window for authentication.
I selected browser login and git command got credentials from browser.
C:\project>git push -uf origin main
info: please complete authentication in your browser...
Enumerating objects: 1718, done.
Counting objects: 100% (1718/1718), done.
Delta compression using up to 4 threads
Compressing objects: 100% (1688/1688), done.
Writing objects: 100% (1718/1718), 35.76 MiB | 540.00 KiB/s, done.
Total 1718 (delta 470), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (470/470), done.
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To https://gitlab.com/git_username/project.git
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://gitlab.com/git_username/project.git'
The problem was VS created a branch named master, but in gitlab branch name was main.I created a new branch named master on gitlab.
In command line switch to branch named master and push project to master.
C:\projectO>git branch -M master
C:\project>git push -uf origin master
Enumerating objects: 1718, done.
Counting objects: 100% (1718/1718), done.
Delta compression using up to 4 threads
Compressing objects: 100% (1688/1688), done.
Writing objects: 100% (1718/1718), 35.76 MiB | 561.00 KiB/s, done.
Total 1718 (delta 470), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (470/470), done.
remote:
remote: To create a merge request for master, visit:
remote: https://gitlab.com/git_username/project/-/merge_requests/new?merge_request%5Bsource_branch%5D=master
remote:
To https://gitlab.com/git_username/project.git
You can create a merge request in gitlab to push master branch into main.
Oct 9, 2021
Windows 10 window border change
Problem
Losing title bar when multiple windows overlap, finding drag position becomes harder.Solution
>Windows > Settings > Colors Select "Title bars and windows borders".Windows Activation Issue
If Windows is not activated you can not change color settings. We can enable window borders by regedit commands.
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM" /v "ColorPrevalence" /t REG_DWORD /d "1" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM" /v "AccentColor" /t REG_DWORD /d "7439985" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM" /v "AccentColorInactive" /t REG_DWORD /d "13882323" /f
May 8, 2021
[Tips] Random string generators C#
void Main()
{
for(int i=0;i<10;i++){
Console.WriteLine("GetRandomString: " + GetRandomString(8));
}
for(int i=0;i<10;i++){
Console.WriteLine("GetRandomFileName: " + GetRandomFileName());
}
}
public static string GetRandomString(int length)
{
Random random = new Random();
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
public static string GetRandomFileName()
{
string path = Path.GetRandomFileName();
path = path.Replace(".", ""); // Remove period.
return path;
}
Result
GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomString: tpZIDi0C GetRandomFileName: smb1u03pvyf GetRandomFileName: 2ccre5kihis GetRandomFileName: 24thz5is1pj GetRandomFileName: ni0z42lexag GetRandomFileName: 1u11tcvd3qv GetRandomFileName: vtiqp2sevwy GetRandomFileName: y2jhumy1hcx GetRandomFileName: 5o0gsyronpk GetRandomFileName: m0zva3mhdfn GetRandomFileName: 2a2dzcdkpbl
Apr 4, 2020
Failed to install Intel HAXM
Running Intel® HAXM installer Failed to install Intel HAXM.I will list 3 different options.
For details, please check the installation log: HAXM installation failed. To install HAXM follow the instructions found at:
https://software.intel.com/android/articles/installation-instructions-for-intel-hardware-accelerated-execution-manager-windows
This computer does not support Intel Virtualization Technology (VT-x)
or it is being exclusively used by Hyper-V.
HAXM cannot be installed. Please ensure Hyper-V is disabled in Windows Features,
or refer to the Intel HAXM documentation for more information.
1. Program and Features
Be sure Hyper-V not marked. If installed uncheck it.2. Command line (CMD)
dism.exe /Online /Disable-Feature:Microsoft-Hyper-Vor
bcdedit /set hypervisorlaunchtype off
3. Device Guard and Credential Guard hardware readiness tool
Download tool, unzip and open powershell window.First change execution policy.
PS C:\temp\dgreadiness_v3.6> set-executionpolicy remotesignedRun command.
Execution Policy Change The execution policy helps protect you from scripts that you do not trust.
Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170.
Do you want to change the execution policy? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): a
PS C:\temp\dgreadiness_v3.6> .\DG_Readiness_Tool_v3.6.ps1 -DisableYou will see success messages.
Do you want to run software from this untrusted publisher?
File C:\temp\dgreadiness_v3.6\DG_Readiness_Tool_v3.6.ps1 is published by CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US and is not trusted on your system. Only run scripts from trusted publishers.
[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help (default is "D"): a
Disabling Hyper-V and IOMMUAfter reboot continue to install HAXM.
Disabling Hyper-V and IOMMU successful
Please reboot the machine, for settings to be applied.
Mar 16, 2020
Dynamic Assembly Loading (C# Reflection)
using System.Net.Http;
using System;
using System.Linq;
var client = new HttpClient();
client.BaseAddress = new Uri("http://api.open-notify.org/astros.json");
string result = client.GetStringAsync("").Result;
Don't add System.Net.Http dll to your reference list. It will be automatically loaded from GAC.
using System;
using System.Linq;
using System.Reflection;
//We don't have "using System.Net.Http"
//Load System.Net.Http
string name1 = "System.Net.Http,Version=4.0.0.0," + "Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a";
Assembly a1 = Assembly.Load(name1);
//Create HttpClient instance
Type clientType = a1.GetTypes().Where(t => t.Name.Equals("HttpClient")).Single();
object client = Activator.CreateInstance(clientType);
//Set BaseAddress on client
PropertyInfo propertyBaseAddress = clientType.GetProperties().Where(p => p.Name == "BaseAddress").Single();
Uri url = new Uri("http://api.open-notify.org/astros.json");
propertyBaseAddress.SetValue(client, url);
//Test property value
var BaseAddressValue = propertyBaseAddress.GetValue(client);
//Get HttpResponseMessage Task
var methodGetStringAsync = clientType.GetMethod("GetStringAsync", new Type[] { typeof(Uri) });
var responseTask = methodGetStringAsync.Invoke(client, new string[] { null });
//Get HttpResponseMessage result from Task
var responseType = responseTask.GetType();
PropertyInfo propResponse = responseType.GetProperties().Where(p => p.Name == "Result").Single();
var responseResult = propResponse.GetValue(responseTask); //This is the string result
Bonus: List your loaded assemblies
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly a in assemblies)
{
Console.WriteLine(a.GetName());
}
Output
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Net.Http is displayed here even not referenced in Visual Studio.
Mar 13, 2020
Strong Name Signing in .NET
For example your software using a class named Class1 in ClassLibrary1 namespace.
If you compile a new dll contains ClassLibrary1.Class1 then you can use this dll instead of original one.
This is very basic example but it can be applicable in real life.
To be sure that your software is using your assembly version then you can sign your project.
Microsoft description is:
When a strong-named assembly is created, it contains the simple text name of the assembly, the version number, optional culture information, a digital signature, and the public key that corresponds to the private key used for signing.Example here shows signing process in Visual Studio. You can use also command line tool (sn.exe).
Coding
Our solution has 2 projects, executable and a class library. Main program is using ClassLibrary1.Class1
using ClassLibrary1;
using System;
namespace strongname
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("strongname loaded");
Class1 c = new Class1();
Console.ReadKey();
}
}
}
using System;
namespace ClassLibrary1
{
public class Class1
{
public Class1()
{
Console.WriteLine("Hello from Class1");
}
}
}
Sign
Right click to project in VS and select Properties. In Signing tab check "Sign the assembly" and select "New" in listbox. Enter password for your private key.This will create a pfx (Personal Information Exchange Format) file in your project folder.
Run
strongname loaded
Hello from Class1
Recompile
If you create a new project with the same namespace, class and functions then you can use the new dll with current executable.For test change the code and recompile dll in outside of project folder.
csc.exe /t:library /out:ClassLibrary1.dll Class1.csThen replace the old ClassLibrary1.dll with the new file.
Result
When you try to run your executable an error will be shown because the new dll has not signed with correct key.C:\strongname\bin\Debug\strongname.exeIf you completely remove signing from your projects then your manipulated dll will work.
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=77d705841860f240' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
at strongname.Program.Main(String[] args)
Jan 7, 2020
Asp.Net Settings for Hosting
1. Security Exception
Description: The application attempted to perform an operation not allowed by the security policy.To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: Request failed.
Solution:
<system.web> <trust level="Full" /> </system.web>
2. Publish website without roslyn
Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform "Your Web API project name"In your publish profile settings, uncheck "Allow precompiled site to be updatable". You can find this under Settings > Precompile during publishing > configure.
Remove codedom from web.config.
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/> </compilers> </system.codedom>
4. MapPath
System.Web.Hosting.HostingEnvironment.MapPath("~/log");
4. Restrict file download
Create web.config file in the folder you want to prevent file download for a specific extension.<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <security> <requestFiltering> <fileExtensions applyToWebDAV="false"> <add fileExtension=".txt" allowed="false" /> </fileExtensions> </requestFiltering> </security> </system.webServer> </configuration>