วันพฤหัสบดีที่ 26 ธันวาคม พ.ศ. 2556

Resource : AngularJS

Directive

an easy-understandable and practical tutorial

Scroll to Anchor

http://stackoverflow.com/questions/17711232/scroll-to-in-angularjs

Useful Pages

AngularJS Newsletter : many useful articles
http://www.ng-newsletter.com/posts/
my favorite, short one
http://www.ng-newsletter.com/advent2013/#!/

AngularJS tips (haven't check yet but likely useful)
http://angular-tips.com/

Using AngularJS + underscore.js
http://blog.mohammedlakkadshaw.com/AngularJS_Underscore_ultimate_web_development.html#.UrutMJDtnb4

A Good Explanation to Directive in AngularJS
http://www.ng-newsletter.com/posts/directives.html

Using AngularJS + jQuery chosen
http://onehungrymind.com/angularjs-chosen-plugin-awesome/
NOTE: change $watch --> $watchCollection

Difference between href and path()

$window.location.href = ('/actual/add');wll go back to server to fetch page, e.g. http://localhost:8000/actual/add, while
$location.path('/add');will lookup $routeProvider with to fetch content to fill <ng-view> tag
browser URL will show e.g. http://localhost:8000/actual#/add

Multiple Apps in Same Page

sample here >> http://plnkr.co/edit/UowJpWYc1UDryLLlC3Be?p=preview
instead of ng-app directive, use following code
<script>
angular.element(document).ready(function() {
        angular.bootstrap(document.getElementById('myApp1'), ['myApp1']);
        angular.bootstrap(document.getElementById('myApp2'), ['myApp2']);
});
</script>

วันพุธที่ 25 ธันวาคม พ.ศ. 2556

Cheat Sheet : Directives in AngularJS

Controller

$scope.api = {
    onCreate: function(tag) { console.log('add NEW tag', tag); },
    onChange: function(qid, change) { $scope.onTagChange(qid, change); },
}

$scope.testFn = function(obj) {
    console.log('testFn recv ', obj);
}


$scope.onTagChange = function(qid, change) {
    ...
}

Directive

app.directive('chosen',function($parse){
    var linker = function(scope, element, attrs) {
            // example for isolated scope
            console.log(scope.index); // use variable passed from tag
            scope.testFn({obj: change}); // call function with parameter from directive
            scope.api.onChange(scope.question, change); // call function in object passed from tag
            scope.callback()(scope.index, change); // call function passed from tag

            // example for inherited scope
            scope.onTagChange(scope.$index, change); // directly call function from parent scope (in case not using isolated scope)
    };

    return {
        restrict:'A',
        link: linker,
        scope: {index: '=',
                callback: '&chosenChange', // rename in local : chosenChange --> callback
                api: '=chosenApi', // rename in local : chosenApi --> api
                testFn: '&'},
    }

HTML


<div chosen="choice.subtags" chosen-change="onTagChange" chosen-api="api" test-fn= "testFn(obj)" index="$index">

Another Example

Controller

$scope.value = {a: 10};
$scope.inc = function(){
    $scope.value.a += 1;
}
$scope.dec = function(){
    $scope.value.a -= 1;
}

Directive

app.directive('ngSparkline', function() {
  return {
    restrict: 'A',
    scope: {value: '=value', inc: '&incFn', dec: '&decFn'},
    link: linker,
    controller: ['$scope', function($scope) {
        $scope.value8 = $scope.value * 8;
    }],
    template: '<input type="text" ng-model="value8" placeholder="Enter a value" ng-click="inc()" ng-blur="dec()" />',
  }
});

HTML

<div ng-sparkline value="value.a" inc-fn="inc()", dec-fn="dec()"></div>

วันเสาร์ที่ 21 ธันวาคม พ.ศ. 2556

mysqlsla v2 : MySQL Slow Query Log Analyzer

Reference

Installation

  1. Download mysqlsla-2.03.tar.gz
  2. tar xvfz mysqlsla-2.03.tar.gz
  3. cd mysqlsla-2.03
  4. perl Makefile.PL
  5. make
  6. sudo make install

Cheat Sheet

analyze slow query log
    mysqlsla -lt slow /var/log/mysql/mysql-slow.log
analyze slow query log from specified user
    mysqlsla -lt slow /var/log/mysql/mysql-slow.log -mf user=user1
analyze slow query log with rows examined > 10
    mysqlsla -lt slow /var/log/mysql/mysql-slow.log -mf 're>10'
analyze top 3 slow query log from specified user
    mysqlsla -lt slow /var/log/mysql/mysql-slow.log -mf user=user1 --top 3

analyze slow query log filter only select statement
    mysqlsla -lt slow /var/log/mysql/mysql-slow.log -sf +select

analyze slow query log filter only non-select statement
    mysqlsla -lt slow /var/log/mysql/mysql-slow.log -sf -select

MySQL 5.5 : Slow Query Log

for MySQL 5.5 to log slow queries, setting in /etc/mysql/my.cnf

log-queries-not-using-indexes = 1
log-slow-queries=1
slow_query_log_file   = /var/log/mysql/mysql-slow.log
long_query_time = 1

reference : http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html

วันศุกร์ที่ 20 ธันวาคม พ.ศ. 2556

Promise and Deferred in AngularJS


Reference


Very simple example of using promises
http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/

An example of using notify() to update progress
http://nurkiewicz.blogspot.com/2013/03/promises-and-deferred-objects-in-jquery.html

Official document of AngularJS promise/deferred
http://docs.angularjs.org/api/ng.$q


compare code : callback .vs. promise


CallbackPromise
in function
var getMessages = function(callback)
{
    $timeout(function() {
        callback(['Hello', 'World!']);
    }, 2000);
}
in function
var getMessages = function()
{
    var deferred = $q.defer();
    $timeout(function() {
        deferred.resolve(['Hello', 'World!']);
    }, 2000);
    return deferred.promise;
}
in controller
getMessages(function(messages) {
    $scope.messages = messages;
});
in controller
getMessages().then(function(messages) {
    $scope.messages = messages;
});

promise with notify()


in function
var getMessages = function() {
    var deferred = $q.defer();

    var id = setInterval(function() {
        deferred.notify();
    }, 1000);

    $timeout(function() {
        clearInterval(id);
        deferred.resolve(['Hello', 'World!']);
    }, 9000);
    return deferred.promise;
}


in controller
HelloWorldP.getMessages().then(
function(messages) { // function for resolve() callback
    $scope.p.messagesp = messages;
}, 
null, // function for error callback
function(){// function for notify() callback
    $scope.p.waiting_msg += '.';
});

วันศุกร์ที่ 6 ธันวาคม พ.ศ. 2556

ถึงเวลาท้าทายสมอง - ข้อคิดดีๆ


หนังสือ "ถึงเวลาท้าทายสมอง" โดย หนูดี วนิษา เรซ
หนังสือที่เหมาะกับผู้ที่รังเกียจเงิน รังเกียจความรวย กลัวที่จะสร้างธุรกิจของตัวเอง หรือเจ้าของธุรกิจที่รู้สึกว่าตัวเองไม่มีความสุข
นี่คือเคล็ดลับการทำธุรกิจอย่างมีความสุขจากคนที่ไม่เคยเรียน MBA

เนื้อหาข้างล่างเลือกมาเฉพาะที่โดนใจ มิใช่เนื้อหาทั้งหมด
ถ้าสนใจ เชิญซื้อหามาอ่านได้ ราคาไม่แพง(?)

"Sometimes you just have to take the leap and build your wings on the way down."
"บางครั้ง คนเราก็ต้องยอมกระโดดลงจากที่สูง แล้วค่อยๆสร้างปีกขึ้นมา ระหว่างที่กำลังร่วงอยู่นั่นแหละ"

Kobi Yamada

กับดักของเป้าหมาย

"เรามีเป้าหมายอยู่ที่สุดทางก็จริง แต่ชีวิตของเราเกิดขึ้นในระหว่างเส้นทางเท่านั้น การดำเนินชีวิตให้มีความสุขตลอดเส้นทางจึงเป็นเป้าหมายสูงสุด"

วางแผนชีวิตก่อนวางแผนธุรกิจ

"ธุรกิจสำคัญก็จริง แต่มีอีกสิ่งที่สำคัญกว่านั้น นั่นคือ"ชีวิตของเรา" เพราะธุรกิจเป็นแค่"ซับเซ็ต"หรือองค์ประกอบหนึ่งในชีวิตองค์รวมของเราทั้งหมดเท่านั้น"

เป็นห่วงใคร ให้ทำธุรกิจกับคนนั้น

"ถ้าเราเลือกทำธุรกิจสายที่เกี่ยวข้องโดยตรงกับกลุ่มคนที่เราเป็นห่วง ก็จะทำให้ชีวิตเราง่ายขึ้นและสนุกขึ้นมาก เพราะเราจะได้ใช้เวลาวันละ 8 ชั่วโมงกับสิ่งที่มีความหมายกับความรู้สึกเราอย่างแท้จริง"
"...ไม่ได้หมายความว่า ไปหาวิธีเอาเงินมาจากเขา... แต่หมายความว่าพยายามผลิตสินค้าที่ทำให้ชีวิตเขาดีขึ้น"
"ถ้าเราก่อร่างสร้างธุรกิจบนพื้นฐานความคิดนี้ ทุกวันคือการทำบุญ และเงินทุกบาทที่เราได้มาคือเงินมงคล"

โครงสร้างธุรกิจ คิดแบบเซน

"เงินทอง ชื่อเสียง อำนาจ มีค่ามหาศาลในฐานะเครื่องมือที่ทรงพลัง ในการช่วยเหลือผู้อื่น"
"ดื่มชา อย่าดื่มโปรเจกต์"

"เวลาดื่มชา เห็นก้อนเมฆไหม"

เงินทอง เครื่องวัดขนาดของใจ

"เราสามารถทำงานที่ได้เงินเยอะและเป็นงานที่มีความสุขก็ได้"
"คนไม่มีเงินนั้นคิดถึงเงินมากกว่าคนมีเงินหลายเท่า และการเป็นคนมีเงินก็หมายถึงการมีอิสรภาพจากการต้องคิดถึงเงินตลอดเวลา"
"เงินสำคัญที่สุดสำหรับทุกเรื่องที่ต้องใช้เงิน และไม่สำคัญเลยสำหรับเรื่องที่ไม่ต้องใช้เงิน"
"หากเรามีปัญหากับใครหรืออะไร ให้ไปแก้ปัญหานั้นให้ตรงจุดดีกว่า...แก้ปัญหาที่ปัญหา ไม่ใช่เกลื่อนปัญหาด้วยการออกไปใช้เงิน..."
"ความรวยเป็นแค่ความปลอดภัยขั้นที่หนึ่ง ความมีอิสรภาพทางการเงินเป็นความปลอดภัยขั้นที่สอง แต่ความปลอดภัยสูงสุดคือการมีอิสรภาพทางใจ"
"หากเงินจะเป็นอะไรสักอย่าง ก็คงเป็นกระจกที่สะท้อนให้เห็นชัดถึงสิ่งที่ซ่อนอยู่ลึกสุดในจิตใจของเราเอง"

วันพฤหัสบดีที่ 5 ธันวาคม พ.ศ. 2556

52 เคล็ดวิชาเปลี่ยนคนธรรมดาให้เป็นอัจฉริยะ (The Little Book of Talent)

หนังสือ "52 เคล็ดวิชาเปลี่ยนคนธรรมดาให้เป็นอัจฉริยะ"
สำนักพิมพ์ WeLEARN
แปลจากหนังสือเรื่อง"The Little Book of Talent" ของ Daniel Coyle
หนังสือเกี่ยวกับเคล็ดลับที่ผู้เขียนสังเกตสังกามาจากโรงเรียนหรือแหล่งต่างๆที่สร้างเหล่าอัจฉริยะออกมาสู่วงการกีฬา ดนตรี ศิลปะและอื่นๆ
ตัวอย่างส่วนใหญ่มาจากการฝึกนักกีฬาหรือศิลปิน แต่บางอันสามารถเอามาปรับใช้กับนักเรียน นักศึกษาหรือคนที่กำลังเตรียมตัวสอบได้ ก็เลยลองสรุปดู

ตั้งต้น
ข้อที่ คำอธิบาย สำหรับนักเรียน
#1 จับจ้องคนที่คุณอยากจะเป็น เพื่อกระตุ้นให้เกิดแรงจูงใจ ลองหาเพื่อนที่เก่งๆในห้องซักคนเพื่อเป็นแรงบันดาลใจว่าเราจะเก่งแบบนั้นให้ได้ (เก่งแต่โกงหรือเก่งแต่เห็นแก่ตัวนี่ไม่เอานะ)
#2 ใช้เวลาวันละ 15  นาทีเพื่อประทับทักษะลงในสมอง ตั้งอกตั้งใจเฝ้าดูทักษะที่ต้องการฝึกฝนซ้ำแล้วซ้ำเล่าจนภาพของมันประทับอยู่ในใจอย่างชัดเจน ดูมันเข้าไป แต่อย่าออกนอกหน้า เดี๋ยวเค้าจะคิดว่ามีใจ 555
#3 อย่าอายที่จะขโมย พัฒนาการทุกอย่างเป็นผลมาจากการซึมซับข้อมูลใหม่ๆและนำไปประยุกต์ใช้เท่านั้น ลองถามๆดูว่ามันมีวิธีเรียนวิธีคิดวิธีจดเลกเชอร์ยังไง เผื่อเราเอามาดัดแปลงใช้แบบของเราบ้าง
#4 จดบันทึก จดบันทึกผลงานในวันนี้ ไอเดียสำหรับวันพรุ่งนี้ และเป้าหมายสำหรับสัปดาห์ถัดไป
#5 ยอมดูเหมือนเป็นคนโง่ ลองเสี่ยงทำอะไรใหม่ๆบ้าง แม้จะผิดพลาดและดูโง่
#6 เรียบง่ายดีกว่าหรูหรา สถานที่ที่เรียบง่ายจะช่วยให้เรามีสมาธิมากขึ้น
ความสบายจะทำให้เราลดความพยายามลง
สถานที่เรียนไม่ต้องหรูเลิศไฮโซมากก็ได้ ง่ายๆพื้นๆก็พอ
#7 ต้องการฝึกทักษะทางตรงหรือทักษะทางอ้อม ทักษะทางตรง(hard skill)เน้นความแม่นยำในการทำซ้ำ
ทักษะทางอ้อม(soft skill)เน้นการมองแบบแผนให้ออกและตอบสนองต่อสถานการณ์ตามหลัก3Rคือประเมิน(Reading) เล็งเห็น(Regognizing) และตอบสนอง(Reacting)
ทักษะทางตรงน่าจะพวกความรู้หรือสูตรพื้นฐาน ส่วนทักษะทางอ้อมน่าจะวิธีประยุกต์ใช้กับโจทย์ละมั้ง
#8 วิญญาณช่างไม้ฝีมือประณีตสำหรับทักษะทางตรง ใส่ใจทุกรายละเอียด
ทำอย่างถูกต้องแม่นยำ(ตั้งแต่ตอนแรกๆ)
ให้ความสำคัญกับเทคนิคพื้นฐาน
ความรู้พื้นฐานเราต้องเป๊ะ สูตรต้องจำได้แม่นไม่ผิดเพี้ยน
#9 วิญญาณนักสเก็ตบอร์ดสำหรับทักษะทางอ้อม ทำซ้ำในสถานการณ์หลากหลายรูปแบบ
สำรวจทุกแง่มุม
เรียนรู้จากสิ่งที่เกิดขึ้น
อย่ากังวลกับความผิดพลาด
ลองทำโจทย์หลายๆรูปแบบ สังเกตดูว่าแบบไหนเราพลาดบ่อย แล้วพลาดเพราะอะไร ที่ถูกต้องควรจะเป็นยังไง
#10 ยกย่องทักษะทางตรง ทักษะทางตรงเป็นรากฐาน ส่งผลต่อความเก่งกาจในระยะยาวมากกว่า
ทักษะทางตรงเหมือนลำต้น ทักษะทางอ้อมเหมือนกิ่งก้านสาขา ลำต้นต้องแข็งแรงก่อนถึงจะแผ่กิ่งก้านสาขาออกไปได้
ความรู้พื้นฐานเอาให้เป๊ะ ไม่งั้นตอนไปประยุกต์ใช้จะหลงไปผิดทิศผิดทางได้
#11 อย่าเชื่อเรื่องเก่งแต่เกิด การฉายแววตั้งแต่อายุยังน้อยไม่ได้บ่งชี้ความสำเร็จในอนาคต เชื่อมั่นว่าตัวเองทำได้ ถ้าคิดว่าโง่กว่าคนอื่นก็พยายามให้มากกว่า
#12 กฏ 5 ข้อในการเลือกผู้ฝึกสอน 1) อย่าเลือกคนที่ทำให้รู้สึกสบายใจและมีความสุข
2) เลือกคนที่ทำให้หวั่นเกรงนิดๆ
3) เลือกคนที่ให้คำแนะนำสั้นๆแต่ชัดเจน
4) มองหาคนที่ชอบปูพื้นฐาน
5) ถ้าทุกอย่างเท่ากันหมด เลือกคนที่มีอายุมากกว่า
พัฒนาทักษะ
#13 ค้นหาจุดกลมกล่อม จุดที่อยู่สุดขอบความสามารถ จุดที่พยายามอีกนิดก็จะสำเร็จแล้ว
#14 ลืมเรื่องเวลาไปซะ การฝึกฝนวัดกันที่จำนวนครั้งที่ดิ้นรนพยายามจนสำเร็จ ไม่ได้วัดกันที่เวลา ตั้งเป้าหมายการทบทวนบทเรียนด้วยจำนวนครั้ง ไม่ใช่ด้วยเวลา เช่นนับกันว่าทำโจทย์ให้ถูกวันละกี่ข้อ
#15 แบ่งทักษะออกเป็นส่วนย่อยๆ ค่อยๆทำไปทีละน้อย เพราะมันสอดคล้องกับกระบวนการเรียนรู้ของสมอง แบ่งเนื้อหาในบทเป็นส่วนย่อยๆ
#16 ขัดเกลาทักษะให้สมบูรณ์แบบวันละหนึ่งส่วนย่อย เป้าหมายไม่ใช่แค่ฝึกซ้อมจนครบเวลาที่กำหนด แล้วค่อยๆทำความเข้าใจไปทีละส่วน
#17 จงตะเกียกตะกาย เพื่อสร้างความเชื่อมโยงใหม่ๆในสมอง
ยิ่งเจ็บใจยิ่งแข็งแกร่ง
ทำโจทย์หรือทบทวนบทที่เรายังทำไม่ได้หรือยังไม่เข้าใจ อย่ามัวแต่ทำส่วนที่ทำได้แล้วมานั่งสบายใจว่าทำได้เยอะ
#18 ซ้อมวันละ 5 นาทีดีกว่าสัปดาห์ละ 1 ชั่วโมง สมองเติบโตทีละน้อยอยู่ตลอดเวลา
ถึงเวลาจะน้อยแต่ให้จดจ่ออย่างเต็มที่และคอยมองหาจุดผิดพลาด
ทำให้การฝึกซ้อมกลายเป็นนิสัย(ใช้เวลาอย่างน้อย30วัน)
ฝึกทุกวัน ทบทวนทุกวัน วันละนิด(หรือวันละมากก็ได้ถ้าไหว)
#19 คิดว่ามันเป็นเกม เกมน่าสนุก ต่อเนื่องและน่าตื่นเต้น
การฝึกซ้อมจำเจ ไร้จุดหมาย ซ้ำซาก น่าเบื่อ ไร้ชีวิตชีวา
คิดเกมสนุกเล่น หาเรื่องให้รางวัลตัวเองบ้าง อย่างเช่นตั้งเป้าหมายว่าจะทำโจทย์ให้ถูกติดต่อกัน 50 ข้อ ถ้าทำได้จะได้กินขนม ไรงี้
#20 ฝึกซ้อมตามลำพัง เป็นวิธีที่ดีที่สุดในการค้นหาจุดกลมกล่อมและสร้างวินัยในตัวเอง ทุกอย่างขึ้นอยู่กับตัวเอง ฝึกฝนคนเดียว แล้วทำคะแนนดีๆให้เพื่อนมันเซอไพรส์เล่นๆ หุๆๆๆ
#21 คิดเป็นภาพ ง่ายต่อการทำความเข้าใจ จดจำและทำตาม ลองสรุปเนื้อหาของแต่ละบทให้เป็นภาพ คิดซะว่าตัวเองเป็นใบ้หรือกำลังสอนให้คนหูหนวก สิ่งที่ทำได้คือวาดรูป
#22 แก้ไขทันทีที่เกิดข้อผิดพลาด อย่าเพิกเฉยและแกล้งทำเป็นไม่มีอะไร
จงใส่ใจและแก้ไขความผิดพลาดแต่อย่าฝังใจ
เมื่อทำโจทย์ผิด ให้ดูเฉลยทันทีว่าเราทำผิดตรงไหน แล้ววิธีที่ถูกคืออะไร
#23 นึกภาพสายส่งข้อมูลในสมอง สร้างความเชื่อมโยงใหม่ๆในสมองและเพิ่มความแข็งแกร่งให้มัน
ความผิดพลาดคือเครื่องมือในการพัฒนาทักษะ
#24 นึกภาพสายส่งข้อมูลทำงานเร็วขึ้น
#25 ฝึกในที่แคบๆ ข้อจำกัดสร้างสถานการณ์ที่บีบคั้นและทำให้ต้องดิ้นรนตลอดเวลา สำหรับนักเรียนอาจจะเป็นการทำโจทย์ในเวลาที่จำกัดก็ได้ ทำให้ต้องดิ้นรนคิดให้เร็วขึ้น
#26 ฝึกซ้อมแบบเต่าคลาน ไม่ต้องรีบเป็นให้เร็ว
ฝึกซ้อมช้าๆจะทำให้มองเห็นข้อผิดพลาดได้ชัดเจนขึ้น
อย่าโดดเข้าหาสูตรลัดทันทีโดยไม่เข้าใจพื้นฐาน
#27 หลับตา เพื่อกำจัดสิ่งรบกวนสมาธิ หลับ...ไม่ใช่ อาจจะลองหลับตานึกทบทวนบทเรียนในหัวก็ได้
#28 ทำท่าทางเหมือนแสดงละครใบ้ ตัดส่วนเกินออกไป จดจ่อกับสิ่งที่มีความสำคัญที่สุด
#29 ทำเครื่องหมายไว้ทุกครั้งที่ทำถูกต้อง ทุกครั้งที่ทำได้ถูกต้อง ให้หยุดนิ่งแล้วนึกย้อนกลับไปว่าทำได้อย่างไร โจทย์ใหม่ๆหรือโจทย์ยากๆที่ทำได้ถูก ลองทบทวนขั้นตอนดูอีกทีว่าแก้โจทย์ยังไง
#30 หลับซักงีบ ช่วยให้สมองเรียนรู้ได้ดีขึ้น เพิ่มความแข็งแกร่งให้กับความเชื่อมโยงในสมองที่พึ่งสร้างขึ้นจากการฝึกซ้อม
เตรียมสมองให้พร้อมสำหรับการฝึกซ้อมครั้งต่อไป
ตามนั้น หลับให้พอ อย่าฝืน (ซึ่งหมายความว่า ควรเตรียมตัวสอบแต่เนิ่นๆ อย่ามาเร่งสปีดกันตอนใกล้ๆสอบ)
#31 ทำแบบสุดโต่งเมื่อเรียนรู้สิ่งใหม่ๆ การทำอะไรแบบสุดโต่งช่วยให้เรารู้ว่าขอบเขตที่เหมาะสมอยู่แค่ไหน
#32 จดจ่อกับเป้าหมาย จดจ่อกับเป้าหมาย ไม่ใช่ความผิดพลาด
การวางกรอบในแง่บวก(positive framing)
เช่น ฉันจะทำให้ได้เกรดสี่ทุกวิชา ไม่เอาเป้าหมายแบบฉันจะไม่เป็นที่โหล่
#33 ปิดหนังสือ อ่านรอบเดียว ปิดหนังสือแล้วสรุปออกมา เพื่อเพิ่มการดิ้นรนในการ
(1) จับประเด็น
(2) ประมวลผลและจัดระเบียบ
(3) เขียนลงกระดาษ
ยิ่งดิ้นรนมาก ยิ่งเรียนรู้มาก
ตามนั้น
#34 เทคนิคประกบคู่ ทำสิ่งที่ถูกต้อง ทำสิ่งที่ผิด ทำสิ่งที่ถูกต้องซ้ำอีกครั้ง
เพื่อเน้นย้ำสิ่งที่ถูกต้องและมองเห็นข้อผิดพลาดได้ชัดเจนขึ้น
#35 ฝึก3พัก10 สมองจะสร้างความเชื่อมโยงได้ดีขึ้นถ้าถูกกระตุ้น 3 ครั้ง
ฝึกซ้อม 3 รอบ พัก 10 นาทีระหว่างรอบ
ตามนั้น อาจจะทำโจทย์ 3 ชุด ระหว่างชุดก็พักซัก 10 นาที (ไม่ใช่ทำโจทย์ข้อนึงแล้วพัก 10 นาทีนะ - -;)
#36 คิดค้นแบบฝึกหัดประจำวัน เพื่อให้สามารถประเมินความก้าวหน้าได้ต่อเนื่อง ลองคิดดูเล่นๆขำๆ ถ้าทำได้ก็ให้รางวัลตัวเองนิดนึง
#37 R.E.P.S. การฝึกฝนที่ดีควรจะมี
การดิ้นรนพยายามและทำซ้ำ(Reaching and Repeating)
การดึงความสนใจ(Engagement)
ความสอดคล้อง(Purposefulness) และ
ข้อมูลป้อนกลับที่เร็วและชัดเจน(Strong, Speedy Feedback)
#38 หยุดก่อนหมดแรง ความอ่อนเพลียทำให้สมองทำงานช้าลง ตามนั้น อย่าหักโหม
#39 ฝึกทันทีหลังจากแข่งเสร็จ ช่วยให้แก้ไขข้อผิดพลาดได้อย่างตรงจุด เพราะยังจำได้ว่าพลาดตรงไหน อันนี้สำคัญ หลังจากสอบเสร็จ ไม่ใช่มานั่งพักผ่อนชิลๆ แต่ให้กลับไปทบทวนบทเรียนส่วนที่คิดว่าทำพลาด
#40 image training ก่อนเข้านอน นึกภาพว่าตัวเองกำลังใช้ทักษะที่ปรารถนาได้อย่างสมบูรณ์แบบ ข้อดีคืออาจทำให้ฝันดีได้ในระหว่างนอน 555
#41 ปิดท้ายการซ้อมด้วยสิ่งโปรดปราน ให้รางวัลเล็กๆน้อยๆกับตัวเอง หนังโป๊ซักเรื่อง ขนมซักชิ้น หรือโทรคุยกับแฟน
#42 หนทางสู่การเป็นผู้สอนที่ดี 1) สร้างความเชื่อใจภายในไม่กี่วินาทีแรกที่พบกับผู้เรียน
2) ให้ข้อมูลที่กระชับและชัดเจน
3) อย่าใช้คำพูดที่คลุมเครือ
4) กำหนดตัวชี้วัดการเรียนรู้
5) สร้างสภาพแวดล้อมที่กระตุ้นให้เกิดความพยายาม
6) ทำให้ผู้เรียนยืนหยัดได้ด้วยตัวเอง
เผื่อว่าถ้าน้องไปรับงานสอนพิเศษก็เอาหลักการพวกนี้มาใช้ได้
รักษาความก้าวหน้า
#43 เปิดใจรับการทำซ้ำ การทำซ้ำเป็นเครื่องมือที่ทรงพลังในการพัฒนาทักษะ ทำโจทย์ซ้ำๆได้ไม่ตายหรอก
#44 เป็นคนใช้แรงงาน ทุ่มเทเวลาให้กับการฝึกฝนอย่างจริงจัง ถ้าคิดว่าตัวเองโง่กว่าคนอื่น ก็จงใช้เวลาให้มากกว่าคนอื่น
#45 อัตราส่วน5:1 ฝึก5แข่ง1 อันนี้ไม่ค่อยเกี่ยว
#46 สร้างนิสัยดีๆแทนการแก้นิสัยแย่ๆ สมองเก่งในการสร้างความเชื่อมโยงใหม่ๆ แต่ไม่เก่งในการทำลายความเชื่อมโยงที่เกิดขึ้นแล้ว
ทุ่มเทพลังไปสร้างนิสัยดีๆ อย่ารีบร้อน ทำใจยอมรับความงี่เง่าของตัวเองในช่วงแรกๆ
#47 ฝึกฝนด้วยการสอนผู้อื่น เราจะเข้าใจอย่างลึกซึ้งยิ่งขึ้นเวลาสอนผู้อื่น ตามนั้น ผลข้างเคียงคือเราจะเป็นที่รักของเพื่อนๆ จะไม่มีใครมาว่าเราหวงวิชา ถ้าเป็นคนทำงาน ผลดีคืองานจะไม่มามะรุมมะตุ้มอยู่ที่เราคนเดียว
#48 ให้เวลาอย่างน้อย8สัปดาห์ การสร้างและขัดเกลาวงจรประสาทต้องใช้เวลา ฝึกไปเรื่อยๆแม้จะยังไม่รู้สึกว่าเก่งขึ้น ใจร่มๆ ค่อยๆใช้เวลาฝึกฝน เดี๋ยวก็เก่งเอง
#49 เมื่อติดหล่ม จงเปลี่ยนเกียร์ ภาวะย่ำอยู่กับที่เกิดขึ้นเมื่อสมองพัฒนาทักษะไปจนถึงขั้นใช้ทักษะได้โดยอัตโนมัติ
ให้เปลี่ยนวิธีฝึกฝนเพื่อก่อกวนและกระตุ้นสมอง(เช่นทำให้เร็วขึ้น ทำให้ช้าลง)
#50 บ่มเพาะความทรหด ความทรหดจะสร้างความแตกต่างในระยะยาว
#51 เก็บเป้าหมายไว้เป็นความลับ จะช่วยสร้างแรงจูงใจได้มากขึ้น อุบเงียบไว้ อย่าบอกใครจนกว่าจะทำได้ ให้มันเซอไพรส์เล่นๆ 555
#52 คิดแบบคนสวน ทำแบบช่างไม้ คิดอย่างใจเย็นและไม่ด่วนตัดสิน
ทำอย่างต่อเนื่องและมีกลยุทธ
ต้องมีกลยุทธที่ถูกต้องนะ ไม่งั้นเสียเวลาเปล่า ว่างๆก็มานั่งทบทวนกลยุทธหรือแนวทางการเรียนการจัดเวลาก็ดีเหมือนกันนะ

