Verloren op het internet?
June 21st, 2010 by blonkoEen kaart van het internet – of toch zoiets, voornamelijk een overzicht van de aanwezige capaciteit…
Een kaart van het internet – of toch zoiets, voornamelijk een overzicht van de aanwezige capaciteit…
When comparing strings in MySQL, using characters like “é”, you might end up with some wierd results. If you have a legacy database where you can’t change collations, charsets and the like, it gets harder. And to make all things worse, if you can’t change your connection or do a “set names”, you might start pulling some hair.
Let us set the environment: I have some strings in my database, in a latin1 table, with some accented characters in them. One of them is “César”, another one is “Si j’étais jardinier”. When doing a SELECT title FROM mytable WHERE title like '%étais%', nothing popped up. However, when I searched for “etais” (without the accent), this gave me the results, with the accents. My connection was latin1, the stored data was UTF8 (in a latin1 table, but don’t ask my why, see the first paragraph). The words “collation”, “charsets” and “not again” flashed before my eyes.
But, no worries, there is a solution. It was buried deeply in the less-visited section of my brain, but I managed to dig it out this morning.
The solution is rather simple, if you know it. You can prepend the string your searching with the charset, to force the collation. Just prepend it to the string, and add an underscore in front of it (underscore charset string); just take a look at the where-statement below:
SELECT title FROM mytable WHERE title like _utf8'%étais%'
My real-world example goes like this:
The pain:
mysql> select title from mytable where title like "%étais%";
Empty set (0.09 sec)
mysql> select title from mytable where title like "%etais%";
+-----------------------------------------------+
| title |
+-----------------------------------------------+
| Je n'aimais plus j'étais triste et réveur |
| J'étais seule en un bocage |
...
The solution:
mysql> select title from mytable where title like _utf8"%étais%";
+-----------------------------------------------+
| title |
+-----------------------------------------------+
| Je n'aimais plus j'étais triste et réveur |
| J'étais seule en un bocage |
Proof:
mysql> select title from mytable where title like _latin1"%étais%";
Empty set (0.09 sec)
It is not the best solution, but it works (and don’t come complaining about the crappy ‘%something%’-searching, I know it is there, and I’m deeply ashamed).
Collega Frank heeft al opgesomd wat zijn fictieve partij als standpunten zou hebben, of als doelstelling, of zo. Het voorbeeld van New York daarin durf ik zeer egoïstisch te omschrijven als één van m’n argumenten in de middag-discussies over de politiek, maar ik leen het met veel plezier uit. Laat me even verduidelijken.
M’n argument gaat als volgt: een wereldstad als NY wordt bestuurd door een fractie van wat België nodig heeft aan politiekers, en heeft wel meer problemen. Maar laat ik dit even proberen wat te onderbouwen (met nummers, de rest moet je er zelf bijdenken).
Als ik even, , België mag vergelijken met de staat New York (staat, niet stad) en Ethiopië, het grote land in Afrika, waar ik recent was, kom ik tot volgende losse vergelijking:
We beginnen met België. Grofweg een 530 politiekers in alle regeringen samen (ik denk dat ik ze allemaal heb geteld), we zijn met 10 miljoen man in België, en het land een 30 000 vierkante km groot.
De staat New York huisvest zo grofweg een kleine 20 miljoen man, de stad New York neemt daar een kleine 9 miljoen van in. Er is zowat grofweg 270 man nodig om de boel bestuurd te krijgen (dat is het bestuur van de staat, samen met het bestuur van de stad). Als toemaatje geef ik je mee dat de staat New York zo’n 140 000 vierkante kilometer omvat.
Nemen we Ethiopië, dan krijgen we 650 man om de boel te besturen, een oppervlakte van 1,1 miljoen vierkante kilometer en 80 miljoen man.
Dit geeft het volgende beeld: één politieker in de staat New York per zo’n 72 000 man. In Ethiopië is dat zo’n 122 000 man per politieker. In België is dat eentje per 18 000 man. Vier keer meer dan New York dus en meer dan 6 keer de toestand Ethiopië.
Okay, ik geef toe, ik mag het niet zomaar vergelijken, maar hou er toch maar even rekening mee dat een land als Ethiopië wel wat grotere basis-uitdagingen heeft dan België (geloof me, een understatement), en dat enkel al de stad NY vermoedelijk wel een grotere diversiteit in populatie heeft, genoeg problemen met criminaliteit, flink wat infrastructuur nodig heeft, wta compromissen moet sluiten …
Mijn oplossing? Geen idee, ik ben geen politicoloog, maar als ik toch iets moet noemen: alles afschaffen, één kieskring, één regering gevuld met politiekers die oplossingen moeten vinden en verantwoording moet afleggen aan 100% van de populatie van het land. Er zal wel meer bij komen kijken, maar dingen vereenvoudigen waar mogelijk werkt meestal wel goed.
(Trouwens, Brussel tegen NY-stad vergelijken geeft nog heel wat absurdere resultaten. Ik zou het nog eens naast Parijs en zo moeten leggen ook.)
Een beetje kort door de bocht, maar vermoedelijk wel een “valid point”. Lees zeker ook enkele comments; het is lokaal natuurlijk ook niet altijd rozengeur en maneschijn.
Recent heb ik een dag op skype moeten doorbrengen omdat offshore firm X iets in een Joomla had gebroken, waardoor een extra module van offshore firm Y niet werkte, het uiteindelijk probeerde op de serverconfig te schuiven, en uiteindelijk door offshore firm Z opgelost werd (een dag werk). X, Y en Z, de opdrachtgever en ikzelf hebben een dag op skype gezeten om te ontdekken dat X blijkbaar de getHearder()-functie (of zoiets) van Joomla gebroken had.
Bottom line is dat je ofwel zeer zeker moet zijn van de firma waarmee je samenwerkt, ofwel er beter niet aan begint en gaat voor een lokaal bedrijf waarmee je kan samenzitten en stap voor stap werken. Als je dit combineert met het resultaat dat wij soms onder ogen krijgen qua serversetup, maintainability of programmacode wat afgeleverd wordt door mensen met een senior-graad, kan ik dit enkel maar be-amen.
Let op, er zijn goede offshore firma’s, die prettig communiceren, weten waarmee ze bezig zijn, … Die herken je (logisch) aan hun iets hogere tarieven.
If you have a storage daemon in your bacula setup which all of the sudden seems to take longer to store the backups; there is an easy solution. Just restart it.
I have this a couple of times per year, on different servers, setups, …: the storage daemon seems to slow down the longer it runs; or the more jobs it did, or… I never had the time to investigate this in-depth, and I don’t intend to do this. The solution however is very simple, just restart the service. Take care, as most of the time, i have to kill it hard (-9) as there is a thread/process stuck (and that is probably the reason of the slowdown).
Why this post you say? Today, I had the same situation again, and tried to search for it. I had no stuck process this time, but tried several search phrases on google, and didn’t find anyone with the same problem and sympthoms.
By the way, I have this problem on machines with all flavors of Debian, with plenty of versions of Bacula, both director, storage daemon and file daemons. Our main setup has over 250 simultanious backups per night.