Grean App Do it Right!!! - Web Application Development Framework, AngularJS, NodeJS, MongoDB,Sass new Web Development Framework
  • GreanApp
  • Docker
  • AngularJS
  • NodeJS
  • .NET Core
  • Network Equipment
  • Server
  • Other
Grean App Do it Right!!! - Web Application Development Framework, AngularJS, NodeJS, MongoDB,Sass new Web Development Framework
GreanApp
Docker
AngularJS
NodeJS
.NET Core
Network Equipment
Server
Other
  • GreanApp
  • Docker
  • AngularJS
  • NodeJS
  • .NET Core
  • Network Equipment
  • Server
  • Other
Server

คำสั่งในการค้นหาไฟล์ขนาดใหญ่เอา 10 ไฟล์ ที่ใหญ่สุด

Find large DIR / File

du -hsx * | sort -rh | head -10

August 2, 2016by adminwp
Server

VM Ware 5 ssh restart Management Service Command

Log in to SSH or Local console as root.
Run these commands:

/etc/init.d/hostd restart
/etc/init.d/vpxa restart

Note: In ESXi 4.x, run this command to restart the vpxa agent:

service vmware-vpxa restart

August 2, 2016by adminwp
Server

Reset Password Azure ด้วย Power Shell ครับ

ทำการค้นหา VM จาก Cloud Service Name และชื่อ VM

$CSName = “”
$VMName = “”
$vm = Get-AzureVM -ServiceName $CSName -Name $VMName

จากนั้นตั้งค่า

$UserName = “”
$Password = “”
$PrivateConfig = ‘{“username”:”‘ + $UserName + ‘”, “password”: “‘ + $Password + ‘”}’
$ExtensionName = “VMAccessForLinux”
$Publisher = “Microsoft.OSTCExtensions”
$Version = “1.*”
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $Version -PrivateConfiguration $PrivateConfig | Update-AzureVM

August 2, 2016by adminwp
Network Equipment, Server

ลองเล่น Windows Server 2016 Technical Preview

Microsoft Windows Server 2016 ลองเล่นดูไปนิดหน่อยสิ่งแรกที่เจอ เลยคือ เครื่องมือหายไปไหนหมดว่า นี่มัน Server นะเฟ้ย
Untitled3

ก็หวังว่าจุดนี้ตอนออกของจริงน่าจะมีทางเข้าถึง Server ง่ายหน่อยนะ

Untitled2

เจ้า Server Management ก็อยู่ใน Start Menuซะลึก

ระบบ SplitScreent และ New Desktop ก็ยังใช้งานได้ดีเหมือน Windows 10

Untitled

Microsoft Edge เป็น Default Browser แต่ก็ยังให้ Internet Explorer มาเพื่อใช้งาน

Untitled4

แต่มีจุดสังเกตุไม่แน่ใจว่ามาจาก Group Policy หรือเปล่าเปิด Browser ไม่ได้ ในการ Remote Desktop ด้วย User ฺBuild-In Administrator ไม่แน่ใจว่าเกี่ยวกับเหตุผลด้าน Security reason หรือไม่ไว้ว่างๆ จะมาไล่ดู

สรุป ข้อดี เหมือน Windows 10 และดูเหมือนจะไวขึ้น ใช้ HD น้อยมากถ้าเทียบกับ 2012
ข้อเสีย เครื่องมือเดิมๆ ถูกยกไปใน Start Menu เสียเวลาหา
เล่นน้อยไปหน่อยเลยไม่รู้มีอะไรอีกหรือเปล่าเพราะหนังสือก็ยังไม่มีให้อ่านมาก

October 4, 2015by adminwp
Server

ตั้งค่า Redis สำหรับ Production Server

redis-300dpi
หลายคนรู้จัก Redis บางคนไม่รู้จัก จริงๆ Redis ก็เปรียบเสมือน Database ประเภทหนึ่ง แต่เรามักเอามาใช้ในงาน เป็น Cache ซะส่วนใหญ่แต่จริงๆ นั้นถ้าเอามาใช้เป็น DB ก็ไม่ได้แปลกอะไรนะครับเพราะมันทำงานได้ดีเลยล่ะ บทความนี้ไม่ได้แนะนำการใช้ Redis แต่เป็นการเอา Redis มาใช้กับ Production นะครับ configuration ที่เป็น Default ที่มากับ Redis นั้นผมไม่ได้กล่าวถึงนะครับเอาเป็นว่าเริ่มกันแบบง่ายๆ เลย นะครับ ปล. บทความนี้ เน้น Redis ทำงานบน Memory นะครับ ไม่ใช้ Dump Physical นะครับเน้นเร็วแต่ถ้า Restart Service ข้อมูลหายนะครับเพราะไม่ได้ Dump DB ลง Disk อันดับแรก ไปหาไฟล์ configuration ให้เจอครับ เหอะๆ ซึ่งปกติอยู่ใน /etc/redis/xxxxxxx ครับ ถ้าไม่รู้ให้ ไปแกะหาแถว /etc/init.d/redisxxxx ครับ
ของผมนี่ไฟล์ /etc/redis/6379.conf อยู่ path นี้เลย