วันศุกร์ที่ 22 พฤศจิกายน พ.ศ. 2556

Accounting Analysis - สรุปความจากหนังสือ Business Analysis & Valuation บทที่ 3

ชื่อเต็มๆคือ Business Analysis & Valuation Using Financial Statements ตำราเทพของอาจารย์Palepu, Healy และ Bernard

เล่มที่อ่านเป็น Second Edition ซึ่งมันก็เก่าประมาณนึงแล้ว (ตอนนี้มันปาไปจะ 5th Edition แล้ว ถ้ามี PDF ก็ขอด้วยนะ จุ้บๆ) เนื้อหาอาจจะไม่อัพเดทบ้างอะไรบ้าง คนสรุปก็ไม่ได้เก่งบัญชี ผิดพลาดคลาดเคลื่อนประการใดก็ช่วยชี้แนะด้วยนะคร้าบ

ครั้งนี้เราจะมาต่อในเรื่อง Accounting Analysis ซึ่งมันอยูตรงส่วนที่เป็นกรอบสีน้ำเงินๆในรูปข้างล่างนี้
หลังจากที่เราได้ทำ Business Strategy Analysis (กล่องข้างบนตรงกลาง) เป็นที่เรียบร้อย รู้จักมักจี่กับธุรกิจของบริษัทที่เราสนใจเรียบร้อยแล้ว Accounting Analysis ก็คือการวิเคราะห์คุณภาพของงบการเงิน(อันเป็น input เข้ามาในกระบวนการทำงานของเรา ตามรูปข้างบนก็คือกล่องบนซ้าย)ว่าคุณภาพของมันดีเลวแค่ไหน เชื่อถือได้ประมาณใด การประมาณการและสมมุติฐานต่างๆในงบการเงินสอดคล้องกับกลยุทธของบริษัท(ที่อธิบายกันมาในบทที่2)แค่ไหน ปัจจัยที่มีผลกับคุณภาพของงบการเงินก็อย่างเช่น
-         กฏข้อบังคับในการออกงบการเงิน ซึ่งบางครั้งทำให้ไม่สามารถสะท้อนภาพที่แท้จริงของธุรกิจออกมาได้
-         การประมาณการที่ผิดพลาด
-         การเลือกประมาณการที่อาจจะมีวาระซ่อนเร้น เช่น ประมาณหนี้ให้ต่ำๆ หาวิธีทำให้กำไรทางบัญชีสูงๆ(ผู้บริหารจะได้โบนัสงามๆ นักลงทุนจะได้แห่มาซื้อหุ้น) หรือทำให้กำไรต่ำๆ(จะได้เสียภาษีน้อยๆ ลูกค้าจะได้ไม่มากดราคาเรา สหภาพแรงงานจะได้ไม่เรียกร้องอะไรมาก) เปิดเผยข้อมูลในหมายเหตุประกอบงบน้อยๆ (เดี๋ยวคู่แข่งเราจะรู้เยอะเกินไป)

