Phân biệt seminar, workshop, conference, symposium ...


Phân biệt seminar, workshop, conference, symposium ...

Đây là những từ mà người Việt thường cảm thấy rất lúng túng khi sử dụng. Vì vậy mới có bài viết này trên blog của GS Nguyễn Văn Tuấn vào sáng nay. Bài gốc ở đây.

Để thuận tiện cho việc làm rõ thêm nghĩa và đóng góp ý kiến về việc dịch các từ này như lời kêu gọi của GS Nguyễn Văn Tuấn, tôi xin chép một phần từ bài viết nói trên vào phần dưới đây, sau đó sẽ đưa ra những ý kiến của riêng tôi.


Conference (hội nghị) là một cuộc họp lớn hơn seminar và workshop, với số người tham dự từ 100 đến vài chục ngàn người. Các hội đoàn chuyên môn thường có conference thường niên. Thành phần tham dự thường là hội viên, kể cả nghiên cứu sinh và các chuyên gia. Trong conference, có những bài giảng chính (keynote lectures) cho tất cả người tham dự. Ngoài bài giảng chính, conference còn có nhiều phiên họp gọi là session.

Symposium là một cuộc họp mang tính khoa bảng và nghiêm túc, với nhiều diễn giả trình bày về một hay nhiều đề tài. Số người tham dự thường ít hơn conference, nhưng cũng có thể tương đương với seminar. Các công ti dược thường có những symposium lồng trong các conferences để nhân cơ hội giới thiệu sản phẩm của họ.

Seminar là một cuộc họp mang tính giáo dục, thường thường chỉ tập trung vào một đề tài cụ thể nào đó. Người tham gia seminar bao gồm nghiên cứu sinh, học viên và các chuyên gia. Hình thức họp thường là một diễn giả nói chuyện và sau đó thảo luận. Ở Viện tôi, mỗi tuần đều có seminar về một đề tài khoa học, do các chuyên gia trong và ngoài nước được mời đến nói chuyện.

Workshop là một cuộc họp nhỏ hơn và không quá chuyên sâu như seminar. Thông thường, một workshop có khoảng 10-20 học viên, nhưng không có chuyên gia. Trong workshop có thực hành, bài tập dưới sự giám thị của người giảng (còn trong seminar thì không có bài tập).

Summit (hội nghị thượng đỉnh) là một cuộc họp của các chuyên gia hàng đầu hay các nhà lãnh đạo cao cấp nhất.
Xin được làm rõ thêm về những từ này (xin lỗi, tôi bị méo mó nghề nghiệp, do có nhiều năm giảng dạy tiếng Anh, và chuyên về biên-phiên dịch!). Tôi xin chép các định nghĩa bằng tiếng Anh của các từ này dưới đây, sau đó sẽ đề nghị cách dịch. Từ điển được dùng là Onelook Dictionary (online), sử dụng phần quick reference, và được kiểm tra lại bằngMerriam-Webster Online Dictionary (phần in nghiêng trong ngoặc).

1. conference: a prearranged meeting for consultation or exchange of information or discussion (especially one with a formal agenda)
(a usually formal interchange of views)

2. symposium: a meeting or conference for the public discussion of some topic especially one in which the participants form an audience and make presentations
(a formal meeting at which several specialists deliver short addresses on a topic or on related topics)

3. seminar: (a) a course offered for a small group of advanced students; (b) any meeting for an exchange of ideas
(an advanced or graduate course often featuring informality and discussion)

4. workshop: a brief intensive course for a small group; emphasizes problem solving
(a usually brief intensive educational program for a relatively small group of people that focuses especially on techniques and skills in a particular field).

Đọc các định nghĩa bằng tiếng Anh, kết hợp với phần trích dẫn của GS Nguyễn Văn Tuấn, có thể thấy các từ này đều có nghĩa một cuộc họp nhiều người, có sự trao đổi ý kiến về một vấn đề gì đó. Những nét nghĩa chính có thể giúp phân biệt các từ này như sau:

1. trịnh trọng hay thân mật: conference và symposium thuộc loại trình trọng, seminar và workshop thuộc loại thân mật hơn

2. quy mô - tức số người tham dự nhiều hay ít: conference có quy mô lớn nhất, hàng trăm người, symposium thì quy mô lớn hoặc nhỏ, hai từ còn lại có quy mô nhỏ tương đương nhau, chừng vài chục người

3. vai trò của các đối tượng tham dự (đến nghe hay đến trình bày): symposium chỉ gồm người trình bày (trừ các khách mời, không tính), đều là chuyên gia, nghe lẫn nhau; conference và seminar thì có một hoặc một số nhỏ người trình bày, những người khác nghe; còn workshop có thể không có người trình bày mà chỉ là những người làm việc chung với nhau để giải quyết một vấn đề gì đó, có người hướng dẫn

