Sudo Blog
81 subscribers
63 photos
2 videos
35 files
148 links
Linuxdagi hayotim
Download Telegram
sudo nixos-rebuild switch --flake ~/dev/nix-config/#arava

Buyruq izohi:
​sudo: Tizim sozlamalarini o'zgartirish uchun admin huquqi kerak.
​--flake: Nix-ga flake ishlatayotganimizni bildiradi.
​~/dev/nix-config/: Flake faylingiz joylashgan papka.
#arava: Bu flake.nix faylingiz ichidagi nixosConfigurations qismida yozilgan hostname nomingiz. (Agar u yerda boshqa nom ishlatgan bo'lsangiz, o'sha nomni yozing).
👍1
Bo'sh vaqt topib shuni ishlatib ko'rish kerak ekan.

https://github.com/nvim-flutter/flutter-tools.nvim
NixOSʻda VM ishlatmoqchi boʻlsalaring quickemu zoʻr variant ekan.

1. quickemuni oʻranatasiz

Oʻrnatish uchun havola

2. kerakli distroni download qilish ham oʻzida bor ekan. Misol uchun debian 13.3.0 ni oʻnratish

quickget debian 13.3.0 gnome


3. Oʻrnab boʻlganidan keyin esa ishga tushirib yuboramiz.

quickemu --vm debian-13.3.0-gnome.conf

Tamom
👍1
NixOSʼda debug qilmoqchi boʻlsangiz loglarni yaxshiroq oʻqimoqchi boʻlsangiz komanda oxirigi

--show-trace -L


qoʻyib yuborishni maslahat beraman, --show-trace error boʻlsa chiqaradi -L loglarni chiqaradi
👍1
Forwarded from bahrom04
Uzinfocom Open Source jamoasi tomonidan chiqarilgan uchar messenjerini ishlatib koʻrishilarni maslahat beraman. Ishxonada shu uchar orqali muloqot qilamiz tel*gram oʻrniga.

https://play.google.com/store/apps/details?id=uz.uzinfocom.ucharmessenger&pli=1

https://apps.apple.com/uz/app/uchar/id6756061583

https://uchar.uz/
rust odamni zeriktirmaydi
Forwarded from CYBER SECURITY (Abbosxon Ahmadxoʻjayev)
Windows'dan Linux'ga nega ko'chishimiz kerak?

Mana bu yil 25-avgustda Linux 30 yoshni qarshi oladi. Manashu 30 yil davomida U Windows'ga jiddiy raqobatchi bo'lib yetishdi. Linux har joyda, Android qurilmalar, aqlli soatlar, yugurish yo'lagi ana boringki kosmik kemalarda ham. Linux Fondi ma'lumotlariga qaraganda dunyodagi har 10 ta kompyuterdan 9 tasida Linux ishlaydi. Qolgan bittasida yo Windows yoki BSD ishlaydi. Linux nafaqat gigant loyihalarda, balki oddiy kompyuterda ham ishlaydi va Windows'ga qaraganda so'ngi 5 yilda juda tez o'sayapdi. Keling endi Windows'dan Linux'ga nega ko'chib o'tish kerakligi haqida 5 ta sabab aytsam.

