From f69fbcd316b8568513a0ad98f6936762f8769569 Mon Sep 17 00:00:00 2001 From: Reinaldy Rafli Date: Sat, 12 Aug 2023 10:10:01 +0700 Subject: [PATCH 1/2] feat(content): praktik load balancer --- .../chats/praktik-load-balancer/exported.json | 727 ++++++++++++++++++ .../chats/praktik-load-balancer/metadata.json | 7 + .../stickers/sticker (20).webp | Bin 0 -> 9054 bytes .../stickers/sticker (20).webp_thumb.jpg | Bin 0 -> 5294 bytes src/service/Parser.ts | 17 +- 5 files changed, 749 insertions(+), 2 deletions(-) create mode 100644 public/chats/praktik-load-balancer/exported.json create mode 100644 public/chats/praktik-load-balancer/metadata.json create mode 100644 public/chats/praktik-load-balancer/stickers/sticker (20).webp create mode 100644 public/chats/praktik-load-balancer/stickers/sticker (20).webp_thumb.jpg diff --git a/public/chats/praktik-load-balancer/exported.json b/public/chats/praktik-load-balancer/exported.json new file mode 100644 index 0000000..63813dc --- /dev/null +++ b/public/chats/praktik-load-balancer/exported.json @@ -0,0 +1,727 @@ +{ + "name": "Teknologi Umum v2.0", + "type": "public_supergroup", + "id": 1712691810, + "messages": [ + { + "id": 262568, + "type": "message", + "date": "2023-02-10T15:27:59", + "date_unixtime": "1676017679", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Om saya mau praktek load balancer", + "text_entities": [ + { + "type": "plain", + "text": "Om saya mau praktek load balancer" + } + ] + }, + { + "id": 262569, + "type": "message", + "date": "2023-02-10T15:28:04", + "date_unixtime": "1676017684", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Pake nginx ya", + "text_entities": [ + { + "type": "plain", + "text": "Pake nginx ya" + } + ] + }, + { + "id": 262570, + "type": "message", + "date": "2023-02-10T15:28:45", + "date_unixtime": "1676017725", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Itu cara bagi traficnya gmn ?", + "text_entities": [ + { + "type": "plain", + "text": "Itu cara bagi traficnya gmn ?" + } + ] + }, + { + "id": 262571, + "type": "message", + "date": "2023-02-10T15:29:17", + "date_unixtime": "1676017757", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Misal ada 2 Vm", + "text_entities": [ + { + "type": "plain", + "text": "Misal ada 2 Vm" + } + ] + }, + { + "id": 262572, + "type": "message", + "date": "2023-02-10T15:29:41", + "date_unixtime": "1676017781", + "from": "Aldi William", + "from_id": "user368024110", + "text": "2 VM itu aplikasinya sama gk sih ?", + "text_entities": [ + { + "type": "plain", + "text": "2 VM itu aplikasinya sama gk sih ?" + } + ] + }, + { + "id": 262573, + "type": "message", + "date": "2023-02-10T15:30:06", + "date_unixtime": "1676017806", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Source code sama atau beda", + "text_entities": [ + { + "type": "plain", + "text": "Source code sama atau beda" + } + ] + }, + { + "id": 262574, + "type": "message", + "date": "2023-02-10T15:30:20", + "date_unixtime": "1676017820", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Misal toko online", + "text_entities": [ + { + "type": "plain", + "text": "Misal toko online" + } + ] + }, + { + "id": 262575, + "type": "message", + "date": "2023-02-10T15:31:29", + "date_unixtime": "1676017889", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Atau 1 VM di buat masing2 domain bisnis ?", + "text_entities": [ + { + "type": "plain", + "text": "Atau 1 VM di buat masing2 domain bisnis ?" + } + ] + }, + { + "id": 262576, + "type": "message", + "date": "2023-02-10T15:33:14", + "date_unixtime": "1676017994", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262575, + "text": "mahal amat kek gini", + "text_entities": [ + { + "type": "plain", + "text": "mahal amat kek gini" + } + ] + }, + { + "id": 262577, + "type": "message", + "date": "2023-02-10T15:33:50", + "date_unixtime": "1676018030", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262570, + "text": "ini tergantung pake rule load balancing apa.\n\napakah round robin, weighted round robin, random, least connection, closest physical location, dll", + "text_entities": [ + { + "type": "plain", + "text": "ini tergantung pake rule load balancing apa.\n\napakah round robin, weighted round robin, random, least connection, closest physical location, dll" + } + ] + }, + { + "id": 262578, + "type": "message", + "date": "2023-02-10T15:34:00", + "date_unixtime": "1676018040", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "kalo pake nginx menurut gw sih ga seru ya wkwkwkwkw", + "text_entities": [ + { + "type": "plain", + "text": "kalo pake nginx menurut gw sih ga seru ya wkwkwkwkw" + } + ] + }, + { + "id": 262579, + "type": "message", + "date": "2023-02-10T15:34:44", + "date_unixtime": "1676018084", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "dan tergantung tujuan load balancing ini mau ngapain. emang mau serve server closest to user's location kayak teknum, atau simply emang mau handle larger load doang", + "text_entities": [ + { + "type": "plain", + "text": "dan tergantung tujuan load balancing ini mau ngapain. emang mau serve server closest to user's location kayak teknum, atau simply emang mau handle larger load doang" + } + ] + }, + { + "id": 262580, + "type": "message", + "date": "2023-02-10T15:35:21", + "date_unixtime": "1676018121", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "load balancing itu kalo simpelnya ya dari nginx/caddy/traefik/any api gateway kita nge state backend urls (atau target urls)", + "text_entities": [ + { + "type": "plain", + "text": "load balancing itu kalo simpelnya ya dari nginx/caddy/traefik/any api gateway kita nge state backend urls (atau target urls)" + } + ] + }, + { + "id": 262581, + "type": "message", + "date": "2023-02-10T15:37:40", + "date_unixtime": "1676018260", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": [ + "misal kalo caddy\n\n", + { + "type": "code", + "text": "yourdomain.com {\n reverse_proxy {\n upstream vm1:8000 vm2:8000 vm3:800\n lb_policy round_robin\n }\n}" + } + ], + "text_entities": [ + { + "type": "plain", + "text": "misal kalo caddy\n\n" + }, + { + "type": "code", + "text": "yourdomain.com {\n reverse_proxy {\n upstream vm1:8000 vm2:8000 vm3:800\n lb_policy round_robin\n }\n}" + } + ] + }, + { + "id": 262582, + "type": "message", + "date": "2023-02-10T15:38:22", + "date_unixtime": "1676018302", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "tapi kalo kayak gini pasti muncul pertanyaan \"nginx nya bakal jadi single point of failure dong?\"", + "text_entities": [ + { + "type": "plain", + "text": "tapi kalo kayak gini pasti muncul pertanyaan \"nginx nya bakal jadi single point of failure dong?\"" + } + ] + }, + { + "id": 262583, + "type": "message", + "date": "2023-02-10T15:38:42", + "date_unixtime": "1676018322", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "nah kalo ga ada pertanyaan itu, gw bisa makan dengan damai", + "text_entities": [ + { + "type": "plain", + "text": "nah kalo ga ada pertanyaan itu, gw bisa makan dengan damai" + } + ] + }, + { + "id": 262584, + "type": "message", + "date": "2023-02-10T15:41:50", + "date_unixtime": "1676018510", + "from": "Ahmad Tohir", + "from_id": "user368718073", + "text": "btw biasanya kalo spin up replicated app di 1 VM udah mentok, enak horizontal apa vertical scaling nya ?", + "text_entities": [ + { + "type": "plain", + "text": "btw biasanya kalo spin up replicated app di 1 VM udah mentok, enak horizontal apa vertical scaling nya ?" + } + ] + }, + { + "id": 262585, + "type": "message", + "date": "2023-02-10T15:42:21", + "date_unixtime": "1676018541", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262584, + "text": "both", + "text_entities": [ + { + "type": "plain", + "text": "both" + } + ] + }, + { + "id": 262586, + "type": "message", + "date": "2023-02-10T15:43:01", + "date_unixtime": "1676018581", + "from": "Ahmad Tohir", + "from_id": "user368718073", + "reply_to_message_id": 262585, + "text": "siip2", + "text_entities": [ + { + "type": "plain", + "text": "siip2" + } + ] + }, + { + "id": 262587, + "type": "message", + "date": "2023-02-10T15:43:54", + "date_unixtime": "1676018634", + "from": "dicha?", + "from_id": "user925009191", + "reply_to_message_id": 262582, + "text": "klo load balancernya mati gimana", + "text_entities": [ + { + "type": "plain", + "text": "klo load balancernya mati gimana" + } + ] + }, + { + "id": 262588, + "type": "message", + "date": "2023-02-10T15:44:02", + "date_unixtime": "1676018642", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262587, + "text": "sialan", + "text_entities": [ + { + "type": "plain", + "text": "sialan" + } + ] + }, + { + "id": 262589, + "type": "message", + "date": "2023-02-10T15:44:06", + "date_unixtime": "1676018646", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "bentar makan dulu", + "text_entities": [ + { + "type": "plain", + "text": "bentar makan dulu" + } + ] + }, + { + "id": 262590, + "type": "message", + "date": "2023-02-10T15:44:16", + "date_unixtime": "1676018656", + "from": "Ahmad Tohir", + "from_id": "user368718073", + "reply_to_message_id": 262587, + "file": "stickers/sticker (20).webp", + "thumbnail": "stickers/sticker (20).webp_thumb.jpg", + "media_type": "sticker", + "sticker_emoji": "✨", + "width": 512, + "height": 511, + "text": "", + "text_entities": [] + }, + { + "id": 262591, + "type": "message", + "date": "2023-02-10T15:45:30", + "date_unixtime": "1676018730", + "from": "Rahmat Fathoni", + "from_id": "user630036819", + "reply_to_message_id": 262587, + "text": "pernah kejadian, nginx (load balancer) nya lemot, minta restart wkwk", + "text_entities": [ + { + "type": "plain", + "text": "pernah kejadian, nginx (load balancer) nya lemot, minta restart wkwk" + } + ] + }, + { + "id": 262592, + "type": "message", + "date": "2023-02-10T15:46:36", + "date_unixtime": "1676018796", + "from": "TheManInTheMiddle", + "from_id": "user1238654979", + "text": "Kalau di nginx bisa detect user datang dari web / mobile? bisa ubah routing gitu ga ya? jadi web pakai build 1, mobile pakai build 2", + "text_entities": [ + { + "type": "plain", + "text": "Kalau di nginx bisa detect user datang dari web / mobile? bisa ubah routing gitu ga ya? jadi web pakai build 1, mobile pakai build 2" + } + ] + }, + { + "id": 262593, + "type": "message", + "date": "2023-02-10T15:48:21", + "date_unixtime": "1676018901", + "from": "Rahmat Fathoni", + "from_id": "user630036819", + "text": [ + { + "type": "link", + "text": "https://serverfault.com/a/775464" + } + ], + "text_entities": [ + { + "type": "link", + "text": "https://serverfault.com/a/775464" + } + ] + }, + { + "id": 262594, + "type": "message", + "date": "2023-02-10T15:54:01", + "date_unixtime": "1676019241", + "from": "Aldi William", + "from_id": "user368024110", + "reply_to_message_id": 262581, + "text": "Oow ini settingannya tq om penjelasannya", + "text_entities": [ + { + "type": "plain", + "text": "Oow ini settingannya tq om penjelasannya" + } + ] + }, + { + "id": 262595, + "type": "message", + "date": "2023-02-10T15:55:37", + "date_unixtime": "1676019337", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262587, + "text": "kalo load balancer mati, kita bisa restart aja. atau..\n\nspawn load balancer lagi di VM terpisah, dan nge-load balance load balancernya di level DNS", + "text_entities": [ + { + "type": "plain", + "text": "kalo load balancer mati, kita bisa restart aja. atau..\n\nspawn load balancer lagi di VM terpisah, dan nge-load balance load balancernya di level DNS" + } + ] + }, + { + "id": 262596, + "type": "message", + "date": "2023-02-10T15:56:27", + "date_unixtime": "1676019387", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "jadi punya 2 VM (atau mungkin lebih) di region yang sama (atau mungkin beda). yang penting punya public IPv4 dan public IPv6 yang beda", + "text_entities": [ + { + "type": "plain", + "text": "jadi punya 2 VM (atau mungkin lebih) di region yang sama (atau mungkin beda). yang penting punya public IPv4 dan public IPv6 yang beda" + } + ] + }, + { + "id": 262597, + "type": "message", + "date": "2023-02-10T15:56:49", + "date_unixtime": "1676019409", + "edited": "2023-02-10T17:45:20", + "edited_unixtime": "1676025920", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "nanti kalo di DNS settings bakal ketemu A record dan AAAA record. untuk setiap keys, value dari kedua record ini bisa lebih dari satu", + "text_entities": [ + { + "type": "plain", + "text": "nanti kalo di DNS settings bakal ketemu A record dan AAAA record. untuk setiap keys, value dari kedua record ini bisa lebih dari satu" + } + ] + }, + { + "id": 262598, + "type": "message", + "date": "2023-02-10T15:56:50", + "date_unixtime": "1676019410", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "misal", + "text_entities": [ + { + "type": "plain", + "text": "misal" + } + ] + }, + { + "id": 262599, + "type": "message", + "date": "2023-02-10T15:57:17", + "date_unixtime": "1676019437", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": [ + { + "type": "pre", + "text": "A teknologiumum.com 103.80.20.1\nA teknologiumum.com 103.28.132.63", + "language": "" + } + ], + "text_entities": [ + { + "type": "pre", + "text": "A teknologiumum.com 103.80.20.1\nA teknologiumum.com 103.28.132.63", + "language": "" + } + ] + }, + { + "id": 262600, + "type": "message", + "date": "2023-02-10T15:58:25", + "date_unixtime": "1676019505", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "terus muncul pertanyaan lagi biasanya, \"loh kalo bisa di load balance dari level DNS, udah nggak butuh load balancer kayak nginx dan semacamnya dong?\"", + "text_entities": [ + { + "type": "plain", + "text": "terus muncul pertanyaan lagi biasanya, \"loh kalo bisa di load balance dari level DNS, udah nggak butuh load balancer kayak nginx dan semacamnya dong?\"" + } + ] + }, + { + "id": 262601, + "type": "message", + "date": "2023-02-10T15:58:45", + "date_unixtime": "1676019525", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "atau pertanyaan lain, \"kalo ada 2 VM atau lebih gitu, cara biar settings nya konsisten terus gimana?\"", + "text_entities": [ + { + "type": "plain", + "text": "atau pertanyaan lain, \"kalo ada 2 VM atau lebih gitu, cara biar settings nya konsisten terus gimana?\"" + } + ] + }, + { + "id": 262602, + "type": "message", + "date": "2023-02-10T15:58:54", + "date_unixtime": "1676019534", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "monggo yang kira2 kebayang jawabannya", + "text_entities": [ + { + "type": "plain", + "text": "monggo yang kira2 kebayang jawabannya" + } + ] + }, + { + "id": 262611, + "type": "message", + "date": "2023-02-10T16:06:28", + "date_unixtime": "1676019988", + "from": "Muhammad Nasrul", + "from_id": "user522266589", + "text": "ngomongin server on premise harus standby 2 ip public dari isp yg berbeda, kejadian dikantor isp A mati enggak bisa diaccess jadinya haha\nsetelah itu baru kepiran pakai dns made easy, dia nyediain buat secondary ip", + "text_entities": [ + { + "type": "plain", + "text": "ngomongin server on premise harus standby 2 ip public dari isp yg berbeda, kejadian dikantor isp A mati enggak bisa diaccess jadinya haha\nsetelah itu baru kepiran pakai dns made easy, dia nyediain buat secondary ip" + } + ] + }, + { + "id": 262617, + "type": "message", + "date": "2023-02-10T16:09:12", + "date_unixtime": "1676020152", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262611, + "text": "tapi ini bener bener works kalo emang beda physical region", + "text_entities": [ + { + "type": "plain", + "text": "tapi ini bener bener works kalo emang beda physical region" + } + ] + }, + { + "id": 262618, + "type": "message", + "date": "2023-02-10T16:09:20", + "date_unixtime": "1676020160", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "misal 1 datacenter singapur, 1 datacenter australia", + "text_entities": [ + { + "type": "plain", + "text": "misal 1 datacenter singapur, 1 datacenter australia" + } + ] + }, + { + "id": 262619, + "type": "message", + "date": "2023-02-10T16:14:42", + "date_unixtime": "1676020482", + "from": "Aldi William", + "from_id": "user368024110", + "reply_to_message_id": 262600, + "text": "Apa load balance dari dns ini bisa settings seperti round robin ?", + "text_entities": [ + { + "type": "plain", + "text": "Apa load balance dari dns ini bisa settings seperti round robin ?" + } + ] + }, + { + "id": 262620, + "type": "message", + "date": "2023-02-10T16:15:19", + "date_unixtime": "1676020519", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Bagi rata ke masing2 dns", + "text_entities": [ + { + "type": "plain", + "text": "Bagi rata ke masing2 dns" + } + ] + }, + { + "id": 262621, + "type": "message", + "date": "2023-02-10T16:16:09", + "date_unixtime": "1676020569", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262619, + "text": "nggak", + "text_entities": [ + { + "type": "plain", + "text": "nggak" + } + ] + }, + { + "id": 262623, + "type": "message", + "date": "2023-02-10T16:17:23", + "date_unixtime": "1676020643", + "from": "Aldi William", + "from_id": "user368024110", + "reply_to_message_id": 262621, + "text": "Oke berarti jawabannya sudah terjawab", + "text_entities": [ + { + "type": "plain", + "text": "Oke berarti jawabannya sudah terjawab" + } + ] + }, + { + "id": 262624, + "type": "message", + "date": "2023-02-10T16:17:26", + "date_unixtime": "1676020646", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": [ + "a few reads: \n\n- ", + { + "type": "link", + "text": "https://webmasters.stackexchange.com/questions/10927/using-multiple-a-records-for-my-domain-do-web-browsers-ever-try-more-than-one" + }, + "\n- ", + { + "type": "link", + "text": "https://serverfault.com/questions/101053/is-round-robin-dns-good-enough-for-load-balancing-static-content/868535" + }, + "\n- ", + { + "type": "link", + "text": "https://stackoverflow.com/questions/5319649/using-dns-for-failover-using-multiple-a-records" + } + ], + "text_entities": [ + { + "type": "plain", + "text": "a few reads: \n\n- " + }, + { + "type": "link", + "text": "https://webmasters.stackexchange.com/questions/10927/using-multiple-a-records-for-my-domain-do-web-browsers-ever-try-more-than-one" + }, + { + "type": "plain", + "text": "\n- " + }, + { + "type": "link", + "text": "https://serverfault.com/questions/101053/is-round-robin-dns-good-enough-for-load-balancing-static-content/868535" + }, + { + "type": "plain", + "text": "\n- " + }, + { + "type": "link", + "text": "https://stackoverflow.com/questions/5319649/using-dns-for-failover-using-multiple-a-records" + } + ] + } + ] +} \ No newline at end of file diff --git a/public/chats/praktik-load-balancer/metadata.json b/public/chats/praktik-load-balancer/metadata.json new file mode 100644 index 0000000..4954173 --- /dev/null +++ b/public/chats/praktik-load-balancer/metadata.json @@ -0,0 +1,7 @@ +{ + "slug": "praktik-load-balancer", + "title": "Praktik Load Balancer", + "tags": ["load-balancer", "devops"], + "short_summary": "Membahas penggunaan load balancer di industri", + "date": "2023-02-10" +} diff --git a/public/chats/praktik-load-balancer/stickers/sticker (20).webp b/public/chats/praktik-load-balancer/stickers/sticker (20).webp new file mode 100644 index 0000000000000000000000000000000000000000..77813c923d5a06982dd43b8c5b9103d0a2a561f6 GIT binary patch literal 9054 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"; break; + case "text_link": + if (href != null) { + result += ""+ text + ""; + break; + } else { + result += text; + break; + } default: result += text; } @@ -248,7 +260,8 @@ export class Parser { text += entity; continue; } - text += this.addTextFormatting(entity.text, entity.type); + + text += this.addTextFormatting(entity.text, entity.type, entity.href); } } } From 442e85f1b88e07057c8328d8c5ca87003db31548 Mon Sep 17 00:00:00 2001 From: Reinaldy Rafli Date: Sat, 12 Aug 2023 10:12:48 +0700 Subject: [PATCH 2/2] chore: forma with prettier --- .../chats/praktik-load-balancer/exported.json | 1452 ++++++++--------- src/service/Parser.ts | 2 +- 2 files changed, 727 insertions(+), 727 deletions(-) diff --git a/public/chats/praktik-load-balancer/exported.json b/public/chats/praktik-load-balancer/exported.json index 63813dc..1df459b 100644 --- a/public/chats/praktik-load-balancer/exported.json +++ b/public/chats/praktik-load-balancer/exported.json @@ -1,727 +1,727 @@ { - "name": "Teknologi Umum v2.0", - "type": "public_supergroup", - "id": 1712691810, - "messages": [ - { - "id": 262568, - "type": "message", - "date": "2023-02-10T15:27:59", - "date_unixtime": "1676017679", - "from": "Aldi William", - "from_id": "user368024110", - "text": "Om saya mau praktek load balancer", - "text_entities": [ - { - "type": "plain", - "text": "Om saya mau praktek load balancer" - } - ] - }, - { - "id": 262569, - "type": "message", - "date": "2023-02-10T15:28:04", - "date_unixtime": "1676017684", - "from": "Aldi William", - "from_id": "user368024110", - "text": "Pake nginx ya", - "text_entities": [ - { - "type": "plain", - "text": "Pake nginx ya" - } - ] - }, - { - "id": 262570, - "type": "message", - "date": "2023-02-10T15:28:45", - "date_unixtime": "1676017725", - "from": "Aldi William", - "from_id": "user368024110", - "text": "Itu cara bagi traficnya gmn ?", - "text_entities": [ - { - "type": "plain", - "text": "Itu cara bagi traficnya gmn ?" - } - ] - }, - { - "id": 262571, - "type": "message", - "date": "2023-02-10T15:29:17", - "date_unixtime": "1676017757", - "from": "Aldi William", - "from_id": "user368024110", - "text": "Misal ada 2 Vm", - "text_entities": [ - { - "type": "plain", - "text": "Misal ada 2 Vm" - } - ] - }, - { - "id": 262572, - "type": "message", - "date": "2023-02-10T15:29:41", - "date_unixtime": "1676017781", - "from": "Aldi William", - "from_id": "user368024110", - "text": "2 VM itu aplikasinya sama gk sih ?", - "text_entities": [ - { - "type": "plain", - "text": "2 VM itu aplikasinya sama gk sih ?" - } - ] - }, - { - "id": 262573, - "type": "message", - "date": "2023-02-10T15:30:06", - "date_unixtime": "1676017806", - "from": "Aldi William", - "from_id": "user368024110", - "text": "Source code sama atau beda", - "text_entities": [ - { - "type": "plain", - "text": "Source code sama atau beda" - } - ] - }, - { - "id": 262574, - "type": "message", - "date": "2023-02-10T15:30:20", - "date_unixtime": "1676017820", - "from": "Aldi William", - "from_id": "user368024110", - "text": "Misal toko online", - "text_entities": [ - { - "type": "plain", - "text": "Misal toko online" - } - ] - }, - { - "id": 262575, - "type": "message", - "date": "2023-02-10T15:31:29", - "date_unixtime": "1676017889", - "from": "Aldi William", - "from_id": "user368024110", - "text": "Atau 1 VM di buat masing2 domain bisnis ?", - "text_entities": [ - { - "type": "plain", - "text": "Atau 1 VM di buat masing2 domain bisnis ?" - } - ] - }, - { - "id": 262576, - "type": "message", - "date": "2023-02-10T15:33:14", - "date_unixtime": "1676017994", - "from": "Reinaldy", - "from_id": "user1462097294", - "reply_to_message_id": 262575, - "text": "mahal amat kek gini", - "text_entities": [ - { - "type": "plain", - "text": "mahal amat kek gini" - } - ] - }, - { - "id": 262577, - "type": "message", - "date": "2023-02-10T15:33:50", - "date_unixtime": "1676018030", - "from": "Reinaldy", - "from_id": "user1462097294", - "reply_to_message_id": 262570, - "text": "ini tergantung pake rule load balancing apa.\n\napakah round robin, weighted round robin, random, least connection, closest physical location, dll", - "text_entities": [ - { - "type": "plain", - "text": "ini tergantung pake rule load balancing apa.\n\napakah round robin, weighted round robin, random, least connection, closest physical location, dll" - } - ] - }, - { - "id": 262578, - "type": "message", - "date": "2023-02-10T15:34:00", - "date_unixtime": "1676018040", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "kalo pake nginx menurut gw sih ga seru ya wkwkwkwkw", - "text_entities": [ - { - "type": "plain", - "text": "kalo pake nginx menurut gw sih ga seru ya wkwkwkwkw" - } - ] - }, - { - "id": 262579, - "type": "message", - "date": "2023-02-10T15:34:44", - "date_unixtime": "1676018084", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "dan tergantung tujuan load balancing ini mau ngapain. emang mau serve server closest to user's location kayak teknum, atau simply emang mau handle larger load doang", - "text_entities": [ - { - "type": "plain", - "text": "dan tergantung tujuan load balancing ini mau ngapain. emang mau serve server closest to user's location kayak teknum, atau simply emang mau handle larger load doang" - } - ] - }, - { - "id": 262580, - "type": "message", - "date": "2023-02-10T15:35:21", - "date_unixtime": "1676018121", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "load balancing itu kalo simpelnya ya dari nginx/caddy/traefik/any api gateway kita nge state backend urls (atau target urls)", - "text_entities": [ - { - "type": "plain", - "text": "load balancing itu kalo simpelnya ya dari nginx/caddy/traefik/any api gateway kita nge state backend urls (atau target urls)" - } - ] - }, - { - "id": 262581, - "type": "message", - "date": "2023-02-10T15:37:40", - "date_unixtime": "1676018260", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": [ - "misal kalo caddy\n\n", - { - "type": "code", - "text": "yourdomain.com {\n reverse_proxy {\n upstream vm1:8000 vm2:8000 vm3:800\n lb_policy round_robin\n }\n}" - } - ], - "text_entities": [ - { - "type": "plain", - "text": "misal kalo caddy\n\n" - }, - { - "type": "code", - "text": "yourdomain.com {\n reverse_proxy {\n upstream vm1:8000 vm2:8000 vm3:800\n lb_policy round_robin\n }\n}" - } - ] - }, - { - "id": 262582, - "type": "message", - "date": "2023-02-10T15:38:22", - "date_unixtime": "1676018302", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "tapi kalo kayak gini pasti muncul pertanyaan \"nginx nya bakal jadi single point of failure dong?\"", - "text_entities": [ - { - "type": "plain", - "text": "tapi kalo kayak gini pasti muncul pertanyaan \"nginx nya bakal jadi single point of failure dong?\"" - } - ] - }, - { - "id": 262583, - "type": "message", - "date": "2023-02-10T15:38:42", - "date_unixtime": "1676018322", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "nah kalo ga ada pertanyaan itu, gw bisa makan dengan damai", - "text_entities": [ - { - "type": "plain", - "text": "nah kalo ga ada pertanyaan itu, gw bisa makan dengan damai" - } - ] - }, - { - "id": 262584, - "type": "message", - "date": "2023-02-10T15:41:50", - "date_unixtime": "1676018510", - "from": "Ahmad Tohir", - "from_id": "user368718073", - "text": "btw biasanya kalo spin up replicated app di 1 VM udah mentok, enak horizontal apa vertical scaling nya ?", - "text_entities": [ - { - "type": "plain", - "text": "btw biasanya kalo spin up replicated app di 1 VM udah mentok, enak horizontal apa vertical scaling nya ?" - } - ] - }, - { - "id": 262585, - "type": "message", - "date": "2023-02-10T15:42:21", - "date_unixtime": "1676018541", - "from": "Reinaldy", - "from_id": "user1462097294", - "reply_to_message_id": 262584, - "text": "both", - "text_entities": [ - { - "type": "plain", - "text": "both" - } - ] - }, - { - "id": 262586, - "type": "message", - "date": "2023-02-10T15:43:01", - "date_unixtime": "1676018581", - "from": "Ahmad Tohir", - "from_id": "user368718073", - "reply_to_message_id": 262585, - "text": "siip2", - "text_entities": [ - { - "type": "plain", - "text": "siip2" - } - ] - }, - { - "id": 262587, - "type": "message", - "date": "2023-02-10T15:43:54", - "date_unixtime": "1676018634", - "from": "dicha?", - "from_id": "user925009191", - "reply_to_message_id": 262582, - "text": "klo load balancernya mati gimana", - "text_entities": [ - { - "type": "plain", - "text": "klo load balancernya mati gimana" - } - ] - }, - { - "id": 262588, - "type": "message", - "date": "2023-02-10T15:44:02", - "date_unixtime": "1676018642", - "from": "Reinaldy", - "from_id": "user1462097294", - "reply_to_message_id": 262587, - "text": "sialan", - "text_entities": [ - { - "type": "plain", - "text": "sialan" - } - ] - }, - { - "id": 262589, - "type": "message", - "date": "2023-02-10T15:44:06", - "date_unixtime": "1676018646", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "bentar makan dulu", - "text_entities": [ - { - "type": "plain", - "text": "bentar makan dulu" - } - ] - }, - { - "id": 262590, - "type": "message", - "date": "2023-02-10T15:44:16", - "date_unixtime": "1676018656", - "from": "Ahmad Tohir", - "from_id": "user368718073", - "reply_to_message_id": 262587, - "file": "stickers/sticker (20).webp", - "thumbnail": "stickers/sticker (20).webp_thumb.jpg", - "media_type": "sticker", - "sticker_emoji": "✨", - "width": 512, - "height": 511, - "text": "", - "text_entities": [] - }, - { - "id": 262591, - "type": "message", - "date": "2023-02-10T15:45:30", - "date_unixtime": "1676018730", - "from": "Rahmat Fathoni", - "from_id": "user630036819", - "reply_to_message_id": 262587, - "text": "pernah kejadian, nginx (load balancer) nya lemot, minta restart wkwk", - "text_entities": [ - { - "type": "plain", - "text": "pernah kejadian, nginx (load balancer) nya lemot, minta restart wkwk" - } - ] - }, - { - "id": 262592, - "type": "message", - "date": "2023-02-10T15:46:36", - "date_unixtime": "1676018796", - "from": "TheManInTheMiddle", - "from_id": "user1238654979", - "text": "Kalau di nginx bisa detect user datang dari web / mobile? bisa ubah routing gitu ga ya? jadi web pakai build 1, mobile pakai build 2", - "text_entities": [ - { - "type": "plain", - "text": "Kalau di nginx bisa detect user datang dari web / mobile? bisa ubah routing gitu ga ya? jadi web pakai build 1, mobile pakai build 2" - } - ] - }, - { - "id": 262593, - "type": "message", - "date": "2023-02-10T15:48:21", - "date_unixtime": "1676018901", - "from": "Rahmat Fathoni", - "from_id": "user630036819", - "text": [ - { - "type": "link", - "text": "https://serverfault.com/a/775464" - } - ], - "text_entities": [ - { - "type": "link", - "text": "https://serverfault.com/a/775464" - } - ] - }, - { - "id": 262594, - "type": "message", - "date": "2023-02-10T15:54:01", - "date_unixtime": "1676019241", - "from": "Aldi William", - "from_id": "user368024110", - "reply_to_message_id": 262581, - "text": "Oow ini settingannya tq om penjelasannya", - "text_entities": [ - { - "type": "plain", - "text": "Oow ini settingannya tq om penjelasannya" - } - ] - }, - { - "id": 262595, - "type": "message", - "date": "2023-02-10T15:55:37", - "date_unixtime": "1676019337", - "from": "Reinaldy", - "from_id": "user1462097294", - "reply_to_message_id": 262587, - "text": "kalo load balancer mati, kita bisa restart aja. atau..\n\nspawn load balancer lagi di VM terpisah, dan nge-load balance load balancernya di level DNS", - "text_entities": [ - { - "type": "plain", - "text": "kalo load balancer mati, kita bisa restart aja. atau..\n\nspawn load balancer lagi di VM terpisah, dan nge-load balance load balancernya di level DNS" - } - ] - }, - { - "id": 262596, - "type": "message", - "date": "2023-02-10T15:56:27", - "date_unixtime": "1676019387", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "jadi punya 2 VM (atau mungkin lebih) di region yang sama (atau mungkin beda). yang penting punya public IPv4 dan public IPv6 yang beda", - "text_entities": [ - { - "type": "plain", - "text": "jadi punya 2 VM (atau mungkin lebih) di region yang sama (atau mungkin beda). yang penting punya public IPv4 dan public IPv6 yang beda" - } - ] - }, - { - "id": 262597, - "type": "message", - "date": "2023-02-10T15:56:49", - "date_unixtime": "1676019409", - "edited": "2023-02-10T17:45:20", - "edited_unixtime": "1676025920", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "nanti kalo di DNS settings bakal ketemu A record dan AAAA record. untuk setiap keys, value dari kedua record ini bisa lebih dari satu", - "text_entities": [ - { - "type": "plain", - "text": "nanti kalo di DNS settings bakal ketemu A record dan AAAA record. untuk setiap keys, value dari kedua record ini bisa lebih dari satu" - } - ] - }, - { - "id": 262598, - "type": "message", - "date": "2023-02-10T15:56:50", - "date_unixtime": "1676019410", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "misal", - "text_entities": [ - { - "type": "plain", - "text": "misal" - } - ] - }, - { - "id": 262599, - "type": "message", - "date": "2023-02-10T15:57:17", - "date_unixtime": "1676019437", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": [ - { - "type": "pre", - "text": "A teknologiumum.com 103.80.20.1\nA teknologiumum.com 103.28.132.63", - "language": "" - } - ], - "text_entities": [ - { - "type": "pre", - "text": "A teknologiumum.com 103.80.20.1\nA teknologiumum.com 103.28.132.63", - "language": "" - } - ] - }, - { - "id": 262600, - "type": "message", - "date": "2023-02-10T15:58:25", - "date_unixtime": "1676019505", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "terus muncul pertanyaan lagi biasanya, \"loh kalo bisa di load balance dari level DNS, udah nggak butuh load balancer kayak nginx dan semacamnya dong?\"", - "text_entities": [ - { - "type": "plain", - "text": "terus muncul pertanyaan lagi biasanya, \"loh kalo bisa di load balance dari level DNS, udah nggak butuh load balancer kayak nginx dan semacamnya dong?\"" - } - ] - }, - { - "id": 262601, - "type": "message", - "date": "2023-02-10T15:58:45", - "date_unixtime": "1676019525", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "atau pertanyaan lain, \"kalo ada 2 VM atau lebih gitu, cara biar settings nya konsisten terus gimana?\"", - "text_entities": [ - { - "type": "plain", - "text": "atau pertanyaan lain, \"kalo ada 2 VM atau lebih gitu, cara biar settings nya konsisten terus gimana?\"" - } - ] - }, - { - "id": 262602, - "type": "message", - "date": "2023-02-10T15:58:54", - "date_unixtime": "1676019534", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "monggo yang kira2 kebayang jawabannya", - "text_entities": [ - { - "type": "plain", - "text": "monggo yang kira2 kebayang jawabannya" - } - ] - }, - { - "id": 262611, - "type": "message", - "date": "2023-02-10T16:06:28", - "date_unixtime": "1676019988", - "from": "Muhammad Nasrul", - "from_id": "user522266589", - "text": "ngomongin server on premise harus standby 2 ip public dari isp yg berbeda, kejadian dikantor isp A mati enggak bisa diaccess jadinya haha\nsetelah itu baru kepiran pakai dns made easy, dia nyediain buat secondary ip", - "text_entities": [ - { - "type": "plain", - "text": "ngomongin server on premise harus standby 2 ip public dari isp yg berbeda, kejadian dikantor isp A mati enggak bisa diaccess jadinya haha\nsetelah itu baru kepiran pakai dns made easy, dia nyediain buat secondary ip" - } - ] - }, - { - "id": 262617, - "type": "message", - "date": "2023-02-10T16:09:12", - "date_unixtime": "1676020152", - "from": "Reinaldy", - "from_id": "user1462097294", - "reply_to_message_id": 262611, - "text": "tapi ini bener bener works kalo emang beda physical region", - "text_entities": [ - { - "type": "plain", - "text": "tapi ini bener bener works kalo emang beda physical region" - } - ] - }, - { - "id": 262618, - "type": "message", - "date": "2023-02-10T16:09:20", - "date_unixtime": "1676020160", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": "misal 1 datacenter singapur, 1 datacenter australia", - "text_entities": [ - { - "type": "plain", - "text": "misal 1 datacenter singapur, 1 datacenter australia" - } - ] - }, - { - "id": 262619, - "type": "message", - "date": "2023-02-10T16:14:42", - "date_unixtime": "1676020482", - "from": "Aldi William", - "from_id": "user368024110", - "reply_to_message_id": 262600, - "text": "Apa load balance dari dns ini bisa settings seperti round robin ?", - "text_entities": [ - { - "type": "plain", - "text": "Apa load balance dari dns ini bisa settings seperti round robin ?" - } - ] - }, - { - "id": 262620, - "type": "message", - "date": "2023-02-10T16:15:19", - "date_unixtime": "1676020519", - "from": "Aldi William", - "from_id": "user368024110", - "text": "Bagi rata ke masing2 dns", - "text_entities": [ - { - "type": "plain", - "text": "Bagi rata ke masing2 dns" - } - ] - }, - { - "id": 262621, - "type": "message", - "date": "2023-02-10T16:16:09", - "date_unixtime": "1676020569", - "from": "Reinaldy", - "from_id": "user1462097294", - "reply_to_message_id": 262619, - "text": "nggak", - "text_entities": [ - { - "type": "plain", - "text": "nggak" - } - ] - }, - { - "id": 262623, - "type": "message", - "date": "2023-02-10T16:17:23", - "date_unixtime": "1676020643", - "from": "Aldi William", - "from_id": "user368024110", - "reply_to_message_id": 262621, - "text": "Oke berarti jawabannya sudah terjawab", - "text_entities": [ - { - "type": "plain", - "text": "Oke berarti jawabannya sudah terjawab" - } - ] - }, - { - "id": 262624, - "type": "message", - "date": "2023-02-10T16:17:26", - "date_unixtime": "1676020646", - "from": "Reinaldy", - "from_id": "user1462097294", - "text": [ - "a few reads: \n\n- ", - { - "type": "link", - "text": "https://webmasters.stackexchange.com/questions/10927/using-multiple-a-records-for-my-domain-do-web-browsers-ever-try-more-than-one" - }, - "\n- ", - { - "type": "link", - "text": "https://serverfault.com/questions/101053/is-round-robin-dns-good-enough-for-load-balancing-static-content/868535" - }, - "\n- ", - { - "type": "link", - "text": "https://stackoverflow.com/questions/5319649/using-dns-for-failover-using-multiple-a-records" - } - ], - "text_entities": [ - { - "type": "plain", - "text": "a few reads: \n\n- " - }, - { - "type": "link", - "text": "https://webmasters.stackexchange.com/questions/10927/using-multiple-a-records-for-my-domain-do-web-browsers-ever-try-more-than-one" - }, - { - "type": "plain", - "text": "\n- " - }, - { - "type": "link", - "text": "https://serverfault.com/questions/101053/is-round-robin-dns-good-enough-for-load-balancing-static-content/868535" - }, - { - "type": "plain", - "text": "\n- " - }, - { - "type": "link", - "text": "https://stackoverflow.com/questions/5319649/using-dns-for-failover-using-multiple-a-records" - } - ] - } - ] -} \ No newline at end of file + "name": "Teknologi Umum v2.0", + "type": "public_supergroup", + "id": 1712691810, + "messages": [ + { + "id": 262568, + "type": "message", + "date": "2023-02-10T15:27:59", + "date_unixtime": "1676017679", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Om saya mau praktek load balancer", + "text_entities": [ + { + "type": "plain", + "text": "Om saya mau praktek load balancer" + } + ] + }, + { + "id": 262569, + "type": "message", + "date": "2023-02-10T15:28:04", + "date_unixtime": "1676017684", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Pake nginx ya", + "text_entities": [ + { + "type": "plain", + "text": "Pake nginx ya" + } + ] + }, + { + "id": 262570, + "type": "message", + "date": "2023-02-10T15:28:45", + "date_unixtime": "1676017725", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Itu cara bagi traficnya gmn ?", + "text_entities": [ + { + "type": "plain", + "text": "Itu cara bagi traficnya gmn ?" + } + ] + }, + { + "id": 262571, + "type": "message", + "date": "2023-02-10T15:29:17", + "date_unixtime": "1676017757", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Misal ada 2 Vm", + "text_entities": [ + { + "type": "plain", + "text": "Misal ada 2 Vm" + } + ] + }, + { + "id": 262572, + "type": "message", + "date": "2023-02-10T15:29:41", + "date_unixtime": "1676017781", + "from": "Aldi William", + "from_id": "user368024110", + "text": "2 VM itu aplikasinya sama gk sih ?", + "text_entities": [ + { + "type": "plain", + "text": "2 VM itu aplikasinya sama gk sih ?" + } + ] + }, + { + "id": 262573, + "type": "message", + "date": "2023-02-10T15:30:06", + "date_unixtime": "1676017806", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Source code sama atau beda", + "text_entities": [ + { + "type": "plain", + "text": "Source code sama atau beda" + } + ] + }, + { + "id": 262574, + "type": "message", + "date": "2023-02-10T15:30:20", + "date_unixtime": "1676017820", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Misal toko online", + "text_entities": [ + { + "type": "plain", + "text": "Misal toko online" + } + ] + }, + { + "id": 262575, + "type": "message", + "date": "2023-02-10T15:31:29", + "date_unixtime": "1676017889", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Atau 1 VM di buat masing2 domain bisnis ?", + "text_entities": [ + { + "type": "plain", + "text": "Atau 1 VM di buat masing2 domain bisnis ?" + } + ] + }, + { + "id": 262576, + "type": "message", + "date": "2023-02-10T15:33:14", + "date_unixtime": "1676017994", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262575, + "text": "mahal amat kek gini", + "text_entities": [ + { + "type": "plain", + "text": "mahal amat kek gini" + } + ] + }, + { + "id": 262577, + "type": "message", + "date": "2023-02-10T15:33:50", + "date_unixtime": "1676018030", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262570, + "text": "ini tergantung pake rule load balancing apa.\n\napakah round robin, weighted round robin, random, least connection, closest physical location, dll", + "text_entities": [ + { + "type": "plain", + "text": "ini tergantung pake rule load balancing apa.\n\napakah round robin, weighted round robin, random, least connection, closest physical location, dll" + } + ] + }, + { + "id": 262578, + "type": "message", + "date": "2023-02-10T15:34:00", + "date_unixtime": "1676018040", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "kalo pake nginx menurut gw sih ga seru ya wkwkwkwkw", + "text_entities": [ + { + "type": "plain", + "text": "kalo pake nginx menurut gw sih ga seru ya wkwkwkwkw" + } + ] + }, + { + "id": 262579, + "type": "message", + "date": "2023-02-10T15:34:44", + "date_unixtime": "1676018084", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "dan tergantung tujuan load balancing ini mau ngapain. emang mau serve server closest to user's location kayak teknum, atau simply emang mau handle larger load doang", + "text_entities": [ + { + "type": "plain", + "text": "dan tergantung tujuan load balancing ini mau ngapain. emang mau serve server closest to user's location kayak teknum, atau simply emang mau handle larger load doang" + } + ] + }, + { + "id": 262580, + "type": "message", + "date": "2023-02-10T15:35:21", + "date_unixtime": "1676018121", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "load balancing itu kalo simpelnya ya dari nginx/caddy/traefik/any api gateway kita nge state backend urls (atau target urls)", + "text_entities": [ + { + "type": "plain", + "text": "load balancing itu kalo simpelnya ya dari nginx/caddy/traefik/any api gateway kita nge state backend urls (atau target urls)" + } + ] + }, + { + "id": 262581, + "type": "message", + "date": "2023-02-10T15:37:40", + "date_unixtime": "1676018260", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": [ + "misal kalo caddy\n\n", + { + "type": "code", + "text": "yourdomain.com {\n reverse_proxy {\n upstream vm1:8000 vm2:8000 vm3:800\n lb_policy round_robin\n }\n}" + } + ], + "text_entities": [ + { + "type": "plain", + "text": "misal kalo caddy\n\n" + }, + { + "type": "code", + "text": "yourdomain.com {\n reverse_proxy {\n upstream vm1:8000 vm2:8000 vm3:800\n lb_policy round_robin\n }\n}" + } + ] + }, + { + "id": 262582, + "type": "message", + "date": "2023-02-10T15:38:22", + "date_unixtime": "1676018302", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "tapi kalo kayak gini pasti muncul pertanyaan \"nginx nya bakal jadi single point of failure dong?\"", + "text_entities": [ + { + "type": "plain", + "text": "tapi kalo kayak gini pasti muncul pertanyaan \"nginx nya bakal jadi single point of failure dong?\"" + } + ] + }, + { + "id": 262583, + "type": "message", + "date": "2023-02-10T15:38:42", + "date_unixtime": "1676018322", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "nah kalo ga ada pertanyaan itu, gw bisa makan dengan damai", + "text_entities": [ + { + "type": "plain", + "text": "nah kalo ga ada pertanyaan itu, gw bisa makan dengan damai" + } + ] + }, + { + "id": 262584, + "type": "message", + "date": "2023-02-10T15:41:50", + "date_unixtime": "1676018510", + "from": "Ahmad Tohir", + "from_id": "user368718073", + "text": "btw biasanya kalo spin up replicated app di 1 VM udah mentok, enak horizontal apa vertical scaling nya ?", + "text_entities": [ + { + "type": "plain", + "text": "btw biasanya kalo spin up replicated app di 1 VM udah mentok, enak horizontal apa vertical scaling nya ?" + } + ] + }, + { + "id": 262585, + "type": "message", + "date": "2023-02-10T15:42:21", + "date_unixtime": "1676018541", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262584, + "text": "both", + "text_entities": [ + { + "type": "plain", + "text": "both" + } + ] + }, + { + "id": 262586, + "type": "message", + "date": "2023-02-10T15:43:01", + "date_unixtime": "1676018581", + "from": "Ahmad Tohir", + "from_id": "user368718073", + "reply_to_message_id": 262585, + "text": "siip2", + "text_entities": [ + { + "type": "plain", + "text": "siip2" + } + ] + }, + { + "id": 262587, + "type": "message", + "date": "2023-02-10T15:43:54", + "date_unixtime": "1676018634", + "from": "dicha?", + "from_id": "user925009191", + "reply_to_message_id": 262582, + "text": "klo load balancernya mati gimana", + "text_entities": [ + { + "type": "plain", + "text": "klo load balancernya mati gimana" + } + ] + }, + { + "id": 262588, + "type": "message", + "date": "2023-02-10T15:44:02", + "date_unixtime": "1676018642", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262587, + "text": "sialan", + "text_entities": [ + { + "type": "plain", + "text": "sialan" + } + ] + }, + { + "id": 262589, + "type": "message", + "date": "2023-02-10T15:44:06", + "date_unixtime": "1676018646", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "bentar makan dulu", + "text_entities": [ + { + "type": "plain", + "text": "bentar makan dulu" + } + ] + }, + { + "id": 262590, + "type": "message", + "date": "2023-02-10T15:44:16", + "date_unixtime": "1676018656", + "from": "Ahmad Tohir", + "from_id": "user368718073", + "reply_to_message_id": 262587, + "file": "stickers/sticker (20).webp", + "thumbnail": "stickers/sticker (20).webp_thumb.jpg", + "media_type": "sticker", + "sticker_emoji": "✨", + "width": 512, + "height": 511, + "text": "", + "text_entities": [] + }, + { + "id": 262591, + "type": "message", + "date": "2023-02-10T15:45:30", + "date_unixtime": "1676018730", + "from": "Rahmat Fathoni", + "from_id": "user630036819", + "reply_to_message_id": 262587, + "text": "pernah kejadian, nginx (load balancer) nya lemot, minta restart wkwk", + "text_entities": [ + { + "type": "plain", + "text": "pernah kejadian, nginx (load balancer) nya lemot, minta restart wkwk" + } + ] + }, + { + "id": 262592, + "type": "message", + "date": "2023-02-10T15:46:36", + "date_unixtime": "1676018796", + "from": "TheManInTheMiddle", + "from_id": "user1238654979", + "text": "Kalau di nginx bisa detect user datang dari web / mobile? bisa ubah routing gitu ga ya? jadi web pakai build 1, mobile pakai build 2", + "text_entities": [ + { + "type": "plain", + "text": "Kalau di nginx bisa detect user datang dari web / mobile? bisa ubah routing gitu ga ya? jadi web pakai build 1, mobile pakai build 2" + } + ] + }, + { + "id": 262593, + "type": "message", + "date": "2023-02-10T15:48:21", + "date_unixtime": "1676018901", + "from": "Rahmat Fathoni", + "from_id": "user630036819", + "text": [ + { + "type": "link", + "text": "https://serverfault.com/a/775464" + } + ], + "text_entities": [ + { + "type": "link", + "text": "https://serverfault.com/a/775464" + } + ] + }, + { + "id": 262594, + "type": "message", + "date": "2023-02-10T15:54:01", + "date_unixtime": "1676019241", + "from": "Aldi William", + "from_id": "user368024110", + "reply_to_message_id": 262581, + "text": "Oow ini settingannya tq om penjelasannya", + "text_entities": [ + { + "type": "plain", + "text": "Oow ini settingannya tq om penjelasannya" + } + ] + }, + { + "id": 262595, + "type": "message", + "date": "2023-02-10T15:55:37", + "date_unixtime": "1676019337", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262587, + "text": "kalo load balancer mati, kita bisa restart aja. atau..\n\nspawn load balancer lagi di VM terpisah, dan nge-load balance load balancernya di level DNS", + "text_entities": [ + { + "type": "plain", + "text": "kalo load balancer mati, kita bisa restart aja. atau..\n\nspawn load balancer lagi di VM terpisah, dan nge-load balance load balancernya di level DNS" + } + ] + }, + { + "id": 262596, + "type": "message", + "date": "2023-02-10T15:56:27", + "date_unixtime": "1676019387", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "jadi punya 2 VM (atau mungkin lebih) di region yang sama (atau mungkin beda). yang penting punya public IPv4 dan public IPv6 yang beda", + "text_entities": [ + { + "type": "plain", + "text": "jadi punya 2 VM (atau mungkin lebih) di region yang sama (atau mungkin beda). yang penting punya public IPv4 dan public IPv6 yang beda" + } + ] + }, + { + "id": 262597, + "type": "message", + "date": "2023-02-10T15:56:49", + "date_unixtime": "1676019409", + "edited": "2023-02-10T17:45:20", + "edited_unixtime": "1676025920", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "nanti kalo di DNS settings bakal ketemu A record dan AAAA record. untuk setiap keys, value dari kedua record ini bisa lebih dari satu", + "text_entities": [ + { + "type": "plain", + "text": "nanti kalo di DNS settings bakal ketemu A record dan AAAA record. untuk setiap keys, value dari kedua record ini bisa lebih dari satu" + } + ] + }, + { + "id": 262598, + "type": "message", + "date": "2023-02-10T15:56:50", + "date_unixtime": "1676019410", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "misal", + "text_entities": [ + { + "type": "plain", + "text": "misal" + } + ] + }, + { + "id": 262599, + "type": "message", + "date": "2023-02-10T15:57:17", + "date_unixtime": "1676019437", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": [ + { + "type": "pre", + "text": "A teknologiumum.com 103.80.20.1\nA teknologiumum.com 103.28.132.63", + "language": "" + } + ], + "text_entities": [ + { + "type": "pre", + "text": "A teknologiumum.com 103.80.20.1\nA teknologiumum.com 103.28.132.63", + "language": "" + } + ] + }, + { + "id": 262600, + "type": "message", + "date": "2023-02-10T15:58:25", + "date_unixtime": "1676019505", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "terus muncul pertanyaan lagi biasanya, \"loh kalo bisa di load balance dari level DNS, udah nggak butuh load balancer kayak nginx dan semacamnya dong?\"", + "text_entities": [ + { + "type": "plain", + "text": "terus muncul pertanyaan lagi biasanya, \"loh kalo bisa di load balance dari level DNS, udah nggak butuh load balancer kayak nginx dan semacamnya dong?\"" + } + ] + }, + { + "id": 262601, + "type": "message", + "date": "2023-02-10T15:58:45", + "date_unixtime": "1676019525", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "atau pertanyaan lain, \"kalo ada 2 VM atau lebih gitu, cara biar settings nya konsisten terus gimana?\"", + "text_entities": [ + { + "type": "plain", + "text": "atau pertanyaan lain, \"kalo ada 2 VM atau lebih gitu, cara biar settings nya konsisten terus gimana?\"" + } + ] + }, + { + "id": 262602, + "type": "message", + "date": "2023-02-10T15:58:54", + "date_unixtime": "1676019534", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "monggo yang kira2 kebayang jawabannya", + "text_entities": [ + { + "type": "plain", + "text": "monggo yang kira2 kebayang jawabannya" + } + ] + }, + { + "id": 262611, + "type": "message", + "date": "2023-02-10T16:06:28", + "date_unixtime": "1676019988", + "from": "Muhammad Nasrul", + "from_id": "user522266589", + "text": "ngomongin server on premise harus standby 2 ip public dari isp yg berbeda, kejadian dikantor isp A mati enggak bisa diaccess jadinya haha\nsetelah itu baru kepiran pakai dns made easy, dia nyediain buat secondary ip", + "text_entities": [ + { + "type": "plain", + "text": "ngomongin server on premise harus standby 2 ip public dari isp yg berbeda, kejadian dikantor isp A mati enggak bisa diaccess jadinya haha\nsetelah itu baru kepiran pakai dns made easy, dia nyediain buat secondary ip" + } + ] + }, + { + "id": 262617, + "type": "message", + "date": "2023-02-10T16:09:12", + "date_unixtime": "1676020152", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262611, + "text": "tapi ini bener bener works kalo emang beda physical region", + "text_entities": [ + { + "type": "plain", + "text": "tapi ini bener bener works kalo emang beda physical region" + } + ] + }, + { + "id": 262618, + "type": "message", + "date": "2023-02-10T16:09:20", + "date_unixtime": "1676020160", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": "misal 1 datacenter singapur, 1 datacenter australia", + "text_entities": [ + { + "type": "plain", + "text": "misal 1 datacenter singapur, 1 datacenter australia" + } + ] + }, + { + "id": 262619, + "type": "message", + "date": "2023-02-10T16:14:42", + "date_unixtime": "1676020482", + "from": "Aldi William", + "from_id": "user368024110", + "reply_to_message_id": 262600, + "text": "Apa load balance dari dns ini bisa settings seperti round robin ?", + "text_entities": [ + { + "type": "plain", + "text": "Apa load balance dari dns ini bisa settings seperti round robin ?" + } + ] + }, + { + "id": 262620, + "type": "message", + "date": "2023-02-10T16:15:19", + "date_unixtime": "1676020519", + "from": "Aldi William", + "from_id": "user368024110", + "text": "Bagi rata ke masing2 dns", + "text_entities": [ + { + "type": "plain", + "text": "Bagi rata ke masing2 dns" + } + ] + }, + { + "id": 262621, + "type": "message", + "date": "2023-02-10T16:16:09", + "date_unixtime": "1676020569", + "from": "Reinaldy", + "from_id": "user1462097294", + "reply_to_message_id": 262619, + "text": "nggak", + "text_entities": [ + { + "type": "plain", + "text": "nggak" + } + ] + }, + { + "id": 262623, + "type": "message", + "date": "2023-02-10T16:17:23", + "date_unixtime": "1676020643", + "from": "Aldi William", + "from_id": "user368024110", + "reply_to_message_id": 262621, + "text": "Oke berarti jawabannya sudah terjawab", + "text_entities": [ + { + "type": "plain", + "text": "Oke berarti jawabannya sudah terjawab" + } + ] + }, + { + "id": 262624, + "type": "message", + "date": "2023-02-10T16:17:26", + "date_unixtime": "1676020646", + "from": "Reinaldy", + "from_id": "user1462097294", + "text": [ + "a few reads: \n\n- ", + { + "type": "link", + "text": "https://webmasters.stackexchange.com/questions/10927/using-multiple-a-records-for-my-domain-do-web-browsers-ever-try-more-than-one" + }, + "\n- ", + { + "type": "link", + "text": "https://serverfault.com/questions/101053/is-round-robin-dns-good-enough-for-load-balancing-static-content/868535" + }, + "\n- ", + { + "type": "link", + "text": "https://stackoverflow.com/questions/5319649/using-dns-for-failover-using-multiple-a-records" + } + ], + "text_entities": [ + { + "type": "plain", + "text": "a few reads: \n\n- " + }, + { + "type": "link", + "text": "https://webmasters.stackexchange.com/questions/10927/using-multiple-a-records-for-my-domain-do-web-browsers-ever-try-more-than-one" + }, + { + "type": "plain", + "text": "\n- " + }, + { + "type": "link", + "text": "https://serverfault.com/questions/101053/is-round-robin-dns-good-enough-for-load-balancing-static-content/868535" + }, + { + "type": "plain", + "text": "\n- " + }, + { + "type": "link", + "text": "https://stackoverflow.com/questions/5319649/using-dns-for-failover-using-multiple-a-records" + } + ] + } + ] +} diff --git a/src/service/Parser.ts b/src/service/Parser.ts index 669e5bc..a307ea2 100644 --- a/src/service/Parser.ts +++ b/src/service/Parser.ts @@ -220,7 +220,7 @@ export class Parser { break; case "text_link": if (href != null) { - result += ""+ text + ""; + result += '' + text + ""; break; } else { result += text;