Vu Luong Anh
25 questions
38 answers
Avatar
0
Vu Luong Anh Pundit
Trả về đúng thứ tự khi dùng Reactive
Khi dùng pagination thì việc trả về đúng thứ tự id là quan trọng. Trong hàm <code>entityToModels</code>, mặc dù <code>entities</code> đúng thứ tự, nhưng kết quả trả về của <code>blockingGetList</code> sẽ sai thứ tự. Vấn đề này nên xử lý sao ạ? <pre> private List entityToModels(List entities) { return Reactive.multiple() .registers(entities, releasedProjectService::entityToModel) .blockingGetList(); } </pre>
Answer
Avatar
1
Vu Luong Anh Pundit
Cài đặt biến môi trường cho IntelliJ trên Linux
Cài đặt biến môi trường cho IntelliJ trên Linux
Answer
Avatar
0
Vu Luong Anh Pundit
Graphql có bảo mật không?
Cho em hỏi là dùng <code>graphql</code> với <code>http</code> thì có bảo mật không. Ví dụ như thằng spring nó có thể map câu <code>query</code> với <code>entity</code>, vậy có rủi ro nào sẽ expose luôn các thông tin nhạy cảm trong entity trên server không (e.g. password). <p> </p> <p> Mặt khác việc để lộ ra cấu trúc entity có giúp hacker dễ tìm ra cấu trúc của database để hack không? (Sorry anh nếu câu hỏi này silly, em không có kinh nghiệm gì về bảo mật) </p>
Answer
Avatar
0
Vu Luong Anh Pundit
Chạy test ezyhttp bị lỗi
Em clone ezyhttp về, xong chạy <code class="markdown-inline">com/tvd12/ezyhttp/core/boot/test/BootApp.java</code> nhưng bị Exception: <p> </p> <img class="alignnone size-full wp-image-1344" src="https://stackask.com/wp-content/uploads/2021/09/Screenshot-from-2021-09-05-13-33-45.png" alt="" />
Answer
Avatar
0
Vu Luong Anh Pundit
So sánh GraphQL và REST API
Cho em hỏi điểm mạnh và điểm yếu khi so sánh GraphQL và REST API, đặc biệt khi triển khai dự án thực tế ạ.
Answer
Avatar
1
Vu Luong Anh Pundit
serialVersionUID trong class java để làm gì?
Em đọc code hay thấy có trường serialVersionUID ở đầu các class trong java. Cái biến này để làm gì và khi nào thì nên dùng nó vậy anh?
Answer
Avatar
0
Vu Luong Anh Pundit
Không serialize được list ở C<h1>client sdk</h1>
Em trả về 1 <code>List</code> ở server. Nhưng khi gọi <code>List roomIdList = data.get(0).toList();</code> ở client thì báo lỗi không cast được. Cụ thể ở hàm <code>toList</code> : <p> </p> <pre> public List toList() { List answer = new List(); foreach (Object item in list) { answer.Add((T)item); } return answer; } </pre>
Answer
Avatar
0
Vu Luong Anh Pundit
Làm sao add lobby room vào globalRoomManager khi khởi tạo
Em dùng <code class="markdown-inline">@EzyConfigurationBefore</code> để khởi tạo <code class="markdown-inline">lobbyRoom</code>: <pre> @EzyConfigurationBefore public class MMOVirtualWorldConfig extends EzyLoggable { @EzySingleton("lobbyRoom") public NormalRoom lobbyRoom() { logger.info("Initialize lobby room"); return NormalRoom.builder() .build(); } } </pre> <p> </p> <p> Trong <code class="markdown-inline">GameService</code> lại có 1 thằng roomManager để quản lý toàn bộ rooms: </p> <p> </p> <pre> @Setter @EzySingleton public class GameServiceImpl implements GameService { private final RoomManager roomManager = new SynchronizedRoomManager(); } </pre> <p> </p> <p> Em muốn add thêm lobbyRoom vào roomManager khi khởi tạo nó. Vậy em có nên khởi tạo <code class="markdown-inline">roomManager</code> theo kiểu <code class="markdown-inline">@EzyConfigurationBefore</code> không anh? </p>
Answer
Avatar
0
Vu Luong Anh Pundit
Khi nào dùng SynchronizedPlayerManager vs. DefaultPlayerManager
Em thấy trong code breaking-game anh dùng DefaultPlayerManager để quản lý Player của toàn bộ game. Sao anh không dùng SynchronizedPlayerManager ạ?
Answer
Avatar
1
Vu Luong Anh Pundit
EzyWrap khác gì String thường?
<a href="https://github.com/youngmonkeys/game-box/blob/master/src/test/java/com/tvd12/gamebox/testing/MMORoomGroupTest.java#L103" target="_blank" rel="noopener">https://github.com/youngmonkeys/game-box/blob/master/src/test/java/com/tvd12/gamebox/testing/MMORoomGroupTest.java#L103</a> <p> </p> <p> Trong MMORoomGroupTest em thấy a có dùng EzyWrap. Sao phải dùng nó và khi nào nên dùng nó ạ? </p>
Answer
Avatar
0
Vu Luong Anh Pundit
Cách test MMORoom
Em đang code cái <code class="markdown-inline">MMORoom</code> ở <a href="https://github.com/youngmonkeys/game-box/pull/2">https://github.com/youngmonkeys/game-box/pull/2</a>. Em có 1 số câu hỏi: <p> </p> <ol start="1"> <li>Ở <code class="markdown-inline">NormalRoom</code>, thằng playerManager là raw type, làm sao chuyển nó thành <code class="markdown-inline">PlayerManager</code> ở MMORoom. </li> </ol> <p> </p> <ol start="2"> <li>Với vòng lặp vô hạn ở <code class="markdown-inline">MMORoom</code>, mình viết unit test kiểu gì vậy ạ? </li> </ol> <p> </p> <ol start="3"> <li>Cái vòng lặp trong <code class="markdown-inline">MMORoom</code> có cần làm gì khác ngoài set cái nearby players không ạ?</li></ol>
Answer
Avatar
0
Vu Luong Anh Pundit
Usecases của các loại Room trong game-box
Hiện tại em thấy có 3 loại room trong game-box: <code class="markdown-inline">NormalRoom</code>, <code class="markdown-inline">LocatedRoom</code> và <code class="markdown-inline">MMORoom</code> (đang phát triển). Anh có thể giải thích sự khác nhau và usecases cụ thể của từng loại được không ạ? <p> </p> <p> Anh có thể giải thích luôn về logic từng loại <code class="markdown-inline">Player</code> và <code class="markdown-inline">PlayerManager</code> được không ạ? </p>
Answer