Pages

5/14/2012

[TED Talk] Joshua Foer: Feats of memory anyone can do

หลังจากเขียนบล๊อกเรื่อง  Memory Palace ไปเมื่อหลายเดือนก่อน  วันนี้เพิ่งจะเห็น Joshua Foer ผู้แต่งหนังสือเรื่อง "Moonwalking with Einstein: The Art and Science of Remembering Everything" ที่เป็นเนื้อหาหลักที่เอามาเขียนบล๊อกในครั้งก่อน  ขึ้นมาพูดบนเวทีของ TED  ก็เลยเอามาให้ดูกัน

 A TED talk from Joshua Foer, in "Feats of memory anyone can do"

การตอบแบบสอบถามทางโทรศัพท์ กับ Social Engineering

โพสต์นี้จะเป็นการบ่นๆแหละ  ก่อนอื่นขอเล่าสถานการณ์ก่อนเลยละกัน

รื่องมันเริ่มต้นมาจาก วันนึง โทรศัพท์พื้นฐานที่บ้านเสีย ก็เลยโทรไปคอลเซ็นเตอร์ของบริษัทโทรศัพท์นั้นเพื่อขอให้ช่างมาซ่อม ช่างก็มาไวซ่อมไวเสร็จไว ทุกอย่างก็ดูปกติไม่มีอะไร
แต่พอไ่มกี่วันต่อมา  มีโทรศัพท์ที่อ้างว่าเป็นพนักงานฝ่ายบริการลูกค้าโทรเข้ามาถามถึงความพอใจในการให้บริการของคอลเซนเตอร์คนนั้น  ตอนแรกก็จำไม่ได้ด้วยซ้ำว่าเคยโทรเข้าไปหาคอลเซนเตอร์
กำลังจะตัดสายอยู่แล้วเชียวเพราะนึกว่าเป็นพวกโทรมาหลอก  และเพราะเบอร์ที่โทรเข้ามาก็เป็นเบอร์มือถือด้วย (แปลกๆ เพราะปกติควรจะใช้เบอร์บริษัทที่ขึ้นต้นด้วย 02- โทรมามากกว่า)  แต่พอเขาพูดชื่อเราถูก และอ้างถึง"วันที่"มีการสนทนากับคอลเซนเตอร์ถูก  ก็โอเคละ เริ่มมั่นใจว่าคนๆนี้น่าจะเป็นคนในบริษัทนั้นจริงๆ
คำถามที่เขาถามก็ไม่ได้มีอะไรมากในช่วงแรก  ก็ให้เราเป็นคนให้คะแนนกับคอลเซนเตอร์ที่เราคุยด้วย
วันนั้นในด้านต่างๆ ให้ 1-5 คะแนนในแต่ละด้าน  ซึ่งก็ยังดูไม่มีผิดปกติอะไร แต่พอถามคำถามเหล่านั้นจบ  ตรงนี้ล่ะเขาจะเริ่มถามข้อมูลทั่วไป(และส่วนตัว)ของเราละ  แล้วก็มาเริ่มมั่นใจว่าคนๆนี้เป็นคนบริษัทจริงๆ ก็คือตรงที่เขาบอกว่า  "ถ้าข้อมูลไหนคุณไม่สะดวกตอบ ก็ข้ามได้นะครับ"  เพราะแน่นอนว่า ถ้าเป็นมิจฉาชีพโทรมา คงอยากจะให้เราตอบทุกคำถามแน่ๆ ไม่ให้เว้นหรอก
โดยคำถามเหล่านั้นก็จะเป็นประมาณว่า  ชื่ออะไร เพศ อายุ ที่อยู่ เบอร์โทรติดต่อ การศึกษา อัตราเงินเดือน ฯลฯ   ซึ่งคำถามพวกนี้เนี่ยนะ ก็เห็นคนที่ทำ survey ก็ถามกันทุกอัน ไม่รู้ได้เอาไปใช้อะไรกันจริงๆมั๊ยในงานวิจัย  แต่ที่แน่ๆคือ คำถามเหล่านี้เป็นการเอาข้อมูลส่วนตัวออกไปได้อย่างง่ายๆเลย

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

    ตอนนี้เริ่มรู้สึกเหมือนกับว่า มีใครกำลังใช้ social engineering กับเราอยู่เลย