- Linux doimo bepul
- Linux kompyuter viruslariga chidamli. (Shaxsiy tajribamdan kelib chiqib aytaman. Hali biron marta Linux'da virus uchratganim yo'q)
- Ochiq manbaali (Linux OSning dasturiy manbaasi ochiq holatda saqlanadi va uni ushbu linkdan yuklab olishingiz mumkun)
- Linux boshqa operatsion tizimlarga qaraganda ancha tez ishlaydi
- Moslashuvchan. (Linux eski kompyuterlardan tortib, eng so'ngga super kompyuterda ham ishlayveradi)

Linux'ning O'zbekistonda ham Jamolari bor. Ularga misol qilib Xinux'ni keltirish mumkun. Ushbu hamjamiyat O'zbekistondagi rasmiy Linux hamjamiyati bo'lib Linux asosida zamonaviy o'zbek Linux operatsion tizimini ishlab chiqmoqda.

Xinux hamjamiyatiga qo'shiling: @xinuxuz

Manba: @saidbekarislonov
Forwarded from E'zozbek
bugun nix boyicha bilmagan narsalarimni bildm

funksiya faqat 1ta parameter qabul qilib, 1ta result qaytararkan
oldin, shuni 2ta parameter deb oylardim

overlay = final: prev: {}

bilsam bu 2ta func ekan

va bu {} aslida type ekan, attrset
{pkgs,...}: {} men buni destructurizatsiya deb oylardim

FP borgan sari yoqib boryapti
#nix_001

Ko'pchilik nix haqida eshitganda darhol nixos o'rnatib, operatsion tizimni almashtirish kerak deb o'ylaydi. Lekin aslo unday emas! nix-ni prosta package manager sifatida o'rnatib, loyihalaringizni izolyatsiya qilishingiz mumkin. buzilsa faqat shu project buziladi side effectlar bo'lormaydi

- ok muammo nimada?
Odatda loyihalarimizda turli versiyadagi paketlar kerak bo'ladi: nodejs 19, go 2.22, flutter 3.41 va hokazo. Biz bularni boshqarish uchun nvm, fvm, fnm yoki uv kabi o'nlab alohida instrumentlarni o'rnatamiz. Agar loyiha ko'p tilli (polyglot) bo'lsa, tizim "axlatxonaga" aylanib ketishi hech gap emas. nix-shell sizga vaqtinchalik muhit beradi
Nix-ning eng zo'r tarafi u hech narsani global darajada o'rnatmaydi. Paketlar faqat ma'lum bir terminal sessiyasi uchun "yashaydi".

— Bir martalik paketni ishlatish:
Agar sizga biror dastur faqat bir marta kerak bo'lsa, uni tizimga o'rnatib o'tirmang:
nix-shell --packages cowsay

Bu buyruqdan so'ng terminalda cowsay paydo bo'ladi. Sessiyani yopsangiz (exit), paket ham yo'q bo'ladi. Tizimingiz esa doim tozacha qoladi!

— Paketni o'rnatish, ishlatish va sessiyani darhol yopish:
Agar shunchaki bitta buyruqni run qilib, sessiyani o'chirmoqchi bo'lsangiz --run flagidan foydalaning:
nix-shell --packages cowsay --run "cowsay Nix juda zo'r!"

Bu buyruq bajariladi va terminal darhol eski holatiga qaytadi.

bundan tashqari
--pure to'liq izolyatsiya

Odatda nix-shellga kirganingizda, u sizning tizimingizdagi ba'zi muhit o'zgaruvchilarini (masalan, $PATH) o'zi bilan olib kiradi. --pure flagi tizimdagi barcha global o'zgaruvchilarni "tozalab" tashlaydi. Nima uchun kerak? Loyihangiz faqat nix ichidagi paketlarga tayanayotganiga va tashqi omillar (masalan, tizimga oldin o'rnatilgan kutubxonalar) ta'sir qilmayotganiga ishonch hosil qilish uchun.
nix-shell --packages nodejs --pure

Bu muhitda hatto ls yoki cat ham ishlamasligi mumkin (chunki ular Nix orqali berilmagan), bu haqiqiy laboratoriya sharoitini yaratadi.

--impure tizim bilan aloqani saqlash
Bu flag --purening teskarisi. U sizning joriy shell muhitingizdagi o'zgaruvchilarni nix muhiti ichiga olib kirishga ruxsat beradi.

Global PATHingiz paketlar bilan to'lib ketmaydi. Bir vaqtning o'zida bir nechta terminalda nodejs ning turli versiyalarini hech qanday konfliktlarsiz ishlatish mumkin. macos yoki ubuntu da bo'lsangiz ham, muhit bir xil ishlaydi.

nix-shell orqali paketlar bilan ishlab ko'rganingizdan so'ng, loyihalaringiz uchun shell.nix yoki flake.nix fayllarini yaratishni o'rgansangiz bo'ladi. Shunda loyiha papkasiga kirishingiz bilan barcha instrumentlar (node, postgres, redis) avtomatik tayyor turadi.

nixosga o'tish esa tizim darajasida (drayverlar, kernel, DE) to'liq nazoratni xohlovchilar uchun keyingi step.

packagelarni shu yerdan topsa buladi
search.nixos.org


@nnolan_labs
👍3🔥1👏1
#nix_002

endi keyingi muammo kelib chiqadi, doim imperative yo'l bilan shell command bilan ishlanadimi degan
bunga yechim shell.nix orqali declarative config bilan control qilish, bunda imkoniyatlar ancha keng, packagelar turlari, boshqa shell larda input qilib foydalanish separate config.

(import <nixpkgs> {}).mkShell {
# buildInputs: runtimeda kerak bo'ladigan narsalar
buildInputs = [
(import <nixpkgs> {}).openssl
(import <nixpkgs> {}).zlib
];

# nativeBuildInputs: compilyatsiya va build uchun
nativeBuildInputs = [
(import <nixpkgs> {}).gnumake
(import <nixpkgs> {}).gcc
];

# packages: terminalda bevosita ishlatiladigan dasturlar
packages = [
(import <nixpkgs> {}).nodejs_20
(import <nixpkgs> {}).nodePackages.pnpm
(import <nixpkgs> {}).git
(import <nixpkgs> {}).btop
];

# inputsFrom: agar boshqa paketdan meros olish kerak bo'lsa
inputsFrom = [];

# shu session uchun o'zgaruvchilar
QANAQADIR_VAR = "porjectim";

# shell ochilganda ishga tushadi, nix-shell shell.nix qilganizda shu command run bo'ladi
shellHook = ''
echo "------------------------------------------"
echo "$QANAQADIR_VAR muhiti yuklandi"
echo "nodejs: $(node -v)"
echo "pnpm: $(pnpm -v)"
echo "------------------------------------------"
'';
}

import <nixpkgs> { } devicega o'rnatilgan nixpkgsni import qil degani, huddi boshqa tillardagi importlar kabi, keyin ko'ramiz, boshqa versionlar bilan ishlashni ham  

buni qisqartiramiz

let
pkgs = import <nixpkgs> {};
in
pkgs.mkShell {
buildInputs = [
pkgs.openssl
pkgs.zlib
];
nativeBuildInputs = [
pkgs.gnumake
pkgs.gcc
];
packages = [
pkgs.nodejs_20
pkgs.nodePackages.pnpm
pkgs.git
pkgs.btop
];

inputsFrom = [];

QANAQADIR_VAR = "projectim";

shellHook = ''
echo "------------------------------------------"
echo "$QANAQADIR_VAR muhiti yuklandi"
echo "nodejs: $(node -v)"
echo "pnpm: $(pnpm -v)"
echo "------------------------------------------"
'';
}

let bizga variable declaration imkonini beradi, keyin uni in partda ishlata olishim uchun

huddi shu tartibda biz turli projectlar uchun shell environmentni setup qilishimiz mumkin, keyin boshqa deviceda prosta nix-shell shell.nix qivorsak tamom hamma narsa tayyor va manda ishlardi degan gap yo'qoladi )

separate qilib ishlatish. masalan front uchun alohida shell bo'lsa.
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
packages = [
pkgs.nodejs_20
pkgs.nodePackages.pnpm
pkgs.nodePackages.typescript-language-server
];
}


backend uchun alohida
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
packages = [
pkgs.go
pkgs.sqlc
pkgs.golangci-lint
pkgs.postgresql
];
}