Bây giờ đến việc dịch. Ở VN, có các từ sau: hội nghị, hội thảo, diễn đàn, (nói chuyện) chuyên đề, và tập huấn. Tôi đề nghị dịch như sau: conference là hội nghị hoặc hội thảo (có nghĩa hơi khác nhau chút), symposium là diễn đàn hoặc hội nghị chuyên gia, seminar là nói chuyện chuyên đề, và workshop là hội thảo tập huấn.

Xin gửi đến mọi nguời đọc và góp ý! Đặc biệt là GS Ngyễn Văn Tuấn!
---
Bài này sưu tầm trên internet thông qua google.com search
https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=Ph%C3%A2n+bi%E1%BB%87t+seminar%2C+workshop%2C+conference%2C+symposium+...

Javascript lớp, instance và error

Tôi gặp tình huống thực tế trong lúc code javascript như bên dưới. Ghi lại ở đây để có dịp nhình lại hoặc giúp chút gì đó nếu ai gặp phải giống tôi(Dưới đây là tôi lượt bỏ để code ví dụ trở nên đơn giản dễ hiểu hơn).

Mô tả C1(Component 1), C2(Component 2)


Tôi có hai component C1, C2. Trong C1 sẽ có một thể hiện C2.

Code như bên dưới.

c1.js

(function ($) {
    function c1(options) {
        var _options = {//Default setting component
            module: ""
        }
        this.options = jQuery.extend(_options, options);//Merge setting from instance and default seting
        this.specialPage = false;//properties of class
    };

    c1.prototype.init = function () {//init function, this is registered some cases variable
        CONST: {
            MAX_INT: 2147483647
        }
        _event = $({});//trigger event object
        this.c2 = new c2(this.options);
        this.c2.init();//call the init method of component second
        this.$icon = jQuery(".htmlclass");//this is object registered jQuery object
        console.log(this.options, "done", this.$icon);//test logic console log to browser
    };
})(jQuery)

c2.js

(function ($) {
    function c2(options) {
        var _options = {
            module: ""
        };
        this.options = jQuery.extend(_options, options);
        specialPage: false;
    };
    c2.prototype = {
        _event: $({}),
        CONST: {
            MAX_INT: 2147483647
        },
        init: function () {
            console.log('c2 done');
        }
    }
})(jQuery)
---
Ở html page tôi sẽ triệu gọi như sau
<script>
        var options = {"module": "ABC" };
        var c1Instance = new c1(options);
        c1Instance .init();
        console.log(c1Instance .options.module, c1Instance .c2.specialPage)
    });
</script>
---> khi chạy sẽ xuất hiện lỗi như sau:

Uncaught ReferenceError: c1 is not defined

Sau khi khắc phục


c1.js

  function c1(options) {
    var _options = {
        module: ""
    }
    this.options = jQuery.extend(_options, options);
    this.specialPage = false;
};

c1.prototype.init = function () {
    CONST: {
        MAX_INT: 2147483647
    }
    _event = $({});
    this.c2 = new c2(this.options);
    this.c2.init();
    this.$icon = jQuery(".htmlclass");

    console.log(this.options, "done", this.$icon);
}

c2.js

function c2(options) {
    var _options = {
        module: ""
    };
    this.options = jQuery.extend(_options, options);
    specialPage: false;
};
c2.prototype = {
    _event: $({}),
    CONST: {
        MAX_INT: 2147483647
    },
    init: function () {
        console.log('c2 done');
    }
}
---
Ở html page tôi sẽ triệu gọi như sau
<script>
        var options = {"module": "ABC" };
        var c1Instance = new c1(options);
        c1Instance .init();
        console.log(c1Instance .options.module, c1Instance .c2.specialPage)
    });
</script>

Nguyên nhân - cách khắc phục:

Closure javascript, có nghĩa là ta định nghĩa c1 với clouse nên ra khỏi nó c1 trở nên undefined
Tips: Google search closure javascript

Phân tích trước khi viết javascript

Hình minh họa viết javascript
Hầu như ai viết web, động lẫn tĩnh đều viết được javascript. Nhưng nếu để viết cho ra trò(dạng viết tối ưu, chia nhỏ, không ôm đồm) thì có lẽ đém trên đầu ngón tay.

Tôi, ngày tháng lăn lốc chốn công sở, nay viết vài dòng nhằm ôn lại những gì đã viết và chia sẽ bà kon những gì tôi biết.

Để tiện cho việc mô tả điều tôi muốn nói, tôi tạm đưa ra một
Yêu cầu bài làm như sau:

Viết javaScript làm nhiệm vụ:
Suggest một danh sách item khi người dùng gõ vào textbox.(giống facebook gõ hiển thị danh sách xổ xuống,)
+ Mỗi item gồm có tiêu đề, biểu tượng
+ Khi click item này thì danh sách sẽ biến mất, và một item vừa chọn sẽ đưa vào mục DANH SÁCH ĐÃ CHỌN.
+ Danh sách đã chọn, người dùng có thể click icon x để bỏ chọn.
+ Danh sách xổ xuống, không tồn tại những item đã chọn.(Như vậy không tồn tại hai item giống nhau cho danh sách đã chọn)

