Java Quiz

Question 1. Given this code fragment:

List<String> vitamins = new ArrayList<>();
vitamins.add("A");
vitamins.add("B12");
vitamins.add("C");
vitamins.set(1,"B");
vitamins.add(1,"D");
System.out.println(vitamins);

What is the result?

a. [A, D, B, C]

b. [A, D, C]

c. [D, B, C]

d. [D, B12, C]

Question 2. Given this code fragment:

1. class Engine { }
2. public class App {
3.     public static void main(String[] args) {
4.        Engine e = new Engine();
5.        Engine e1 = e;
6.        e = null;
7.     } 
8. }

Which statement is true about this code?

a. It creates an object and the object is eligible for garbage collection.

b. It creates an object and the object is not eligible for garbage collection.

c. It creates two objects: e and e1. The e object is eligible for garbage collection.

d. It creates two objects and both the objects are not eligible for garbage collection.

Question 3. Given this code fragment:

    double wage = 2.0;
    int weekDays = 5;
    long monDays = weekDays * 4;
    long yearDays = monDays * 12L;
    long totalWage = yearDays * wage; // line n4

Which modification enables the code to compile?

a. Replace line n1 with double wage = 2;
b. Replace line n2 with long monDays = weekDays * 4L;
c. Replace line n3 with long yearDays = monDays * 12;
d. Replace line n4 with long totalWage = yearDays * (long) wage;

Imported tables are not showing up in phpmyadmin

I have imported a .sql file as you did and then I went to phpmyadmin, selected the database and surprise: No tables in the database, but I went to mysql command line and did a SHOW TABLES and they do exist.

So this is what happened in my case, the original database had some VIEWS defined by a user that did not exist in my computer’s mysql users.
Example:

CREATE ALGORITHM=UNDEFINED DEFINER=admin@% SQL SECURITY DEFINER VIEW cantidades AS select (…)

The user phongtn@% was available on the original server from where I’ve exported the database, but not on my computer.

So the fix to this solution was either to add that user, or to drop the views and create them again with a existing user.I have choosen the second option:

DROP VIEW cantidades;
CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW cantidades AS select (…)

Monitor progress of data

The pv command allows you to see the progress of data through a pipeline.
Because default pv command is not installed. Type the following:

#yum install pv

Ok, try this:

pv dumpfile.sql | mysql -uxxx -pxxx dbname

will show a progress bar as the program runs.

Sample output:

[root@server5]# pv mysql-chicken_war.30-10-2013-14_00_01 | mysql -uroot -p chicken_war
Enter password:
718MB 0:05:21 [2.23MB/s] [=================================================>]100%

Ok, try to login to phpMyadmin. Hmmm, I cant see any tables?
Back to sql command. Type the following:

mysql> show tables;

mysql> SELECT table_name FROM information_schema.tables where table_schema = DATABASE();

Sample output:

ERROR 1143 (42000): SELECT command denied to user ”@’localhost’ for column ‘xxxx’ in table ‘xxxx’

I can see has problem with permission on column ‘xxx’. Try to fix it, problem solved.

Enjoy!

MYSQL: GETTING ROW POSITION IN RESULT SET

In some cases we want to know position of specific row in result set. For example when we use pagination and want to know on which page specific element is. If we don’t use ORDER BY with non-unique field, we can use simple query:

SELECT COUNT(*) FROM TABLE WHERE id <= ELEMENT_ID

The result will be position of element with id equal to ELEMENT_ID, assuming that result is ordered by id field. If we use other field in ORDER BY, we have to change WHERE clause, for instance:

SELECT COUNT(*) FROM TABLE r WHERE creation_time >= ELEMENT_CREATION_TIME_FIELD ORDER BY creation_time DESC

Note that in WHERE clause greater-equal is used instead of less-equal, because DESC instead of ASC (default) is used.

Unfortunately this approach won’t work when we use ORDER BY with non-unique field. In that case we have to use MySQL user variable.

Example: getting row position for row identified by specified id.

SET @i = 0;
SELECT POSITION FROM (
    SELECT id, @i:=@i+1 AS POSITION
    FROM TABLE ti
 ) t WHERE id=ID

Caution: if you use PHP, remember that you have to execute two queries, first for SET and second for SELECT one.
If you want to use SELECT query more than once, remember to set i variable each time.

As you can see above – trick is about incrementing i variable on each row, and fetching position of interesting row.

