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)