01/10/2018, 10:31

C++ compiler extension in chrome

Hôm nay mình được nghỉ lễ, không biết làm gì nên học theo bác X (nào đó), kiếm cái nghịch để đốt thời gian, tiện thể học thêm cái mới.

Nghĩ chán chê thì thấy dạo này hay lượn lờ trên diễn đàn support code C++(mặc dù chuyên ngành của mình là ăn và ngủ). Rút kinh nghiệm mỗi lần thử code lại phải mở trang paiza.io hay ideone.com gì gì ấy để test, tốn rất nhiều công đoạn click, nên viết luôn cái extension này, chỉ copy paste và run là xong (viết xong mới thấy còn khổ hơn click).

Lúc viết xong mới nghĩ ra publish lên google store, cứ tưởng miễn phí, ngờ đâu anh gồ bắt xì ra $5 mới cho, nghĩ thấy anh gồ giàu sẵn rồi, thiếu gì $5 của mình, nên thôi không publish lên nữa

Extension mình viết bằng ReactJS là chính (có chút tạp nham jquery vì chưa quen xử lí toàn bộ thông qua React)

Demo extension:
UI:

Hello world thần thánh:

#Hướng dẫn cài:

Các bạn tải và giải nén:
https://github.com/HadesD/Chrome-Cpp-Complier/blob/master/release.zip
Mở chrome và truy cập:

chrome://extensions/

Tích vào ô Developer Mode -> Click nut Load unpacked extension… -> Chọn folder có chứa extension bạn vừa giải nén.

Vậy là xong.

GitHub project

https://github.com/HadesD/Chrome-Cpp-Complier

Henry viết 12:35 ngày 01/10/2018

Làm sao làm được như vậy? Compiler này compile được những gì?

Dark.Hades viết 12:41 ngày 01/10/2018

Chỉ là dùng tính năng có sẵn của những trang web cho compile code thôi chứ không có gì to tát cả
Tính năng chính thì là complie và test code C++, mặc dù có thể compile multi file và ngôn ngữ, cơ mà lười nên chỉ làm C++
Ở đây mình dùng thằng paiza.io
https://github.com/HadesD/Chrome-Cpp-Complier/blob/master/src/js/main.jsx

Henry viết 12:43 ngày 01/10/2018

có gì đâu mà không có gì to tát. Chứ mấy ông lập trình ra mấy cái trang web cũng nhờ mấy ông đọc mã máy mà ra chứ có gì to tát đâu.
Em nghĩ là nên cho cookie hay gì đó để có thể lưu source code đang code dỡ. new default source thì nên là của chương trình Hello world. Cho người dùng tải source code về nữa hoặc kĩ càng hơn là giúp họ có mộn bản codepad online.

Dark.Hades viết 12:41 ngày 01/10/2018

Nếu đợt nghỉ lễ tới mà rảnh nhất định sẽ thêm các tính năng này.
Google họ không cho lưu thông tin extension vào database của họ, lại phải dùng của bên thứ 3 nên hơi mất thời gian khoản này, lại lười nữa

viết 12:42 ngày 01/10/2018

nghiên cứu cái Stack Crooked ấy. GCC 7.1.0, có GMP, có Boost mới nhất luôn, có hỗ trợ multiple file nhưng mà phải đổi tên file

http://coliru.stacked-crooked.com/a/084011623191a688

C++17 + Boost + GMP

#include <iostream>
#include <string>
#include <variant>
#include <boost/multiprecision/gmp.hpp>

using boost::multiprecision::mpz_int;

std::tuple<int, std::string, double> getTuple()
{
    return {101, std::string("Hello"), 9.75};
}

int main()
{
    std::variant<std::string, mpz_int> x;
    x = std::string("123456789123456789");
    std::cout << "x = " << std::get<std::string>(x) << "\n";
    
    x = mpz_int(std::get<std::string>(x));
    x = std::get<mpz_int>(x) * std::get<mpz_int>(x);
    std::cout << "x = " << std::get<mpz_int>(x) << "\n";
    
    auto [id, msg, score] = getTuple();
    std::cout << id << " " << msg << " " << score << "\n";
}

làm ra 1 cái js file để nhúng vô trang web đi

Dark.Hades viết 12:31 ngày 01/10/2018

Mà nhìn UI nó xấu nhỉ
Có trang này do ông người nhật viết, thấy cũng ổn định, có tuỳ chọn options build, G++ 8.0.0, compile nhiều file 1 lần, nhiều ngôn ngữ, UI cũng ổn.
Có public project trên github nữa: https://github.com/melpon/wandbox
https://wandbox.org/

Test: https://wandbox.org/permlink/P3fDcpcIRWwzErdL

Tại hôm bữa hứng học React nên viết cái ext luôn
Có lẽ chuyển qua viết 1 file js nhanh hơn

viết 12:39 ngày 01/10/2018

trang này quá ngon.

20 chả

Bài liên quan
0