We can also use this technique when result set is ordered.
Example: getting row position for row identified by specified id in ordered query

SELECT POSITION FROM (
    SELECT id, @i:=@i+1 AS POSITION
    FROM TABLE ti
    ORDER BY creation_time DESC
 ) t WHERE id = ID;

Another thing we can achieve is getting row located on specified position.
Example: Getting row located on position 2

SELECT id FROM (
    SELECT id, @i:=@i+1 AS POSITION
    FROM TABLE ti
    ORDER BY creation_time DESC
 ) t WHERE POSITION = 2;

Top 10 Java Books

1. Java Programming Language By Ken Arnold, James Gosling, David Holmes

Direct from the creators of the Java, The Java Programming Language is an indispensible resource for novice and advanced programmers alike. Developers around the world have used previous editions to quickly gain deep understanding of the Java programming language, its design goals, and how to use it most effectively in real-world development. The authors systematically conver most classes in Java’s main packages, java.lang.*, java.util, and java.io, presenting in-depth explanations of why these classes work as they do, with informative examples. Several new chapters and major sections have been added, and every chapter has been updated to reflect today’s best practices for building robust, efficient, and maintainable Java software.

Above are extracts from the book index page.

2. Head First Java By Kathy Sierra, Bert Bates

Its unique approach not only shows you what you need to know about Java syntax, it enables and encourages you to think like a Java programmer. Mastering object oriented programming requires a certain way of thinking, not just a certain way of writing code. The latest research in cognitive science, neurobiology, and educational psychology shows that learning at the deeper levels takes a lot more than text on a page. Actively combining words and pictures not only helps in understanding the subject, but in remembering it. According to some studies, an engaging, entertaining, image-rich, conversational approach actually teaches the subject better. Head First Java puts these theories into practice with a vengeance.

Above lines are copied from Google books read more here.

3. Thinking In Java By Bruce Eckel

Eckel introduces all the basics of objects as Java uses them, then walks carefully through the fundamental concepts underlying all Java programming — including program flow, initialization and cleanup, implementation hiding, reusing classes, and polymorphism. Using extensive, to-the-point examples, he introduces exception handling, Java I/O, run-time type identification, and passing and returning objects. Eckel also provides an overview of the Key Technology of the Java2 Enterprise Edition platform (J2EE).

Above lines are copied from Google books read more here.

I am not a big fan of SCJP Exam, but A Programmer’s Guide to Java SCJP Certification is much more than a certification guide. It gives you an insight in to Java, the tips and tricks. SCJP Sun Certified Programmer for Java 5 Study Guide By Kathy Sierra, Bert Bates is a go to book if you are mad about SCJP. Better to read these books than spending time in reading question dumps, these books will help you much more than clearing the exam in your career.

4. A Programmer’s Guide to Java SCJP Certification: A Comprehensive Primer By Khalid Azim Mughal, Rolf Rasmussen

This book will help you prepare for and pass the Sun Certified Programmer for the Java Platform SE 6 (CX-310-065) Exam. It is written for any experienced programmer (with or without previous knowledge of Java) interested in mastering the Java programming language. It contains in-depth explanations of the language features. Their usage is illustrated by way of code scenarios, as required by the exam. Numerous exam-relevant review questions to test your understanding of each major topic, with annotated answers Programming exercises and solutions at the end of each chapter Copious code examples illustrating concepts, where the code has been compiled and thoroughly tested on multiple platforms Program output demonstrating expected results from running the examples Extensive use of UML (Unified Modelling Language) for illustration purposes

Above lines are copied from Google books read more here.

OK, so you got to know Java and been working in it for couple of years its time to take the next step. Everything in this world has good and bad. Java language if not used the way is supposed to be, can make your life miserable. When you write code, its written for future. Writing good Java code is an art that needs lot more skill than knowledge of basic Java. Here I would like to introduce the next set of 4 books that can make you a master in the trade.

The Pragmatic Programmer is not really a Java book but is a self help book for any programmer. It is a great book covering various aspects of software development and is capable in transforming you to a Pragmatic Programmer.

5. The Pragmatic Programmer, From Journeyman To Master By Andrew Hunt, David Thomas

Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether you’re a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you’ll quickly see improvements in personal productivity, accuracy, and job satisfaction. You’ll learn skills and develop habits and attitudes that form the foundation for long-term success in your career. You’ll become a Pragmatic Programmer.

Above lines are copied from Google books read more here.

