Clipping Mask: a crop tool for Illustrator CS5

Looking for a crop tool in Illustrator CS5? Try a clipping mask instead! This way all your outside canvas drawings won’t be lost.

  1. Draw a rectangle above the area to be ‘cropped’
  2. Select all layers that need ‘cropping’
  3. Select Object > Clipping mask > Make

Still looking for cropping ways? Here are two examples:

Multiline regular expression problem in PHP 5.3.3

Recently I came across a very strange behaviour in a regular expression I wrote years ago.

The webserver upgraded to PHP 5.3.3 and it suddenly stopped working.

Case as follows: I use PHP to read a text-file and with the aid of PCRE (preg_match & preg_split) I look for certain matches in that text-file. The program splits different paragraphs into seperate records. But suddenly preg_split stopped working:

<?php
$paragraphs = preg_split("/\n\n/",$contents_of_file);
?>

Multiple newlines could not be detected, whereas

<?php
$lines = preg_split("/\n/",$contents_of_file);
?>

generated no problem at all. At first I thought I had to use the multiline modifier /m but that didn’t work out either.

Although a HEX editor didn’t indicate any carriage returns in the text-file I managed to get things working by doing this:

<?php
$paragrapgs = preg_split("/\r?\n\r?\n/",$contents_of_file);
?>

Curious thing: previous and newer versions of PHP (e.g. 5.3.8 in a XAMPP test environment) did not require to look for possible occurrences of carriage returns (\r).

How to import large sql files in XAMPP?

XAMPP is a very easy to use local webserver. Can be slow sometimes, but hey! it’s for testing purposes.

Ever tried to import a large SQL file? Doing so with phpMyAdmin will cause you headaches when tweaking php.ini to accept large data sets: memory_limit, post_max_size, etc…

Ever considered using the shell option? Once you have started your Apache and mySql module in the control panel, click “Shell”.

A command prompt will open and all you need to do is use this command line:

mysql -u root -p <DB_NAME> < <location of your large sql file

Example:

mysql -u root -p test < "d:\sql exports\file.sql"

Use -v to output the import process to screen

mysql -u root -p -v test < "d:\sql exports\file.sql"

Alternative method (no quotations in source command location!)

mysql -u root -p;
use <db-name>;
source C:\Temp\filename.sql;

SQL indexes

Disable indexes before you start importing, re-enable them when completed.

ALTER TABLE `table_name` DISABLE KEYS;
ALTER TABLE `table_name` ENABLE KEYS;

Further reading: https://support.tigertech.net/mysql-large-inserts

ERROR 2006 (HY000) at line 9999: MySQL server has gone away

It’s possible that this error occurs in XAMPP. It’s easily resolved by changing

  • my.ini at “\xampp\mysql\bin\”.
  • change “max_allowed_packet” to a higher value than the default 1M. E.g. 10 MB
  • restart mysql service

Flush buffers

(post was updated on 2014/07/31)

Sometimes you want to output HTML to the browser before a script has finished completely. In some browsers it takes a while before ‘some’ content is displayed. Flush buffers can help to actively force output to be shown.

A combination of PHP functions is useful to please all kinds of browsers. However the code below might no longer work in recent Apache/PHP environments. Still works locally on XAMPP

function flush_buffers(){
	ob_end_flush();
	ob_flush();
	flush();
	ob_start();
}

You should read http://stackoverflow.com/questions/4870697/php-flush-that-works-even-in-nginx. Maybe these adjustments will help you to implement the PHP flush functions.

Test code

ob_implicit_flush(1);
for($i=0; $i<10; $i++){
    echo $i;
    //this is for the buffer achieve the minimum size in order to flush data
    echo str_repeat(' ',1024*64);
    sleep(1);
}

Print directly from Adobe Illustrator (CS4+)

I’ve used these settings on a Lexmark X4650, but it will do fine on other printers too, if you want to make sure all measurements resemble on paper.

Lexmark print dialog

  • Check off ‘print last page first’ (when using artboards things can get tricky)
  • Choose print quality

Illustrator print dialog

  • Media size: A4 borderless (do not use borderless printing in the Lexmark print dialog, it uses a slight resize)
  • Do not scale (make sure you use correct size on design, artboards can be resized easily with the artboard tool Shift + O)

Aan de slag met Mercury mail voor XAMPP

Om lokaal wat programmeerwerk als voorbereiding op een live omgeving te verrichten, is XAMPP de ideale omgeving. XAMPP komt pas echt tot zijn recht met de opstelling van een eigen mailserver (Mercury Mail) waarmee je lokaal het verzenden van mails kan testen.