ขั้นตอนคร่าวๆในการทำ Accounting Analysis แบ่งเป็น 6 ขั้นตอนคือ
1.มองให้ออกว่าตัวเลขอะไรในงบการเงินมีความสำคัญกับกลยุทธของบริษัท ตัวอย่างในหนังสือก็เช่น
- ธุรกิจลีสซิ่ง à มูลค่าซากของสินทรัพย์ที่ปล่อยเช่า
- ธนาคาร à หนี้สงสัยจะสูญ
- ค้าปลีก à ตัวเลขสินค้าคงเหลือ
- ธุรกิจผลิตล้านแปด à ยอดคืนสินค้า ยอดเคลม สินค้าคงเหลือ ค่าR&D
   (ตัวไหนก็แล้วแต่ว่าบริษัทใช้กลยุทธอะไรในการแข่งขัน)

2.แล้วบริษัทมีอิสระมากน้อยแค่ไหนในการคำนวณตัวเลขเหล่านั้น
ตัวเลขบางอย่างเช่นค่าใช้จ่ายในการวิจัย หรือในการทำการตลาด ค่าโฆษณา จะถูกบังคับให้บันทึกเป็นค่าใช้จ่ายทั้งหมด ทำให้บางครั้งไม่สามารถสะท้อนภาพที่แท้จริงของบริษัทได้ เราก็อาจจะให้ความสำคัญกับตัวเลขพวกนี้ในงบการเงินน้อยลง(เพราะมันไม่เกิดประโยชน์อะไรนัก) หรือมองหาตัวเลขจากแหล่งอื่นๆที่พอจะใช้แทนกันได้

