Printable Version of Topic
Click here to view this topic in its original format
თბილისის ფორუმი > Web Programming > Angular 2


Posted by: Alcoholic 13 Mar 2017, 23:35
იქნებ დამეხმაროთ სწავლა მინდა ან ვინმემ თუ გაარჩიეთ რომ დამეხმაროთ.

Posted by: amon_amarth 14 Mar 2017, 09:24
გადმოსაწერად დარეგისტრირება დაგჭირდება

http://rutracker.org/forum/viewtopic.php?t=5305610

http://rutracker.org/forum/viewtopic.php?t=5276166

დანარჩენი პრაქტიკის ამბავია

Posted by: Alcoholic 14 Mar 2017, 14:44
amon_amarth - ორივე ვიდეო კურსებია ხომ ?

Posted by: Symfony 16 Mar 2017, 15:21
https://www.pluralsight.com/

შეგიძლია 3 თვიანი Trial დაითრიო. დაგუგლე როგორ უნდა.
ანგულარის გარდა, კიდევ ბევრ კარგ რამეს ისწავლი მანდ.

Posted by: Alcoholic 18 Mar 2017, 18:47
Symfony
amon_amarth

გაიხარეთ smile.gif

Posted by: merabi-777 18 Mar 2017, 21:51
ჯერ JS ისწავლე (თუ არ იცი რათქმაუნდა ) )

Posted by: mikey:) 19 Mar 2017, 01:11
გუდ ლაქ ამ ყ ლეობის სწავლაში smile.gif .

Posted by: Roofus 19 Mar 2017, 02:00
მარტო მე არ მეჩვენება რომ ძაან #ლეობაა და რატომ სწავლობს/წერს ხალხი და იყენებს? boli.gif

იგივე React-ი არ ჯობია? boli.gif
ყველანაირად user.gif

Posted by: elodin 19 Mar 2017, 02:08
mikey:)
Roofus

რატო ფიქრობთ რო ძაან #ლეობაა ? მინუსები დაწერეთ რაც არ გაგისწორდათ რა, მაინტერესებს მეც მქონდა შეხება ლაითად და ეგეთი ცუდი შეხედულებაც არ დამრჩა.


Posted by: Roofus 19 Mar 2017, 04:38
elodin
typescript-ია...
არაფერი საწინააღმდეგო არ მაქვს უბრალოდ ამჟამად არაა საუკეთესო სოლუშენი ჩემი ტასკების გადასაჭრელად...
შეიძლება სადღაც ეს სოლუშენი ჯობია... ან რომელიღაც პროექტში... სადმე.

Posted by: elodin 19 Mar 2017, 04:46
Roofus
აი ვინმე თუ ტაიპსკრიპტს მოიყვანდა ანგულარის მინუსად ნამდვილად არ მეგონა ... სხვას ყვეალფერს მოველოდი..

ტაიპსკრიპტს რას ერჩი კონკრეტულად? საკაიფო რამეა ...
რა ტასკებზეა საუბარი მაინც ?

Posted by: Roofus 19 Mar 2017, 04:58
elodin
არ ვიცი ბრო... როგორ დაგისაბუთო...
ტ#აკში ტკივილის გაჩენა არაა საჭირო რომ სოლუშენი გქონდეს...
რეაქტი მირჩევნია პირადად. boli.gif

Posted by: elodin 19 Mar 2017, 05:13
QUOTE (Roofus @ 19 Mar 2017, 04:58 )
elodin
არ ვიცი ბრო... როგორ დაგისაბუთო...
ტ#აკში ტკივილის გაჩენა არაა საჭირო რომ სოლუშენი გქონდეს...
რეაქტი მირჩევნია პირადად. boli.gif

ბაზარი არაა, პროსტო როცა რამეს იწუნებ მიზეზიც უნდა დაწერო.. მაინტერესებს ბოლო-ბოლო რეალური მიზეზები რა არის რაც სხვებს არ ევასებატ...

ნუ დაიკიდე რაც გისწორდება იმაზე უნდა წერო..

Posted by: Alcoholic 20 Mar 2017, 12:22
სამუშაოს ამბავში მთხოვენ ანგულარის შესწავლას smile.gif

Posted by: elodin 20 Mar 2017, 13:03
QUOTE (Alcoholic @ 20 Mar 2017, 12:22 )
სამუშაოს ამბავში მთხოვენ ანგულარის შესწავლას smile.gif

