Your first semester in university doesn’t have to be miserable!

Learn how to Learn and make your first semester in a new school a much, much better experience!

Clueless freshmen, gather round!

Well, let’s just say that by getting into a university you have undertaken an important leap into a new land. The land of academia, the land of self-study, the land of distractions, the land of unforgiving exams without partial credits, and probably a hundred things that could be happening at the same time. By stepping into a campus, you have put a lot of things into motion. All of those do not matter: right now you are a clueless freshman, young and fresh, yet at an extreme risk of being misguided and misinformed.

I’ll just tell you a few tips here in small, manageable chunks. They will mostly deal with engineering, maths, and computers though because that’s what I’m specialized at. The focus is mostly on Thai schools, because that’s where I came from. However, I hope it is also applicable to other countries as well.

Rule 0: Scout and pick your battles.

Victorious warriors win first and then go to war, while defeated warriors go to war first and then seek to win. — Sun Tzu

The entire campus is a battlefield, and each class can be a really tough beast! You must know which battles you can fight and how many fronts you can take at once. There are small skirmishes like your in-department elective classes which are obviously your specialization, then there are great battlefields in which millions of great soldiers were slain. Those classes are faculty-level lectures like Chemistry or General Physics.

Learn to scout your battles beforehand so you can pick your battles. You need to know:

  • Your curriculum: how many credits you need, which classes are required, and which classes are elective.
  • Who’s teaching which class.
  • The time of week and how much free time to have.

Taking too many classes, especially during the first semester when many “basic” classes such as calculus and chemistry can be an overkill, can burn you out quickly. Sometimes curriculum comes with a class plan, a by-semester plan that tells you which classes you should take which semester. Sometimes this is really helpful, sometimes not. Use your judgement and adjust accordingly.

If you talk to your upperclassmen, you will learn that not all lecturers are the same . Even if they are all teaching the same class, they might have different styles, experience, or level quality. Some do not give a damn about your education, while some go out of their ways to answer absolutely everything as long as you have time to listen to them. Less experienced lecturers (especially those without “something-Prof” in their names) can be very enthusiastic and understanding of your concerns, but may have a hard time coming up with an answer for a complex question. Some lecturers have a mindset that you must bring something to the table to talk to them. This means you can’t just come in and ask. You must have prior information, such as a list of theorems that you want to use, references, and most importantly your attempt at the work. Therefore, if you have a choice, choose your lecturers wisely.

As long as you follow the curriculum and do not pick any classes you are barred from (e.g. “Engineering students must take Engineering Mathematics and not Calculus”). No one, not even your adviser, has any absolute say over which classes you pick. You might get liked or get hated, but you won’t get expelled for picking a class.

First Day: Syllabus, the map of the class.

Syllabus is the metadata of the class. Everything important is written there, including lecturer’s contact information, when you can meet him/her (called office hours ), list of teaching assistants (TAs), hours, what will be taught each week, how will you be graded (typically 100% exams, or maybe 80% exams and 20% reports, but it may vary between each class).

This information is extremely important. Sometimes, a teacher may actually write what will be on the exams right on the syllabus. Sometimes this can be slightly less or more than what is lectured in class.

The syllabus is the most important document in the class. Normally you would get one in the first class, but if you don’t for any reason, you must contact the lecturer, or one of the TAs, or consult the website, as soon as possible to obtain one.

First Week: Learn early, study regularly, and do your homework.

The last thing I want to see you do is cramming everything 24 hours before the exam and go to the exam hall tired. That will be your bad end in the class. Instead, think of learning as laying a brick wall. You want to allow each layer of bricks to set into place before you start with the next layer. If you do it too quickly, you will do poorly and the bricks will collapse, giving you a messy wall that nobody wants. Learning slowly but regularly allows your brain to retain the information for much longer than cramming everything in a few hours. Instead of reading everything right before the exams, try reviewing (using both reading, writing, and recall, which I will explain later) every week or every few days.

Do not leave your homework unattended. (Good) Homework assignments are designed to improve and test your understanding of the content and is a way to make sure that everything goes in a regular pace. Some good teachers also give well-detailed homework feedback that points out where you went wrong. Being wrong can be very helpful in your learning process.

Second Week: Learn your limits and learn to chunk.

By the second week of the class you should have gone beyond the “introduction” phase. This is when the teacher actually opens chapter one in his lectures and begin firing more advanced content at you. It may feel overwhelming to learn large concepts such as complex equations and four-character Japanese word, where each character has like 20 strokes. That’s absolutely normal. It’s how your brain works.