3.แล้วบริษัทใช้สมมุติฐานอะไรหรือประมาณการยังไงในการคำนวณตัวเลขเหล่านั้น
ภายในกรอบของความอิสระในการออกงบการเงิน(ตามข้อ2) บริษัทเลือกวิธีที่สะท้อนภาพความจริงที่สุดแล้ว หรือบริษัทเลือกวิธีประมาณการที่มีวาระซ่อนเร้นเพื่อปกปิดอะไรหรือเปล่า โดยเราอาจเปรียบเทียบสมมุติฐานหรือวิธีประมาณการกับงบการเงินของบริษัทในกลุ่มอุตสาหกรรมเดียวกันว่าเหมือนหรือต่างกันยังไง หรือบริษัทมีการเปลี่ยนวิธีประมาณการหรือเปล่า ด้วยเหตุผลอะไร เหมาะสมหรือไม่ บริษัทมีแรงจูงใจอะไรให้บิดเบือนตัวเลขในงบการเงินหรือเปล่า (เช่น D/E ปริ่มๆแล้ว) หรือประมาณการต่างๆที่เคยทำไว้ในอดีตมันใกล้เคียงกับความเป็นจริงมากน้อยแค่ไหน มีadjustอะไรกันครึกโครมย้อนหลังหรือเปล่า

4.บริษัทเปิดเผยข้อมูลในหมายเหตุประกอบงบการเงินละเอียดพอหรือเปล่า

5.มองหาสัญญาณเตือนในงบการเงินที่ควรระวังและขุดคุ้ยเพิ่มเติม เช่น
อยู่ดีๆก็เปลี่ยนวิธีประมาณการโดยไม่มีเหตุผลที่ดี
อยู่ดีๆก็มีรายการประหลาดๆเกิดขึ้น
ลูกหนี้เพิ่มเกินหน้าเกินตายอดขาย
   อาจจะมีหนี้สูญหรือยอดคืนสินค้าระเบิดตูมตามมาในงวดถัดไป
สินค้าคงเหลือเพิ่มขึ้นเกินหน้าเกินตายอดขาย
   อันนี้แล้วแต่กรณีไป เช่นถ้าสินค้าคงเหลือเพิ่มเยอะเกิน อาจจะขายไม่ออกแล้ว อาจจะต้องขายเลหลังถูกๆในอนาคตหรือเปล่า สินค้าระหว่างผลิตเพิ่มเยอะ อาจจะเพราะมองว่ามีโอกาสขายได้เยอะเลยเร่งผลิตหรือเปล่า วัตถุดิบเพิ่มขึ้นเยอะ เกิดจากความผิดพลาดในการสั่งซื้อหรือว่าเกิดปัญหาในการผลิตหรือเปล่า
กำไรในงบกำไรขาดทุนกับ cash flow เริ่มจะห่างเหินกันเกินไป
   แอบเปลี่ยนวิธีรับรู้รายได้หรือแต่งบัญชีเพื่อให้กำไรออกมางามๆหรือเปล่า
มีการ write-off ก้อนใหญ่ๆหรือเปล่า
ทำธุรกิจวิธีแปลกๆเพื่อให้ตัวเลขทางบัญชีออกมางามๆหรือเปล่า
มี gap ระหว่างงบรายไตรมาสกับงบปีมาก
   งบรายไตรมาสอาจจะทำตัวเลขสวยๆ(เพราะการตรวจสอบเข้มข้นน้อยกว่างบปี) พองบปีออกมาตัวเลขต่างกับงบรายไตรมาสราวฟ้ากับเหวหรือเปล่า