ำหรับคนที่ไม่รู้จักคำว่า Social Engineering
(ภาพจาก noticebored)

   คำว่า Social Engineering คือ ศาสตร์การที่ทำที่โน้มน้าวให้คนๆนึงทำอะไรซักอย่างนึงที่อาจจะไม่ได้ส่งผลดีกับตัวเขาเองก็ได้ (แปลจาก "the act of manipulating a person to take an action that may or may not be in the "target's" best interest." -- Christopher Hadnagy)

   พูดอีกอย่างก็คือ ทำอะไรก็ได้ที่เราได้ประโยชน์ โดยการหลอกให้เป้าหมายทำอะไรซักอย่างให้เรานั่นเอง ถึงแม้บางครั้งคนๆนั้นจะเสียประโยชน์ก็ตาม

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

... แต่ในความเป็นจริงแล้ว มันก็ไม่ได้ยากขนาดนั้น

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

สุดท้ายนี้ อยากให้ทุกคนระวังตัวไว้ด้วย เวลาจะตอบคำถามใครทางโทรศัพท์ จะต้องระมัดระวังตัว
โดยให้

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

อให้ทุกคนปลอดภัยจากเรื่องพวกนี้นะครับ
ถ้าใครมีเคสน่าสนใจๆ ก็มาเล่าให้ฟังแลกเปลี่ยนกันได้นะครับ

5/09/2012

Using Facebook's Like Box and Comment Box in Blogger

Features:

1. Users can comment on each blog post
2. Comment box is configurable
3. Users can use their own authentication, e.g. Facebook, Yahoo, Hotmail.
4. Notify to the blog owner's Facebook account

Steps:

1. First, you need a Facebook account. (Obviously.)
2. Go to https://developers.facebook.com to create a new Facebook application (app)
3. From the FB-app page you just created, grab the Facebook application ID (app-id). We will use this app-id later.
4. Go to your blogger account, go to "Template" and "edit HTML". If a warning message pops up, hit "Proceed".
  After you finish step 4., it will show the source code of the main page (just the theme).
In this level of detail, we can edit the main website's HTML and get the main website's URL (in this case, http://blog.anidear.com), but not be able to edit nor get URL of each blog post (I mean, for example, http://blog.anidear.com/2012/05/disable-recent-files-in-unity-in-ubuntu.html)

Why I need the URL of each blog post?
  I am planing for every Facebook comment box to associate with its own blog post, and it must be automated.
  I want the system that when I post a new blog post, the new comment box is generated, and automatically associated with the new blog post immediately. So, I need to dig deeper into code of template of a blog post, not just the theme for main page.

5. To see more detail, check on "Expand Widget Templates" box. It will immediately expand viewing source code. Now we can see and edit template of each blog post.

6. Put these 2 lines of code in between tag <head> .... </head>

    <meta content='YOUR_ADMIN_FB_ID' property='fb:admins'/>
    <meta content='YOUR_APP_ID' property='fb:app_id'/>

The first line is to enable "Moderator" feature of the comment boxes. This moderator can get notified when a new comment posted, and be able to approve the comment (if set to wait for approval).
You need to replace YOUR_ADMIN_FB_ID with your Facebook ID (e.g. 123456789) or the person you want him/her to be the moderator of the comment boxes.
If you want multiple admins, just put their Facebook ID together, separating by colon and no space.

The second line is to associate the comment boxes with the Facebook app we just created in step 2.
You need to replace YOUR_APP_ID with the app-id.

I did this by filling BOTH with my app-id. This will grant the app (not the moderators yet) to be able to moderate the comments, and the privilege is then passed through all admins of the app. This is more convenient if I need to add more moderators in the future, I can just add them to the app via Facebook app setting page. No need to touch this code any further.

7. Next, find the blog post template.
Here is a little summary of the source code:

<b:includable id='post' var='post'>
  <div class='post hentry'>
   .... BLOG POST CONTENT HERE....
      <div class='post-footer'>
          <div class='post-footer-line .....'>
             ... FOOTER, such as: post-author, post-timestamp, pencil button(for edit) ...
          </div>
          <div class='post-footer-line .....'>
             .....
          </div>
                   <<<<<------ THIS IS THE POINT TO INSERT FACEBOOK CODE!
      </div>
   </div>
</b:includable>

At that point, which is the end of each post, I want to put both Facebook's "Like box" and "Comment box" in it. So I insert this code:

<div id='fb-root'/>
<script src='http://connect.facebook.net/en_US/all.js#xfbml=1'/>
<fb:like action='recommend' expr:href='data:post.url' font='' migrated='1' send='false' show_faces='true' width='500'/>
<fb:comments expr:href='data:post.url' migrated='1' num_posts='3' width='500'/>

It'll now look like this:

Important term here is data:post.url This will access to Blogger's variable of the URL of the blog post the script resides. In this way, we can create a new "Like box" and "Comment box" along with the new blog post, without getting any conflict with the old ones.

Another significant term, migrated='1' is used for notification. It will notify back to the admins whenever someone posted the comment. (I tried the Like box and it doesn't work, but it doesn't hurt either. So, I put it in anyway)

For customization of the boxes:  

   see https://developers.facebook.com/docs/reference/plugins/like/ and https://developers.facebook.com/docs/reference/plugins/comments/ for "Like box" and "Comment box" generator.
   Do not forget to put "migrate='1'" into "Comment box" tag if you want it to notify you.

Final Result: 

   It will look like this.

  When someone comments it, the notification will come like this.

  And to moderate the comments, you have two options.
     1) moderate from the blog post, with moderator tab in "Comment box"

    2) use a tool from Facebook, called "Comment Moderation Tool"