Your brain is wired to receive only a few things at a time, but have a very powerful back-storage or long-term memory. Average humans cannot hold more than three or four things at a time in their brains, but this “thing” is a very extensible concept: it can be a single number, a single Chinese character, or a whole parallel parking process. The brain uses what we call “chunking” to expand small facts and steps into larger concepts and algorithms.

In this chunking process, your brain groups many things together. Instead of writing each stroke, your brain can learn that the strokes go together to form a character, and many characters form a word. Training and repeating your chunks will make it stronger, and that’s why teachers insist that you say those words in class out loud, or solve a problem on a blackboard on your own — solving various problems allow your brain to form a better chunk of the kind of the problem, allowing you to do it better and quicker. It is especially important to exercise your mind a little by solving problems from scratch.

Relax!

Relaxing is as important as, and at times more important than, studying.

Have you ever wondered why you study so well when at your desk, but figure something out while in the shower? That’s because your brain has two distinct modes: focused and diffused. Focused mode is used when your brain wants to do something very deliberate, like solving mathematical problems or learning to write a new word. It can help you learn new concepts and create chunks. This is common knowledge. However, where your hidden power lies in is the diffuse mode. While your brain is in diffuse mode, it can synthesize and map multiple chunks together. This allows you to create powerful solutions to the problems to have. And what’s best about the diffuse mode? It runs in the background while you relax!

Switching around between the focused and diffuse modes can be beneficial to your study. There are many techniques that help you do this. One of them is Pomodoro. Essentially you must dedicate 25 minutes to work, then a mandatory 5 minutes of rest. Both are necessary, as working too much will tire you out and not allow the diffuse mode to kick in.

When faced with great difficulty, back off. You will synthesize a solution better when you are relaxed because your diffuse mode has a very fast solution-finding speed compared to grinding your mind or bashing your head on it. This principle also applies in exam, which I will explain later in its own section.

Dealing with procrastination and the torture of study sessions

Like how water flows down to the lowest point, your mind will also seek to do whatever it feels relaxing. Work is tiring. Studying is a torture. I know.

I would break a very big study goal into manageable sessions. Instead of saying I’ll do 100 problems this month, I’d just do 5 problems a day. I will still have 10 more days for slack. That sounds like a good deal, the “only $0.15 a day” (for 10 years) kind of deal. Instead of saying I’ll finish this report this week, I’d break it down into five sections, each to be done each day of the week. Breaking things down and focusing on doing it (the process ) and not completing it (the product ) will make it easier for your mind to get on it, as individual steps and the simple act of “just working” is not as steep as “finish this whole thing.”

Now write that goal onto a planner or something you will look again in the morning. Writing things down is like a save function for your mind. Free up your working memory by putting it onto some other medium that’s not your head. That way you can concentrate on getting it done … pardon me, doing it , tomorrow. When tomorrow comes, eat your frogs first and do the biggest, hardest, or the most daunting task first. Your fresh mind that was just fully fueled by breakfast (important!) and sleep (also important!) can tackle hard subjects better than the exhausted mind in the late afternoon.

Finally, don’t forget to reward yourself. Your brain likes rewards and has a dedicated part for this function. Every time you do something good, reward yourself a little. Your little zombie in your brain will appreciate it.

Testing yourself is better than reading over and over.

Simply rereading (or merely highlighting) worked solutions and text may seem like a lot of progress because hey, I just read the whole thing again! But guess what: it doesn’t work the way you think. Reading, listening, and maybe watching videos only let you passively sense the material using your eyes and ears. Sure, some of it might go into your brain, but the best way to retain everything in your brain is to test yourself. Close that book, try to recall as much as possible from your head. Write the outline for the whole chapter and as many points as possible on a sheet of paper. This act of “active learning” forces your mind to write the material over and over, strengthening the memory in your head.

A similar kind of “illusion” occurs when you highlight text. Hilighting text gives an illusion that you’re making a lot of progress, but it is not a good idea to highlight too much. A better way to annotate your book is to use a pencil to write in the margins or on a post-it. Summarize the whole paragraph or make a simple derivation from the text yourself. Then test yourself about it.

If you want to learn more, maybe you could google for “Learning Pyramid theory.” So far it works for me.

Teach to learn.

If you want to go fast, go alone. If you want to go far, go together. — African proverb

While testing yourself is better than reading, testing your friends and getting tested by them and actually discussing the problem is much better than testing yourself on your own!

