Nematillo Ochilov
1.11K subscribers
336 photos
123 videos
382 files
682 links
Buxoro viloyati Gʻijduvon tumanida istiqomat qiluvchi dasturchi, @Nematillo_Ochilov

youtube.com/c/nematilloochilov
@NematilloOchilov - blog
@pythonuz - Python darslari
@js_uz - Java Script
@MQLUZ - Savdo robotlari
@sjtbot - Test kalitlarini tekshirish
Download Telegram
PostgreSQLda geo ma'lumotlarni qaysi turda saqlash kerak va bir manzildan ikkinchi manzilgacha bo'lgan masofani PostgreSQLda qanday hisoblash mumkin?

Yetkazib berish (dostavka) va yo'lovchi tashish (taxi) xizmatlarini onlayn tarzda tashkil qilish qiyin emas shunchaki kuchli ishtiyoq va katta maqsad bilan boshlash kifoya.

Servisni boshlash xarajati 10$, daromad esa juda katta chunki bozorimiz deyarli bo'm-bo'sh.

Servisingizga 100 ta haydovchini jalb qilasiz va ularning har biri sizning dasturingiz orqali kuniga 100000 so'm daromad qilishadi va daromadlarining 10% ini dasturdan foydalanishgani uchun sizga to'lov qilishadi.Bunda kunlik daromadingiz 1 milion so'm... menimcha bu yomon emas.

"Pullarni o'zlashtiryabdi" , "laqqa baliqlar katta bo'lyabdi" yoki "pul topish qiyin" deb ko'pchilik noliydi. Undan ko'ra dastur yarating, dasturingiz onlayn tarzda muammolarni hal qilsin va shu xizmatingiz uchun daromad oling.

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Nematillo Ochilov
PostgreSQLda geo ma'lumotlarni qaysi turda saqlash kerak va bir manzildan ikkinchi manzilgacha bo'lgan masofani PostgreSQLda qanday hisoblash mumkin? Yetkazib berish (dostavka) va yo'lovchi tashish (taxi) xizmatlarini onlayn tarzda tashkil qilish qiyin emas…
Postgisni ma'lumotlar bazasiga ulaymiz.

CREATE EXTENSION postgis;

Agar postgisni oldin o'rnatmagan bo'lsangiz quyidagi buyruqni terminalga yozib postgisni o'rnating.

sudo apt-get install postgresql-12-postgis-3

12 yoki 3 vaqt o'tishi bilan yangi talqinlarga o'zgarishi mumkin.

Jadval yaratmiz

CREATE TABLE oraliqmasofa (
id serial NOT NULL,
joy_nomi varchar(255) NOT NULL,
location Point NOT NULL,
PRIMARY KEY (id)
);

Jadvalga joy nomi va kordinatalarni kiritamiz.
(X gorizontal 41.2701661 va Y vertikal 69.3053935)

INSERT INTO oraliqmasofa (joy_nomi, location) VALUES 
( 'Toshkent', '(41.2701661, 69.3053935)' ),
( 'Andijon', '(40.7794781, 72.3737798)' );


SELECT * FROM oraliqmasofa;
id | joy_nomi | location
----+-----------+-------------------
1 | Toshkent | (41.2701661, 69.3053935)
2 | Andijon | (40.7794781, 72.3737798)
(2 rows)


Endi masofani tanlash uchun biz har doim yerni mukammal shar sifatida ishlatadigan ST_Distance_Spheredan foydalanishimiz mumkin, bu juda tez, ammo ST_DistanceSpheroiddan kamroq aniqroq. Ikkalasini ham sinab ko'raman:

ST_Distance_Sphere
SELECT ST_Distance_Sphere(geometry(a.location), geometry(b.location))
FROM oraliqmasofa a, oraliqmasofa b
WHERE a.id=1 AND b.id=2;
Natija: 262,797.01645757 metr.

ST_Distance_Spheroid
SELECT ST_Distance_Spheroid(geometry(a.location), geometry(b.location), 'SPHEROID["WGS 84",6378137,298.257223563]')
FROM oraliqmasofa a, oraliqmasofa b
WHERE a.id=1 AND b.id=2;
Natija: 263,430.941199621 metr.