1. TCP backlog = 511
Parameter นี้คือ Socket สูงสุดที่สามารถเชื่อมต่อมายัง Redis ได้ ซึ่งปริมาณนี้บน Production ไม่น่าจะพอเพียงให้ปรับตามใจชอบให้เหมาะกับ Sizing ของ Server คุณเองขนาดที่ผมแนะนำคือ 2500 เหมาะสำหรับ 1000-3000 Concurrent User แต่ค่านี้นั้นจะอิงกับ somaxconn ของ Linux ที่ไฟล์ /proc/sys/net/core/somaxconn แต่เราไม่สามารถไปแก้ไขไฟลนี้ตรงๆ ได้เพราะมันไม่ใช่ physical file ต้องใช้คำสั่ง sysctl โดยทำตามนี้ครับ

Default
1
sudo sysctl -w net.core.somaxconn=2500

2. Disable dump file / maxmemory /
2.1 Disable DB File เพื่อความเร็วในการอ่านเขียนข้อมูลเพราะเราจะไม่ใช้ Disk เป็นตัวเก็บ key/value ของเราโดย ทำการ remark สามบรรทัดด้านล่างนี้

Default
1
2
3
   #save 900 1
   #save 300 10
   #save 60 10000

2.2 maxmemory xx(g) ในส่วนนี้ เราต้องหาขนาดที่เหมาะสมกับ Server เราเช่น เรามี Ram เหลือ จาก Service ปกติเราที่ 10g ก็ให้ใช้ 9g เหลือไว้ให้ตัว redis มันทำงานนิดหน่อยก็พอหรือจะลดกว่านี้ก็ได้ครับ

Default
1
maxmemory 9g

2.3 Policy ในการการ clear key เมือ Ram เต็ม ผมมักแนะนำให้ใช้ volatile-lru ครับตามคุำอธิบายเลย แต่เงื่อนไขว่าคุณต้องมี key ที่มีการ set ค่า expire เข้ามาเก็บนะครับ ตัวอย่างด้านล่างผมใช้ allkeys-lru เพราะข้อมูลของผมมันไม่สำคัญให้่มันสุ่ม clear ตาม algrithm LRU เลยง่ายดีไม่ต้องคิดมากครับ

Default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
# is reached. You can select among five behaviors:
#
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key according to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys-random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations
#
# Note: with any of the above policies, Redis will return an error on write
#       operations, when there are no suitable keys for eviction.
#
#       At the date of writing these commands are: set setnx setex append
#       incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
#       sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
#       zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
#       getset mset msetnx exec sort
#
# The default is:
#
maxmemory-policy allkeys-lru

3. overcommit_memory is set to 0 ถ้าดูใน /var/login/redisxxxx ของคุณถ้าพบข้อความนี้ให้แก้ด่วนเพราะจะทำให้ Cash ได้ เมื่อมีการใช้งาน memory สูงๆ เช่นเกือบมเต็มปริมาณของ Server โดยไปเพิ่ม ข้อความนี้
vm.overcommit_memory = 1 ที่ไฟล์ /etc/sysctl.conf

Default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#
 
#kernel.domainname = example.com
 
# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3
 
##############################################################3
# Functions previously found in netbase
#
 
# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1
 
# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1
 
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
 
# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1
 
 
###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#
vm.overcommit_memory = 1

จากนั้นให้คุณรันคำสั่งนี้เพื่อให้มันทำงานทันที

Default
1
sudo sysctl vm.overcommit_memory=1

4. Transparent Huge Pages (THP) support enabled in your kernel. ถ้าดูใน /var/login/redisxxxx ของคุณถ้าพบข้อความนี้ให้แก้ด่วนเพราะจะทำให้การอ่านข้อมูลของคุณช้าลงได้เพราะ THP ของคุณรองรับไฟล์ขนาดใหญ่เราก็แค่ปิด THP โดยสร้าง Text File ด้วยคำสั่งนี้เพื่อไม่ให้ THP ทำงาน

Default
1
2
sudo bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled

5. THP ต่อเนื่อง เพื่อให้มันทำงานไปตลอดเมื่อมีการ Restart Computer ก็ให้ไปแทรกที่ ไฟล์ /etc/rc.local

Default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo never > /sys/kernel/mm/transparent_hugepage/enabled
exit 0

6. สุดท้ายถ้าคุณลบ logfile ของ redis จากนั้น Restart กลับมาดู log ของ redis ใหม่ซึ่งปกติจะอยู่ที่ /var/log/redis.logxxxxx จะต้องสวยงามแบบนี้ครับเป็นอันว่า Redis พร้อมสำหรับ Production แล้วครับ

Default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.4 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
(    '      ,       .-`  | `,    )     Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
|    `-._   `._    /     _.-'    |     PID: 1516
  `-._    `-._  `-./  _.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'
 
1516:M 16 Sep 16:59:21.224 # Server started, Redis version 3.0.4
1516:M 16 Sep 16:59:21.224 * DB loaded from disk: 0.000 seconds
1516:M 16 Sep 16:59:21.224 * The server is now ready to accept connections on port 6379

ผลสรุป ไม่ว่าคุณจะ Config แบบไหนล้วนแล้วแต่ตามความต้องการของงานนั้นๆ อย่างที่ผมบอกไปว่านี่คือ Configuraion ของ Redis ที่ดีเร็ว แต่เหมาะสำหรับงานที่ไม่ได้มีความสำคัญเพราะว่าไม่ได้ใช้ Disk เก็บ Dump DB ดังนั้นสุดท้ายแล้วแต่ว่าคุณจะเลือกและปรับแต่งแบบไหน ให้เหมาะสมกับ Environment/Resource ที่คุณมีเจอกันใหม่บทความหน้าสวัสดีครับ

September 16, 2015by adminwp
Server

สร้าง Virtual Machine Azure(Linux Ubuntu14.10) โดยสร้างและทำให้สามารถใช้ Reserved IP Address (PowerShell Azure)

สคริปด้านล่างนี้สำหรับ Ubuntu รุ่นล่าสุดตอนนี้นะครับ
คำสั่งไม่ต่างกับ Windows นัก ใครงง แต่ละบรรทัดไปดูบทความที่แล้วได้เลยนะครับ เพราะต่างกันแค่ตรง ProvisioningConfig แค่นะครับ

$serviceNamew = “cloudservicename”
$username = “superadmin”
$password = “myadmin100$”
$reservedIP = “ReservedIP”
$vmName = “GreanAppVM”
$vmSize = “Small”
$imageFamily = “Ubuntu Server 14.10”

$imageName = Get-AzureVMImage |
where { $_.ImageFamily -eq $imageFamily } |
sort PublishedDate -Descending |
select -ExpandProperty ImageName -First 1

$vm1 = New-AzureVMConfig -Name $vmName -InstanceSize $vmSize -ImageName $imageName |
Add-AzureProvisioningConfig -Linux -LinuxUser $username -Password $password

New-AzureVM -ServiceName $serviceName -Location $location -VMs $vm1 -ReservedIPName $reservedIP

March 31, 2015by adminwp
Server

สร้าง Virtual Machine Azure(Windows) โดยสร้างและทำให้สามารถใช้ Reserved IP Address (PowerShell Azure)

ต่อจากสองตอนที่แล้วเรื่องการ Authen และการสร้าง Reserved เราก็มาสู่ขั้นตอนการสร้าง VM นะครับ
ในตอนนี้จะเป็นการสร้าง VM ของ Windows 2012 R2 Datacenter เป็น Edition ที่ดีสุดในตอนนี้สำหรับ VM Windows 2012

กำหนด Cloud Service Name

Default
1
$serviceName  = "[cloud service name]"

กำนหด User/Pass สำหรับ VM ใหม่นี้

Default
1
2
$username = "[user name]"
$password = "[password]"

กำหนด Location ของ VM

Default
1
$location = "Southeast Asia"

กำหนดชื่อของ ReservedIP โดยอ้างอิงจากบทความที่แล้ว ถ้าลืมว่าตั้งอะไรกลับไปดูหรือใช้คำสั่ง Get-AzureReservedIP เพื่อดูรายการ ReservedIP

Default
1
$reservedIP = "WhatEverIPName"

กำหนดรายละเอียดของ VM

Default
1
2
$vmName = "WebServerVM"
$vmSize = "Small"

ต่อไปเราก็ค้นหา Image Object จาก Template ที่มีให้ของ Microsoft โดยเอาชื่อไปค้นหา

Default
1
2
3
4
5
$imageFamily = "Windows Server 2012 R2 Datacenter"
$imageName = Get-AzureVMImage |
                 where { $_.ImageFamily -eq $imageFamily } |
                 sort PublishedDate -Descending |
                 select -ExpandProperty ImageName -First 1

กำนหนด VM Configuration ก่อนสร้างอีกรอบ

Default
1
2
3
4
$vm1 = New-AzureVMConfig -Name $vmName -InstanceSize $vmSize -ImageName $imageName |
        Add-AzureProvisioningConfig -Windows `
                                    -AdminUsername $username `
                                    -Password $password

ลงมือสร้าง VM หลังจาก Run คำสั่งด้านล่างเสร็จ เข้าไป ที่ Azure Portal เพื่อตรวจสอบได้เลยทันที่ครับ

Default
1
2
3
New-AzureVM -ServiceName $serviceName -Location $location `
            -VMs $vm1 `
            -ReservedIPName $reservedIP

เป็นอันเสร็จสิ้นครับ สามบทความพิเศษในการใช้งาน Azure PowerShell Command สำหรับสร้าง VM แบบจอง VM ถ้าใครสนใจ Azure Cloud ก็อย่าลืมฝึกฝน Skill ในการใช้ Power Shell ด้วยนะครับ อีกอย่างตอนนี้มีทางเลือก azure-cli มาสำหรับคนที่ใช้ Mac/Linux นะครับ ไว้ว่างๆ จะมาเขียนบทความให้อ่านกันแต่ผมว่าแค่ PowerShell นี้ผมก็อ่านไม่ไหวแล้วล่ะเยอะมากและ Help ที่ Include มาใน Command เรียกว่าเข้าขั้นว่าห่วยถ้าไม่ Google หานี่คลำยากกว่าใช้ Linux เยอะครับ หวังว่าบทความคงเป็นประโยชน์ไม่มากก็น้อยสำหรับคนที่เพิ่งหัดเล่น Cloud Azure นะครับ / จากในผมครับ GreanApp (วรวุฒิ บุญตัน)

Note :  ตัวอย่างกรณีสร้าง Virtual Network กับ Subnet ครับ

Default
1
2
3
4
5
6
7
8
9
10
11
12
$vNetName = "iTopPlusService"
$subNet = "Zone1"
$vm1 = New-AzureVMConfig -Name $vmName -InstanceSize $vmSize -ImageName $imageName |
Set-AzureSubnet $subNet |
        Add-AzureProvisioningConfig -Windows `
                                    -AdminUsername $username `
                                    -Password $password
 
New-AzureVM -ServiceName $serviceName -Location $location `
            -VMs $vm1 `
            -ReservedIPName $reservedIP `
            -VNetName $vNetName

 

 

March 28, 2015by adminwp
Server

Azure Power Shell Reserved IP จอง IP ใช้ใน Azure VM Cloud

จากที่ทราบกันดีบนระบบคราวทั่วไปจะมีโอกาสที IP หลักเราจะเปลี่ยนได้ทุกเมื่อเช่น Resize / Reconfig เครื่องใหม่อาจทำให้ Public IP ของคุณเปลี่ยนแปลง นั่นอาจทำให้คุณลำบากมากเมื่อเกิดเหตุการเหล่านั้น เริ่มต้นจริงๆแล้วถ้าใครใช้ Cloud ของ Microsoft แล้วนั้น จะสามารถใช้ Reserved IP ได้ฟรี ถึง 5 IP โดยคุณต้องใช้งานผ่าน PowerShell Command เท่านั้น ถ้าใครยัง Authenticate Azure Command ไม่ได้ให้กลับไปดูบทความก่อนหน้านี้ที่นี่นะครับ เริ่มการใช้งาน Azure PowerShell Command

ก่อนอื่นก็เข้า Azure PowerShell Command และ Authen Subscription ให้เรียบร้อย จากนั้นรันคำสั่งด้านล่างเพื่อเริ่มสร้าง ReservedIP

Default
1
New-AzureReservedIP –ReservedIPName “WhatEverIPName” –Label "ReservedLabel" –Location "Southeast Asia"

จากนั้น ใช้คำสั่ง

Default
1
Get-AzureReservedIP

เพื่อทำการแสดงว่าตอนนี้มี ReservedIP อะไรอยู่บ้างและถูกใช้แล้วอันไหน แสดงขึ้นมาอย่างชัดเจน

xxx หากต้องการลบ ReservedIP ที่สร้าง ไปแล้ว ก็ระวังอย่าไปลบอันที่ใช้อยู่ ผมก็ไม่กล้าลองแต่ไม่น่าจะลบได้ แต่ก็ไม่ควรลองล่ะครับ

Default
1
Remove-AzureReservedIP -ReservedIPName "WhatEverIPName"

ในบทต่อไปจะเป็นเรื่องการนำ Reserved ไปใช้ กับ VM ที่เราสร้างขึ้นมา

March 28, 2015by adminwp
Server

เริ่มการใช้งาน Azure PowerShell Command

ขั้นต้นแรก

Default
1
Get-AzurePublishSettingsFile

เพื่อทำการ Get Subscription File Setting โดยหลังจาก Run คำสั่งนี้จะ Auto เปิดเว็บให้เรา Login เข้า Azure Subscription Download Page ทันทีหลังจากเรา Login นะครับ

จากนั้นทำการ Import Subscription File

Default
1
Import-AzurePublishSettingsFile C:\xxxxx.publish

และเมื่อทำขั้นตอนเหล่านี้ครบแล้วก็สามารถทำขั้นตอนอื่นๆ ได้แล้วครับ

ตำสั่งที่น่าสนใจอื่นๆ

Default
1
Get-AzureVM

ใช้ในการแสดง VM ทั้งหมดที่มีในระบบ

คำสั่งเกี่ยวกับการ Start-Stop VM

Default
1
2
3
4
5
6
7
8
9
Restart-AzureVM -ServiceName $cloudSvcName -Name $vmname
 
Stop-AzureVM -ServiceName $cloudSvcName -Name $vmname -StayProvisioned
 
–Force # บังคับปิด คล้าย Force Close  
-StayProvisioned # ทำให้ตอน Start กลับมา Public IP ไม่เปลี่ยนจะได้ไม่ต้องกังวลการเข้าไช้งานไม่ได้
 
 
Start-AzureVM -ServiceName $cloudSvcName -Name $vmname

March 28, 2015by adminwp
Server

วิธีการ Replace Multiple ไฟล์หลายไฟล์พร้อมกัน

ตัวอย่างนี้จะหาคำว่า
grep -rl ‘myservername’ ./ | xargs sed -i ‘s/myservername/youservername/g’

โดยใช้ Greap หาไฟล์ที่มี คำว่า myservername ประกอบ ใน curent path
xargs แก้ไขไฟล์ทั้งหมด จากคำว่า myservername เป็น yourservername

เท่านี้ไฟล์ทั้งหมดก็จะแก้ไขเป็นคำที่เราต้องการ ง่ายๆแบบนี้ แต่อย่าลืมทดสอบก่อนล่ะ พลาดทีจุกได้เลยพี่น้อง

August 4, 2014by adminwp
Page 1 of 212»

Recent Posts

  • สร้าง Redis Production/Development grade ด้วย Docker แบบขำๆ
  • Minikube ติดตั้ง บน Windows 10
  • Restart Service VMWare 5.5
  • ขั้นตอนการสร้าง Create Certificate เพื่อใช้ใน MailEnable สำหรับใช้งาน SMTPS , IMAPS
  • GraphQL ดียังไง แล้วดีกว่า Rest ยังไง

Recent Comments

  • Surutn Muintabutr on ตั้งค่า Redis สำหรับ Production Server
  • Satit Seethaphon on AngularJS Introduction First Video
  • ภูนาม สุวรรณเคหะ on Asp.NET VNext เหล้าใหม่ในขวดใหม่ มาช้าไปมั้ย (OSX / LINUX)
  • วรวุฒิ บุญตัน on Web App ด้วย Yoman Workflow !
  • วรวุฒิ บุญตัน on Web App ด้วย Yoman Workflow !

Archives

  • January 2018
  • September 2017
  • June 2017
  • March 2017
  • December 2016
  • August 2016
  • July 2016
  • June 2016
  • April 2016
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • March 2015
  • November 2014
  • September 2014
  • August 2014
  • June 2014
  • April 2014
  • February 2014
  • November 2013

Categories

  • .NET Core
  • Android
  • AngularJS
  • Docker
  • Network Equipment
  • NodeJS
  • Other
  • Server
  • Uncategorized

“การส่งมอบงานตรงเวลาอย่างเดียวไม่พอ งานที่ส่งต้องตรงใจผู้ใช้มากที่สุด อย่ากลัว Change จงพร้อมที่จะ Change จงกล้าที่จะเปลี่ยนแม้กระทั่งงานที่เคยทำเสร็จ Refactor มันเป็นประจำด้วย งานที่เสร็จหรือไม่เสร็จก็ Retrospective ด้วยเพื่อเพิ่ม Productivity ในอนาคต”

© 2015 copyright GreanApp // All rights reserved // Privacy Policy
Greanapp is a Grean Time