Despite how competitive it may be (for example, classes with a “grade on a curve” or “limited A” policy), you need friends to succeed. As I told you earlier, passive learning is not a good idea. A better idea is to teach your friends by writing up your own version of the textbook, take turns giving lectures to your friends, test each other, or becoming a “master” of a specific course and help your classmates in a group. Teaching means you must recall everything from your brain, derive the formulas live, and demonstrate mock labs live. Extensive “my lecture notes” teaching material must also be well-prepared. Everything that leads up to teaching will force you to learn, and will make you keep more content and skill in your mind. Discussing with friends also open you to other perspectives of the same thing. Maybe the way your friend is deriving all those equations is much better than yours and you should learn from them, but your substitution rule just rocks and they can learn from you. When two great minds meet, many good things can happen, so talk to your friends!

Note, however, that you have to be punctual and disciplined when doing group work. Do not let it (d)evolve into a pizza party before the study session ends.

Change your place.

Your mind inadvertently associates a place you are in with some pieces of memories. This is not desirable, as you will have difficulty recalling this information later in the exam room, which is not your favorite room. Go out of your comfort zone and read in many places so the place-content association is weakened. Generally, during exam week, campus libraries may have extended or 24-hour service.

Note that using McDonald’s or public locations with high patron turnover is frowned upon. If you really need to use this kind of public space, remember to order food and service proportionately.

The Exam

The week leading up to an exam, you should have already learned all material well by using techniques above. Get at least 8 hours sleep every night no matter what, as sleeping clears up your mind and the sleeping mind is fully relaxed, free of stressing thoughts. Do not skip a meal, especially on the exam day itself. Stop all heavy study activities 24 hours before the exam. Maybe you will want to freshen your mind a bit by doing a few problems, but that’s all you should do. Do not reread the whole book and retest yourself on it the day before exam.

If a cheat sheet (i.e. your personal reference or note) is allowed in the exam, make your own from understanding. Remember chunking and recall? Synthesizing and writing those concepts down yourself will give you a clearer imprint of the data in your brain, allowing you to utilize it better. Most of the time “one A4 cheat sheet” is just a ploy to get you to read and write.

It may be wise to have an emergency alarm clock: your family or friend to call you to exam using the phone. If you live with someone, ask him/her to wake you up, violently if necessary. Prepare or find at least 2 or 3 means of transportation to your campus.

If your university has a dress code (almost all Thai universities have prescribed uniforms), follow it. Prepare at least two non-mechanical pencils, two pens, and a plastic eraser. Prepare at least your student ID and another government-issued ID. Arrive at least 1 hour early to your campus, and at least 15 minutes early at the exam room. If you suspect that the venue may be changed, contact the faculty hosting the examination immediately. If you cannot find your credentials, go to your registrar office the first thing (as early as possible) and ask for a temporary certificate of identity. Your campus may have different procedures, but this is what I got.

While you wait, meditate. Close your eyes, think of nothing. Let every sound flow through your ears. Let air flow through your nose. Let everything in the universe flow through as you were not there. Feel your breathe. Do this for at least a minute. You will automatically relax and enter diffuse mode soon enough.

When you are called to the exam, sit down, check all pages, write your name if it’s okay. Now, onto the real tips. Skim the whole test and pick the hardest questions first, BUT only do it for less than a minute or two. When you are stuck on it, meditate a bit and move on to an easier question. While you struggle with the hard questions using your focused mode, when you meditate and switch to an easier question, your diffuse mode will kick in and will contemplate on the answer on its own. Use your brain power on the easier questions first. When you are stuck, rotate again. Be extremely thorough in your answers and write as much as possible.

You should also write your understanding or interpretation of the question if it seems unclear and the examiner/proctor does not give you an answer or clarification. Some teachers automatically give you the benefit of doubt if you tell him/her how you interpret the question. It also helps you get on track with the question. Show all your work, then summarize your answer again at the bottom. Circle or underline the answer if asked to do so.

When you are done, check everything again and make sure it is in order. If you are allowed to leave the examination room early, do it. When you are out of the room for any reason, leave the premises immediately and do not talk to anyone. You have used your brain enough the last hour — no need to waste it more.

If you have any problems with a class:

  • Ask a TA or the lecturer. Do not guess. Do not speculate. Do not trust anyone who claims to have authoritative information until it can be proven. Sometimes a series of speculations become an unofficial fact, which is not true at all.
  • Always show that you have already tried before you ask.
  • Your problem with a class is your problem that should be addressed directly by a teaching staff. Use your judgement whether or not should you involve your classmates. An absolute NO is whenever it is related to grading, exam, late days, and anything that directly affects your score.

PSA: You are free to choose your kind of fun!

There are many kinds of fun in universities! This is a great chance to meet someone new! However, not all activities and student assemblies are totally honest about the presentation or interpretation of their activities.

Every year, many freshmen in Thailand are rounded up and brought to what they call “SOTUS” activities, misinformed that it is a mandatory activity. “Cheer class.” “Pep.” “Icebreaking.” “Bonding.” Those words are just disguises for what actually can amount to systemic collegiate hazing. Good, diligent students have lost their lives from this “tradition” of extremism and violence. Being a “senior” does not imply any actual seniority.