#location #postgres #masofa #maps #distance

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Yaratayotgan dasturlaringizda asosan qaysi maʼlumotlar omborini boshqarish tizimidan foydalanasiz?
Anonymous Poll
49%
MySQL
19%
PostgreSQL
10%
Microsoft SQL Server
10%
SQLite
10%
MongoDB
2%
Redis
CHAR(n), VARCHAR(n), VARCHAR, text?

Eng maqbul yechim text ekan.

#postgres #text

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
create_delivery_data.py
6.2 KB
Yetkazib berish xizmati ma'lumotlar ombori uchun jadvallar yaratish.

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Restoranlar, savdo do'konlari, dorixonalar, yetkazib beruvchi xizmat egalari va haydovchilar diqqatiga!

Qish mavsumi ham yaqinlashib qoldi va uyda qolib xarid qilishni deyarli hamma xoxlaydi.

Buyurtmalarni onlayn qabul qiluvchi va uni yetkazib beruvchi hamma foydalanishi bepul bo'lgan dasturiy ta'minotni ishga tushirmoqchiman.

Dastur ishlashi juda oddiy.

1. Mahsulot egasi mahsulotni excel faylida (mahsulot nomi, narxi, turi) va geo ma'lumotni botga yuboradi.
2. Mijozlar 5 km radius masofada sotiladigan mahsulotni va uning miqdorini tanlaydi.
3. Mahsulot egasiga mizoj manzili, telefon raqami, mijoz ishonchliligi va buyurtma xabari yuboriladi.
4. Mahsulot egasi mijozga mahsulot yetkazib berishni ta'minlaydi.

Dasturni rivojlantirish bo'yicha takliflaringizni @Nematillo_Ochilov ga yuboring.Fikringiz men uchun juda muhim.
Obektni belgilangan hududda ekanligini nazorat qilish.

Obekt kordinatalarini doim aniqlay olasiz va obekt belgilab qo'ygan hududingizdan chiqib ketishini nazorat qilish uchun ushbu koddan foydalanishingiz mumkin.

Masalan sizda Tashkent cityda yetkazib berish xizmati bor deylik. Yetkazib beruvchi ish vaqtida Tashkent city hududidan chiqishi mumkin emas. Yetkazib beruvchi yukni olib ketayotganda telegram guruhingizga live locationni tashlab qo'yadi va bot uni ma'lum hududdan chiqib ketmasligini avtomatik nazorat qiladi. Agar belgilangan hududni tark etsa bot guruhga yetkazib beruvchi hududni tark etganini eslatadi.


# pip3 install Shapely
from shapely.geometry import Point, Polygon

# Obektni yaratish
obekt1= Point(41.113411, 65.365202)
obekt2 = Point(41.106910, 65.409277)

# Ko'pburchak yaratish. kordinatalar https://www.google.com/maps saytidan olindi
coords = [
(41.083028, 65.430785),
(41.072987, 65.418473),
(41.074045, 65.389805),
(41.089205, 65.356101),
(41.146976, 65.339829),
(41.146054, 65.381927),
(41.118575, 65.393169),
(41.095997, 65.389417)
]
poly = Polygon(coords)
print(obekt1.within(poly))
# >>> True # obekt1 kopburchak ichida
print(obekt2.within(poly))
# >>> False # obekt2 kopburchak ichida emas

Agar kodga tushunmagan bo'lsangiz kanal a'zolari 3000 taga yetganda ushbu kodni amaliy batafsil tushuntirib videodars tayyorlayman.

#location #geo #python #point #shapely #polygon

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Mijozlarni xavfsizligini oʻylab mahsulotlarni uylarigacha yetkazishni maqsad qildik.Telegram botga toʻlov tizimlarini ulash kerak.Bot orqali qabul qilinayotgan toʻlovlarning 2% ini Paymega yoki 1.5% Clickga toʻlash kerak. Shu foizlar qachon 0.5% boʻladi?
Anonymous Poll
61%
Hech qachon
24%
5 yildan keyin
10%
1 yildan keyin
5%
5 oydan keyin
Nematillo Ochilov
Mijozlarni xavfsizligini oʻylab mahsulotlarni uylarigacha yetkazishni maqsad qildik.Telegram botga toʻlov tizimlarini ulash kerak.Bot orqali qabul qilinayotgan toʻlovlarning 2% ini Paymega yoki 1.5% Clickga toʻlash kerak. Shu foizlar qachon 0.5% boʻladi?
Televideniya va rasmiy manbaalarga ishonmayman.Ijtimoiy tarmoqlardagi so'rovnomalar haqiqiy vaziyatni aks ettiradi.