เปลี่ยนบริษัทผู้ตรวจบัญชีหรือเปล่า เปลี่ยนทำไม มีนัยยะอะไรหรือเปล่า
มีรายการระหว่างกันมากน้อยแค่ไหน
ป.ล. ทั้งหมดทั้งปวงนี้ ไม่ได้บอกว่าถ้ามีสัญญาณเหล่านี้แล้วจะเลวไปเสียหมด บางครั้งอาจเกิดจากการเปลี่ยนกลยุทธของบริษัทก็ได้ แต่แค่ให้ตรวจสอบเพิ่มเติมแค่นั้น


6.คำนวณตัวเลขในงบการเงินใหม่ถ้าจำเป็น

แถมท้ายแบบสั้นๆกับข้อควรระวังในการทำ accounting analysis 3 ข้อคือ
-         conservative accounting ไม่ใช่เรื่องดี
งบการเงินที่ดีคืองบการเงินที่สะท้อนภาพของบริษัทตามความเป็นจริง ไม่ดีเกินไป ไม่แย่เกินไป
-         วิธีลงบัญชีที่แปลกกว่าบริษัทอื่นๆไม่ได้หมายความว่าผิดเสมอไป
บางครั้งอาจจะเป็นเพราะเค้าทำธุรกิจแปลกกว่าคนอื่นก็ได้
-         อย่ามองว่าการเปลี่ยนวิธีลงงบการเงินหมายความว่าบริษัทกำลังแต่งบัญชีเสมอไป
บางครั้งมันก็มีเหตุผลที่สมควร

เป็นอันว่าจบบทที่สามแต่เพียงเท่านี้ เจอกันครั้งหน้าที่บทที่สี่ เรื่อง Asset Analysis เลยครับ

วันพฤหัสบดีที่ 14 พฤศจิกายน พ.ศ. 2556

Strategy Analysis - สรุปความจากหนังสือ Business Analysis & Valuation บทที่ 2 ตอนที่ 3

ชื่อเต็มๆคือ Business Analysis & Valuation Using Financial Statements ตำราเทพของอาจารย์Palepu, Healy และ Bernard

เล่มที่อ่านเป็น Second Edition ซึ่งมันก็เก่าประมาณนึงแล้ว (ตอนนี้มันปาไปจะ 5th Edition แล้ว ถ้ามี PDF ก็ขอด้วยนะ จุ้บๆ) เนื้อหาอาจจะไม่อัพเดทบ้างอะไรบ้าง คนสรุปก็ไม่ได้เก่งบัญชี ผิดพลาดคลาดเคลื่อนประการใดก็ช่วยชี้แนะด้วยนะคร้าบ

หลังจากตอนที่แล้วเราสรุปกันในส่วนแรกของ Strategy Analysis ว่าด้วยเรื่อง Industry Analysis ซึ่งใช้ Five Forces ในการวิเคราะห์แล้ว ครั้งนี้เราจะมาต่อกันในส่วนที่สองของ Strategy Analysis ว่าด้วยเรื่อง Competitive Positioning กัน

Competitive Positioning พูดภาษาบ้านๆคือ เมื่อบริษัทเลือกสนามแข่ง(ตลาดที่จะทำธุรกิจ)แล้ว ก็ต้องมาคิดว่าจะแข่งกับคนอื่น(ทำธุรกิจ)ยังไง บริษัทจะแข่งกับเจ้าอื่นๆในตลาดได้ด้วยวิธีหลักๆ วิธีคือ แข่งเรื่องราคา(cost leadershipหรือ แข่งเรื่องคุณภาพ(differentiation) อันนี้เข้าใจไม่ยาก เปรียบเทียบระหว่างแม็คโคร/โลตัสกับพารากอน/เอ็มโพเรียมก็ได้ กลุ่มแรกจะแข่งเรื่องราคา ทำยังไงก็ได้ให้ขายของได้ในราคาต่ำที่สุด ส่วนกลุ่มหลังจะแข่งเรื่องคุณภาพและบริการดีเลิศ

ทีนี้มันมีคำศัพท์สองคำที่เกี่ยวข้อง คำแรกคือ core competencies คือสิ่งที่เรามีและเจ๋งกว่าคนอื่น(ไม่ว่าจะจับต้องได้หรือไม่ได้ก็แล้วแต่) ส่วนคำที่สองคือ value chain ซึ่งหมายถึงสิ่งที่เราทำในธุรกิจ 

การที่บริษัทจะมี competitive advantage (หรือพูดง่ายๆคือแข่งกับคนอื่นได้) มีเงื่อนไขหลักๆ ข้อคือ
1.       core competency ของบริษัทเป็น key success factor ของกลยุทธที่บริษัทเลือกหรือเปล่า
พูดง่ายๆคือ อะไรที่บริษัทคิดว่าเจ๋งน่ะ มันสำคัญหรือเปล่า ยกตัวอย่างลอยๆเช่น ถ้าบริษัทเลือกที่จะแข่งด้านราคา แต่จุดเด่นของบริษัทคือการให้บริการที่เป็นเลิศ อันนี้ก็ไม่matchกัน เจ๋งไปก็เท่านั้น แต่ถ้าจุดเด่นของบริษัทคือมีแหล่งซื้อวัตถุดิบราคาถูก มีวิธีการผลิตขั้นเทพที่ทำให้ต้นทุนถูกมว้ากกกกก อันนี้โอเค เพราะมันทำให้ต้นทุนของบริษัทต่ำ ทำให้ขายของที่ราคาถูกๆได้
2.       value chain ของบริษัทจำเป็นสำหรับกลยุทธที่บริษัทเลือกหรือเปล่า
พูดง่ายๆคือ อะไรที่บริษัททำนั้นสำคัญแค่ไหน ยกตัวอย่างลอยๆเหมือนข้อแรกเช่น ถ้าบริษัทเลือกที่จะแข่งด้านคุณภาพ แต่กลับเสียเวลาไปกับการต่อราคา หาวัตถุดิบถูกๆ นี่ก็ไม่ใช่ละ แต่ถ้าเอาเวลาไปปรับปรุงเรื่องคุณภาพสินค้าหรืออบรมพนักงานให้พูดจาเพราะๆ อันนี้โอเค
3.       core competency และ value chain ของบริษัทเลียนแบบได้ง่ายหรือเปล่า
ถ้ามันเลียนแบบได้ง่าย เดี๋ยวคนอื่นก็ทำตาม สุดท้ายมันก็จะเหมือนๆกันทุกเจ้า สิ่งที่เราเจ๋งเราดีก็จะกลายเป็นเรื่องธรรมดาๆไป ใครๆก็ทำได้
ถ้ามันเลียนแบบได้ง่าย เดี๋ยวคนอื่นก็ทำตาม สุดท้ายมันก็จะเหมือนๆกันทุกเจ้า สิ่งที่เราเจ๋งเราดีก็จะกลายเป็นเรื่องธรรมดาๆไป ใครๆก็ทำได้

<< โหมดเพ้อเจ้อ >>
อุปมาว่าถ้าหนุ่มนายหนึ่งจะจีบหญิงนางหนึ่งแล้วไซร้
1.      core competency ของฮีอาจจะเป็นความหน้าหล่อเกาหลี ขาวใสไร้สิวฝ้า และถ้าหญิงนางนั้นเป็นสาวน้อยบ้านักร้องเกาหลีที่แดนซ์กระจาย ความหล่อของฮีก็จะแมตช์กับ key success factor ซึ่งจะส่งผลให้ฮีมีโอกาสจีบหญิงนางนั้นติดได้ แต่ถ้าหญิงนางนั้นเกิดชอบแบบบ้านๆ ดิบเถื่อน ตบจูบๆ นั่นก็หมายความว่า core competency กับ key success factor ไม่แมตช์กัน โอกาสจีบติดก็น้อย
2.      หนุ่มนายนั้นอาจเลือกไปเข้าคลาสแดนซ์เพื่อให้โดนใจหญิงนางนั้นมากขึ้นไปอีก แสดงว่า value chain ของหนุ่มนายนั้นมีความสำคัญต่อ competitive advantage แต่ถ้าหนุ่มนายนั้นรักการเรียน สมัครเรียนอ.อุ๊ อ.ปุ๊ เดอะเบรน ล้านแปด value change นั้นอาจจะไม่มีผลต่อ competitive advantage ซักเท่าไหร่ (แต่มันสำคัญกับชีวิตน้องมากกว่ามั้ย)
3.      แต่ปรากฏว่า ใครๆก็เรียนแดนซ์กันได้ง่ายๆ เต้นคัฟเวอร์กันกระจาย แสดงว่า core competency ของหนุ่มนายนั้นเลียนแบบได้ไม่ยาก อันนี้คู่แข่งอาจจะตามทันได้ หรือบางทีคู่แข่งอาจจะไปทำหน้าที่เกาหลีให้เกาหลียิ่งกว่าได้

ก่อนจะจบเรื่อง competitive analysis ก็ทิ้งท้ายไว้ 2 ประเด็นคือ
1.       ถึงบริษัทจะเลือกแข่งด้านราคาแต่สินค้าก็ต้องมีคุณภาพในระดับนึง สินค้าราคาถูกเหมือนขี้แต่ใช้สามวันเจ๊งนี่ก็คงขายไม่ออก ในทางกลับกัน สินค้าคุณภาพเลิศเลอ แต่ราคาแพงเหมือนโคตรทอง ก็คงขายให้คนทั่วไปไม่ได้เหมือนกัน

2.       มันมีบางเคสที่บริษัทไม่เลือกระหว่างราคากับคุณภาพก็ได้ คือสามารถผลิตสินค้าคุณภาพดีเลิศ+บริการชั้นเยี่ยมในราคาที่โคตรถูก ตัวอย่างเช่นรถโตโยต้าคุณภาพดี(เค้าว่ากันว่านะ)ราคาถูก หรือคอมพิวเตอร์เดล(ลองใช้แล้ว คุณภาพโอเคนะ)ราคาก็ไม่แพง ดังนั้นอย่าไปฝังใจว่าจะต้องเลือกเสมอไป

มาต่อกันในส่วนสุดท้ายของ Strategy Analysis ว่าด้วยเรื่อง Corporate Strategy เลยละกันครับ นี่คือการที่บริษัทเลือกว่า
ก. ฉันจะทำทุกสิ่งอย่างเอง(ภายในกลุ่มบริษัทเดียวกัน)ดีกว่าหรือ
ข. ฉันจะว่าจ้างบริษัทอื่น(ที่ไม่ได้อยู่ในกลุ่มเดียวกัน)มาทำให้ดีกว่า

ยกตัวอย่างเช่น ถ้าบริษัท(หรือกลุ่มบริษัทก็ได้)ผลิตสินค้าเอง ขายเอง ให้บริการหลังการขายเองด้วย อันนี้คือเลือกที่จะทำเองตั้งแต่ต้นจนจบ แต่บริษัทอาจจะคิดแล้วว่า เออ จ้างคนอื่นมาให้บริการหลังการขายดีกว่านะ ไม่ต้องมานั่งปวดหัวกับลูกค้าขี้วีน ดังนั้น บริษัทก็อาจจะทำแค่ผลิต+ขาย แล้วจ้างบริษัทอื่นในตลาดมาจัดการเรื่องการให้บริการหลังการขายก็ได้

การทำธุรกิจกันเองภายในกลุ่มจะดีกว่า ก็ในกรณีที่มีต้นทุน(transaction cost)ระหว่างกันสูง เช่น
- การบังคับให้ทำตามกฏหมายหรือสัญญาทำได้ยาก
- เข้าถึงข้อมูลที่จำเป็นได้ยาก
- ขาดความมั่นใจในคุณภาพของสินค้า/บริการของอีกฝ่ายนึง

ในกรณีต่างๆเหล่านี้ การทำธุรกิจกันเองในกลุ่มจะสามารถบังคับกะเกณฑ์เรื่องที่จำเป็นต่างๆได้โดยอาศัยอำนาจจากส่วนกลาง แต่ทีนี้ข้อเสียมันก็มี คือการที่บริษัทในกลุ่มทำธุรกิจที่หลากหลายมากเกินไป บางครั้งมันก็ขาดซึ่ง know-how เฉพาะด้านสำหรับแต่ละบริษัท (โดยเฉพาะกลุ่มบริษัทที่อำนาจการตัดสินใจรวมศูนย์มากๆ)

แต่เดี๋ยวก่อน ถ้าโทรมาภายในสิบนาที ปัญหานี้ก็สามารถแก้ไขได้ด้วยโครงสร้างแบบกระจายอำนาจ แต่ทีนี้มันก็จะไปหักล้างข้อดีของการรวมศูนย์อำนาจอีก (พอกระจายอำนาจมากๆเข้า แต่ละบริษัทในกลุ่มก็อาจจะให้ความสำคัญกับผลประโยชน์ของบริษัทเองมากกว่าที่จะมองภาพรวมของทั้งกลุ่มบริษัท)

เป็นอันว่าจบบทที่สองแต่เพียงเท่านี้ เจอกันครั้งหน้าที่บทที่สามเลยครับ

วันพุธที่ 13 พฤศจิกายน พ.ศ. 2556

Steps to Initiate Django project in Eclipse

1. create project folder
cd ~/workspace
django-admin.py startproject myproject
cd myproject
python manage.py startapp myapp


<< result >>
~/workspace
   myproject
      myproject
         __init__.py
         settings.py
         urls.py
         wsgi.py
      manage.py
      myapp
         __init__.py
         models.py
         views.py
         tests.py


2. create project in Eclipse
Eclipse menu > File > New > PyDev Project
   Project name = myproject
   Don't configure PYTHONPATH <-- default settings
   Next >> Finish

<< result >>
myproject and myapp icon as folder


3. initialize project in Eclipse
Eclipse menu > Project > Properties > PyDev - PYTHONPATH > click "Add Source Folder"
   select "myproject" root folder

<< result >>
myproject and myapp icon as package

Eclipse PyDev Project Explorer > right-click package myapp > New > PyDev Package
   Source Folder = /myproject
   Name = myapp.models
repeat to create package myapp.views, myapp.utils


4. create database for project
   4.1 log in to MySQL as root
        mysql -h localhost -u root -p'rootpassword'
   4.2 create database with default character set and collation
        CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
   4.3 create user and grant privileges
        CREATE USER 'django_dbuser'@'%' IDENTIFIED BY 'djangodbpassword';
        GRANT ALL ON mydb.* to 'django_dbuser'@'%';
        CREATE USER 'django_dbuser'@'localhost' IDENTIFIED BY 'djangodbpassword';
        GRANT ALL ON mydb.* to 'django_dbuser'@'localhost';



5. modify DATABASES in settings.py for project database, e.g.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'mydb',            # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': 'django_dbuser',
        'PASSWORD': 'djangodbpassword',
        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}



