Di seguito tutti gli interventi pubblicati sul sito, in ordine cronologico.
Ecco una breve, ma efficace guida alle targhe tedesche!
Le targhe automobilistiche della Germania
Riporto comunque un breve stralcio dall'articolo:
Prendiamo come esempio la targa che vedete sopra:
A sinistra, nella fascia azzurra in alto la corona di stelle dell'Unione Europea e sotto la sigla che sta per il paese (qui D = Deutschland / Germania), due elementi che si trovano ormai in tutte le targhe dei paesi della comunità europea.
Poi seguono una, due o tre lettere (qui RA) che indicano la città o la provincia dove l'automobile è stata registrata. In questo caso, RA sta per la città di Rastatt (vedi anche l'elenco sotto).
Seguono a destra due targhette piccole rotonde, una sopra l'altra.
Sopra quella che indica la scadenza del controllo tecnico periodico dell'automobile. Il colore di quella targhetta cambia ogni anno e così è immediatamente visibile se l'automobile è in regola o no. Questa targhetta rotonda si trova nella targa posteriore, nella targa anteriore si trova invece una targhetta del tutto simile, dello stesso colore, ma esagonale che indica la scadenza dell'esame del gas di scarico.
Sotto, sia nella targa posteriore che su quella anteriore, una targhetta rotonda leggermente più grande dove si legge per esteso il nome della città o della provincia dove l'automobile è stata registrata, al centro lo stemma della regione e sopra il nome della regione.
Seguono, a destra, una serie di una o due lettere (qui KL) e una serie di cifre (fino a quattro cifre, qui 8136). Queste lettere e cifre non hanno nessun significato, servono solo a distinguere le automobili registrate in una città o provincia, possono quindi benissimo ripetersi in un'altra città.
Poi esistono tutta una serie di combinazioni, che non risultano nella lista dell'articolo, come Wetzlar, ad esempio.
A |
A |
Augsburg |
AA |
Ostablkreis |
AB |
Aschaffenburg |
ABG |
Aschaffenburger Land |
AC |
Achen |
AIC |
Aichach-Friedberg |
AK |
Altenkirchen |
AM |
Amberg |
AN |
Ansbach |
ANA |
Annaberg |
AÖ |
Altötting |
AP |
Weimarer Land |
AS |
Amberg-Sulzbach |
ASL |
Aschersleben-Sulzbach |
ASZ |
Aue-Schwarzenberg |
AUR |
Aurich |
AW |
Ahrweiler |
AZ |
Alzey-Worms |
AZE |
Anhalt-Zerbst |
B |
B |
Berlin |
BA |
Bamberg |
BAD | Baden-Baden |
BAR |
Barnim | BB | Böblingen |
BBG |
Bernburg | BC | Biberach |
BGL |
Berchtesgardener Land | BI | Bielefeld |
BIR |
Birkenfeld-Idar-Oberstein | BIT | Bitburg-Prüm |
BL |
Zollernalbkreis | BLK | Burgenlandkreis |
BM |
Erftkreis | BN | Bonn |
BO |
Bochum | BÖ | Börderkreis |
BOR |
Borken | BOT | Bottrop |
BRA |
Wesermarsch | BRB | Brandenburg |
BS |
Braunschweig | BT | Bayreuth |
BTF |
Bitterfeld | BÜS | Büsingen |
BZ |
Bautzen |
C |
C |
Chemnitz | CB | Cottbus |
CE |
Celle | CHA | Cham |
CLP |
Cloppenburg | CO | Coburg |
COC |
Cochern-Zell | COE | Coesfeld |
CUX |
Cuxhaven | CW | Calw |
D |
D | Düsseldorf |
DA |
Darmstadt | DAH | Dachau |
DAN |
Lüchow-Dannenberg | DAU | Daun |
DBR |
Bad Doberan | DD | Dresden |
DE |
Dessau | DEG | Deggendorf |
DEL |
Delmenhorst | DGF | Dingolfing-Landau |
DH |
Diepholz | DL | Döbelin |
DLG |
Dillingen an der Donau | DM | Demmin |
DN |
Düren | DO | Dortmund |
DON |
Donau-Ries | DU | Duisbrug |
DÜW |
Bad Dürkheim | DW | Weißeritzkreis |
DZ |
Delitzsch |
E |
E |
Essen | EA | Eisenach |
EBE |
Ebersberg | ED | Erding |
EE |
Eber-Elster | EF | Erfurt |
EI |
Eichstätt | EIC | Eichsfeld |
EL |
Emsland | EM | Emmendingen |
EMD |
Emden | EMS | Rhein-Lahn-Kreis |
EN |
Ennepe-Ruhr-Kreis | ER | Erlangen |
ERB |
Odenwaldkreis | ERH | Erlangen-Höchstadt |
ES |
Esslingen am Neckar | ESW | Werra-Meißner-Kreis |
EU |
Euskirchen |
F |
F |
Frankfurt am Main | FB | Wetteraukreis |
FD |
Fulda | FDS | Freudenstadt |
FF |
Frankfurt an der Oder | FFB | Fürsternfeldbruck |
FG |
Freiberg | FL | Flensburg |
FN |
Bodenseekreis | FO | Forchheim |
FR |
Freiburg im Breisgau | FRG | Freyung-Grafenau |
FRI |
Friesland | FS | Freising, Moosbrug |
FT |
Frankenthal | Fü | Fürth |
G |
G | Gera |
GAP |
Garmisch-Partenkirchen | GC | Chemnitzer Land |
GE |
Gelsenkirchen | GER | Germersheim |
GF |
Gifhorn | GG | Groß-Gerau |
GI |
Gießen | GL | Rheinisch-Berg.-Kreis |
GM |
Oberbergischer Kreis | GÖ | Göttingen |
GP |
Göppingen | GR | Görlitz |
GRZ |
Greiz | GS | Goslar |
GT |
Gütersloh | GTH | Gotha |
GÜ |
Güstrow | GZ | Günzburg |
H |
H | Hannover |
HA |
Hagen | HAL | Halle |
HAM |
Hamm | HAS | Haßberge |
HB |
Bremen | HBN | Hindburghausen |
HBS |
Halberstadt | HD | Heidelberg |
HDH |
Heidenheim (Brenz) | HE | Helmstedt |
HEF |
Hersfeld-Rotenburg | HEI | Dithmarschen |
HER |
Herne | HF | Herford |
HG |
Hochtaunus-Kreis | HGW | Greifswald |
HH |
Hamburg | HI | Hildesheim |
HL |
Lübeck | HM | Hameln-Pyrmont |
HN |
Heilbronn | HO | Hof |
HOL |
Holzminden | HOM | Saar-Pfalz-Kreis |
HP |
Bergstraße | HR | Schwalm-Eder-Kreis |
HRO |
Rostock | HS | Heinsberg |
HSK |
Hochsauerlandkreis | HST | Stralsund |
HU |
Hanau / Main-Kinzig-Kreis | HVL | Havelland |
HWI |
Wismar | HX | Höxter |
HY |
Hoyerswerda |
I |
IGB |
St. Ingbert | IK | Ilm-kreis |
IN |
Ingolstadt | IZ | Steinburg |
J |
J | Jena |
JL | Jerichower Land |
K |
K |
Köln | KA | Karlsruhe |
KB |
Waldeck-Frankenberg | KC | Kronach |
KE |
Kempten | KEH | Kelheim |
KF |
Kaufbeuren | KG | Bad Kissingen |
KH |
Bad Kreuznach | KI | Kiel |
KIB |
Donnersbergkreis | KL | Kaiserslautern |
KLE |
Kleve | KM | Kamenz |
KN |
Konstanz | KO | Koblenz |
KÖT |
Köthen-Anhalt | KR | Krefeld |
KS |
Kassel | KT | Kitzingen |
KU |
Kulmbach | KÜN | Hohlenlohekreis |
KUS |
Kusel | KYF | Kyffhäuserkreis |
L |
L | Leipzig |
LA |
Landshut | LAU | Nürnberger Land |
LB |
Ludwigsburg | LD | Landau in
der Pfalz | LDK |
Lahn-Dill-Kreis | LDS | Dahme-Spreewald |
LER |
Leer | LEV | Leverkusen |
LG |
Lüneburg | LI | Lindau |
LIF |
Lichtenfels | LIP | Lippe |
LL |
Landsberg am Lech | LM | Limburg-Weilburg |
LÖ |
Lörrach | LOS | Oder-Spree |
LU |
Ludwigshafen | LWL | Ludwigslust |
M |
M | München |
MA |
Mannheim | MB | Miesbach |
MD |
Magdeburg | ME | Mettmann |
MEI |
Meißen | MEK | Mittl. Erzgebirgskreis |
MG |
Mönchengladbach | MH | Mühlheim a.d. Ruhr |
MI |
Minden-Lübbecke | MIL | Miltenberg |
MK |
Märkischer Kreis | ML | Mansfelder Land |
MM |
Memmingen | MOL | Märkisch-Oderland |
MOS |
Neckar Odenwaldkreis | MQ | Marseburg-Querfurt |
MR |
Marburg-Biedenkopf | MS | Münster |
MSP |
Main-Spessart | MST | Mechlenburg-Strelitz |
MTK |
Main-Taunus-Kreis | MTL | Muldentalkreis |
MÜ |
Mühldorf am Inn | MÜR | Müritz |
MW |
Mittweida | MYK | Mayen-Koblenz |
MZ |
Mainz, Bingen | MZG | Merzig-Wadern |
N |
N | Nürnberg |
NB |
Neubrandenburg | ND | Neuburg-Schrobenhausen |
NDH |
Nordhausen | NE | Neuss |
NEA |
Neustadt an der Waldnaab | NF | Nordfriesland |
NI |
Nienburg | NK | Neunkirchen |
NM |
Neumarkt | NMS | Neumünster |
NOH |
Bentheim | NOL | Niederschlesisch Oberlausitz |
NOM |
Northeim | NR | Neuwied |
NU |
Neu-Ulm | NVP | Nordvorpommern |
NW |
Neustadt an der Weinstraße | NWM | Nordwestmecklenburg |
O |
OA | Oberallgäu |
OAL |
Ostallgäu | OB | Oberhausen |
OD |
Stormarn | OE | Olpe |
OF |
Offenbach | OG | Ortenaukreis |
OH |
Ostholstein | OHA | Osterode a. Harz |
OHV |
Oberhavel | OHZ | Osterholz-Scharmbeck |
OK |
Ohrekreis | OL | Oldenburg |
OPR |
Ostprignitz-Ruppin | OS | Osnabrück |
OSL |
Oberspreewald-Lausitz | OVP | Ostvorpommern |
P |
P | Potsdam |
PA |
Passau | PAF | Pfaffenhofen |
PAN |
Rottal-Inn | PB | Paderborn |
PCH |
Parchim | PE | Peine |
PF |
Pforzheim | PI | Pinneberg |
PIR |
Sächsische Schweiz | PL | Plauen |
PLÖ |
Plön | PM | Potsdam |
PR |
Prignitz | PS | Pirmasens |
QLB | Quedlinburg |
R |
R | Regensburg |
RA |
Rastatt | RD | Rendsburg-Eckernförde |
RE |
Recklinghausen | REG | Regen |
RG |
Großenhain | RH | Roth |
RO |
Rosenheim | ROW | Rotenburg-Wümme |
RS |
Remscheid | RT | Reutlingen |
RÜD |
Rheingau-Taunus-Kreis | RÜG | Rügen |
RV |
Ravensburg | RW | Rottweil |
RZ |
Herzogtum Lauenburg |
S |
S |
Stuttgart | SAD | Schwandorf
in Bayern | SAW |
Altmarkkreis-Salzwedel | SB | Saarbrücken |
SBK |
Schönebeck | SC | Schwabach |
SDL |
Stendal | SE | Bad Segeberg |
SFA |
Soltau-Fallingbostel | SG | Soltingen |
SGH |
Sangerhausen | SHA | Schwäbisch Hall |
SHG |
Schaumburg | SHK | Saale-Holzland-Kreis |
SHL |
Suhl | SI | Siegen |
SIG |
Sigmaringen | SIM | Rhein-Hunsrückkreis |
SK |
Saalkreis | SL | Schleswig-Flensburg |
SLF |
Saalfeld-Rudolstadt | SLS | Saarlouis |
SM |
Schmalkalden-Meiningen | SN | Schwerin |
SO |
Soest | SÖM | Sömmerda |
SOK |
Saale-Orla-Kreis | SON | Sonneberg |
SP |
Speyer | SPN | Spree-Neiße |
SR |
Straubing | ST | Steinfurt |
STA |
Starnberg | STD | Stade |
STL |
Stollberg | SU | Rhein-Sieg-Kreis |
SÜW |
Südliche Weinstraße | SW | Schweinfurt |
SZ |
Salzgitter |
T |
TBB |
Main-Tauber-Kreis | TF | Teltow-Fläming |
TIR |
Tirschenreuth | TO | Torgau-Oschatz |
TÖL |
Bad Tölz | TR | Trier |
TS |
Traunstein | TÜ | Tübingen |
TUT |
Tuttlingen |
U |
UE |
Uelzen | UER | Uecker-Randow |
UH |
Unstrut-Hainich-Kreis | UL | Ulm, Alb-Donau-Kreis |
UM |
Uckermark | UN | Unna |
V |
V | Vogtlandkreis |
VB |
Vogelsbergkreis | VEC | Vechta |
VER |
Verden | VIE | Viersen |
VK |
Völklingen | VS | Schwarzwald-Baar-Kreis |
W |
W | Wuppertal |
WAF |
Warendorf | WAK | Wartburgkreis |
WB |
Wittenberg | WE | Weimar |
WEN |
Weiden | WES | Wesel |
WF |
Wolfenbüttel | WHV | Wilhelmshaven |
WI |
Wiesbaden | WIL | Wittlich |
WM |
Weilheim-Schongau | WN | Rems-Murr-Kreis |
WND |
St. Wendel | WO | Worms |
WOB |
Wolfsburg | WR | Wernigerode |
WSF |
Weißenfels | WST | Ammerland |
WT |
Waldshut | WTM | Wittmund |
WÜ |
Würzburg | WUG | Weißenburg-Gunzenhausen |
WUN |
Wunsiedel | WW | Westerwaldkreis |
WZ | Wetzlar |
Z |
Z | Zwickau |
ZI |
Löbach-Zittau | ZW | Zweibrücken |
Sometimes it's useful to connect to a computer via Teamviewer, although you're able to reach it via file sharing and you have complete access to the local machine file system of the main disk. You need just to check inside the following path:
\\network_path\c$\Program Files (x86)\TeamViewer\Version9
Now please open the contained log file:
TeamViewer9_Logfile.log
If you look at the beginning of the file, you may find some handshaking between the application and one of the TeamViewer servers to determine its own TeamViewer ID.
There will be a line stating that a new RSA key pair has been generated. The following lines should contain somewhere the ID just after the From= string. That's the TeamViewer ID just assigned from the TeamViewer servers.
2017/07/25 13:50:25.295 2920 1516 S0 Generating new RSA private/public key pair
2017/07/25 13:50:25.342 2920 1516 S0 CT4 CT.Send.CMD_MASTERCOMMAND From=123456789 To=0 L=310
You may confirm that number is right looking at following lines where somebody initiated a TeamViewer connection to your machine:
2017/07/25 13:57:40.511 2148 4008 S0 CT4 CT.Receive.CMD_ROUTERCMD From=987654321 To=123456789 L=1835
In this log file there's plenty of occurrences of that number in several queries. That's enough for you to detect the TeamViewer ID. Now it's up to you to find the password by yourself!
If you aren't getting deeply involved in some innovative feature, you can't figure out how getting the most from it. In the last months I started driving my car along a suburban road, which is quiet at most, but it sometimes blows up at working hours. I drive that road in those hours, so I'm part of the crowd, that makes everything so slow: that's my fault!
After experiencing my first queues, I started using often maps services like Google and Apple's too, especially the traffic feature. Both the apps display those information basically in the same way: the green path over the road shows no evidence of queue, the yellow marks a slower speed than the usual average speed. The red path states the existence of the queue, which means that several vehicles are lying along the trackway.
This feature is available from various information systems since about two decades: how do they exactly work? If I look backward, I think of a not-so-different service offered by the highway management systems through the horizontal textual display placed along the path: you know what I mean.
I'm experienced enough that those information have never been very precise and useful. Response time doesn't seem to have been ever quick at refreshing.
When the queue starts growing, the system makes you know only after some manned intervention. When the queue has disappeared and normal conditions are restored again, it seems that the information system isn't refreshed in real time for the same reason: information systems are not controlled in a completely automatic way.
Last time it happened again in my area: all the cars exited the motorway due to the panic, so that the crowd moved from the highway to the adjacent local roads. The former became completely free, the latter blew up, whilst information system was still stating the unupdated status: "Faulty highway from Soave to Verona with a 9 kilometers queue".
May you get valuable help from such an unresponsive and uneffective service? It may help you to avoid some hour in a longer travel, like during the summer or Christmas holidays, but it's absolutely unuseful for everybody driving daily the highway or the shorter suburban roads.
Let's see how these automatic services work like Google's or Apple's: they are based on pervasive technology, as crowdsourcing. They use a collaborative approach: any user device, mainly any smartphone, is being used anonymously to send real-time position during an interval frame along some city or suburban road. Any competitor, like Google, Tomtom, Apple, Microsoft worked hardly and is going to keep on fixing and make it better, as you may see in this patent registered by Apple.
As soon as all those data are collected in a huge database - tons of smartphone localizations along a road in a short time interval and the average speed of those devices tends to decrease importantly than the average speed at that hour on that road, the software builds its hypothesis: a car queue is growing up.
The algorhytm needs to be adjusted for such detection, in order to avoid false positives. Let's recall some typical patterns to check:
- you need a minimum amount of devices to detect condition (two phones are not enough)
- vehicle speed should have large standard deviation (on-off speed is desired)
- maximum speed along the track needs to outperform average speed of pedestrians or cyclists (don't confuse with other travellers)
- minimum speed could reset to zero, although you could confuse with people at road sides
- average distance between devices along the virtual polyline must not be lower that a fixed value (smartphones are inside vehicles which have larger sizes than human bodies)
There are also other false positives, like crowds at train station or at tube, their unregular positions quite differen from a row, a flashmob, or a group of fans taking part a concert or a sporting event. There's plenty of exceptional cases, which could be detected as traffic crowds, so they need to be manually fixed with blacklists centered towards to stations, squares, or stadiums.
What's amazing of those automatic system is the reaction time, which has been lowered at a value less than a minute. Such threshold is just what you need to take fast decisions in the traffic jam also for local or bounded cases. The travelling time revised with the realtime traffic is a great point to start to offer smart tracks and lets you bypass the lock. Waze was one the first services to work in such manner.
Finché non ne hai la reale necessità, puoi solo apprezzare la potenzialità di alcune innovazioni, ma non le puoi sfruttare fino in fondo. E' da qualche settimana che uso la macchina lungo un tragitto stradale extraurbano che non è eccessivamente affollato, però presenta comunque le sue criticità durante gli orari di pendolarismo. Siccome anch'io mi sposto in quegli orari, io stesso contribuisco a rallentare la circolazione.
Dopo essermi imbattuto nei primi incolonnamenti, ho cominciato a diventare utilizzatore abituale delle mappe sia di Google che di Apple, per quanto riguarda le funzionalità di segnalazione del traffico. Entrambe le app sono pressoché uniformi nel dare indicazioni: il colore verde indica che non sono presenti rallentamenti lungo il tratto stradale, il colore giallo indica una velocità di percorrenza inferiore alla velocità media, mentre il colore rosso indica code ed incolonnamenti e quindi veicoli praticamente fermi.
Questa prestazione è disponibile nei vari sistemi informativi sulla navigazione già da un bel po' di tempo, ma come funzionano esattamente? Se penso ad un servizio analogo, mi viene da pensare a quello offerto dalle società di gestione delle autostrade attraverso la segnaletica orizzontale presente ovunque, solo che l'esperienza mi dice che tali indicazioni non sono così immediate ed efficaci. I tempi di risposta non sono bassi: quando si forma un incolonnamento, le segnalazioni partono spesso solo dopo l'intervento manuale di un operatore, mentre il ripristino delle normali condizioni di traffico è altrettanto lento, poiché esso avviene con un certo ritardo rispetto alla situazione reale, anche qui probabilmente perché i sistemi informativi sono controllati in modalità non completamente automatica. L'ultima volta mi è capitato di vedere tutte le automobili uscire dall'autostrada perché presi dal panico dell'ingorgo, col risultato che l'ingorgo si è postato dall'autostrada verso le superstrade parallele, mentre l'autostrada diventava completamente sgombera, mentre le indicazioni stradali non tempestivamente rinfrescate.
Cosa farsene pertanto di un servizio che non è efficace e responsivo? Può aiutare per evitare di perdere ore e ore imbottigliati durante l'esodo estivo o nei periodi di Natale, ma non è assolutamente efficace per chi invece usa abitualmente l'autostrada abitualmente e per tratte relativamente brevi.
Vediamo invece come funzionano servizi completamente automatici come quelli dei due colossi informatici: si basano su una tecnologia pervasiva, come il crowdsourcing, ossia si sfruttano i dispositivi elettronici degli utenti, i loro smartphone, per capire attraverso il loro posizionamento nel tempo cosa sta succedendo lungo le strade delle nostre città e paesi. Tutti i principali competitors ci hanno lavorato e ci continuano a lavorare, come Apple.
Se nel database della società di gestione di servizi, arriva un cospicuo numero di localizzazioni di telefoni lungo un tratto stradale in un tempo relativamente stretto e la velocità media di percorrenza dei dispositivi è molto più bassa di quella solita lungo lo stesso tratto, si può formulare l'ipotesi che si stia formando una coda.
E' chiaro che alcuni aggiustamenti all'algoritmo di detezione code vanno presi, per evitare i soliti falsi positivi. Alcune condizioni da captare sono le seguenti:
- il numero minimo di dispositivi da considerare deve essere superiore o uguale ad un valore minimo (non bastano due macchine a fare coda)
- le velocità dei veicoli lungo il tratto deve avere una deviazione statistica ampia (velocità a singhiozzo)
- la velocità massima dei veicoli deve essere ampiamente superiore alla velocità che una persona può raggiungere a piedi o in bicicletta (non si devono confondere coi pedoni a bordo strada)
- la velocità minima può anche azzerarsi, altrimenti siamo nella condizione di persone sedute a bordo strada
- la distanza media di dispositivi lungo una polilinea immaginaria non deve essere inferiore ad un certo valore, cioè si rileva il fatto che i dispositivi si trovano a bordo di un autoveicolo che ha dimensioni apprezzabili
Esistono inoltre dei falsi positivi eccezionali, come l'ammassamento di tantissime persone in una stazione dei treni o della metropolitana, la loro non perfetta disposizione come una colonna, la partecipazione ad un evento sportivo o musicale. C'è pieno insomma di casi particolari, che possono far scattare la condizione di traffico senza per questo configurarsi come tale.
Quello che è sorprendente è che il tempo di reazione è inferiore ad un minuto, cioè proprio quello che serve a prendere decisioni veloci e puntuali sul traffico, anche per situazioni locali o limitate. Lo stesso dato di percorrenza opportunamente corretto della situazione di traffico istantanea è anche la base per offrire tragitti intelligenti, cioè che consentono di aggirare l'intasamento. Waze è stato infatti uno dei primi servizi a funzionare in questo modo.
Some months ago I challenged my readers to find a method to determine an inner point inside a polygon. I described the original issue in this article in Italian language, altough more than one lector confused this issue with another one, i.e. determine if a point is inside or not in a polygon.
I would spend a little bit more on the issue: the algorytmic problem is to find a point completely inside the polygon, whatever the polygon is convex or concave. The satisfying point must lay completely in the inner region bounded by the polygon, not over the bound, otherwise you could solve the problem taking any of the vertexes or the mid point over any edge.
The most elegant solution I found - which is also very effective to outfit in programming code - is based on the fact tha any polygon may be always discretized in triangles and you may prove for induction that a valid solution is a mid point taken over and inner diagonal of the polygon. What's difficult is finding an inner diagonal, i.e. a segment that connects any pair of vertexes. In each polygon you can find several diagonals completely inside the polygon, but you can stop as soon as you find the first one.
Let's make a proposal for an easy algorytm to get some solution:
- loop from 1 to n over the set of the polygon vertexes
- take the i-th vertex from 1 to n, if n is the amount of the polygon vertexes
- take another j-th vertex where j loops from i+1 to n and let's trace the test diagonal, which doesn't have to belong to the edges set
- take each k-th edge in the edges set
- check if the test diagonal from i to j intersects k-th edge
- if the test diagonal doesn't intersect any edge, it could be completely embraced in the polygon or it could be completely outside the polygon
- check if the mid point of the test diagonal is inside or outside the polygon if the mid point is inside, return it as the solution
As you may see, this pseudocode is quite easy to understand, although it is far from being efficient: its polynomial complexity is O(n3).
Let's go a step further and let's quickly see the method based on the proof that an inner diagonal always exists inside a polygon [O'Rourke 13-14]. The idea behind is that the mid point of the inner diagonal is always inside the polygon.
You may prove that for induction using the amount of vertexes and sides of the polygon. If you find a solution for an N-vertexes polygon, you can find a solution even for an N+1-vertexes polygon.
The base of induction is the easiest polygon, the triangle. In the triangle the solution to the problem is trivial: just use the centroid of the vertexes.
For a quadrangle, if it is convex, you get two inner diagonals and both satisfy the algorytm choice. If the quadrangle is concave, only one diagonal is completely inside, but the solution is whatsoever found. You can notice that the inner diagonal is the side shared between two adjacent triangles got by the triangular meshing of the polygon, so you just need to consider any shared side of two triangles in the mesh.
Let's move to the inductive step:
- find a convex vertex v in the polygon and consider a and b as adjacent vertexes surrounding v
- for each other vertex q in the polygon
- if the vertex q is inside the triangle avb, calculate the distance of v to the segment ab
- keep vertex q as solution if its distance is minimal with respect other found vertexes
- if no vertexes q have been found inside avb, use the mid point of segment ab as solution or the centroid of triangle avb
- if some vertex q is inside the triangle avb then the diagonal qv is surely inside and the solution is its mid point
In the image shown above, you may noticed that the nearest point to segment ab, doesn't lay in triangle avb, so the solution in the centroid in triangle avb or the mid point of segment ab, which is an inner diagonal.
You may notice that algorytm complexity is O(n), which is the best you would ask for: its optimal even in the performance space.
Anche Amazon è recentemente preso di mira dai truffatori, cioè gente che usa l'enorme visibilità del portale del negozio di Vancouver per cercare di portare a segno dei furti ai danni degli ignari.
Lo schema è molto semplice: il venditore/truffatore, una terza parte rispetto al negozio ufficiale di Amazon, mette in vendita un articolo proponendolo ad un prezzo sensibilmente più basso di un altro venditore serio e affidabile, ma non troppo basso.
Io mi sono imbattuto in uno sconto di circa il 15%, però il venditore aveva modificato opportunamente il proprio nome sostituendolo da Mio Negozio Online srl in ContattamiAllIndirizzoBoegmhAtliberoDot.
Io ho fiutato subito la trappola, ma non per questo mi sono tirato indietro al tentativo di acquistare qualcosa ad un prezzo interessante ed ho scritto puntualmente al venditore farlocco con un messaggio e-mail di richiesta di informazioni più dettagliate per portare avanti l'acquisto.
Oggi ho ricevuto la risposta, arrivata comunque dal medesimo indirizzo e-mail:
Ciao,
Il prodotto è originale, con la garanzia e la fattura.
Abbiamo offerte speciali in questo periodo. L'offerta dura per 7 giorni.
La consegna è gratuita in Europa da DHL Express.
Questa attività va avanti Garanzia Programma A-to-Z Amazon.
L'operazione può essere avviata da Amazon, ho bisogno di quanto segue:
Nome completo:
indirizzo:
città:
CAP:
paese:
Telefono:
di prodotto:
Prezzo:
Mi trasmette immediatamente i dati necessari ad Amazon. Amazon invierà le informazioni relative alla cassa. In un massimo di 3 giorni, è possibile ottenere il prodotto. Con Amazon, avete 7 giorni per verificare l'articolo. Bisogna prendere una decisione. Se si desidera mantenere il prodotto o no! Se si desidera, Amazon invierà il denaro a me. In caso contrario, si ottiene il denaro e DHL prenderà l'oggetto da voi e dare di nuovo a me. Pagherò per la consegna ricorrente!
Sto aspettando la risposta.
Grazie.
Quando ho visto l'italiano sgrammaticato e il giro vorticoso, ho fatto uno più uno. Non contento, ho segnalato la cosa al servizio di assistenza tecnica di Amazon, il quale non ha fatto altro che confermare: negli ultimi giorni è tutto un comparire di offerte farlocche di truffatori e loro lavorano continuamente alla rimozione.
State all'occhio!
Un problema sempre più stringente è il rilascio di patch, installer o piccoli eseguibili sulle ultime versioni di Windows da parte di sviluppatori indipendenti o piccole software house. Quando si scaricano questi file dai siti di distribuzione e si stanno per eseguire sulla macchina Windows - generalmente Windows 7, 8.1 o Windows 10 - compare sempre più spesso l'impossibilità apparente di Windows di farlo partire in quando potenzialmente pericoloso.
Nella fattispecie è Windows SmartScreen a bloccato ed a segnalare la dubbiosità della provenienza con un'indicazione del tipo Autore sconosciuto. Tale indicazione avviene se si prova a lanciare l'eseguibile, appena è stato completato il suo scaricamento dal browser.
L'utente ignaro non sa come comportarsi e difficilmente riesce ad intuire che è necessario cliccare sul testo Ulteriori informazioni, per ritrovarsi il dialogo di Smartscreen leggermente modificato e con la comparsa del bottone Esegui comunque.
L'indicazione del testo Autore sconosciuto lascia ulteriormente l'utente nel panico, che rimane pertanto molto diffidente nel cliccare il bottone con cui far partire il setup.
Ad aumentare un altro po' la diffidenza è la richiesta del Controllo Account Utente che segnala il fatto che l'eseguibile pretende di passare alla modalità di amministratore, cosa necessaria per poter collocare o sostituire file eseguibili dentro le installazioni dei programmi o del sistema operativo.
Anche nella richiesta di escalation, ricompare la dubbiosità sulla provenienza, cioè ricompare l'indicazione Autore sconosciuto:
Per gestire questa problematica e identificare quantomeno il suo autore, un'azione da intraprendere è quella di firmare digitalmente l'esegubile, iniettandoci dentro l'autore e firmando digitalmente l'intero eseguibile con un certificato, in modo che chiunque possa verificare in qualsiasi momento l'integrità del file e che il suo contenuto non sia stato compromesso: la modifica di un solo bit farebbe saltare la verifica dell'intero contenuto rispetto al certificato presente al suo interno.
Per firmare digitalmente un eseguibile, come ad esempio un installer prodotto da Inno Setup, è sufficiente creare un file batch (.BAT) il cui contenuto dovrebbe essere:
"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" sign /f certificato_codesigning_installer.pfx /p laTuaPassword /t http://timestamp.verisign.com/scripts/timstamp.dll MySignedSetup.exe
dove
"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" è il percorso completo dell'applicazione Microsoft per firmare digitalmente i file (parte del Microsoft SDK o di qualsiasi distribuzione di Microsoft Visual Studio)
certificato_codesigning_installer.pfx è il tuo certificato, che puoi aver generato tu o essere stato generato da un'autorità certificante (Certificate Authority, CA)
laTuaPassowrd è la password associata al tuo certificato e che ti è stata assegnata dalla CA quando ti è stato rilasciato il certificato
MySignedFile.exe è il tuo file di setup che vuoi certificare
Si consiglia di mettere tutti i file sopraddetti in una sola cartella - il file batch, il certificato ed il setup da firmare - e poi basta eseguire il barch.
Signtool firmerà il file col certificato e ne controllerà la validità appoggiandosi al server ufficiale.
Puoi usare il server http://timestamp.verisign.com/scripts/timstamp.dll, anche se hai un certificato rilasciato da Comodo.
Poco più di un anno fa Elon Musk presentava al mondo quello che lui e la sua società considerano l'anello mancante, tra l'energia "pulita" e il suo utilizzo, cioè l'accumulo, disponibile sia per le utenze domestiche, come PowerWall, e per le utenze commerciali, come PowerPack.
Senza stare ad entrare nel merito se i sistemi fotovoltaici siano davvero "puliti" nel processo di costruzione e smantellamento e se analogamente lo sia anche l'accumulo tramite batterie al litio, trascuriamo anche valutazioni generali di sfruttamento di risorse del pianeta.
Quello che mi aveva fatto una certa impressione era la proporzione tra la superficie degli Stati Uniti e la superficie di pannelli fotovoltaici necessaria per garantire l'indipendenza energetica con questa sola fonte.
Il quadratino blu rappresenta i pannelli, mentre il quadratino rosso, molto più piccolo, la superficie necessaria per disporre le batterie in grado di immagazzinare tutta l'energia accumulata dai pannelli di giorno, chiaramente per l'uso notturno e per le altre situazioni di mancata produzione della sorgente, data principalmente dagli eventi atmosferici.
E' chiaro che la presentazione di Musk è tarata per un pubblico di investitori statiunitensi. La densità abitativa degli Stati Uniti è talmente bassa che bilancia fin troppo la fame energivora della sua popolazione, tradizionalmente quella più affamata da quando la terra è ricoperta da reti di distribuzione elettriche.
Dovremmo piuttosto guardare al fabbisogno energetico per chilometro quadrato e scopriremmo che noi europei siamo decisamente messi peggio degli americani.
Accedere ad un database MDB preparato con Access non è affar semplice da PHP. Se avete questa necessità, lo potete sempre fare usando il driver ODBC a 32 bit presente ancora nelle installazioni dei vari Windows Server 2008 R2, 2012 ed annessi, anche se a 64 bit.
Controllate anzitutto se la vostra versione di PHP può già avere accesso al driver ODBC, semplicemente verificandolo con phpinfo():
phpinfo();
Se lo trovate nella zona dei driver per i database (PDO), siete già a posto e dovreste avere una situazione del genere:
Se non fosse così, aprire il file php.ini per la versione del linguaggio PHP che state usando nel sito. Nel caso dell'esempio indicato qui, è necessario che apriate:
C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP53\php.ini
Editate il file e togliete il commento in prossimità delle estensioni seguenti:
extension=php_pdo.dll
extension=php_pdo_mysql.dll
Non è sufficiente salvare il file. Dovete forzare il vostro web server a ripartire, in modo che ricarichi il contenuto della configurazione del PHP. Se avete sul vostro server Plesk, basta riavviare il solo servizio web col comodo pannello di controllo.
Rieseguite nuovamente phpinfo() per vedere che adesso siete nella situazione come le immagini allegate.
Ora potete cominciare ad usare PDO per accedere ai database Access. Eccovi un esempio di codice:
<?
$dbName = $_SERVER["DOCUMENT_ROOT"] . "\\App_Data\\my_access_database.mdb";
if (!file_exists($dbName)) {
die("File non trovato.");
}
try
{
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");
}
catch (PDOException $e)
{
echo $e->getMessage();
}
$sql = "SELECT * FROM users";
$result = $db->query($sql);
while ($row = $result->fetch())
{
$idUser = $row["IDUser"];
$name = $row["Name"];
$surname = $row["Surname"];
echo '<p>' . $idUser . ' ' . $name . ' ' . $surname . '</p>' . $eol;
}
?>
Più che ricordare l'ultima mia volta in gara - che è stata circa 6 mesi fa - ormai comincia ad essere sempre più evento anche l'ultima volta che sono andato in bici, vista l'attuale frequenza attestata su una volta la settimana.
Ora non vorrei sembrare sempre quello che continua a piangere, però la situazione è provvisoriamente questa: ogni occasione per pedalare è preziosa e va goduta appieno per quella che è, senza stare a guardare troppo quelli che pedalano almeno i loro 10.000 km annuali e che si fanno una quindicina di gare, o quelli che escono 4 volte la settimana da soli o in compagnia, come ai "bei tempi".
La prossima volta che mi capiterà di essere in bici, sarà alla 6 Ore della Valpolicella, new entry tra le gare nazionali, organizzata da Dario Bergamini e gestita tecnicamente anche dagli amici del team Benetti TTNK.
Quando ho prospettato la mia partecipazione, ho pensato tra me: quale miglior cosa di prendere parte a questa endurance in solitario e di stare in compagnia coi biker veronesi che ho conosciuto negli ultimi anni? Mi conoscono per la mia attitudine al chiacchericcio instancabile, più che per le capacità pedalatorie; pertanto mi presenterò proprio con queste intenzioni!
Rimane il fatto che le mie prestazioni - una volta le chiamavo velleità agonistiche - sono sempre più limitate per una questione proprio di ore, di esercizi e di chilometri pedalati, più che per la voglia: ho detto che forse era il caso di sfruttare l'evento proprio per pedalare quanto più possibile.
Una gara di 6 ore non si configura propriamente come una endurance da 24 ore; assomiglia molto più come sforzo fisico ad una marathon da 100 chilometri e 3000 metri di dislivello, quelle cioè a cui mi sono tanto abituato negli anni scorsi: è pur sempre una buonissima occasione per fare gamba in vista di qualche altra cosa un po' più impegnative, come magari la Lessinia Legend a fine giugno.
In più non dovrebbero manifestarsi eccessivamente gli inconvenienti di una scarsa preparazione atletica, leggi crampi, visto che ogni ventina di minuti o giù di lì c'è la possibilità di ripassare al ristoro del campo base.
Mi preparo insomma a questo lieto evento a colpi di rullo e tinteggiatura anche nei prossimi due weekend!
ultima partecipazione a gare endurance, la 24 Ore di Finale Ligure '14
|