2 ის თუ ერთის ?
--------------------

Posted by: Alcoholic 20 Mar 2017, 16:54
elodin 2-ის ;(

Posted by: elodin 20 Mar 2017, 17:45
QUOTE (Alcoholic @ 20 Mar 2017, 16:54 )
elodin 2-ის ;(

წერ რამეზე?

კაია მერე ისწავლი ახალ ტექნოლოგიას, ცუდი რატოა ?

Posted by: mikey:) 20 Mar 2017, 21:54
elodin
ალბათ იმიტოა ###ობა რო ათასი უაზრო კოდის წერა გიწევს რაღაც პატარა დავალების გადასაჭრელად, მერე იმიტო რო html ს ძაან ამახნჯებს და ამძიმებს უაზრო ატრიბუტებით, ცალკე 1000 ###ობა კოდი უნდა წერო რო ჯერ მარტო დააბუტსტრაპო შენი აპლიკაცია და გამართო, ერთ კლასს ან კომპონენტს რო შექმნი 1000 გან უნდა დააიმპორტო ,
და რაც მთავარია არანაირად არ ჯდება MVC არქიტექტურაში, სულ ის გიწევს რო html ში წერო 1000 სისულელე. git თან მუშაობა კიდე ცალკე კიბოა (ყოველ შემთხვევაში Visual Studio Code ში) ერთი პლიუსი რაცაა ამ ###ობის არის TypeScript smile.gif ბოლომდე არც გამირჩევია თორე კიდე 100000001 სისულელეს აღმოვაჩენდი.

Posted by: Roofus 21 Mar 2017, 04:57



Posted by: MikaelSuliksen 26 Sep 2018, 18:52
elodin
QUOTE
აი ვინმე თუ ტაიპსკრიპტს მოიყვანდა ანგულარის მინუსად ნამდვილად არ მეგონა ... სხვას ყვეალფერს მოველოდი..

biggrin.gif

არადა მგონი ეგაა ყველაზე მაგარი რამე ანგულარში :დდდდ

Posted by: Hector.Barbossa 25 Oct 2018, 11:04
mikey:)
QUOTE
ალბათ იმიტოა ###ობა რო ათასი უაზრო კოდის წერა გიწევს რაღაც პატარა დავალების გადასაჭრელად

პატარა დავალებისთვის არც არის რეკომენდებული, მაგრამ თუ ამ დავალებას დიდად გაზრდის პოტენციალი აქვს, მაშინ ჯობია ანგულარი აირჩიო, რადგან მიშენება-დაშენებას იდეალურად იტანს სწორი არქიტექტურის შემთხვევაში.

QUOTE
html ს ძაან ამახნჯებს და ამძიმებს უაზრო ატრიბუტებით

თუ იცი რატომაც "ამახინჯებს", ამაზე მადლობელი უფრო უნდა იყო, ვიდრე ნაწყენი, რადგან ანგულარი რომ არა, შენ მოგიწევდა ამ "სიმახინჯეების" წეერა ხელით, რათა იგივე ფუნქციონალისთვის მიგეღწია.

QUOTE
ცალკე 1000 ###ობა კოდი უნდა წერო რო ჯერ მარტო დააბუტსტრაპო შენი აპლიკაცია და გამართო

https://cli.angular.io/

QUOTE
ერთ კლასს ან კომპონენტს რო შექმნი 1000 გან უნდა დააიმპორტო

1000-გან არ უწევს, მაგრამ ამით ცოტათი მეც უკმაყოფილო ვარ, თუმცა როგორც ვიცი ეს საჭიროება გამოწვეულია იმით, რომ კომპილირებული კოდი ნაკლებად მძიმე იყოს და ანგულარმა იცოდეს რომელი კლასი/კომპონენტი როგორ უნდა გამოიყენოს.

QUOTE
რაც მთავარია არანაირად არ ჯდება MVC არქიტექტურაში, სულ ის გიწევს რო html ში წერო 1000 სისულელე

ეს "სისულელეებიც" ცხოვრების გასამარტივებლად არის... მართალია თავის ჩარჩოებში გაქცევს ეს დირექტივები და მისთანები, მაგრამ სხვა ტექნოლოგიების გამოყენებესაც არ ზღუდავს ანგულარი და შესაძლებლობას გაძლევს სხვა "სისულელეები(ც)" წერო.