De uitgebreide versie van XAMPP bevat zo’n SMTP service. Bij een eerste kennismaking word je overstelpt door een hele reeks vensters die kris kras op het scherm staan. Om hierin wat wegwijs te raken, is er een uitstekende videotutorial op YouTube:

Een van de belangrijkste zaken die je moet weten bij dit programma is dat voor quasi elke aanpassing het programma opnieuw moet opstarten omdat Mercury Mail in XAMPP geen service is!

De basisinstellingen

  • Configuration: volgende protocul modules aanvinken:
    • Mercury S SMTP server
    • Mercury P POP3 server
    • Mercury E, SMTP end to end client delivery client
    • Mercury D Distributing POP3 client,
    • Mercury I Iamp4 server
  • Configuration
    • Core module
    • Local domains > add local domain
      • Localhost
      • mydomain.com
  • Configuration
    • Mercury S
    • Connection control
    • Uncheck “do not permit SMTP relaying of non-local mail”
  • Configuration
    • Mercury E
    • DNS Servers (open DNS): 208.67.222.222,208.67.220.220
  • Configuration
    • Manage local users: een testgebruik definiëren
      Het is best dat je geen gebruik maakt van postmaster@localhost, omdat deze standaard alle foutberichten opvangt.
    • Username: root
      Personal name: root
      Password: pass

Het enige wat je nu nog moet doen is de configuratie van deze local mail account in je favoriete e-mailprogramma. Daarin volg je dezelfde werkwijze alsof je een remote mailserver zou aanspreken, maar bij de serversettings plaats je gewoon ‘localhost’.

De vooraf gedefinieerde accounts hebben volgende paswoorden:

  • Postmaster: Postmaster (postmaster@localhost)
  • Administrator: Admin (admin@localhost)

User: newuser
Password: wampp

Corsair TX650W burning smell

About two years ago I bought a Corsair TX650W power supply. A little overkill for the work I’m doing on that computer, but since it’s a decent brand, I thought I’d go for a quality product. After limited time I have used this desktop, when I power on the PSU, I get a smell of burning plastic. Because Corsair has a limited warranty of 5 years, I’m hoping they will replace the PSU asap. Will get back to you to see how this story works out.

Google analytics: andere gebruikers toegang geven tot webstatistieken

Wanneer je via Google Analytics de bezoeken naar je website telt, kan je eender wie toegang geven tot je rapporten via profielen en bepalen wat door wie kan gezien worden. Waar je zelf beheerder bent van je hele domein, kan je bijvoorbeeld een andere gebruiker toegang geven tot een welbepaalde subdirectory van je website.

Dit doe je door in Google Analytics bijkomende profielen te definiëren op je domein (bvb www.lotr.com). Wanneer je ingelogd bent op Google Analytics klik je rechtsbovenaan op het ‘tandwiel’ voor geavanceerde opties. Je krijgt een overzicht van al je websites waarvoor je Google Ananlytics gebruikt. Kies een ‘account’ (en daarna een property). In de volgende stap kunnen profielen aangemaakt worden. Om enkel data te tonen van een subdirectory, klik je op ‘New profile’ en geef je een naam op. Wanneer je profiel aangemaakt is, ga je naar ‘Filters’ en voeg je een nieuwe filter toe. Je geeft de filter een naam en kiest voor ‘Predefined filter’ en vervolgens ‘include’, ‘traffic to subdirectories’, ‘that begin with’. Bij ‘Subdirectory’ vul je bijvoorbeeld ‘/frodo/’ in als je enkel gegevens wil tonen van www.lotr.com/frodo/… Uiteraard kan je bijkomende filters toevoegen.

De volgende stap bestaat erin dat je de personen gaat toevoegen aan dit profiel die de data mogen bekijken. In het tabblad ‘Users’ voeg je gebruikers toe. Vooralsnog moet elke gebruiker een gmail adres hebben. Je kan hem/haar ook beheerrechten geven, maar dit is over het algemeen geen goed idee, want beheerders hebben toegang tot alle account-profielen en zijn dus niet beperkt tot het strikte profiel dat je net aangemaakt hebt.

Het duurt even vooraleer een gebruiker data te zien krijgt als je het profiel net aangemaakt hebt. Het is dus niet zo dat een nieuw profiel de data uit het verleden toont. Het toont pas gegevens vanaf de datum waarop je het profiel hebt aangemaakt. De gebruiker die net toegang gekregen heeft tot een profiel wordt daarvan niet automatisch op de hoogte gebracht.

Het is ook mogelijk om meerdere subdomeinen te tellen (bvb gandalf.lotr.com, frodo.lotr.com), maar daarvoor moet je de tracking code aanpassen. Meer daarover lees je in de online documentatie van Google Analytics.