Github Top Repositories
Top GitHub repositories in one place 🚀 Explore the best projects in programming, AI, data science, and more.
نمایش بیشتر📈 تحلیل کانال تلگرام Github Top Repositories
کانال Github Top Repositories (@githubre) در بخش زبانی انگلیسی بازیگری فعال است. در حال حاضر جامعه شامل 15 275 مشترک است و جایگاه 13 389 را در دسته آموزش و رتبه 25 920 را در منطقه الهند دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 15 275 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 12 نوامبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 310 و در ۲۴ ساعت گذشته برابر 7 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 0.87% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 0.62% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 133 بازدید دریافت میکند. در اولین روز معمولاً 94 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 1 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند repository, fork, programming, statistic, description تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Top GitHub repositories in one place 🚀
Explore the best projects in programming, AI, data science, and more.”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 13 نوامبر, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته آموزش تبدیل کردهاند.
#kubernetes #tunnel #golang #networking #mesh_networks #ipfs #nat #blockchain #p2p #vpn #mesh #golang_library #libp2p #cloudvpn #ipfs_blockchain #holepunch #p2pvpn================================== 🧠 By: https://t.me/DataScienceM
#linux #security #server #hardening #security_hardening #linux_server #cc_by_sa #hardening_steps================================== 🧠 By: https://t.me/DataScienceM
#ai #retrieval #reasoning #rag #llm================================== 🧠 By: https://t.me/DataScienceM
#api #ai #mcp #decentralized #text_generation #distributed #tts #image_generation #llama #object_detection #mamba #libp2p #gemma #mistral #audio_generation #llm #stable_diffusion #rwkv #musicgen #rerank================================== 🧠 By: https://t.me/DataScienceM
#python #machine_learning #deep_learning #neural_network #gpu #numpy #autograd #tensor================================== 🧠 By: https://t.me/DataScienceM
#userscript #tampermonkey #aria2 #baidu #baiduyun #tampermonkey_script #baidunetdisk #tampermonkey_userscript #baidu_netdisk #motrix #aliyun_drive #123pan #189_cloud #139_cloud #xunlei_netdisk #quark_netdisk #ali_netdisk #yidong_netdisk #tianyi_netdisk #uc_netdisk================================== 🧠 By: https://t.me/DataScienceM
#ai #agents #autonomous_agents #voice_assistant #llm #llm_agents #agentic_ai #deepseek_r1================================== 🧠 By: https://t.me/DataScienceM
#markdown #cli #hacktoberfest #excitement================================== 🧠 By: https://t.me/DataScienceM
#nlp #deep_learning #inference #pytorch #transformer #llm================================== 🧠 By: https://t.me/DataScienceM
returnPressed signal.
Data Integrity: We added a basic check for stock (quantity > 0). A more robust system would check if the quantity in the cart exceeds the quantity in stock before allowing the sale to complete.
Features for a Real Pharmacy: A production-level system would need many more features: prescription management, patient records, batch tracking for recalls, advanced reporting (e.g., top-selling drugs, low-stock alerts), user accounts with different permission levels, and receipt printing.
Database: SQLite is perfect for a single-user, standalone application. For a pharmacy with multiple terminals, a client-server database like PostgreSQL or MySQL would be necessary.
This project provides a solid foundation, demonstrating how to integrate hardware (like a barcode scanner) with a database-backed desktop application to solve a real-world business problem.
#ProjectComplete #SoftwareEngineering #PythonGUI #HealthTech
━━━━━━━━━━━━━━━
By: @DataScienceN ✨def add_item_to_sale(self):
barcode = self.barcode_input.text()
if not barcode:
return
drug = db.find_drug_by_barcode(barcode)
if not drug:
QMessageBox.warning(self, "Not Found", "No drug found with this barcode.")
self.barcode_input.clear()
return
drug_id = drug[0]
if drug[3] <= 0: # Check quantity
QMessageBox.warning(self, "Out of Stock", f"{drug[1]} is out of stock.")
self.barcode_input.clear()
return
if drug_id in self.current_sale_items:
# Item already in sale, increment quantity
self.current_sale_items[drug_id]['quantity'] += 1
else:
# Add new item to sale
self.current_sale_items[drug_id] = {
'data': drug,
'quantity': 1
}
self.update_sales_table()
self.barcode_input.clear()
def update_sales_table(self):
self.sales_table.setRowCount(len(self.current_sale_items))
total_sale_amount = 0.0
for row, item in enumerate(self.current_sale_items.values()):
drug_data = item['data']
quantity = item['quantity']
unit_price = drug_data[4]
total_price = quantity * unit_price
self.sales_table.setItem(row, 0, QTableWidgetItem(str(drug_data[0]))) # ID
self.sales_table.setItem(row, 1, QTableWidgetItem(drug_data[1])) # Name
self.sales_table.setItem(row, 2, QTableWidgetItem(str(quantity)))
self.sales_table.setItem(row, 3, QTableWidgetItem(f"{unit_price:.2f}"))
self.sales_table.setItem(row, 4, QTableWidgetItem(f"{total_price:.2f}"))
total_sale_amount += total_price
self.total_amount_label.setText(f"{total_sale_amount:.2f}")
def complete_sale(self):
if not self.current_sale_items:
return
for drug_id, item in self.current_sale_items.items():
db.update_drug_quantity(drug_id, item['quantity'])
QMessageBox.information(self, "Success", f"Sale completed. Total: {self.total_amount_label.text()}")
self.clear_sale()
self.load_inventory_data() # Refresh inventory tab to show new quantities
def clear_sale(self):
self.current_sale_items.clear()
self.update_sales_table()
#Hashtags: #BusinessLogic #PointOfSale #PythonCode #Transaction
---
#Step 5: Results and Discussion
With all the code in place, you have a fully functional pharmacy management system.
How to Use It:
• Run the main.py script.
• Go to the "Inventory Management" tab and add a few drugs with unique barcodes.
• Go to the "Point of Sale" tab. The cursor will be in the barcode input field.
• Type a barcode of a drug you added and press Enter. The drug will appear in the sales table.
• Scan the same barcode again. The quantity for that drug in the sales table will increase to 2.
• Click "Complete Sale". A success message will appear. The sales table will clear.
• Switch back to the "Inventory Management" tab. You will see that the quantity of the sold drugs has decreased accordingly.# In __init__, call the setup method
self.setup_pos_ui()
self.current_sale_items = {} # Dictionary to store {drug_id: {data, quantity}}
def setup_pos_ui(self):
main_layout = QHBoxLayout()
# Left side: Sale and Barcode input
left_layout = QVBoxLayout()
barcode_group = QGroupBox("Scan Barcode")
barcode_layout = QVBoxLayout()
self.barcode_input = QLineEdit()
self.barcode_input.setPlaceholderText("Scan or type barcode and press Enter...")
self.barcode_input.returnPressed.connect(self.add_item_to_sale)
barcode_layout.addWidget(self.barcode_input)
barcode_group.setLayout(barcode_layout)
self.sales_table = QTableWidget()
self.sales_table.setColumnCount(5)
self.sales_table.setHorizontalHeaderLabels(['ID', 'Name', 'Quantity', 'Unit Price', 'Total Price'])
left_layout.addWidget(barcode_group)
left_layout.addWidget(self.sales_table)
# Right side: Totals and Actions
right_layout = QVBoxLayout()
total_group = QGroupBox("Sale Summary")
total_form = QFormLayout()
self.total_amount_label = QLabel("0.00")
total_form.addRow("Total Amount:", self.total_amount_label)
total_group.setLayout(total_form)
complete_sale_btn = QPushButton("Complete Sale")
complete_sale_btn.clicked.connect(self.complete_sale)
clear_sale_btn = QPushButton("Clear Sale")
clear_sale_btn.clicked.connect(self.clear_sale)
right_layout.addWidget(total_group)
right_layout.addWidget(complete_sale_btn)
right_layout.addWidget(clear_sale_btn)
right_layout.addStretch()
main_layout.addLayout(left_layout, stretch=3) # Left side takes 3/4 of space
main_layout.addLayout(right_layout, stretch=1) # Right side takes 1/4
self.pos_tab.setLayout(main_layout)
#Hashtags: #PointOfSale #BarcodeScanner #UIUX #PyQt5
---
#Step 4: Implementing the Sales Logic
This is the core logic that connects the barcode input to the sales table and the database. When a barcode is entered, we find the drug, add it to the current sale, and update the UI. The "Complete Sale" button will finalize the transaction by updating the database.
Add these methods to the PharmacyApp class:import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QDate
import database as db
class PharmacyApp(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Pharmacy Management System")
self.setGeometry(100, 100, 1200, 700)
db.setup_database()
self.tabs = QTabWidget()
self.setCentralWidget(self.tabs)
self.pos_tab = QWidget()
self.inventory_tab = QWidget()
self.tabs.addTab(self.pos_tab, "Point of Sale")
self.tabs.addTab(self.inventory_tab, "Inventory Management")
self.setup_inventory_ui()
# self.setup_pos_ui() will be done in the next step
self.load_inventory_data()
def setup_inventory_ui(self):
layout = QVBoxLayout()
self.inventory_table = QTableWidget()
self.inventory_table.setColumnCount(6)
self.inventory_table.setHorizontalHeaderLabels(['ID', 'Name', 'Barcode', 'Quantity', 'Price', 'Expiry Date'])
layout.addWidget(self.inventory_table)
form = QFormLayout()
self.drug_name = QLineEdit()
self.drug_barcode = QLineEdit()
self.drug_qty = QSpinBox()
self.drug_qty.setRange(0, 9999)
self.drug_price = QLineEdit()
self.drug_expiry = QDateEdit(QDate.currentDate().addYears(1))
self.drug_expiry.setDisplayFormat("yyyy-MM-dd")
form.addRow("Name:", self.drug_name)
form.addRow("Barcode:", self.drug_barcode)
form.addRow("Quantity:", self.drug_qty)
form.addRow("Price:", self.drug_price)
form.addRow("Expiry Date:", self.drug_expiry)
add_btn = QPushButton("Add Drug to Inventory")
add_btn.clicked.connect(self.add_drug_to_db)
layout.addLayout(form)
layout.addWidget(add_btn)
self.inventory_tab.setLayout(layout)
def load_inventory_data(self):
drugs = db.get_all_drugs()
self.inventory_table.setRowCount(len(drugs))
for row, drug in enumerate(drugs):
for col, data in enumerate(drug):
self.inventory_table.setItem(row, col, QTableWidgetItem(str(data)))
def add_drug_to_db(self):
name = self.drug_name.text()
barcode = self.drug_barcode.text()
qty = self.drug_qty.value()
price = float(self.drug_price.text())
expiry = self.drug_expiry.date().toString("yyyy-MM-dd")
if not all([name, barcode, qty > 0, price > 0]):
QMessageBox.warning(self, "Input Error", "Please fill all fields correctly.")
return
if db.add_drug(name, barcode, qty, price, expiry):
self.load_inventory_data()
else:
QMessageBox.warning(self, "Database Error", "A drug with this barcode already exists.")
# Main execution block at the end of the file
if __name__ == '__main__':
app = QApplication(sys.argv)
window = PharmacyApp()
window.show()
sys.exit(app.exec_())
# Hashtags: #PyQt5 #GUI #CRUD #Inventory
---
#Step 3: Point of Sale (POS) UI and Barcode Handling
Now, let's build the user interface for the sales tab. This will include an input for the barcode, a table for the current sale items (the "cart"), and buttons to finalize or clear the sale. A physical barcode scanner typically emulates a keyboard, entering the numbers and pressing "Enter". We will simulate this with the returnPressed signal on a QLineEdit.
Add these methods to the PharmacyApp class:#Step 1: Database Setup (database.py)
First, we create a dedicated file to handle all SQLite database operations. This keeps our data logic separate from our UI logic. Create a file named database.py.
import sqlite3
DB_NAME = 'pharmacy.db'
def connect():
return sqlite3.connect(DB_NAME)
def setup_database():
conn = connect()
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS drugs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
barcode TEXT NOT NULL UNIQUE,
quantity INTEGER NOT NULL,
price REAL NOT NULL,
expiry_date TEXT NOT NULL
)
''')
conn.commit()
conn.close()
def add_drug(name, barcode, quantity, price, expiry_date):
conn = connect()
cursor = conn.cursor()
try:
cursor.execute("INSERT INTO drugs (name, barcode, quantity, price, expiry_date) VALUES (?, ?, ?, ?, ?)",
(name, barcode, quantity, price, expiry_date))
conn.commit()
except sqlite3.IntegrityError:
return False # Barcode already exists
finally:
conn.close()
return True
def get_all_drugs():
conn = connect()
cursor = conn.cursor()
cursor.execute("SELECT id, name, barcode, quantity, price, expiry_date FROM drugs ORDER BY name")
drugs = cursor.fetchall()
conn.close()
return drugs
def find_drug_by_barcode(barcode):
conn = connect()
cursor = conn.cursor()
cursor.execute("SELECT id, name, barcode, quantity, price, expiry_date FROM drugs WHERE barcode = ?", (barcode,))
drug = cursor.fetchone()
conn.close()
return drug
def update_drug_quantity(drug_id, sold_quantity):
conn = connect()
cursor = conn.cursor()
cursor.execute("UPDATE drugs SET quantity = quantity - ? WHERE id = ?", (sold_quantity, drug_id))
conn.commit()
conn.close()
# Hashtags: #SQLite #DatabaseDesign #DataPersistence #Python
---
#Step 2: Main Application and Inventory Management UI
Create the main application file, main.py. We will set up the main window with tabs for "Point of Sale" and "Inventory Management". We will fully implement the inventory tab first, allowing users to view and add drugs to the database.# --- Loitering Logic --- (This code continues inside the while loop)
for box, track_id in zip(boxes, track_ids):
x, y, w, h = box
center_point = (int(x), int(y))
# Check if the center of the person is inside the alert zone
is_inside_zone = cv2.pointPolygonTest(ALERT_ZONE_POLYGON, center_point, False) >= 0
if is_inside_zone:
# If person is inside, start or check their timer
if track_id not in loitering_timers:
# First time this person is detected in the zone
loitering_timers[track_id] = time.time()
else:
# Person is still in the zone, check duration
elapsed_time = time.time() - loitering_timers[track_id]
if elapsed_time > LOITERING_THRESHOLD_SECONDS:
# Loitering detected! Trigger alert.
alert_triggered_ids.add(track_id)
else:
# If person leaves the zone, reset their timer
if track_id in loitering_timers:
del loitering_timers[track_id]
if track_id in alert_triggered_ids:
alert_triggered_ids.remove(track_id) # Optional: reset alert when they leave
# Add visual alert text for tracked individuals who triggered the alert
for track_id in alert_triggered_ids:
# This part requires re-iterating through boxes to find the right one to draw on.
# A more optimized way would be to store box coordinates with the track_id.
for box, tid in zip(results[0].boxes.xyxy.cpu(), track_ids):
if tid == track_id:
x1, y1, _, _ = map(int, box)
cv2.putText(annotated_frame, "ALERT: LOITERING!", (x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 0, 255), 2)
break
# Display the annotated frame
cv2.imshow("Suspicious Activity Tracker", annotated_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
# Hashtags: #SecurityAI #AlertSystem #HomeSafety
---
#Step 5: Results and Discussion
When you run the script, you will see your video with:
• A yellow polygon outlining your defined security zone.
• Bounding boxes around each person with a unique tracking ID.
• If a person stays inside the zone for longer than LOITERING_THRESHOLD_SECONDS, a red "ALERT: LOITERING!" message will appear above their bounding box.
Discussion and Ethical Considerations:
Defining "Suspicious": This system does not understand "suspicious behavior." It only follows a simple rule: person + location + time. The interpretation of this as "suspicious" is a human one.
False Positives: The system will trigger an alert for anyone who meets the criteria, including a homeowner, a delivery driver waiting for a signature, or a neighbor stopping to chat. The LOITERING_THRESHOLD_SECONDS must be carefully tuned to balance security with convenience.
Tracking Stability: In low-light conditions, the tracker might lose a person and assign them a new ID when they reappear, resetting the timer. Using a higher-quality camera or a YOLO model fine-tuned on night-time data (e.g., from thermal or infrared cameras) would significantly improve performance.
Bias and Fairness: AI models can be less accurate in identifying individuals from underrepresented groups in their training data. In a security context, this could lead to a higher rate of missed detections or false alarms for certain people, which is a serious ethical issue. This tool should be used to assist human judgment, not replace it.
#ProjectComplete #AIforGood #ResponsibleAI
━━━━━━━━━━━━━━━
By: @DataScienceN ✨