QUOTE
ერთი პლიუსი რაცაა ამ ###ობის არის Typescr1pt

ეს მართლაც პლიუსია ბევრი მიზეზის გამო...


Posted by: JS@Ninja 25 Oct 2018, 14:10
მაგარი ხოცი თემაა smile.gif))))))))))))))

Posted by: ac1001 20 Jan 2021, 14:36
საუკეთესო წიგნი:
http://linkz.ge/file/488620/Pro-Angular-9-Build-Powerful-and-Dynamic-Web-Apps.pdf.html
Adam Freeman

Posted by: Irakli2013 22 Jan 2021, 10:25
2 წელია ანგულარზე ვწერ და ვერ ვხვდები რა არ მოსწონს ხალხს biggrin.gif

დიდი პროექტებისთვის ზედგამოჭრილია.

Posted by: ac1001 24 Jan 2021, 15:49
Irakli2013
ანგულარს ვსწავლობ, წინგს ვკითხულობ.
და devDependencies და dependencies შორის რა განსხვავებაა? devDependency გამოიყენებაო დეველოპმენტის დროს და პროდაქშენზე რო დაბილდავ იქ არ გადადისო და თუ დეველოპმენტის დროს გამოიყენება პროდაქშენზე რატო არაა საჭირო მაშინ?
სწორად გავიგე?

Posted by: iMaximuSi 24 Jan 2021, 18:12
ac1001
QUOTE
თუ დეველოპმენტის დროს გამოიყენება პროდაქშენზე რატო არაა საჭირო მაშინ?

მაგალითად დოკუმენტაციის გენერატორები, ტესტირების ბიბლიოთეკები, ბილდისას კოდის შესამოწმებელი რაღაცეები და ა.შ არ გჭირდება პროდაქშენზე იმიტომ რომ პროდაქშენამდე უნდა გაიაროს ეგენი ტესტინგზე ან სადმე, პროდაქშენზე თუ ადის ესეიგი ყველაფერი შემომწებული და ოქეია და მანდ დეველოპმენტის თულები არაა საჭირო

Posted by: ac1001 24 Jan 2021, 19:40
iMaximuSi
ა მივხვდი. ანუ მარტო დეველოპმენტის დროს რასაც იყენებ ტულები ეგენია მანდ. მარა ნპმ პაკიჯები მანდ არ არის? რაზეც პროექტია დამოკიდებული

Posted by: Irakli2013 15 Feb 2021, 12:59
QUOTE
ა მივხვდი. ანუ მარტო დეველოპმენტის დროს რასაც იყენებ ტულები ეგენია მანდ. მარა ნპმ პაკიჯები მანდ არ არის? რაზეც პროექტია დამოკიდებული


dev-dependencies-ში რაც არის არ ახდენს გავლენას ფროდაქშენის კოდზე.

მაგალითად მანდ შეიძლება გქონდეს tslint, eslint, tsconfig და რაღაც ფექიჯისთვის ტიპების აღწერის ფექიჯი, etc.

რეალურად ეგენი არ ცვლიან კოდში არაფერს, უბრალოდ შენ გიმარტივებენ საქმეს დეველოპმენტის დროს (მაგალითად ლინტერების შემთხვევაში, თუ კარგი IDE გაქვს, შეცდომებს დააჰაილაითებს და ა.შ.) ან ლოკალურად რომ რაღაც გატესტო

Posted by: river-song 20 Feb 2021, 17:56
ეხლა უნდა დავიწყო ანგულარი და თემაში რო შემოვიეხედე მოტივაცია დამეკარგა,

ჯერჯერობით მარტო ის მომწონს, რომ ტაიპსკრიპტი ტიპიზებული ენაა user.gif

Posted by: DoomDev 22 Feb 2021, 00:52
QUOTE

მოტივაცია დამეკარგა


თუ არ გამოიყენე ისე ვერ გაიგებ კარგია თუ ცუდი
არ არის ცუდი ფრეიმვორკი ჩემი გჯერა?!
თუ იმის გეშინია რომ ისწავლი და სამსახურს ვერ იშოვი ცდები
ან სხვა დანარჩენ ფრეიმვორკებზე ნაკლები შესაძლებლობები აქვს მაგაშიც ცდები
თუ სხვა მიზეზი გაქვს მაგაშიც შეცდები givi.gif იმიტომ რომ ცუდი ფრეიმვორკს ამხელა ქომუნითი ვერ ეყოლება
აი ცუდი დეველოპერები ეყოლება კარგ ფრეიმვორკს

