Curious coder
94 subscribers
679 photos
220 videos
51 files
533 links
𝓣𝓱𝓲𝓷𝓴 𝓭𝓲𝓯𝓯𝓮𝓻𝓮𝓷𝓽... ! 𝗘=𝗺𝗰²
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6💯1
Xulas iosga o'tishimga bir xafta kerak dep o'ylagandim lekin adashipman 😂😂😂
SwiftUI_Roadmap.docx
58.5 KB
mayli sizlarga ham ilindim
🆒3
😂😂
🔌 WebSocket vs gRPC — Flutter'da qaysi birini tanlash kerak?


Ikkalasi ham real-time communication uchun ishlatiladi. Lekin arxitektura, protokol va use-case jihatidan jiddiy farq qiladi.
🌐 WebSocket
Asosi: TCP ustida full-duplex, text/binary frames.
Flutter'da:

final channel = WebSocketChannel.connect(
Uri.parse('wss://api.example.com/ws'),
);

channel.stream.listen((message) {
print('Server: $message');
});

channel.sink.add(jsonEncode({'type': 'ping'}));

Afzalliklari:
Browser + mobile + backend — hamma joyda ishlaydi
Text va binary (JSON, MessagePack) — ixtiyoriy format
Oddiy debugging — Chrome DevTools, Wireshark
Proxy va firewall bilan muammosiz (HTTP upgrade)
Kamchiliklari:
Type safety yo'q — JSON schema kelishuvi manual
Reconnect logikasini o'zing yozasan
Message framing standarti yo'q

📌 Qachon: chat, notification, live dashboard, multiplayer game

⚡️ gRPC

Asosi: HTTP/2 + Protocol Buffers (binary serialization).

Proto fayl:

service PaymentService {
rpc StreamTransactions(TransactionRequest)
returns (stream TransactionEvent);
}


Flutter'da:

final channel = ClientChannel(
'api.example.com',
port: 443,
options: ChannelOptions(
credentials: ChannelCredentials.secure(),
),
);

final stub = PaymentServiceClient(channel);

final stream = stub.streamTransactions(
TransactionRequest(userId: userId),
);

await for (final event in stream) {
print('TX: ${event.amount} ${event.currency}');
}


Afzalliklari:
Compile-time type safety — .proto kontrakt
HTTP/2 multiplexing — parallel stream'lar
Automatic code generation (protoc)
Built-in deadline, cancellation, interceptor
Payload hajmi: JSON'ga nisbatan 3-10x kichik
Kamchiliklari:
Flutter Web'da to'liq ishlamaydi — grpc-web kerak
.proto fayllarni sync saqlash kerak
Binary payload debug qilish qiyinroq

📌 Qachon: microservice, FinTech stream, IoT telemetry

🆚 Taqqoslash

🔹 Protokol
WebSocket → TCP frames
gRPC → HTTP/2 + Protobuf

🔹 Type safety
WebSocket → manual (JSON)
gRPC → proto kontrakt

🔹 Flutter Web
WebSocket → to'liq ishlaydi
gRPC → ⚠️ grpc-web kerak

🔹 Payload hajmi
WebSocket → o'rtacha (JSON/text)
gRPC → kichik (binary, 3-10x)

🔹 Reconnect
WebSocket → o'zing yozasan
gRPC → built-in retry

🔹 Debug qulayligi
WebSocket → DevTools, Wireshark
gRPC → ⚠️ binary, maxsus tool

🔹 Streaming turi
WebSocket → full-duplex
gRPC → 4 xil pattern (unary, server, client, bidi)

💡 Mening xulosam

FinTech yoki IoT + microservice arxitekturasida → gRPC. Type safety + performance + streaming birgalikda kerak bo'ladi.
Real-time chat, notification yoki Web ham target platforma bo'lsa → WebSocket hali ham eng pragmatik yechim.
Xonsaroy Pay'da Transaction stream'lar uchun gRPC, push notification uchun WebSocket — ikkalasini parallel ishlatish ham normal amaliyot.
#flutter #dart #grpc #websocket

https://t.me/devspaceuz
2
Dartda enum ikkita shaklda keladi — oddiy va kengaytirilgan. Ikkalasini chuqur tushunib olaylik.


1. Oddiy enum
Eng sodda holat — faqat nomlangan konstantalar to'plami. Kompilyator har bir qiymatga index va name beradi, boshqa hech narsa yo'q.

dartenum PaymentStatus {
pending,
success,
failed,
cancelled,
}

// ishlatish
final status = PaymentStatus.success;
print(status.name); // "success"
print(status.index); // 1


Muammo: PaymentStatus.failed ga mos keladigan server kodi nima? UI'da qanday matn ko'rsatish kerak? Bularni switch/if bilan tashqarida yozishga majbur bo'lasiz — kod tarqoq bo'lib ketadi.

2. Enhanced enum (Dart 2.17+)
Enum ham sinf kabi constructor, field va method olishi mumkin. Har bir enum qiymati — aslida o'sha sinfning const instance'i.