Last Step.... sit back and relax ;)

References:

 - https://developers.facebook.com/blog/post/472/
 -  https://developers.facebook.com/docs/reference/plugins/like/
 - https://developers.facebook.com/docs/reference/plugins/comments/
 - https://developers.facebook.com/tools/comments

5/07/2012

Disable Recent Files in Unity in Ubuntu 12.04

I just upgraded my machine from Xubuntu 11.10 to Ubuntu 12.04, so I thought it is time to try Unity out.
After a day, I found that, in Unity dashboard, there is a recent-files box showing ALL THE FILES I opened.


This is BAD.

I don't like anyone to see what I have opened. A possible scenario would be I have to show other people how to do something, either locally or remotely, and they could see what I have opened (meaning the "files" I have in my machine.) I will not have any privacy at all.

I searched and found that the "recent-files" list is stored in a file named "recently-used.xbel" under "/home/YOURUSERNAME/.local/share/"
Example content of the file:
<xbel version="1.0" xmlns:bookmark="http://www.freedesktop.org/standards/desktop-bookmarks" xmlns:mime="http://www.freedesktop.org/standards/shared-mime-info">
<bookmark added="2012-05-07T03:55:02Z" href="file:///home/anidear/Pictures/Screenshot%20from%202012-05-07%2010%3A54%3A50.png" modified="2012-05-07T03:55:02Z" visited="2012-05-07T03:55:02.049049Z">
    <info>
      <metadata owner="http://freedesktop.org">
        <mime:mime-type type="image/png">
        <bookmark:groups>
          <bookmark:group>Graphics</bookmark:group>
        </bookmark:groups>
        <bookmark:applications>
          <bookmark:application count="1" exec="'eog %u'" modified="2012-05-07T03:55:02Z" name="GNOME Screenshot">
        </bookmark:application></bookmark:applications>
      </mime:mime-type></metadata>
    </info>
  </bookmark>
</xbel>


A way to empty the list is to empty the file(or delete it with "rm"), to empty the file use this command:
echo -n > ~/.local/share/recently-used.xbel

This can be made into a shell script and to make it clickable whenever one needs to clean the history.
Or put the script in startup application list to clean it every time the machine starts.

** There is also an old trick for Ubuntu <12.04 to make a directory named "recently-used.xbel" in its place, instead of a file. Unfortunately, someone said it doesn't work with the new Ubuntu (I also haven't tested that yet).

Above method will just deal with the history storage, we did not touch the application that do the "logging" yet.
The logging application is called "zeitgeist-daemon" running in the background.
It might be possible to remove Zeitgeist-daemon from your system, on this page suggest that you could do these command both in order to get rid of it.
sudo apt-get --purge remove zeitgeist
sudo apt-get autoremove
Although, there is another way to disable or configure(if you just want partial of it to enabled.)_It is to use "Activity Log Manager".

** in this blog, it seems that Activity Log Manager owned its place in "System->Privacy". Although, I couldn't find it there. So, I installed it manually.

To install and use Activity Log Manager:
sudo apt-get install activity-log-manager
activity-log-manager

The application will launched and it looks like this:

on the first page, you can choose when to delete the logged activities, or manually delete it.
There is also a switch at the bottom to enable/disable the activity logging program(zeitgeist).

On the second tab, you'll see more option to configure for file-opened logging. You can discard logging on specific file types, or discard logging files from a specific folder.

On the third tab, there is application-level configuration. Meaning, it will ignore logging for the application you have put in this list.

After finish configuring, close the Activity Log Manager, logout, and login again. Now it'll log only what you want it to log and show only that to Unity dashboard.

** Actually, Zeitgeist is still logging EVERYTHING and put it into ~/.local/share/recently-used.xbel but it just does not show on Unity dashboard. Therefore, it's good to clean the file once in a while.


ref:
[+] http://askubuntu.com/questions/29559/how-can-i-keep-recent-files-from-appearing-in-unity
[+] http://ubuntuforums.org/showthread.php?t=1779052