So, we wrote code. It is time to add some style. The elements of Java style is one of the earliest documentation on the style part of Java including its various aspects.

6. The elements of Java style By Scott Ambler, Alan Vermeulen

Many books explain the syntax and basic use of Java; however, this essential guide explains not only what you can do with the syntax, but what you ought to do. While illustrating these rules with parallel examples of correct and incorrect usage, the authors offer a collection of standards, conventions, and guidelines for writing solid Java code that will be easy to understand, maintain, and enhance. Java developers and programmers who read this book will write better Java code, and become more productive as well.

Above lines are copied from Google books read more here.

Now, we know how to write code in style. But is it best is class? Does it uses the best practices? Effective Java is one of the best book on best practices is a favourite book for many Java developers.

7. Effective Java By Joshua Bloch

Joshua brings together seventy-eight indispensable programmer’s rules of thumb: working, best-practice solutions for the programming challenges you encounter every day. Bloch explores new design patterns and language idioms, showing you how to make the most of features ranging from generics to enums, annotations to autoboxing. Each chapter in the book consists of several “items” presented in the form of a short, standalone essay that provides specific advice, insight into Java platform subtleties, and outstanding code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why.

Above lines are copied from Google books read more here

Then, you know the good, it is time for the bad stuff. Bitter Java is one of the first book to bring up the Anti-patters in Java. There are various articles and books on Anti-patterns and code smells and is an area where there is lots of space to learn. There are many other books on this topic I am adding this book as a starting point.

8. Bitter Java By Bruce Tate

Intended for intermediate Java programmers, analysts, and architects, this guide is a comprehensive analysis of common server-side Java programming traps (called anti-patterns) and their causes and resolutions. Based on a highly successful software conference presentation, this book is grounded on the premise that software programmers enjoy learning not from successful techniques and design patterns, but from bad programs, designs, and war stories — bitter examples. These educational techniques of graphically illustrating good programming practices through negative designs and anti-patterns also have one added benefit: they are fun.

Above lines are copied from Google books read more here

Many say you need to know Design Patterns, if you want grow as a developer. So I thought of mentioning the best Design pattern book that I have read. It is not a reference book nor it contains the patters catalogue but the book explains the Object Oriented Design Principles that are as important as the patters. Use the book Design patterns: elements of reusableobject-oriented software if you are looking for a reference book.

9. Head First design patterns By Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates

You know you don’t want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns–the lessons learned by those who’ve faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others. Using the latest research in neurobiology, cognitive science, and learning theory, Head First Design Patterns will load patterns into your brain in a way that sticks. In a way that lets you put them to work immediately. In a way that makes you better at solving software design problems, and better at speaking the language of patterns with others on your team.

Above lines are copied from Google books read more here

If your are a master at coding and designing application using Java its time to crack the JVM. I have read that ‘The Java language specification’ is the best book to do that. I have not got the patience or skill to read the book but is an interesting pick if you want to cross the line.

10. The Java language specification

The book provides complete, accurate, and detailed coverage of the Java programming language. It provides full coverage of all new features added in since the previous edition including generics, annotations, asserts, autoboxing, enums, for each loops, variables, methods and static import clauses.

Above are extracts from the book index page.

In these web-years online resources may be more reachable than books, but I fell these books will help in tuning you to a better Java programmer.

 

Python 3.3 + Sublime

python3.3-invaid-sytax

Tôi cần viết 1 đoạn script bằng python để lấy dữ liệu từ server.

Việt đầu tiên cần làm là down load bộ cài python từ trang chủ . Tôi khuyến cáo các bạn nên đọc kỹ nội dung tại phần này. Có khá nhiều chú ý cần ghi nhớ.

Tiếp đến là cấu hình Sublime với một số package bổ trợ: SublimeRope, SublimeLinter, SublimeREPL.

Xong, bắt tay thử 1 vài dòng để tìm lại cảm giác.

print ‘Hello Python’

Ctrl + B để build

Output: SyntaxError: invalid syntax

Wtf? Tôi săm soi khá kỹ đoạn code. Không có gì bất thường cả, thử chạy lại 1 lần nữa.

Output vẫn báo 1 lỗi ngớ ngẩn: ‘SyntaxError: invalid syntax

Hừm, có gì nhầm lẫn chăng, tôi google thử 1 số đoạn code python. Tất cả đều y chang, tôi download thử 1 gói ví dụ mẫu từ google tại đây. Giải nén và săm soi, hừm, tất cả đều sử dụng ‘print‘ cho lệnh in ra màn hình. Build thử đoạn ví dụ hello.py từ google và chạy.