Menimcha soliq imtiyozlari ijobiy tomonga o'zgaryabdi lekin elektron to'lovlar bo'yicha qoloqmiz.

Raqamli iqtisodiyotni rivojlantirish uchun yuqoridagi foizlarni kamaytirish kerak.Aynan nima qilish kerakligini aytolmayman lekin kartadan kartaga pul o'tkazish va elektron to'lov opaeratsiyalar miqdoridan olinadigan xizmat haqini bir xil ya'ni 0.5% qilish kerak.

Startaplarmiz O'zbekistonda muvaffaqiyat qozonsa bundan ilhomlanib chet elga ham xizmatlarmizni taklif qilamiz va valyutani O'zbekistonga olib kiramiz.
Nematillo Ochilov
Restoranlar, savdo do'konlari, dorixonalar, yetkazib beruvchi xizmat egalari va haydovchilar diqqatiga! Qish mavsumi ham yaqinlashib qoldi va uyda qolib xarid qilishni deyarli hamma xoxlaydi. Buyurtmalarni onlayn qabul qiluvchi va uni yetkazib beruvchi hamma…
Bu ijtimoiy loyihaga hech qanday sarmoya qabul qilinmaydi.

Dastur rivojlanishiga hamma taklif bildirib o'z hissasini qo'shishi mumkin.

Maqsad yurtimizda internet orqali savdo qilish madaniyatini rivojlantirish.
Ogoh bo'ling! Firibgarlikning yangi turi_247.webm
44.8 MB
Ogoh bo'ling! Firibgarlikning yangi turi.

Telefon raqamizga yuborilgan maxfiy kodni hech kimga aytmang.

#olx #fargo #hacking

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Pythonda sinxron va asinxron dasturlashning farqlari.
🇺🇿
O'zbek tili

Differences between synchronous and asynchronous programming in Python.
🇺🇸 English

Различия между синхронным и асинхронным программированием в Python.
🇷🇺 Pусский

#sync #async #Trio #Curio #Twisted #asyncio #aiohttp #sanic #FastAPI #Tornado #Django #Bottle #Flask #web

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Linux tizimli kompyuterlarda fayl izlashda ushbu koddan foydalaning.

QIDIRILAYOTGAN_MATN ni fayl ichidagi izlayotgan so'zingizga o'zgartiring va buyruqni terminalga yozib enterni bosing.

grep -wirl "QIDIRILAYOTGAN_MATN" .

#qidirish #izlash #linux #file #find

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Ushbu funksiya pyrogramning 1.x versiyasi uchun bot dasturchilariga qulaylik yaratish maqsadida @NematilloOchilov tomonidan yozildi.

Qatorlar lugʻat ichiga, lugʻatlar 1 ta list ichiga joylashtiriladi va shu list nomarkup funksiya atributi etib koʻrsatiladi.

1 ta xabarda 100 dan ortiq tugma qo'shib bo'lmaydi.

def nomarkup(tugmalar):
qatorlar = list()
for i in tugmalar:
xy = list()
for x, y in i.items():
xy.append(InlineKeyboardButton(x, y))
qatorlar.append(xy)
return InlineKeyboardMarkup(qatorlar)

#telegram #pyrogram #bot #qisqa #InlineKeyboardMarkup #InlineKeyboardButton #call

Kanalga a'zo bo'lish 👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Pythonni qo'llab quvvatlaydigan serverlar ro'yxati

Uztan 10gb 1500000 so'm/yil
Ahost 1gb 1800000 so'm/yil
Billur 2gb 2191200 so'm/yil
GAE 128 kb bepul
Pythonanywhere 512 kb bepul
Aws 1gb 1$/yil
Hetzner 2gb 40$/yil
Ovhcloud 2gb 55$/yil
Alibaba cloud 1gb 1$/yil
Timeweb 0.5 gb 6$/yil
contabo.com 10gb 60$/yil

Hetzner Germaniyada joylashgan insofli narx bilan veb server taqdim qiladigan kompaniya.
Hetznerdan ro'yxatdan o'tishda taxminan 50% kishi Account is disabled muammosiga duch keladi.Muammoga yechim manzilni toʻliq va toʻgʻri yozish kifoya.

#GAE #bot #server