Please contact your adviser or a trusted upperclassman if you feel uncomfortable or being abused! You have all the rights to walk away from any campus hazing, even if it is disguised as a mandatory icebreaking activity. You can also contact me (the email should be in About section of this website) or any social volunteer anytime. I am neither press nor counselor, but I am not your enemy and I am willing to hear you out. (Please be descriptive in your email subject.)

References & Disclosure

This article was written as a final project for Prof. Barbara Oakley’s Learning How to Learn: Powerful mental tools to help you master tough subjects , a Massive Open Online Course (MOOC) from University of California, San Diego (UCSD), available at no cost at Coursera. Most of the content in this article, especially those regarding memory, learning techniques, and anything directly related to your brain, is derived from this subject.

That said , some of the content here was added from my own experience as a student. I was a student before, and I hope my experience, along with Prof. Oakley’s wisdom, will help you learn better. Now go to school and do your best.

[เขียนยามคิดว่าว่าง] “แท็บเล็ตคอมพิวเตอร์” หรือ “แท็บเล็ตพีซี”

มีความพยายามมากมายที่จะขีดเส้นแบ่งระหว่างคำว่าแท็บเล็ตคอมพิวเตอร์ (tablet computer) และแท็บเล็ตพีซี (tablet PC) ซึ่งผู้เขียนเองก็ได้ไปศึกษาจากแหล่งข้อมูลต่างๆ และพบว่าเส้นแบ่งดังกล่าวมีอยู่ในหลายมิติและหลายระดับที่แตกต่างกันออกไป

>> ดาวน์โหลดเอกสาร (PDF) <<

[jQuery] … for MySQL Data Manipulation in PHP

<< อ่านบทที่แล้ว (jQuery for Beginners)

ก็กลับมาอีกครั้งกับหัวข้อ jQuery นะครับ วันนี้ผมจะมาเสนอเรื่องการใช้ jQuery ติดต่อกับฐานข้อมูลผ่าน PHP แบบง่ายๆ (ง่ายมากๆ) กัน

ก่อนที่เราจะทำอะไร เราต้องโหลด starter code กันก่อนครับ ถ้าโหลดแล้วก็ทำตามคำแนะนำที่ให้ไป จากนั้นก็เริ่มกันเลย

การอ่านค่าจากฟอร์ม

การอ่านค่าจาก form field ต่างๆ สามารถทำได้โดยใช้ .val() ยกตัวอย่างเช่น จากไฟล์ HTML ต่อไปนี้

 <form>
  <input type="text" id="name" name="name">
  <input type="button" id="btname" name="btname">
</form> 

เราสามารถเอาค่าออกมาจาก field “name” ได้โดยใช้คำสั่ง jQuery (บรรทัดบน) หรือ JS ธรรมดา (บรรทัดล่าง) ได้ดังนี้

 $("#name").val()
document.getElementById("name").value 

โจทย์: จาก starter code ที่ให้ไป ให้เปิดไฟล์ user.html ขึ้นมา ลองพิมพ์อะไรก็ได้ลงไปในช่องทั้งสอง ยังไม่ต้องทำอะไร จากนั้นให้ใช้คำสั่ง val ในการดึงค่าออกมา

การเรียกหน้า PHP จาก jQuery

เรามีไฟล์สองไฟล์ คือ signup.php กับ login.php ซึ่งเป็นไฟล์ที่สร้างผู้ใช้ใหม่กับทำการ login (แบบปลอมๆ) โดยไฟล์ทั้งสองนี้เป็นตัวแทนการ insert และการ select ตามลำดับ ให้ศึกษาไฟล์ให้เข้าใจก่อนที่จะอ่านต่อ …………………… หากอ่านจนพอเข้าใจ จะเห็นว่า ไฟล์ทั้งสองรับตัวแปรชื่อ user กับ pass แล้วเอาไปทำอะไรบางอย่างกับฐานข้อมูล จากนั้นมันจะ print ค่าออกมาหนึ่งในสองค่าคือ “OK” หรือ “FAILED” ขึ้นกับผลการทำงานที่ได้

เมื่อคราวที่แล้วผมสอนให้ผู้อ่านใช้คำสั่ง $.get ไป คราวนี้จะเปลี่ยนมาใช้คำสั่ง $.post บ้าง สำหรับ $.post ไม่ต่างอะไรจาก $.get เลยในแง่ของการใช้งาน ต่างกันแค่ความหมายนิดหน่อยเท่านั้น (สั้นๆ: GET ใช้ในการดึงข้อมูลออกมา โดยใส่ตัวแปรต่อจาก URL ในขณะที่ POST ใช้ในการส่งข้อมูลขึ้นระบบ โดยส่งตัวแปรด้วย HTTP Protocol ในส่วนที่ไม่ใช่ URL)