biz buni merge qilib yuborishimiz mumkin

let
pkgs = import <nixpkgs> {};

# alohida shell-larni import qilib
fronend-env = import ./frontend.nix { inherit pkgs; };
backend-env = import ./backend.nix { inherit pkgs; };
in
pkgs.mkShell {
# ikkala shell ichidagi barcha paketlarni meros qilib oladi
inputsFrom = [ frontend-env backend-env ];

# natija, qayta yozish shart emas )
# bu hammasida shunday builtInputs, nativeBuildInputs, packages

# packages = [
# pkgs.go
# pkgs.sqlc
# pkgs.golangci-lint
# pkgs.postgresql
# pkgs.nodejs_20
# pkgs.nodePackages.pnpm
# pkgs.nodePackages.typescript-language-server
# ]
}


* .mkShellNoCC qilib ham shell create qilish mumkin, bunda C Compiler kerak bo'lmasa ishlatiladi odatda, masalan nodejs ga aloqador narsalar bo'lsa mkShellNoCC ishlatish mumkin, bu shell enviromentni tezroq setup qiladi

@nnolan_labs
#inbus

Open Source bu shunchaki tekinga kod tarqatish emas, biznes uchun budjet tejash, dasturchilar uchun eng tez rivojlanish yuli.

Yaqinda bir Garvard tadqiqotiga ko'zim tushdi, open source dasturlarning bugungi global iqtisodiyotdagi qiymati 9 trillion dollar ekan karl! Bu degani dunyodagi butun boshli ayti infratuzilma biz yozayotgan o'sha react, linux, docker, postgres tekinga olingan ulkan resurs ustiga qurilgan.

Xush hop keyinchi Kompaniyalarga tekinga kodni sharedan nima foyda?
Odatda yirik korporatsiyalar pulni kucha kuyga shunchaki sochib yubormaydi. Bu yerda aniq hisob-kitob bor

tasavvur qiling, har bitta kompaniya o'ziga alohida ma'lumotlar bazasi yoki freymvork yozganda, qancha vaqt va trillionlab pul ketardi. Tayyor bazani olib, o'z biznesiga moslab ishlatish milliardlarni tejaydi.

siz kompaniya ichida 50 ta eng zo'r dasturchini ishlatganiz bilan baribir kodda xato ketadi qayerdadir. open source qilingan kodni esa butun dunyodagi millionlab ko'zlar ko'rib turadi. kimdir xato topsa, senga tekinga pr ochib, xavfsizlikni to'g'irlab beradi ) kompaniya bir so'm to'lamasdan tayyor xavfsiz kodga ega bo'ladi.

