24 December 2018
After Now Archeology
The blog a thesis can be found at : http://afternowarcheology.blogspot.fi/
The research refers to several important books/games in the field.
21 December 2018
OpenGrok
It retrieves information from different control version source code and is indexed with Apache Lucene, making a fast solution for searching (and keep updating).
https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok
http://demo.opengrok.org/
https://github.com/oracle/opengrok
18 December 2018
Most interesting Socket Options
- TCP_NODELAY
- SO_SNDBUF
- SO_RCVBUF
- Don't forget timeout !
socket = new Socket(host, port);
sock.setSoTimeout(5 * 1000); //milliseconds
socket.setTcpNoDelay(true);
socket.setSendBufferSize(1000);
socket.setReceiveBufferSize(1000);
https://eklitzke.org/the-caveats-of-tcp-nodelay
http://normanmaurer.me/presentations/2013-jax-networking-on-jvm/#/41
Don't want to Hassle
There are a few frameworks to rescue....
12 December 2018
Bfile++
- http://www.jcraft.com/jsch/
JSch library
https://docs.spring.io/spring-integration/reference/html/sftp.html
Under the covers, the SFTP Session Factory relies on the JSch library to provide the SFTP capabilities.
- https://commons.apache.org/proper/commons-net/
FTPFile (Apache Commons Net 3.6 API)
- Commons VFS
https://commons.apache.org/proper/commons-vfs
- Xodus (JetBrains)
https://github.com/JetBrains/xodus
It has three types of database: a key-value storage, an entity-store and a database for files and streams.
- Flexible Storage System (FS2)
https://github.com/robertjchristian/fs2
(un solo developer :( esta buena la idea )
Servers:
(out of scope)
- http://www.alluxio.org/ (service)
- https://www.syncany.org/ (tool)
More info:
https://docs.oracle.com/cd/B28359_01/java.111/b31224/oralob.htm#i1059941
https://stackoverflow.com/questions/51503297/managing-oracle-bfiles
http://www.orafaq.com/wiki/BFILE
https://docs.oracle.com/cd/B28359_01/java.111/b31224/oralob.htm#i1059941
11 December 2018
Artist Entities for Coding Books
Some examples:
- Get Programming with Haskell
- Lovecraft
names = [("Ian", "Curtis"),
("Bernard","Sumner"),
("Peter", "Hook"),
("Stephen","Morris")]
- If Hemingway Wrote JavaScript
- Ernest Hemingway
- William Shakespeare
- André Breton
- Roberto Bolaño
- Dan Brown
Table of contents:
Fibonacci
1 Ernest Hemingway
2 William Shakespeare
3 André Breton
4 Roberto Bolaño
5 Dan Brown
Factorial
6 Jack Kerouac
7 Jane Austen
8 Samuel Johnson
9 Sir Arthur Conan Doyle
10 James Joyce
Happy Numbers
11 J.D. Salinger
12 Tupac Shakur
13 Virginia Woolf
14 Geoffrey Chaucer
15 Vladimir Nabokov
Prime Numbers
16 Jorge Luis Borges
17 Lewis Carroll
18 Douglas Adams
19 Charles Dickens
20 David Foster Wallace
Say It
21 Sylvia Plath
22 Italo Calvino
23 J.K. Rowling
24 Arundhati Roy
25 Franz Kafka
Poetic Interludes
1 Edgar Allan Poe
2 William Shakespeare
3 Dylan Thomas
4 Walt Whitman
10 December 2018
Look into JMS filestore
1.
java weblogic.store.Admin
2.
storeadmin-> openfile -store FileStore-FileStore1 -dir /tmp/filestore-local
3.
storeadmin-> dump -store FileStore-FileStore1 -out /Users/German/tmp/filestore-local-dump.xml -conn -deep
4.
list -dir /tmp/filestore-local
It can be used for compressing the store as well.
more info:
https://docs.oracle.com/middleware/1221/wls/STORE/admin.htm#STORE363
06 December 2018
Ludic HTTP
The HTTP 418 I'm a teapot client error response code indicates that the server refuses to brew coffee because it is a teapot. This error is a reference of Hyper Text Coffee Pot Control Protocol which was an April Fools' joke in 1998
451 Unavailable For Legal Reasons:
I just discovered that HTTP status code 451 "Unavailable For Legal Reasons" exists. This number, in the 4xx "Client errors" range, is a reference to Ray Bradbury's Fahrenheit 451 in which books are illegal...
04 December 2018
WLS Shortcuts:
Servers -> YOUR_SERVER -> General -> Tuning -> Advanced -> Self Tuning Thread Maximum Pool Size: 400 (default)
Servers -> YOUR_SERVER -> Monitoring -> General : jdk, os, etc.
Servers -> YOUR_SERVER -> Protocols -> Channels : t3, t3s, http, https, etc.
03 December 2018
Optimizar o No Optimizar
Viendo un post en el blog http://gpicon.blogspot.com/2007/11/optimizando-solucion-problema-de.html mencionan sobre optimizar y ver comentarios tan radicales como "si el problema es ficticio es una tontera optimizar", se ve varios puntos de vistas que podemos ver en la vida real.
1. si el problema no fuese ficticio entonces no trabajemos en él, entonces la mayoria de las matematicas no existirian hasta encontrarle alguna aplicacion entonces las matematicas no serian lo que son si ese fuese el paradigma (por suerte no hay tan cortos de mente en la historia de la civilización humana).
2. como sale en el triángulo de (... ver cuaderno), segun el tiempo que se le invierte podemos optimizar algun algoritmo (tarea, metodo, etc.), segun la dificultad y los tiempos (como tambien mencionan en otro post, que la Gantt siga bajo fechas estimadas),
3. hoy en dia hay varios paradigmas de metodos agiles (cual utilizo cuando desarrollo) que si el algoritmo funciona dentro de tiempos y uso de recursos razonables entonces dejemoslo ahi y vamos por otro requerimiento, despues podemos volver a optimizar y mejorar (siempre se puede), pero tenemos que terminar otras cosas antes (bueno el proyecto en si).
4. Esto me recuerda a la trilogia de articulos clasicos de Knuth (casi imposible mencionarlo), sobre la curva/transaccion de teoria versus practica, donde es dificil definir el limite hasta donde va cual paradigma y donde ambas hacen simbiosis.
Volviendo al blog inicial, creo que esos comentarios de optimizar es malo estan totalmente errados y deberian intentar meditar mejor sus dichos para poder mejorar el area de desarrollo (en todo ambito).
Creo que acá puede ser mal entendido el dicho de Knuth:
"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." (Knuth, Donald. Structured Programming with go to Statements, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268.).
La optimización debe ser analizada si realmente es necesaria gastar esfuerzo en algo que impacto en el rendimiento de un algoritmo ya que los cambios marginales se pueden dejar ya que sólo aumento el nivel de riesgo que se dañe lo ya logrado.
27 November 2018
Object Pooling
https://stackoverflow.com/questions/43735067/manage-client-socket-pool
https://stackoverflow.com/questions/939734/tips-for-using-commons-pool-in-production
https://github.com/roma/roma-java-client/blob/master/java/client/src/main/java/jp/co/rakuten/rit/roma/client/SocketPool.java
https://commons.apache.org/proper/commons-pool/
http://www.vibur.org/vibur-object-pool/
http://danielw.cn/fast-object-pool/
CEStreamExhausted anti-pattern
https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/sun/misc/CEStreamExhausted.java
/** This exception is thrown when EOF is reached */
public class CEStreamExhausted extends IOException { };
Which is executed at line 117 de BASE64Decoder :
https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/sun/misc/BASE64Decoder.java
do {
i = inStream.read();
if (i == -1) {
throw new CEStreamExhausted();
}
} while (i == '\n' || i == '\r');
Therefore it's a false-positive if any APM raise it.
--------------------------------------------------------------------------------
while (true) { | |
int length; | |
try { | |
length = decodeLinePrefix(ps, bStream); | |
for (i = 0; (i+bytesPerAtom()) < length; i += bytesPerAtom()) { | |
decodeAtom(ps, bStream, bytesPerAtom()); | |
totalBytes += bytesPerAtom(); | |
} | |
if ((i + bytesPerAtom()) == length) { | |
decodeAtom(ps, bStream, bytesPerAtom()); | |
totalBytes += bytesPerAtom(); | |
} else { | |
decodeAtom(ps, bStream, length - i); | |
totalBytes += (length - i); | |
} | |
decodeLineSuffix(ps, bStream); | |
} catch (CEStreamExhausted e) { | |
break; | |
} | |
26 November 2018
Log4j config ?
log4j IsConfigured :::
/**
* Returns true if it appears that log4j have been previously configured. This
* code checks to see if there are any appenders defined for log4j which is the
* definitive way to tell if log4j is already initialized
*/
private static boolean isConfigured() {
Enumeration appenders = Logger.getRoot().getAllAppenders();
if (appenders.hasMoreElements()) {
return true;
} else {
Enumeration loggers = LogManager.getCurrentLoggers();
while (loggers.hasMoreElements()) {
Logger c = (Logger) loggers.nextElement();
if (c.getAllAppenders().hasMoreElements())
return true;
}
}
return false;
}
http://wiki.apache.org/logging-log4j/UsefulCode
http://logging.apache.org/log4j/1.2/xref-test/org/apache/log4j/defaultInit/TestCase4.html
https://web.archive.org/web/20130401061324/http://dsiutils.dsi.unimi.it/
https://web.archive.org/web/20081211154329/http://dsiutils.dsi.unimi.it/docs/it/unimi/dsi/Util.html
https://web.archive.org/web/20110303190435/http://www.screaming-penguin.com/node/7622
22 November 2018
Java Transactions
- NotSupported
- Supports
- Required
- RequiresNew
- Mandatory
- Never
For more details :
https://docs.oracle.com/javaee/6/api/javax/ejb/TransactionAttributeType.html#REQUIRES_NEWhttps://docs.oracle.com/cd/A91202_01/901_doc/java.901/a90188/trans.htm#1271312
https://docs.oracle.com/javaee/5/tutorial/doc/bncij.html
https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference/html/transaction.html
https://stackoverflow.com/questions/10740021/transactionalpropagation-propagation-required
https://docs.oracle.com/cd/E13222_01/wls/docs92/jta/trxejb.html#wp1008419
21 November 2018
20 November 2018
Software Architecture Diagram Review Checklist
In the same site you can find resources about its solution, including a Software Architecture Diagram Review Checklist:
16 November 2018
Loopback
<Oct 18, 2018 6:14:01 PM EDT> <Notice> <WebLogicServer> <BEA-000355> <Thread "ListenThread.Loopback" listening on port 7001, ip address 127.0.0.1>
14 November 2018
Oxímoron
El oxímoron (del griego ὀξύμωρον, oxymoron, en latín contradictio in terminis), dentro de las figuras literarias en retórica, es una figura lógica que consiste en usar dos conceptos de significado opuesto en una sola expresión,1
Ejemplo: «Festina lente», ‘apresúrate lentamente’ (César Augusto, 63 a. C.-14 d. C.)
https://es.wikipedia.org/wiki/Ox%C3%ADmoron
1. https://www.retoricas.com/2009/06/4-ejemplos-de-oximoron.html
13 November 2018
Java Flame Graphs
Flame graphs are a visualization of profiled software, allowing the most frequent code-paths to be identified quickly and accurately.
http://www.brendangregg.com/flamegraphs.html
http://www.brendangregg.com/blog/2017-06-30/package-flame-graph.html
https://github.com/lhotari/jfr-report-tool
12 November 2018
Ray Puzzle
https://twitter.com/devwebcl/status/1060533585839452160
08 November 2018
diff between SoftReference and WeakReference
From Understanding Weak References, by Ethan Nicholas:
Weak referencesAnd Peter Kessler added in a comment:
A weak reference, simply put, is a reference that isn't strong enough to force an object to remain in memory. Weak references allow you to leverage the garbage collector's ability to determine reachability for you, so you don't have to do it yourself. You create a weak reference like this:
and then elsewhere in the code you can useWeakReference weakWidget = new WeakReference(widget);
weakWidget.get()
to get the actualWidget
object. Of course the weak reference isn't strong enough to prevent garbage collection, so you may find (if there are no strong references to the widget) thatweakWidget.get()
suddenly starts returningnull
.
...
Soft references
A soft reference is exactly like a weak reference, except that it is less eager to throw away the object to which it refers. An object which is only weakly reachable (the strongest references to it areWeakReferences
) will be discarded at the next garbage collection cycle, but an object which is softly reachable will generally stick around for a while.
SoftReferences
aren't required to behave any differently thanWeakReferences
, but in practice softly reachable objects are generally retained as long as memory is in plentiful supply. This makes them an excellent foundation for a cache, such as the image cache described above, since you can let the garbage collector worry about both how reachable the objects are (a strongly reachable object will never be removed from the cache) and how badly it needs the memory they are consuming.
The Sun JRE does treat SoftReferences differently from WeakReferences. We attempt to hold on to object referenced by a SoftReference if there isn't pressure on the available memory. One detail: the policy for the "-client" and "-server" JRE's are different: the -client JRE tries to keep your footprint small by preferring to clear SoftReferences rather than expand the heap, whereas the -server JRE tries to keep your performance high by preferring to expand the heap (if possible) rather than clear SoftReferences. One size does not fit all.
07 November 2018
Sonarqube cheat sheet
SonarQube Best open source static analyzer.
(IMHO :-) ).
1.
How to create custom plugins for Sonar
https://devwebcl.blogspot.com/2018/10/custom-sonarqube-plugins-63.html
2.
default port: 9000
http://127.0.0.1:9000/
http://localhost:9000/
3.
Maven command line:
mvn sonar:sonar -Dsonar.host.url=http://127.0.0.1:9000 -Dsonar.login=d676f79d8ba83cdcf69f38f8471f0284ee242e09
4.
Quality Gates
Quality Gates are the best way to ensure that standards are met and regulated across all the projects in your organization. Quality Gates can be defined as a set of threshold measures set on your project like Code Coverage, Technical Debt Measure, Number of Blocker/Critical issues, Security Rating, etc.
5.
Quality Profiles
A quality profile in Sonar consists of: A set of activated coding rules among +600 available (PMD, Checkstyle and FindBugs): an activation level (mandatory or optional) and parametrization for each rule.
6.
wsdl jar
to be tested jar wsdl client proxies :
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlDirectory>${basedir}/src/main/resources/wsdl/</wsdlDirectory>
<wsdlLocation>wsdl/endpoint_sample_wsdl.wsdl</wsdlLocation>
8. sonar-project.properties
to active a project and be used by sonar cli.
Create an user and generate token, then add to properties file:
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
sonar.login=f86a58b7f520bfc6bbdb5bf03a0671ce64860f0c
sonar.java.binaries=target
#to avoid java parsing
sonar.exclusions=**/*.java
9. important not default rules
- https://rules.sonarsource.com/java/RSPEC-3749
Members of Spring components should be injected
- https://rules.sonarsource.com/java/RSPEC-4288
Spring components should use constructor injection
31 October 2018
Custom sonarqube-plugins 6.3
The visitor Pattern is the core of the solution, similar to Java Parser.
sonarqube-plugins 6.3
Class Filename | path | Description |
---|---|---|
MyFirstCustomCheck.java | /src/test/files/ | A test file, which contains Java code used as input data for testing the rule |
org.sonar.template.java.checks. MyFirstCustomCheckTest.java | /src/test/java | A test class, which contains the rule's unit test |
org.sonar.template.java.checks. MyFirstCustomCheck.java | /src/main/java | A rule class, which contains the implementation of the rule. |
import org.sonar.api.Plugin;
/**
* Entry point of your plugin containing your custom rules
*/
public class MyJavaRulesPlugin implements Plugin {
/**
* Declare rule metadata in server repository of rules.
* That allows to list the rules in the page "Rules".
*/
public class MyJavaRulesDefinition implements RulesDefinition {
// server extensions -> objects are instantiated during server startup
context.addExtension(MyJavaRulesDefinition.class);
// batch extensions -> objects are instantiated during code analysis
context.addExtension(MyJavaFileCheckRegistrar.class);
/**
* Provide the "checks" (implementations of rules) classes that are going be executed during
* source code analysis.
*
* This class is a batch extension by implementing the {@link org.sonar.plugins.java.api.CheckRegistrar} interface.
*/
@SonarLintSide
public class MyJavaFileCheckRegistrar implements CheckRegistrar {
/*Rule Activation
The second things to to is to activate the rule within the plugin. To do so, open class RulesList (org.sonar.samples.java.RulesList). In this class, you will notice methods GetJavaChecks() and GetJavaTestChecks(). These methods are used to register our rules with alongside the rule of the Java plugin.*/
public final class RulesList {
30 October 2018
Threads Life Cycle
Interesting articles :
https://howtodoinjava.com/java/multi-threading/java-thread-life-cycle-and-thread-states/
https://dzone.com/articles/difference-between-blocked-waiting-timed-waiting-e
https://examples.javacodegeeks.com/core-java/threads/java-thread-join-example/
17 October 2018
Eclipse MAT++
Shallow is the real size of the object in the heap, meanwhile Retained is the complete memory space used by all the references.
https://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fconcepts%2Fshallowretainedheap.html
https://plumbr.io/blog/memory-leaks/how-much-memory-what-is-retained-heap
2. Heap diagram:
Many times, it is not very known the states of objects in Heap memory:
https://mechanical-sympathy.blogspot.com/2013/07/java-garbage-collection-distilled.html
3. “GC root path”.
Mat can calculate the full path from GC to any class, this way we can see big size objects.
Now, MAT will start calculating the memory graph to show the paths to the GC root where this instance is referenced. This will show up with another page, showing the references as below:
https://dzone.com/articles/java-out-of-memory-heap-analysis
4. MAT resources
A small good tip is about the necessary resources to run mat.
As a rough estimate if the number of objects is N and the number of classes C, it might take at least T bytes to parse and build the dominator tree where:
from: https://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Ftasks%2Fconfigure_mat.html
5. command line:
Sometimes a good choice to process several heapdumps is to execute thru command line:
sh ./ParseHeapDump.sh /heapdumps/java_7935_heapdump_4p.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
It will create the following reports:
- org.eclipse.mat.api:suspects
- org.eclipse.mat.api:overview
- org.eclipse.mat.api:top_components
16 October 2018
Enterprise Technical Architecture
02 October 2018
JMX Remote (visualvm)
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
30 September 2018
TCP/IP Illustrated
IBM has a good replication:
TCP connection state | Abbreviation in MVS™ console | Abbreviation in TSO or UNIX shell | Description |
---|---|---|---|
LISTEN | Listen | Listen | Waiting for a connection request from a remote TCP application. This is the state in which you can find the listening socket of a local TCP server. |
SYN-SENT | SynSent | SynSent | Waiting for an acknowledgment from the remote endpoint after having sent a connection request. Results after step 1 of the three-way TCP handshake. |
SYN-RECEIVED | SynRcvd | SynRcvd | This endpoint has received a connection request and sent an acknowledgment. This endpoint is waiting for final acknowledgment that the other endpoint did receive this endpoint's acknowledgment of the original connection request. Results after step 2 of the three-way TCP handshake. |
ESTABLISHED | Estblsh | Establsh | Represents a fully established connection; this is the normal state for the data transfer phase of the connection. |
FIN-WAIT-1 | FinWt1 | FinWait1 | Waiting for an acknowledgment of the connection termination request or for a simultaneous connection termination request from the remote TCP. This state is normally of short duration. |
FIN-WAIT-2 | FinWt2 | FinWait2 | Waiting for a connection termination request from the remote TCP after this endpoint has sent its connection termination request. This state is normally of short duration, but if the remote socket endpoint does not close its socket shortly after it has received information that this socket endpoint closed the connection, then it might last for some time. Excessive FIN-WAIT-2 states can indicate an error in the coding of the remote application. |
CLOSE-WAIT | ClosWt | ClosWait | This endpoint has received a close request from the remote endpoint and this TCP is now waiting for a connection termination request from the local application. |
CLOSING | Closing | Closing | Waiting for a connection termination request acknowledgment from the remote TCP. This state is entered when this endpoint receives a close request from the local application, sends a termination request to the remote endpoint, and receives a termination request before it receives the acknowledgment from the remote endpoint. |
LAST-ACK | LastAck | LastAck | Waiting for an acknowledgment of the connection termination request previously sent to the remote TCP. This state is entered when this endpoint received a termination request before it sent its termination request. |
TIME-WAIT | TimeWt | TimeWait | Waiting for enough time to pass to be sure the remote TCP received the acknowledgment of its connection termination request. |
CLOSED | Closed | Closed | Represents no connection state at all. |
Also, a sequence diagram, where Wikipedia is a good contribution (as usual):
- open: 3 way
- close: 4 way
http://www.icir.org/christian/sock.html
https://www.inetdaemon.com/tutorials/internet/tcp/3-way_handshake.shtml
http://www.tcpipguide.com/free/t_TCPConnectionTermination-2.htm
Labels
- Algorithm
- Ant
- Architecture
- AWS
- Aymara
- Books
- C
- Certification
- Cheat
- Chess
- Cloud
- Concurrency
- Contest
- Deep Learning
- Design Patterns
- Dijkstra
- Eclipse
- Errata
- Functional
- Gaming
- Haskell
- Hp48
- Java
- Julia
- Knuth
- Kubernetes
- Latex
- Linguistics
- Linux
- Log4j
- Mac OSX
- Magazines
- Math
- Maven
- Memories
- Microservices
- Miscellaneous
- Networking
- Oc4j
- OCI
- Performance
- Programming
- Puzzle
- Python
- Quotes
- RegExp
- Retro
- Security
- Software
- Software Engineering
- Spring
- Tech Review
- Tomcat
- Unsolved
- Web Services
- Weblogic
My Blog List
-
1990: The Bronx Warriors (1982)2 months ago
Books & Reading
Blog Archive
-
►
2024
(
8
)
- ► Nov 17 - Nov 24 ( 1 )
- ► Oct 20 - Oct 27 ( 1 )
- ► Oct 13 - Oct 20 ( 1 )
- ► Apr 21 - Apr 28 ( 1 )
- ► Mar 24 - Mar 31 ( 3 )
- ► Jan 7 - Jan 14 ( 1 )
-
►
2023
(
15
)
- ► Dec 10 - Dec 17 ( 1 )
- ► Sep 10 - Sep 17 ( 1 )
- ► Aug 13 - Aug 20 ( 1 )
- ► Jul 9 - Jul 16 ( 1 )
- ► Jun 18 - Jun 25 ( 2 )
- ► Jun 4 - Jun 11 ( 1 )
- ► May 28 - Jun 4 ( 2 )
- ► May 21 - May 28 ( 1 )
- ► Mar 12 - Mar 19 ( 1 )
- ► Feb 19 - Feb 26 ( 1 )
- ► Jan 15 - Jan 22 ( 3 )
-
►
2022
(
22
)
- ► Nov 27 - Dec 4 ( 1 )
- ► Oct 16 - Oct 23 ( 1 )
- ► Aug 21 - Aug 28 ( 1 )
- ► Jul 17 - Jul 24 ( 1 )
- ► Jun 5 - Jun 12 ( 1 )
- ► May 22 - May 29 ( 1 )
- ► May 15 - May 22 ( 1 )
- ► Apr 24 - May 1 ( 2 )
- ► Apr 10 - Apr 17 ( 1 )
- ► Apr 3 - Apr 10 ( 1 )
- ► Mar 20 - Mar 27 ( 2 )
- ► Mar 6 - Mar 13 ( 1 )
- ► Feb 27 - Mar 6 ( 2 )
- ► Jan 30 - Feb 6 ( 1 )
- ► Jan 23 - Jan 30 ( 1 )
- ► Jan 9 - Jan 16 ( 2 )
- ► Jan 2 - Jan 9 ( 2 )
-
►
2021
(
25
)
- ► Dec 19 - Dec 26 ( 1 )
- ► Dec 12 - Dec 19 ( 1 )
- ► Nov 7 - Nov 14 ( 1 )
- ► Sep 5 - Sep 12 ( 1 )
- ► Aug 8 - Aug 15 ( 1 )
- ► Aug 1 - Aug 8 ( 2 )
- ► Jul 25 - Aug 1 ( 1 )
- ► Jul 18 - Jul 25 ( 2 )
- ► Jul 11 - Jul 18 ( 1 )
- ► Jul 4 - Jul 11 ( 1 )
- ► Jun 27 - Jul 4 ( 2 )
- ► Jun 6 - Jun 13 ( 1 )
- ► May 30 - Jun 6 ( 1 )
- ► May 9 - May 16 ( 1 )
- ► May 2 - May 9 ( 1 )
- ► Apr 4 - Apr 11 ( 1 )
- ► Feb 14 - Feb 21 ( 1 )
- ► Feb 7 - Feb 14 ( 1 )
- ► Jan 24 - Jan 31 ( 3 )
- ► Jan 10 - Jan 17 ( 1 )
-
►
2020
(
46
)
- ► Dec 20 - Dec 27 ( 1 )
- ► Dec 6 - Dec 13 ( 2 )
- ► Nov 29 - Dec 6 ( 3 )
- ► Nov 1 - Nov 8 ( 1 )
- ► Oct 25 - Nov 1 ( 1 )
- ► Oct 18 - Oct 25 ( 2 )
- ► Oct 11 - Oct 18 ( 1 )
- ► Sep 27 - Oct 4 ( 1 )
- ► Sep 20 - Sep 27 ( 1 )
- ► Sep 6 - Sep 13 ( 1 )
- ► Aug 30 - Sep 6 ( 2 )
- ► Aug 16 - Aug 23 ( 2 )
- ► Aug 2 - Aug 9 ( 1 )
- ► Jul 26 - Aug 2 ( 1 )
- ► Jul 19 - Jul 26 ( 2 )
- ► Jul 5 - Jul 12 ( 1 )
- ► Jun 14 - Jun 21 ( 1 )
- ► May 31 - Jun 7 ( 3 )
- ► May 17 - May 24 ( 2 )
- ► May 10 - May 17 ( 1 )
- ► Apr 19 - Apr 26 ( 2 )
- ► Mar 29 - Apr 5 ( 2 )
- ► Mar 15 - Mar 22 ( 2 )
- ► Mar 8 - Mar 15 ( 1 )
- ► Mar 1 - Mar 8 ( 1 )
- ► Feb 23 - Mar 1 ( 1 )
- ► Feb 16 - Feb 23 ( 2 )
- ► Feb 9 - Feb 16 ( 1 )
- ► Feb 2 - Feb 9 ( 1 )
- ► Jan 26 - Feb 2 ( 1 )
- ► Jan 19 - Jan 26 ( 1 )
- ► Jan 12 - Jan 19 ( 1 )
-
►
2019
(
56
)
- ► Dec 29 - Jan 5 ( 1 )
- ► Dec 15 - Dec 22 ( 1 )
- ► Dec 1 - Dec 8 ( 2 )
- ► Nov 24 - Dec 1 ( 1 )
- ► Nov 17 - Nov 24 ( 1 )
- ► Nov 10 - Nov 17 ( 1 )
- ► Nov 3 - Nov 10 ( 1 )
- ► Oct 20 - Oct 27 ( 1 )
- ► Oct 6 - Oct 13 ( 1 )
- ► Sep 29 - Oct 6 ( 1 )
- ► Sep 22 - Sep 29 ( 2 )
- ► Sep 8 - Sep 15 ( 7 )
- ► Sep 1 - Sep 8 ( 6 )
- ► Aug 25 - Sep 1 ( 4 )
- ► Aug 18 - Aug 25 ( 2 )
- ► Aug 4 - Aug 11 ( 1 )
- ► Jul 14 - Jul 21 ( 1 )
- ► Jun 30 - Jul 7 ( 1 )
- ► Jun 16 - Jun 23 ( 2 )
- ► Jun 2 - Jun 9 ( 1 )
- ► May 26 - Jun 2 ( 1 )
- ► May 5 - May 12 ( 3 )
- ► Apr 28 - May 5 ( 1 )
- ► Apr 21 - Apr 28 ( 1 )
- ► Apr 7 - Apr 14 ( 1 )
- ► Mar 24 - Mar 31 ( 2 )
- ► Mar 17 - Mar 24 ( 1 )
- ► Mar 10 - Mar 17 ( 1 )
- ► Mar 3 - Mar 10 ( 1 )
- ► Feb 24 - Mar 3 ( 2 )
- ► Feb 10 - Feb 17 ( 2 )
- ► Jan 13 - Jan 20 ( 2 )
-
▼
2018
(
75
)
- ► Dec 30 - Jan 6 ( 2 )
- ► Nov 18 - Nov 25 ( 3 )
- ► Sep 23 - Sep 30 ( 1 )
- ► Sep 16 - Sep 23 ( 1 )
- ► Aug 26 - Sep 2 ( 1 )
- ► Aug 12 - Aug 19 ( 2 )
- ► Aug 5 - Aug 12 ( 1 )
- ► Jul 29 - Aug 5 ( 1 )
- ► Jul 22 - Jul 29 ( 1 )
- ► Jul 8 - Jul 15 ( 3 )
- ► Jul 1 - Jul 8 ( 2 )
- ► Jun 24 - Jul 1 ( 3 )
- ► Jun 17 - Jun 24 ( 2 )
- ► Jun 10 - Jun 17 ( 8 )
- ► Jun 3 - Jun 10 ( 4 )
- ► May 27 - Jun 3 ( 2 )
- ► May 6 - May 13 ( 1 )
- ► Apr 29 - May 6 ( 1 )
- ► Apr 8 - Apr 15 ( 2 )
- ► Apr 1 - Apr 8 ( 2 )
- ► Mar 25 - Apr 1 ( 1 )
- ► Mar 11 - Mar 18 ( 1 )
- ► Mar 4 - Mar 11 ( 1 )
- ► Feb 18 - Feb 25 ( 2 )
- ► Jan 28 - Feb 4 ( 1 )
- ► Jan 21 - Jan 28 ( 1 )
- ► Jan 7 - Jan 14 ( 1 )
-
►
2017
(
33
)
- ► Dec 31 - Jan 7 ( 1 )
- ► Dec 24 - Dec 31 ( 2 )
- ► Dec 17 - Dec 24 ( 1 )
- ► Dec 10 - Dec 17 ( 1 )
- ► Dec 3 - Dec 10 ( 1 )
- ► Nov 26 - Dec 3 ( 3 )
- ► Nov 19 - Nov 26 ( 1 )
- ► Nov 5 - Nov 12 ( 1 )
- ► Oct 29 - Nov 5 ( 4 )
- ► Oct 15 - Oct 22 ( 1 )
- ► Oct 8 - Oct 15 ( 2 )
- ► Oct 1 - Oct 8 ( 1 )
- ► Aug 20 - Aug 27 ( 2 )
- ► Jul 9 - Jul 16 ( 1 )
- ► May 7 - May 14 ( 3 )
- ► Apr 30 - May 7 ( 1 )
- ► Mar 19 - Mar 26 ( 1 )
- ► Mar 12 - Mar 19 ( 2 )
- ► Feb 26 - Mar 5 ( 1 )
- ► Feb 12 - Feb 19 ( 2 )
- ► Jan 8 - Jan 15 ( 1 )
-
►
2016
(
32
)
- ► Dec 25 - Jan 1 ( 1 )
- ► Nov 27 - Dec 4 ( 2 )
- ► Nov 20 - Nov 27 ( 1 )
- ► Nov 6 - Nov 13 ( 1 )
- ► Oct 30 - Nov 6 ( 1 )
- ► Oct 23 - Oct 30 ( 1 )
- ► Oct 16 - Oct 23 ( 3 )
- ► Sep 4 - Sep 11 ( 1 )
- ► Aug 7 - Aug 14 ( 2 )
- ► Jul 24 - Jul 31 ( 1 )
- ► Jun 26 - Jul 3 ( 1 )
- ► May 22 - May 29 ( 1 )
- ► May 15 - May 22 ( 1 )
- ► May 1 - May 8 ( 1 )
- ► Apr 3 - Apr 10 ( 1 )
- ► Mar 20 - Mar 27 ( 1 )
- ► Mar 13 - Mar 20 ( 2 )
- ► Mar 6 - Mar 13 ( 1 )
- ► Feb 28 - Mar 6 ( 3 )
- ► Feb 21 - Feb 28 ( 2 )
- ► Jan 24 - Jan 31 ( 1 )
- ► Jan 10 - Jan 17 ( 2 )
- ► Jan 3 - Jan 10 ( 1 )
-
►
2015
(
19
)
- ► Dec 27 - Jan 3 ( 1 )
- ► Nov 29 - Dec 6 ( 1 )
- ► Nov 1 - Nov 8 ( 2 )
- ► Oct 18 - Oct 25 ( 1 )
- ► Oct 11 - Oct 18 ( 2 )
- ► Sep 13 - Sep 20 ( 3 )
- ► Jul 12 - Jul 19 ( 1 )
- ► Jul 5 - Jul 12 ( 1 )
- ► Jun 21 - Jun 28 ( 1 )
- ► May 31 - Jun 7 ( 1 )
- ► Mar 15 - Mar 22 ( 1 )
- ► Mar 8 - Mar 15 ( 3 )
- ► Mar 1 - Mar 8 ( 1 )
-
►
2014
(
15
)
- ► Dec 28 - Jan 4 ( 1 )
- ► Dec 7 - Dec 14 ( 1 )
- ► Nov 16 - Nov 23 ( 1 )
- ► Nov 2 - Nov 9 ( 1 )
- ► Oct 5 - Oct 12 ( 1 )
- ► Sep 7 - Sep 14 ( 1 )
- ► Aug 31 - Sep 7 ( 1 )
- ► Aug 17 - Aug 24 ( 1 )
- ► Jul 27 - Aug 3 ( 1 )
- ► Jun 29 - Jul 6 ( 1 )
- ► Jun 15 - Jun 22 ( 1 )
- ► Jun 8 - Jun 15 ( 1 )
- ► May 25 - Jun 1 ( 1 )
- ► Feb 9 - Feb 16 ( 1 )
- ► Jan 5 - Jan 12 ( 1 )
-
►
2013
(
21
)
- ► Dec 29 - Jan 5 ( 2 )
- ► Dec 22 - Dec 29 ( 1 )
- ► Nov 17 - Nov 24 ( 1 )
- ► Nov 10 - Nov 17 ( 2 )
- ► Oct 27 - Nov 3 ( 1 )
- ► Sep 22 - Sep 29 ( 1 )
- ► Sep 8 - Sep 15 ( 1 )
- ► Aug 25 - Sep 1 ( 1 )
- ► Jul 28 - Aug 4 ( 1 )
- ► May 5 - May 12 ( 2 )
- ► Apr 7 - Apr 14 ( 3 )
- ► Mar 31 - Apr 7 ( 2 )
- ► Mar 3 - Mar 10 ( 1 )
- ► Jan 20 - Jan 27 ( 1 )
- ► Jan 13 - Jan 20 ( 1 )
-
►
2012
(
23
)
- ► Dec 16 - Dec 23 ( 1 )
- ► Oct 28 - Nov 4 ( 1 )
- ► Oct 21 - Oct 28 ( 1 )
- ► Sep 23 - Sep 30 ( 2 )
- ► Sep 2 - Sep 9 ( 1 )
- ► Aug 26 - Sep 2 ( 2 )
- ► Jun 24 - Jul 1 ( 2 )
- ► Jun 17 - Jun 24 ( 1 )
- ► May 13 - May 20 ( 1 )
- ► May 6 - May 13 ( 2 )
- ► Apr 22 - Apr 29 ( 2 )
- ► Apr 15 - Apr 22 ( 4 )
- ► Mar 25 - Apr 1 ( 1 )
- ► Feb 26 - Mar 4 ( 1 )
- ► Jan 29 - Feb 5 ( 1 )
-
►
2011
(
15
)
- ► Nov 20 - Nov 27 ( 1 )
- ► Nov 6 - Nov 13 ( 1 )
- ► Oct 30 - Nov 6 ( 1 )
- ► Oct 23 - Oct 30 ( 3 )
- ► Sep 25 - Oct 2 ( 1 )
- ► Sep 4 - Sep 11 ( 1 )
- ► Aug 28 - Sep 4 ( 1 )
- ► Jul 17 - Jul 24 ( 1 )
- ► Jul 3 - Jul 10 ( 1 )
- ► May 15 - May 22 ( 1 )
- ► May 8 - May 15 ( 1 )
- ► May 1 - May 8 ( 1 )
- ► Feb 20 - Feb 27 ( 1 )
-
►
2010
(
19
)
- ► Dec 26 - Jan 2 ( 1 )
- ► Dec 12 - Dec 19 ( 2 )
- ► Dec 5 - Dec 12 ( 2 )
- ► Nov 21 - Nov 28 ( 1 )
- ► Sep 19 - Sep 26 ( 1 )
- ► Aug 22 - Aug 29 ( 1 )
- ► Aug 1 - Aug 8 ( 2 )
- ► Jun 27 - Jul 4 ( 1 )
- ► Jun 6 - Jun 13 ( 1 )
- ► May 23 - May 30 ( 1 )
- ► May 16 - May 23 ( 4 )
- ► Feb 28 - Mar 7 ( 1 )
- ► Jan 31 - Feb 7 ( 1 )
-
►
2009
(
16
)
- ► Dec 13 - Dec 20 ( 1 )
- ► Oct 4 - Oct 11 ( 1 )
- ► Sep 27 - Oct 4 ( 1 )
- ► Aug 23 - Aug 30 ( 4 )
- ► Aug 16 - Aug 23 ( 1 )
- ► Aug 2 - Aug 9 ( 1 )
- ► Jul 19 - Jul 26 ( 1 )
- ► Jul 12 - Jul 19 ( 1 )
- ► Jun 21 - Jun 28 ( 1 )
- ► Jun 14 - Jun 21 ( 1 )
- ► Jun 7 - Jun 14 ( 1 )
- ► Apr 19 - Apr 26 ( 1 )
- ► Feb 8 - Feb 15 ( 1 )
-
►
2008
(
10
)
- ► Dec 28 - Jan 4 ( 1 )
- ► Nov 30 - Dec 7 ( 1 )
- ► Nov 23 - Nov 30 ( 1 )
- ► Oct 26 - Nov 2 ( 2 )
- ► Sep 28 - Oct 5 ( 1 )
- ► Sep 21 - Sep 28 ( 1 )
- ► Sep 7 - Sep 14 ( 1 )
- ► Jun 8 - Jun 15 ( 1 )
- ► Jan 20 - Jan 27 ( 1 )
-
►
2007
(
8
)
- ► Sep 23 - Sep 30 ( 1 )
- ► Jul 29 - Aug 5 ( 2 )
- ► Jun 17 - Jun 24 ( 1 )
- ► Apr 8 - Apr 15 ( 1 )
- ► Mar 18 - Mar 25 ( 2 )
- ► Mar 11 - Mar 18 ( 1 )
-
►
2006
(
10
)
- ► Dec 17 - Dec 24 ( 1 )
- ► Dec 3 - Dec 10 ( 1 )
- ► Nov 19 - Nov 26 ( 1 )
- ► Oct 15 - Oct 22 ( 1 )
- ► Sep 3 - Sep 10 ( 1 )
- ► Jul 30 - Aug 6 ( 1 )
- ► Jun 25 - Jul 2 ( 1 )
- ► Jun 18 - Jun 25 ( 1 )
- ► May 28 - Jun 4 ( 1 )
- ► Mar 26 - Apr 2 ( 1 )