https://trends.google.com/trends/explore?q=%2Fg%2F11c6w0ddw9,%2Fm%2F012l1vxv,%2Fg%2F11c0vmgx5d

https://gist.github.com/tkrotoff/b1caa4c3a185629299ec234d2314e190

user posted image

user posted image

სხვა სტატისტიკური მონაცემები შენც შეგიძლია მოიძიო

Posted by: river-song 22 Feb 2021, 22:13
QUOTE
თუ არ გამოიყენე ისე ვერ გაიგებ კარგია თუ ცუდი
არ არის ცუდი ფრეიმვორკი ჩემი გჯერა?!
თუ იმის გეშინია რომ ისწავლი და სამსახურს ვერ იშოვი ცდები
ან სხვა დანარჩენ ფრეიმვორკებზე ნაკლები შესაძლებლობები აქვს მაგაშიც ცდები
თუ სხვა მიზეზი გაქვს მაგაშიც შეცდები  იმიტომ რომ ცუდი ფრეიმვორკს ამხელა ქომუნითი ვერ ეყოლება
აი ცუდი დეველოპერები ეყოლება კარგ ფრეიმვორკს

კაია , მადლობა მოტივაციისთვის, ერთ თვეში დავწერ შთაბეჭდილებას biggrin.gif



Posted by: river-song 7 Mar 2021, 21:12
ჯერ მარტო ბასიქ რაღაცეები ვისწავლე და ყველაფერი იმაზე მარტივია ვიდრე უფრეიმვორკოდ ჯავასკრიპტით წერის დროს იყო biggrin.gif
ერთი ისაა, რომ აშკარად დიდი პროექტებისთვის არის, პროსტა, მე ვერც წარმომიდგენია , ეგეთი დიდი პროექტი რაუნდა იყოს რო ამხელა ინტერფეისი დაჭირდეს ;
დაახლოებით ჯანგოა ფრონტენდში რა ;
მარა კომპონენტებად რომაა დაყოფილი ეგ ძაან მომწონს, კარგად ალაგებს პროექტს, ახალ ფიჩერებს რო დაამატებ , ძველების არევის შანსი მცირდება biggrin.gif

პ.ს. ისე რეაქტმაც დამაინტერესა ეხლა , როგორაა აწყობილი user.gif

Posted by: river-song 9 Mar 2021, 19:47
ობიექტი როგორ უნდა გადავცე ერთი კომპონენტიდან მეორეში ხომ არავინ იცის აქ შემთხვევით? ცვლადათ ვცდილობდი მშობლისთვის გადამეცა და ერორი ამომიგდო :/

Posted by: DoomDev 12 Mar 2021, 01:08
river-song

როგორ აკეთებ აბა...

https://angular.io/guide/two-way-binding


Posted by: river-song 13 Apr 2021, 22:25
DoomDev

[src]="search[username][3]"

აი ეს არმუშაობს და როგორ კეთდება ხოარ იცი, ობიექტიდან მინდა სურათის ურლ ის წამოღება და ვერ ხედავს ;
რამე სინტაქსი უნდა სხვანაირი ? თუ არ კეთდება ობიექტიდან ამოღება მონაცემის ასეთ შემთხვევაში;


პ.ს. უი იმუშავა ინდექსი შემშლია user.gif

Posted by: DoomDev 13 Apr 2021, 23:28
river-song

getter გააკეთე და იგ დაამუშავე ეს ინფო
მაგალითად


CODE

class MyClass{
 get searchUsername() {
   return this.search[this.username]
 }
}


CODE

[src]="searchUsername"


ან თუ არგუმენტი გინდა გადასცე უბრალო მეთოდი გააკეთე

CODE

class MyClass{
 searchUsername(username) {
   return this.search[username]
 }
}


CODE
[src]="searchUsername(username)"

რადგან არ ვიცი ზუსტად რას აკეთებს ასეთი "ზეპირი" რეფაქტორინგი შემოგთავაზე