Output ngay lập tức thông báo ‘SyntaxError: invalid syntax

Hừ, rõ ràng là có vấn đề rồi, trấn tĩnh lại 1′ tôi lục Document của python ra đọc.

Hơi bất ngờ vì từ sau lần cuối cùng tôi sử dụng python thì đã có tới 6 phiên bản của python được phát hành. Phiên bản cuối cùng tôi sử dụng là 2.5 còn phiên bản hiện tại khi viết post này là 3.3.0.

Mục đầu tiên cần đọc ngay là “What’s new in Python 3.0”, tức là phiên bản kế tiếp sau 2.5.

Hừ! tôi đã có câu trả lời, từ phiên bản 3.0 Python đã thay thế lệnh ‘print’ bằng hàm ‘print’ .Do vậy cú pháp có thay đổi đôi chút. Chi tiết:

Old: print "The answer is", 2*2
New: print("The answer is", 2*2)

Old: print x,           # Trailing comma suppresses newline
New: print(x, end=" ")  # Appends a space instead of a newline

Old: print              # Prints a newline
New: print()            # You must call the function!

Old: print >>sys.stderr, "fatal error"
New: print("fatal error", file=sys.stderr)

Old: print (x, y)       # prints repr((x, y))
New: print((x, y))      # Not the same as print(x, y)!

Bài học ở đây:

“Read the fucking manual” là cần thiết mỗi khi bắt đầu.

Háu táu, vội vàng luôn là điều cấm kỵ trong lập trình.

Cho dù bạn tự tin đến đâu hãy luôn chuẩn bị tinh thần sẵn sàng fix bug.

Chào nhé, những âu lo

Đón năm mới với cái tài khoản rỗng tuếch .Công việc vẫn ngập đầu và những khoản nợ thì vẫn còn đó .và chủ nợ thì vẫn hàng ngày thúc giục .Vừa mới qua thôi vẫn còn  bù khú, hát hò nhảy múa…Để hôm nay lại giật mình xót xa và ân hận, tủi hổ vì vài tiếng đồng hồ hoang phí trước đấy.

Nhận ra vẫn chưa chín đủ để gọi là trưởng thành…Buồn, tự hổ thẹn với chính mình .

Thèm lắm một sáng thức giậy vô tư lự, thả hồn, thả mình hít hà cái không khí của buổi sớm mai…

Sắp rồi, phải cố lên thôi .Chào nhé 1 năm đầy những giông bão, đến với ta nào những ngày tháng mới .Vững vàng lên nào hỡi tôi ơi…

P/S: lan man quá, quay lại làm việc thôi

Bàn tay của mẹ

Một thanh niên học hành rất xuất sắc nộp đơn vào chức vụ quản trị viên cho một công ty lớn. Anh ta vừa qua được buổi phỏng vấn đầu tiên, ông giám đốc trực tiếp phỏng vấn lần cuối để quyết định nhận hay không nhận.

Viên giám đốc xem xét học bạ của anh thanh niên. Tất cả đều rất tốt vì năm nào, từ bậc trung học đến các chương trình nghiên cứu sinh sau đại học, anh cũng đều xuất sắc, không năm nào mà anh thanh niên này không hoàn thành vượt bực.

Viên giám đốc hỏi:

– “Anh đã được học bỗng nào của trường nào chưa?”

Người thanh niên đáp:

– “Thưa, không ạ”

Viên giám đốc lại hỏi tiếp:

– “Thế cha anh trả học phí cho anh đi học à?”

Anh đáp:

– “Cha tôi chết khi tôi vừa mới một tuổi đầu. Mẹ tôi mới là người lo trả học phí cho tôi học tập”

Viên giám đốc lại hỏi:

-“Mẹ của anh làm việc ở đâu vậy?”

Anh đáp:

– “Thư, mẹ tôi giặt áo quần cho các tiệm giặt là!”.

 

Viên giám đốc bảo người thanh niên đưa đôi bàn tay cho mình xem. Anh thanh niên đưa hai bàn tay mịn màng và rất đẹp của mình cho ông giám đốc xem.

Viên giám đốc hỏi:

– “Vậy từ trước nay, anh có bao giờ giúp mẹ mình giặt giũ áo quần không?”

