Summary of Fedex shipping status based on the day counted from the shipment pick-up time. Applicable for major cities in Australia.
0 day anytime. Shipment information sent to FedEx - Only shipping information is created by Fedex system, and item is still not collected by Fedex.
1st day anytime. Picked up (Package received after FedEx cutoff)
1st day evening. Left FedEx origin facility
2nd day morning. In transit - Left Fedex facility in Hongkong as an air cargo and delivering to Australia by either direct flight or connecting .
3rd day morning. At destination sort facility - Arrived Australian airport
3rd day morning. International shipment release - Import - Clearing Australian customs
3rd day afternoon. In transit - Left Fedex's airport facility and in transit to your nearest local depot. This may take longer if your house is far from the importing airport.
4th day morning. At local FedEx facility
4th day morning. On FedEx vehicle for delivery - Ready for delivering to your house!
4th day anytime. Delivered
There is an expected delivery date on the Fedex tracking system, but you may be eager on knowing what's happening to your precious shipment. Hope it will relieve your concern about when you can take the goods from Fedex.
Wednesday, 6 November 2013
Tuesday, 15 October 2013
Thursday, 25 July 2013
USB storage speed test
Speed tested using different reader and different media. (Reading speed)
- WD MyPassport 750G USB 2.0: 36.1 MB/s R / 27.1 MB/s W
- WD MyPassport 750G USB 3.0: 89.1 MB/s R / 88.6 MB/s W
- Free Generic USB Stroage 4G from Accenture: 9.73 MB/s ~ 0.9 MB/s (Broken!)
- Transcend SDHC 8G Cl6 + Laptop reader: 16.4 MB/s R / 7.5 MB/s W
- Transcend SDHC 8G Cl6 + Generic reader: 13.9 MB/s
- Sandisk SD 2G (Cl 1?) + Laptop Embedded reader: 11.2 MB/s R / 5.2 MB/s W
- Sandisk SD 2G (Cl 1?) + Generic reader: 9.82 MB/s
- Sandisk MicroSDHC 8G Cl2 + (Adapter) Laptop reader: 6.39 MB/s
- Sandisk MicroSDHC 8G Cl2 + (Adapter) Generic reader: 6.06 MB/s
- Sandisk MicroSDHC 8G Cl2 + Androboy reader: 6.05 MB/s
- Sandisk MicroSDHC 8G Cl2 + SGS2 USB connect: 6 MB/s
- WD MyPassport 750G USB 2.0: 36.1 MB/s R / 27.1 MB/s W
- WD MyPassport 750G USB 3.0: 89.1 MB/s R / 88.6 MB/s W
- Free Generic USB Storage 2G from Uni Library: 20.3 MB/s R / 5.6 MB/s W
- Transcend SDHC 8G Cl6 + Laptop reader: 16.4 MB/s R / 7.5 MB/s W
- Transcend SDHC 8G Cl6 + Generic reader: 13.9 MB/s
- Sandisk SD 2G (Cl 1?) + Laptop Embedded reader: 11.2 MB/s R / 5.2 MB/s W
- Sandisk SD 2G (Cl 1?) + Generic reader: 9.82 MB/s
- Sandisk MicroSDHC 8G Cl2 + (Adapter) Laptop reader: 6.39 MB/s
- Sandisk MicroSDHC 8G Cl2 + (Adapter) Generic reader: 6.06 MB/s
- Sandisk MicroSDHC 8G Cl2 + Androboy reader: 6.05 MB/s
- Sandisk MicroSDHC 8G Cl2 + SGS2 USB connect: 6 MB/s
- SGS2 Internal storage + USB2.0 connection: 15 MB/s R / 20 MB/s W
- SGS2 Internal storage + Android internal usage AnTuTu: 20.7 MB/s / 11.3 MB/s W
- SGS2 Internal storage + Android internal usage AnTuTu: 20.7 MB/s / 11.3 MB/s W
- SGS2 Internal storage + WIFI g Hotspot connection: 0.9 MB/s
- SGS2 Internal storage + WIFI g connection through router: 0.3 MB/s
- SSD Macbook Air '13 PCIe: 720 MB/s R / 450 MB/s W
- Sandisk CZ80 USB Storage 32G USB3.0: 190 MB/s R / 110 MB/s W
- PQI Tiffy USB Storage 32G USB 3.0: 210 MB/s R / 80 MB/s W
- PQI i-tiff/i-lock/i-series USB Storage 32G USB 3.0: 150 MB/s R / 45 MB/s W
- PQI i-lock mini USB Storage 32G USB 3.0: 110 MB/s R / 10 MB/s W
- Transcend MicroSDXC 64G UHS1: 90 MB/s R / 45 MB/s W
- Sandisk CZ80 USB Storage 32G USB3.0: 190 MB/s R / 110 MB/s W
- PQI Tiffy USB Storage 32G USB 3.0: 210 MB/s R / 80 MB/s W
- PQI i-tiff/i-lock/i-series USB Storage 32G USB 3.0: 150 MB/s R / 45 MB/s W
- PQI i-lock mini USB Storage 32G USB 3.0: 110 MB/s R / 10 MB/s W
- Transcend MicroSDXC 64G UHS1: 90 MB/s R / 45 MB/s W
Wednesday, 24 July 2013
Transfer speed for various standards
For almost all computer resources the performance is measured by transfer rate. However, they use various units for speed. Let's make it simple using the most common units in today's computers, MB/s.
These values are not calculated very accurately. I just assume that 1 byte needs 10 bits for transport including some control bits. Some methods may use more control bits, while some use less. Only for your reference and practical purpose. Please do not put any weigh on a penny MB :)
- SATA3: 550 MB/s (= 6 Gb/s)
- SATA2: 270 MB/s (= 3 Gb/s)
- USB3.0: 400 MB/s (= 5 Gb/s)
- USB2.0: 35 MB/s (= 480 Mb/s)
- Sasmung SSD 840 basic: 530 / 200 MB/s
- 5400 rpm HDD: 85 MB/s
- Samsung SDHC UHS1 Plus: 48 / 20 MB/s
- Samsung SDHC UHS1 Pro: 70 / 20 MB/s
- Samsung SDHC Class10: 24 / 21 MB/s
- Mobile phone file transfer: 20 MB/s
- Gigabit Ethernet: 100MB/s (= 1 Gbps)
- Wifi n: 30 MB/s (= 300 Mbps)
- Wifi g: 5 MB/s (= 54 Mbps)
- Highspeed-internet: 10 MB/s (= 100 Mbps)
- ADSL2+: 0.8 MB/s (= 10 Mbps)
- LTE Single: 1.5 MB/s (= 15 Mbps)
- 3G+ : 0.5 MB/s (= 5 Mbps)
- Bluetooth 2.0 EDR: 0.2 MB/s (= 2.1 Mbps)
- Bluetooth 3.0 HS: 2 MB/s (= 24 Mbps)
- HDMI v1.2(1080p): 400 MB/s (= 4 Gbps)
- HDMI v1.3: 800 MB/s (= 8 Gbps)
First of all, if you want to use the recent SSD for your laptop or desktop, you'd better to have SATA3 interface in your computer. SATA2 doesn't support the full speed of new SSD.
Similarly, your external HDD is fully functional when you connect it with USB 3.0 port, if the HDD supports USB 3.0 interface.
UHS1 class SDHC cards should be inserted to USB 3.0 compatible card reader with USB 3.0 port, while Class 10 doesn't seem to need USB 3.0 support.
Mobile phones still support only USB 2.0, thus there's little difference between using wifi N and USB cable (30 vs 35) when you transfer transfer files from your mobile to PC. However, if either your mobile or your computer doesn't support wifi N, definitely you'd better to use USB since wifi G provides maximum 5 MB/s, while you can get 30 MB/s when you use USB cable.
If you don't share any files using your home network, and just use low speed internet, such as ADSL, you don't actually need wifi N or Gigabit Ethernet.
SSH connection through http proxy, or another SSH tunnel
In my university, all computers in the computer labs are connected to the internet behind the firewall, and the firewall blocks every port. All traffics should go through a http proxy, and it allows only port 80 and 443 in the proxy server. What if you want to connect to a server via Internet with another protocol other than http or https? There are various ways depending on the configuration of your organisation's network.
1. Use CONNECT command of proxy server
You can use the proxy's "CONNECT" command from your proxy server. This command, however, is not supported in all proxy servers. It may be blocked in the proxy server by the organisation rule. If your proxy supports it, you can simply use http proxy to connect to the other services like ssh on port 22. For example, you can set it up from proxy settings menu on putty if you want to use SSH connection.
Unfortunately, the proxy server in my university doesn't support this command. You can simply test it using telnet command, explained in this document: http://www.anta.net/misc/telnet-troubleshooting/http-proxy.shtml
What is next option?
2. Use VPN through http proxy server
Some VPN supports connecting VPN through http proxy server. What I used was OpenVPN, and the client of OpenVPN supports http proxy. However, there is still some considerations on this method.
First of all, you need another server running OpenVPN server program out there on internet. One simple and cheap way is using a virtual machine on a cloud provider, such as Amazon's AWS. They provide one smallest instance for free for one year. For individual usage, you don't really need a powerful machine, so the smallest virtual machine is enough for it. Once you got an virtual machine, or using your own PC in your home, just configure OpenVPN server on that machine.
Secondary, you should consider the port number of OpenVPN server. As the proxy server in my university allows to connect only to port 80 and 443, OpenVPN server should use either port 80 or 443. If I use another port number, all traffic is blocked by proxy server.
Finally, you should have a administrator privilege for the computer running OpenVPN client. Since VPN changes all traffic route to go through VPN, you need root privilege to change the route table.
In my university, I cannot change the route table of the computers in the lab. I simply don't have enough permission to do it. So, I could use this method only with my own laptop using in the university's wireless.
3. Using SSH tunnelling
The last option is to use SSH tunnelling. This method is only possible if you have a server (1) that can be connected from your computer using SSH protocol, and (2) that can connect to the internet using a port number for your usage.
In my university, I can access to the internal UNIX server using SSH on port 22. This is possible because the server is not outside of the firewall. However, weirdly, I can connect to almost all ports without proxy from the internal server, such as 22. I just realise that the internal server is behind different firewall rules, and that's how this method is working in my situation.
If you could find a port opened in your firewall to the internet, you can run SSH server using that port event if the port is not 22.
Once you have a SSH server, you can simply use SSH tunnelling. It can be set up using putty without administrator privilege. In putty, you can set up SSH tunnelling on dynamic mode, or local mode.
If you use dynamic mode, you can use the tunnel as a SOCK5 proxy server from any programs once it supports SOCK5 proxy setting. The server will be just the local host, and use the port number you set up at the putty.
If the program does not support SOCK5 proxy, you can still use the local mode tunnelling. It specifies the local port and the remote port, so that you can use the localhost with the local port to connect to the remote server. For example, I set up the local port to 3000, and the remote host to "example.com:21", you can connect to example.com using FTP protocol by connecting to localhost:3000 from your FTP client program.
Better way...
I think the VPN is the best way to bypass the firewall. It's secure as it provides secure connection between your client and the server. Also, it provides full network services as the VPN makes your client as like it's located in the same network of the VPN server. It can use all network port that can be used from the server. You can use it very convenient as well, once you have configured the server and client. You don't have to change any other settings from other programs. Use it simply as you use it normally, then the VPN client will make all traffic detour through the VPN server. If you have a root privilege to install the client software on the computer, just find a nice server with high-speed network bandwidth and go with VPN.
1. Use CONNECT command of proxy server
You can use the proxy's "CONNECT" command from your proxy server. This command, however, is not supported in all proxy servers. It may be blocked in the proxy server by the organisation rule. If your proxy supports it, you can simply use http proxy to connect to the other services like ssh on port 22. For example, you can set it up from proxy settings menu on putty if you want to use SSH connection.
Unfortunately, the proxy server in my university doesn't support this command. You can simply test it using telnet command, explained in this document: http://www.anta.net/misc/telnet-troubleshooting/http-proxy.shtml
What is next option?
2. Use VPN through http proxy server
Some VPN supports connecting VPN through http proxy server. What I used was OpenVPN, and the client of OpenVPN supports http proxy. However, there is still some considerations on this method.
First of all, you need another server running OpenVPN server program out there on internet. One simple and cheap way is using a virtual machine on a cloud provider, such as Amazon's AWS. They provide one smallest instance for free for one year. For individual usage, you don't really need a powerful machine, so the smallest virtual machine is enough for it. Once you got an virtual machine, or using your own PC in your home, just configure OpenVPN server on that machine.
Secondary, you should consider the port number of OpenVPN server. As the proxy server in my university allows to connect only to port 80 and 443, OpenVPN server should use either port 80 or 443. If I use another port number, all traffic is blocked by proxy server.
Finally, you should have a administrator privilege for the computer running OpenVPN client. Since VPN changes all traffic route to go through VPN, you need root privilege to change the route table.
In my university, I cannot change the route table of the computers in the lab. I simply don't have enough permission to do it. So, I could use this method only with my own laptop using in the university's wireless.
3. Using SSH tunnelling
The last option is to use SSH tunnelling. This method is only possible if you have a server (1) that can be connected from your computer using SSH protocol, and (2) that can connect to the internet using a port number for your usage.
In my university, I can access to the internal UNIX server using SSH on port 22. This is possible because the server is not outside of the firewall. However, weirdly, I can connect to almost all ports without proxy from the internal server, such as 22. I just realise that the internal server is behind different firewall rules, and that's how this method is working in my situation.
If you could find a port opened in your firewall to the internet, you can run SSH server using that port event if the port is not 22.
Once you have a SSH server, you can simply use SSH tunnelling. It can be set up using putty without administrator privilege. In putty, you can set up SSH tunnelling on dynamic mode, or local mode.
If you use dynamic mode, you can use the tunnel as a SOCK5 proxy server from any programs once it supports SOCK5 proxy setting. The server will be just the local host, and use the port number you set up at the putty.
If the program does not support SOCK5 proxy, you can still use the local mode tunnelling. It specifies the local port and the remote port, so that you can use the localhost with the local port to connect to the remote server. For example, I set up the local port to 3000, and the remote host to "example.com:21", you can connect to example.com using FTP protocol by connecting to localhost:3000 from your FTP client program.
Better way...
I think the VPN is the best way to bypass the firewall. It's secure as it provides secure connection between your client and the server. Also, it provides full network services as the VPN makes your client as like it's located in the same network of the VPN server. It can use all network port that can be used from the server. You can use it very convenient as well, once you have configured the server and client. You don't have to change any other settings from other programs. Use it simply as you use it normally, then the VPN client will make all traffic detour through the VPN server. If you have a root privilege to install the client software on the computer, just find a nice server with high-speed network bandwidth and go with VPN.
Monday, 3 June 2013
Interview Feedback
Palantir Internship
- Hash Table: how to make a hash value?
- Software design: Draw a design of public transport network in Melbourne
Google
- Breadth First search algorithm
- Bitwise operations
- Reduce a size of data structure
- Distributed Algorithms
Optiver
- Teamwork, leadership
- Multi thread programming
- Reduce packet design: Choose one direction, don't hesitate between two possibilities
Facebook
- Backtracking algorithm
- 자신감
- 복잡한 알고리즘들
- Hash Table: how to make a hash value?
- Software design: Draw a design of public transport network in Melbourne
- Breadth First search algorithm
- Bitwise operations
- Reduce a size of data structure
- Distributed Algorithms
Optiver
- Teamwork, leadership
- Multi thread programming
- Reduce packet design: Choose one direction, don't hesitate between two possibilities
- Backtracking algorithm
- 자신감
- 복잡한 알고리즘들
Interview areas expected to be asked
- Data structure
- Tree
- Array
- List
- Queue
- Map
- Hash
- Graph
- ...
- Algorithm
- Sorting
- Selection
- String handling
- Shortest Path
- Software Architecture Design
- Design Patterns
- Protocols
- Distributed Systems and Algorithms
Wednesday, 10 April 2013
Software basics you should know
Technical revision topics...
Here is a list of topics about which interviewers may ask questions. They won’t all come up, but it’s a good idea to review them before your interview.Algorithm Complexity:
Review Big-O notation. That stuff is useful every time we write an algorithm at Google, so it’s great when candidates understand it!
Sorting:
You should know the details of at least one n*log(n) sorting algorithm, preferably two (say, quicksort and merge sort). Merge sort can be highly useful in situations where quicksort is impractical, so take a look at it.
Hashtables:
Familiarise yourself with this very useful data structure! Consider when and why you might use a hash table as well as how they work.
Trees:
Know about trees; basic tree construction, traversal and manipulation algorithms. Familiarise yourself with binary trees, n‐ary trees, and trie‐trees. Be familiar with at least one type of balanced binary tree, whether it's a red/black tree, a splay tree or an AVL tree, and know how it's implemented. Understand tree traversal algorithms: BFS and DFS, and know the difference between inorder, postorder and preorder.
Graphs:
Graphs are really important at Google. There are 3 basic ways to represent a graph in memory (objects and pointers, matrix, and adjacency list); familiarize yourself with each representation and its pros & cons. You should know the basic graph traversal algorithms: breadth‐first search and depth‐first search. Know their computational complexity, their tradeoffs, and how to implement them in real code. If you get a chance, interviewers will be really impressed if you can discuss fancier algorithms, such as Dijkstra and A*.
Other data structures:
You should study up on as many other data structures and algorithms as possible. You should especially know about the most famous classes of NP‐complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. Find out what NP complete means.
Mathematics:
You shouldn’t need to explicitly study any mathematical topics, but you should know powers of 2 (even if you can’t remember which one is peta- and which one is exa-), and be able to do back-of-the-envelope calculations e.g. to estimate the required number of machines for a given design. You should have a basic knowledge of logic and probability.
Systems Design:
Know Google's products, and think about how you would design the back-end (of front-end). System design questions are a test of your problem solving. Sample topics include: features sets, interfaces, class hierarchies, distributed systems, designing a system under certain constraints, simplicity and robustness, tradeoffs.
Distributed Systems and Cloud Computing:
Many systems design questions involve a distributed design. You won’t need to know the finer details of networking and data marshalling algorithms in use today (although of course it won’t hurt if you do!) but you may be asked to come up with a design that spans multiple machines. Be able to judge the execution cost and latency of different parts of system such as memory, disk, local networks and wide-area networks. Think about how data is shared between machines. You should also have a rough understanding of how the World Wide Web works, starting at the browser and ending at the server in the data centre, and all the bits in between.
Coding:
You should know at least one programming language well, and it should preferably be C++, Python or Java. C# is OK too, since it's pretty similar to Java. You will be expected to write code in at least some of your interviews. You will be expected to know a fair amount of detail about your favorite programming language and also be expected to produce code on a whiteboard - although you won’t be expected to know all of the standard libraries off by heart!
Classic CS problems
Towers of Hanoi - Write a recursive program to solve this problem. What is the complexity?
Shortest path problem - Write an algorithm to plan a route by minimising distance or time.
Traveling salesman problem - Write an algorithm to determine the least cost round-trip, given multiple cities and varying costs of flights.
Knapsack problem - Write an algorithm to optimize the value of items you can fit into a backpack based on weight and volume.
Sample questions from Programming Pearls
- Given a file containing at most ten million 7-digit integers with no duplicates. What is an efficient way to print these numbers in ascending order using just 1.5Mb RAM and reading the data just once? What are the consequences of only having 1Mb of RAM and no other storage? How would your answer change if duplicates were permitted?
- Given a sequential file that contains at most four billion 32-bit integers in random order, find a 32-bit integer that isn’t in the file (and there must be at least one missing...why?). How would you solve this with unlimited main memory? How would you solve it if you could use several external files but only a few bytes of main memory?
- Rotate a one-dimensional vector of n elements left by i positions. For instance, with n=8 andi=3, the vector abcdefgh is rotated to defghabc. Simple code uses an n-element intermediate vector to do the job in n steps. Can you rotate the vector in time proportional to n using only a few dozen extra bytes of storage?
- Given a dictionary of English words, find sets of anagrams. For instance, “pots”, “stop”, and “tops” are all anagrams of one another because each can be found by permuting the letters of the others.
- Write functions for the following date problems: given two dates, compute the number of days between them; given a date, return it’s day of the week; given a month and year, produce a calendar of the month as an array of characters
- Given a very long sequence (say, billions or trillions) of bytes, how would you efficiently count the total number of one bits? (i.e. how many bits are turned on in the entire sequence)
- Although Quicksort uses only O(logn) stack space on the average, it can use linear space in the worst case. Explain why, then modify the program to use only logarithmic space in the worst case.
- Write a program for finding the kth-smallest element in the array x[0...n-1] in O(n) expected time. Your algorithm may permute the elements of x.
- Build the fastest possible complete function to generate a sorted array of random integers without duplicates. (You need feel constrained to use any prescribed interface for set representation)
- Implement heap-based priority queues to run as quickly as possible; at what values of n are they faster than sequential structures
To practice for your interview you might find these resources useful:
- Wikipedia (http://en.wikipedia.org) has good articles on many computing topics, if you just need a refresher on something. Some good starting points:
- Project Euler (http://projecteuler.net/) has a large set of mathematical and other coding puzzles which you may find useful to practice with.
Tuesday, 9 April 2013
Google Interview
You should know all basic algorithms in computer science, especially sorting, and the complexity in Big O notation. Avoid O(n^2) or higher complexity if possible.
Basic data structures are essential as well, such as Queue, Tree, Graph, etc. You need to know what kind of algorithm is useful in such case. When you use specific data structure or sorting algorithm. When is it efficient, when is not...
Also, system architecture providing scalability and reliability is another concern because of the size of Google's users. Your system should be able to provide the service to millions of users. Load balancing,
Basic data structures are essential as well, such as Queue, Tree, Graph, etc. You need to know what kind of algorithm is useful in such case. When you use specific data structure or sorting algorithm. When is it efficient, when is not...
Also, system architecture providing scalability and reliability is another concern because of the size of Google's users. Your system should be able to provide the service to millions of users. Load balancing,
Wednesday, 3 April 2013
The Google Resume: adviser on your career
I found this book to get some hints about Google phone interview, but it gives much more to you. It's a good advisor for your career and your life.
Although they seem general and common, but are basic and fundamental.
Are you looking for some advice about your studying or professional life? Get read this Book.
Although they seem general and common, but are basic and fundamental.
Are you looking for some advice about your studying or professional life? Get read this Book.
Friday, 29 March 2013
About technology...
The first thing.. it's always exciting and anticipated. This is the first blog of mine written in English. I hope I can improve my technical knowledge as well as my English. Let's start!
Subscribe to:
Posts (Atom)
Android Battery Drain issue - How to dig and find the root cause?
Mobile phones is getting more and more powerful silicons and processors, which causes more and more issues on battery management. It is unav...
-
Dell Optiplex mainboard layout from the service manual: (Image source: https://topics-cdn.dell.com/pdf/optiplex-9020-desktop_owners-manu...
-
When OpenStack creates a snapshot, the image is stored as qcow2 format with Glance, in the directory of /var/lib/glance/images/. However, ...
-
Reference: http://blog.earth-works.com/2013/02/22/how-to-set-up-openswan-l2tp-vpn-server-on-centos-6/ OpenVPN is easy to set up, but needs...