6. modify INSTALLED_APPS in settings.py to use south
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'south',
)



7. syncdb
  python manage.py syncdb

วันพุธที่ 23 ตุลาคม พ.ศ. 2556

Strategy Analysis - สรุปความจากหนังสือ Business Analysis & Valuation บทที่ 2 ตอนที่ 2

ชื่อเต็มๆคือ Business Analysis & Valuation Using Financial Statements ตำราเทพของอาจารย์Palepu, Healy และ Bernard

เล่มที่อ่านเป็น Second Edition ซึ่งมันก็เก่าประมาณนึงแล้ว (ตอนนี้มันปาไปจะ 5th Edition แล้ว ถ้ามีPDFก็ขอด้วยนะ จุ้บๆ) เนื้อหาอาจจะไม่อัพเดทบ้างอะไรบ้าง คนสรุปก็ไม่ได้เก่งบัญชี ผิดพลาดคลาดเคลื่อนประการใดก็ช่วยชี้แนะด้วยนะคร้าบ

หลังจากตอนที่แล้วเราสรุปกันเรื่อง Strategy Analysis >> Industry Analysis ซึ่งใช้ Five Forces ในการวิเคราะห์ และอธิบายถึง Forces 3 ตัวแรกคือ 
(1) คู่แข่งขันเดิมในตลาด
(2) คู่แข่งใหม่ๆที่จะเข้ามา และ
(3) สินค้าทดแทน
สามปัจจัยนี้เป็นตัวกำหนดว่า ในอุตสาหกรรมนั้นๆมีโอกาสทำกำไรได้มากน้อยแค่ไหน อีกสองปัจจัยที่เหลือคือ
(4) อำนาจการต่อรองของลูกค้า
(5) อำนาจการต่อรองของซัพพลายเออร์
จะเป็นตัวกำหนดว่า โอกาสตรงนั้นใครจะได้ไประหว่างลูกค้าของเรา บริษัทเรา หรือว่าซัพพลายเออร์ของเรา

อำนาจการต่อรองของลูกค้าจะขึ้นกับสองปัจจัยย่อยๆอีกคือ 
a) price sensitivity คุณลูกค้าสนใจเรื่องราคาหรือเปล่า
คุณลูกค้าสนใจเรื่องราคาหรือเปล่านั้นก็ขึ้นกับว่า
-         สินค้าที่เราขายให้นั้นมีความแตกต่างจากเจ้าอื่นหรือเปล่า
-         switching cost ของลูกค้าสูงหรือเปล่า
-         ราคาของสินค้าเราต่อโครงสร้างต้นทุนของลูกค้า
ถ้าสินค้าเราเป็นต้นทุนส่วนใหญ่ของลูกค้าละก็ ลูกค้าก็จะสนใจที่จะลดต้นทุนส่วนนี้แล้วก็จะต่อราคาสะบั้นหั่นแหลกแน่นอน แต่ถ้าสินค้าเราเป็นแค่ต้นทุนเสี้ยวเล็กๆของลูกค้าแล้ว ราคาสินค้าเราจะแพงนิดแพงหน่อย ใครที่ไหนจะมาสนใจ
-         สินค้าเรามีความสำคัญสำหรับลูกค้าหรือเปล่า
แน่นอนว่าลูกค้าเราก็ซื้อของจากเราไปผลิตของขายของเค้าอีกทีนึง (ไม่ได้ซื้อไปทิ้งทะเล) ดังนั้น ถ้าสินค้าของเรามีส่วนชี้เป็นชี้ตายเรื่องคุณภาพหรือความน่าเชื่อถือของสินค้าของลูกค้า(งงมะ) ถึงราคาเราจะแพงไปหน่อย แต่ถ้าทำให้สินค้าของลูกค้าดูดีมีคุณภาพ มันก็โอเค
b) bargaining power คุณลูกค้ามีอำนาจในการต่อรองหรือเปล่า
ถึงคุณลูกค้าจะสนใจเรื่องราคาและยอมลงทุนลงแรงต่อราคาหรือหาเจ้าที่ให้ถูกที่สุด แต่ลูกค้าจะมีอำนาจพอที่จะต่อรองกับเราหรือไม่นั้น ก็ขึ้นกับว่า
-         มีคนขายของเหมือนเราเยอะหรือเปล่า
-         ลูกค้าซื้อของเราเยอะๆหรือเปล่า (ลูกค้าสำคัญกับรายได้ของเราแค่ไหน)
-         มีสินค้าอื่นที่ใช้แทนสินค้าเราหรือเปล่า
-         switching cost ของลูกค้าสูงหรือเปล่า
-         สินค้าเรามีความสำคัญสำหรับลูกค้าหรือเปล่า

