nascent
เรียนรู้สู่การเป็นผู้สร้าง software
วันอังคารที่ 30 กรกฎาคม พ.ศ. 2562
ตัวอย่างการเขียน Java Spring-boot Reactive (WebFlux)
ผมได้ทำตัวอย่างการเขียน Java Spring-boot WebFlux ซึ่งเป็นการเขียน Spring-boot แบบ Non-Blocking I/O หรือ Asynchronous หากใครสนใจสามารถเข้าไปศึกษาได้ที่
https://github.com/jittagornp/spring-boot-webflux-example
วันพุธที่ 12 มิถุนายน พ.ศ. 2562
ถึงคนอ่าน Blog และผู้ติดตามทุกคนน่ะครับ
Blog นี้ผมไม่ได้เขียนมาซักระยะนึงแล้ว
จริง ๆ ต้องเรียกว่านานมาก ๆ เลยแหล่ะ (เกือบ 4 ปีได้ ฮ่าๆๆๆ)
ตอนนี้ผมย้ายไปเขียนบน platform อื่น ๆ
หลัง ๆ มาก็มี เขียนบ้าง ไม่ได้เขียนบ้าง
เพราะมีหน้าที่รับผิดชอบที่เยอะขึ้น เลยไม่ค่อยได้มีเวลาเขียน Blog ครับ
บวกกับตอนนี้มีความสนใจ เรื่องใดเรื่องนึงเป็นพิเศษ เลยไม่ได้มีเวลามาทำตรงนี้
ถ้าผู้อ่าน เพื่อน ๆ พี่ ๆ น้อง ๆ คนไหนยังอยากติดตามอยู่ สามารถติดตามได้ตาม link นี้ครับ
ขอบคุณครับ
วันจันทร์ที่ 25 พฤษภาคม พ.ศ. 2558
maven ทำ jar file ให้ double click run program ได้ : java
วันอาทิตย์ที่ 24 พฤษภาคม พ.ศ. 2558
ฝึก recursive ด้วยโจทย์ความน่าจะเป็น
ครับ!!! ผมเคยได้ยินประโยคแบบนี้มานักต่อนักล่ะ บางคนบอกว่าผมไม่รู้จักใช้เครื่องมือให้เกิดประโยชน์
คุณกำลังเข้าใจผิดกับคำว่า "การเลือกใช้เครื่องมือ" กับ "การฝึกทักษะการแก้ปัญหา"
ที่ผมเขียนเอง เพราะผมต้องการฝึก skill เพื่อให้เกิดความคล่องตัว เมื่อเราเจอโจทย์ปัญหาลักษณะนี้ เราจะแก้มันได้รึเปล่า ลองใช้ความคิดของเราดูสิ
skill มันส่งต่อผ่านประสบการณ์กันไม่ได้ ต่อให้มีคนพยายามเล่าประสบการณ์ทั้งชีวิตของเขาให้คุณฟัง คุณก็ทำแบบเขาไม่ได้ คุณต้องฝึก ฝึก ฝึก ลงมือทำด้วยตัวคุณเองครับ
ปัญหา
โดยทั่วไป การหาความน่าจะเป็นหรือความเป็นไปได้ของสมาชิกทั้งหมดภายในเซต S ซึ่งมีสมาชิกจำนวน n ตัว
คุณจะต้องวนลูปทั้งหมด n รอบ และลึก n ชั้น ถึงจะได้ค่าทั้งหมดออกมา เช่น
S = {'A', 'B', 'C'}
n = 3 ตัว
จำนวนความเป็นไปได้ทั้งหมดคือ 3 x 3 x 3 = 27 ค่า
การเขียนโปรแกรมแบบง่ายๆ จะได้
for (var i = 0; i < S.lenght; i++){
for (var j = 0; j < S.lenght; j++){
for (var k = 0; k < S.lenght; k++){
print(S[i] + ',' + S[j] + ',' + S[k]);
}
}
}
A,A,A
A,A,B
A,A,C
A,B,A
A,B,B
...
...
...
C,B,C
C,C,A
C,C,B
C,C,C
แล้วถ้าเขาต้องการให้คุณเขียน code ที่รองรับ S ที่มี size ขนาดใดก็ได้ คุณจะเขียนยังไง?แน่นอน loop ใช้ไม่ได้ล่ะ เพราะมัน fixed ตายตัว
แล้วอะไรที่เราเอามาใช้แทน loop ได้ แถมยังเป็นแบบ dynamic อีก
คำตอบคือ Recursive ครับ
วันเสาร์ที่ 18 เมษายน พ.ศ. 2558
angularjs enumeration : javascript
Enum Factory
var mapApp = ...
myApp.factory('Enumerate', function () {
return function (list, fnc) {
var Enumerate = function (ctx) {
if (angular.isObject(ctx)) {
angular.forEach(ctx, function (val, key) {
this[key] = val;
}, this);
} else if (angular.isString(ctx)) {
this.name = ctx;
} else {
throw new Error('incorrect arguments.');
}
};
Enumerate.values = [];
Enumerate.valueOf = function (ctx) {
var obj = null;
angular.forEach(Enumerate.values, function (item) {
if (item.name === ctx) {
obj = item;
return false;
}
});
if (!obj) {
obj = new Enumerate(ctx);
Enumerate.values.push(obj);
}
return obj;
}
Enumerate.prototype.toString = function () {
return this.name;
};
fnc && angular.forEach(fnc, function (val, key) {
Enumerate.prototype[key] = val;
});
angular.forEach(list, function (item) {
Enumerate[
angular.isObject(item)
? item.name
: item
] = Enumerate.valueOf(item);
});
return Enumerate;
};
});
Using
myApp..factory('StandardColumn', [
'Enumerate',
function (Enumerate) {
var StandardColumn = function () {
};
/* define enum */
StandardColumn.Format = Enumerate([
{name: 'STRING', description: 'ตัวหนังสือ'},
{name: 'NUMBER', description: 'ตัวเลข'},
{name: 'STUDENT', description: 'นักเรียน'}
]);
StandardColumn.Format.fromDescription = function (desc) {
var obj = null;
angular.forEach(StandardColumn.Format.values, function (item) {
if (item.description === desc) {
obj = item;
return false;
}
})
return obj;
};
StandardColumn.Operation = Enumerate([
'SUM',
'AVERAGE'
]);
StandardColumn.prototype = {
id: null,
name: null,
sequence: 1,
format: StandardColumn.Format.STRING,
operation: null,
operateWith: null
};
return StandardColumn;
}
]);
สมัครสมาชิก:
ความคิดเห็น (Atom)