Posted by: river-song 14 Apr 2021, 11:05
DoomDev
კიდე იცი რა მაინტერესებს, პროფილი მაქვს მოკლედ და ღილაკები აქვს რედაქტირების , მარა სხვა იუზერის პროფილზე გადასვლისას ღილაკები არმინდა გამოჩნდეს , შეიძლება რო იგივე კომპონენტი გამოვიყენო და ზოგი ღილაკი დავმალო(ფორმების ღილაკებია) , მეზარება გადაკოპირება თავიდან, მთლიანი კომპონენტის დაკოპირება მიწევს პრაქტიკულად :/.

Posted by: DoomDev 14 Apr 2021, 12:45
river-song

https://angular.io/api/common/NgIf

რაც გაქვს განმასხვავებელი ნიშანი იმას ჩაუშვებ expression-ში
ან პირდაპირ პროპ ზე გექნება რამე
ან role ბი რავი

CODE

class AppComponent {
 user = {
   name: "Angular",
   status: "admin"
 };

 get isAdmin(): boolean {
   return this.user.status === "admin";
 }
}


CODE

<div *ngIf="isAdmin"> Secret </div>


pipe ბიც შეიძლება დაიწეროს მაგრამ ...

Posted by: river-song 14 Apr 2021, 12:52
DoomDev
ხო მოვიფიქრე უკვე და იმუშავა, ურლში გავაყოლე თვითონ არის თუ სხვა და მერე კლასი დავუმატე და ნონები გავუწერე ღილაკებს თუ თვითონ არარის, ფრიად კმაყოფილი დავრჩი biggrin.gif

Posted by: river-song 20 Apr 2021, 13:09
DoomDev
ძალიან მნიშვნელოვანი შეკითხვა მაქვს ჩემი აპლიკაციისთვის biggrin.gif

მოკლედ ყველაფერი რასაც ვცვლი მონაცემთა ბაზაში თუ არ დავარეფრეშე არ აისახება , რაც ზოგიერთ ფუნქციონალს ძაან არ უხდება რა , მაგალითად მომხმარებელს ფოლოუს რო ვაჭერ მინდა ეგრევე შეიცვალოს რომ ფოლლოუინგ ვარ და არა დარეფრეშების მერე, ეგეთი ფუნქციონალის დამატება როგორ შეილება, ჩვეულებრივი ჯავასკრიპტიდან აჯაქსის მეშვეობით გამოდიოდა ეგეთი რამე და ანგულარში როგორ ხდება ეგ ამბავი თუ იცი, დაახლოებით რო მითხრა და მერე გუგლში ვნახავ ჩემით დაწვრილებით .

Posted by: Irakli2013 20 Apr 2021, 14:56
river-song

სერვისი ხომ გაქვს რითაც თავდაპირველად ტვირთავ მაგ ინფორმაციას?

თავიდან გამოიძახე უბრალოდ და ეგაა

Posted by: river-song 20 Apr 2021, 17:30
Irakli2013
მადლობაა, რატომღაც მე ვერ მოვიფიქრე უცებ biggrin.gif

Posted by: DoomDev 21 Apr 2021, 00:08
river-song

გითხრეს უკვე სერვისებზე
არ ვიცი შენ როგორ გააკეთებ ბათ ჩემს ლოღიკას შემოგთავაზებ თუ სურვილი გექნება ჩაანალიზე
მაგალითად შევქმნიდი რამე სერვის რომელიც მხოლოდ უსერებზე იქნება პასუხისმგებელი
ბაზიდან წამოღება და სთეითზე დასმა
და შემდეგ დავუყენებდი ორ მეთოდს
ერთი ფოლოვს გააკეთებდა
მეორე ანფოლოუს

სერვისები ზოგადად ბაი დეფაულტ singletone არის
რაც იმას ნიშნავს რომ სადაც არ უნდა დააინჟექტო ერთი instance ექნება
შესაბამისად როდესაც სერვისის სთეითს შეცვლი ყველგან შეიცვლება სადაც გამოყენებული გაქვს
დავუშვათ ესეთი სტრუქტურა გვაქვს

CODE

class UsersService {
 users = [
   { id: 1, name: 'John', followers: [2] },
   { id: 2, name: 'Jane', followers: [1, 3] },
   { id: 3, name: 'James', followers: [] },
 ];

 follow(id, follower) {
   this.httpCall((response) => {
     if (response === 'ok') {
       this.users = this.users.map((user) =>
         user.id === id
           ? { ...user, followers: [...user.followers, follower] }
           : user
       );
     }
   });
 }