เช่น หากผมต้องการให้ส่งตัวแปร ‘ticket’ มีค่าเท่ากับ 814418 ไปยังหน้า ‘lottery.php’ โดยเมื่อ PHP ตอบกลับมาแล้วให้แสดงว่าได้รางวัลอะไร ก็จะมีโค้ดสองส่วน คือส่วนของ PHP ก่อน

 //LOTTERY PRIZE LOOKUP
function prize($ticket){
  if($ticket==814418){
    return "First Prize!!"
  } else if (in_array($ticket%1000,Array(504,309,902,101)){
    return "..."
  } // ... (whatever)
}

print prize($_POST ['ticket'] ); 

สังเกตว่าเมื่อเราเรียกไฟล์จริงๆ ไฟล์ lottery จะ print ไม่ใช่ return ซึ่งถูกต้องแล้ว เพราะการเรียก jQuery หรือ ajax มันจะไม่รู้ว่า return อะไรออกมา มันจะเอาแต่สิ่งที่ print ออกมาเท่านั้น

จากนั้นเราไปดู jQuery กันต่อ

 //LOTTERY CHECKER
function checkPrize(ticket){
  $.post(
         'lottery.php',
         {'ticket': ticket},
         function(output){alert(output);}
        );
}

checkPrize(814418); 

อธิบาย: โค้ดนี้จะเรียก lottery.php โดยใช้วิธี POST ส่งตัวแปร ticket ไปหนึ่งตัวมีค่า 814418 ส่วนฟังก์ชันที่รับ output เราเรียกว่า “ฟังก์ชันนิรนาม” (anonymous function) ซึ่งถูกกำหนดขึ้นมาเฉพาะกิจ ใช้งานแค่ใน scope เท่านั้น เช่น ในกรณีนี้ ฟังก์ชันจะเอา output แสดงออกมาผ่าน alert เป็นต้น หากอธิบายคร่าวๆ (มากๆ) ก็จะได้อะไรที่คล้ายๆ กับรูปข้างล่าง

เอาเป็นว่าเราเอาไว้เท่านี้ก่อน สำหรับโจทย์ในวันนี้คือ “พยายาม hack ตัว login ของผมด้วย SQL Injection ให้ได้” สำหรับคราวหน้าหากผมมีแรงเหลือจะมาอธิบายว่าทำไม SQL Injection จะใช้ได้หรือไม่ได้กับชุดคำสั่ง JQ2 ของผมนะครับ :)

[jQuery] … for Beginners!

โพสนี้ถูกสร้างขึ้นเพื่ออธิบาย jQuery อย่างง่ายๆ (ง่ายมากๆ) ให้เพื่อนผมคนนึงครับ

ผมได้เตรียม starter code ไว้ให้แล้ว จะได้ไม่ต้องพิมพ์ตาม หลังจากที่โหลดและ unzip แล้ว เราก็เริ่มกันเลย

JavaScript Console

เบราเซอร์สมัยใหม่จะมี console สำหรับใส่คำสั่ง JavaScript ได้ เราจะใช้ตัวนี้เป็นหลักเลยครับ ไปอ่านวิธีเปิดแล้วทำตามได้เลย

Open and Play

ขอให้ผู้อ่านเปิดไฟล์ index.html ขึ้นมา แล้วลองพิมพ์คำสั่งต่อไปนี้ลงไปใน JavaScript Console ของท่าน

 $("#par1") 

สิ่งที่เราทำอยู่คือการเลือกอะไรบางอย่างออกมา โดยเลือกตามระบบ Selector

Selector ( อ้างอิงจาก W3C ) มีสามสี่พวกหลักๆ ที่ควรเรียนรู้ไว้แต่แรก ได้แก่

  • * (เครื่องหมายดอกจัน) คือ Universal Selector มีความหมายว่า ถ้าเรารัน $(“*”) ก็จะเลือก tag ทุกตัว
  • ชื่อ tag เช่น p, h1 คือ Type Selector มีความหมายว่า เลือกเฉพาะ tag ที่มีชื่อตามนั้นเท่านั้น เช่น $(“p”) จะเลือก <p> ทุกตัว
  • เครื่องหมาย # ตามด้วย id คือ ID Selector มีความหมายว่า เลือกเฉพาะ tag ที่มีการกำหนด id ตรงกับที่เราเลือกเท่านั้น เช่น $(“#par1”) จะเลือกเฉพาะ tag อะไรก็ตามที่มี id เป็น par1 เท่านั้น
  • เครื่องหมาย . ตามด้วยชื่อ class คือ Class Selector เราจะยังไม่พูดในตอนนี้ แต่บทบาทจะคล้ายๆ กับ ID selector คือมันจะเลือกตาม class ที่ระบุ

