แต่เขาก็ยังสอบตกกันเหมือนเดิม…..

ตัดจากข้อความในเฟซบุ๊คของครูคริส

What else does a teacher have to do to make students learn and truly pass??? ครูคริสพยายามทำทุกอย่างที่จะทำให้เขาเก่งขึ้นแต่เขาไม่แคร์กันเลย แล้วทำไมพวกที่เขียนด่าผมแต่มีข้อมูลไม่ครบหรือถูกต้องเกี่ยวกับตัวผมและสิ่งที่ผมพยายามทำดีไม่ไปว่าพวกนักเรียนที่ไม่ตั้งใจเรียนกันครับ หรือคุณคิดว่าประเทศเราจะเจริญถ้ามีนักเรียนแบบนี้เยอะๆ

ดังนั้นอย่ามัวแต่โทษผม โทษครู โทษระบบการสอน โทษกระทรวงศึกษา……แต่เราต้องโทษนักเรียนไทยจำนวนมากเกินไปในสมัยนี้ที่ไม่แคร์การเรียนเพื่อที่จะหาความรู้และความสามารถเพื่อพัฒนาตัวเองแต่เขายังอยากได้งานดีๆ ทำและมีเงินใช้เยอะๆ และโกรธเวลามีคนมาหาว่าโง่…… ดังนั้นที่ผมเคยลงของโพสต์ทูเดย์เกี่ยวกับเด็กไทยจำนวนมากเมื่อหลายเดือนที่แล้วและมีคนไม่พอใจกันบ้าง ผมยังคงยืนยันเหมือนเดิมครับ

นักเรียนดีๆ มีเยอะแต่นักเรียนไม่ดีมีเยอะกว่าครับสมัยนี้ เราต้องช่วยกันเปลี่ยน balance ตรงนี้กันจริงๆ แล้วครับถ้าเราอยากเห็นประเทศไทยเจริญ

ปล ไม่ต้องพยายามหานะว่ามหาวิทยาลัยไหน เพราะมันเกิดขึ้นเกือบทุกที่ในประเทศไทย ที่ผมเขียนไม่ได้สนุกกับการมาว่าแต่เป็นห่วงอนาคตของชาติอย่างแท้จริงครับ

ช่องทางการเรียนสมัยนี้มีมากมายครับ ซื้อแท็บแล็ตถูกๆมาดูวันละคลิป ปีหนึ่งก็สามร้อยกว่าคลิป เก่งเลย (ดูคลิปที่ Khan Academy, coursera, TED, ฯลฯ)

การเรียงข้อมูลใน Java 8

การเรียงข้อมูลใน Java 8 เขียนสั้นลงและอ่านง่ายขึัน

ตัวอย่างถัดไปแสดงการเรียงข้อมูลพนักงานโดยใช้คุณสมบัติ lambda expression

โดยในส่วนแรกใช้ stream และส่วนถัดไปใช้ Collections เพื่อนเก่า

import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class Test {

  public static void main(String[] args) {
    List<Person> staffs = new ArrayList<>();
    staffs.add(new Person("Tom", 23));
    staffs.add(new Person("Ann", 32));
    staffs.add(new Person("Roy", 10));

    System.out.println(staffs);
    Object[] objects = staffs.stream().sorted((p1, p2) -> p1.getAge() - p2.getAge()).toArray();
    System.out.println(java.util.Arrays.toString(objects));

    System.out.println("-----------------");

    System.out.println(staffs);
    Collections.sort(staffs, (p1, p2) -> p1.getAge() - p2.getAge());
    System.out.println(staffs);
  }
}

ผลการทำงานคือ

[Person{name=Tom, age=23}, Person{name=Ann, age=32}, Person{name=Roy, age=10}]
[Person{name=Roy, age=10}, Person{name=Tom, age=23}, Person{name=Ann, age=32}]
-----------------
[Person{name=Tom, age=23}, Person{name=Ann, age=32}, Person{name=Roy, age=10}]
[Person{name=Roy, age=10}, Person{name=Tom, age=23}, Person{name=Ann, age=32}]
public class Person {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  @Override
  public String toString() {
    return "Person{" + "name=" + name + ", age=" + age + '}';
  }
}

สอนเขียน Java

หากจะนำข้อความไปใช้ ต้องแสดงที่มา และห้ามใช้ในเชิงพาณิชย์

เขียนจาวาหาค่าผลรวมของอาร์เรย์โดยไม่ต้องวนลูป

ใช้คลาส IntStream หาค่า sum ของอาร์เรย์ a โดยไม่ต้องวนลูป (Java 8)

IntStream.of(a).sum()
import java.util.stream.IntStream;

public class Test {
  public static void main(String[] args) {
    int[] a = {3,2,3,5,7};
    int sum;
    
    // calculate the total
    sum = IntStream.of(a).sum();
    System.out.println(sum);    // 20
    
    //  filter then calculate the total
    sum = IntStream.of(a).filter(i -> i != 3).sum();
    System.out.println(sum);    // 14
    
    // sort
    IntStream.of(a).sorted().forEach(System.out::println);
    
    // map
    a = IntStream.of(a).map(e -> e+1).toArray();
    System.out.println("a = " + java.util.Arrays.toString(a));  // a = [4, 3, 4, 6, 8]

    // sum by reduce
    sum = IntStream.of(a).reduce(0, (m,n) -> m+n);
    System.out.println(sum);    // 25
  }
}

interface Collection มีเมธอด stream ซึ่งนำมาใช้หาผลรวมของบางแอททริบิวท์ได้

import java.util.ArrayList;
import java.util.Collection;

public class Test {
  public static void main(String[] args) {
    Collection<Person> staffs = new ArrayList<>();
    staffs.add(new Person("Tom", 23));
    staffs.add(new Person("Ann", 32));
    staffs.add(new Person("Roy", 10));
    
    int totalAge = staffs.stream().mapToInt(Person::getAge).sum();
    System.out.println(totalAge); // 65
  }
}

สอนเขียน Java

หากจะนำข้อความไปใช้ ต้องแสดงที่มา และห้ามใช้ในเชิงพาณิชย์

Numerical Method using Python

เพจนี้ลิงค์ไปหา source code ของ numerical method ต่างๆที่เขียนโดยใช้ภาษา Python 3 โค้ดเหล่านี้อาจจะมี bug ดังนั้นผมจะไม่รับผิดชอบต่อความเสียหายอันเกิดจากการนำโค้ดเหล่านี้ไปใช้ และถ้าพบ bug ก็ช่วยเมลบอกผมด้วยครับ (uuriter@yahoo.com)

หาราก
Bisection

แก้ระบบสมการ : วิธีตรง
Guassian Elimination
Guassian Elimination with Pivot
Guassian Elimination with Scaled Pivot

แก้ระบบสมการ : วิธีทำซ้ำ
Jacobi
Gauss-Seidel
Successive Over-Relaxation (SOR)

ประมาณค่าในช่วง
Cubic Spline