Total Pageviews
2012/04/04
12 Ways to Become a Better Programmer
1. Read Other People’s Code
Reading other people’s code will allow you to understand different points of view in problem solving as well as introduce you to new techniques. It is important to have an objective to your reading, such as learning a new programming paradigm or how to work with a new API.
2. Develop Personal Motivation
Being motivated to become better at your chosen profession is an excellent step in the right direction.
3. Get a Mentor
This should be a person that you aspire to be like professionally, that has a background that you can relate to and that you have a lot to learn from.
4. Learn to Listen
Learn to listen to what the customer has to say, listen to your coworkers when they are discussing the project. Don’t assume that what you think is really what they want.
5. Gain Confidence
Why are good programmers so confident? They know they have put in the time and effort necessary to truly understand what they are talking about. This knowledge enables them to make the best decisions and be able to discuss or defend them in a productive way when needed.
6. Join a User Group
hese groups are usually structured around two concepts: teaching and networking. Not only will you be able to learn something new at each monthly presentation but you will gain valuable contacts in your industry that could later lead to internships, jobs or mentors.
7. Read at Least Two Books a Month
By reading books you will be focusing and exploring a concept in depth as opposed to “grazing” on information such as blogs, tweets and other online reading that rarely goes in-depth on a topic. This way, you will be better able to take these lessons and concepts and apply them to the real world.
8. Learn to Use Your Debugger
For some programmers, finding bugs means you did not spend enough time planning or that you have been sloppy during your code writing. Errors in your code should not be taken personally. Humans will continue to make mistakes and that is something we have to accept. Stop looking at your debugger as an evil you need to avoid and see it as a tool you can use to create better code.
9. Never Stop Learning
Over the years the continuous pattern of framework upgrades, version numbers and release dates start to run together but you must keep your skills up to date by evaluating new technology and trends as they are happening.
10. Share Your Knowledge
The best way to learn something is to teach it to someone else.
11. Learn Keyboard Shortcuts
For programmer this means knowing how to type quickly and accurately as well as know your way around keyboard shortcuts that will make you a faster developer.
12. Learn When to Take a Break
When working on a task such as programming that requires concentration, you will often find that you are making more mistakes or creating more problems when you are tired. Stopping programming is often a better solution when tired than having to fix the mess you made.
http://www.learncomputer.com/12-ways-to-become-better-programmer/
Labels:
網路文章
2012/03/31
6 things they didn't teach me at the academy - Prepare yourself better for a developer's life
Looking for your first position in the software world?
Want to know more about developer's life?
Here present you with 6 essential points that will help you in your upcoming venture:
Want to know more about developer's life?
Here present you with 6 essential points that will help you in your upcoming venture:
- Understanding the structure of a software company: in most cases there will be a distinction between Developers, QA's/Testers, Support, Product and IT. Understanding this structure beforehand will help a candidate understand the job description he is interviewing for.
- Development Methodologies: Waterfall or Scrum, Agile or not,
- Code Management tools and processes: code repository tools, Continuous Build , Integration Test, Issue tracking systems
- Coding guidelines.
- IDE usage.
- Utilizing the power of open source.
Labels:
網路文章
2012/03/28
6 Tips to Stay Focused on Project Deadlines
1. Be a perfectionist
If you always look for that perfect design (nothing wrong with this, by the way) you will find yourself spending more time analyzing then actually finishing the project. This needs to be worked out, as the client expects you to finish your work on time.
2. Pre-defined time for each task
A solid plan means working on a specific task one at a time. This will ensure you stay fully focused on the one task you have to do and therefore finish earlier or at least in time.
3. Have a daily plan
Having a daily plan is good for your confidence. Keeping a close eye on every phase of a project will likely make you feel better at the end of each day. If you manage to do something every day (and keep track of it) you will feel accomplished more often.
4. Work breakdown structure (WBS)
Having a to-do list might work well for small projects, but once you start working on a larger scale, small lists might not be so effective.
If you have lists with large, complicated activities, checking them off at the end of the day is not likely to happen, therefore you need to break the work down into smaller bits. Having sub-lists with smaller tasks will be more rewarding for you at the end of the day.
5. Larger scale management
Besides the small to-do lists and the WBS you do quite often, having a detailed monthly schedule is also recommended. Planning in advance can’t go wrong when you think of it very well.
6. Reward yourself
It makes you look forward to reaching your goals and to the next week.
" it is impossible to be good at maintaining your schedule if you are not organized."
Reference : http://www.1stwebdesigner.com/design/tips-to-stay-focused-project-deadlines/
Labels:
Project Management
2012/03/21
WebSphere Application Server Performance Tuning Toolkit
IBM has released the WebSphere Application Server Performance Tuning Toolkit that gives the ability to monitor multiple WebSphere Application Servers from an eclipse workspace*.
This tools uses WAS Performance Monitoring statistics to get and chart statistics that indicate the health and well being of your server.
* Please note that the tool has been released on an as-is basis with no support.
Read more: http://www.javacodegeeks.com/2012/03/websphere-application-server.html#ixzz1plNsrVKx
This tools uses WAS Performance Monitoring statistics to get and chart statistics that indicate the health and well being of your server.
* Please note that the tool has been released on an as-is basis with no support.
Read more: http://www.javacodegeeks.com/2012/03/websphere-application-server.html#ixzz1plNsrVKx
Labels:
WebSphere
iReport : Reprint header
Problem
When I export my report to pdf format, the data split into multiple pages.
The report header should print for each page, but it only print once.
Root Cause
Here has one group options to do reprint
- Reprint header : If you want to reprint the group header on each page, check this option.
Step by step
Labels:
iReport
2012/03/08
高績效主管的8堂必修課
- 發掘部屬強項 : 了解部屬的優點,才能適才適所、將對的人放在正確的位置上,以發揮更大的生產效能
- 與部屬分享資訊 : 了解公司的使命、清楚該為何而戰
- 傾聽部屬心聲 : 唯有放下成見,願意閉上嘴巴、聆聽部屬心聲,主管才能對員工產生影響力,創造更大的績效
- 保護部屬 : 執行任務的過程中,如果遇上任何阻礙,主管都必須在第一時間跳出來排解,或者適時爭取部屬應得的權益
- 清楚設定目標 : 設定目標也能預防雙方對「該做的事」認知不一致,創造有效率的生產行為
- 讚美部屬 : 在部屬照著原先設定的目標努力,並達到所謂的「好的結果」時,主管就要立刻給予回饋,使部屬了解自己做對了,往後也能擁有更好的動能,繼續努力做出對的事
- 斥責部屬 : 針對事件、不牽涉人格的指正,它必須在部屬犯錯的當下執行,讓他知道這是嚴重的錯誤,才能有效預防再犯
- 授權與賦權部屬 : 主管的任務在於提升團隊的總產出,因此,主管更需要授權,才能擁有充分的時間,拓展新業務、協助部屬成長,讓團隊產出繼續增值
http://www.managertoday.com.tw/?p=11328
15 Tenets For The Software Engineer
- Remember the basics : If you forget the basics of a programming language, you lose your foundational knowledge.
- Always assume the worst case.
- Test your code.
- Do not employ new technologies because they are new, use them because they solve a problem : Utility is the key, not coolness.
- Read, a lot.
- Try new techniques and technologies, a lot.
- Fail, you will learn something.
- Ship the damn software : Sometimes you just need to get the job done, but you must be aware of technical debt. If you continuously just ship software without removing technical debt, you are well on your way to creating a nightmare when a major production issue arises.
- Do it the “right way”.
- Leave the code better than how you found it.
- Think about concurrent access.
- Storage may be free, but I/O sucks.
- Memory does not go as far as you may think.
- Caching fixes everything until it crashes the server.
- Think like a consultant : As an employee, you need to use your power to state that the deadline can not move due to the amount of work required, or that scope cannot be increased without increasing the number of resources. Consultants tend to be allowed to manage a project differently than employees, and it is our job to change that.
Get further information:
Labels:
網路文章
Autotab: jQuery auto-tabbing and filter plugin
Requirement
We have five input text fields in this page.- As we filled in 3 characters in dlv_unit(移送單位), system should automatically set focus to tax_cd(稅別).
- As we filled in 2 characters in tax_cd(稅別) , system should automatically set focus to dlv_yr(移送年度).
- As we filled in 3 characters in dlv_yr(移送年度) , system should automatically set focus to flg_tp(申報年度).
- As we filled in 1 characters in flg_tp(申報年度), system should automatically set focus to serial_no(流水號).
Introduction
Autotab is a jQuery plugin that provides auto-tabbing and filtering on text fields in a form. Once the maximum number of characters has been reached within a defined text fields, the focus is automatically set to the defined target of the element.Download
jQuery Autotab Plugin v1.1b (1867021)Basic Usage
1. Include jquery.autotab.js in your HTML:2. Add your text fields in your HTML, including an ID:
3. Initialize Autotab on your text fields with a ready() handler:
Labels:
jQuery
iReport : text alignment
Requirement
Utilize JasperReports to print name and adrress on envelope. Name and addess should print from top to down.
Concerning text alignment, iReport has three attributes:
Examples of combining horizontal alignment, vertical alignment and rotation in a element.
The resulting paragraph will be horizontally aligned left, vertically aligned top, and the text will flow from top to bottom.
Running this sample
Utilize JasperReports to print name and adrress on envelope. Name and addess should print from top to down.
- textAlignment - Values allowed for the horizontal alignment are: Left, Center, Right and Justified. By default, horizontal alignment is set to Left.
- verticalAlignment - Values allowed for the vertical alignment are: Top, Middle and Bottom. By default, vertical alignment is set to Top.
- rotation - Values allowed for the text rotation are: None, Left, Right and UpsideDown. By default, text rotation is set to None.
Examples of combining horizontal alignment, vertical alignment and rotation in a
The resulting paragraph will be horizontally aligned left, vertically aligned top, and the text will flow from top to bottom.
Running this sample
Labels:
iReport
2012/02/14
Apply IS_IGNORE_PAGINATION when export to CSV in JasperReports
Problem
I'm writing a report which needs to be exported to pdf and CSVformat.
when output format is CSV, it should be ignore pagination.
The screenshot as bellowing is wrong, it has pagination in CSVfile:
Solution
JasperReports provides IS_IGNORE_PAGINATION.
It is a fill-time parameter, therefore you'll have to set it when filling the report:
See...CSV file does not have pagination after set IS_IGNORE_PAGINATION to TRUE.
I'm writing a report which needs to be exported to pdf and CSVformat.
when output format is CSV, it should be ignore pagination.
The screenshot as bellowing is wrong, it has pagination in CSVfile:
JasperReports provides IS_IGNORE_PAGINATION.
It is a fill-time parameter, therefore you'll have to set it when filling the report:
params.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
JasperFillManager.fillReport(jasperReport, params, dataSource);
See...CSV file does not have pagination after set IS_IGNORE_PAGINATION to TRUE.
Labels:
JasperReport
2012/02/06
20 Database Design Best Practices
- Use well defined and consistent names for tables and columns (e.g. School, StudentCourse, CourseID ...).
- Use singular for table names (i.e. use StudentCourse instead of StudentCourses). Table represents a collection of entities, there is no need for plural names.
- Don’t use spaces for table names. Otherwise you will have to use ‘{‘, ‘[‘, ‘“’ etc. characters to define tables (i.e. for accesing table Student Course you'll write “Student Course”. StudentCourse is much better).
- Don’t use unnecessary prefixes or suffixes for table names (i.e. use School instead of TblSchool, SchoolTable etc.).
- Keep passwords as encrypted for security. Decrypt them in application when required.
- Use integer id fields for all tables. If id is not required for the time being, it may be required in the future (for association tables, indexing ...).
- Choose columns with the integer data type (or its variants) for indexing. varchar column indexing will cause performance problems.
- Use bit fields for boolean values. Using integer or varchar is unnecessarily storage consuming. Also start those column names with “Is”.
- Provide authentication for database access. Don’t give admin role to each user.
- Avoid “select *” queries until it is really needed. Use "select [required_columns_list]" for better performance.
- Use an ORM (object relational mapping) framework (i.e. hibernate, iBatis ...) if application code is big enough. Performance issues of ORM frameworks can be handled by detailed configuration parameters.
- Partition big and unused/rarely used tables/table parts to different physical storages for better query performance.
- For big, sensitive and mission critic database systems, use disaster recovery and security services like failover clustering, auto backups, replication etc.
- Use constraints (foreign key, check, not null ...) for data integrity. Don’t give whole control to application code.
- Lack of database documentation is evil. Document your database design with ER schemas and instructions. Also write comment lines for your triggers, stored procedures and other scripts.
- Use indexes for frequently used queries on big tables. Analyser tools can be used to determine where indexes will be defined. For queries retrieving a range of rows, clustered indexes are usually better. For point queries, non-clustered indexes are usually better.
- Database server and the web server must be placed in different machines. This will provide more security (attackers can’t access data directly) and server CPU and memory performance will be better because of reduced request number and process usage.
- Image and blob data columns must not be defined in frequently queried tables because of performance issues. These data must be placed in separate tables and their pointer can be used in queried tables.
- Normalization must be used as required, to optimize the performance. Under-normalization will cause excessive repetition of data, over-normalization will cause excessive joins across too many tables. Both of them will get worse performance.
- Spend time for database modeling and design as much as required. Otherwise saved(!) design time will cause (saved(!) design time) * 10/100/1000 maintenance and re-design time.
Read more: http://www.javacodegeeks.com/2012/02/20-database-design-best-practices.html#ixzz1lZ2GPfDI
Labels:
Database
2012/02/03
50 Most Frequently Used UNIX / Linux Commands (With Examples)
1. tar command
2. grep command
3. find command
4. ssh command
5. sed command
6. awk command
7. vim command
8. diff command
9. sort command
10. export command
11. xargs command
12. ls command
13. pwd command
14. cd command
15. gzip command
16. bzip2 command
17. unzip command
18. shutdown command
19. ftp command
20. crontab command
21. service command
22. ps command
23. free command
24. top command
25. df command
26. kill command
27. rm command
28. cp command
29. mv command
30. cat command
31. mount command
32. chmod command
33. chown command
34. passwd command
35. mkdir command
36. ifconfig command
37. uname command
38. whereis command
39. whatis command
40. locate command
41. man command
42. tail command
43. less command
44. su command
45. mysql command
46. yum command
47. rpm command
48. ping command
49. date command
50. wget command
ORA-12704: character set mismatch
Problem
As I execute this SQLstatement
It showed this error message
ORA-12704: 字元設定不符合
12704. 00000 - "character set mismatch"
*Cause: One of the following
- The string operands(other than an nlsparams argument) to an
operator or built-in function do not have the same character
set.
- An nlsparams operand is not in the database character set.
- String data with character set other than the database character
set is passed to a built-in function not expecting it.
- The second argument to CHR() or CSCONVERT() is not CHAR_CS or
NCHAR_CS.
- A string expression in the VALUES clause of an INSERT statement,
or the SET clause of an UPDATE statement, does not have the
same character set as the column into which the value would
be inserted.
- A value provided in a DEFAULT clause when creating a table does
not have the same character set as declared for the column.
- An argument to a PL/SQL function does not conform to the
character set requirements of the corresponding parameter.
*Action:
第 97 行, 資料欄: 133 發生錯誤
Root Cause
The problem result from NIGT007.ADTR_NM is NVARCHAR2.
But the case-when-else statement return empty string in else statement. The empty string is VARCHAR2.
That's why it complains "character set mismatch". What we need to do is do casting.
As I execute this SQLstatement
1: SELECT .....(ignore)
2: CASE
3: WHEN NIGT001.TAX_CD='15'
4: THEN (SELECT NIGT007.ADTR_NM
5: FROM NIGT007
6: WHERE NIGT001.PRST_ADTR_CD = NIGT007.ADTR_STAFF_CD(+) )
7: ELSE ''
8: END AS ADTR_NM
9: FROM NIGT001,NIGT013,NIGT007, ......(ignore)
10: WHERE ......(ignore)
11: ORDER BY .....(ignore)
It showed this error message
ORA-12704: 字元設定不符合
12704. 00000 - "character set mismatch"
*Cause: One of the following
- The string operands(other than an nlsparams argument) to an
operator or built-in function do not have the same character
set.
- An nlsparams operand is not in the database character set.
- String data with character set other than the database character
set is passed to a built-in function not expecting it.
- The second argument to CHR() or CSCONVERT() is not CHAR_CS or
NCHAR_CS.
- A string expression in the VALUES clause of an INSERT statement,
or the SET clause of an UPDATE statement, does not have the
same character set as the column into which the value would
be inserted.
- A value provided in a DEFAULT clause when creating a table does
not have the same character set as declared for the column.
- An argument to a PL/SQL function does not conform to the
character set requirements of the corresponding parameter.
*Action:
第 97 行, 資料欄: 133 發生錯誤
Root Cause
The problem result from NIGT007.ADTR_NM is NVARCHAR2.
But the case-when-else statement return empty string in else statement. The empty string is VARCHAR2.
That's why it complains "character set mismatch". What we need to do is do casting.
1: SELECT .....(ignore)
2: CASE
3: WHEN NIGT001.TAX_CD='15'
4: THEN (SELECT NIGT007.ADTR_NM
5: FROM NIGT007
6: WHERE NIGT001.PRST_ADTR_CD = NIGT007.ADTR_STAFF_CD(+) )
7: ELSE CAST('' as NVARCHAR2(10)) --do cast here
8: END AS ADTR_NM
9: FROM NIGT001,NIGT013,NIGT007,, ......(ignore)
10: WHERE ......(ignore)
11: ORDER BY .....(ignore)
Labels:
Oracle
2012/01/18
4 tips to improve performance of Java application with database
Java database performance tips 1:
Find out how many database calls you are making and minimize those believe it or not if you see performance in seconds than in most cases culprit is database access code. since connecting todatabase requires connections to be prepared, network round trip and processing on database side, its best to avoid databasecall if you can work with cached value. even if your application has quite dynamic data having a short time cache can save many database round trip which can boost your java applicationperformance by almost 20-50% based on how many calls got reduced.
Java database performance tips 2:
Check whether your database has indexed on columns if you are reading from database.
Java database performance tips 3:
Use PreparedStatement or Stored Procedure for executing query Prepared Statements are much faster than normal Statement object as database can pre-compile them and also cache there query plan.
Java database performance tips 4:
Use Connection Pool for holding Database Connections.
Labels:
網路文章
2012/01/17
Java Comparator Example
If you have a List of the employee objects then you need to use Collections.sort() method to sort the list holding employee objects. Below example will show how to write custom comparator. I’ve given three examples of custom comparators.
Employee Object
Next you need to define the custom comparator which will help you to sort by employee name, gender and age.
Name comparator
Gender Comparator
Age Comparator
If you apply NameComarator
The result will be sorted based on name.
If you apply AgeComparator
The result will be sorted by age.
If you apply GenderComparator
The result will be sorted by gender
Labels:
Java,
Programming
2012/01/15
5 Skills for Tech Leads
1) Development
You should be a developer, and a good one.
2) Release Management
Your main job is to resolve needs and roadblocks (not to make sure that people are following any methodology).
3) Product Management
Prioritize, that's all. Then, you just have to work on the most important tasks from your list (which will also be small ones if you did your homework).
4) Recruiting
Learn how to test people inside your team.
5) Managing People
Be honest and helpful.
Labels:
網路文章
2012/01/13
How Larry Page Changed Meetings At Google After Taking Over Last Spring
- Every meeting must have one clear decision maker. If there's no decision maker -- or no decision to be made -- the meeting shouldn't happen.
- No more than 10 people should attend.
- Every person should give input, otherwise they shouldn't be there.
- No decision should ever wait for a meeting. If a meeting absolutely has to happen before a decision should be made, then the meeting should be scheduled immediately.
Read more: http://www.businessinsider.com/this-is-how-larry-page-changed-meetings-at-google-after-taking-over-last-spring-2012-1#ixzz1jK8m4Hva
Labels:
網路文章
2012/01/12
iReport 直式/橫式報表
需求
根據User所選擇要輸出橫式或直式的格式,分別輸出符合指定格式的報表
就輸出橫式報表
若user選擇列印格式為直式
就輸出直式報表
2. Choose "Landscape" -- > OK
3. Change sucessfully
4. Drag and drop data field to template
2. Click each data field and go to change its property
3. Change "Rotation" property to "Right"
4. Check the result
根據User所選擇要輸出橫式或直式的格式,分別輸出符合指定格式的報表
若user選擇列印格式為橫式
就輸出橫式報表
若user選擇列印格式為直式
就輸出直式報表
作法 - 橫式報表
由於iReport建立template後,default式Portrait,此時要手動去修改其page format
1. right click --> Page Format
2. Choose "Landscape" -- > OK
3. Change sucessfully
4. Drag and drop data field to template
作法 - 直式報表
1. Drag and drop data fields into template
2. Click each data field and go to change its property
3. Change "Rotation" property to "Right"
4. Check the result
Labels:
iReport
Winners and Losers in Business Open-Source Software
Application Server/Web Server:
- Trending Up: Node.js and NGINX
- Trending Level: Tomcat and Apache HTTP Server
- Trending Down: JBoss and GlassFish
Frameworks:
- Trending Up: Rails
- Trending Level: Spring, Grails, Struts
- Trending down: (none)
Databases and Big Data:
- Trending Up: HBase, Hadoop, MongoDB
- Trending Level: MySQL, PostgreSQL
- Trending Down: CouchDB
Labels:
網路文章
Subscribe to:
Posts (Atom)