SoftGanz By Little Bear.

Web & Software Developer Gang.

ทำให้ Web App คุยกับ Android ผ่านทาง WebView - Building Web Apps in WebView

โดย Little Bear on January,30 2018 12.00

Enabling JavaScript

JavaScript is disabled in a WebView by default. You can enable it through the WebSettings attached to your WebView. You can retrieve WebSettings with getSettings(), then enable JavaScript with setJavaScriptEnabled().

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

Binding JavaScript code to Android code

public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

Bind class Android

WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");

Coding in javascript

<a href="javascript:void(0)" onclick="showAndroidToast('Hello Android!')">Click for android</a>
<script type="text/javascript">
function showAndroidToast(toast) {
    if (typeof Android=="object") Android.showToast(toast);
    else console.log("App not run on Android")
}
</script>



ที่มา Building Web Apps in WebView

Meld for OSX

โดย Little Bear on January,10 2018 12.40

หลังจากพยายามติดตั้ง Meld บน Mac OSX High Sierra มาหลายรอบ และไม่เคยสำเร็จสักที แม้กระทั่งพยามยามลง Ubuntu บน OSX ก็ยอม ก็เจอปัญหาหน้าจอถูกจำกัดอยู่ที่ 800x600 ซะนี่

แต่ว่า..... ในที่สุดก็ต้องขอขอบคุณ  ผู้มีพระคุณที่ Github ที่ช่วยทำ OSX dmg file ให้ติดตั้งได้โดยง่ายยยยยยยย

ช้าอยู่ใย ดาวน์โหลดเลย และติดตั้งเลย

ที่มา Meld for OSX

Update table with incremented value grouped by column

โดย Little Bear on May,04 2017 21.43

ต้องการให้สร้างลำดับของ sorder ของข้อมูลในกลุ่มที่มีค่า tpid เดียวกัน โดยเริ่มนับ sorder จาก 1 เป็นต้นไป และเริ่มนับ 1 ใหม่เมื่อเปลี่ยนค่า tpid

SET @f := null, @i = null;
UPDATE `jobtr`
SET
    sorder = IF(tpid = @f, @i := @i+1, @i := 1),
    tpid = (@f := tpid)
ORDER BY tpid, sorder, jobtrid;

Server ล่มจากการ Upgrade Apache from ver 2.2 to 2.4

โดย Little Bear on March,10 2017 10.54

วันนี้อ่านข่าว ช่องโหว่ใน Apache Struts 2 เปิดทางรันโค้ดจากระยะไกล มีการโจมตีแล้ว แล้วลองมาเช็ค Apache บน production host พบว่ายังเป็น version 2.2 อยู่ ก็เลยลอง upgrade

เริ่มแรกด้วยการตรวจสอบรุ่นของ Apache ก่อน link

On Debian and Mac OS:

apachectl -v

On Red Hat and Amazon's EC2 Linux use:

httpd -v

On other verisons of Linux try:

apache2 -v

You can use two different flags:

-v # gives you the version number
-V # gives you the compile settings including version number.

If you want to run the command with the full directory like user3786265 did but don't know where your apache is located, use the whereis command:

whereis httpd

ที่ server ใช้ Directadmin ก็ใช้ DirectAdmin build

cd /usr/local/DirectAdmin/custombuild<br />
./build set apache_ver 2.4
./build update
./build clean
./build apache n
./build php n
service httpd restart

ผลปรากฏว่า start Apache ไม่ได้ ล่มทั้ง server เนื่องจากใช้ suPHP อยู่ด้วย

รีบหาข้อมูลโดยเร็ว ทำอย่างไรดี โทรศัพท์เริ่มกริ๊งกร๊างเข้ามาแล้ว......

ที่แรก คือ Updating Apache to the latest version

ที่ต่อมา คือ Invalid command 'suPHP_Engine'

ที่สำคัญคือ build suphp และ rewrite_confs

cd /usr/local/directadmin/custombuild
./build update
./build clean
./build php y
./build suphp y
./build rewrite_confs

เหตุที่เกิดปัญหา เนื่องจาก ไม่ได้ build suphp ของ Apache 2.4 ทำให้ start Apache ไม่ได้ และเมื่อ build suphp เสร็จแล้ว จะต้องสร้าง config ใหม่ด้วย build rewrite_confs

รอดตามไปอีกครั้งหนึ่ง ชีวิตนี้มีลุ้นทุกครั้งที่ต้องอัพเกรด server

วิธีการติดตั้ง Let’s Encrypt automated free SSL certificate

โดย Little Bear on January,31 2017 13.55

เข้าสู่ยุค https จึงจำต้องทำเสียแล้ว

มาลองติดตั้ง Let's Encrypt บน Directadmin กันอีกสักรอบ

1. เริ่มด้วยการแก้ไข config ของ Directadmin ให้สามารถใช้งาน Let's Encrypt ก่อน

nano /usr/local/directadmin/conf/directadmin.conf

สำหรับใครที่ใช้ path : /var/www/html/.well-known (ใช้โดเมนเดียว) ให้เพิ่ม

enable_ssl_sni=1
letsencrypt=1

ส่วนใครที่ใช้ path : /home/user/domains/domain.com/public_html/.well-known (ใช้หลายโดเมน) ให้เพิ่ม

enable_ssl_sni=1
letsencrypt=2

หรือจะสั่งผ่าน Terminal ก็ได้โดย

echo enable_ssl_sni=1 >> /usr/local/directadmin/conf/directadmin.conf
echo letsencrypt=2 >> /usr/local/directadmin/conf/directadmin.conf

แล้วสั่ง update config โดย

cd /usr/local/directadmin/custombuild
./build update
./build rewrite_confs

2. แล้วมาเพิ่ม Let's Encrypt ให้กับแต่ละเว็บ

กำหนดให้เว็บสามารถใช้งาน Secure SSL ก่อน

แล้วจึงไปเพิ่ม SSL Certificates ให้กับเว็บ โดยเลือก Free & automatic certificate from Let's Encrypt

(ต้องทำทั้ง www และ ไม่มี www)

ถ้าต้องการให้สามารถใช้งานได้ทั้ง https และ http ให้สร้าง link private _ html ให้ชี้ไปที่ public _ html ด้วยคำสั่ง

ln -s public _ html private _ html

แต่ถ้าต้องการให้ใช้งานเฉพาะ https อย่างเดียว ให้ rename public _ html ไปเป็น private _ html แล้วสร้าง folder public _ html ใหม่ และสร้างไฟล์ .htaccess โดยเพิ่มคำสั่ง

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Let's Encrypt ก็จะเป็นของเรา

517 items(1/104) 2 3 4 5 Next » Last »|