 unfollow(id, follower) {
   this.httpCall((response) => {
     if (response === 'ok') {
       this.users = this.users.map((user) =>
         user.id === id
           ? { ...user, followers: user.followers.filter((x) => x !== follower) }
           : user
       );
     }
   });
 }
}



პრიმიტიული სტრუქტურა users ბაზიდან მოდის (მე სტატიკურად დავწერე სადემონსტრაციოდ)
და როგორც ხედავ ორი მეთოდია
რომლების ქოლის შემთხვევაში ბექზე მიაქვს id იუზერის ბაზაში შესაბამის მოქმედებებს შეასრულებ ანუ დაასუბსქრაიბებ და როდესაც პასუხი მოვა
მხოლოდ მაშინ შეცვლი სთეითს
რაც გამოიწვევს შენს კომპონენტის რე რენდერსაც სადაც UsersService გექნება გამოყენებული

დავუშვათ ასეთი ლოგიკა დიგევს კომპონენტში სადაც დაინჟექტებული გაქვს ეს სერვისი

CODE

class AppComponent {
 constructor(private usersService: UsersService) {}

 following() {
   return (
     this.auth?.user &&
     this.usersService.users
       .find((user) => user.id === this.route.param.id)
       .followers.some((id) => id === this.auth.user.id)
   );
 }
}


და სადმე თემპლეტში გაქვს მაგალითად

CODE

<button [disabled]="following"> {{ following  ? "unfollow" : "follow"}}</button>


და ონქლიქ ივენთზე შევცვლით შესაბამისად მაგალითად

CODE

<button [disabled]="following" (click)="followHandler"> {{ following  ? "unfollow" : "follow"}}</button>


CODE

class AppComponent {
 constructor(private usersService: UsersService) {}

 get following() {
   return (
     this.auth?.user &&
     this.usersService.users
       .find((user) => user.id === this.route.param.id)
       .followers.some((id) => id === this.auth.user.id)
   );
 }

 followHandler() {
   const { follow, unfollow } = this.usersService;
   const userId = this.route.param.id;
   this.following ? unfollow(userId) : follow(userId);
 }
}


რამდენჯერაც followHandler ის ტრიგერს გააკეთებ იმდენჯერ შესაბამისად წავა რექუესთს გააკეთებს
პასუხი რომ მოვა სთეითს შეცვლის და შენი კომპონენტიც რეაგირებას გააკეთებს ანუ რე რენდერს გააკეთებს

ნუ კოდის დეტალებში ნუ ჩახვალ სახელები მაქს მიახლოვებით დავარქვი ზეპირად დაახლოვებით მიხვდე რა რის ჰანდლინგს აკეთებს

Posted by: river-song 22 Apr 2021, 16:22
DoomDev
მადლობა დახმარებისთვის , სერვისი რო გამოვიძახე გამოვიდა უკვე , შენ რაც დაწერე ეგეთი დახვეწილი არარის, მარა მუშაობს biggrin.gif

Posted by: river-song 27 Apr 2021, 12:25
"/" აი ამ როუთის რედირექტი მინდა ისეთ ურლზე სადაც პარამეტრია გადასაცემი და ეგ როგორ უნდა გავაკეთო ნავიგაციაში ხომ არიცით შემთხვევით?

Posted by: merabi-777 28 Apr 2021, 00:02
Symfony
ეგ ფრეიმვორქი მე მევასება და შენ რა პონტში გიწერია biggrin.gif biggrin.gif biggrin.gif

Posted by: river-song 4 May 2021, 22:42
router-outlet მაქვს აპ მოდულში და ცვლადებს ვერ გადავცემ, უფრო სწორად გადავეცი რაღაცა ხლაფორთობით, მარა გარკვეული დროის მერე იშლება, არადა ნავიგაციისთვის მჭIრდება და საიტი მეშლება სულ(ამ ცვლადებზე მაქვს მიბმული რაც იხატება), როგორ ხდება მოკლედ გადაცემა ცვლადების როარ წაიშალოს და ანდეფაინდ არ გახდეს არიცით? user.gif

Posted by: georgen6 30 Jun 2021, 11:31
მოგესალმებით, სწავლება თუშეუძლია ვინმეს ანგულარის?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)