ทั้งนี้ universal, type และ class selector สามารถให้ผลลัพธ์ได้มากกว่า 1 ตัว แต่ไม่ว่าจะใช้อะไรก็ตามในสี่ชนิดนี้ jQuery จะคืนค่าเป็น “array of Objects” เสมอ ไม่มีข้อยกเว้น

Hello, World!

เราสามารถเปลี่ยนข้อความต่างๆ ของ element ต่างๆ ในไฟล์ของเราได้โดยใช้คำสั่งที่มีลักษณะเช่นนั้น เช่น

 $("#par1").html('Hello, World!'); 

คำสั่ง html เป็นคำสั่งหนึ่งที่สามารถเรียกจาก element ต่างๆ ได้ โดยมันจะไปแก้ HTML code ที่เป็นไส้ใน หากท่านเปิด element หรือ DOM inspector อยู่จะเห็นว่า โค้ดของ <p id=”par1″ …> จะเปลี่ยนไปแล้ว นอกจากนี้ คำสั่ง text ก็จะทำหน้าที่คล้ายๆ กัน แต่ก็ไม่เหมือนกันซะทีเดียว ลองรันคำสั่งสองบรรทัดต่อไปนี้แล้วสังเกตความแตกต่าง

 $("#par1").html('Hello, <strong>World</strong>!');
$("#par2").text('Hello, <strong>World</strong>!'); 

ตัวอย่างเสริม

อ้างอิงจากไฟล์ที่ให้ไป คำสั่งต่อไปนี้ให้ผลลัพธ์อย่างไรบ้าง (เป็นรายบรรทัดนะ!) ทดลองรันดูเองเลยครับ

 $('p')
$('.p')
$('p').html('hacked!')
$('p').text('hacked!<img src="img/brazzers.gif" alt="" />')
$('body').html('') 

โจทย์: หากต้องการเลือกเลข 7-segment “หมายเลข 2” ให้ใช้คำสั่งอะไร

Refresh หน้านี้เสียก่อนที่จะอ่านหัวข้อถัดไป

Attributes

เราสามารถอ่าน attribute ของสิ่งต่างๆ ได้โดยการใช้คำสั่ง attr เช่น

 $("#par2").attr('class')
$("#numbers").attr('data-type') 

นั่นคือ เราเรียกฟังก์ชัน attr จาก element โดยมี argument เป็นชื่อ attribute ที่เราต้องการนั่นเอง หากจะแก้ไขก็ไม่ยากเลย แค่เพิ่ม argument อีกตัวเพื่อบอก jQuery ว่าอยากให้เปลี่ยนเป็นอะไรก็ใช้ได้

 $("#par2").attr('class','c1') 

ในกรณีข้างต้น Paragraph 2 จะเปลี่ยนเป็นสีแดง ตาม Style ที่ผมกำหนดไว้ใน style.css (ถ้าไม่รู้ว่ามันคืออะไรก็ไม่ต้องสนใจครับ ผมเขียนไว้เพื่อใช้แยก class เฉยๆ)

Events

เราสามารถกำหนดได้ว่าจะให้รันอะไรบางอย่างเมื่อเกิดเหตุการณ์บางอย่างบนบางสิ่งบางอย่างบนเอกสารของเรา เช่น หากเราต้องการให้ปรากฏ alert box บนปุ่ม A เมื่อคลิก เราสามารถทำได้โดย

 $('#btn1').bind('click',function(){
  alert('You pressed A');
}); 

อธิบาย คำสั่ง bind เป็นคำสั่งที่ใช้ในการกำหนด function ให้กับ event ต่างๆ โดยรับ argument สองตัว ตัวแรกคือชนิดของ event นั้นๆ เช่น click, load, ฯลฯ ส่วนอีกตัวให้ใส่ฟังก์ชันลงไปว่าต้องการทำอะไร

.children()

หากเราเลือก element ใหญ่ที่อาจมี element ย่อยๆ ซ้อนอยู่ข้างใน เราสามารถใช้คำสั่ง children ในการดึงตัวลูกๆ ของมันออกมา เช่น

 $("#numbers").children() 