dartenum PaymentStatus {
pending('pending', 'Kutilmoqda', '#FFA500'),
success('success', 'Muvaffaqiyatli', '#00C853'),
failed('failed', 'Xatolik', '#F44336'),
cancelled('cancel','Bekor qilindi', '#9E9E9E');

final String code; // server kodi
final String label; // UI matni
final String hexColor; // rang

const PaymentStatus(this.code, this.label, this.hexColor);

// method ham qo'shish mumkin
bool get isTerminal =>
this == success || this == failed || this == cancelled;

static PaymentStatus fromCode(String code) =>
PaymentStatus.values.firstWhere(
(e) => e.code == code,
orElse: () => PaymentStatus.pending,
);
}
Endi hamma narsa enum ichida:
dartfinal status = PaymentStatus.fromCode('success');

print(status.label); // "Muvaffaqiyatli"
print(status.hexColor); // "#00C853"
print(status.isTerminal); // true



3. Extension on enum
Bu boshqa narsa — mavjud enum'ga tashqaridan method qo'shish. Ayniqsa siz o'zgartira olmaydigan enum'larda (boshqa package'dan kelgan) ishlatiladi.

dart// Siz o'zgartira olmaydigan enum — masalan package'dan
enum OrderState { created, processing, delivered, returned }

// Tashqaridan kengaytirish
extension OrderStateX on OrderState {
String get label => switch (this) {
OrderState.created => 'Yaratildi',
OrderState.processing => 'Jarayonda',
OrderState.delivered => 'Yetkazildi',
OrderState.returned => 'Qaytarildi',
};

bool get isActive =>
this == OrderState.created || this == OrderState.processing;
}

// ishlatish — xuddi o'z metodi kabi
final state = OrderState.processing;
print(state.label); // "Jarayonda"
print(state.isActive); // true



Asosiy farq — qachon qaysinisini ishlatish:
Oddiy enum → faqat konstantalar kerak, hech qanday logika yo'q. Masalan, enum Direction { left, right, up, down }.
Enhanced enum → enum'ga tegishli ma'lumot va logikani birga saqlash kerak. Siz yaratayotgan enum bo'lsa — har doim shu usulni afzal ko'ring.
Extension on enum → boshqa kutubxonadan kelgan enum'ni kengaytirish kerak bo'lsa yoki enum'ni turli layer'larda har xil ko'rinishda ishlatish kerak bo'lsa. Masalan, domain layer'dagi enum'ga presentation layer'da UI logikasini qo'shish — Clean Architecture'da bu juda qulay.

https://t.me/devspaceuz
👍1
Forwarded from @Rustam-Z⚡️
This media is not supported in your browser
VIEW IN TELEGRAM
➡️ Yandex Uzbekistan Dev Meetup — May 23, Tashkent

Yandex Uzbekistan is hosting an offline dev meetup at their office. Topics: product building, engineering decisions, and career growth. The event will be in English.

🔗 Register here and learn more
Location: Yandex Uzbekistan office
Date: May 23, 2026

What's on the agenda:
• Konstantin Dovnar — how they studied Yandex Pro's performance on slow networks and what solutions they shipped to make things faster and more stable.

• Alexey Tolstikov — how to stay curious, learn, avoid getting lost in automation, and why altruism is becoming a key part of both learning and teaching.

• Live Coding, participants will break down a real task, spin up a model, and figure out what's happening under the hood together.

• How to improve your resume and present your experience to be competitive internationally. They'll break down what a developer interview at Yandex looks like, what to expect at each stage, and share practical tips to help you pass it.


Great opportunity to present yourself, grow your network, and connect with engineers who are building real products at scale.

@rustamzokirov
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Markul ft Oxxxymiron FATA MORGANA Audio
NYSTORY MUSIC
@TuneHuntBot orqali istagan musiqangizni tez va oson toping!
Forwarded from Abdurahmon Crypto
Harakat qilsangiz maximum oʻxshashi mumkin!
Lekin harakat qilmasangiz oʻxshamasligi aniq!
Tanla oʻzing!
Safar bizdan Zafar Allohdan.
❤‍🔥11
Hozirda 24/7 uxlash bilan bandman noshukurlik bo'lmasin uxlashdan charchadim
1
Forwarded from Muhtarov Shoakbar
Agar sinsam, hech kim sezmaydi; agar yonsam, hech kim kuyindi hidini olmaydi. Men o'sha sukunatda parchalanadigan va xufiyona o'zini qayta tiklaydigan insonman. Chunki yolg'izlikka o'rganish... borlig'imning bir qismiga aylanib bo'ldi.

Jumlalar menga tegishli emas menchalik tushunadigan odam ham bo’lmasa kerak.
Нормальные юрип куйипман
Сейчас ведь все просто стало… читаете вот эти книжки, проходите мой курс и всё. Можно сказать, что жизнь удалась 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥11
devushka_vzgliad_makiiazh_1341337_3840x2160-2.jpg
462 KB
Chopilgan oboi lekin manga yoqdi