ตัวอย่างในหนังสือพูดถึงนักบินกับสายการบิน โดยมองว่าสายการบินเป็นลูกค้า ในกรณีนี้ นักบินโคตรสำคัญสำหรับสายการบินมาก (ไม่มีนักบินเครื่องบินก็บินไม่ได้ นักบินห่วยๆก็อันตราย เครื่องบินตกเสียชื่อเสียงและจะวุ่นวายกันไปหมด) ดังนั้น นักบินสำคัญกับสายการบินมาก ดังนั้น นักบินมีอำนาจต่อรองสูงกว่า ดังนั้น นักบินได้เงินเยอะ - -;
จบเรื่อง five force และ industry analysis แค่นี้ อย่างงว่า อ้าว แล้วอันสุดท้ายเรื่องอำนาจการต่อรองของซัพพลายเออร์หายไปไหน เพราะจะเป็นเรื่องระหว่างลูกค้า.vs.บริษัท หรือบริษัท.vs.ซัพพลายเออร์มันก็ครือๆกันนั่นแล
เสริมเรื่องจุดอ่อนของ industry analysis อีกนิดนึงว่า การตีกรอบว่า industry นั้นเอาแค่ไหนมีความสำคัญมาก เพราะจะมีผลกับผู้เล่นในตลาดว่ามีมากน้อยแค่ไหน ถ้าตีกรอบ industry ผิด ผลการวิเคราะห์ก็อาจจะแตกต่างออกไปเลย

เดี๋ยวคราวหน้ามาต่อเรื่อง Competitive Positioning ครับ

วันจันทร์ที่ 21 ตุลาคม พ.ศ. 2556

Passing Request from AngularJS to Django

transform POST data before send from Angular to Django (with array of object)

// NOTE: this 2 lines for Django to receive POST data
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
$httpProvider.defaults.transformRequest = function(data) {
   if (data === undefined) {
      return data;
   }
   // NOTE: if transform this way -> at Django use json.loads(request.body)
   // can support array of object (no need to use getlist() at Django side)
   return JSON.stringify(data);
   // NOTE: if transform this way -> at Django use request.POST['key']
   // array of object will be sent with key like 'rows[10][id]', 'row[10][revenue]'
   // need to parse at Django side
// return $.param(data);
}

Passing Django's CSRF token through AngularJS

option 1:
var csrf_token = $('input[name="csrfmiddlewaretoken"]').val();
$http.post("/import_actual_simple_xls", postData, {
    headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', "X-CSRFToken" : csrf_token},
}).success(function(data, status, headers, config) {
    //other things to do when success

    ...
});

option 2:
ImportControllers.config(['$httpProvider', function($httpProvider) {
    // NOTE: this 2 lines for Django's csrf_token   

    $httpProvider.defaults.xsrfCookieName = 'csrftoken';
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
}]);

AngularJS - Any way for $http.post to send request parameters instead of JSON?

When post data using AngularJS' $http or $http.post(),
at Django side, request.POST is an empty dict but request.body has JSON string.

Use method in this page to transform request data JSON string --> request data parameter,
e.g.
{"param1":"value1","param2":"value2","param3":"value3"} --> param1=value1&param2=value2&param3=value3

Set up global transformRequest function:

var app = angular.module('myApp');

app.config(function ($httpProvider) {
    $httpProvider.defaults.transformRequest = function(data){
        if (data === undefined) {
            return data;
        }
        return $.param(data);
    }
});

Sample non-global transformRequest per call:

var transform = function(data){
    return $.param(data);
}


$http.post("/foo/bar", requestData, {
    headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
    transformRequest: transform
}).success(function(responseData) {
    //do stuff with response

    ....});

For Hidden Field to Send Form Data

use <input name="stock_code" type="hidden" value="{{ actual.code }}">

Excel File Upload

After spending THE WHOLE DAY surfing internet, trying to find the way to send form data (including uploaded file) from AngularJS front-end to Django backend, here are what I get.
jQuery Form is my HERO.
My solution here is
- use jQuery Form to submit form data and file upload to backend.
- use dataType: 'html' for option passed to jQuery Form (I didn't know why but 'xml' didn't work).
- pass callback function to jQuery Form to update models when got response back.
- in the callback function, use $scope.$apply() to force AngularJS refresh its model after posted.
- no progress bar, no upload multiple files here because I don't need it now, but I really appreciate if you could guide me how to do.
NOTE: an example of upload progress here >> http://jquery.malsup.com/form/progress.html

html part (sample form which has both primitive data (multiplier) and file upload (input_excel))

<div id="div_load_xls" class="user-form col-lg-8" ng-app='myApp' ng-controller='importXlsController'>

    <form id="frm_load_xls" ng-submit='submitXls()' class="form-horizontal" method="post">

    {% csrf_token %}

        <input id="id_multiplier" name="multiplier" type="text" />

        <input id="id_input_excel" name="input_excel" type="file" />

        <input type="submit" name="validate_simple_actual" value="Validate" />

    </form>

</div>


Javascript part


<script src='/static/lib/js/angular-1.0.8.js'></script>    
<script src='/static/lib/js/jquery.form.js'></script>    

<script language="javascript" type="text/javascript">

    // get CSRF token from form's hidden field (generated from {% csfr_token %})

    var csrf_token = $('input[name="csrfmiddlewaretoken"]').val();

    // define AngularJS module and controller
    var myAppModule = angular.module('myApp', []);
    myAppModule.controller('importXlsController', importXlsController);

    // controller definition
    function importXlsController($scope, $http) {
        // function called when click submit button (ng-submit in the above form)
        $scope.submitXls = function() {

         // submit options
         var options = {
            dataType: 'html', // don't know why, but I used 'xml' and it didn't work
            url: '/import_actual_simple_xls', // to Django backend
            success: $scope.showResponse // callback function to process response defined below
         }

         // submit form data
         $('#frm_load_xls').ajaxSubmit(options);
      };

      // callback function to process response
      $scope.showResponse = function(responseText, statusText, xhr, $form) {
          // update model fields
          // use $apply to force AngularJS view to refresh
          $scope.$apply( function() {
               $scope.messages = jQuery.parseJSON(responseText);
         });
        };
    };

</script>


django backend (urls.py omitted)

def import_actual_simple_xls(request):
    // read primitive form data

    mul = request.POST.get('multiplier', None)

    if mul:
        messages.append('multiplier = %s' % mul)
    else:
        messages.append('No multiplier')

    // get file uploaded (handle error if needed)
    input_excel = request.FILES.get('input_excel', None)
    if not input_excel:
        messages.append('No Xls')
    else:
        book = xlrd.open_workbook(file_contents=input_excel.read())
        if ('Question List' in book.sheet_names()):
            messages.append('xls OK')
        else:
            messages.append('xls NG')
    return JSONResponse(messages)

วันพุธที่ 16 ตุลาคม พ.ศ. 2556

Strategy Analysis - สรุปความจากหนังสือ Business Analysis & Valuation บทที่ 2 ตอนที่ 1

ชื่อเต็มๆคือ Business Analysis & Valuation Using Financial Statements ตำราเทพของอาจารย์Palepu, Healy และ Bernard

เล่มที่อ่านเป็น Second Edition ซึ่งมันก็เก่าประมาณนึงแล้ว (ตอนนี้มันปาไปจะ 5th Edition แล้ว ถ้ามีPDFก็ขอด้วยนะ จุ้บๆ) เนื้อหาอาจจะไม่อัพเดทบ้างอะไรบ้าง คนสรุปก็ไม่ได้เก่งบัญชี ผิดพลาดคลาดเคลื่อนประการใดก็ช่วยชี้แนะด้วยนะคร้าบ

มาต่อกันที่บทที่ 2 เรื่อง Strategy Analysis ครับ
กลยุทธของบริษัทแบ่งได้เป็น 3 เรื่องหลักๆ
1.       industry choice คือ บริษัทเลือกที่จะทำธุรกิจในตลาดไหน
2.       competitive positioning คือ บริษัทเลือกที่จะสู้กับคู่แข่งแบบไหน
3.       corporate strategy คือ บริษัทเลือกที่จะลุยเดี่ยวหรือสู้แบบเป็นกลุ่ม

Industry Analysis

การวิเคราะห์ในเรื่องแรกคือ industry analysis จะวิเคราะห์โดยใช้ five forces ซึ่งมีปัจจัยหลัก 5 ตัวที่สามารถแบ่งย่อยเป็น 2 กลุ่มได้ กลุ่มแรกคือปัจจัยที่เป็นตัวตัดสินว่ามีโอกาสทำกำไรได้มากน้อยแค่ไหนในตลาด หรือพูดอีกแบบนึงว่าในตลาดนั้นแข่งขันกันมากน้อยแค่ไหน(ถ้าแข่งกันเลือดสาด โอกาสทำกำไรได้เยอะๆก็น้อยลง) ปัจจัยในกลุ่มนี้ได้แก่
1.       ผู้เล่นหน้าเดิมๆในตลาด
2.       ผู้เล่นหน้าใหม่ๆที่อาจจะเข้ามา
3.       สินค้าทดแทนที่จะมาแย่งส่วนแบ่งตลาด
ส่วนปัจจัยกลุ่มที่สองจะเป็นตัวกำหนดว่า แล้วไอ้เจ้ากำไรเยอะๆเนี่ย ใครจะเป็นคนได้ไปมากน้อยแค่ไหน อันนี้ก็ขึ้นกับอำนาจการต่อรองของผู้เล่นในตลาด ซึ่งนอกจากตัวบริษัทแล้วก็จะมี
4.       อำนาจการต่อรองของผู้ซื้อ
5.       อำนาจการต่อรองของผู้ขาย
เราจะไล่ดูไปทีละข้ออย่างละเอียด (เพราะหนังสือเล่มนี้อธิบายเรื่อง five forces ได้ดีที่สุดเท่าที่เคยอ่านมาเลย)