-“Chưa bao giờ cả bỡi mẹ luôn bảo tôi phải lo học và đọc thêm nhiều sách. Hơn nữa, mẹ tôi giặt áo quần nhanh hơn tôi nhiều.”Người thanh niên đáp.

Viên giám đốc dặn:

-“Tôi có một việc yêu cầu anh làm, anh thực hiện được không ?”

– Gì ạ ?

-“Hôm nay khi về nhà, anh xin mẹ mình để anh lau sạch bàn tay bà và rồi ngày mai đến gặp tôi nhé . ”

Người thanh niên cảm thấy công việc này quá dễ và mình có thể làm rất tốt. Nên khi vừa về đến nhà, chàng liền thưa với mẹ để xin mẹ được lau sạch đôi bàn tay của bà. Mẹ anh cảm thấy rất ngạc nhiên nhưng vẫn sung sướng và rồi cũng buồn buồn đưa đôi bàn tay mình cho con trai.

Chàng thanh niên từ từ lau sạch đôi bàn tay của mẹ. Khi lau, nước mắt bỗng tuôn ràn rụa bỡi đây là lần đầu tiên anh mới khám phá ra rằng trên đôi tay nhăn nheo của mẹ mình đầy những vết chai, sần sùi. Những vết sần này làm bà đau nhức đến rùng mình dù chỉ được lau bằng nước sạch. Lần đầu tiên trong đời, anh thanh niên nhận thức được rằng, chính từ đôi bàn tay giặt quần áo mỗi ngày này của mẹ đã giúp anh có cái ăn cái mặc, tiền bạc tiêu xài và trả học phí cho anh đến trường qua nhiều năm rồi.

Những vết chai trên đôi bàn tay của mẹ là cái giá phải trả cho đến ngày anh tốt nghiệp, cho những xuất sắc trong học vấn và cho cả tương lai sẽ tới của anh.

Sau khi lau sạch đôi tay của mẹ, anh thanh niên lặng lẽ giúp mẹ giặt hết phần áo quần còn lại mà mẹ anh vẫn làm hằng ngày khi mang từ tiệm về.

Tối đó, hai mẹ con mới chuyện trò với nhau thật là lâu, điều mà từ trước đến giờ họ ít khi làm.

Sáng hôm sau, người thanh niên tới gặp ông giám đốc.

Viên giám đốc để ý thấy những giọt nước mắt chưa ráo hết trong đôi mắt của người thanh niên, ông hỏi:

– “Anh có thể cho tôi biết những gì anh đã làm và đã cảm nhận được hôm qua ở nhà mình không?”

Người thanh niên đáp:

-“Tôi đã lau sạch đôi tay của mẹ mình và cũng đã giặt hết phần áo quần còn lại mà hàng ngày mẹ tôi đã làm .”

Viên giám đốc hỏi

-“Thế cảm tưởng của anh như thế nào?”

Người thanh niên đáp:

– “Thứ nhất, bây giờ tôi mới hiểu thế nào là ý nghĩa của lòng biết ơn. Không có mẹ, tôi không thể có được những thành công được như bây giờ. Thứ hai, qua việc hợp tác với nhau, và qua việc giúp mẹ giặt quần áo, giờ tôi mới ý thức rằng thật là khó khăn và gian khổ để hoàn tất công việc của mẹ. Thứ ba, tôi biết ơn sự quan trọng và giá trị của quan hệ gia đình.”

Viên giám đốc nói:

– “Ðây mới là những gì tôi đang tìm kiếm nơi người sẽ là quản trị viên trong công ty của chúng tôi. Tôi muốn tuyển dụng một người biết ơn sự giúp đỡ của những người khác, một người cảm thông sự chịu đựng của những người khác để hoàn thành nhiệm vụ, và một người không chỉ nghĩ đến tiền bạc là mục đích duy nhất trong cuộc đời mình. .”

Internet

Tôi đang thay đổi!

Con đường bạn đi do chính bạn chọn
“Bạn không nên quyết định hai lần cho một vấn đề. Hãy dành đủ thời gian và suy nghĩ để ra một quyết định đúng đắn ngay lần đầu tiên để bạn không phải quay lại vấn đề một cách không cần thiết. Nếu bạn quá mong muốn xem xét lại các quyết định, bạn không chỉ làm ảnh hưởng đến quy trình công việc của bạn mà còn làm ảnh hưởng đến những tâm thế, động lực mà bạn đã có được của lần ra quyết định đầu tiên”
– Bill Gate –