จะเลือกป้ายตัวเลขทั้งสองอัน ซึ่งไม่สามารถเลือกได้โดยวิธีอื่น (นอกเหนือจากการเลือก img ทั้งหมด แต่ก็จะใช้ไม่ได้อยู่ดีหากมีภาพอื่นบนหน้านี้ด้วย) และแน่นอน มันเป็น array ดังนั้นเรา subscript ได้ เช่น ในที่นี้เราจะเปลี่ยนเลขจาก 23 เป็น 69 โดยไม่ใช้การลบสร้างใหม่ทั้ง div

 $("#numbers").children() [0] .src = 'img/digit6.png'
$("#numbers").children() [1] .src = 'img/digit9.png' 

Easy Ajax

ปกติเราใช้คำสั่ง $.ajax() ในการเรียกใช้งาน Ajax แต่ไม่ต้องถึงขั้นนั้น เพราะ jQuery มีคำสั่งย่อยๆ ที่ช่วยให้เขียน Ajax ได้ง่ายขึ้น คำสั่งหนึ่งที่จะนำเสนอในที่นี้คือคำสั่ง get

 $.get('server.php',{'id':'User1234'},function(output){$("#par1").text(output);}) 

จะเป็นการเรียกให้ server.php ทำงาน โดยเราส่งค่า id = ‘User1234’ ไป และเมื่อได้รับผลลัพธ์กลับมาแล้ว ให้ทำตามฟังก์ชันที่กำหนดให้ คือให้นำมาแสดงออกทาง #par1

โจทย์

(เฉลยอยู่ใน solution.js แสดงคำตอบที่ถูกต้องได้โดยการใช้ tag <script> เพื่อเรียกคำตอบออกมา)

  • ใช้ jQuery ในการเปลี่ยน style ให้ไปใช้ altstyle.css แทน (hint: use .attr())
  • ทดลองแก้ style ของเอกสารโดยตรง (ใช้ .attr() ได้เช่นกัน)
  • เปลี่ยน H1 ให้เป็น H2 (ใช้ .replaceWith() (ให้ลองศึกษาเอง))
  • จากไฟล์ random.php ที่ให้เลขสุ่มออกมา นำเลขสุ่ม (ค่าตั้งแต่ 0 ถึง 99) มาแสดงผลด้วย 7-segment เมื่อเปิดหน้านี้ นั้นคือ ต้องขึ้นเลขอื่นๆ ที่อาจไม่ใช่ 23 และเลขดังกล่าวต้องเปลี่ยนทุกครั้ง (Extra credit: และเมื่อคลิกที่ button) (ยากที่สุดในสี่ข้อที่ให้)

(jQuery for MySQL Data Manipulation in PHP) อ่านบทต่อไป >>

Dennis Ritchie, 1941-2011

You probably know what happens when an entry header looks like that. This is not a test.

I suppose you already know C language if you know this man. Dennis MacAlistair Ritchie (a.k.a. “dmr”), the author of The C Programming Language (also known as “K&R”), the most authentic book of C language ever published, and the language itself, is reported to have passed away during this week.

I do not know Ritchie personally, and he does not know me either. I know him through his work, the C programming language. I picked up the C language during my … what is it called … Olympiad in Informatics camp, or something similar. It’s a camp that trains junior and senior high students to compete in the International Olympiad for the subject.

C programming language is probably the root of many more languages in the world, as it was invented in time with Unix operating system.

If it had not been Ritchie who created the C language, we would have spent many more years writing in assembly or machine code. C gave rise to many other languages, among which we commonly use including C#.

I used to grow tired of C, especially during the data structure lectures due to extensive use of pointers. As I grow up, I grow fonder of C, due to its simplicity compared to many high-level languages. I recommend everyone to learn C at least once in a lifetime, even though my “mother language” is Pascal.

Goodbye, Dennis Ritchie, you have made more than enough impact for the world.

 #include<stdio.h>
int main(){
    printf("goodbye, world.\n");
    return 0;
}
 

(and that, if I were allowed to suggest, would make a cool epitaph.)

LunaticNeko.com

P.S. We DO care about flooding in Thailand. The reason of not posting about it is, actually, we have many entries queued for posting, but we have to hold back due to term projects in the college.

Remembering Steve Jobs

Full statement from LunaticNeko.com regarding Steve Jobs’ passing.

cc: rememberingsteve/@/apple/./com

On this day came an unexpected and probably too untimely event. Steve Jobs, the founder of Apple, Inc., has passed away.

Steve Jobs was born on Feb. 24, 1955, when the information age was in its earlier years. After many years of journey in his career, he became one of the most influential men in silicon world. While I am not a big fan of Apple (or i-) products, I am always amazed by his inventions, philosophy, marketing, decisions, and that’s only the tip of the iceberg. Jobs is one of the not-so-many that shaped the technology of 20th and 21st centuries. His announcements of new products incite joy, shock, disbelief, and all kinds of emotions all over the world. His inventions serve to bring entertainment, creativity and productivity to mankind.

