Sub RenameSheets()
Dim strFolder As String
Dim strFile As String
Dim wbk As Workbook
Dim i As Long
With Application.FileDialog(4) ' msoFileDialogFolderPicker
' Show dialog
If .Show Then
' Assign selected folder to variable
strFolder = .SelectedItems(1)
Else
Beep
Exit Sub
End If
End With
' Append \ if necessary
If Right(strFolder, 1) <> "\" Then
strFolder = strFolder & "\"
End If
On Error GoTo ErrHandler
' Turn off screen updating and event handling
Application.ScreenUpdating = False
Application.EnableEvents = False
' Get first file name in folder
strFile = Dir(strFolder & "*.xls*")
' Loop
Do While strFile <> ""
' Open workbook
Set wbk = Workbooks.Open(Filename:=strFolder & strFile)
' Loop through sheets except first one
' For i = 2 To wbk.Worksheets.Count
' With wbk.Worksheets(i)
' Append " Old" to sheet name
' .Name = .Name & " Old"
'End With
'Next i
Application.DisplayAlerts = False
If wbk.Worksheets.Count > 1 Then
wbk.Worksheets(1).Delete
End If
Application.DisplayAlerts = True
' wbk.Close True
' Close and save workbook
wbk.Close SaveChanges:=True
' Get next file name
strFile = Dir
Loop
ExitHandler:
' Turn on screen updating and event handling
Application.EnableEvents = True
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler
End Sub
Wednesday, December 18, 2024
macro to delete very first sheet of all excel files in a folder
Thursday, December 12, 2024
turn the pushy_https behaviour on in cpan
from terminal
type cpan
you get the cpan prompt
then
o conf init pushy_https
yes
perl tk package install error " expected identifier or '(' before numeric constant" solved on windows 11
when trying
cpan install Tk
I was getting lot of errors
the solution is
just install strawberry perl
then from command line
cpanm https://github.com/Lamprecht/perl-tk.git@Strawberry-5.38-patch
Source:https://stackoverflow.com/questions/78323022/installing-tk-on-strawberry-perl-leads-to-compiler-errors
Monday, October 21, 2024
Connect my zeb duke wireless bluetooth headphone using terminal in fedora 40
install bluez-deprecated
sudo dnf install bluez-deprecated
hcitool scan
should show the bluetooth devices
if not
bluetoothctl
agent on
scan on # wait for your device's address to show up here
scan off
trust MAC_ADDRESS (in my case 41:42:FF:71:7A:6B)
pair MAC_ADDRRESS(in my case 41:42:FF:71:7A:6B)
// the above comment will fail if the device is already paired
connect MAC_ADDRESS (in my case 41:42:FF:71:7A:6B)
there are simpler ways off course
bluetoothctl devices
this will show the device with the mac address
now if the device is not paired
bluetoothctl pair 41:42:FF:71:7A:6B
if this succeeds then
bluetoothctl connect 41:42:FF:71:7A:6B
to disconnect
bluetoothctl disconnect 41:42:FF:71:7A:6B
to remove the pairing
bluetoothctl remove 41:42:FF:71:7A:6B
Source:https://unix.stackexchange.com/questions/96693/connect-to-a-bluetooth-device-via-terminal
Source:https://unix.stackexchange.com/questions/96693/connect-to-a-bluetooth-device-via-terminal
Source:https://askubuntu.com/questions/758586/how-to-unpair-bluetooth-device-from-the-command-line
Source:https://www.baeldung.com/linux/bluetooth-via-terminal
Saturday, October 19, 2024
Enable javafx option in eclipse,javafx is not showing solved
Open eclipse,create a java project,click help,click install new software
in the label beside work with
paste
https://download.eclipse.org/efxclipse/updates-released/3.9.0/site/
there might open a box
you have to type there
e(fx)clipse
select every component ,install
restart eclicpse
Source:https://www.youtube.com/watch?v=s3Gz1ivERzY
Switch from One Java Version to Another
Switch from One Java Version to Another
If you have multiple Java versions installed on your system, you can list them by using the alternatives command: sudo alternatives --config java
The currently active version is marked with a + sign.
To switch to another version, type the appropriate number and press Enter.
Install java (openjdk and oraclejdk) on fedora 40
search openjdk version
dnf search openjdk
sudo dnf install java-latest-openjdk.x86_64
java -version
showing i installed version 21
now go the oracle jdk download page
https://www.oracle.com/java/technologies/downloads/?er=221886
I downloaded jdk-23_linux-x64_bin.tar.gz
sudo mkdir -p /usr/local/java
cd Downloads
sudo cp -r jdk-23_linux-x64_bin.tar.gz /usr/local/java
sudo tar zxvf jdk-23_linux-x64_bin.tar.gz
sudo nano /etc/profile
add the following lines
JAVA_HOME=/usr/local/java/jdk-23.0.1
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
save the file and close
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk-23.0.1/bin/java" 1
echo $?
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk-23.0.1/bin/javac" 1
echo $?
sudo update-alternatives --install "/usr/bin/javaws.itweb" "javaws.itweb" "/usr/local/java/jdk-23.0.1/bin/javaws.itweb" 1
echo $?
sudo update-alternatives --set java /usr/local/java/jdk-23.0.1/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk-23.0.1/bin/javac
sudo update-alternatives --set javaws.itweb /usr/local/java/jdk-23.0.1/bin/javaws.itweb
source /etc/profile
reboot
now both java and javac command is working..
Source:https://phoenixnap.com/kb/fedora-install-java
Monday, June 24, 2024
Install obs-studio in fedora 40
sudo dnf upgrade --refresh
Install OBS Studio via DNF Command
To install OBS Studio on Fedora, utilizing the main release appstream for most users is the best method, given it’s a 6-month cycle release. Input the following command in your terminal to begin the installation:
sudo dnf install obs-studio
For developers interested in OBS Studio’s development packages, install the development package with:
sudo dnf install obs-studio-devel
Source:https://linuxcapable.com/install-obs-studio-fedora-linux/
Friday, June 14, 2024
eve-ng web gui login issue solved
df -h
to see you have sufficient space
if you do not have sufficient space you can add another virtual drive
log in eve-ng virtual machine as root
and see if mysql server is working
sudo service mysql status
or
ps aux | grep mysql
if mysql is running
To fix permission, enter this command in eve-ng console
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
if this does not solve the issue you can restore the db
unl_wrapper -a restoredb
However the issue for me was you can not login using root in web gui in eve-ng
you have to use
username admin
password eve
Friday, June 7, 2024
add ensp to windows firewall
Choose Start > Control Panel > Windows Firewall.
Select Allow a program or feature through Windows Firewall on the Windows Firewall page.
Check whether Public in eNSP_VBoxServer is selected on the Allowed Programs page.
If Public is not selected, select it, click OK.
this app can't run on this device virtualbox windows 11 solved
I did this steps and works for me to run VirtualBox on Windows 11 even being Windows Insider
1. Run this command on PowerShell with Admistrator perms:
bcdedit /set hypervisorlaunchtype off
2. Open Windows Settings > Update & Security > Windows Security > Device Security and then under Core isolation, selecting Core isolation details. Then Turn off the option "Memory Integrity".
3. Restart Windows and enjoy!
Source: https://forums.virtualbox.org/viewtopic.php?t=103302
Friday, May 31, 2024
can not safely remove usb drives solved in windows 11
go to services.msc
search for windows search service
if the service is running ,stop it or restart it
problem solved for me
Tuesday, May 28, 2024
VirtualBox USB enumeration error solved in fedora 40
When opening virtualbox first time in linux you might see a pop up message like
USB enumeration error
This fix will probably solve a lot of the problems you might have with VirtualBox 7.0. For your user to do a number of things with VirtualBox, it must be a member of the vboxusers group. Unfortunately, the installation of VirtualBox 7.0 doesn’t add your user to that group, so you have to do it manually.
Fortunately, this is simple. Open a terminal window and issue the command:
sudo usermod -aG vboxusers $USER
Log out of the desktop and log back in. Start VirtualBox 7.0, and you should see those errors have vanished.
Source:https://www.techrepublic.com/article/fix-virtualbox-usb-error/
Install gns3 using dnf in fedora40
dnf search gns3
you will see tha packages gns3-server gns3-gui
sudo dnf install gns3-server gns3-gui
Search for VrtualBox and install using dnf in fedora 40
dnf search virtualbox
you will see VirtualBox package available
sudo dnf install VirtualBox
Setting the fastest mirror on dnf on fedora 40
Setting the fastest mirror for DNF
sudo vi /etc/dnf/dnf.conf
then should add to this file the following line:
fastestmirror=true
save and exit
sudo dnf update
See the version of fedora you installed in terminal
type the following command:
cat /etc/fedora-release
and press Enter
Thursday, May 16, 2024
Diskpart - Can't delete a partition without the force protected parameter set solved
You need to add the override option:
delete partition override
Source:https://superuser.com/questions/1077372/diskpart-cant-delete-a-partition-without-the-force-protected-parameter-set
Remove Ubuntu from duel boot configuration with windows 11
go to recovery
restart windows and go to uefi
select windows boot manager and position it above ubuntu entry
restart
delete all ubuntu partitions using diskmgmt.msc
then
> diskpart
> list disk # select the primary disk
> select disk 0 # disk 0 is
> list partition # a list of partition is opened
Note-> Check which is the system partition (example partition 1 is system partition)
> select partition 1 #select the system partition
> assign letter=x #disk is now mounted in your explorer verify with (windows+E)
>exit #exit from diskpart
>x: # this would select this newly mounted disk x:
> dir # displays content
> cd efi
>dir #displays content
Note-> You can now see the OS check your Linux OS
>rd ubuntu /S #if Linux os is Ubuntu
>y #to confirm delete
Source:https://askubuntu.com/questions/921046/how-to-remove-ubuntu-from-boot-menu-after-deleting-ubuntu-partition-in-windows
Monday, February 26, 2024
সি শেখানোর করুণ কাহিনী
অনেক বয়স হয়ে গেল বুঝলেন তো ,একসময় কারোর বয়স বত্রিশ শুনলেই অবজ্ঞায় ঠোঁট বেঁকে যেত ,বুড়ো মাল ,ঘাটের মরা এইসব ভাবতাম ,এড়িয়ে চলতাম বলা চলে ,এখন নিজেই চল্লিশ ,চুল কম পাকলো ,দাড়ি বেশি পেকে গেলো ,সেই দেখে আবার এক বাচ্চা ছেলে দাদু বলে ডেকেছিল
এই বয়েসে একটা জিনিস লোকে এড়িয়ে চলে ,ফালতু হেনস্থা হওয়া ,কিন্তু মানুষের সঙ্গে কথা বলার কাজ আমার ,কাজেই ওই হেনস্থার জায়গাটা কখনো বন্ধ হবে না ,একটা উদাহরণ দি ,একবার হাওড়া ময়দানে এক বিহারি মেয়েকে পড়াতাম ,জ্ঞান তপস্সিনি বলা যায় ,শিবপুরের ছাত্রী ,তবে এখন আবার শিবপুর কে শিবপুর কেউ বলে না ,আই আই ই এস টি না কি যেন বলে ,হাওড়া ময়দানের ঘুপচি ঘরে পড়াতাম ,কিছুদিন পড়েছিল ,গড়গড় এর দুঃস্বপ্ন বলা চলে ,তবে আমার খারাপ লাগে নি ,দুটো প্রশ্ন এই পর্যন্ত পড়ে মাংস র মাথায় আসবে ,ঘুপচি ঘরে কি পাং পাং হয়েছিল ,শিবপুরের ছাত্রী আমার মতো অপোগন্ড গণ্ডমূর্খের কাছে পড়লো ইটা কিভাবে সম্ভব ,দুটো প্রশ্নের উত্তর ই হতাশা জনক ,এই পোস্ট হবে শুস্ক কাষ্ঠঙ ,লিখতেও মজা লাগছে ,এ যেন স্কিৎজোফ্রেনিয়া রোগীর ডায়েরি ,নিজের সঙ্গে নিজের কথোপকথন
শিবপুরের ব্যাপারস্যাপার হলো ক্লাস এসাইনমেন্ট হেবি কঠিন,কিন্তু পরীক্ষা সহজ ,পরিশ্রমী ছাত্র ছাত্রীরা প্রোগ্রামিং করতে গিয়ে একটু সংকটে পড়ে ,আমি কি এই বয়েসে বুঝতাম কিছু ,নাঃ পানু দেখতাম আর সিনেমা দেখতাম ,বন্ধুদের সঙ্গে হাহা হিহি চলতো ,আদি রসাত্মক ইয়ার্কি না হলে বিরক্ত লাগতো ,হু হু বয়েজ স্কুলের অভিশাপ আর কি
হেনস্থার প্রসঙ্গে আসি ,ছাত্রী সি প্রোগ্রামিং এ ইনপুট এ একটি বাক্য নিতে পারছে না,খুব উৎসাহ নিয়ে scanf বোঝাতে গেলাম,দেখলাম নিজের ও হলো না ,কেন ,কারণ ডব্লিউ বিউটি তে শেখানো হয় নি ,scanf দিয়ে যদি ইনপুট নেন ,ইউজার যদি ইনপুট এ অতিরিক্ত ব্ল্যান্ক স্পেস টাইপ করে বা নিউলাইন ক্যারেক্টার টাইপ করে scanf ইনপুট নেবেই না ,ছাত্রী কে আরেকটা কাজ দিয়ে নিজে একটু গুগুল করে নিলাম ,দেখলাম সমস্যার সমাধান আছে ,কপি করে দিলাম
#include <stdio.h>
int main()
{
char sen[100];
scanf("%[^\n]s", sen );
printf("Output : %s", sen);
return 0;
}
এই প্রোগ্রামটি একটা সেন্টেন্স কে ইনপুট হিসেবে নিতে পারে,ছাত্রীকে দেখিয়ে বেশ একটা কের্দানি করেছি কি করিনি ,ছাত্রী বলে আরে এতো প্রথম সমস্যা ,মূল সমস্যার ছোট একটি অংশ মাত্র
আমি ঘাবড়ে গেলাম,বুজলাম আরো হেনস্থা আছে কপালে ,বললাম কি সমস্যা আছে বলো ,মনে মনে ভাবছি বেশি জটিল যেন না হয় ভগবান ,এই মাসের মাইনে বাকি
বলে এইভাবে একটা কালেকশন অফ স্ট্রিং নিতে হবে ইনপুট হিসেবে ,স্ট্রিং মানে জানেন তো ,ধরুন আপনার নাম sourav ,s একটা ক্যারেক্টার ,এরকম একাধিক ক্যারেক্টার কে হয় একটা স্ট্রিং ,মানে sourav একটা string ,ক্যারেক্টার মানে যা ইচ্ছা হতে পারে ,নাম্বার ও হতে পারে ,সেই হিসেবে ১০০ ও একটা স্ট্রিং হতে পারে,তবে স্ট্রিং ডবল কোটেশনে ঢাকা থাকবে ,"১০০" বা "সৌরভ",ক্যারেক্টার হলে সিঙ্গল কোটেশনে ঢাকা থাকবে 'স',এই হলো গিয়ে সি প্রোগ্রামিং এর নিয়ম কানুন
বললাম সে ঠিক আছে একটা কালেকশন অফ স্ট্রিং নিতে হবে ,তারপর ,উপরের প্রোগ্রামটি তো একটা কালেকশন অফ স্ট্রিং বা একটি বাক্যকে ইনপুট হিসেবে নিয়ে একটি স্ট্রিং ভ্যারিয়েবল এ স্টোর করতে পারে তাই না ,তার মানে প্রব্লেম তো সল্ভড
সে বিরক্ত হয়ে বলে আরে নানা একটা ভ্যারিয়েবল নয় একটা এরে তে স্টোর করতে হবে ,তারপর শব্দগুলো সর্টিং করতে হবে ,সর্টিং মানে কি ,না আলফাবেট এর ক্রোম অনুযায়ী আগে পরে বসবে
একটা উদাহরণ দি ইন্টারনেট থেকে কপি করে
ধরুন ইনপুট এসেছে
Input: arr[] = {“geeks”, “for”, “geeksforgeeks”}
Output:
for
geeks
geeksforgeeks
বুঝতেই পারছেন প্রতিটা শব্দের সঙ্গে অন্য শব্দগুলোর তুলনা বলে ,এরকম তুলনার একটা নাম আছে ,lexicographical তুলনা ,এখানে প্রতিটা স্ট্রিং এর প্রতিটা অক্ষর আরেকটি স্ট্রিং এর সিম পজিশনে থাকা অক্ষরের সঙ্গে তুলনা হয়
ইন্টারনেট থেকে কপি করে একটা প্রোগ্রাম দেখাই
#include <stdio.h>
void compareStrings(char* s1, char* s2)
{
int i;
// comparing each character
for (i = 0; s1[i] != '\0' || s2[i] != '\0'; i++) {
if (s1[i] > s2[i]) {
printf("String 1 is lexicographically greater "
"than string 2");
return;
}
else if (s2[i] > s1[i]) {
printf("String 2 is lexicographically greater "
"than string 1");
return;
}
}
// comparing length of two strings
if (s1[i] != '\0') {
printf("String 1 is lexicographically greater than "
"string 2");
}
else if (s2[i] != '\0') {
printf("String 2 is lexicographically greater than "
"string 1");
}
else {
printf("Both strings are lexicographically equal");
}
}
int main()
{
// declaring two strings
char s1[20] = "help";
char s2[20] = "held";
// function call
compareStrings(s1, s2);
return 0;
}
এই প্রোগ্রামটি কি করতে পারে ,দুটো স্ট্রিং এর মধ্যে কম্পেয়ার করতে পারে ,কিন্তু এতে আমার কাজ শেষ হচ্ছে না ,আমাকে পুরো বাক্যের প্রতিটা শব্দের বা স্ট্রিং এর সঙ্গে ওপর প্রতিটি বাক্যের বা স্ট্রিং এর এরকম কম্পারিসন করতে হইবে
এই প্রোগ্রামটি কি ভাবে কাজ করছে সেটাও নেট থেকে কপি করে লিখছি
Iterate over both the strings using a for-loop.
Compare each character of the two strings till an unmatched character is found.
For the unmatched character at position i, if s1[i] < s2[i], s1 is lexicographically smaller string.
Otherwise, s2 is the lexicographically smaller string.
If no unmatched character is found, compare the length of both strings.
The longer string is lexicographically smaller.
সমস্যার ছোট একটি অংশ সমাধান হলো
এবার এই অংশ টিকে ব্যবহার করতে হবে এমন একটি প্রোগ্রাম এ যেখানে প্রোগ্রাম প্রতিটা স্ট্রিং এর মধ্যে এই উপরের প্রোগ্রামটি চালাবে
আবার গুগুল করে চুরি করে লিখে দিলাম একটা ,নির্লজ্জের মতো লাইন বই লাইন কপি বলাই বাহুল্য
#include<stdio.h>
#include<string.h>
int main()
{
char str[5][50],temp[50];
int i,j;
printf("Enter 5 Words:\n");
for(i=0;i<5;i++)
scanf("%s[^\n]",str[i]);
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(strcmp(str[i],str[j])>0)
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
}
printf("\nIn lexicographical order: \n");
for(i=0;i<5;i++)
puts(str[i]);
return 0;
}
কাজ হচ্ছে ,কিন্তু ছাত্রী খুশি নয় ,বলে ম্যাডাম মানা করেছেন এরকম স্ট্রিং লাইব্রেরি ব্যবহার করতে ,নিজে ফাঙ্কশন বানাতে হবে
মাথায় বাজ পড়লো ,বুজলাম দিন খারাপ ,এতো বড় মাপের প্রোগ্রামার কবে হলাম আমি সি প্রোগ্রামিং এর ইন বিল্ট ফাঙ্কশন রিপ্লেস করে নিজের বানাবো
যায় হোক আবার গুগুল থেকে চুরি করলাম
এদিক ওদিক থেকে চুরি করে ঘন্ট টাইপের বানালাম একটা
int my_strcmp(const char *a, const char *b)
{
while (*a && *a == *b) { ++a; ++b; }
return (int)(unsigned char)(*a) - (int)(unsigned char)(*b);
}
যাতে strcmp ফাঙ্কশন টা অন্তত রিপ্লেস হলো,strcmp না ব্যবহার করে এখন নাহয় my_strcmp ব্যবহার করবো
ছাত্রী এবার বললো সি তে ইন বিল্ট ফাঙ্কশন পাল্টে (গুগুল থেকে চুরি ) যে ফাঙ্কশন তা লেখা হয়েছে বুঝতে পারছে না
আবার মাথায় বাজ পড়লো ,গুগুল খুঁজতে আরম্ভ করলাম একই জিনিস আর একটু সহজ ভাবে (পড়তে হবে পয়েন্টার এর জঙ্গল না ইউজ করে বা রেকারসন ব্যবহার না করে)কেউ করেছে কি না
অনেক খুঁজে মিলিয়ে মিশিয়ে করলাম একটা
এরকম দাঁড়ালো জিনিসটা
#include <stdio.h>
#include<string.h>
/*int my_strcmp(const char *a, const char *b)
{
while (*a && *a == *b) { ++a; ++b; }
return (int)(unsigned char)(*a) - (int)(unsigned char)(*b);
}*/
int compareStrings(const char *s1, const char *s2)
{
int i;
// comparing each character
for (i = 0; s1[i] != '\0' || s2[i] != '\0'; i++) {
if (s1[i] > s2[i]) {
return (int)(unsigned char)(*s1) - (int)(unsigned char)(*s2);
//printf("String 1 is lexicographically greater ""than string 2");
//return;
}
else if (s2[i] > s1[i]) {
//printf("String 2 is lexicographically greater ""than string 1");
//return;
return (int)(unsigned char)(*s1) - (int)(unsigned char)(*s2);
}
}
// comparing length of two strings
if (s1[i] != '\0') {
return (int)(unsigned char)(*s1) - (int)(unsigned char)(*s2);
}
else if (s2[i] != '\0') {
return (int)(unsigned char)(*s1) - (int)(unsigned char)(*s2);
}
else {
return 0;
}
}
int main()
{
char str[5][50],temp[50];
int i,j;
printf("Enter 5 Words:\n");
for(i=0;i<5;i++)
scanf("%s[^\n]",str[i]);
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(compareStrings(str[i],str[j])>0)
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
}
printf("\In lexicographical order: \n");
for(i=0;i<5;i++)
puts(str[i]);
return 0;
}
তখন ও ছাত্রীর মন ভরেনি ,বুঝে গেলাম এই মরণাত্মক সংগ্রাম আমার পোষাবে না ,অদ্যই শেষ রজনী
মাইনের আশা আর নেই ,এতো খাটনি (মানে চুরি আর চুরির মাল এসেম্বলি)তো বাড়ির লোক বুজবে না ,ছাত্রী বলবে ইস্সে না হইবা ,মা বলবে মাস্টার ফোটো
তবে শিক্ষকের সম্মান ,কঠিন ব্যাপার ছিল সেই সময়
গভীরভাবে বললাম এতে কি খুশি হবেন তোমার ম্যাডাম
ছাত্রী বললো আচ্ছা strcpy তা প্রতিস্থাপন করা যায় না,তাহলে string.h লাইব্রেরি ই আর ইম্পোর্ট করতে হবে না
বললাম দেখছি দাড়াও ,দশ বছর হয়ে গেলো ,সেই দেখা আজ থামেনি ,বুঝে গেছি আমি ভালো প্রোগ্রামার হতে পারবো না
কয়েকদিন আগে আমার এক বেড়ে পাকা বন্ধুর সঙ্গে এই নিয়ে কথা হচ্ছিলো
ও বললো আরে এ তো পাইথন এ হেবি সোজা
এক লাইন জাস্ট
def sort_words(words):
return ' '.join(sorted(words.split(), key=str.casefold))
# commands used in solution video for reference
if __name__ == '__main__':
print(sort_words('banana ORANGE apple'))
এইটাই হলো সেই ম্যাজিক এক লাইন
return ' '.join(sorted(words.split(), key=str.casefold))
তাও আমি আশা হারাইনি ,নিশ্চয় সি প্রোগ্রামিং করে একদিন আমি পুন্য অর্জন করবো
Saturday, February 24, 2024
চটকদারি পাইথন বনাম পুষ্টিকর সি
ধরুন কেউ নতুন নতুন প্রোগ্রামিং শিখছে ,তাকে সি প্রোগ্রামিং শেখানো হচ্ছে ,তার শিক্ষক / শিক্ষকা তাকে শেখাছেন বুঝলে সি তে কিছু প্রিন্ট করতে হলে এরকম করে করতে হয়
#include <stdio.h>
int main() {
// printf() displays the string inside quotation
printf("Hello, World!");
return 0;
}
সে লাইন গুলো লিখলো ,লিখতে গিয়ে ভুল ভ্রান্তি না হলে প্রোগ্রাম কম্পাইল এবং রান হলো সফলভাবে ,স্ক্রিন এ ফুটে উঠলো hello world
সে ভাবলো আচ্ছা তাহলে দুটো শব্দ প্রিন্ট করতে গেলে চারটে লাইন লিখতে হবে
ওদিকে তার বেড়ে পাকা বন্ধু পাইথন শিখছে
সে লিখলো
print("Hello, World!")
একই রেসাল্ট পেয়ে সে খিকখিক করে হাসতে থাকলো
দেখে আপনার কেমন লাগবে
বা ধরুন আপনার শিক্ষক বা শিক্ষিকা আপনাকে শেখাচ্ছেন কম্পিউটারের একটা বড় কাজ হলো বারবার যা করতে হয় সেটা কম্পিউটার ই একটা নিয়মের মধ্যে ফেলে নিজে করে ফেলে ,আপনাকে বারবার করতে হয় না ,ধরুন আপনি আপনার নামটা পাঁচবার প্রিন্ট করবেন
সি প্রোগ্রামিং এ আপনাকে লিখতে হবে
#include <stdio.h>
int main() {
int i=1;
while(i<5)
{
Printf("Sourav Bhattacharya");
i=i+1;
}
return 0;
}
ওদিকে আপনার পাইথন শেখা বন্ধু এক লাইনে লিখে ফেললো
print("Sourav Bhattacharya\n"*five )
দেখে এবার আপনার একটু একটু হিংসা হতে শুরু করেছে ,কেন যে সি শেখানো হচ্ছে ,একদিকে রাজভোগ আরেকদিকে প্যারা/ঠেকুয়া যেন
এবার আপনাকে ক্লাস এসাইনমেন্ট দিলেন আপনার শিক্ষক বা শিক্ষিকা
একটা শব্দ পালিনড্রোম কি না চেক করতে হবে ,শব্দটাকে ইনপুট হিসেবে দিতে হবে ,এদিকে স্ট্রিং লাইব্রেরি ইম্পোর্ট না করলে স্ট্রিং সি প্রোগ্রামিং এ যে নেহাত ই একটি এরে আপনাকে শেখানো হয়েছে ,ফলে আপনি ভাবছেন কি করে করবেন সি তে এই প্রোগ্রাম ,অনেক ভেবে আপনি করে ফেললেন ,অনেকটা এরকম দাঁড়ালো
#include<stdio.h>
void main()
{
char name[]="abba";
char c='z';
int length=0;
char reversename[100];
int j=0;
char signal='T';
printf("%s\n",name);
while (c!='\0')
{
c=name[length];
length++;
}
printf("the length is %d\n",length-1);
for(int i=(length-2);i>=0;i=i-1)
{
printf("name[%d] is %c\n",i,name[i]);
reversename[j]= name[i];
j++;
}
printf("reversename is %s\n",reversename);
j=0;
for(j=0;j<=((length)-2);j=j+1)
{
printf("character reversename[%d]=%c name[%d]=%c is being compared\n",j,reversename[j],j,name[j]);
if (reversename[j]!=name[j])
{
//printf("not matched");
signal='F';
}
}
if (signal=='T')
printf("palindrome\n");
else
printf("not pal\n");
}
মনে রাখবেন জীবনে প্রথমবার প্রোগ্রামিং শিখছেন আপনি ,খুব এফিসিয়েন্ট কোডিং যে পারবেন না ইটা প্রত্যাশিত ,আমি ২০০২ সালে কানেতকার পড়ে এইটা লিখেছিলাম ,কাজ হচ্ছে ,কিন্তু এফিসিয়েন্ট নয় ,কিন্তু প্রথমবার সাফল্য পেয়ে গর্বিত মুখে যেই আপনি বেড়ে পাকা বন্ধুর দিকে তাকিয়েছেন
বেড়ে পাকা বন্ধু বলে অরে পাইথনে এটা করা খুব সোজা ,এতো লিখতে হয় না ,এই দেখ
x=input()
if x==x[::-1]:
print('pal')
else:
print('not pal')
দেখে আপনি এবার খেপে যাবেন ,বলবেন ধুর ছাই সি আর দরকার নেই ,পাইথন ই ভালো শেখার জন্য
ঐটাই আপনার বিরাট ভুল হবে ,সি একটা লিজেন্ডারি ল্যাংগুয়েজ ,স্পিড থেকে এফিসিয়েন্সি অনেক কিছুতে আজ ও এগিয়ে ,মাইকেল যেমন ইংরিজি থেকে বাংলায় ফিরেছিলেন আপনি কি আবার পাইথন থেকে সি তে ফিরতে পারবেন ??খুব কঠিন ওই ট্রানজিশন
Wednesday, February 21, 2024
Filtering data using groupby in sql
select
billingcity,
round(avg(total),2)
from Invoice
where billingcity is not null
GROUP by billingcity
order by billingcity;
select
billingcity,
round(avg(total),2) as AvgInvoice
from Invoice
where billingcity is not null and billingcity like 'L%'
GROUP by billingcity
order by billingcity;
we can only use where if the condition is applied to non aggregated field such as billingcity ,in case we like to impose a condition on the aggregated field such as total we have to use having clause,and having will always come after group by clause
select
billingcity,
round(avg(total),2) as AvgInvoice
from Invoice
where billingcity is not null and billingcity like 'L%'
GROUP by billingcity
having AvgInvoice>5
order by billingcity;
we can group by multiple fields instead of just one ,to do that we have to add the field as non aggregated field in the select statement,and then add the second group by field after the first separated by a comma
select
billingcountry,
billingcity,
round(avg(total),2) as AvgInvoice
from Invoice
where billingcity is not null
GROUP by billingcountry,billingcity
having AvgInvoice>1
order by billingcountry,AvgInvoice ASC;
Tuesday, February 20, 2024
Aggregate functions example in sql
SELECT
sum(Total) as [Total Sales],
round(Avg(Total),2) as [Average Sales],
Max(Total) as [Max Sale],
Min(Total) as [Min Sale],
Count(*) as [Sales Count]
from Invoice
Getting the age of employees from their birthdate in sql
SELECT
FirstName,
LastName,
Address,
FirstName ||' '|| LastName || ' ' || Address ||','|| City ||' '||State ||' '||PostalCode as [Mailing Address],
length(PostalCode),
substr(PostalCode,1,5) as [5 digit postal code],
upper(FirstName) as [First Name all caps],
lower(LastName) as [Last Name all lower],
strftime('%Y-%m-%d',BirthDate) as [BirthDate without time code],
strftime('%Y-%m-%d','now')-strftime('%Y-%m-%d',BirthDate) as age
from Employee
Converting date to a custom format using strftime in sql
SELECT
FirstName,
LastName,
Address,
FirstName ||' '|| LastName || ' ' || Address ||','|| City ||' '||State ||' '||PostalCode as [Mailing Address],
length(PostalCode),
substr(PostalCode,1,5) as [5 digit postal code],
upper(FirstName) as [First Name all caps],
lower(LastName) as [Last Name all lower],
strftime('%Y-%m-%d',BirthDate) as [BirthDate without time code]
from Employee
Upper and Lower functions in sql to change case of a string
SELECT
FirstName,
LastName,
Address,
FirstName ||' '|| LastName || ' ' || Address ||','|| City ||' '||State ||' '||PostalCode as [Mailing Address],
length(PostalCode),
substr(PostalCode,1,5) as [5 digit postal code],
upper(FirstName) as [First Name all caps],
lower(LastName) as [Last Name all lower]
from Customer
where
country='USA'
Truncating strings using substr function in sql
SELECT
FirstName,
LastName,
Address,
FirstName ||' '|| LastName || ' ' || Address ||','|| City ||' '||State ||' '||PostalCode as [Mailing Address],
length(PostalCode),
substr(PostalCode,1,5) as [5 digit postal code]
from Customer
where
country='USA'
Concatenating strings in an user defined field in sql
SELECT
FirstName,
LastName,
Address,
FirstName ||' '|| LastName || ' ' || Address ||','|| City ||' '||State ||' '||PostalCode as [Mailing Address]
from Customer
where
country='USA'
Sunday, February 18, 2024
Example of case and calculated field in sql
select
InvoiceDate,
BillingAddress,
BillingCity,
total,
case
when total<2.00 then 'Baseline Purchase'
when total between 2.00 and 5.99 then 'Low Purchase'
when total between 7.00 and 15.00 then 'Target Purchase'
else 'Top Performer'
end as 'PurchaseType'
from Invoice
WHERE PurchaseType='Top Performer' and BillingAddress is not NULL
order by BillingCity
Sunday, February 11, 2024
Install nushell in ubuntu 22.04
Install brew firstsudo apt update
sudo apt-get install build-essential
sudo apt install git -y
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
(echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> /home/$USER/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
brew doctor
Source:https://linux.how2shout.com/how-to-install-brew-ubuntu-20-04-lts-linux/
Then
For macOS and Linux, Homebrew is a popular choice (brew install nushell).
Source:https://www.nushell.sh/blog/2022-11-29-nushell-0.72.html
To start nushell
just type
nu