Kanalga ixtiyoriy majburiy obuna bo'lish👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
htop - Linux tizimning hayotiy resurslarini yoki server jarayonlarini real vaqt rejimida interaktiv ravishda kuzatib borish imkoniyatini beradigan terminal yordamchi dasturi.(Server holatini terminalda aks ettiradi)
htopni o'rnatish uchun terminalga quyidagi buyruqni yozing

sudo apt install htop

so'ng

htop

#htop #server #memory #ram #interfeys #linux #ip

Kanalga ixtiyoriy majburiy obuna bo'lish👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Nematillo Ochilov
Location
latitude - X o'q chiziq (kenglik, gorizontal)
longitude - Y o'q chiziq (uzunlik, vertikal)
point - X va Y o'q chiziqlar kesishma nuqtasi
polygon - ucburchak, to'rtburchak vahokazo (maydon)

Ushbu funksiya X va Y o'q chiziqlar kesishmasini qabul qilib manzil nomini chop qiladi.

def point_to_adress(lon, lat):
import requests
import warnings
url = "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lon=" + str(lon) + "&lat=" + str(lat)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
r = requests.get(url=url).json()['address']
k = list(r.keys())[::-1]
string = ''
for i in k:
string += r[i] + ', '
return string


longitude = 69.2491
latitude = 41.31383
print(point_to_adress(longitude, latitude))

# uz, Uzbekistan, 100027, Shayhontohur tumani, Toshkent, "Tashkent City". business center, Uqchi ko'chasi, 2, Hilton Tashkent City,

Kanalga bepul obuna bo'lish👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Bir manzildan ikkinchi manzilgacha bo'lgan yo'l masofasini aniqlash.

Bir manzildan ikkinchi manzilgacha bo'lgan yo'l masofasini aniqlash (to'g'ri chiziq bo'ylab emas yo'l bo'ylab) va taxminiy avtomobilda borish vaqtini ushbu funksiya yordamida bepul aniqlaymiz.1 kunda 22000 ta masofani tekshirish uchun so'rov yuborish mumkin.

import requests
import random


def route_distance(start, end): # yo'l masofasini o'lchash funksiyasi
keys_openrouteservice = [ # openrouteservice bepul kalitlari
"5b3ce3597851110001cf6248db84a52feecd456dbb2a4ee52a35ee4f",
"5b3ce3597851110001cf6248b44db44b33c64508afa658b8673c9580",
"5b3ce3597851110001cf6248701a505f4a83471da001d266b2860ac6",
"5b3ce3597851110001cf6248cbd8b98cf94b49998c93ca0605780f15",
"5b3ce3597851110001cf62480bea960faed84e018b953afbd3510ae7",
"5b3ce3597851110001cf62485788356becfe4894aba648ee6673baab",
"58d904a497c67e00015b45fc8129a6e7cd6d44aca2c1c45b56810512",
"5b3ce3597851110001cf6248e268bd7907a2427ba90d7d9555c20aac",
"5b3ce3597851110001cf6248e29e876eaf39498bb0b0b2ad0863e216",
"5b3ce3597851110001cf6248065eabf9d1e1454bbef78fe96f3016ec",
"5b3ce3597851110001cf62488ad066f5960f48e28aae44a1f27a245c"
]
key = random.choice(keys_openrouteservice) # taxminiy kalitlarni tanlash
url2 = f'https://api.openrouteservice.org/v2/directions/driving-car?api_key=' \
f'{key}&start={start}&end={end}'
d = requests.get(url2) # manzillar orasidagi yo'lni o'lshash uchun so'rov yuborish
z = d.json()['features'][0]['properties']['segments'][0]
distance = round(float(z['distance'])/1000, 2) # masofa km
duration = round(float(z['duration'])/60, 0) # vaqt minut
return [distance, duration]


rd = route_distance(
"69.241732,41.311668", # Istiqlol san'at saroyi
"69.316101,41.348023" # Toshkent botanika bog'i
)
print(f'Masofa: {rd[0]} km, Avtomobilda taxminiy borish vaqti: {rd[1]} minut')

>>> Masofa: 9.92 km, Avtomobilda taxminiy borish vaqti: 12.0 minut

#road #route #km #metr #gps #maps #free #xarita #online


Kanalga bepul obuna bo'lish👇
https://t.me/joinchat/AAAAAD6YXE73Trzz2TcWdw
Pythonda men bilan bellashish uchun link 👉 Sololearn