Chapi Dev Talks
8.55K subscribers
950 photos
108 videos
12 files
596 links
My name is Chapi and I am a Developer.

I post my thoughts about tech here.

Message to our assistant to give U Feedback: @sophiservebot

Join https://t.me/chapidevtalks_group

Urgent? Contact Me: @chapimenge (Don't say hi or ask Meta Questions )
Download Telegram
Forwarded from GDG On Campus AASTU (πš‹πš’πš›πšžπš” πš– 😎)
Dev dialogue Recap


πŸš€Last night's development dialogue session was truly extraordinary!

In line with our prior announcement, we had the honor of hosting Mebatsion Sahle⚑️, a remarkable woman in the tech industry whose expertise surpassed our expectations. 🚚We happed upon here tech journey, filled with lots of incredible achievements, experiences and people's. Prior to joining a university, she had some experience in programming and had lots of engagement in clubs as she told us.

Meba briefly addressed the issue of bureaucracy that women often encounter in the tech industry. She encouraged us to leverage it as motivation, turning obstacles into opportunities to prove ourselves.πŸ‘©β€πŸ’»πŸ”₯ Meba shared her personal experience of being underestimated and doubted, emphasizing how she triumphed over such challenges.

What made the evening particularly special was the presence of Meba's colleagues, Chapi, Duguma, and Ahmed🀩. Chapi played a pivotal role in highlighting Meba's exceptional achievements from the very beginning. Ahmed and Duguma served as living witnesses to her undeniable potentialπŸ™, creating an atmosphere reminiscent of a heartwarming family reunion🌟.

We extend our heartfelt gratitudeπŸ™ to Mebatsion for generously sharing her experiences and offering valuable advice. Additionally, we express our sincere appreciation to Chapi Meng, Duguma, and Ahmed for gracing us with their presence and infusing our night with positive energy.πŸ™

For those who missed this wonderful event, You can watch the recording on our platform to catch up on the inspiring insights, valuable lessons, and the sense of camaraderie that defined the evening. πŸŒπŸŽ‰ #TechTalks #Inspiration #WomenInTech

https://www.youtube.com/live/j6l_v9XS6TE?si=4LvapxVKe4bvX4h-
❀8πŸ‘2
😍 Team Untitled - ASTU have completed their registration.
We wish you all the best ❀️🫢

#ACPC2023 #acpc #etcpc2023 #etcpc #ICPC #ASTU
❀18πŸ‘1πŸŽ‰1
Let's talk about async/await a little bit.

The way async await works is it will not wait until the operation complete and hang other execution (if any) untill async task are completed.

Most IO bound tasks like opening files, networks tasks, we can't determine their speed based on *CPU speed so we can't just wait for these task to complete and stop the execution there like *most programming language does.

So when we work with IO bound tasks the best thing we can do is don't wait for the task to be completed if the remaining task is not dependent on it.

For example if the user registers and you want to send an email for confirmation you really don't need to wait for the email to be sent to respond to the user.

Because you can just send the email and don't wait for the email sending operating to be completed.

import asyncio

def register(...):
....
asyncio.create_task(
send_email, ...)
...
return...
#asyncio part 1
✍5❀1⚑1🀯1
Chapi Dev Talks
To clarify this more in a simple python code. This does resembles the actual code by just waiting yet the same thing happens in real codes too. #asyncio part 2
In JavaScript if you don't await it, it automatically will make it promise which will resolve by its own when it finish in background. That will give you a lot more Flexibility when you work on async.

I don't know much about JavaScript on how under the hood operates so please correct me if am wrong

#asycio
πŸ‘6⚑3
Chapi Dev Talks
To clarify this more in a simple python code. This does resembles the actual code by just waiting yet the same thing happens in real codes too. #asyncio part 2
Good Scenarios for Async Programming

There are many scenarios that we can leverage async programming to our work flow and i want to mention some of them.

Backend Services
- Notifying users is a really good choice if you can make it async. Ex: Sending emails, sending push notifications, etc.
- Processing data in the background. Ex: Processing a large file, processing a large amount of data, etc.
- Long running task operation that can be done in the background. Ex: Generating reports, etc.

Example in Action

# Accepting CSV file and processing it in the background
from fastapi import FastAPI, File, UploadFile, BackgroundTasks
import asyncio

app = FastAPI()

process_status = {} # use database in production

async def process_id_generator():
...

async def process_csv(process_id: int, file: UploadFile):
# Do some processing
await asyncio.sleep(5)
process_status[process_id] = "success"
return


@app.post("/upload")
async def upload_file(file: UploadFile = File(...)):
asyncio.create_task(process_csv(file))
return {"status": "processing"}

# this uses fastapi background task scheduler to process
@app.post("/upload-fast-bg")
async def upload_file_fast_bg(file: UploadFile = File(...) , background_tasks: BackgroundTasks):
process_id = await process_id_generator()
background_tasks.add_task(process_csv, process_id, file)
return {"status": "pending", "process_id": process_id}

@app.post("process-status/{process_id}")
async def process_status(process_id: int):
return {"status": process_status.get(process_id, "not found")}

What we make here is, we are accepting a csv file and add the process to be processed in the background yet the user don't have to wait for that request to be the task completed. We can also check the status of the process by using the process id.

If the above were async, the user would have to wait for the process to be completed and that would be a bad user experience.

#asyncio part 3
why dont you follow me in X

https://twitter.com/chapimenge3
😁11πŸ‘Œ2
I was working reading more about how DNS Resolve works and that shit is so annoying, so far i only knows how to resolve the domain using

A Query 😭

import socket
import struct

def dns_resolver(domain_name):
# DNS server (Google's Public DNS)
dns_server = '8.8.8.8'
dns_port = 53

# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Pack the DNS query
query = build_dns_query(domain_name)

# Send the DNS query to the DNS server
sock.sendto(query, (dns_server, dns_port))

# Receive the DNS response
response, _ = sock.recvfrom(1024)
print('response', response, _)

# Parse the DNS response
ip_address = parse_dns_response(response)

return ip_address

def build_dns_query(domain_name):
# DNS header
header = struct.pack('!HBBHHHH', 0, 1, 0, 1, 0, 0, 0)

# DNS question section
question = b''
for part in domain_name.split('.'):
question += struct.pack('!B', len(part))
question += part.encode('utf-8')
question += b'\x00' # End of domain name
question += struct.pack('!H', 1) # Query type A (IPv4)
question += struct.pack('!H', 1) # Class IN (Internet)
return header + question

def parse_dns_response(response):
# Parse the response to extract the IP address
ip_address = '.'.join(str(byte) for byte in response[-4:])
return ip_address

# Example usage
domain_name = 'blog.chapimenge.com'
ip_address = dns_resolver(domain_name)
print(f'The IP address of {domain_name} is {ip_address}')


This can resolve the domain or not


RFC: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
Hello,

...My future wife your prayer is being heard you can stop now ...
By Beka


Save me from indomi I already graduated.
🀣20❀3πŸ‘2
🀣12😁2πŸ‘Ž1
makes me happy when i got 500 in very popular site for some reason πŸ˜‚
😁15⚑1
If you really wanna found out a website all his subdomain this tool might be really amazing

Requirements:
- Go

go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
subfinder -d example.com --silent | ~/go/bin/httpx --silent -sc --title


if the last command give you an error like the subfinder command not found use the below command for quick fix

 ~/go/bin/subfinder -d example.com --silent | ~/go/bin/httpx --silent -sc --title

for long term fix just add the ~/go/bin to your PATH variable in your .bashrc file like below

PATH=$PATH:~/go/bin

This project is from Project Discovery which is amazing org that have a lot of project you can use for recon(specially on bug bounty)

I hope you like it and if you have any question comment it and we can get it work for you.
πŸ‘5
You won't belive what i found πŸ˜‚

I found that in one of the big company i found their development server and found their new ai chat bot in development mode 😜

DAMN PEOPLE
😁8πŸ‘€2πŸ‘1
Good Morning My people,

Just finished reading the openai article about elun musk.

https://openai.com/blog/openai-elon-musk

Thank you Dagmawi for posting this article.

My opinion is as much as elun musk have a point on how openai might cheat the system by avoiding huge chunks of tax they have legismate reason to not disclose their science.

But what I really admire Elun on this is he makes twitter algorithm open sourced and nothing happens to twitter this is how he thinks.

People have different perspectives let alone in a large scale we constantly fight with in a small groups of people.

At the end of the day either you be the big player or you take what you can from the fight πŸ˜†.

Personally I am enjoying and using what I can as much as possible.

You don't have to live to make everyone happy like you see openai couldn't even make Elun musk happy 😜.

Have a delightful day 😊.
πŸ†4
This is too funny 10 years ago people were shitting on NodeJs πŸ˜‚.

This video is from years back https://youtu.be/5lJXb-yym0Y
😁3πŸ‘1
Frectonz Channel Discussion
ask and you shall receive, did it to typescript
He did It again the one and only bababooye

@frectonz
🀣1
Is the time.sleep CPU bound or Io bound?

If you don't know what CPU bound and Io bound is in short

CPU Bound - is something that use cpu intensively something like factorials which keeps calculating the value it doesn't depend on any other resources.

IO Bound - is something that waits for other resources to finish like you sending requiest to database server to get the data.

This is a very high level explanation for you to understand it.

Now when you do time.sleep(10) is it IO bound or CPU bound task?
❀1
This is crazy πŸ”₯πŸ”₯πŸ”₯πŸ”₯πŸ”₯πŸ”₯πŸ”₯