Thông tin lập trình:
Ví dụ: a---> a, ba, banana, sang, lang, ...
Sau đó người dùng chọn một item từ danh sách đó để đưa vào một <ul> nhằm ghi nhận những gì đã chọn
Khi chọn xong, kêt thúc và trở lại trạng thái sẵn sàng như  mới vào page.

Phân tích yêu cầu

Có hai thứ cần viết.
+ Component SuggestItem (truy vấn dữ liệu từ server, trả về dạng json), sau đó hiển thị thành danh sách xổ xuống

+ Component thứ 2 ItemListSelected là ghi nhận lại những gì đã chọn từ C1 (Component SuggestItem)
+ Như vậy component 1 không quan tâm ai sử dụng mình và làm gì, mà chỉ cung cấp 1 trigger là "selected", tức khi user click item từ danh sách, sẽ lấy ra một item thông qua trigger "selected"
+ Component thứ 2 thì luôn lắng nghe khi nào thì trigger selected sẽ firing ra, để đón nhận và làm việc của mình.
--> Cách viết này nhằm mục đích:
 PHÂN CHIA NHIỆM VỤ
VÀ KHÔNG PHỤ THUỘC VÀO ĐỐI TƯỢNG SẼ SỬ DỤNG LÀ AI
--> Component 2 cũng có thể cung cấp các trigger VD: Change để tương lai có thể sử dụng nó.

Tiêu chuẩn kỹ thuật:
+ Tất cả component không được phụ thuộc vào đối tượng sử dụng
+ Chống xss
+ Tốc độ nhanh(không quá 3 giây cho mỗi lần hiển thị)
+ Không viết cho một csdl cụ thể nào
+ Đối với component 1:
  - Dùng các phím lên, xuống, enter, và esc để làm phím tắt
  - Dùng keyword "a" để làm shortcut add

Tiếp cận vấn đề theo hướng module hóa


1/ Định nghĩa component SuggestItem và phân chia nhiệm vụ


+ Nhận vô string,
+ Gửi dữ liệu về server xử lý
+ Nhận kết quả xử lý trả về từ server JsonObject [{id:integer, title:string, iconPath:string, reserverField:string}]
(mảng json)
+ Xử lý để hiển thị dạng list (ul, li)
+ Bind sẵn sự kiện khi click sẽ trigger ra một event đặt tên là Selected

2/ Định nghĩa component ItemListSelected


+ Đăng ký  một textbox để nhận dữ liệu dạng plan text được end-user nhập vô.
+ Gửi dữ liệu qua component SuggestItem để xử lý
+ Đăng ký  một sự kiện để lắng nghe xem bên control kia có trigger ra item nào không.
+ Render lại item theo dạng <ul><li>title</li></ul>

3/ Coding

Step 0:
Tạo một trang html Demo.html và có nội dung như sau

<!DOCTYPE html>
<html>

<head>
    <title> Demo Javascript module</title>
</head>

<body>
    <div class="item-picker">
        <div class="item-selected">
        </div>
        <div class="input-item-picker">
            <input type="text" class="input-picker" />
            <span class="input-item-add-icon"></span>
        </div>
    </div>
</body>

</html>


Step 1:
Tạo file javascript mang tên SuggestItem.js và gõ vô như sau

(function($) {

    var SuggestItem = function(options) {
        var default_options = {
            url: "/Commands/ajaxCommand.aspx",
            numberRowDisplay: 10, //Giới hạn số item hiển thị trên danh sách
            target: "" //HTML class, id mà component nhận dữ liệu
        };
        this.options = $.extend(default_options, options); //Dùng để trộn lẫn setting mặt định và setting được định nghĩa cho từng nơi gọi
    };

    SuggestionItem.prototype = { //Những gì viết trong prototype thì được phép truy cập công khai
        HTML_Template: {}, //Chứa đựng các template sẽ làm việc.
        _event: $({}), // tập hợp các event sống chung với jQuery khi trigger
        init: function() {
            //gọi các hàm thành viên phục vụ cho mục đích contructor
            this.createComponent(); //dăng ký các html vào document
            this.cacheElement(); // nhớ lại các html element để nội bộ component này làm việc
            this.bindEvent(); //gán các event cho html
        },
        _handleOnClickItem: function(event) {

            this._event.trigger("selected", this.getItemSelected(event));
        },
        on: function(event, fn) {
            this._event.on(event, fn);
        },
        searchItem: function(params) {},

    };

})(jQuery);

Bên component ItemListSelected
ItemListSelected.js
(function($) {
    init: function() {

        this.suggestItem = new SuggestItem({
            url: this.options.url
        });
        this.suggestItem.init();
        this.bindEvents();
    },

    bindEvents: function() {
        var self = this;
        this.suggestItem.on("selected", $.proxy(this._onSelectedSuggestItem, this)); //Khi component SuggestItem trigger sẽ trả về một item được chọn. Từ item này component sẽ build lại theo mục đích muống sử dụng.
    }
})(jQuery);

Popular Posts

Like us on Facebook

Flickr Images