Lâu nay thằng FF 3 trên Ubuntu (lappy) cứ bị lỗi ì ạch, chuyển sang 3.5 vẫn chậm, 2.0 thì chạy được nhưng nhiều add-on ko compatible, thế là phải xài Konqueror và Chromium .
Hai cái này xài được, chỉ vướng 2 chỗ là bookmark (Xmarks) và zoom. May quá bây giờ Google đã release Chrome bản chính thức cho Linux , không những chạy Flash phe phé, mà còn zoom khá hơn, và Xmarks cũng đã hỗ trợ :
VMware announced they have acquired SpringSource for a mix of approximately $362 million in cash and equity plus the assumption of approximately $58 million of unvested stock and options.
Firefox on Ubuntu seems to have slower performance than on other OSes.
Symptoms: - slow on page with flash, or hang when scroll fast, or unbearable slow (invoking CD-ROM) when type in address bar, especially on "backspace" key, ...
AFAIK, there are 3 major causes: - FF's database SQLite becomes big and defragmented - weak graphic card (usually on laptop) - IPv6 is higher priority than IPv4 in FF by default.
Recommended work-arounds: - change Visual Effects to "None" - disable IPv6 in "about:config" - clean up SQLite unused entries: first, install sqlite3 client sudo apt-get install sqlite3 then enter these commands find ~/.mozilla -type f -name "*.sqlite" -exec sqlite3 ‘{}’ VACUUM \; find ~/.mozilla -type f -name "*.sqlite" -exec sqlite3 ‘{}’ REINDEX \; or use these commands instead for i in ~/.mozilla/firefox*/*/*.sqlite; do sqlite3 $i vacuum; done;
1. P2 provisioning which provides for a more efficient update process for Eclipse 2. OSGi Declarative Services, which allow OSGi services to be configured and installed based on XML prior to the start of the bundle's service 3. Improved target platform management, which allows the runtime platform to be configured easier 4. Mylyn WikiText, which can be used to edit bugs via Mylyn or transform into other documentation formats like DocBook 5. The addition of the Eclipse Memory Analyser, which can analyse the JVM's heap usage 6. Install into Self, which allows plugins to be developed and installed into the currently running Eclipse platform 7. Eclipse Modeling Project refinements, which reduces the size of the EMF runtime requirements 8. Improved RAP styles to allow your RAP based application to be customised 9. Enhanced JAvaScript bridge, which allows embedding of widgets like Google Maps into an SWT browser 10. Java compare editor enhancements which allow JavaDoc hovers, hyperlinking and other goodness from the compare page
The main reason for using mock objects to write unit tests is so that they are unit tests. Without mock implementations, unit tests quickly become integration tests, which are much more costly and time-consuming.
Here is my ranking list for Java mock frameworks (supporting JUnit, TestNG) :
Trong thế giới Software Configuration Management (SCM, hay thường được gọi là VCS hay RC) thì CVS (Concurrent Versions System) là một bước ngoặt, ngay từ lúc ra đời đã vượt trội SCCS, RCS, SS... để trở thành SCM tiên phong mạng diện rộng (WAN, Internet). Thành công của CVS chỉ đến khoảng 2000 thì bắt đầu bị cạnh tranh mạnh mẽ bởi SVN (SubVersioN), và đến bây giờ thì có thể nói SVN đã lấn áp được CVS để trở thành VCS được ưa chuộng nhất, họa may chỉ có Perforce mới cạnh tranh được, chứ VSS hay TFS thì còn xa mới theo nổi.
Tuy nhiên tương lai của SCM/VCS sẽ là distributed SCM, trong đó ứng cử viên sáng giá nhất hiện nay là Git, kế đến là Bazaar và Mercurial.
Git là một VCS mã nguồn mở dạng phân tán , được Linus Torvard viết ra nhằm thay thế 1 DSCM khác là BitKeeper , khi tác giả BK quyết định đổi license của BK. Và hiện nay Git được sử dụng thay cho BitKeeper trong việc phát triển kernel Linux, cũng như đang mở rộng ra nhiều ứng dụng khác (X-server, Samba, Qt, WINE, Perl, Android, RoR, VLC, Prototype, ...) .
Các bạn có thể xem đoạn Linus Torvards giới thiệu về Git tại Google Tech Talk:
Điều ấn tượng nhất với tôi qua cuộc nói chuyện này, đó là Linus không hề có vẻ gì là "geek" hay "anti-social" như nhiều người vẫn nghĩ, trái lại kỹ năng dẫn dắt vấn đề thu hút, trình bày dễ hiểu và hấp dẫn của anh đáng để khâm phục và học hỏi.
Một người có sức sáng tạo dĩ nhiên là một người thích khôi hài rồi, có phải không ?
+ Tạo account mới trong ThunderBird với tài khoản Gmail :
- Tools -> Account Settings -> Add Account ->Email account -> Next : nhập tài khoản mail Google (ví dụ: username@gmail.com )
+ Chọn phương thức lấy thư, server lấy thư, server gởi thư:
- Next : type of incoming server -> IMAP ; Incoming server -> imap.gmail.com ; Outgoing server -> smtp.gmail.com
+ Chọn tên hiển thị trong thư gởi đi và thư nhận : để đơn giản nên điền chính tài khoản mail Google
- Next : Incoming User Name: username@gmail.com , Outgoing User Name: username@gmail.com
+ Chọn tên đại diện cho tài khoản trong Thunder Bird:
- Next -> AccountName : "gì cũng được :) " -> Next -> Finish !
+ Thiết lập trong ThunderBird (Account Settings), phần máy chủ nhận (Server Setting) :
- Server Settings -> Port : 993.
- Server Settings -> Security Settings -> Use secure connection -> SSL .
+ Thiết lập trong ThunderBird (Account Settings), phần máy chủ gởi (Outgoing server SMTP) :
- Chọn tài khoản tương ứng (thường có chữ Default) -> Edit -> Server Name : smtp.gmail.com ; Port : 587 (hoặc 25 ) ; User name and password : username@gmail.com (nên điền đủ cả phần @) ; Use secure connection : TLS, if available
+ OK, OK , thiết lập cơ bản vậy là xong ! Bây giờ có thể thử get mail và send mail :-)
Well, ai cũng biết là 2008 là năm trượt giá đáng kể ở VN kể từ khi mở cửa. Nhiều người cũng thấy cảnh khó khăn của nhiều công ty phần mềm trong nửa sau 2008, ảnh hưởng của khó khăn xuất phát từ nền kinh tế Hoa Kỳ, cũng như vài chính sách củ chuối của bác Ba Dũng. Do đó không nhất thiết phải là 1 genius để tiên đoán về khó khăn của ngành phần mềm năm 2009, không chỉ ở VN. Nhưng cứ thử xem sao :-) .
Tổng kết lại, có thể thấy những thay đổi sẽ diễn ra trong các năm tới đây:
* Những kỹ sư phần mềm có trình độ cao, có nhiệt huyết và tham vọng sẽ là những cỗ máy làm ra tiền.
* Những lập trình viên không có kỹ năng đặc biệt có lẽ nên tìm việc làm ở lĩnh vực khác.
* Những thay đổi mà chúng ta đang thấy ở thị trường phần mềm đại chúng sẽ diễn ra ở các công ty lớn.
* Đưa phần mềm cho nước ngoài gia công (outsourcing) sẽ ngày càng ít tính kinh tế hơn.
* Khoa học máy tính vẫn là lĩnh vực cạnh tranh và đòi hỏi cao.
==> Tương lai của các LTV Việt Nam:
Nhìn các xu hướng đang diễn ra trên thế giới, có thể thấy rằng các dự án cần hàng trăm người sẽ ngày càng ít đi. Theo tính toán của Mỹ, chi phí outsourcing đang gia tăng (từ 1/10 lên 1/3 so với giá thành sản xuất trong nước) làm cho việc đưa phần mềm ra nước ngoài gia công ngày càng kém hấp dẫn. Ngoài ra, do khó khăn về giao tiếp và chệnh lệch về trình độ, chất lượng các dự án này cũng không được như mong muốn và rất khó bắt kịp các thay đổi của khách hàng.
Các LTV luôn có xu hướng muốn gia nhập các công ty lớn, tham gia vào các dự án lớn. Nhưng có thể đấy sẽ cách tiếp cận sai lầm vì:
* Tương lai của các công ty làm xuất khẩu phần mềm dạng này đang ngày càng bấp bênh.
* Bản thân các LTV thường không cải thiện được trình độ vì các công việc được giao ít cần kỹ năng cao hay tính sáng tạo.
Tất nhiên, nhìn thẳng vào thực tế, sự thay đổi sẽ không diễn ra ngay trong nay mai — mô hình thác nước và các biến thể của nó vẫn sẽ được dùng, người ta sẽ vẫn outsourcing. Nhưng mọi thứ sẽ ngày càng khó khăn hơn, đòi hỏi cao hơn và chỉ khi bạn thực sự chuẩn bị tốt cho sự thay đổi thì mới tránh được việc bị đào thải.
Đáng lo ngại nhất là các LTV Việt Nam còn xa mới theo kịp các đồng nghiệp ở các nước như Ấn Độ hay Ireland cả về mặt tổ chức lẫn kỹ năng. Chúng ta quá chú trọng tới các công nghệ độc quyền của Microsoft, Oracle hay IBM và hiểu biết về mã nguồn mở là một lỗ hổng lớn. Không may, có thể ngày mai công ty sẽ nói lời chia tay với bạn chỉ vì bạn không có kinh nghiệm gì về Python hay cơ sở dữ liệu MySQL. Như tựa một bộ phim "Đó là một tương lai không quá xa" (Not too far future), xin hãy suy nghĩ lại con đường của mình.
+ Instead of Contacting services, RPC components contact 'Destinations'
+ Destination: Manageable Service Endpoints
+ Managed using XML based configuration file
+ 'Remote Object' not possible without BlazeDS ( Adobe Flash Player blocks request to any external hosts, solution? )
+ crossdomain.xml required ( For apps that are not using BlazeDS )
+ XML file that indicates: - Data and documents are available to SWF files served from certain/all domains - Must be in 'web root' of the server
=== AMF (10 times faster!) ===
+ Compact binary format for data serialization/ deserialization and remote method invocation.
+ Object encoding controls how objects are represented in Action Message Format (AMF).
+ Representation that can be transferred over HTTP/HTTPS.
+ As data size increases the performance benefits of using BlazeDS increase exponentially.
+ AMF improves performance by - Dramatically compressing the size of data transferred. - Parsing binary data into objects in memory far more efficiently than parsing XML data.
=== Quick Brief ===
+ Message Agents: - Message Producers & Consumers - Exchange messages through a common destination
+ Channel and endpoints - Formats, Translates messages into network-specific form. - Delivers to the endpoint (on the server) - Server-Side Channel Unmarshals messages - Configuration settings ( XML files) at runtime
+ Message Broker - Routes messages to the appropriate service based on its type
+ Channel Types
=== Channel Configuration ===
+ Configure channels using services-config.xml
+ AMF protocol use an optimization technique
+ Assign channel at runtime( AS Code) by creating a ChannelSet object, and adding a channel to it.
var cs:ChannelSet = new ChannelSet(); var channel:Channel = new AMFChannel(“name”, endpoint) cs.addChannel(channel); Remoteobject.channelSet = cs;
=== Remote Object components ===
+ Access methods of server-side java objects.
+ No need to specify 0bjects as operations in web services
+ Use RemoteObject component in MXML/AS
+ Server - Proxied access to an RPC service
+ Communication happens over a 'destination'
+ Configured in the remoting-config.xml - RPC method or URL, channel, adapter
+ Asynchronous communication - AsyncToken object
+ Http Service and web service use proxy-service.xml for configuration. - Limit access to specific URL - Provide Security
=== BlazeDS with Tomcat === + Unzip the blazeds-turnkey file on to your C: drive (Blazeds comes with Tomcat default.)
+ Create a new application: C:\blazeds\tomcat\webapps
+ Copy & paste the META-INF, WEB-INF folder from the samples (zip) file.
+ Store all your java class files in WEB-INF/classes folder
+ Configure remoting-config.xml under WEB-INF/flex/ for all your remoting related details (destinations) . Create a and a specify a
+ Configure messaging-config.xml under WEB-INF/flex for all your messaging (real-time) by adding your destination
+ For all other service related details use the proxy-config.xml
+ Give references of all these xml files in services-config.xml (done by default)
(the postgresql-contrib is optional, it's just some additional facilities for Postgres)
2/ Install the GUI client (pgadmin or pg-client) to manage :
$ sudo apt-get install pgadmin3 postgresql-client
3/ Change password for user 'postgres' :
$ sudo su postgres -c psql postgres=# ALTER USER postgres WITH PASSWORD 'password'; postgres=# \q
4/ Enable access from outside localhost (if needed) :
To do this, you may edit either postgresql.conf or pg_hba.conf or pg_ident.conf , their location in Ubuntu is /etc/postgresql/8.3/main/ . Perhaps the K.I.S.S way is to add a line into pg_hba.conf to pick the corresponding IPv4 subnet to be allowed:
host all postgres 192.168.1.0/24 md5
(That line means all private IPs 192.168.1.x will be allowed to connect Postgres)
To make sure the change is applied, restart the deamon :
$ sudo /etc/init.d/postgresql-8.3 restart
=== Some basic PostgreSQL commands === (to be updated)
PureMVC is a lightweight framework for creating applications based upon the classic Model, View and Controller concept; based upon proven design patterns
This free, open source framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Flash and AIR, has now been ported to nearly all major development platforms. It seems PureMVC is more popular in other languages (Java, C#, Ruby, ... ) than its competitor (Cairgorm) .
You can download the following simple demo presentation: (the presenter's pronounciation is very clear, feel free to practice your listening skill :D ):
IMHO GlassFish is a fairly good Application Server, compared to JBoss, although the core servlet containers of both are derived from the same (Tomcat).