When I was a child, I saw an old Macintosh computer. I wondered if it was different from PC, as it looks not very different (at least from a child’s perspective.) Today Steve proved it. The Apple became a symbol of great identity and distinction in itself, and this identity spread across all of his products.

Today I am no longer a child. I woke up and heard on the radio about ” … founder of Apple Inc.” or something, in a “recounting fashion” or some style used to succeed the news of someone’s death. When I came to the faculty, I heard the truth. I was shocked that it was too soon. He should have lived longer to see Apple grow even further. But no man lives forever, not even the greatest emperor or richest gazillion-aire, and this fact was demonstrated today.

Steve was exemplary in his ways and will remain a great example of technologist for many decades to come. I fully know that his name will be immortalized everywhere. May he rest in peace and bid success to future generations of the trade.

– LunaticNeko

Note: That e-mail address above exists, and is used for this sole purpose. If you have something for Apple to hear, send to that address.

Welcome to LunaticNeko.com!

This entry is bilingual, served in Thai and English.

ไทย: สวัสดีครับ หลังจากที่ผมได้จดโดเมนใหม่ lunaticneko.com และ import posts มาจาก http://lunaticneko.blogspot.com แล้ว จนถึงวันนี้ ผมก็คิดว่าผมปรับแต่งพวก theme พวกอะไรจนพอจะเข้าที่แล้วละครับ ก็ขอยินดีต้อนรับและสวัสดีผู้อ่านทุกท่านอย่างเป็นทางการครับ จริงๆ แล้วพอย้ายมาเป็น WordPress แล้วค่อยรู้สึกว่าเว็บมันเป็นของตัวเองหน่อย โฮสก็มีเป็นของตัวเอง (ขอบคุณทาง it-2u.com สำหรับโฮสและการช่วยเหลือทางเทคนิคครับ) ปกติที่นี่เขาจะรับเฉพาะลูกค้าที่มาจ้างทำเว็บ แต่ของผมเสนอว่าจะทำบล็อกเอง เขาก็ยินดีครับ (ได้ไงก็ไม่รู้ 555+)

สำหรับงานนี้ก็คงจะตามรอยเดิมครับ คือมีอะไรผ่านมาในชีวิตก็เขียนบล็อก รำพันไร้สาระไปเรื่อย แต่คราวนี้คงพยายามทำให้มีสาระมากขึ้นนิดนึงตามวัยวุฒิและคุณวุฒิครับ ถ้าผิดถูกประการใดก็ขออภัยด้วยครับ พวก entry เก่าๆ ที่มาจาก blogspot อาจเละเทะไปบ้าง ตรงนี้ต้องขออภัยด้วยครับ แต่ผมก็พยายามทำทุกวิถีทางที่จะเก็บข้อมูลพวกนี้ไว้บนระบบใหม่ เพราะว่าจะได้มีไว้อ่านเผื่อ blogspot มันเกิดงอแงขึ้นมาครับ จะพยายามแก้เป็นระยะๆ ครับ เอาเป็นว่า หวังว่าบล็อกนี้คงเป็นบล็อกสุดท้ายแล้วละครับ จะพยายามไม่เปลี่ยนมันแล้ว T_T

สุดท้ายนี้ก็ … สุขสันต์วันเกิดพี่แก้ว [@KaewGB] นะครับเมี้ยวๆ ขอให้มีความสุขมากๆ นะครับ ^ ^”

~ LunaticNeko

English: Greetings. After I’ve registered a new domain name, lunaticneko.com, and imported posts from the old blog at http://lunaticneko.blogspot.com , I feel the blog is ready to go. The themes are set, and the coast seems to be clear. So, I give you, esteemed readers, a warm welcome and greetings. Actually, I feel “this is my own, very own” more after moving to WordPress and getting my new host. (Lots of thanks to it-2u.com team for the host and technical help!) The hosting company actually normally serve only customers who hire them to make a website, but I proposed to blog on their racks, and they’re okay. (Still don’t know how I got that lol)

For this blog, I’ll follow the same track: random stuffs in my life. Maybe some rants or things I meet. But, this time, I’ll try to make it a bit more suited to my level of education and seniority. The old entries from blogspot may seem odd and garbaged, I apologize for this. I have tried to make sure they survived the move, though, so that we can still access the content in case the blogspot whines or simply dies. I’ll do my best to fix them up. So, I hope this move will be the last. I’ll try not to move again. T_T

And, really finally, Happy Birthday @KaewGB!!! ^ ^”

~ LunaticNeko