เริ่มจากข้อแรก เรื่องผู้เล่นหน้าเดิมๆในตลาด แน่นอนว่า ถ้ามีผู้เล่นเยอะ ตลาดนั้นก็จะแข่งกันแรง จะขายแพงๆก็คงลำบาก กำไรก็จะลดน้อยลงตามไปด้วย ทีนี้ ผู้เล่นในตลาดนั้นจะถือว่าเยอะหรือน้อยก็ขึ้นกับหลายๆปัจจัยอีก เช่น
-         ตลาดโดยรวมยังโตอยู่มั้ย
ถ้าตลาดโดยรวมยังโตอยู่ คู่แข่งก็ไม่จำเป็นต้องแย่งส่วนแบ่งการตลาดกันเอง ดังนั้นการแข่งขันก็จะไม่รุนแรงนัก
-         มีบริษัทที่เป็นเจ้าใหญ่ๆหรือเปล่า
ถ้ามีบริษัทที่เป็นเจ้าใหญ่ๆ 2-3 เจ้า บริษัทพวกนั้นก็จะเป็นผู้กำหนดราคา ดังนั้นการแข่งกันตัดราคาก็จะน้อย
-         สินค้ามีความแตกต่างแค่ไหน switching cost ของลูกค้าสูงหรือต่ำ
ถ้าสินค้ามีความแตกต่างกันพอสมควร หรือ switching cost สูง การจะเปลี่ยนยี่ห้อหรือเปลี่ยนบริษัทก็จะยาก การตัดราคาเพื่อแย่งลูกค้ากันก็จะน้อย

ข้างบนนั้นแต่ละข้อเขียนด้วยตัวสีน้ำเงิน คือถ้ามีปัจจัยพวกนี้ ก็จะดีกับบริษัทในตลาด แต่ข้อต่อๆไปที่เป็นตัวสีแดงคือ ถ้ามีก็ตัวใครตัวมัน
-         เป็น scale/learning economy หรือเปล่า
scale economy คือ ยิ่งผลิตเยอะยิ่งต้นทุนต่ำ ส่วน learning economy คือยิ่งผลิตเยอะยิ่งมี know-how มาก ยิ่งต้นทุนต่ำ ดังนั้น ถ้ามีลักษณะเหล่านี้ การที่มี market share เยอะๆก็จะดี ดังนั้น สงครามราคาก็จะเกิดขึ้นเพื่อแย่ง market share กัน
-         ต้นทุนคงที่สูงหรือเปล่า
ถ้าต้นทุนคงที่สูง หมายความว่ายิ่งผลิตเยอะ ต้นทุนต่อหน่วยก็จะยิ่งต่ำ อันนี้ก็เหมือนข้อข้างบนคือ market share เยอะจะได้เปรียบ ดังนั้น สงครามราคาก็จะตามมา
-         มีกำลังการผลิตมากเกินความต้องการหรือเปล่า
แน่นอนว่าถ้ากำลังการผลิตมากเกิน ก็จะแย่งกันผลิต แย่งกันขาย แย่งกันตัดราคาอยู่แล้ว (ยังไงก็ดีกว่าปล่อยเครื่องจักรทิ้งไว้เฉยๆละมั้ง)
-         อุปสรรคในการออกจากตลาด (barrier of exit)
ถ้าการออกจากตลาดเป็นเรื่องยาก ถึงบริษัทจะไม่ได้กำไรเท่าไหร่นักก็คงจะทู่ซี้ทำกันไป ทำให้จำนวนคู่แข่งไม่ค่อยลดลง การแข่งขันก็จะรุนแรง

ต่อด้วยข้อที่สอง เรื่องผู้เล่นหน้าใหม่ๆที่จะเข้ามาในตลาด แน่นอนว่า ถ้าตลาดนั้นทำกำไรได้ดี๊ดี ใครที่เงินถึงก็อยากจะเข้ามาทำบ้าง คู่แข่งในตลาดก็จะเยอะขึ้นเรื่อยๆ กำไรที่เคยดี๊ดีก็จะดีน้อยลง ทีนี้ การที่จะเข้าสูตลาดจะยากหรือง่ายก็ขึ้นกับหลายๆปัจจัยอีก เช่น
-         economy of scale
ปัจจัยนี้จะส่งผลแตกต่างจาก five force ข้อแรก(ซึ่งเป็นตัวสีแดง) ในกรณีนี้ ถ้าตลาดมี economy of scale ผู้เล่นหน้าใหม่จะเข้ามาได้ยาก เพราะถ้าเข้ามาโดยเริ่มต้นด้วยไซส์เล็กๆ ต้นทุนก็จะสูง จะขายสู้เจ้าเดิมๆไม่ได้ แต่ถ้าจะเข้ามาด้วยไซส์ใหญ่ๆเลย ก็ต้องลงทุนเยอะ เงินไม่หนาจริงไม่มีสิทธิ์ economy of scale ในที่นี้อาจจะเป็นเรื่อง R&D ที่ต้องมีการวิจัยพัฒนาเยอะกว่าจะได้ขาย หรือต้นทุนในการโฆษณา (ต้องโฆษณาหนักๆกว่าจะติดตลาด) หรือต้องลงทุนในโรงงานและอุปกรณ์สูงๆ เป็นต้น
-         เริ่มก่อนได้เปรียบรึเปล่า
ถ้าเป็นตลาดที่ผู้เล่นที่เข้ามาก่อนได้เปรียบ เช่น
o   สามารถตั้งมาตรฐานของสินค้าได้
o   ต้องแย่ง resource ที่มีจำกัด เช่น supplier, distribution channel, license เป็นต้น
o   มี learning economy
o   switching cost ของลูกค้าสูง
ถ้าเป็นแบบนี้ พวกที่ตามเข้ามาทีหลังก็จะเสียเปรียบ ดังนั้นก็จะไม่ค่อยมีผู้เล่นหน้าใหม่เข้ามามากนัก
-         การเข้าถึงช่องทางการจัดจำหน่ายหรือการสร้างความสัมพันธ์กับลูกค้ายากหรือเปล่า
ถ้ามันยากหรือต้องใช้เวลา ผู้เล่นที่เข้ามาทีหลังก็จะเสียเปรียบ (คล้ายๆกับข้อบนเนอะ คือมาก่อนได้เปรียบ) ตัวอย่างเช่น การขายรถที่ต้องมี dealer ช่วยขาย หรือสินค้าที่ต้องแย่งพื้นที่จัดวางในร้าน หรือบริการที่ต้องอาศัยความไว้วางใจของลูกค้า (บริษัทที่ปรึกษาต่างๆก็น่าจะใช่)
-         อำนาจการกีดกันของกฏหมายข้อบังคับ
อย่างเช่นพวกลิขสิทธิ์ ใบอนุญาตต่างๆ ตัวอย่างธุรกิจที่มีก็เช่นพวกสื่อวิทยุโทรทัศน์ ธุรกิจสื่อสาร โรงพยาบาล เป็นต้น

ข้อต่อมา เรื่องสินค้าทดแทนที่จะเข้ามาแย่งลูกค้าในตลาด ทำให้ตลาดเล็กลง ผู้เล่นที่เคยขายได้สบายๆก็จะเริ่มลำบากขึ้น สินค้าที่จะเข้ามาทดแทนได้นั้น ไม่จำเป็นต้องหน้าตาเหมือนกัน แต่ขอให้ทำหน้าที่แทนกันได้ก็โอเค เช่น รถเช่าอาจจะเป็นสินค้าทดแทนของตั๋วเครื่องบิน(กรณีที่บินระยะสั้นๆ) ขวดพลาสติกเป็นสินค้าทดแทนของกระป๋อง หรืออาจจะมาในรูปของเทคโนโลยีใหม่ที่ทำให้ลูกค้าใช้สินค้าเราน้อยลงหรือไม่ใช้เลย (อันนี้ซวย)
แต่ก็อย่าได้กังวลไป เพราะถึงจะมีสินค้าที่สามารถแทนกันได้ แต่ถ้าราคามันไม่ได้ต่างกันมาก อันนี้ก็ไม่มีผลกระทบมากเท่าไหร่ และปัจจัยอีกอันที่สำคัญกว่าคือ แล้วลูกค้าอยากจะเปลี่ยนไปใช้สินค้านั้นหรือเปล่า ตัวอย่างเช่น เสื้อผ้าโหลก็เป็นสินค้าทดแทนของเสื้อแบรนด์ดังเหมือนกันในแง่ที่ว่ามันก็เอามาใส่ได้เหมือนกัน แต่ลูกค้าบางส่วนอาจจะเลือกแบรนด์เนมเพราะใส่แล้วเท่ ดูดี อะไรก็ว่ากันไป (ดังนั้น ถ้ามองในแง่ของ feature ที่จับต้องไม่ได้ เช่นความดูดีมีชาติตระกูล เสื้อโหลก็คงไม่ใช่สินค้าทดแทนของเสื้อแบรนด์เนมละมั้ง)
ทวนอีกครั้งว่า five force ทั้ง 3 ข้อที่อธิบายมานั้น เป็นปัจจัยที่จะบอกเราว่า ตลาดนั้นมีโอกาสทำกำไรสูงๆได้แค่ไหน ซึ่งสรุปว่า ถ้าตลาดแข่งกันดุ(ด้วยผู้เล่นหน้าเดิมหรือหน้าใหม่หน้าไหนๆก็แล้วแต่)หรือตลาดหดตัวลง(ด้วยสินค้าทดแทน) โอกาสจะได้กำไรสูงๆก็น้อย

เดี๋ยวคราวหน้ามาต่อส่วนที่เหลืออีก 2 ตัวใน five forces ครับ