birovning yopiq, pullik produktiga bog'lanib qolish masalan oracle xavfli. ertaga narxni osmonga ko'tarsa, biznes o'ladi. open sourceda esa kod ochiq, hech kim senga shart qo'ya olmaydi, davom ettirib ketsa bo'ladi, bitta fork bilan)

eng kuchli senior dasturchilar yopiq, hech kim ko'rmaydigan trash loyihalarda chirib ketishni xohlamaydi. ularga dunyo miqyosidagi open source productlarga hissa qo'shish yoqadi, kompaniya open source loyihani qo'llab-quvvatlayaptimi bo'ldi, zo'r kadrlar o'zi oqib keladi desa ham buladi

xo'p, kompaniyani tushundik, dasturchiga senga, menga nima foyda oss qilishdan?
ochig'ini gaplashamiz. Hozir bozorda oddiy rezume yoki men u qildim, bu qildim degan quruq gaplar o'tmaydi. hrlar va devlar sani kodingga qaraydi.
Seni o'sha x companiyada yoki mahalliy loyihalaringda nima yozganingni hech kim ko'ra olmaydi chunki NDA bor). kupi selfhost ishlatadi ano repo private. lekin github profilingda dunyo taniydigan bitta kutubxonaga masalan, astro yoki reactga bitta bo'lsa ham foydali pr ing bo'lsa, senga portfolio ham kerak emas.

Mahalliy loyihalarda odatda kodni sifati unchalik nazorat qilinmaydi, ishlasa bo'ldi qilib yopib ketiladi. Yirik open source loyihalarga kod qo'shayotganingda esa uni dunyodagi eng ashaddiy devlar code review qiladi. Senga kodingdagi xatolarni shunaqa chiroyli tushuntirib, yuzingga solib qo'yadiki, bitta prni uzida yillik tajriba olasan)
Uzing ishlatib yurgan kutubxonadagi issuelarni yopib, loyiha maintainerlariga yordam berishni boshlasang, seni global miqyosda ko'rishadi, ko'p hollarda chet eldagi startaplar open source loyihalarda faol bo'lgan bolalarni intervyusiz, tugridan tugri ishga chaqirib oladi.

Qisqasi, open source bu shunchaki xayriya emas, bu o'zaro manfaatli almashuv desa ham buladi. Kompaniyalar infratuzilmani ushlab turish uchun pul tikadi, dasturchilar esa o'z darajasini ko'tarish va global bozorga chiqish uchun kod bilan hissa qo'shadi, biznes uchun ham, dasturchi uchun ham natija kerak. oss esa har ikki tomonga ham xohlagan natijasini beradi,

Prosta faqat istemolchi bulmasdan, ozgina bo'lsa ham contribution qilib turish kerak )
Uzing ishlatadigan top programmaga contribute qilish, ano fichani man qushganman deyish ham bir boshqacha narsa beradi

library.hbs.edu/working-knowledge/open-source-software-the-nine-trillion-resource-companies-take-for-granted

Lets contribute!

@nnolan_labs
🔥2
Forwarded from Otabek’s I/O
#experience

Hamma vibe coding qilayabdi. Bilasizmi, korxona ko'p maxsulot ishlab chiqarsa nimalar sodir bo'ladi? Ularni test qilish, ko'rikdan o'tkazish qiyinlashadi. Ko’p moshina chiqarish ko’p sotishga emas, ishlab chiqarishni butunlay to’xtashiga olib boradi.

Qayta aytmoqchi bo'lgan so'zim, AI bilan kod yozish ishni tezlashtiradi, sifatni pasaytiradi. Kod yozish oldin ham muammo emas edi. Haqiqiy muammo kodni "review" va "test" qilishda edi. Biz hali ham noto'g'ri muammoni yechayabmiz.

"AI bilan kod yozavering, qolganlarni eshitmang" deydigan yomon injenerlikka targ'ib ko'payib qolgan. Haqiqiy injenering o'rganishdan va muammo yechishdan iborat. Muammo yechayabsizmi? Unda nima muammoni qanday yechayabsiz? Shu savolni so'rab ko'ring, agar nimadir o'rganayotgan bo'lsangiz demak to'g'ri yo'ldasiz.

Avvalroq kod yozishni AI ga topshirganim haqida aytgandim. Juda ko'p ishimni yengillashtirdi, ammo juda ko'p muammo keltirib chiqa boshladi ham. Bugundan kamroq vibe coding qilishga o'tayabman. Katta va murakkab ishlar, loyihalar uchun yaramas ekan.
👍3